diff options
author | 2018-06-18 22:20:15 +0100 | |
---|---|---|
committer | 2018-06-18 22:20:15 +0100 | |
commit | 73bfe3211f5b05c503d00c6cb38372a191c10040 (patch) | |
tree | 81db9d26b3a2bb69f898a7f6198cbaaaa82d8005 /static | |
parent | s/color/colour/g (diff) |
Partner updates
Diffstat (limited to 'static')
-rw-r--r-- | static/css/style.css | 2 | ||||
-rw-r--r-- | static/css/style.css.map | 2 | ||||
-rw-r--r-- | static/js/script.js | 4 | ||||
-rw-r--r-- | static/resources.json | 771 |
4 files changed, 398 insertions, 381 deletions
diff --git a/static/css/style.css b/static/css/style.css index cf2bca3e..bab75e01 100644 --- a/static/css/style.css +++ b/static/css/style.css @@ -1,3 +1,3 @@ -@font-face{font-family:"Fira Code";src:url("https://unpkg.com/firacode/distr/eot/FiraCode-Regular.eot");src:url("https://unpkg.com/firacode/distr/eot/FiraCode-Regular.eot?#iefix") format("embedded-opentype"),url("https://unpkg.com/firacode/distr/woff2/FiraCode-Regular.woff2") format("woff2"),url("https://unpkg.com/firacode/distr/woff/FiraCode-Regular.woff") format("woff"),url("https://unpkg.com/firacode/distr/ttf/FiraCode-Regular.ttf") format("truetype")}.fira-code{font-family:'Fira Code', "monospace", Fallback}textarea.fira-code{line-height:1.3 !important}th p{margin:0}.uk-offcanvas-content{flex:1 0 auto}.uk-background-secondary .uk-navbar-dropdown-nav .uk-active a{color:#fff}.uk-background-secondary .uk-navbar-dropdown-nav .uk-nav-header{color:#666;font-size:120%;font-weight:bold;padding:0;text-transform:none}.uk-background-secondary .uk-navbar-dropdown-nav .uk-nav-header.uk-active{color:#fff}.uk-background-secondary .uk-navbar-dropdown-nav .uk-navbar-dropbar{background:#222}.uk-navbar-container,.uk-sticky-placeholder,.uk-navbar-nav>li>a,.uk-navbar-left>a{height:70px}.uk-navbar-dropdown{overflow-y:auto;top:45px !important}.uk-article-title{margin-bottom:0 !important}.uk-article-meta{margin-left:2px;margin-top:0 !important}.uk-section{padding-bottom:30px;padding-top:20px}.uk-heading-divider .uk-article-meta{margin-bottom:0}footer{flex-shrink:0}footer div.uk-section{padding:0}footer div.uk-section div.uk-text-center{margin-top:20px}.uk-button-dark{background:rgba(0,0,0,0.95);border:1px solid rgba(34,34,34,0.93);color:#fff}.uk-button-dark :hover{background:rgba(0,0,0,0.7)}.uk-button-darkish{background:rgba(0,0,0,0.11);border:1px solid rgba(34,34,34,0.09)}.uk-button-darkish :hover{background:rgba(0,0,0,0.22)}.uk-navbar-container{padding-left:40px;padding-right:40px}.uk-button-success{background-color:#32D296;border:1px solid transparent;color:#fff}.uk-button-success:hover,.uk-button-success:focus{background-color:#2ac088}.uk-button-success:active,.uk-button-success.uk-active{background-color:#26ab79}.uk-button-success:disabled{background-color:#fff !important;border:1px solid #E5E5E5;color:#999 !important}.uses-rst .document li p{margin-bottom:0}.uses-rst .document img{margin-bottom:20px}.uses-rst #editor{min-height:50vh;resize:vertical}.blueprint-error .window{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 4px 12px 0 rgba(0,0,0,0.5);-moz-box-shadow:0 4px 12px 0 rgba(0,0,0,0.5);box-shadow:0 4px 12px 0 rgba(0,0,0,0.5);border:1px solid #C1C2C2;height:500px;margin:20px auto auto;width:100%}.blueprint-error .inside{background:#000;height:100%;padding-right:20px}.blueprint-error .block{background:#000;width:100%}.blueprint-error .top,.blueprint-error .panel{float:left}.blueprint-error .top{background:#F1F1F1;background:-webkit-linear-gradient(top, #E9E9E9 3%, #D8D8D8 100%);background:-moz-linear-gradient(top, #E9E9E9 3%, #D8D8D8 100%);background:-ms-linear-gradient(top, #E9E9E9 3%, #D8D8D8 100%);background:-o-linear-gradient(top, #E9E9E9 3%, #D8D8D8 100%);background:-webkit-gradient(linear, top, bottom, color-stop(3%, #E9E9E9), color-stop(100%, #D8D8D8));background:linear-gradient(to bottom, #E9E9E9 3%, #D8D8D8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#F1F1F1', endColorstr='#D8D8D8', GradientType=0);-webkit-box-shadow:inset 0 1px 1px 0 rgba(255,255,255,0.76);-moz-box-shadow:inset 0 1px 1px 0 rgba(255,255,255,0.76);box-shadow:inset 0 1px 1px 0 rgba(255,255,255,0.76);border-bottom:2px solid #BDBCC1;overflow:hidden;padding:7px 0;position:relative;width:100%}.blueprint-error .panel{padding-left:9px;padding-top:2px}.blueprint-error #terminal-close,.blueprint-error #second-button,.blueprint-error #third-button{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;cursor:pointer;display:inline-block;float:left;height:12px;margin-right:7px;width:12px}.blueprint-error #terminal-close{background:#FF5F4F}.blueprint-error #second-button{background:#F9C206}.blueprint-error #third-button{background:#19CC32}.blueprint-error #terminal{background-color:#000;color:#fff;height:100%;width:100%}.blueprint-error #terminal code{white-space:pre-wrap}.blueprint-error pre{border:0;border-radius:3px}.blueprint-error .uk-background-muted,.blueprint-error .error-header{background-color:#E8E8E8 !important}.blueprint-error .error-header{color:#E84149;font-family:monospace}.blueprint-error code,.blueprint-error pre{overflow-wrap:break-word;width:100%;word-wrap:break-word}.page-main-index #invite-button{padding:0}.page-main-about-partners #partner-cards .uk-card-default{margin-top:2em;text-align:center}.page-main-about-privacy td,.page-main-about-privacy th{max-width:30rem}.page-main-info-resources .payment-icon{margin-right:1em}.page-main-info-resources .payment-icon img{height:2em}.page-main-info-resources .payment-description{height:3.7rem;margin-right:.5rem;vertical-align:text-bottom}.page-main-info-resources .resource-title{margin-bottom:-1rem}.page-main-info-resources .resource-title div{padding-bottom:0}.page-main-jams-index .date-separator{vertical-align:middle}.page-main-jams-join .question-label{margin-top:0}.page-main-jams-join .checkbox-label{padding-left:.7rem}.page-main-jams-join .radio-label{padding-left:.7rem;padding-right:1rem}.page-main-jams-join .range-label{padding-left:.3rem}.page-main-jams-join .textarea{min-height:15rem;resize:vertical}.page-main-jams-join .slider-label{margin-right:1rem}.blueprint-staff .participant-handle{cursor:move !important}.blueprint-staff #member-answers-sidebar{border-right:1px solid #E5E5E5;margin-right:1rem;min-width:20vw;width:20vw}.blueprint-staff #member-answers-sidebar .avatar{margin:1vw 4vw;width:12vw}.blueprint-staff .approval-card{border:1px solid #E5E5E5;padding:0}.blueprint-staff .approval-card img{height:2.5rem}.blueprint-staff .approval-card h2{margin-bottom:0;vertical-align:central}.blueprint-staff .approval-card .expand-icon{display:none}.blueprint-staff .approval-card .contract-icon{display:inline-block}.blueprint-staff .approval-card .uk-button{padding-left:10px;padding-right:10px}.blueprint-staff .approval-card .uk-card-body{border-top:1px solid #E5E5E5;padding-top:20px}.blueprint-staff .approval-card .status-icon.fa-check{color:#32D296}.blueprint-staff .approval-card .status-icon.fa-times{color:#F0506E}.blueprint-staff .approval-card .approved .status-icon.fa-times{display:none}.blueprint-staff .approval-card .unapproved .status-icon.fa-check{display:none}.blueprint-staff .approval-card.collapsed .expand-icon{display:inline-block}.blueprint-staff .approval-card.collapsed .contract-icon{display:none}.blueprint-staff .approval-card.collapsed .uk-card-header{border-bottom:0}.blueprint-staff .approval-card.collapsed .uk-card-body{display:none;visibility:hidden}.page-staff-jams-edit-ending #editor{min-height:50vh;resize:vertical}.page-staff-jams-edit-info .editor{min-height:30vh;resize:vertical}.page-staff-jams-forms-preamble-edit .editor{min-height:30vh;resize:vertical}.page-staff-jams-forms-questions .delete-question-button,.page-staff-jams-forms-questions .edit-question-button{padding-left:5px;padding-right:5px}.page-staff-jams-forms-view .delete-question-button,.page-staff-jams-forms-view .edit-question-button{padding-left:5px;padding-right:5px}.page-staff-jams-infractions .delete-infraction-button{padding-left:5px;padding-right:5px}.page-staff-tables-edit #editor{min-height:50vh;resize:vertical}.page-staff-tables-table .delete-infraction-button{padding-left:5px;padding-right:5px}.blueprint-wiki .quote{border-left:3px solid #7289DA;color:#99AAB5;margin-bottom:1rem;padding-left:20px}.blueprint-wiki #wiki-nav .uk-nav-divider{min-width:8rem}.blueprint-wiki #wiki-sidebar{transition:width ease 1s}.blueprint-wiki #wiki-page{overflow-x:hidden}.blueprint-wiki #wiki-sidebar-button{align-items:center;border:1px solid rgba(0,0,0,0.11);color:#fff;height:3rem;justify-content:center;min-height:3rem;min-width:3rem;width:3rem}.blueprint-wiki #doc-view{width:calc(100% - 6rem)}@media (max-width: 639px){.blueprint-wiki #doc-view{width:calc(100% - 1rem)}}.blueprint-wiki .sidebar-search-input{border-left:0;border-right:0;margin-top:5px;padding-right:0}.blueprint-wiki .search-button{border:0;width:100%}.blueprint-wiki .content{flex-grow:1;margin:0 1rem 1rem}.blueprint-wiki .location-input{margin-left:15px}.blueprint-wiki .preview-title{padding:1rem 1rem .1rem}html{height:100%}html body{display:flex;flex-direction:column;height:100%}.navbar-logo{height:60%;margin-left:-10px;margin-top:2px;max-width:110%;padding-left:3px}.hover-title a{transition:opacity 200ms ease-in-out;-moz-transition:opacity 200ms ease-in-out;-webkit-transition:opacity 200ms ease-in-out;opacity:0;visibility:hidden}.hover-title:hover a{transition:opacity 200ms ease-in-out;-moz-transition:opacity 200ms ease-in-out;-webkit-transition:opacity 200ms ease-in-out;opacity:1;visibility:visible}.debug-mode-item{color:#7289DA !important}.sponsor-logo{max-width:15rem}.cursor-default{cursor:default !important}.full-width{width:100%}select{-webkit-appearance:unset !important;left:auto !important;opacity:1 !important;position:relative !important;top:auto !important}div.danger-input *{border-color:red !important;color:red;transition:color .5s ease, border-color .5s ease}table.table-bordered{border:1px solid #E5E5E5 !important}tr.thick-bottom-border{border-bottom:3px solid #E5E5E5 !important}td.left-border,th.left-border{border-left:1px solid #E5E5E5 !important}td.right-border,th.right-border{border-right:1px solid #E5E5E5 !important}.prevent-fouc{display:none} +@font-face{font-family:"Fira Code";src:url("https://unpkg.com/firacode/distr/eot/FiraCode-Regular.eot");src:url("https://unpkg.com/firacode/distr/eot/FiraCode-Regular.eot?#iefix") format("embedded-opentype"),url("https://unpkg.com/firacode/distr/woff2/FiraCode-Regular.woff2") format("woff2"),url("https://unpkg.com/firacode/distr/woff/FiraCode-Regular.woff") format("woff"),url("https://unpkg.com/firacode/distr/ttf/FiraCode-Regular.ttf") format("truetype")}.fira-code{font-family:'Fira Code', "monospace", Fallback}textarea.fira-code{line-height:1.3 !important}th p{margin:0}.uk-offcanvas-content{flex:1 0 auto}.uk-background-secondary .uk-navbar-dropdown-nav .uk-active a{color:#fff}.uk-background-secondary .uk-navbar-dropdown-nav .uk-nav-header{color:#666;font-size:120%;font-weight:bold;padding:0;text-transform:none}.uk-background-secondary .uk-navbar-dropdown-nav .uk-nav-header.uk-active{color:#fff}.uk-background-secondary .uk-navbar-dropdown-nav .uk-navbar-dropbar{background:#222}.uk-navbar-container,.uk-sticky-placeholder,.uk-navbar-nav>li>a,.uk-navbar-left>a{height:70px}.uk-navbar-dropdown{overflow-y:auto;top:45px !important}.uk-article-title{margin-bottom:0 !important}.uk-article-meta{margin-left:2px;margin-top:0 !important}.uk-section{padding-bottom:30px;padding-top:20px}.uk-heading-divider .uk-article-meta{margin-bottom:0}footer{flex-shrink:0}footer div.uk-section{padding:0}footer div.uk-section div.uk-text-center{margin-top:20px}.uk-button-dark{background:rgba(0,0,0,0.95);border:1px solid rgba(34,34,34,0.93);color:#fff}.uk-button-dark :hover{background:rgba(0,0,0,0.7)}.uk-button-darkish{background:rgba(0,0,0,0.11);border:1px solid rgba(34,34,34,0.09)}.uk-button-darkish :hover{background:rgba(0,0,0,0.22)}.uk-navbar-container{padding-left:40px;padding-right:40px}.uk-button-success{background-color:#32D296;border:1px solid transparent;color:#fff}.uk-button-success:hover,.uk-button-success:focus{background-color:#2ac088}.uk-button-success:active,.uk-button-success.uk-active{background-color:#26ab79}.uk-button-success:disabled{background-color:#fff !important;border:1px solid #E5E5E5;color:#999 !important}.uses-rst .document li p{margin-bottom:0}.uses-rst .document img{margin-bottom:20px}.uses-rst #editor{min-height:50vh;resize:vertical}.blueprint-error .window{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 4px 12px 0 rgba(0,0,0,0.5);-moz-box-shadow:0 4px 12px 0 rgba(0,0,0,0.5);box-shadow:0 4px 12px 0 rgba(0,0,0,0.5);border:1px solid #C1C2C2;height:500px;margin:20px auto auto;width:100%}.blueprint-error .inside{background:#000;height:100%;padding-right:20px}.blueprint-error .block{background:#000;width:100%}.blueprint-error .top,.blueprint-error .panel{float:left}.blueprint-error .top{background:#F1F1F1;background:-webkit-linear-gradient(top, #E9E9E9 3%, #D8D8D8 100%);background:-moz-linear-gradient(top, #E9E9E9 3%, #D8D8D8 100%);background:-ms-linear-gradient(top, #E9E9E9 3%, #D8D8D8 100%);background:-o-linear-gradient(top, #E9E9E9 3%, #D8D8D8 100%);background:-webkit-gradient(linear, top, bottom, color-stop(3%, #E9E9E9), color-stop(100%, #D8D8D8));background:linear-gradient(to bottom, #E9E9E9 3%, #D8D8D8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#F1F1F1', endColorstr='#D8D8D8', GradientType=0);-webkit-box-shadow:inset 0 1px 1px 0 rgba(255,255,255,0.76);-moz-box-shadow:inset 0 1px 1px 0 rgba(255,255,255,0.76);box-shadow:inset 0 1px 1px 0 rgba(255,255,255,0.76);border-bottom:2px solid #BDBCC1;overflow:hidden;padding:7px 0;position:relative;width:100%}.blueprint-error .panel{padding-left:9px;padding-top:2px}.blueprint-error #terminal-close,.blueprint-error #second-button,.blueprint-error #third-button{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;cursor:pointer;display:inline-block;float:left;height:12px;margin-right:7px;width:12px}.blueprint-error #terminal-close{background:#FF5F4F}.blueprint-error #second-button{background:#F9C206}.blueprint-error #third-button{background:#19CC32}.blueprint-error #terminal{background-color:#000;color:#fff;height:100%;width:100%}.blueprint-error #terminal code{white-space:pre-wrap}.blueprint-error pre{border:0;border-radius:3px}.blueprint-error .uk-background-muted,.blueprint-error .error-header{background-color:#E8E8E8 !important}.blueprint-error .error-header{color:#E84149;font-family:monospace}.blueprint-error code,.blueprint-error pre{overflow-wrap:break-word;width:100%;word-wrap:break-word}.page-main-index #invite-button{padding:0}.page-main-index #reddit-button{font-size:120%;line-height:2rem;padding:1rem;text-transform:unset;width:320px}.page-main-index #reddit-button .fa-fw{font-size:350% !important}.page-main-index #reddit-button span{font-size:80%}.page-main-about-partners #partner-cards .uk-card-default{margin-top:2em;text-align:center}.page-main-about-privacy td,.page-main-about-privacy th{max-width:30rem}.page-main-info-resources .payment-icon{margin-right:1em}.page-main-info-resources .payment-icon img{height:2em}.page-main-info-resources .payment-description{height:3.7rem;margin-right:.5rem;vertical-align:text-bottom}.page-main-info-resources .resource-title{margin-bottom:-1rem}.page-main-info-resources .resource-title div{padding-bottom:0}.page-main-jams-index .date-separator{vertical-align:middle}.page-main-jams-join .question-label{margin-top:0}.page-main-jams-join .checkbox-label{padding-left:.7rem}.page-main-jams-join .radio-label{padding-left:.7rem;padding-right:1rem}.page-main-jams-join .range-label{padding-left:.3rem}.page-main-jams-join .textarea{min-height:15rem;resize:vertical}.page-main-jams-join .slider-label{margin-right:1rem}.blueprint-staff .participant-handle{cursor:move !important}.blueprint-staff #member-answers-sidebar{border-right:1px solid #E5E5E5;margin-right:1rem;min-width:20vw;width:20vw}.blueprint-staff #member-answers-sidebar .avatar{margin:1vw 4vw;width:12vw}.blueprint-staff .approval-card{border:1px solid #E5E5E5;padding:0}.blueprint-staff .approval-card img{height:2.5rem}.blueprint-staff .approval-card h2{margin-bottom:0;vertical-align:central}.blueprint-staff .approval-card .expand-icon{display:none}.blueprint-staff .approval-card .contract-icon{display:inline-block}.blueprint-staff .approval-card .uk-button{padding-left:10px;padding-right:10px}.blueprint-staff .approval-card .uk-card-body{border-top:1px solid #E5E5E5;padding-top:20px}.blueprint-staff .approval-card .status-icon.fa-check{color:#32D296}.blueprint-staff .approval-card .status-icon.fa-times{color:#F0506E}.blueprint-staff .approval-card .approved .status-icon.fa-times{display:none}.blueprint-staff .approval-card .unapproved .status-icon.fa-check{display:none}.blueprint-staff .approval-card.collapsed .expand-icon{display:inline-block}.blueprint-staff .approval-card.collapsed .contract-icon{display:none}.blueprint-staff .approval-card.collapsed .uk-card-header{border-bottom:0}.blueprint-staff .approval-card.collapsed .uk-card-body{display:none;visibility:hidden}.page-staff-jams-edit-ending #editor{min-height:50vh;resize:vertical}.page-staff-jams-edit-info .editor{min-height:30vh;resize:vertical}.page-staff-jams-forms-preamble-edit .editor{min-height:30vh;resize:vertical}.page-staff-jams-forms-questions .delete-question-button,.page-staff-jams-forms-questions .edit-question-button{padding-left:5px;padding-right:5px}.page-staff-jams-forms-view .delete-question-button,.page-staff-jams-forms-view .edit-question-button{padding-left:5px;padding-right:5px}.page-staff-jams-infractions .delete-infraction-button{padding-left:5px;padding-right:5px}.page-staff-tables-edit #editor{min-height:50vh;resize:vertical}.page-staff-tables-table .delete-infraction-button{padding-left:5px;padding-right:5px}.blueprint-wiki .quote{border-left:3px solid #7289DA;color:#99AAB5;margin-bottom:1rem;padding-left:20px}.blueprint-wiki #wiki-nav .uk-nav-divider{min-width:8rem}.blueprint-wiki #wiki-sidebar{transition:width ease 1s}.blueprint-wiki #wiki-page{overflow-x:hidden}.blueprint-wiki #wiki-sidebar-button{align-items:center;border:1px solid rgba(0,0,0,0.11);color:#fff;height:3rem;justify-content:center;min-height:3rem;min-width:3rem;width:3rem}.blueprint-wiki #doc-view{width:calc(100% - 6rem)}@media (max-width: 639px){.blueprint-wiki #doc-view{width:calc(100% - 1rem)}}.blueprint-wiki .sidebar-search-input{border-left:0;border-right:0;margin-top:5px;padding-right:0}.blueprint-wiki .search-button{border:0;width:100%}.blueprint-wiki .content{flex-grow:1;margin:0 1rem 1rem}.blueprint-wiki .location-input{margin-left:15px}.blueprint-wiki .preview-title{padding:1rem 1rem .1rem}html{height:100%}html body{display:flex;flex-direction:column;height:100%}.navbar-logo{height:60%;margin-left:-10px;margin-top:2px;max-width:110%;padding-left:3px}.hover-title a{transition:opacity 200ms ease-in-out;-moz-transition:opacity 200ms ease-in-out;-webkit-transition:opacity 200ms ease-in-out;opacity:0;visibility:hidden}.hover-title:hover a{transition:opacity 200ms ease-in-out;-moz-transition:opacity 200ms ease-in-out;-webkit-transition:opacity 200ms ease-in-out;opacity:1;visibility:visible}.debug-mode-item{color:#7289DA !important}.sponsor-logo{max-width:15rem}.cursor-default{cursor:default !important}.full-width{width:100%}select{-webkit-appearance:unset !important;left:auto !important;opacity:1 !important;position:relative !important;top:auto !important}div.danger-input *{border-color:red !important;color:red;transition:color .5s ease, border-color .5s ease}table.table-bordered{border:1px solid #E5E5E5 !important}tr.thick-bottom-border{border-bottom:3px solid #E5E5E5 !important}td.left-border,th.left-border{border-left:1px solid #E5E5E5 !important}td.right-border,th.right-border{border-right:1px solid #E5E5E5 !important}.prevent-fouc{display:none} /*# sourceMappingURL=style.css.map */
\ No newline at end of file diff --git a/static/css/style.css.map b/static/css/style.css.map index 0f595867..61361c39 100644 --- a/static/css/style.css.map +++ b/static/css/style.css.map @@ -27,5 +27,5 @@ "../../scss/pysite/pages/wiki/_common.scss" ], "names": [], - "mappings": "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" + "mappings": "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" }
\ No newline at end of file diff --git a/static/js/script.js b/static/js/script.js index 2c6c0d82..9d3c0914 100644 --- a/static/js/script.js +++ b/static/js/script.js @@ -1,2 +1,2 @@ -"use strict";function getScript(url,integrity,cross_origin){const script=document.createElement("script");script.type="text/javascript",script.src=url,script.defer=!0,void 0!==integrity&&(script.integrity=integrity),void 0!==cross_origin&&(script.crossOrigin=cross_origin),document.getElementsByTagName("head")[0].appendChild(script)}function setClass(selector,my_class){document.querySelector(selector).className=my_class}function removeClass(selector,my_class){const element=document.querySelector(selector),reg=new RegExp(`(^| )${my_class}($| )`,"g");element.className=element.className.replace(reg," ")}function error_typewriter(){const app=document.getElementById("error"),typewriter=new Typewriter(app,{loop:!1,deleteSpeed:40,typingSpeed:"natural",devMode:!1});document.getElementById("terminal-close").onclick=function(){const app=document.getElementById("win"),current_class=app.getAttribute("class");app.setAttribute("class",`${current_class} uk-animation-scale-up uk-animation-reverse`),typewriter.stop()},typewriter.appendText("Python 3.6.4 (default, Jan 5 2018, 02:35:40)\n").appendText("[GCC 7.2.1 20171224] on darwin\n").appendText('Type "help", "copyright", "credits" or "license" for more information.\n').appendText(">>> ").pauseFor(1e3).typeString("impor requests").deleteChars(9).typeString("t requests\n").appendText(">>> ").pauseFor(750).changeSettings({typingSpeed:"natural"}).typeString(`response = requests.${window._RequestMethod}('https://pythim`).deleteChars(2).typeString("ondiscord.con/").deleteChars(2).typeString(`m${window._Path}')\n`).pauseFor(1e3).appendText(`<Response [${window._Code}]>\n>>> `).typeString("# hmmmm").pauseFor(1e3).deleteChars(7).pauseFor(1e3).typeString("response.text\n").appendText(`${window._ErrorMsg}\n>>> `).start()}setClass("html","prevent-fouc"),document.onreadystatechange=function(){"interactive"===document.readyState&&(removeClass("html","prevent-fouc"),getScript("https://pro.fontawesome.com/releases/v5.0.13/js/all.js","sha384-d84LGg2pm9KhR4mCAs3N29GQ4OYNy+K+FBHX8WhimHpPm86c839++MDABegrZ3gn","anonymous"),getScript("https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ace.js"),getScript("https://cdn.jsdelivr.net/npm/flatpickr"))},function(){const startjam=new Date(Date.UTC(2018,2,23)),endjam=new Date(Date.UTC(2018,2,26)),now=Date.now();let goal;if(now+1e3<endjam.getTime()){UIkit.notification({message:'<div class=\'uk-text-center\'> <span id="countdown-title" class="uk-text-center"> <a href="/info/jams">Code Jam</a> Countdown </span> <p class=\'uk-text-large\' id="countdown-remaining">...</p><small style=\'font-size: 0.6em;\'>(Tap/click to dismiss)</small></div>',pos:"bottom-right",timeout:endjam-now});const heading=document.getElementById("countdown-title");now>startjam.getTime()?(heading.innerHTML='Current <a href="/info/jams">code jam</a> ends in...',goal=endjam.getTime()):(heading.innerHTML='Next <a href="/info/jams">code jam</a> starts in...',goal=startjam.getTime());const refreshCountdown=setInterval(()=>{let delta=goal-Date.now();if(delta<=1e3)return clearInterval(refreshCountdown),location.reload();let days=Math.floor(delta/864e5);delta-=864e5*days;let hours=Math.floor(delta/36e5);delta-=36e5*hours;let minutes=Math.floor(delta/6e4);delta-=6e4*minutes;let seconds=Math.floor(delta/1e3);days<10&&(days=`0${days}`),hours<10&&(hours=`0${hours}`),minutes<10&&(minutes=`0${minutes}`),seconds<10&&(seconds=`0${seconds}`);try{document.getElementById("countdown-remaining").innerHTML=`${days}:${hours}:${minutes}:${seconds}`}catch(e){return clearInterval(refreshCountdown)}},500)}}();class JamActions{constructor(url,csrf_token){this.url=url,this.csrf_token=csrf_token}send(action,method,data,callback){data.action=action,$.ajax(this.url,{data:data,dataType:"json",headers:{"X-CSRFToken":this.csrf_token},method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}send_json(action,method,data,callback){data.action=action,$.ajax(this.url,{data:JSON.stringify(data),dataType:"json",headers:{"X-CSRFToken":this.csrf_token},method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}set_state(jam,state,callback){this.send("state","POST",{jam:jam,state:state},callback)}get_questions(callback){this.send("questions","GET",{},callback)}create_question(data,callback){this.send_json("questions","POST",data,callback)}delete_question(id,callback){this.send("question","DELETE",{id:id},callback)}associate_question(form,question,callback){this.send("associate_question","POST",{form:form,question:question},callback)}disassociate_question(form,question,callback){this.send("disassociate_question","POST",{form:form,question:question},callback)}create_infraction(id,reason,number,callback){this.send("infraction","POST",{participant:id,reason:reason,number:number},callback)}delete_infraction(id,callback){this.send("infraction","DELETE",{id:id},callback)}approve_application(id,callback){this.send("approve_application","POST",{id:id},callback)}unapprove_application(id,callback){this.send("unapprove_application","POST",{id:id},callback)}generate_teams(jam,callback){this.send("generate_teams","POST",{jam:jam},callback)}create_team(jam,callback){this.send("create_team","POST",{jam:jam},callback)}reroll_team(team,callback){this.send("reroll_team","POST",{team:team},callback)}delete_team(team,callback){this.send("team","DELETE",{team:team},callback)}set_team_member(jam,member,team,callback){this.send("set_team_member","POST",{jam:jam,member:member,team:team},callback)}}function revision_diff(revisions){const buttons=document.querySelectorAll("td input"),id_reg=/compare-(before|after)-([\w|-]+)/;function getRevisionId(element){const e=element.id.match(id_reg);return[e[1],e[2]]}function getRevision(id){return revisions.filter(x=>x.id===id)[0]}buttons.forEach(button=>{button.checked=!1,button.onchange=function(){!function(element){const id=getRevisionId(element),rev=getRevision(id[1]);let aft,bef;"after"===id[0]?(document.querySelector(`#compare-before-${id[1]}`).checked=!1,buttons.forEach(e=>{"after"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1)})):(document.querySelector(`#compare-after-${id[1]}`).checked=!1,buttons.forEach(e=>{"before"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1),"after"===getRevisionId(e)[0]&&(getRevision(getRevisionId(e)[1]).date<=rev.date?document.querySelector(`#${e.id}`).setAttribute("disabled",""):document.querySelector(`#${e.id}`).removeAttribute("disabled"))})),buttons.forEach(button=>{const id=getRevisionId(button);button.checked&&"before"===id[0]&&(bef=id[1]),button.checked&&"after"===id[0]&&(aft=id[1])}),document.getElementById("compare-submit").href=`/history/compare/${bef}/${aft}`}(button)}})}function wiki_sidebar(){const sidebar=document.getElementById("wiki-sidebar");document.getElementById("wiki-sidebar-button").onclick=function(){sidebar.classList.contains("uk-visible@s")?sidebar.classList.remove("uk-visible@s"):sidebar.classList.add("uk-visible@s")}}!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global.moment=factory()}(this,function(){var hookCallback,some;function hooks(){return hookCallback.apply(null,arguments)}function isArray(input){return input instanceof Array||"[object Array]"===Object.prototype.toString.call(input)}function isObject(input){return null!=input&&"[object Object]"===Object.prototype.toString.call(input)}function isUndefined(input){return void 0===input}function isNumber(input){return"number"==typeof input||"[object Number]"===Object.prototype.toString.call(input)}function isDate(input){return input instanceof Date||"[object Date]"===Object.prototype.toString.call(input)}function map(arr,fn){var i,res=[];for(i=0;i<arr.length;++i)res.push(fn(arr[i],i));return res}function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function extend(a,b){for(var i in b)hasOwnProp(b,i)&&(a[i]=b[i]);return hasOwnProp(b,"toString")&&(a.toString=b.toString),hasOwnProp(b,"valueOf")&&(a.valueOf=b.valueOf),a}function createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!0).utc()}function getParsingFlags(m){return null==m._pf&&(m._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),m._pf}function isValid(m){if(null==m._isValid){var flags=getParsingFlags(m),parsedParts=some.call(flags.parsedDateParts,function(i){return null!=i}),isNowValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.weekdayMismatch&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated&&(!flags.meridiem||flags.meridiem&&parsedParts);if(m._strict&&(isNowValid=isNowValid&&0===flags.charsLeftOver&&0===flags.unusedTokens.length&&void 0===flags.bigHour),null!=Object.isFrozen&&Object.isFrozen(m))return isNowValid;m._isValid=isNowValid}return m._isValid}function createInvalid(flags){var m=createUTC(NaN);return null!=flags?extend(getParsingFlags(m),flags):getParsingFlags(m).userInvalidated=!0,m}some=Array.prototype.some?Array.prototype.some:function(fun){for(var t=Object(this),len=t.length>>>0,i=0;i<len;i++)if(i in t&&fun.call(this,t[i],i,t))return!0;return!1};var momentProperties=hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(isUndefined(from._isAMomentObject)||(to._isAMomentObject=from._isAMomentObject),isUndefined(from._i)||(to._i=from._i),isUndefined(from._f)||(to._f=from._f),isUndefined(from._l)||(to._l=from._l),isUndefined(from._strict)||(to._strict=from._strict),isUndefined(from._tzm)||(to._tzm=from._tzm),isUndefined(from._isUTC)||(to._isUTC=from._isUTC),isUndefined(from._offset)||(to._offset=from._offset),isUndefined(from._pf)||(to._pf=getParsingFlags(from)),isUndefined(from._locale)||(to._locale=from._locale),momentProperties.length>0)for(i=0;i<momentProperties.length;i++)isUndefined(val=from[prop=momentProperties[i]])||(to[prop]=val);return to}var updateInProgress=!1;function Moment(config){copyConfig(this,config),this._d=new Date(null!=config._d?config._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===updateInProgress&&(updateInProgress=!0,hooks.updateOffset(this),updateInProgress=!1)}function isMoment(obj){return obj instanceof Moment||null!=obj&&null!=obj._isAMomentObject}function absFloor(number){return number<0?Math.ceil(number)||0:Math.floor(number)}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;return 0!==coercedNumber&&isFinite(coercedNumber)&&(value=absFloor(coercedNumber)),value}function compareArrays(array1,array2,dontConvert){var i,len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0;for(i=0;i<len;i++)(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i]))&&diffs++;return diffs+lengthDiff}function warn(msg){!1===hooks.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+msg)}function deprecate(msg,fn){var firstTime=!0;return extend(function(){if(null!=hooks.deprecationHandler&&hooks.deprecationHandler(null,msg),firstTime){for(var arg,args=[],i=0;i<arguments.length;i++){if(arg="","object"==typeof arguments[i]){for(var key in arg+="\n["+i+"] ",arguments[0])arg+=key+": "+arguments[0][key]+", ";arg=arg.slice(0,-2)}else arg=arguments[i];args.push(arg)}warn(msg+"\nArguments: "+Array.prototype.slice.call(args).join("")+"\n"+(new Error).stack),firstTime=!1}return fn.apply(this,arguments)},fn)}var keys,deprecations={};function deprecateSimple(name,msg){null!=hooks.deprecationHandler&&hooks.deprecationHandler(name,msg),deprecations[name]||(warn(msg),deprecations[name]=!0)}function isFunction(input){return input instanceof Function||"[object Function]"===Object.prototype.toString.call(input)}function mergeConfigs(parentConfig,childConfig){var prop,res=extend({},parentConfig);for(prop in childConfig)hasOwnProp(childConfig,prop)&&(isObject(parentConfig[prop])&&isObject(childConfig[prop])?(res[prop]={},extend(res[prop],parentConfig[prop]),extend(res[prop],childConfig[prop])):null!=childConfig[prop]?res[prop]=childConfig[prop]:delete res[prop]);for(prop in parentConfig)hasOwnProp(parentConfig,prop)&&!hasOwnProp(childConfig,prop)&&isObject(parentConfig[prop])&&(res[prop]=extend({},res[prop]));return res}function Locale(config){null!=config&&this.set(config)}hooks.suppressDeprecationWarnings=!1,hooks.deprecationHandler=null,keys=Object.keys?Object.keys:function(obj){var i,res=[];for(i in obj)hasOwnProp(obj,i)&&res.push(i);return res};var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+"s"]=aliases[shorthand]=unit}function normalizeUnits(units){return"string"==typeof units?aliases[units]||aliases[units.toLowerCase()]:void 0}function normalizeObjectUnits(inputObject){var normalizedProp,prop,normalizedInput={};for(prop in inputObject)hasOwnProp(inputObject,prop)&&(normalizedProp=normalizeUnits(prop))&&(normalizedInput[normalizedProp]=inputObject[prop]);return normalizedInput}var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority}function zeroFill(number,targetLength,forceSign){var absNumber=""+Math.abs(number),zerosToFill=targetLength-absNumber.length;return(number>=0?forceSign?"+":"":"-")+Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber}var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,formatFunctions={},formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;"string"==typeof callback&&(func=function(){return this[callback]()}),token&&(formatTokenFunctions[token]=func),padded&&(formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2])}),ordinal&&(formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token)})}function formatMoment(m,format){return m.isValid()?(format=expandFormat(format,m.localeData()),formatFunctions[format]=formatFunctions[format]||function(format){var i,length,input,array=format.match(formattingTokens);for(i=0,length=array.length;i<length;i++)formatTokenFunctions[array[i]]?array[i]=formatTokenFunctions[array[i]]:array[i]=(input=array[i]).match(/\[[\s\S]/)?input.replace(/^\[|\]$/g,""):input.replace(/\\/g,"");return function(mom){var i,output="";for(i=0;i<length;i++)output+=isFunction(array[i])?array[i].call(mom,format):array[i];return output}}(format),formatFunctions[format](m)):m.localeData().invalidDate()}function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input}for(localFormattingTokens.lastIndex=0;i>=0&&localFormattingTokens.test(format);)format=format.replace(localFormattingTokens,replaceLongDateFormatTokens),localFormattingTokens.lastIndex=0,i-=1;return format}var match1=/\d/,match2=/\d\d/,match3=/\d{3}/,match4=/\d{4}/,match6=/[+-]?\d{6}/,match1to2=/\d\d?/,match3to4=/\d\d\d\d?/,match5to6=/\d\d\d\d\d\d?/,match1to3=/\d{1,3}/,match1to4=/\d{1,4}/,match1to6=/[+-]?\d{1,6}/,matchUnsigned=/\d+/,matchSigned=/[+-]?\d+/,matchOffset=/Z|[+-]\d\d:?\d\d/gi,matchShortOffset=/Z|[+-]\d\d(?::?\d\d)?/gi,matchWord=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict,localeData){return isStrict&&strictRegex?strictRegex:regex}}function getParseRegexForToken(token,config){return hasOwnProp(regexes,token)?regexes[token](config._strict,config._locale):new RegExp(regexEscape(token.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4})))}function regexEscape(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var tokens={};function addParseToken(token,callback){var i,func=callback;for("string"==typeof token&&(token=[token]),isNumber(callback)&&(func=function(input,array){array[callback]=toInt(input)}),i=0;i<token.length;i++)tokens[token[i]]=func}function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{},callback(input,config._w,config,token)})}function addTimeToArrayFromToken(token,input,config){null!=input&&hasOwnProp(tokens,token)&&tokens[token](input,config._a,config,token)}var YEAR=0,MONTH=1,DATE=2,HOUR=3,MINUTE=4,SECOND=5,MILLISECOND=6,WEEK=7,WEEKDAY=8;function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4==0&&year%100!=0||year%400==0}addFormatToken("Y",0,0,function(){var y=this.year();return y<=9999?""+y:"+"+y}),addFormatToken(0,["YY",2],0,function(){return this.year()%100}),addFormatToken(0,["YYYY",4],0,"year"),addFormatToken(0,["YYYYY",5],0,"year"),addFormatToken(0,["YYYYYY",6,!0],0,"year"),addUnitAlias("year","y"),addUnitPriority("year",1),addRegexToken("Y",matchSigned),addRegexToken("YY",match1to2,match2),addRegexToken("YYYY",match1to4,match4),addRegexToken("YYYYY",match1to6,match6),addRegexToken("YYYYYY",match1to6,match6),addParseToken(["YYYYY","YYYYYY"],YEAR),addParseToken("YYYY",function(input,array){array[YEAR]=2===input.length?hooks.parseTwoDigitYear(input):toInt(input)}),addParseToken("YY",function(input,array){array[YEAR]=hooks.parseTwoDigitYear(input)}),addParseToken("Y",function(input,array){array[YEAR]=parseInt(input,10)}),hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};var indexOf,getSetYear=makeGetSet("FullYear",!0);function makeGetSet(unit,keepTime){return function(value){return null!=value?(set$1(this,unit,value),hooks.updateOffset(this,keepTime),this):get(this,unit)}}function get(mom,unit){return mom.isValid()?mom._d["get"+(mom._isUTC?"UTC":"")+unit]():NaN}function set$1(mom,unit,value){mom.isValid()&&!isNaN(value)&&("FullYear"===unit&&isLeapYear(mom.year())&&1===mom.month()&&29===mom.date()?mom._d["set"+(mom._isUTC?"UTC":"")+unit](value,mom.month(),daysInMonth(value,mom.month())):mom._d["set"+(mom._isUTC?"UTC":"")+unit](value))}function daysInMonth(year,month){if(isNaN(year)||isNaN(month))return NaN;var x,modMonth=(month%(x=12)+x)%x;return year+=(month-modMonth)/12,1===modMonth?isLeapYear(year)?29:28:31-modMonth%7%2}indexOf=Array.prototype.indexOf?Array.prototype.indexOf:function(o){var i;for(i=0;i<this.length;++i)if(this[i]===o)return i;return-1},addFormatToken("M",["MM",2],"Mo",function(){return this.month()+1}),addFormatToken("MMM",0,0,function(format){return this.localeData().monthsShort(this,format)}),addFormatToken("MMMM",0,0,function(format){return this.localeData().months(this,format)}),addUnitAlias("month","M"),addUnitPriority("month",8),addRegexToken("M",match1to2),addRegexToken("MM",match1to2,match2),addRegexToken("MMM",function(isStrict,locale){return locale.monthsShortRegex(isStrict)}),addRegexToken("MMMM",function(isStrict,locale){return locale.monthsRegex(isStrict)}),addParseToken(["M","MM"],function(input,array){array[MONTH]=toInt(input)-1}),addParseToken(["MMM","MMMM"],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);null!=month?array[MONTH]=month:getParsingFlags(config).invalidMonth=input});var MONTHS_IN_FORMAT=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,defaultLocaleMonths="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var defaultLocaleMonthsShort="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function setMonth(mom,value){var dayOfMonth;if(!mom.isValid())return mom;if("string"==typeof value)if(/^\d+$/.test(value))value=toInt(value);else if(!isNumber(value=mom.localeData().monthsParse(value)))return mom;return dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value)),mom._d["set"+(mom._isUTC?"UTC":"")+"Month"](value,dayOfMonth),mom}function getSetMonth(value){return null!=value?(setMonth(this,value),hooks.updateOffset(this,!0),this):get(this,"Month")}var defaultMonthsShortRegex=matchWord;var defaultMonthsRegex=matchWord;function computeMonthsParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<12;i++)mom=createUTC([2e3,i]),shortPieces.push(this.monthsShort(mom,"")),longPieces.push(this.months(mom,"")),mixedPieces.push(this.months(mom,"")),mixedPieces.push(this.monthsShort(mom,""));for(shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<12;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]);for(i=0;i<24;i++)mixedPieces[i]=regexEscape(mixedPieces[i]);this._monthsRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i")}function createUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));return y<100&&y>=0&&isFinite(date.getUTCFullYear())&&date.setUTCFullYear(y),date}function firstWeekOffset(year,dow,doy){var fwd=7+dow-doy;return-((7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7)+fwd-1}function dayOfYearFromWeeks(year,week,weekday,dow,doy){var resYear,resDayOfYear,dayOfYear=1+7*(week-1)+(7+weekday-dow)%7+firstWeekOffset(year,dow,doy);return dayOfYear<=0?resDayOfYear=daysInYear(resYear=year-1)+dayOfYear:dayOfYear>daysInYear(year)?(resYear=year+1,resDayOfYear=dayOfYear-daysInYear(year)):(resYear=year,resDayOfYear=dayOfYear),{year:resYear,dayOfYear:resDayOfYear}}function weekOfYear(mom,dow,doy){var resWeek,resYear,weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1;return week<1?resWeek=week+weeksInYear(resYear=mom.year()-1,dow,doy):week>weeksInYear(mom.year(),dow,doy)?(resWeek=week-weeksInYear(mom.year(),dow,doy),resYear=mom.year()+1):(resYear=mom.year(),resWeek=week),{week:resWeek,year:resYear}}function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return(daysInYear(year)-weekOffset+weekOffsetNext)/7}addFormatToken("w",["ww",2],"wo","week"),addFormatToken("W",["WW",2],"Wo","isoWeek"),addUnitAlias("week","w"),addUnitAlias("isoWeek","W"),addUnitPriority("week",5),addUnitPriority("isoWeek",5),addRegexToken("w",match1to2),addRegexToken("ww",match1to2,match2),addRegexToken("W",match1to2),addRegexToken("WW",match1to2,match2),addWeekParseToken(["w","ww","W","WW"],function(input,week,config,token){week[token.substr(0,1)]=toInt(input)});addFormatToken("d",0,"do","day"),addFormatToken("dd",0,0,function(format){return this.localeData().weekdaysMin(this,format)}),addFormatToken("ddd",0,0,function(format){return this.localeData().weekdaysShort(this,format)}),addFormatToken("dddd",0,0,function(format){return this.localeData().weekdays(this,format)}),addFormatToken("e",0,0,"weekday"),addFormatToken("E",0,0,"isoWeekday"),addUnitAlias("day","d"),addUnitAlias("weekday","e"),addUnitAlias("isoWeekday","E"),addUnitPriority("day",11),addUnitPriority("weekday",11),addUnitPriority("isoWeekday",11),addRegexToken("d",match1to2),addRegexToken("e",match1to2),addRegexToken("E",match1to2),addRegexToken("dd",function(isStrict,locale){return locale.weekdaysMinRegex(isStrict)}),addRegexToken("ddd",function(isStrict,locale){return locale.weekdaysShortRegex(isStrict)}),addRegexToken("dddd",function(isStrict,locale){return locale.weekdaysRegex(isStrict)}),addWeekParseToken(["dd","ddd","dddd"],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);null!=weekday?week.d=weekday:getParsingFlags(config).invalidWeekday=input}),addWeekParseToken(["d","e","E"],function(input,week,config,token){week[token]=toInt(input)});var defaultLocaleWeekdays="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var defaultLocaleWeekdaysShort="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var defaultLocaleWeekdaysMin="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var defaultWeekdaysRegex=matchWord;var defaultWeekdaysShortRegex=matchWord;var defaultWeekdaysMinRegex=matchWord;function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,minp,shortp,longp,minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<7;i++)mom=createUTC([2e3,1]).day(i),minp=this.weekdaysMin(mom,""),shortp=this.weekdaysShort(mom,""),longp=this.weekdays(mom,""),minPieces.push(minp),shortPieces.push(shortp),longPieces.push(longp),mixedPieces.push(minp),mixedPieces.push(shortp),mixedPieces.push(longp);for(minPieces.sort(cmpLenRev),shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<7;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]),mixedPieces[i]=regexEscape(mixedPieces[i]);this._weekdaysRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+minPieces.join("|")+")","i")}function hFormat(){return this.hours()%12||12}function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase)})}function matchMeridiem(isStrict,locale){return locale._meridiemParse}addFormatToken("H",["HH",2],0,"hour"),addFormatToken("h",["hh",2],0,hFormat),addFormatToken("k",["kk",2],0,function(){return this.hours()||24}),addFormatToken("hmm",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)}),addFormatToken("hmmss",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),addFormatToken("Hmm",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)}),addFormatToken("Hmmss",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),meridiem("a",!0),meridiem("A",!1),addUnitAlias("hour","h"),addUnitPriority("hour",13),addRegexToken("a",matchMeridiem),addRegexToken("A",matchMeridiem),addRegexToken("H",match1to2),addRegexToken("h",match1to2),addRegexToken("k",match1to2),addRegexToken("HH",match1to2,match2),addRegexToken("hh",match1to2,match2),addRegexToken("kk",match1to2,match2),addRegexToken("hmm",match3to4),addRegexToken("hmmss",match5to6),addRegexToken("Hmm",match3to4),addRegexToken("Hmmss",match5to6),addParseToken(["H","HH"],HOUR),addParseToken(["k","kk"],function(input,array,config){var kInput=toInt(input);array[HOUR]=24===kInput?0:kInput}),addParseToken(["a","A"],function(input,array,config){config._isPm=config._locale.isPM(input),config._meridiem=input}),addParseToken(["h","hh"],function(input,array,config){array[HOUR]=toInt(input),getParsingFlags(config).bigHour=!0}),addParseToken("hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos)),getParsingFlags(config).bigHour=!0}),addParseToken("hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2)),getParsingFlags(config).bigHour=!0}),addParseToken("Hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos))}),addParseToken("Hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2))});var globalLocale,getSetHour=makeGetSet("Hours",!0),baseConfig={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:{dow:0,doy:6},weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:/[ap]\.?m?\.?/i},locales={},localeFamilies={};function normalizeLocale(key){return key?key.toLowerCase().replace("_","-"):key}function loadLocale(name){var oldLocale=null;if(!locales[name]&&"undefined"!=typeof module&&module&&module.exports)try{oldLocale=globalLocale._abbr,require("./locale/"+name),getSetGlobalLocale(oldLocale)}catch(e){}return locales[name]}function getSetGlobalLocale(key,values){var data;return key&&((data=isUndefined(values)?getLocale(key):defineLocale(key,values))?globalLocale=data:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+key+" not found. Did you forget to load it?")),globalLocale._abbr}function defineLocale(name,config){if(null!==config){var locale,parentConfig=baseConfig;if(config.abbr=name,null!=locales[name])deprecateSimple("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),parentConfig=locales[name]._config;else if(null!=config.parentLocale)if(null!=locales[config.parentLocale])parentConfig=locales[config.parentLocale]._config;else{if(null==(locale=loadLocale(config.parentLocale)))return localeFamilies[config.parentLocale]||(localeFamilies[config.parentLocale]=[]),localeFamilies[config.parentLocale].push({name:name,config:config}),null;parentConfig=locale._config}return locales[name]=new Locale(mergeConfigs(parentConfig,config)),localeFamilies[name]&&localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config)}),getSetGlobalLocale(name),locales[name]}return delete locales[name],null}function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr&&(key=key._locale._abbr),!key)return globalLocale;if(!isArray(key)){if(locale=loadLocale(key))return locale;key=[key]}return function(names){for(var j,next,locale,split,i=0;i<names.length;){for(j=(split=normalizeLocale(names[i]).split("-")).length,next=(next=normalizeLocale(names[i+1]))?next.split("-"):null;j>0;){if(locale=loadLocale(split.slice(0,j).join("-")))return locale;if(next&&next.length>=j&&compareArrays(split,next,!0)>=j-1)break;j--}i++}return globalLocale}(key)}function checkOverflow(m){var overflow,a=m._a;return a&&-2===getParsingFlags(m).overflow&&(overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||24===a[HOUR]&&(0!==a[MINUTE]||0!==a[SECOND]||0!==a[MILLISECOND])?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1,getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)&&(overflow=DATE),getParsingFlags(m)._overflowWeeks&&-1===overflow&&(overflow=WEEK),getParsingFlags(m)._overflowWeekday&&-1===overflow&&(overflow=WEEKDAY),getParsingFlags(m).overflow=overflow),m}function defaults(a,b,c){return null!=a?a:null!=b?b:c}function configFromArray(config){var i,date,currentDate,expectedWeekday,yearToUse,input=[];if(!config._d){for(currentDate=function(config){var nowValue=new Date(hooks.now());return config._useUTC?[nowValue.getUTCFullYear(),nowValue.getUTCMonth(),nowValue.getUTCDate()]:[nowValue.getFullYear(),nowValue.getMonth(),nowValue.getDate()]}(config),config._w&&null==config._a[DATE]&&null==config._a[MONTH]&&function(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow;if(null!=(w=config._w).GG||null!=w.W||null!=w.E)dow=1,doy=4,weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year),week=defaults(w.W,1),((weekday=defaults(w.E,1))<1||weekday>7)&&(weekdayOverflow=!0);else{dow=config._locale._week.dow,doy=config._locale._week.doy;var curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year),week=defaults(w.w,curWeek.week),null!=w.d?((weekday=w.d)<0||weekday>6)&&(weekdayOverflow=!0):null!=w.e?(weekday=w.e+dow,(w.e<0||w.e>6)&&(weekdayOverflow=!0)):weekday=dow}week<1||week>weeksInYear(weekYear,dow,doy)?getParsingFlags(config)._overflowWeeks=!0:null!=weekdayOverflow?getParsingFlags(config)._overflowWeekday=!0:(temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),config._a[YEAR]=temp.year,config._dayOfYear=temp.dayOfYear)}(config),null!=config._dayOfYear&&(yearToUse=defaults(config._a[YEAR],currentDate[YEAR]),(config._dayOfYear>daysInYear(yearToUse)||0===config._dayOfYear)&&(getParsingFlags(config)._overflowDayOfYear=!0),date=createUTCDate(yearToUse,0,config._dayOfYear),config._a[MONTH]=date.getUTCMonth(),config._a[DATE]=date.getUTCDate()),i=0;i<3&&null==config._a[i];++i)config._a[i]=input[i]=currentDate[i];for(;i<7;i++)config._a[i]=input[i]=null==config._a[i]?2===i?1:0:config._a[i];24===config._a[HOUR]&&0===config._a[MINUTE]&&0===config._a[SECOND]&&0===config._a[MILLISECOND]&&(config._nextDay=!0,config._a[HOUR]=0),config._d=(config._useUTC?createUTCDate:function(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);return y<100&&y>=0&&isFinite(date.getFullYear())&&date.setFullYear(y),date}).apply(null,input),expectedWeekday=config._useUTC?config._d.getUTCDay():config._d.getDay(),null!=config._tzm&&config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),config._nextDay&&(config._a[HOUR]=24),config._w&&void 0!==config._w.d&&config._w.d!==expectedWeekday&&(getParsingFlags(config).weekdayMismatch=!0)}}var extendedIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,basicIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,tzRegex=/Z|[+-]\d\d(?::?\d\d)?/,isoDates=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],isoTimes=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],aspNetJsonRegex=/^\/?Date\((\-?\d+)/i;function configFromISO(config){var i,l,allowTime,dateFormat,timeFormat,tzFormat,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string);if(match){for(getParsingFlags(config).iso=!0,i=0,l=isoDates.length;i<l;i++)if(isoDates[i][1].exec(match[1])){dateFormat=isoDates[i][0],allowTime=!1!==isoDates[i][2];break}if(null==dateFormat)return void(config._isValid=!1);if(match[3]){for(i=0,l=isoTimes.length;i<l;i++)if(isoTimes[i][1].exec(match[3])){timeFormat=(match[2]||" ")+isoTimes[i][0];break}if(null==timeFormat)return void(config._isValid=!1)}if(!allowTime&&null!=timeFormat)return void(config._isValid=!1);if(match[4]){if(!tzRegex.exec(match[4]))return void(config._isValid=!1);tzFormat="Z"}config._f=dateFormat+(timeFormat||"")+(tzFormat||""),configFromStringAndFormat(config)}else config._isValid=!1}var rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function extractFromRFC2822Strings(yearStr,monthStr,dayStr,hourStr,minuteStr,secondStr){var result=[function(yearStr){var year=parseInt(yearStr,10);if(year<=49)return 2e3+year;if(year<=999)return 1900+year;return year}(yearStr),defaultLocaleMonthsShort.indexOf(monthStr),parseInt(dayStr,10),parseInt(hourStr,10),parseInt(minuteStr,10)];return secondStr&&result.push(parseInt(secondStr,10)),result}var obsOffsets={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function configFromRFC2822(config){var match=rfc2822.exec(config._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(match){var parsedArray=extractFromRFC2822Strings(match[4],match[3],match[2],match[5],match[6],match[7]);if(!function(weekdayStr,parsedInput,config){return!weekdayStr||defaultLocaleWeekdaysShort.indexOf(weekdayStr)===new Date(parsedInput[0],parsedInput[1],parsedInput[2]).getDay()||(getParsingFlags(config).weekdayMismatch=!0,config._isValid=!1,!1)}(match[1],parsedArray,config))return;config._a=parsedArray,config._tzm=function(obsOffset,militaryOffset,numOffset){if(obsOffset)return obsOffsets[obsOffset];if(militaryOffset)return 0;var hm=parseInt(numOffset,10),m=hm%100;return(hm-m)/100*60+m}(match[8],match[9],match[10]),config._d=createUTCDate.apply(null,config._a),config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),getParsingFlags(config).rfc2822=!0}else config._isValid=!1}function configFromStringAndFormat(config){if(config._f!==hooks.ISO_8601)if(config._f!==hooks.RFC_2822){config._a=[],getParsingFlags(config).empty=!0;var i,parsedInput,tokens,token,skipped,string=""+config._i,stringLength=string.length,totalParsedInputLength=0;for(tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[],i=0;i<tokens.length;i++)token=tokens[i],(parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0])&&((skipped=string.substr(0,string.indexOf(parsedInput))).length>0&&getParsingFlags(config).unusedInput.push(skipped),string=string.slice(string.indexOf(parsedInput)+parsedInput.length),totalParsedInputLength+=parsedInput.length),formatTokenFunctions[token]?(parsedInput?getParsingFlags(config).empty=!1:getParsingFlags(config).unusedTokens.push(token),addTimeToArrayFromToken(token,parsedInput,config)):config._strict&&!parsedInput&&getParsingFlags(config).unusedTokens.push(token);getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength,string.length>0&&getParsingFlags(config).unusedInput.push(string),config._a[HOUR]<=12&&!0===getParsingFlags(config).bigHour&&config._a[HOUR]>0&&(getParsingFlags(config).bigHour=void 0),getParsingFlags(config).parsedDateParts=config._a.slice(0),getParsingFlags(config).meridiem=config._meridiem,config._a[HOUR]=function(locale,hour,meridiem){var isPm;if(null==meridiem)return hour;return null!=locale.meridiemHour?locale.meridiemHour(hour,meridiem):null!=locale.isPM?((isPm=locale.isPM(meridiem))&&hour<12&&(hour+=12),isPm||12!==hour||(hour=0),hour):hour}(config._locale,config._a[HOUR],config._meridiem),configFromArray(config),checkOverflow(config)}else configFromRFC2822(config);else configFromISO(config)}function prepareConfig(config){var input=config._i,format=config._f;return config._locale=config._locale||getLocale(config._l),null===input||void 0===format&&""===input?createInvalid({nullInput:!0}):("string"==typeof input&&(config._i=input=config._locale.preparse(input)),isMoment(input)?new Moment(checkOverflow(input)):(isDate(input)?config._d=input:isArray(format)?function(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(0===config._f.length)return getParsingFlags(config).invalidFormat=!0,void(config._d=new Date(NaN));for(i=0;i<config._f.length;i++)currentScore=0,tempConfig=copyConfig({},config),null!=config._useUTC&&(tempConfig._useUTC=config._useUTC),tempConfig._f=config._f[i],configFromStringAndFormat(tempConfig),isValid(tempConfig)&&(currentScore+=getParsingFlags(tempConfig).charsLeftOver,currentScore+=10*getParsingFlags(tempConfig).unusedTokens.length,getParsingFlags(tempConfig).score=currentScore,(null==scoreToBeat||currentScore<scoreToBeat)&&(scoreToBeat=currentScore,bestMoment=tempConfig));extend(config,bestMoment||tempConfig)}(config):format?configFromStringAndFormat(config):function(config){var input=config._i;isUndefined(input)?config._d=new Date(hooks.now()):isDate(input)?config._d=new Date(input.valueOf()):"string"==typeof input?function(config){var matched=aspNetJsonRegex.exec(config._i);null===matched?(configFromISO(config),!1===config._isValid&&(delete config._isValid,configFromRFC2822(config),!1===config._isValid&&(delete config._isValid,hooks.createFromInputFallback(config)))):config._d=new Date(+matched[1])}(config):isArray(input)?(config._a=map(input.slice(0),function(obj){return parseInt(obj,10)}),configFromArray(config)):isObject(input)?function(config){if(!config._d){var i=normalizeObjectUnits(config._i);config._a=map([i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond],function(obj){return obj&&parseInt(obj,10)}),configFromArray(config)}}(config):isNumber(input)?config._d=new Date(input):hooks.createFromInputFallback(config)}(config),isValid(config)||(config._d=null),config))}function createLocalOrUTC(input,format,locale,strict,isUTC){var res,c={};return!0!==locale&&!1!==locale||(strict=locale,locale=void 0),(isObject(input)&&function(obj){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(obj).length;var k;for(k in obj)if(obj.hasOwnProperty(k))return!1;return!0}(input)||isArray(input)&&0===input.length)&&(input=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=isUTC,c._l=locale,c._i=input,c._f=format,c._strict=strict,(res=new Moment(checkOverflow(prepareConfig(c))))._nextDay&&(res.add(1,"d"),res._nextDay=void 0),res}function createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!1)}hooks.createFromInputFallback=deprecate("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(config){config._d=new Date(config._i+(config._useUTC?" UTC":""))}),hooks.ISO_8601=function(){},hooks.RFC_2822=function(){};var prototypeMin=deprecate("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other<this?this:other:createInvalid()}),prototypeMax=deprecate("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other>this?this:other:createInvalid()});function pickBy(fn,moments){var res,i;if(1===moments.length&&isArray(moments[0])&&(moments=moments[0]),!moments.length)return createLocal();for(res=moments[0],i=1;i<moments.length;++i)moments[i].isValid()&&!moments[i][fn](res)||(res=moments[i]);return res}var ordering=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._isValid=function(m){for(var key in m)if(-1===indexOf.call(ordering,key)||null!=m[key]&&isNaN(m[key]))return!1;for(var unitHasDecimal=!1,i=0;i<ordering.length;++i)if(m[ordering[i]]){if(unitHasDecimal)return!1;parseFloat(m[ordering[i]])!==toInt(m[ordering[i]])&&(unitHasDecimal=!0)}return!0}(normalizedInput),this._milliseconds=+milliseconds+1e3*seconds+6e4*minutes+1e3*hours*60*60,this._days=+days+7*weeks,this._months=+months+3*quarters+12*years,this._data={},this._locale=getLocale(),this._bubble()}function isDuration(obj){return obj instanceof Duration}function absRound(number){return number<0?-1*Math.round(-1*number):Math.round(number)}function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset(),sign="+";return offset<0&&(offset=-offset,sign="-"),sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~offset%60,2)})}offset("Z",":"),offset("ZZ",""),addRegexToken("Z",matchShortOffset),addRegexToken("ZZ",matchShortOffset),addParseToken(["Z","ZZ"],function(input,array,config){config._useUTC=!0,config._tzm=offsetFromString(matchShortOffset,input)});var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(matcher,string){var matches=(string||"").match(matcher);if(null===matches)return null;var parts=((matches[matches.length-1]||[])+"").match(chunkOffset)||["-",0,0],minutes=60*parts[1]+toInt(parts[2]);return 0===minutes?0:"+"===parts[0]?minutes:-minutes}function cloneWithOffset(input,model){var res,diff;return model._isUTC?(res=model.clone(),diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf(),res._d.setTime(res._d.valueOf()+diff),hooks.updateOffset(res,!1),res):createLocal(input).local()}function getDateOffset(m){return 15*-Math.round(m._d.getTimezoneOffset()/15)}function isUtc(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}hooks.updateOffset=function(){};var aspNetRegex=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,isoRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(input,key){var sign,ret,diffRes,duration=input,match=null;return isDuration(input)?duration={ms:input._milliseconds,d:input._days,M:input._months}:isNumber(input)?(duration={},key?duration[key]=input:duration.milliseconds=input):(match=aspNetRegex.exec(input))?(sign="-"===match[1]?-1:1,duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(1e3*match[MILLISECOND]))*sign}):(match=isoRegex.exec(input))?(sign="-"===match[1]?-1:(match[1],1),duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)}):null==duration?duration={}:"object"==typeof duration&&("from"in duration||"to"in duration)&&(diffRes=function(base,other){var res;if(!base.isValid()||!other.isValid())return{milliseconds:0,months:0};other=cloneWithOffset(other,base),base.isBefore(other)?res=positiveMomentsDifference(base,other):((res=positiveMomentsDifference(other,base)).milliseconds=-res.milliseconds,res.months=-res.months);return res}(createLocal(duration.from),createLocal(duration.to)),(duration={}).ms=diffRes.milliseconds,duration.M=diffRes.months),ret=new Duration(duration),isDuration(input)&&hasOwnProp(input,"_locale")&&(ret._locale=input._locale),ret}function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(",","."));return(isNaN(res)?0:res)*sign}function positiveMomentsDifference(base,other){var res={milliseconds:0,months:0};return res.months=other.month()-base.month()+12*(other.year()-base.year()),base.clone().add(res.months,"M").isAfter(other)&&--res.months,res.milliseconds=+other-+base.clone().add(res.months,"M"),res}function createAdder(direction,name){return function(val,period){var tmp;return null===period||isNaN(+period)||(deprecateSimple(name,"moment()."+name+"(period, number) is deprecated. Please use moment()."+name+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),tmp=val,val=period,period=tmp),addSubtract(this,createDuration(val="string"==typeof val?+val:val,period),direction),this}}function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);mom.isValid()&&(updateOffset=null==updateOffset||updateOffset,months&&setMonth(mom,get(mom,"Month")+months*isAdding),days&&set$1(mom,"Date",get(mom,"Date")+days*isAdding),milliseconds&&mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding),updateOffset&&hooks.updateOffset(mom,days||months))}createDuration.fn=Duration.prototype,createDuration.invalid=function(){return createDuration(NaN)};var add=createAdder(1,"add"),subtract=createAdder(-1,"subtract");function monthDiff(a,b){var wholeMonthDiff=12*(b.year()-a.year())+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,"months");return-(wholeMonthDiff+(b-anchor<0?(b-anchor)/(anchor-a.clone().add(wholeMonthDiff-1,"months")):(b-anchor)/(a.clone().add(wholeMonthDiff+1,"months")-anchor)))||0}function locale(key){var newLocaleData;return void 0===key?this._locale._abbr:(null!=(newLocaleData=getLocale(key))&&(this._locale=newLocaleData),this)}hooks.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",hooks.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var lang=deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(key){return void 0===key?this.localeData():this.locale(key)});function localeData(){return this._locale}function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter)}function getSetWeekYearHelper(input,week,weekday,dow,doy){var weeksTarget;return null==input?weekOfYear(this,dow,doy).year:(week>(weeksTarget=weeksInYear(input,dow,doy))&&(week=weeksTarget),function(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);return this.year(date.getUTCFullYear()),this.month(date.getUTCMonth()),this.date(date.getUTCDate()),this}.call(this,input,week,weekday,dow,doy))}addFormatToken(0,["gg",2],0,function(){return this.weekYear()%100}),addFormatToken(0,["GG",2],0,function(){return this.isoWeekYear()%100}),addWeekYearFormatToken("gggg","weekYear"),addWeekYearFormatToken("ggggg","weekYear"),addWeekYearFormatToken("GGGG","isoWeekYear"),addWeekYearFormatToken("GGGGG","isoWeekYear"),addUnitAlias("weekYear","gg"),addUnitAlias("isoWeekYear","GG"),addUnitPriority("weekYear",1),addUnitPriority("isoWeekYear",1),addRegexToken("G",matchSigned),addRegexToken("g",matchSigned),addRegexToken("GG",match1to2,match2),addRegexToken("gg",match1to2,match2),addRegexToken("GGGG",match1to4,match4),addRegexToken("gggg",match1to4,match4),addRegexToken("GGGGG",match1to6,match6),addRegexToken("ggggg",match1to6,match6),addWeekParseToken(["gggg","ggggg","GGGG","GGGGG"],function(input,week,config,token){week[token.substr(0,2)]=toInt(input)}),addWeekParseToken(["gg","GG"],function(input,week,config,token){week[token]=hooks.parseTwoDigitYear(input)}),addFormatToken("Q",0,"Qo","quarter"),addUnitAlias("quarter","Q"),addUnitPriority("quarter",7),addRegexToken("Q",match1),addParseToken("Q",function(input,array){array[MONTH]=3*(toInt(input)-1)}),addFormatToken("D",["DD",2],"Do","date"),addUnitAlias("date","D"),addUnitPriority("date",9),addRegexToken("D",match1to2),addRegexToken("DD",match1to2,match2),addRegexToken("Do",function(isStrict,locale){return isStrict?locale._dayOfMonthOrdinalParse||locale._ordinalParse:locale._dayOfMonthOrdinalParseLenient}),addParseToken(["D","DD"],DATE),addParseToken("Do",function(input,array){array[DATE]=toInt(input.match(match1to2)[0])});var getSetDayOfMonth=makeGetSet("Date",!0);addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear"),addUnitAlias("dayOfYear","DDD"),addUnitPriority("dayOfYear",4),addRegexToken("DDD",match1to3),addRegexToken("DDDD",match3),addParseToken(["DDD","DDDD"],function(input,array,config){config._dayOfYear=toInt(input)}),addFormatToken("m",["mm",2],0,"minute"),addUnitAlias("minute","m"),addUnitPriority("minute",14),addRegexToken("m",match1to2),addRegexToken("mm",match1to2,match2),addParseToken(["m","mm"],MINUTE);var getSetMinute=makeGetSet("Minutes",!1);addFormatToken("s",["ss",2],0,"second"),addUnitAlias("second","s"),addUnitPriority("second",15),addRegexToken("s",match1to2),addRegexToken("ss",match1to2,match2),addParseToken(["s","ss"],SECOND);var token,getSetSecond=makeGetSet("Seconds",!1);for(addFormatToken("S",0,0,function(){return~~(this.millisecond()/100)}),addFormatToken(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),addFormatToken(0,["SSS",3],0,"millisecond"),addFormatToken(0,["SSSS",4],0,function(){return 10*this.millisecond()}),addFormatToken(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),addFormatToken(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),addFormatToken(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),addFormatToken(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),addFormatToken(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),addUnitAlias("millisecond","ms"),addUnitPriority("millisecond",16),addRegexToken("S",match1to3,match1),addRegexToken("SS",match1to3,match2),addRegexToken("SSS",match1to3,match3),token="SSSS";token.length<=9;token+="S")addRegexToken(token,matchUnsigned);function parseMs(input,array){array[MILLISECOND]=toInt(1e3*("0."+input))}for(token="S";token.length<=9;token+="S")addParseToken(token,parseMs);var getSetMillisecond=makeGetSet("Milliseconds",!1);addFormatToken("z",0,0,"zoneAbbr"),addFormatToken("zz",0,0,"zoneName");var proto=Moment.prototype;function preParsePostFormat(string){return string}proto.add=add,proto.calendar=function(time,formats){var now=time||createLocal(),sod=cloneWithOffset(now,this).startOf("day"),format=hooks.calendarFormat(this,sod)||"sameElse",output=formats&&(isFunction(formats[format])?formats[format].call(this,now):formats[format]);return this.format(output||this.localeData().calendar(format,this,createLocal(now)))},proto.clone=function(){return new Moment(this)},proto.diff=function(input,units,asFloat){var that,zoneDelta,output;if(!this.isValid())return NaN;if(!(that=cloneWithOffset(input,this)).isValid())return NaN;switch(zoneDelta=6e4*(that.utcOffset()-this.utcOffset()),units=normalizeUnits(units)){case"year":output=monthDiff(this,that)/12;break;case"month":output=monthDiff(this,that);break;case"quarter":output=monthDiff(this,that)/3;break;case"second":output=(this-that)/1e3;break;case"minute":output=(this-that)/6e4;break;case"hour":output=(this-that)/36e5;break;case"day":output=(this-that-zoneDelta)/864e5;break;case"week":output=(this-that-zoneDelta)/6048e5;break;default:output=this-that}return asFloat?output:absFloor(output)},proto.endOf=function(units){return void 0===(units=normalizeUnits(units))||"millisecond"===units?this:("date"===units&&(units="day"),this.startOf(units).add(1,"isoWeek"===units?"week":units).subtract(1,"ms"))},proto.format=function(inputString){inputString||(inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat);var output=formatMoment(this,inputString);return this.localeData().postformat(output)},proto.from=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.fromNow=function(withoutSuffix){return this.from(createLocal(),withoutSuffix)},proto.to=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.toNow=function(withoutSuffix){return this.to(createLocal(),withoutSuffix)},proto.get=function(units){return isFunction(this[units=normalizeUnits(units)])?this[units]():this},proto.invalidAt=function(){return getParsingFlags(this).overflow},proto.isAfter=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()>localInput.valueOf():localInput.valueOf()<this.clone().startOf(units).valueOf())},proto.isBefore=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()<localInput.valueOf():this.clone().endOf(units).valueOf()<localInput.valueOf())},proto.isBetween=function(from,to,units,inclusivity){return("("===(inclusivity=inclusivity||"()")[0]?this.isAfter(from,units):!this.isBefore(from,units))&&(")"===inclusivity[1]?this.isBefore(to,units):!this.isAfter(to,units))},proto.isSame=function(input,units){var inputMs,localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(units||"millisecond"))?this.valueOf()===localInput.valueOf():(inputMs=localInput.valueOf(),this.clone().startOf(units).valueOf()<=inputMs&&inputMs<=this.clone().endOf(units).valueOf()))},proto.isSameOrAfter=function(input,units){return this.isSame(input,units)||this.isAfter(input,units)},proto.isSameOrBefore=function(input,units){return this.isSame(input,units)||this.isBefore(input,units)},proto.isValid=function(){return isValid(this)},proto.lang=lang,proto.locale=locale,proto.localeData=localeData,proto.max=prototypeMax,proto.min=prototypeMin,proto.parsingFlags=function(){return extend({},getParsingFlags(this))},proto.set=function(units,value){if("object"==typeof units)for(var prioritized=function(unitsObj){var units=[];for(var u in unitsObj)units.push({unit:u,priority:priorities[u]});return units.sort(function(a,b){return a.priority-b.priority}),units}(units=normalizeObjectUnits(units)),i=0;i<prioritized.length;i++)this[prioritized[i].unit](units[prioritized[i].unit]);else if(isFunction(this[units=normalizeUnits(units)]))return this[units](value);return this},proto.startOf=function(units){switch(units=normalizeUnits(units)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===units&&this.weekday(0),"isoWeek"===units&&this.isoWeekday(1),"quarter"===units&&this.month(3*Math.floor(this.month()/3)),this},proto.subtract=subtract,proto.toArray=function(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()]},proto.toObject=function(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()}},proto.toDate=function(){return new Date(this.valueOf())},proto.toISOString=function(keepOffset){if(!this.isValid())return null;var utc=!0!==keepOffset,m=utc?this.clone().utc():this;return m.year()<0||m.year()>9999?formatMoment(m,utc?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):isFunction(Date.prototype.toISOString)?utc?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",formatMoment(m,"Z")):formatMoment(m,utc?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},proto.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var func="moment",zone="";this.isLocal()||(func=0===this.utcOffset()?"moment.utc":"moment.parseZone",zone="Z");var prefix="["+func+'("]',year=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",suffix=zone+'[")]';return this.format(prefix+year+"-MM-DD[T]HH:mm:ss.SSS"+suffix)},proto.toJSON=function(){return this.isValid()?this.toISOString():null},proto.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},proto.unix=function(){return Math.floor(this.valueOf()/1e3)},proto.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},proto.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},proto.year=getSetYear,proto.isLeapYear=function(){return isLeapYear(this.year())},proto.weekYear=function(input){return getSetWeekYearHelper.call(this,input,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},proto.isoWeekYear=function(input){return getSetWeekYearHelper.call(this,input,this.isoWeek(),this.isoWeekday(),1,4)},proto.quarter=proto.quarters=function(input){return null==input?Math.ceil((this.month()+1)/3):this.month(3*(input-1)+this.month()%3)},proto.month=getSetMonth,proto.daysInMonth=function(){return daysInMonth(this.year(),this.month())},proto.week=proto.weeks=function(input){var week=this.localeData().week(this);return null==input?week:this.add(7*(input-week),"d")},proto.isoWeek=proto.isoWeeks=function(input){var week=weekOfYear(this,1,4).week;return null==input?week:this.add(7*(input-week),"d")},proto.weeksInYear=function(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)},proto.isoWeeksInYear=function(){return weeksInYear(this.year(),1,4)},proto.date=getSetDayOfMonth,proto.day=proto.days=function(input){if(!this.isValid())return null!=input?this:NaN;var day=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=input?(input=function(input,locale){return"string"!=typeof input?input:isNaN(input)?"number"==typeof(input=locale.weekdaysParse(input))?input:null:parseInt(input,10)}(input,this.localeData()),this.add(input-day,"d")):day},proto.weekday=function(input){if(!this.isValid())return null!=input?this:NaN;var weekday=(this.day()+7-this.localeData()._week.dow)%7;return null==input?weekday:this.add(input-weekday,"d")},proto.isoWeekday=function(input){if(!this.isValid())return null!=input?this:NaN;if(null!=input){var weekday=function(input,locale){return"string"==typeof input?locale.weekdaysParse(input)%7||7:isNaN(input)?null:input}(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7)}return this.day()||7},proto.dayOfYear=function(input){var dayOfYear=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==input?dayOfYear:this.add(input-dayOfYear,"d")},proto.hour=proto.hours=getSetHour,proto.minute=proto.minutes=getSetMinute,proto.second=proto.seconds=getSetSecond,proto.millisecond=proto.milliseconds=getSetMillisecond,proto.utcOffset=function(input,keepLocalTime,keepMinutes){var localAdjust,offset=this._offset||0;if(!this.isValid())return null!=input?this:NaN;if(null!=input){if("string"==typeof input){if(null===(input=offsetFromString(matchShortOffset,input)))return this}else Math.abs(input)<16&&!keepMinutes&&(input*=60);return!this._isUTC&&keepLocalTime&&(localAdjust=getDateOffset(this)),this._offset=input,this._isUTC=!0,null!=localAdjust&&this.add(localAdjust,"m"),offset!==input&&(!keepLocalTime||this._changeInProgress?addSubtract(this,createDuration(input-offset,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,hooks.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?offset:getDateOffset(this)},proto.utc=function(keepLocalTime){return this.utcOffset(0,keepLocalTime)},proto.local=function(keepLocalTime){return this._isUTC&&(this.utcOffset(0,keepLocalTime),this._isUTC=!1,keepLocalTime&&this.subtract(getDateOffset(this),"m")),this},proto.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var tZone=offsetFromString(matchOffset,this._i);null!=tZone?this.utcOffset(tZone):this.utcOffset(0,!0)}return this},proto.hasAlignedHourOffset=function(input){return!!this.isValid()&&(input=input?createLocal(input).utcOffset():0,(this.utcOffset()-input)%60==0)},proto.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},proto.isLocal=function(){return!!this.isValid()&&!this._isUTC},proto.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},proto.isUtc=isUtc,proto.isUTC=isUtc,proto.zoneAbbr=function(){return this._isUTC?"UTC":""},proto.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},proto.dates=deprecate("dates accessor is deprecated. Use date instead.",getSetDayOfMonth),proto.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth),proto.years=deprecate("years accessor is deprecated. Use year instead",getSetYear),proto.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(input,keepLocalTime){return null!=input?("string"!=typeof input&&(input=-input),this.utcOffset(input,keepLocalTime),this):-this.utcOffset()}),proto.isDSTShifted=deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!isUndefined(this._isDSTShifted))return this._isDSTShifted;var c={};if(copyConfig(c,this),(c=prepareConfig(c))._a){var other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var proto$1=Locale.prototype;function get$1(format,index,field,setter){var locale=getLocale(),utc=createUTC().set(setter,index);return locale[field](utc,format)}function listMonthsImpl(format,index,field){if(isNumber(format)&&(index=format,format=void 0),format=format||"",null!=index)return get$1(format,index,field,"month");var i,out=[];for(i=0;i<12;i++)out[i]=get$1(format,i,field,"month");return out}function listWeekdaysImpl(localeSorted,format,index,field){"boolean"==typeof localeSorted?(isNumber(format)&&(index=format,format=void 0),format=format||""):(index=format=localeSorted,localeSorted=!1,isNumber(format)&&(index=format,format=void 0),format=format||"");var i,locale=getLocale(),shift=localeSorted?locale._week.dow:0;if(null!=index)return get$1(format,(index+shift)%7,field,"day");var out=[];for(i=0;i<7;i++)out[i]=get$1(format,(i+shift)%7,field,"day");return out}proto$1.calendar=function(key,mom,now){var output=this._calendar[key]||this._calendar.sameElse;return isFunction(output)?output.call(mom,now):output},proto$1.longDateFormat=function(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];return format||!formatUpper?format:(this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)}),this._longDateFormat[key])},proto$1.invalidDate=function(){return this._invalidDate},proto$1.ordinal=function(number){return this._ordinal.replace("%d",number)},proto$1.preparse=preParsePostFormat,proto$1.postformat=preParsePostFormat,proto$1.relativeTime=function(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return isFunction(output)?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)},proto$1.pastFuture=function(diff,output){var format=this._relativeTime[diff>0?"future":"past"];return isFunction(format)?format(output):format.replace(/%s/i,output)},proto$1.set=function(config){var prop,i;for(i in config)isFunction(prop=config[i])?this[i]=prop:this["_"+i]=prop;this._config=config,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},proto$1.months=function(m,format){return m?isArray(this._months)?this._months[m.month()]:this._months[(this._months.isFormat||MONTHS_IN_FORMAT).test(format)?"format":"standalone"][m.month()]:isArray(this._months)?this._months:this._months.standalone},proto$1.monthsShort=function(m,format){return m?isArray(this._monthsShort)?this._monthsShort[m.month()]:this._monthsShort[MONTHS_IN_FORMAT.test(format)?"format":"standalone"][m.month()]:isArray(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},proto$1.monthsParse=function(monthName,format,strict){var i,mom,regex;if(this._monthsParseExact)return function(monthName,format,strict){var i,ii,mom,llc=monthName.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)mom=createUTC([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(mom,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(mom,"").toLocaleLowerCase();return strict?"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null}.call(this,monthName,format,strict);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(mom=createUTC([2e3,i]),strict&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(mom,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(mom,"").replace(".","")+"$","i")),strict||this._monthsParse[i]||(regex="^"+this.months(mom,"")+"|^"+this.monthsShort(mom,""),this._monthsParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"MMMM"===format&&this._longMonthsParse[i].test(monthName))return i;if(strict&&"MMM"===format&&this._shortMonthsParse[i].test(monthName))return i;if(!strict&&this._monthsParse[i].test(monthName))return i}},proto$1.monthsRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsStrictRegex:this._monthsRegex):(hasOwnProp(this,"_monthsRegex")||(this._monthsRegex=defaultMonthsRegex),this._monthsStrictRegex&&isStrict?this._monthsStrictRegex:this._monthsRegex)},proto$1.monthsShortRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsShortStrictRegex:this._monthsShortRegex):(hasOwnProp(this,"_monthsShortRegex")||(this._monthsShortRegex=defaultMonthsShortRegex),this._monthsShortStrictRegex&&isStrict?this._monthsShortStrictRegex:this._monthsShortRegex)},proto$1.week=function(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week},proto$1.firstDayOfYear=function(){return this._week.doy},proto$1.firstDayOfWeek=function(){return this._week.dow},proto$1.weekdays=function(m,format){return m?isArray(this._weekdays)?this._weekdays[m.day()]:this._weekdays[this._weekdays.isFormat.test(format)?"format":"standalone"][m.day()]:isArray(this._weekdays)?this._weekdays:this._weekdays.standalone},proto$1.weekdaysMin=function(m){return m?this._weekdaysMin[m.day()]:this._weekdaysMin},proto$1.weekdaysShort=function(m){return m?this._weekdaysShort[m.day()]:this._weekdaysShort},proto$1.weekdaysParse=function(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact)return function(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)mom=createUTC([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(mom,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(mom,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(mom,"").toLocaleLowerCase();return strict?"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null}.call(this,weekdayName,format,strict);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(mom=createUTC([2e3,1]).day(i),strict&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(mom,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(mom,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(mom,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(regex="^"+this.weekdays(mom,"")+"|^"+this.weekdaysShort(mom,"")+"|^"+this.weekdaysMin(mom,""),this._weekdaysParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"dddd"===format&&this._fullWeekdaysParse[i].test(weekdayName))return i;if(strict&&"ddd"===format&&this._shortWeekdaysParse[i].test(weekdayName))return i;if(strict&&"dd"===format&&this._minWeekdaysParse[i].test(weekdayName))return i;if(!strict&&this._weekdaysParse[i].test(weekdayName))return i}},proto$1.weekdaysRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysStrictRegex:this._weekdaysRegex):(hasOwnProp(this,"_weekdaysRegex")||(this._weekdaysRegex=defaultWeekdaysRegex),this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex)},proto$1.weekdaysShortRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(hasOwnProp(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=defaultWeekdaysShortRegex),this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},proto$1.weekdaysMinRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(hasOwnProp(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=defaultWeekdaysMinRegex),this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},proto$1.isPM=function(input){return"p"===(input+"").toLowerCase().charAt(0)},proto$1.meridiem=function(hours,minutes,isLower){return hours>11?isLower?"pm":"PM":isLower?"am":"AM"},getSetGlobalLocale("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10;return number+(1===toInt(number%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th")}}),hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",getSetGlobalLocale),hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",getLocale);var mathAbs=Math.abs;function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);return duration._milliseconds+=direction*other._milliseconds,duration._days+=direction*other._days,duration._months+=direction*other._months,duration._bubble()}function absCeil(number){return number<0?Math.floor(number):Math.ceil(number)}function daysToMonths(days){return 4800*days/146097}function monthsToDays(months){return 146097*months/4800}function makeAs(alias){return function(){return this.as(alias)}}var asMilliseconds=makeAs("ms"),asSeconds=makeAs("s"),asMinutes=makeAs("m"),asHours=makeAs("h"),asDays=makeAs("d"),asWeeks=makeAs("w"),asMonths=makeAs("M"),asYears=makeAs("y");function makeGetter(name){return function(){return this.isValid()?this._data[name]:NaN}}var milliseconds=makeGetter("milliseconds"),seconds=makeGetter("seconds"),minutes=makeGetter("minutes"),hours=makeGetter("hours"),days=makeGetter("days"),months=makeGetter("months"),years=makeGetter("years");var round=Math.round,thresholds={ss:44,s:45,m:45,h:22,d:26,M:11};var abs$1=Math.abs;function sign(x){return(x>0)-(x<0)||+x}function toISOString$1(){if(!this.isValid())return this.localeData().invalidDate();var minutes,hours,seconds=abs$1(this._milliseconds)/1e3,days=abs$1(this._days),months=abs$1(this._months);hours=absFloor((minutes=absFloor(seconds/60))/60),seconds%=60,minutes%=60;var Y=absFloor(months/12),M=months%=12,D=days,h=hours,m=minutes,s=seconds?seconds.toFixed(3).replace(/\.?0+$/,""):"",total=this.asSeconds();if(!total)return"P0D";var totalSign=total<0?"-":"",ymSign=sign(this._months)!==sign(total)?"-":"",daysSign=sign(this._days)!==sign(total)?"-":"",hmsSign=sign(this._milliseconds)!==sign(total)?"-":"";return totalSign+"P"+(Y?ymSign+Y+"Y":"")+(M?ymSign+M+"M":"")+(D?daysSign+D+"D":"")+(h||m||s?"T":"")+(h?hmsSign+h+"H":"")+(m?hmsSign+m+"M":"")+(s?hmsSign+s+"S":"")}var proto$2=Duration.prototype;return proto$2.isValid=function(){return this._isValid},proto$2.abs=function(){var data=this._data;return this._milliseconds=mathAbs(this._milliseconds),this._days=mathAbs(this._days),this._months=mathAbs(this._months),data.milliseconds=mathAbs(data.milliseconds),data.seconds=mathAbs(data.seconds),data.minutes=mathAbs(data.minutes),data.hours=mathAbs(data.hours),data.months=mathAbs(data.months),data.years=mathAbs(data.years),this},proto$2.add=function(input,value){return addSubtract$1(this,input,value,1)},proto$2.subtract=function(input,value){return addSubtract$1(this,input,value,-1)},proto$2.as=function(units){if(!this.isValid())return NaN;var days,months,milliseconds=this._milliseconds;if("month"===(units=normalizeUnits(units))||"year"===units)return days=this._days+milliseconds/864e5,months=this._months+daysToMonths(days),"month"===units?months:months/12;switch(days=this._days+Math.round(monthsToDays(this._months)),units){case"week":return days/7+milliseconds/6048e5;case"day":return days+milliseconds/864e5;case"hour":return 24*days+milliseconds/36e5;case"minute":return 1440*days+milliseconds/6e4;case"second":return 86400*days+milliseconds/1e3;case"millisecond":return Math.floor(864e5*days)+milliseconds;default:throw new Error("Unknown unit "+units)}},proto$2.asMilliseconds=asMilliseconds,proto$2.asSeconds=asSeconds,proto$2.asMinutes=asMinutes,proto$2.asHours=asHours,proto$2.asDays=asDays,proto$2.asWeeks=asWeeks,proto$2.asMonths=asMonths,proto$2.asYears=asYears,proto$2.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*toInt(this._months/12):NaN},proto$2._bubble=function(){var seconds,minutes,hours,years,monthsFromDays,milliseconds=this._milliseconds,days=this._days,months=this._months,data=this._data;return milliseconds>=0&&days>=0&&months>=0||milliseconds<=0&&days<=0&&months<=0||(milliseconds+=864e5*absCeil(monthsToDays(months)+days),days=0,months=0),data.milliseconds=milliseconds%1e3,seconds=absFloor(milliseconds/1e3),data.seconds=seconds%60,minutes=absFloor(seconds/60),data.minutes=minutes%60,hours=absFloor(minutes/60),data.hours=hours%24,months+=monthsFromDays=absFloor(daysToMonths(days+=absFloor(hours/24))),days-=absCeil(monthsToDays(monthsFromDays)),years=absFloor(months/12),months%=12,data.days=days,data.months=months,data.years=years,this},proto$2.clone=function(){return createDuration(this)},proto$2.get=function(units){return units=normalizeUnits(units),this.isValid()?this[units+"s"]():NaN},proto$2.milliseconds=milliseconds,proto$2.seconds=seconds,proto$2.minutes=minutes,proto$2.hours=hours,proto$2.days=days,proto$2.weeks=function(){return absFloor(this.days()/7)},proto$2.months=months,proto$2.years=years,proto$2.humanize=function(withSuffix){if(!this.isValid())return this.localeData().invalidDate();var locale=this.localeData(),output=function(posNegDuration,withoutSuffix,locale){var duration=createDuration(posNegDuration).abs(),seconds=round(duration.as("s")),minutes=round(duration.as("m")),hours=round(duration.as("h")),days=round(duration.as("d")),months=round(duration.as("M")),years=round(duration.as("y")),a=seconds<=thresholds.ss&&["s",seconds]||seconds<thresholds.s&&["ss",seconds]||minutes<=1&&["m"]||minutes<thresholds.m&&["mm",minutes]||hours<=1&&["h"]||hours<thresholds.h&&["hh",hours]||days<=1&&["d"]||days<thresholds.d&&["dd",days]||months<=1&&["M"]||months<thresholds.M&&["MM",months]||years<=1&&["y"]||["yy",years];return a[2]=withoutSuffix,a[3]=+posNegDuration>0,a[4]=locale,function(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture)}.apply(null,a)}(this,!withSuffix,locale);return withSuffix&&(output=locale.pastFuture(+this,output)),locale.postformat(output)},proto$2.toISOString=toISOString$1,proto$2.toString=toISOString$1,proto$2.toJSON=toISOString$1,proto$2.locale=locale,proto$2.localeData=localeData,proto$2.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",toISOString$1),proto$2.lang=lang,addFormatToken("X",0,0,"unix"),addFormatToken("x",0,0,"valueOf"),addRegexToken("x",matchSigned),addRegexToken("X",/[+-]?\d+(\.\d{1,3})?/),addParseToken("X",function(input,array,config){config._d=new Date(1e3*parseFloat(input,10))}),addParseToken("x",function(input,array,config){config._d=new Date(toInt(input))}),hooks.version="2.22.2",hookCallback=createLocal,hooks.fn=proto,hooks.min=function(){return pickBy("isBefore",[].slice.call(arguments,0))},hooks.max=function(){return pickBy("isAfter",[].slice.call(arguments,0))},hooks.now=function(){return Date.now?Date.now():+new Date},hooks.utc=createUTC,hooks.unix=function(input){return createLocal(1e3*input)},hooks.months=function(format,index){return listMonthsImpl(format,index,"months")},hooks.isDate=isDate,hooks.locale=getSetGlobalLocale,hooks.invalid=createInvalid,hooks.duration=createDuration,hooks.isMoment=isMoment,hooks.weekdays=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdays")},hooks.parseZone=function(){return createLocal.apply(null,arguments).parseZone()},hooks.localeData=getLocale,hooks.isDuration=isDuration,hooks.monthsShort=function(format,index){return listMonthsImpl(format,index,"monthsShort")},hooks.weekdaysMin=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysMin")},hooks.defineLocale=defineLocale,hooks.updateLocale=function(name,config){if(null!=config){var locale,tmpLocale,parentConfig=baseConfig;null!=(tmpLocale=loadLocale(name))&&(parentConfig=tmpLocale._config),(locale=new Locale(config=mergeConfigs(parentConfig,config))).parentLocale=locales[name],locales[name]=locale,getSetGlobalLocale(name)}else null!=locales[name]&&(null!=locales[name].parentLocale?locales[name]=locales[name].parentLocale:null!=locales[name]&&delete locales[name]);return locales[name]},hooks.locales=function(){return keys(locales)},hooks.weekdaysShort=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysShort")},hooks.normalizeUnits=normalizeUnits,hooks.relativeTimeRounding=function(roundingFunction){return void 0===roundingFunction?round:"function"==typeof roundingFunction&&(round=roundingFunction,!0)},hooks.relativeTimeThreshold=function(threshold,limit){return void 0!==thresholds[threshold]&&(void 0===limit?thresholds[threshold]:(thresholds[threshold]=limit,"s"===threshold&&(thresholds.ss=limit-1),!0))},hooks.calendarFormat=function(myMoment,now){var diff=myMoment.diff(now,"days",!0);return diff<-6?"sameElse":diff<-1?"lastWeek":diff<0?"lastDay":diff<1?"sameDay":diff<2?"nextDay":diff<7?"nextWeek":"sameElse"},hooks.prototype=proto,hooks.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},hooks}),function(root,factory){"function"==typeof define&&define.amd?define(["moment"],factory):"object"==typeof module&&module.exports?module.exports=factory(require("moment")):factory(root.moment)}(this,function(moment){var cachedGuess,zones={},links={},names={},guesses={},momentVersion=moment.version.split("."),major=+momentVersion[0],minor=+momentVersion[1];function charCodeToInt(charCode){return charCode>96?charCode-87:charCode>64?charCode-29:charCode-48}function unpackBase60(string){var i=0,parts=string.split("."),whole=parts[0],fractional=parts[1]||"",multiplier=1,out=0,sign=1;for(45===string.charCodeAt(0)&&(i=1,sign=-1);i<whole.length;i++)out=60*out+charCodeToInt(whole.charCodeAt(i));for(i=0;i<fractional.length;i++)multiplier/=60,out+=charCodeToInt(fractional.charCodeAt(i))*multiplier;return out*sign}function arrayToInt(array){for(var i=0;i<array.length;i++)array[i]=unpackBase60(array[i])}function mapIndices(source,indices){var i,out=[];for(i=0;i<indices.length;i++)out[i]=source[indices[i]];return out}function unpack(string){var data=string.split("|"),offsets=data[2].split(" "),indices=data[3].split(""),untils=data[4].split(" ");return arrayToInt(offsets),arrayToInt(indices),arrayToInt(untils),function(array,length){for(var i=0;i<length;i++)array[i]=Math.round((array[i-1]||0)+6e4*array[i]);array[length-1]=1/0}(untils,indices.length),{name:data[0],abbrs:mapIndices(data[1].split(" "),indices),offsets:mapIndices(offsets,indices),untils:untils,population:0|data[5]}}function Zone(packedString){packedString&&this._set(unpack(packedString))}function OffsetAt(at){var timeString=at.toTimeString(),abbr=timeString.match(/\([a-z ]+\)/i);"GMT"===(abbr=abbr&&abbr[0]?(abbr=abbr[0].match(/[A-Z]/g))?abbr.join(""):void 0:(abbr=timeString.match(/[A-Z]{3,5}/g))?abbr[0]:void 0)&&(abbr=void 0),this.at=+at,this.abbr=abbr,this.offset=at.getTimezoneOffset()}function ZoneScore(zone){this.zone=zone,this.offsetScore=0,this.abbrScore=0}function findChange(low,high){for(var mid,diff;diff=6e4*((high.at-low.at)/12e4|0);)(mid=new OffsetAt(new Date(low.at+diff))).offset===low.offset?low=mid:high=mid;return low}function sortZoneScores(a,b){return a.offsetScore!==b.offsetScore?a.offsetScore-b.offsetScore:a.abbrScore!==b.abbrScore?a.abbrScore-b.abbrScore:b.zone.population-a.zone.population}function addToGuesses(name,offsets){var i,offset;for(arrayToInt(offsets),i=0;i<offsets.length;i++)offset=offsets[i],guesses[offset]=guesses[offset]||{},guesses[offset][name]=!0}function guessesForUserOffsets(offsets){var i,j,guessesOffset,offsetsLength=offsets.length,filteredGuesses={},out=[];for(i=0;i<offsetsLength;i++)for(j in guessesOffset=guesses[offsets[i].offset]||{})guessesOffset.hasOwnProperty(j)&&(filteredGuesses[j]=!0);for(i in filteredGuesses)filteredGuesses.hasOwnProperty(i)&&out.push(names[i]);return out}function rebuildGuess(){try{var intlName=Intl.DateTimeFormat().resolvedOptions().timeZone;if(intlName&&intlName.length>3){var name=names[normalizeName(intlName)];if(name)return name;logError("Moment Timezone found "+intlName+" from the Intl api, but did not have that data loaded.")}}catch(e){}var zoneScore,i,j,offsets=function(){var change,next,i,startYear=(new Date).getFullYear()-2,last=new OffsetAt(new Date(startYear,0,1)),offsets=[last];for(i=1;i<48;i++)(next=new OffsetAt(new Date(startYear,i,1))).offset!==last.offset&&(change=findChange(last,next),offsets.push(change),offsets.push(new OffsetAt(new Date(change.at+6e4)))),last=next;for(i=0;i<4;i++)offsets.push(new OffsetAt(new Date(startYear+i,0,1))),offsets.push(new OffsetAt(new Date(startYear+i,6,1)));return offsets}(),offsetsLength=offsets.length,guesses=guessesForUserOffsets(offsets),zoneScores=[];for(i=0;i<guesses.length;i++){for(zoneScore=new ZoneScore(getZone(guesses[i]),offsetsLength),j=0;j<offsetsLength;j++)zoneScore.scoreOffsetAt(offsets[j]);zoneScores.push(zoneScore)}return zoneScores.sort(sortZoneScores),zoneScores.length>0?zoneScores[0].zone.name:void 0}function normalizeName(name){return(name||"").toLowerCase().replace(/\//g,"_")}function addZone(packed){var i,name,split,normalized;for("string"==typeof packed&&(packed=[packed]),i=0;i<packed.length;i++)normalized=normalizeName(name=(split=packed[i].split("|"))[0]),zones[normalized]=packed[i],names[normalized]=name,addToGuesses(normalized,split[2].split(" "))}function getZone(name,caller){name=normalizeName(name);var link,zone=zones[name];return zone instanceof Zone?zone:"string"==typeof zone?(zone=new Zone(zone),zones[name]=zone,zone):links[name]&&caller!==getZone&&(link=getZone(links[name],getZone))?((zone=zones[name]=new Zone)._set(link),zone.name=names[name],zone):null}function addLink(aliases){var i,alias,normal0,normal1;for("string"==typeof aliases&&(aliases=[aliases]),i=0;i<aliases.length;i++)normal0=normalizeName((alias=aliases[i].split("|"))[0]),normal1=normalizeName(alias[1]),links[normal0]=normal1,names[normal0]=alias[0],links[normal1]=normal0,names[normal1]=alias[1]}function loadData(data){addZone(data.zones),addLink(data.links),tz.dataVersion=data.version}function needsOffset(m){var isUnixTimestamp="X"===m._f||"x"===m._f;return!(!m._a||void 0!==m._tzm||isUnixTimestamp)}function logError(message){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(message)}function tz(input){var args=Array.prototype.slice.call(arguments,0,-1),name=arguments[arguments.length-1],zone=getZone(name),out=moment.utc.apply(null,args);return zone&&!moment.isMoment(input)&&needsOffset(out)&&out.add(zone.parse(out),"minutes"),out.tz(name),out}(major<2||2===major&&minor<6)&&logError("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+moment.version+". See momentjs.com"),Zone.prototype={_set:function(unpacked){this.name=unpacked.name,this.abbrs=unpacked.abbrs,this.untils=unpacked.untils,this.offsets=unpacked.offsets,this.population=unpacked.population},_index:function(timestamp){var i,target=+timestamp,untils=this.untils;for(i=0;i<untils.length;i++)if(target<untils[i])return i},parse:function(timestamp){var offset,offsetNext,offsetPrev,i,target=+timestamp,offsets=this.offsets,untils=this.untils,max=untils.length-1;for(i=0;i<max;i++)if(offset=offsets[i],offsetNext=offsets[i+1],offsetPrev=offsets[i?i-1:i],offset<offsetNext&&tz.moveAmbiguousForward?offset=offsetNext:offset>offsetPrev&&tz.moveInvalidForward&&(offset=offsetPrev),target<untils[i]-6e4*offset)return offsets[i];return offsets[max]},abbr:function(mom){return this.abbrs[this._index(mom)]},offset:function(mom){return logError("zone.offset has been deprecated in favor of zone.utcOffset"),this.offsets[this._index(mom)]},utcOffset:function(mom){return this.offsets[this._index(mom)]}},ZoneScore.prototype.scoreOffsetAt=function(offsetAt){this.offsetScore+=Math.abs(this.zone.utcOffset(offsetAt.at)-offsetAt.offset),this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g,"")!==offsetAt.abbr&&this.abbrScore++},tz.version="0.5.17",tz.dataVersion="",tz._zones=zones,tz._links=links,tz._names=names,tz.add=addZone,tz.link=addLink,tz.load=loadData,tz.zone=getZone,tz.zoneExists=function zoneExists(name){return zoneExists.didShowError||(zoneExists.didShowError=!0,logError("moment.tz.zoneExists('"+name+"') has been deprecated in favor of !moment.tz.zone('"+name+"')")),!!getZone(name)},tz.guess=function(ignoreCache){return cachedGuess&&!ignoreCache||(cachedGuess=rebuildGuess()),cachedGuess},tz.names=function(){var i,out=[];for(i in names)names.hasOwnProperty(i)&&(zones[i]||zones[links[i]])&&names[i]&&out.push(names[i]);return out.sort()},tz.Zone=Zone,tz.unpack=unpack,tz.unpackBase60=unpackBase60,tz.needsOffset=needsOffset,tz.moveInvalidForward=!0,tz.moveAmbiguousForward=!1;var old,fn=moment.fn;function abbrWrap(old){return function(){return this._z?this._z.abbr(this):old.call(this)}}moment.tz=tz,moment.defaultZone=null,moment.updateOffset=function(mom,keepTime){var offset,zone=moment.defaultZone;void 0===mom._z&&(zone&&needsOffset(mom)&&!mom._isUTC&&(mom._d=moment.utc(mom._a)._d,mom.utc().add(zone.parse(mom),"minutes")),mom._z=zone),mom._z&&(offset=mom._z.utcOffset(mom),Math.abs(offset)<16&&(offset/=60),void 0!==mom.utcOffset?mom.utcOffset(-offset,keepTime):mom.zone(offset,keepTime))},fn.tz=function(name,keepTime){return name?(this._z=getZone(name),this._z?moment.updateOffset(this,keepTime):logError("Moment Timezone has no data for "+name+". See http://momentjs.com/timezone/docs/#/data-loading/."),this):this._z?this._z.name:void 0},fn.zoneName=abbrWrap(fn.zoneName),fn.zoneAbbr=abbrWrap(fn.zoneAbbr),fn.utc=(old=fn.utc,function(){return this._z=null,old.apply(this,arguments)}),moment.tz.setDefault=function(name){return(major<2||2===major&&minor<9)&&logError("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+moment.version+"."),moment.defaultZone=name?getZone(name):null,moment};var momentProperties=moment.momentProperties;return"[object Array]"===Object.prototype.toString.call(momentProperties)?(momentProperties.push("_z"),momentProperties.push("_a")):momentProperties&&(momentProperties._z=null),loadData({version:"2018e",zones:["Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5","Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5","Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5","Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5","Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6","Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4","Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5","Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6","Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|32e5","Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3","Africa/El_Aaiun|LMT -01 WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|20e4","Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5","Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|01212121212121212121212121212121213|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0","Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5","Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5","Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5","Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|012|-2le00 4i6N0","Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5","Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5","Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3","America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4","America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0","America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0","America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0","America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0","America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0","America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0","America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0","America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4","America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5","America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2","America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3","America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5","America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4","America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5","America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3","America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2","America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2","America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5","America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4","America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2","America/Campo_Grande|LMT -04 -03|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|77e4","America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5","America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3","America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5","America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5","America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2","America/Cuiaba|LMT -04 -03|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|54e4","America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8","America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3","America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2","America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|012342525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 XQp0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5","America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5","America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3","America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5","America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5","America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5","America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|01212121212121212121212121212121212121212121212121212121212121212121212121232121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5","America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5","America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4","America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4","America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2","America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2","America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4","America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3","America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5","America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6","America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4","America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5","America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5","America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4","America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4","America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4","America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2","America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5","America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|0120303030303030303030303030303030454545454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3","America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5","America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5","America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4","America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2","America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2","America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2","America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4","America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5","America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4","America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4","America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5","America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0","America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842","America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2","America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5","America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4","America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229","America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4","America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5","America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5","America/Sao_Paulo|LMT -03 -02|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|20e6","America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452","America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2","America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3","America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5","America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656","America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4","America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642","America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","Antarctica/Casey|-00 +08 +11|0 -80 -b0|01212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10|10","Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70","Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80","Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1","Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60","Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","Antarctica/Rothera|-00 -03|0 30|01|gOo0|130","Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20","Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25","Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4","Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5","Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5","Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5","Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3","Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4","Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4","Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4","Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0","Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5","Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4","Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6","Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4","Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4","Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6","Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3","Asia/Shanghai|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6","Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5","Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6","Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5","Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4","Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5","Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4","Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|18e5","Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|25e4","Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5","Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5","Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6","Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4","Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5","Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4","Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6","Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5","Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5","Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5","Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4","Asia/Macau|LMT CST CDT|-7y.k -80 -90|012121212121212121212121212121212121212121|-2le80 1XO3u 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0|57e4","Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5","Asia/Manila|+08 +09|-80 -90|010101010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6","Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4","Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4","Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5","Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4","Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4","Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BAu|29e5","Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|0123232323232323232323232323232323232323232323|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|73e4","Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5","Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4","Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -9u -a0|0123141414141414135353|-2um8r.Q 97XV.Q 1m1zu kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6","Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2","Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5","Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5","Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5","Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3","Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rb0 1ld0 14n0 1zd0 On0 1zd0 On0|38e6","Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5","Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3","Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4","Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3","Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4","Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4","Atlantic/South_Georgia|-02|20|0||30","Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2","Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5","Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3","Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746","Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4","Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368","Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4","Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347","Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10","Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5","Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5","CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2","CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","EST|EST|50|0|","EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Etc/GMT-0|GMT|0|0|","Etc/GMT-1|+01|-10|0|","Pacific/Port_Moresby|+10|-a0|0||25e4","Pacific/Pohnpei|+11|-b0|0||34e3","Pacific/Tarawa|+12|-c0|0||29e3","Etc/GMT-13|+13|-d0|0|","Etc/GMT-14|+14|-e0|0|","Etc/GMT-2|+02|-20|0|","Etc/GMT-3|+03|-30|0|","Etc/GMT-4|+04|-40|0|","Etc/GMT-5|+05|-50|0|","Etc/GMT-6|+06|-60|0|","Indian/Christmas|+07|-70|0||21e2","Etc/GMT-8|+08|-80|0|","Pacific/Palau|+09|-90|0||21e3","Etc/GMT+1|-01|10|0|","Etc/GMT+10|-10|a0|0|","Etc/GMT+11|-11|b0|0|","Etc/GMT+12|-12|c0|0|","Etc/GMT+3|-03|30|0|","Etc/GMT+4|-04|40|0|","Etc/GMT+5|-05|50|0|","Etc/GMT+6|-06|60|0|","Etc/GMT+7|-07|70|0|","Etc/GMT+8|-08|80|0|","Etc/GMT+9|-09|90|0|","Etc/UCT|UCT|0|0|","Etc/UTC|UTC|0|0|","Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5","Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3","Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5","Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5","Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5","Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5","Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4","Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3","Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4","Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5","Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4","Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5","Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5","Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3","Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6","Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4","Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5","Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5","Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810","Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5","Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4","Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4","Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5","Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|01232323232323232121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4","HST|HST|a0|0|","Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2","Indian/Cocos|+0630|-6u|0||596","Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130","Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3","Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4","Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4","Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4","Pacific/Kwajalein|+11 -12 +12|-b0 c0 -c0|012|-AX0 W9X0|14e3","MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","MST|MST|70|0|","MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4","Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3","Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1","Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483","Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0|88e4","Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3","Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125","Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4","Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0|17e4","Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0|37e4","Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2","Pacific/Kosrae|+11 +12|-b0 -c0|010|-AX0 1bdz0|66e2","Pacific/Majuro|+11 +12|-b0 -c0|01|-AX0|28e3","Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2","Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2","Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu|10e3","Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2","Pacific/Norfolk|+1112 +1130 +1230 +11|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4","Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3","Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56","Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3","Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4","Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3","PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00"],links:["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/St_Helena","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Atikokan|America/Coral_Harbour","America/Chicago|US/Central","America/Curacao|America/Aruba","America/Curacao|America/Kralendijk","America/Curacao|America/Lower_Princes","America/Denver|America/Shiprock","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|Canada/Mountain","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Panama|America/Cayman","America/Phoenix|US/Arizona","America/Port_of_Spain|America/Anguilla","America/Port_of_Spain|America/Antigua","America/Port_of_Spain|America/Dominica","America/Port_of_Spain|America/Grenada","America/Port_of_Spain|America/Guadeloupe","America/Port_of_Spain|America/Marigot","America/Port_of_Spain|America/Montserrat","America/Port_of_Spain|America/St_Barthelemy","America/Port_of_Spain|America/St_Kitts","America/Port_of_Spain|America/St_Lucia","America/Port_of_Spain|America/St_Thomas","America/Port_of_Spain|America/St_Vincent","America/Port_of_Spain|America/Tortola","America/Port_of_Spain|America/Virgin","America/Regina|Canada/Saskatchewan","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Tijuana|America/Ensenada","America/Tijuana|America/Santa_Isabel","America/Tijuana|Mexico/BajaNorte","America/Toronto|America/Montreal","America/Toronto|Canada/Eastern","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|Canada/Central","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Singapore","Asia/Macau|Asia/Macao","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Qatar|Asia/Bahrain","Asia/Rangoon|Asia/Yangon","Asia/Riyadh|Asia/Aden","Asia/Riyadh|Asia/Kuwait","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|PRC","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Atlantic/Faroe|Atlantic/Faeroe","Atlantic/Reykjavik|Iceland","Atlantic/South_Georgia|Etc/GMT+2","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Tasmania","Australia/Lord_Howe|Australia/LHI","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/NSW","Etc/GMT-0|Etc/GMT","Etc/GMT-0|Etc/GMT+0","Etc/GMT-0|Etc/GMT0","Etc/GMT-0|Etc/Greenwich","Etc/GMT-0|GMT","Etc/GMT-0|GMT+0","Etc/GMT-0|GMT-0","Etc/GMT-0|GMT0","Etc/GMT-0|Greenwich","Etc/UCT|UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Helsinki|Europe/Mariehamn","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Portugal","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Oslo|Arctic/Longyearbyen","Europe/Oslo|Atlantic/Jan_Mayen","Europe/Prague|Europe/Bratislava","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Europe/Zurich|Europe/Busingen","Europe/Zurich|Europe/Vaduz","Indian/Christmas|Etc/GMT-7","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kwajalein|Kwajalein","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Palau|Etc/GMT-9","Pacific/Pohnpei|Etc/GMT-11","Pacific/Pohnpei|Pacific/Ponape","Pacific/Port_Moresby|Etc/GMT-10","Pacific/Port_Moresby|Pacific/Chuuk","Pacific/Port_Moresby|Pacific/Truk","Pacific/Port_Moresby|Pacific/Yap","Pacific/Tarawa|Etc/GMT-12","Pacific/Tarawa|Pacific/Funafuti","Pacific/Tarawa|Pacific/Wake","Pacific/Tarawa|Pacific/Wallis"]}),moment}),function(global,factory){"object"==typeof module&&"object"==typeof module.exports?module.exports=global.document?factory(global,!0):function(w){if(!w.document)throw new Error("jQuery requires a window with a document");return factory(w)}:factory(global)}("undefined"!=typeof window?window:this,function(window,noGlobal){var arr=[],document=window.document,getProto=Object.getPrototypeOf,slice=arr.slice,concat=arr.concat,push=arr.push,indexOf=arr.indexOf,class2type={},toString=class2type.toString,hasOwn=class2type.hasOwnProperty,fnToString=hasOwn.toString,ObjectFunctionString=fnToString.call(Object),support={},isFunction=function(obj){return"function"==typeof obj&&"number"!=typeof obj.nodeType},isWindow=function(obj){return null!=obj&&obj===obj.window},preservedScriptAttributes={type:!0,src:!0,noModule:!0};function DOMEval(code,doc,node){var i,script=(doc=doc||document).createElement("script");if(script.text=code,node)for(i in preservedScriptAttributes)node[i]&&(script[i]=node[i]);doc.head.appendChild(script).parentNode.removeChild(script)}function toType(obj){return null==obj?obj+"":"object"==typeof obj||"function"==typeof obj?class2type[toString.call(obj)]||"object":typeof obj}var jQuery=function(selector,context){return new jQuery.fn.init(selector,context)},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=toType(obj);return!isFunction(obj)&&!isWindow(obj)&&("array"===type||0===length||"number"==typeof length&&length>0&&length-1 in obj)}jQuery.fn=jQuery.prototype={jquery:"3.3.1",constructor:jQuery,length:0,toArray:function(){return slice.call(this)},get:function(num){return null==num?slice.call(this):num<0?this[num+this.length]:this[num]},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);return ret.prevObject=this,ret},each:function(callback){return jQuery.each(this,callback)},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},slice:function(){return this.pushStack(slice.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[])},end:function(){return this.prevObject||this.constructor()},push:push,sort:arr.sort,splice:arr.splice},jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=!1;for("boolean"==typeof target&&(deep=target,target=arguments[i]||{},i++),"object"==typeof target||isFunction(target)||(target={}),i===length&&(target=this,i--);i<length;i++)if(null!=(options=arguments[i]))for(name in options)src=target[name],target!==(copy=options[name])&&(deep&©&&(jQuery.isPlainObject(copy)||(copyIsArray=Array.isArray(copy)))?(copyIsArray?(copyIsArray=!1,clone=src&&Array.isArray(src)?src:[]):clone=src&&jQuery.isPlainObject(src)?src:{},target[name]=jQuery.extend(deep,clone,copy)):void 0!==copy&&(target[name]=copy));return target},jQuery.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(msg){throw new Error(msg)},noop:function(){},isPlainObject:function(obj){var proto,Ctor;return!(!obj||"[object Object]"!==toString.call(obj))&&(!(proto=getProto(obj))||"function"==typeof(Ctor=hasOwn.call(proto,"constructor")&&proto.constructor)&&fnToString.call(Ctor)===ObjectFunctionString)},isEmptyObject:function(obj){var name;for(name in obj)return!1;return!0},globalEval:function(code){DOMEval(code)},each:function(obj,callback){var length,i=0;if(isArrayLike(obj))for(length=obj.length;i<length&&!1!==callback.call(obj[i],i,obj[i]);i++);else for(i in obj)if(!1===callback.call(obj[i],i,obj[i]))break;return obj},trim:function(text){return null==text?"":(text+"").replace(rtrim,"")},makeArray:function(arr,results){var ret=results||[];return null!=arr&&(isArrayLike(Object(arr))?jQuery.merge(ret,"string"==typeof arr?[arr]:arr):push.call(ret,arr)),ret},inArray:function(elem,arr,i){return null==arr?-1:indexOf.call(arr,elem,i)},merge:function(first,second){for(var len=+second.length,j=0,i=first.length;j<len;j++)first[i++]=second[j];return first.length=i,first},grep:function(elems,callback,invert){for(var matches=[],i=0,length=elems.length,callbackExpect=!invert;i<length;i++)!callback(elems[i],i)!==callbackExpect&&matches.push(elems[i]);return matches},map:function(elems,callback,arg){var length,value,i=0,ret=[];if(isArrayLike(elems))for(length=elems.length;i<length;i++)null!=(value=callback(elems[i],i,arg))&&ret.push(value);else for(i in elems)null!=(value=callback(elems[i],i,arg))&&ret.push(value);return concat.apply([],ret)},guid:1,support:support}),"function"==typeof Symbol&&(jQuery.fn[Symbol.iterator]=arr[Symbol.iterator]),jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});var Sizzle=function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){return a===b&&(hasDuplicate=!0),0},hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){for(var i=0,len=list.length;i<len;i++)if(list[i]===elem)return i;return-1},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",identifier="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+identifier+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|.*)\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!=high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,1023&high|56320)},rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(ch,asCodePoint){return asCodePoint?"\0"===ch?"�":ch.slice(0,-1)+"\\"+ch.charCodeAt(ch.length-1).toString(16)+" ":"\\"+ch},unloadHandler=function(){setDocument()},disabledAncestor=addCombinator(function(elem){return!0===elem.disabled&&("form"in elem||"label"in elem)},{dir:"parentNode",next:"legend"});try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes),arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){for(var j=target.length,i=0;target[j++]=els[i++];);target.length=j-1}}}function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;if(results=results||[],"string"!=typeof selector||!selector||1!==nodeType&&9!==nodeType&&11!==nodeType)return results;if(!seed&&((context?context.ownerDocument||context:preferredDoc)!==document&&setDocument(context),context=context||document,documentIsHTML)){if(11!==nodeType&&(match=rquickExpr.exec(selector)))if(m=match[1]){if(9===nodeType){if(!(elem=context.getElementById(m)))return results;if(elem.id===m)return results.push(elem),results}else if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m)return results.push(elem),results}else{if(match[2])return push.apply(results,context.getElementsByTagName(selector)),results;if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName)return push.apply(results,context.getElementsByClassName(m)),results}if(support.qsa&&!compilerCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){if(1!==nodeType)newContext=context,newSelector=selector;else if("object"!==context.nodeName.toLowerCase()){for((nid=context.getAttribute("id"))?nid=nid.replace(rcssescape,fcssescape):context.setAttribute("id",nid=expando),i=(groups=tokenize(selector)).length;i--;)groups[i]="#"+nid+" "+toSelector(groups[i]);newSelector=groups.join(","),newContext=rsibling.test(selector)&&testContext(context.parentNode)||context}if(newSelector)try{return push.apply(results,newContext.querySelectorAll(newSelector)),results}catch(qsaError){}finally{nid===expando&&context.removeAttribute("id")}}}return select(selector.replace(rtrim,"$1"),context,results,seed)}function createCache(){var keys=[];return function cache(key,value){return keys.push(key+" ")>Expr.cacheLength&&delete cache[keys.shift()],cache[key+" "]=value}}function markFunction(fn){return fn[expando]=!0,fn}function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el)}catch(e){return!1}finally{el.parentNode&&el.parentNode.removeChild(el),el=null}}function addHandle(attrs,handler){for(var arr=attrs.split("|"),i=arr.length;i--;)Expr.attrHandle[arr[i]]=handler}function siblingCheck(a,b){var cur=b&&a,diff=cur&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(diff)return diff;if(cur)for(;cur=cur.nextSibling;)if(cur===b)return-1;return a?1:-1}function createInputPseudo(type){return function(elem){return"input"===elem.nodeName.toLowerCase()&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return("input"===name||"button"===name)&&elem.type===type}}function createDisabledPseudo(disabled){return function(elem){return"form"in elem?elem.parentNode&&!1===elem.disabled?"label"in elem?"label"in elem.parentNode?elem.parentNode.disabled===disabled:elem.disabled===disabled:elem.isDisabled===disabled||elem.isDisabled!==!disabled&&disabledAncestor(elem)===disabled:elem.disabled===disabled:"label"in elem&&elem.disabled===disabled}}function createPositionalPseudo(fn){return markFunction(function(argument){return argument=+argument,markFunction(function(seed,matches){for(var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;i--;)seed[j=matchIndexes[i]]&&(seed[j]=!(matches[j]=seed[j]))})})}function testContext(context){return context&&void 0!==context.getElementsByTagName&&context}for(i in support=Sizzle.support={},isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return!!documentElement&&"HTML"!==documentElement.nodeName},setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;return doc!==document&&9===doc.nodeType&&doc.documentElement?(docElem=(document=doc).documentElement,documentIsHTML=!isXML(document),preferredDoc!==document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow&&(subWindow.addEventListener?subWindow.addEventListener("unload",unloadHandler,!1):subWindow.attachEvent&&subWindow.attachEvent("onunload",unloadHandler)),support.attributes=assert(function(el){return el.className="i",!el.getAttribute("className")}),support.getElementsByTagName=assert(function(el){return el.appendChild(document.createComment("")),!el.getElementsByTagName("*").length}),support.getElementsByClassName=rnative.test(document.getElementsByClassName),support.getById=assert(function(el){return docElem.appendChild(el).id=expando,!document.getElementsByName||!document.getElementsByName(expando).length}),support.getById?(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[]}}):(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=void 0!==elem.getAttributeNode&&elem.getAttributeNode("id");return node&&node.value===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem];for(elems=context.getElementsByName(id),i=0;elem=elems[i++];)if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem]}return[]}}),Expr.find.TAG=support.getElementsByTagName?function(tag,context){return void 0!==context.getElementsByTagName?context.getElementsByTagName(tag):support.qsa?context.querySelectorAll(tag):void 0}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if("*"===tag){for(;elem=results[i++];)1===elem.nodeType&&tmp.push(elem);return tmp}return results},Expr.find.CLASS=support.getElementsByClassName&&function(className,context){if(void 0!==context.getElementsByClassName&&documentIsHTML)return context.getElementsByClassName(className)},rbuggyMatches=[],rbuggyQSA=[],(support.qsa=rnative.test(document.querySelectorAll))&&(assert(function(el){docElem.appendChild(el).innerHTML="<a id='"+expando+"'></a><select id='"+expando+"-\r\\' msallowcapture=''><option selected=''></option></select>",el.querySelectorAll("[msallowcapture^='']").length&&rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")"),el.querySelectorAll("[selected]").length||rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")"),el.querySelectorAll("[id~="+expando+"-]").length||rbuggyQSA.push("~="),el.querySelectorAll(":checked").length||rbuggyQSA.push(":checked"),el.querySelectorAll("a#"+expando+"+*").length||rbuggyQSA.push(".#.+[+~]")}),assert(function(el){el.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var input=document.createElement("input");input.setAttribute("type","hidden"),el.appendChild(input).setAttribute("name","D"),el.querySelectorAll("[name=d]").length&&rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?="),2!==el.querySelectorAll(":enabled").length&&rbuggyQSA.push(":enabled",":disabled"),docElem.appendChild(el).disabled=!0,2!==el.querySelectorAll(":disabled").length&&rbuggyQSA.push(":enabled",":disabled"),el.querySelectorAll("*,:x"),rbuggyQSA.push(",.*:")})),(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector))&&assert(function(el){support.disconnectedMatch=matches.call(el,"*"),matches.call(el,"[s!='']:x"),rbuggyMatches.push("!=",pseudos)}),rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|")),rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|")),hasCompare=rnative.test(docElem.compareDocumentPosition),contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=9===a.nodeType?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!(!bup||1!==bup.nodeType||!(adown.contains?adown.contains(bup):a.compareDocumentPosition&&16&a.compareDocumentPosition(bup)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},sortOrder=hasCompare?function(a,b){if(a===b)return hasDuplicate=!0,0;var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;return compare||(1&(compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1)||!support.sortDetached&&b.compareDocumentPosition(a)===compare?a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)?-1:b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0:4&compare?-1:1)}:function(a,b){if(a===b)return hasDuplicate=!0,0;var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup)return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;if(aup===bup)return siblingCheck(a,b);for(cur=a;cur=cur.parentNode;)ap.unshift(cur);for(cur=b;cur=cur.parentNode;)bp.unshift(cur);for(;ap[i]===bp[i];)i++;return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0},document):document},Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)},Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document&&setDocument(elem),expr=expr.replace(rattributeQuotes,"='$1']"),support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr)))try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&11!==elem.document.nodeType)return ret}catch(e){}return Sizzle(expr,document,null,[elem]).length>0},Sizzle.contains=function(context,elem){return(context.ownerDocument||context)!==document&&setDocument(context),contains(context,elem)},Sizzle.attr=function(elem,name){(elem.ownerDocument||elem)!==document&&setDocument(elem);var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):void 0;return void 0!==val?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null},Sizzle.escape=function(sel){return(sel+"").replace(rcssescape,fcssescape)},Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)},Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;if(hasDuplicate=!support.detectDuplicates,sortInput=!support.sortStable&&results.slice(0),results.sort(sortOrder),hasDuplicate){for(;elem=results[i++];)elem===results[i]&&(j=duplicates.push(i));for(;j--;)results.splice(duplicates[j],1)}return sortInput=null,results},getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(nodeType){if(1===nodeType||9===nodeType||11===nodeType){if("string"==typeof elem.textContent)return elem.textContent;for(elem=elem.firstChild;elem;elem=elem.nextSibling)ret+=getText(elem)}else if(3===nodeType||4===nodeType)return elem.nodeValue}else for(;node=elem[i++];)ret+=getText(node);return ret},(Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){return match[1]=match[1].replace(runescape,funescape),match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape),"~="===match[2]&&(match[3]=" "+match[3]+" "),match.slice(0,4)},CHILD:function(match){return match[1]=match[1].toLowerCase(),"nth"===match[1].slice(0,3)?(match[3]||Sizzle.error(match[0]),match[4]=+(match[4]?match[5]+(match[6]||1):2*("even"===match[3]||"odd"===match[3])),match[5]=+(match[7]+match[8]||"odd"===match[3])):match[3]&&Sizzle.error(match[0]),match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];return matchExpr.CHILD.test(match[0])?null:(match[3]?match[2]=match[4]||match[5]||"":unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,!0))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)&&(match[0]=match[0].slice(0,excess),match[2]=unquoted.slice(0,excess)),match.slice(0,3))}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return"*"===nodeNameSelector?function(){return!0}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test("string"==typeof elem.className&&elem.className||void 0!==elem.getAttribute&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);return null==result?"!="===operator:!operator||(result+="","="===operator?result===check:"!="===operator?result!==check:"^="===operator?check&&0===result.indexOf(check):"*="===operator?check&&result.indexOf(check)>-1:"$="===operator?check&&result.slice(-check.length)===check:"~="===operator?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:"|="===operator&&(result===check||result.slice(0,check.length+1)===check+"-"))}},CHILD:function(type,what,argument,first,last){var simple="nth"!==type.slice(0,3),forward="last"!==type.slice(-4),ofType="of-type"===what;return 1===first&&0===last?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=!1;if(parent){if(simple){for(;dir;){for(node=elem;node=node[dir];)if(ofType?node.nodeName.toLowerCase()===name:1===node.nodeType)return!1;start=dir="only"===type&&!start&&"nextSibling"}return!0}if(start=[forward?parent.firstChild:parent.lastChild],forward&&useCache){for(diff=(nodeIndex=(cache=(uniqueCache=(outerCache=(node=parent)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1])&&cache[2],node=nodeIndex&&parent.childNodes[nodeIndex];node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop();)if(1===node.nodeType&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}else if(useCache&&(diff=nodeIndex=(cache=(uniqueCache=(outerCache=(node=elem)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1]),!1===diff)for(;(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())&&((ofType?node.nodeName.toLowerCase()!==name:1!==node.nodeType)||!++diff||(useCache&&((uniqueCache=(outerCache=node[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]=[dirruns,diff]),node!==elem)););return(diff-=last)===first||diff%first==0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);return fn[expando]?fn(argument):fn.length>1?(args=[pseudo,pseudo,"",argument],Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){for(var idx,matched=fn(seed,argument),i=matched.length;i--;)seed[idx=indexOf(seed,matched[i])]=!(matches[idx]=matched[i])}):function(elem){return fn(elem,0,args)}):fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){for(var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;i--;)(elem=unmatched[i])&&(seed[i]=!(matches[i]=elem))}):function(elem,context,xml){return input[0]=elem,matcher(input,null,xml,results),input[0]=null,!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){return text=text.replace(runescape,funescape),function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){return ridentifier.test(lang||"")||Sizzle.error("unsupported lang: "+lang),lang=lang.replace(runescape,funescape).toLowerCase(),function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))return(elemLang=elemLang.toLowerCase())===lang||0===elemLang.indexOf(lang+"-")}while((elem=elem.parentNode)&&1===elem.nodeType);return!1}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:createDisabledPseudo(!1),disabled:createDisabledPseudo(!0),checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return"input"===nodeName&&!!elem.checked||"option"===nodeName&&!!elem.selected},selected:function(elem){return elem.parentNode&&elem.parentNode.selectedIndex,!0===elem.selected},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling)if(elem.nodeType<6)return!1;return!0},parent:function(elem){return!Expr.pseudos.empty(elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return"input"===name&&"button"===elem.type||"button"===name},text:function(elem){var attr;return"input"===elem.nodeName.toLowerCase()&&"text"===elem.type&&(null==(attr=elem.getAttribute("type"))||"text"===attr.toLowerCase())},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){for(var i=0;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),odd:createPositionalPseudo(function(matchIndexes,length){for(var i=1;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),lt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;--i>=0;)matchIndexes.push(i);return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;++i<length;)matchIndexes.push(i);return matchIndexes})}}).pseudos.nth=Expr.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Expr.pseudos[i]=createInputPseudo(i);for(i in{submit:!0,reset:!0})Expr.pseudos[i]=createButtonPseudo(i);function setFilters(){}function toSelector(tokens){for(var i=0,len=tokens.length,selector="";i<len;i++)selector+=tokens[i].value;return selector}function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&"parentNode"===key,doneName=done++;return combinator.first?function(elem,context,xml){for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)return matcher(elem,context,xml);return!1}:function(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];if(xml){for(;elem=elem[dir];)if((1===elem.nodeType||checkNonElements)&&matcher(elem,context,xml))return!0}else for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)if(uniqueCache=(outerCache=elem[expando]||(elem[expando]={}))[elem.uniqueID]||(outerCache[elem.uniqueID]={}),skip&&skip===elem.nodeName.toLowerCase())elem=elem[dir]||elem;else{if((oldCache=uniqueCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName)return newCache[2]=oldCache[2];if(uniqueCache[key]=newCache,newCache[2]=matcher(elem,context,xml))return!0}return!1}}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){for(var i=matchers.length;i--;)if(!matchers[i](elem,context,xml))return!1;return!0}:matchers[0]}function condense(unmatched,map,filter,context,xml){for(var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=null!=map;i<len;i++)(elem=unmatched[i])&&(filter&&!filter(elem,context,xml)||(newUnmatched.push(elem),mapped&&map.push(i)));return newUnmatched}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){return postFilter&&!postFilter[expando]&&(postFilter=setMatcher(postFilter)),postFinder&&!postFinder[expando]&&(postFinder=setMatcher(postFinder,postSelector)),markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||function(selector,contexts,results){for(var i=0,len=contexts.length;i<len;i++)Sizzle(selector,contexts[i],results);return results}(selector||"*",context.nodeType?[context]:context,[]),matcherIn=!preFilter||!seed&&selector?elems:condense(elems,preMap,preFilter,context,xml),matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher&&matcher(matcherIn,matcherOut,context,xml),postFilter)for(temp=condense(matcherOut,postMap),postFilter(temp,[],context,xml),i=temp.length;i--;)(elem=temp[i])&&(matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem));if(seed){if(postFinder||preFilter){if(postFinder){for(temp=[],i=matcherOut.length;i--;)(elem=matcherOut[i])&&temp.push(matcherIn[i]=elem);postFinder(null,matcherOut=[],temp,xml)}for(i=matcherOut.length;i--;)(elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1&&(seed[temp]=!(results[temp]=elem))}}else matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut),postFinder?postFinder(null,results,matcherOut,xml):push.apply(results,matcherOut)})}function matcherFromTokens(tokens){for(var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,!0),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,!0),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));return checkContext=null,ret}];i<len;i++)if(matcher=Expr.relative[tokens[i].type])matchers=[addCombinator(elementMatcher(matchers),matcher)];else{if((matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches))[expando]){for(j=++i;j<len&&!Expr.relative[tokens[j].type];j++);return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:" "===tokens[i-2].type?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens))}matchers.push(matcher)}return elementMatcher(matchers)}return setFilters.prototype=Expr.filters=Expr.pseudos,Expr.setFilters=new setFilters,tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached)return parseOnly?0:cached.slice(0);for(soFar=selector,groups=[],preFilters=Expr.preFilter;soFar;){for(type in matched&&!(match=rcomma.exec(soFar))||(match&&(soFar=soFar.slice(match[0].length)||soFar),groups.push(tokens=[])),matched=!1,(match=rcombinators.exec(soFar))&&(matched=match.shift(),tokens.push({value:matched,type:match[0].replace(rtrim," ")}),soFar=soFar.slice(matched.length)),Expr.filter)!(match=matchExpr[type].exec(soFar))||preFilters[type]&&!(match=preFilters[type](match))||(matched=match.shift(),tokens.push({value:matched,type:type,matches:match}),soFar=soFar.slice(matched.length));if(!matched)break}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0)},compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){for(match||(match=tokenize(selector)),i=match.length;i--;)(cached=matcherFromTokens(match[i]))[expando]?setMatchers.push(cached):elementMatchers.push(cached);(cached=compilerCache(selector,function(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find.TAG("*",outermost),dirrunsUnique=dirruns+=null==contextBackup?1:Math.random()||.1,len=elems.length;for(outermost&&(outermostContext=context===document||context||outermost);i!==len&&null!=(elem=elems[i]);i++){if(byElement&&elem){for(j=0,context||elem.ownerDocument===document||(setDocument(elem),xml=!documentIsHTML);matcher=elementMatchers[j++];)if(matcher(elem,context||document,xml)){results.push(elem);break}outermost&&(dirruns=dirrunsUnique)}bySet&&((elem=!matcher&&elem)&&matchedCount--,seed&&unmatched.push(elem))}if(matchedCount+=i,bySet&&i!==matchedCount){for(j=0;matcher=setMatchers[j++];)matcher(unmatched,setMatched,context,xml);if(seed){if(matchedCount>0)for(;i--;)unmatched[i]||setMatched[i]||(setMatched[i]=pop.call(results));setMatched=condense(setMatched)}push.apply(results,setMatched),outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1&&Sizzle.uniqueSort(results)}return outermost&&(dirruns=dirrunsUnique,outermostContext=contextBackup),unmatched};return bySet?markFunction(superMatcher):superMatcher}(elementMatchers,setMatchers))).selector=selector}return cached},select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled="function"==typeof selector&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);if(results=results||[],1===match.length){if((tokens=match[0]=match[0].slice(0)).length>2&&"ID"===(token=tokens[0]).type&&9===context.nodeType&&documentIsHTML&&Expr.relative[tokens[1].type]){if(!(context=(Expr.find.ID(token.matches[0].replace(runescape,funescape),context)||[])[0]))return results;compiled&&(context=context.parentNode),selector=selector.slice(tokens.shift().value.length)}for(i=matchExpr.needsContext.test(selector)?0:tokens.length;i--&&(token=tokens[i],!Expr.relative[type=token.type]);)if((find=Expr.find[type])&&(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){if(tokens.splice(i,1),!(selector=seed.length&&toSelector(tokens)))return push.apply(results,seed),results;break}}return(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context),results},support.sortStable=expando.split("").sort(sortOrder).join("")===expando,support.detectDuplicates=!!hasDuplicate,setDocument(),support.sortDetached=assert(function(el){return 1&el.compareDocumentPosition(document.createElement("fieldset"))}),assert(function(el){return el.innerHTML="<a href='#'></a>","#"===el.firstChild.getAttribute("href")})||addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML)return elem.getAttribute(name,"type"===name.toLowerCase()?1:2)}),support.attributes&&assert(function(el){return el.innerHTML="<input/>",el.firstChild.setAttribute("value",""),""===el.firstChild.getAttribute("value")})||addHandle("value",function(elem,name,isXML){if(!isXML&&"input"===elem.nodeName.toLowerCase())return elem.defaultValue}),assert(function(el){return null==el.getAttribute("disabled")})||addHandle(booleans,function(elem,name,isXML){var val;if(!isXML)return!0===elem[name]?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}),Sizzle}(window);jQuery.find=Sizzle,jQuery.expr=Sizzle.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort,jQuery.text=Sizzle.getText,jQuery.isXMLDoc=Sizzle.isXML,jQuery.contains=Sizzle.contains,jQuery.escapeSelector=Sizzle.escape;var dir=function(elem,dir,until){for(var matched=[],truncate=void 0!==until;(elem=elem[dir])&&9!==elem.nodeType;)if(1===elem.nodeType){if(truncate&&jQuery(elem).is(until))break;matched.push(elem)}return matched},siblings=function(n,elem){for(var matched=[];n;n=n.nextSibling)1===n.nodeType&&n!==elem&&matched.push(n);return matched},rneedsContext=jQuery.expr.match.needsContext;function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()}var rsingleTag=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function winnow(elements,qualifier,not){return isFunction(qualifier)?jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not}):qualifier.nodeType?jQuery.grep(elements,function(elem){return elem===qualifier!==not}):"string"!=typeof qualifier?jQuery.grep(elements,function(elem){return indexOf.call(qualifier,elem)>-1!==not}):jQuery.filter(qualifier,elements,not)}jQuery.filter=function(expr,elems,not){var elem=elems[0];return not&&(expr=":not("+expr+")"),1===elems.length&&1===elem.nodeType?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return 1===elem.nodeType}))},jQuery.fn.extend({find:function(selector){var i,ret,len=this.length,self=this;if("string"!=typeof selector)return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++)if(jQuery.contains(self[i],this))return!0}));for(ret=this.pushStack([]),i=0;i<len;i++)jQuery.find(selector,self[i],ret);return len>1?jQuery.uniqueSort(ret):ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],!1))},not:function(selector){return this.pushStack(winnow(this,selector||[],!0))},is:function(selector){return!!winnow(this,"string"==typeof selector&&rneedsContext.test(selector)?jQuery(selector):selector||[],!1).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector)return this;if(root=root||rootjQuery,"string"==typeof selector){if(!(match="<"===selector[0]&&">"===selector[selector.length-1]&&selector.length>=3?[null,selector,null]:rquickExpr.exec(selector))||!match[1]&&context)return!context||context.jquery?(context||root).find(selector):this.constructor(context).find(selector);if(match[1]){if(context=context instanceof jQuery?context[0]:context,jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,!0)),rsingleTag.test(match[1])&&jQuery.isPlainObject(context))for(match in context)isFunction(this[match])?this[match](context[match]):this.attr(match,context[match]);return this}return(elem=document.getElementById(match[2]))&&(this[0]=elem,this.length=1),this}return selector.nodeType?(this[0]=selector,this.length=1,this):isFunction(selector)?void 0!==root.ready?root.ready(selector):selector(jQuery):jQuery.makeArray(selector,this)}).prototype=jQuery.fn,rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:!0,contents:!0,next:!0,prev:!0};function sibling(cur,dir){for(;(cur=cur[dir])&&1!==cur.nodeType;);return cur}jQuery.fn.extend({has:function(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){for(var i=0;i<l;i++)if(jQuery.contains(this,targets[i]))return!0})},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],targets="string"!=typeof selectors&&jQuery(selectors);if(!rneedsContext.test(selectors))for(;i<l;i++)for(cur=this[i];cur&&cur!==context;cur=cur.parentNode)if(cur.nodeType<11&&(targets?targets.index(cur)>-1:1===cur.nodeType&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched)},index:function(elem){return elem?"string"==typeof elem?indexOf.call(jQuery(elem),this[0]):indexOf.call(this,elem.jquery?elem[0]:elem):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}}),jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&11!==parent.nodeType?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){return nodeName(elem,"iframe")?elem.contentDocument:(nodeName(elem,"template")&&(elem=elem.content||elem),jQuery.merge([],elem.childNodes))}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);return"Until"!==name.slice(-5)&&(selector=until),selector&&"string"==typeof selector&&(matched=jQuery.filter(selector,matched)),this.length>1&&(guaranteedUnique[name]||jQuery.uniqueSort(matched),rparentsprev.test(name)&&matched.reverse()),this.pushStack(matched)}});var rnothtmlwhite=/[^\x20\t\r\n\f]+/g;function Identity(v){return v}function Thrower(ex){throw ex}function adoptValue(value,resolve,reject,noValue){var method;try{value&&isFunction(method=value.promise)?method.call(value).done(resolve).fail(reject):value&&isFunction(method=value.then)?method.call(value,resolve,reject):resolve.apply(void 0,[value].slice(noValue))}catch(value){reject.apply(void 0,[value])}}jQuery.Callbacks=function(options){options="string"==typeof options?function(options){var object={};return jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=!0}),object}(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){for(locked=locked||options.once,fired=firing=!0;queue.length;firingIndex=-1)for(memory=queue.shift();++firingIndex<list.length;)!1===list[firingIndex].apply(memory[0],memory[1])&&options.stopOnFalse&&(firingIndex=list.length,memory=!1);options.memory||(memory=!1),firing=!1,locked&&(list=memory?[]:"")},self={add:function(){return list&&(memory&&!firing&&(firingIndex=list.length-1,queue.push(memory)),function add(args){jQuery.each(args,function(_,arg){isFunction(arg)?options.unique&&self.has(arg)||list.push(arg):arg&&arg.length&&"string"!==toType(arg)&&add(arg)})}(arguments),memory&&!firing&&fire()),this},remove:function(){return jQuery.each(arguments,function(_,arg){for(var index;(index=jQuery.inArray(arg,list,index))>-1;)list.splice(index,1),index<=firingIndex&&firingIndex--}),this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0},empty:function(){return list&&(list=[]),this},disable:function(){return locked=queue=[],list=memory="",this},disabled:function(){return!list},lock:function(){return locked=queue=[],memory||firing||(list=memory=""),this},locked:function(){return!!locked},fireWith:function(context,args){return locked||(args=[context,(args=args||[]).slice?args.slice():args],queue.push(args),firing||fire()),this},fire:function(){return self.fireWith(this,arguments),this},fired:function(){return!!fired}};return self},jQuery.extend({Deferred:function(func){var tuples=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],state="pending",promise={state:function(){return state},always:function(){return deferred.done(arguments).fail(arguments),this},catch:function(fn){return promise.then(null,fn)},pipe:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);returned&&isFunction(returned.promise)?returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject):newDefer[tuple[0]+"With"](this,fn?[returned]:arguments)})}),fns=null}).promise()},then:function(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function(){var returned,then;if(!(depth<maxDepth)){if((returned=handler.apply(that,args))===deferred.promise())throw new TypeError("Thenable self-resolution");then=returned&&("object"==typeof returned||"function"==typeof returned)&&returned.then,isFunction(then)?special?then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special)):(maxDepth++,then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith))):(handler!==Identity&&(that=void 0,args=[returned]),(special||deferred.resolveWith)(that,args))}},process=special?mightThrow:function(){try{mightThrow()}catch(e){jQuery.Deferred.exceptionHook&&jQuery.Deferred.exceptionHook(e,process.stackTrace),depth+1>=maxDepth&&(handler!==Thrower&&(that=void 0,args=[e]),deferred.rejectWith(that,args))}};depth?process():(jQuery.Deferred.getStackHook&&(process.stackTrace=jQuery.Deferred.getStackHook()),window.setTimeout(process))}}return jQuery.Deferred(function(newDefer){tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith)),tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity)),tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower))}).promise()},promise:function(obj){return null!=obj?jQuery.extend(obj,promise):promise}},deferred={};return jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];promise[tuple[1]]=list.add,stateString&&list.add(function(){state=stateString},tuples[3-i][2].disable,tuples[3-i][3].disable,tuples[0][2].lock,tuples[0][3].lock),list.add(tuple[3].fire),deferred[tuple[0]]=function(){return deferred[tuple[0]+"With"](this===deferred?void 0:this,arguments),this},deferred[tuple[0]+"With"]=list.fireWith}),promise.promise(deferred),func&&func.call(deferred,deferred),deferred},when:function(singleValue){var remaining=arguments.length,i=remaining,resolveContexts=Array(i),resolveValues=slice.call(arguments),master=jQuery.Deferred(),updateFunc=function(i){return function(value){resolveContexts[i]=this,resolveValues[i]=arguments.length>1?slice.call(arguments):value,--remaining||master.resolveWith(resolveContexts,resolveValues)}};if(remaining<=1&&(adoptValue(singleValue,master.done(updateFunc(i)).resolve,master.reject,!remaining),"pending"===master.state()||isFunction(resolveValues[i]&&resolveValues[i].then)))return master.then();for(;i--;)adoptValue(resolveValues[i],updateFunc(i),master.reject);return master.promise()}});var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){window.console&&window.console.warn&&error&&rerrorNames.test(error.name)&&window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,stack)},jQuery.readyException=function(error){window.setTimeout(function(){throw error})};var readyList=jQuery.Deferred();function completed(){document.removeEventListener("DOMContentLoaded",completed),window.removeEventListener("load",completed),jQuery.ready()}jQuery.fn.ready=function(fn){return readyList.then(fn).catch(function(error){jQuery.readyException(error)}),this},jQuery.extend({isReady:!1,readyWait:1,ready:function(wait){(!0===wait?--jQuery.readyWait:jQuery.isReady)||(jQuery.isReady=!0,!0!==wait&&--jQuery.readyWait>0||readyList.resolveWith(document,[jQuery]))}}),jQuery.ready.then=readyList.then,"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(jQuery.ready):(document.addEventListener("DOMContentLoaded",completed),window.addEventListener("load",completed));var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=null==key;if("object"===toType(key))for(i in chainable=!0,key)access(elems,fn,i,key[i],!0,emptyGet,raw);else if(void 0!==value&&(chainable=!0,isFunction(value)||(raw=!0),bulk&&(raw?(fn.call(elems,value),fn=null):(bulk=fn,fn=function(elem,key,value){return bulk.call(jQuery(elem),value)})),fn))for(;i<len;i++)fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));return chainable?elems:bulk?fn.call(elems):len?fn(elems[0],key):emptyGet},rmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g;function fcamelCase(all,letter){return letter.toUpperCase()}function camelCase(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)}var acceptData=function(owner){return 1===owner.nodeType||9===owner.nodeType||!+owner.nodeType};function Data(){this.expando=jQuery.expando+Data.uid++}Data.uid=1,Data.prototype={cache:function(owner){var value=owner[this.expando];return value||(value={},acceptData(owner)&&(owner.nodeType?owner[this.expando]=value:Object.defineProperty(owner,this.expando,{value:value,configurable:!0}))),value},set:function(owner,data,value){var prop,cache=this.cache(owner);if("string"==typeof data)cache[camelCase(data)]=value;else for(prop in data)cache[camelCase(prop)]=data[prop];return cache},get:function(owner,key){return void 0===key?this.cache(owner):owner[this.expando]&&owner[this.expando][camelCase(key)]},access:function(owner,key,value){return void 0===key||key&&"string"==typeof key&&void 0===value?this.get(owner,key):(this.set(owner,key,value),void 0!==value?value:key)},remove:function(owner,key){var i,cache=owner[this.expando];if(void 0!==cache){if(void 0!==key){i=(key=Array.isArray(key)?key.map(camelCase):(key=camelCase(key))in cache?[key]:key.match(rnothtmlwhite)||[]).length;for(;i--;)delete cache[key[i]]}(void 0===key||jQuery.isEmptyObject(cache))&&(owner.nodeType?owner[this.expando]=void 0:delete owner[this.expando])}},hasData:function(owner){var cache=owner[this.expando];return void 0!==cache&&!jQuery.isEmptyObject(cache)}};var dataPriv=new Data,dataUser=new Data,rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/[A-Z]/g;function dataAttr(elem,key,data){var name;if(void 0===data&&1===elem.nodeType)if(name="data-"+key.replace(rmultiDash,"-$&").toLowerCase(),"string"==typeof(data=elem.getAttribute(name))){try{data=function(data){return"true"===data||"false"!==data&&("null"===data?null:data===+data+""?+data:rbrace.test(data)?JSON.parse(data):data)}(data)}catch(e){}dataUser.set(elem,key,data)}else data=void 0;return data}jQuery.extend({hasData:function(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem)},data:function(elem,name,data){return dataUser.access(elem,name,data)},removeData:function(elem,name){dataUser.remove(elem,name)},_data:function(elem,name,data){return dataPriv.access(elem,name,data)},_removeData:function(elem,name){dataPriv.remove(elem,name)}}),jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(void 0===key){if(this.length&&(data=dataUser.get(elem),1===elem.nodeType&&!dataPriv.get(elem,"hasDataAttrs"))){for(i=attrs.length;i--;)attrs[i]&&0===(name=attrs[i].name).indexOf("data-")&&(name=camelCase(name.slice(5)),dataAttr(elem,name,data[name]));dataPriv.set(elem,"hasDataAttrs",!0)}return data}return"object"==typeof key?this.each(function(){dataUser.set(this,key)}):access(this,function(value){var data;if(elem&&void 0===value)return void 0!==(data=dataUser.get(elem,key))?data:void 0!==(data=dataAttr(elem,key))?data:void 0;this.each(function(){dataUser.set(this,key,value)})},null,value,arguments.length>1,null,!0)},removeData:function(key){return this.each(function(){dataUser.remove(this,key)})}}),jQuery.extend({queue:function(elem,type,data){var queue;if(elem)return type=(type||"fx")+"queue",queue=dataPriv.get(elem,type),data&&(!queue||Array.isArray(data)?queue=dataPriv.access(elem,type,jQuery.makeArray(data)):queue.push(data)),queue||[]},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type);"inprogress"===fn&&(fn=queue.shift(),startLength--),fn&&("fx"===type&&queue.unshift("inprogress"),delete hooks.stop,fn.call(elem,function(){jQuery.dequeue(elem,type)},hooks)),!startLength&&hooks&&hooks.empty.fire()},_queueHooks:function(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key])})})}}),jQuery.fn.extend({queue:function(type,data){var setter=2;return"string"!=typeof type&&(data=type,type="fx",setter--),arguments.length<setter?jQuery.queue(this[0],type):void 0===data?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type),"fx"===type&&"inprogress"!==queue[0]&&jQuery.dequeue(this,type)})},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type)})},clearQueue:function(type){return this.queue(type||"fx",[])},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){--count||defer.resolveWith(elements,[elements])};for("string"!=typeof type&&(obj=type,type=void 0),type=type||"fx";i--;)(tmp=dataPriv.get(elements[i],type+"queueHooks"))&&tmp.empty&&(count++,tmp.empty.add(resolve));return resolve(),defer.promise(obj)}});var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i"),cssExpand=["Top","Right","Bottom","Left"],isHiddenWithinTree=function(elem,el){return"none"===(elem=el||elem).style.display||""===elem.style.display&&jQuery.contains(elem.ownerDocument,elem)&&"none"===jQuery.css(elem,"display")},swap=function(elem,options,callback,args){var ret,name,old={};for(name in options)old[name]=elem.style[name],elem.style[name]=options[name];for(name in ret=callback.apply(elem,args||[]),options)elem.style[name]=old[name];return ret};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||"px"!==unit&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){for(initial/=2,unit=unit||initialInUnit[3],initialInUnit=+initial||1;maxIterations--;)jQuery.style(elem,prop,initialInUnit+unit),(1-scale)*(1-(scale=currentValue()/initial||.5))<=0&&(maxIterations=0),initialInUnit/=scale;initialInUnit*=2,jQuery.style(elem,prop,initialInUnit+unit),valueParts=valueParts||[]}return valueParts&&(initialInUnit=+initialInUnit||+initial||0,adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2],tween&&(tween.unit=unit,tween.start=initialInUnit,tween.end=adjusted)),adjusted}var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];return display||(temp=doc.body.appendChild(doc.createElement(nodeName)),display=jQuery.css(temp,"display"),temp.parentNode.removeChild(temp),"none"===display&&(display="block"),defaultDisplayMap[nodeName]=display,display)}function showHide(elements,show){for(var display,elem,values=[],index=0,length=elements.length;index<length;index++)(elem=elements[index]).style&&(display=elem.style.display,show?("none"===display&&(values[index]=dataPriv.get(elem,"display")||null,values[index]||(elem.style.display="")),""===elem.style.display&&isHiddenWithinTree(elem)&&(values[index]=getDefaultDisplay(elem))):"none"!==display&&(values[index]="none",dataPriv.set(elem,"display",display)));for(index=0;index<length;index++)null!=values[index]&&(elements[index].style.display=values[index]);return elements}jQuery.fn.extend({show:function(){return showHide(this,!0)},hide:function(){return showHide(this)},toggle:function(state){return"boolean"==typeof state?state?this.show():this.hide():this.each(function(){isHiddenWithinTree(this)?jQuery(this).show():jQuery(this).hide()})}});var rcheckableType=/^(?:checkbox|radio)$/i,rtagName=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,rscriptType=/^$|^module$|\/(?:java|ecma)script/i,wrapMap={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function getAll(context,tag){var ret;return ret=void 0!==context.getElementsByTagName?context.getElementsByTagName(tag||"*"):void 0!==context.querySelectorAll?context.querySelectorAll(tag||"*"):[],void 0===tag||tag&&nodeName(context,tag)?jQuery.merge([context],ret):ret}function setGlobalEval(elems,refElements){for(var i=0,l=elems.length;i<l;i++)dataPriv.set(elems[i],"globalEval",!refElements||dataPriv.get(refElements[i],"globalEval"))}wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead,wrapMap.th=wrapMap.td;var div,input,rhtml=/<|&#?\w+;/;function buildFragment(elems,context,scripts,selection,ignored){for(var elem,tmp,tag,wrap,contains,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;i<l;i++)if((elem=elems[i])||0===elem)if("object"===toType(elem))jQuery.merge(nodes,elem.nodeType?[elem]:elem);else if(rhtml.test(elem)){for(tmp=tmp||fragment.appendChild(context.createElement("div")),tag=(rtagName.exec(elem)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2],j=wrap[0];j--;)tmp=tmp.lastChild;jQuery.merge(nodes,tmp.childNodes),(tmp=fragment.firstChild).textContent=""}else nodes.push(context.createTextNode(elem));for(fragment.textContent="",i=0;elem=nodes[i++];)if(selection&&jQuery.inArray(elem,selection)>-1)ignored&&ignored.push(elem);else if(contains=jQuery.contains(elem.ownerDocument,elem),tmp=getAll(fragment.appendChild(elem),"script"),contains&&setGlobalEval(tmp),scripts)for(j=0;elem=tmp[j++];)rscriptType.test(elem.type||"")&&scripts.push(elem);return fragment}div=document.createDocumentFragment().appendChild(document.createElement("div")),(input=document.createElement("input")).setAttribute("type","radio"),input.setAttribute("checked","checked"),input.setAttribute("name","t"),div.appendChild(input),support.checkClone=div.cloneNode(!0).cloneNode(!0).lastChild.checked,div.innerHTML="<textarea>x</textarea>",support.noCloneChecked=!!div.cloneNode(!0).lastChild.defaultValue;var documentElement=document.documentElement,rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return!0}function returnFalse(){return!1}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if("object"==typeof types){for(type in"string"!=typeof selector&&(data=data||selector,selector=void 0),types)on(elem,type,selector,data,types[type],one);return elem}if(null==data&&null==fn?(fn=selector,data=selector=void 0):null==fn&&("string"==typeof selector?(fn=data,data=void 0):(fn=data,data=selector,selector=void 0)),!1===fn)fn=returnFalse;else if(!fn)return elem;return 1===one&&(origFn=fn,(fn=function(event){return jQuery().off(event),origFn.apply(this,arguments)}).guid=origFn.guid||(origFn.guid=jQuery.guid++)),elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);if(elemData)for(handler.handler&&(handler=(handleObjIn=handler).handler,selector=handleObjIn.selector),selector&&jQuery.find.matchesSelector(documentElement,selector),handler.guid||(handler.guid=jQuery.guid++),(events=elemData.events)||(events=elemData.events={}),(eventHandle=elemData.handle)||(eventHandle=elemData.handle=function(e){return void 0!==jQuery&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):void 0}),t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type&&(special=jQuery.event.special[type]||{},type=(selector?special.delegateType:special.bindType)||type,special=jQuery.event.special[type]||{},handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn),(handlers=events[type])||((handlers=events[type]=[]).delegateCount=0,special.setup&&!1!==special.setup.call(elem,data,namespaces,eventHandle)||elem.addEventListener&&elem.addEventListener(type,eventHandle)),special.add&&(special.add.call(elem,handleObj),handleObj.handler.guid||(handleObj.handler.guid=handler.guid)),selector?handlers.splice(handlers.delegateCount++,0,handleObj):handlers.push(handleObj),jQuery.event.global[type]=!0)},remove:function(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(elemData&&(events=elemData.events)){for(t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)if(type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type){for(special=jQuery.event.special[type]||{},handlers=events[type=(selector?special.delegateType:special.bindType)||type]||[],tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"),origCount=j=handlers.length;j--;)handleObj=handlers[j],!mappedTypes&&origType!==handleObj.origType||handler&&handler.guid!==handleObj.guid||tmp&&!tmp.test(handleObj.namespace)||selector&&selector!==handleObj.selector&&("**"!==selector||!handleObj.selector)||(handlers.splice(j,1),handleObj.selector&&handlers.delegateCount--,special.remove&&special.remove.call(elem,handleObj));origCount&&!handlers.length&&(special.teardown&&!1!==special.teardown.call(elem,namespaces,elemData.handle)||jQuery.removeEvent(elem,type,elemData.handle),delete events[type])}else for(type in events)jQuery.event.remove(elem,type+types[t],handler,selector,!0);jQuery.isEmptyObject(events)&&dataPriv.remove(elem,"handle events")}},dispatch:function(nativeEvent){var i,j,ret,matched,handleObj,handlerQueue,event=jQuery.event.fix(nativeEvent),args=new Array(arguments.length),handlers=(dataPriv.get(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};for(args[0]=event,i=1;i<arguments.length;i++)args[i]=arguments[i];if(event.delegateTarget=this,!special.preDispatch||!1!==special.preDispatch.call(this,event)){for(handlerQueue=jQuery.event.handlers.call(this,event,handlers),i=0;(matched=handlerQueue[i++])&&!event.isPropagationStopped();)for(event.currentTarget=matched.elem,j=0;(handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped();)event.rnamespace&&!event.rnamespace.test(handleObj.namespace)||(event.handleObj=handleObj,event.data=handleObj.data,void 0!==(ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args))&&!1===(event.result=ret)&&(event.preventDefault(),event.stopPropagation()));return special.postDispatch&&special.postDispatch.call(this,event),event.result}},handlers:function(event,handlers){var i,handleObj,sel,matchedHandlers,matchedSelectors,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&!("click"===event.type&&event.button>=1))for(;cur!==this;cur=cur.parentNode||this)if(1===cur.nodeType&&("click"!==event.type||!0!==cur.disabled)){for(matchedHandlers=[],matchedSelectors={},i=0;i<delegateCount;i++)void 0===matchedSelectors[sel=(handleObj=handlers[i]).selector+" "]&&(matchedSelectors[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length),matchedSelectors[sel]&&matchedHandlers.push(handleObj);matchedHandlers.length&&handlerQueue.push({elem:cur,handlers:matchedHandlers})}return cur=this,delegateCount<handlers.length&&handlerQueue.push({elem:cur,handlers:handlers.slice(delegateCount)}),handlerQueue},addProp:function(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:!0,configurable:!0,get:isFunction(hook)?function(){if(this.originalEvent)return hook(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[name]},set:function(value){Object.defineProperty(this,name,{enumerable:!0,configurable:!0,writable:!0,value:value})}})},fix:function(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&nodeName(this,"input"))return this.click(),!1},_default:function(event){return nodeName(event.target,"a")}},beforeunload:{postDispatch:function(event){void 0!==event.result&&event.originalEvent&&(event.originalEvent.returnValue=event.result)}}}},jQuery.removeEvent=function(elem,type,handle){elem.removeEventListener&&elem.removeEventListener(type,handle)},jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event))return new jQuery.Event(src,props);src&&src.type?(this.originalEvent=src,this.type=src.type,this.isDefaultPrevented=src.defaultPrevented||void 0===src.defaultPrevented&&!1===src.returnValue?returnTrue:returnFalse,this.target=src.target&&3===src.target.nodeType?src.target.parentNode:src.target,this.currentTarget=src.currentTarget,this.relatedTarget=src.relatedTarget):this.type=src,props&&jQuery.extend(this,props),this.timeStamp=src&&src.timeStamp||Date.now(),this[jQuery.expando]=!0},jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},jQuery.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(event){var button=event.button;return null==event.which&&rkeyEvent.test(event.type)?null!=event.charCode?event.charCode:event.keyCode:!event.which&&void 0!==button&&rmouseEvent.test(event.type)?1&button?1:2&button?3:4&button?2:0:event.which}},jQuery.event.addProp),jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,related=event.relatedTarget,handleObj=event.handleObj;return related&&(related===this||jQuery.contains(this,related))||(event.type=handleObj.origType,ret=handleObj.handler.apply(this,arguments),event.type=fix),ret}}}),jQuery.fn.extend({on:function(types,selector,data,fn){return on(this,types,selector,data,fn)},one:function(types,selector,data,fn){return on(this,types,selector,data,fn,1)},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj)return handleObj=types.handleObj,jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler),this;if("object"==typeof types){for(type in types)this.off(type,selector,types[type]);return this}return!1!==selector&&"function"!=typeof selector||(fn=selector,selector=void 0),!1===fn&&(fn=returnFalse),this.each(function(){jQuery.event.remove(this,types,fn,selector)})}});var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,rnoInnerhtml=/<script|<style|<link/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function manipulationTarget(elem,content){return nodeName(elem,"table")&&nodeName(11!==content.nodeType?content:content.firstChild,"tr")&&jQuery(elem).children("tbody")[0]||elem}function disableScript(elem){return elem.type=(null!==elem.getAttribute("type"))+"/"+elem.type,elem}function restoreScript(elem){return"true/"===(elem.type||"").slice(0,5)?elem.type=elem.type.slice(5):elem.removeAttribute("type"),elem}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,pdataCur,udataOld,udataCur,events;if(1===dest.nodeType){if(dataPriv.hasData(src)&&(pdataOld=dataPriv.access(src),pdataCur=dataPriv.set(dest,pdataOld),events=pdataOld.events))for(type in delete pdataCur.handle,pdataCur.events={},events)for(i=0,l=events[type].length;i<l;i++)jQuery.event.add(dest,type,events[type][i]);dataUser.hasData(src)&&(udataOld=dataUser.access(src),udataCur=jQuery.extend({},udataOld),dataUser.set(dest,udataCur))}}function domManip(collection,args,callback,ignored){args=concat.apply([],args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],valueIsFunction=isFunction(value);if(valueIsFunction||l>1&&"string"==typeof value&&!support.checkClone&&rchecked.test(value))return collection.each(function(index){var self=collection.eq(index);valueIsFunction&&(args[0]=value.call(this,index,self.html())),domManip(self,args,callback,ignored)});if(l&&(first=(fragment=buildFragment(args,collection[0].ownerDocument,!1,collection,ignored)).firstChild,1===fragment.childNodes.length&&(fragment=first),first||ignored)){for(hasScripts=(scripts=jQuery.map(getAll(fragment,"script"),disableScript)).length;i<l;i++)node=fragment,i!==iNoClone&&(node=jQuery.clone(node,!0,!0),hasScripts&&jQuery.merge(scripts,getAll(node,"script"))),callback.call(collection[i],node,i);if(hasScripts)for(doc=scripts[scripts.length-1].ownerDocument,jQuery.map(scripts,restoreScript),i=0;i<hasScripts;i++)node=scripts[i],rscriptType.test(node.type||"")&&!dataPriv.access(node,"globalEval")&&jQuery.contains(doc,node)&&(node.src&&"module"!==(node.type||"").toLowerCase()?jQuery._evalUrl&&jQuery._evalUrl(node.src):DOMEval(node.textContent.replace(rcleanScript,""),doc,node))}return collection}function remove(elem,selector,keepData){for(var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;null!=(node=nodes[i]);i++)keepData||1!==node.nodeType||jQuery.cleanData(getAll(node)),node.parentNode&&(keepData&&jQuery.contains(node.ownerDocument,node)&&setGlobalEval(getAll(node,"script")),node.parentNode.removeChild(node));return elem}jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1></$2>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,src,dest,nodeName,clone=elem.cloneNode(!0),inPage=jQuery.contains(elem.ownerDocument,elem);if(!(support.noCloneChecked||1!==elem.nodeType&&11!==elem.nodeType||jQuery.isXMLDoc(elem)))for(destElements=getAll(clone),i=0,l=(srcElements=getAll(elem)).length;i<l;i++)src=srcElements[i],dest=destElements[i],void 0,"input"===(nodeName=dest.nodeName.toLowerCase())&&rcheckableType.test(src.type)?dest.checked=src.checked:"input"!==nodeName&&"textarea"!==nodeName||(dest.defaultValue=src.defaultValue);if(dataAndEvents)if(deepDataAndEvents)for(srcElements=srcElements||getAll(elem),destElements=destElements||getAll(clone),i=0,l=srcElements.length;i<l;i++)cloneCopyEvent(srcElements[i],destElements[i]);else cloneCopyEvent(elem,clone);return(destElements=getAll(clone,"script")).length>0&&setGlobalEval(destElements,!inPage&&getAll(elem,"script")),clone},cleanData:function(elems){for(var data,elem,type,special=jQuery.event.special,i=0;void 0!==(elem=elems[i]);i++)if(acceptData(elem)){if(data=elem[dataPriv.expando]){if(data.events)for(type in data.events)special[type]?jQuery.event.remove(elem,type):jQuery.removeEvent(elem,type,data.handle);elem[dataPriv.expando]=void 0}elem[dataUser.expando]&&(elem[dataUser.expando]=void 0)}}}),jQuery.fn.extend({detach:function(selector){return remove(this,selector,!0)},remove:function(selector){return remove(this,selector)},text:function(value){return access(this,function(value){return void 0===value?jQuery.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=value)})},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||manipulationTarget(this,elem).appendChild(elem)})},prepend:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this)})},after:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this.nextSibling)})},empty:function(){for(var elem,i=0;null!=(elem=this[i]);i++)1===elem.nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.textContent="");return this},clone:function(dataAndEvents,deepDataAndEvents){return dataAndEvents=null!=dataAndEvents&&dataAndEvents,deepDataAndEvents=null==deepDataAndEvents?dataAndEvents:deepDataAndEvents,this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(void 0===value&&1===elem.nodeType)return elem.innerHTML;if("string"==typeof value&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++)1===(elem=this[i]||{}).nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.innerHTML=value);elem=0}catch(e){}}elem&&this.empty().append(value)},null,value,arguments.length)},replaceWith:function(){var ignored=[];return domManip(this,arguments,function(elem){var parent=this.parentNode;jQuery.inArray(this,ignored)<0&&(jQuery.cleanData(getAll(this)),parent&&parent.replaceChild(elem,this))},ignored)}}),jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){for(var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;i<=last;i++)elems=i===last?this:this.clone(!0),jQuery(insert[i])[original](elems),push.apply(ret,elems.get());return this.pushStack(ret)}});var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i"),getStyles=function(elem){var view=elem.ownerDocument.defaultView;return view&&view.opener||(view=window),view.getComputedStyle(elem)},rboxStyle=new RegExp(cssExpand.join("|"),"i");function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;return(computed=computed||getStyles(elem))&&(""!==(ret=computed.getPropertyValue(name)||computed[name])||jQuery.contains(elem.ownerDocument,elem)||(ret=jQuery.style(elem,name)),!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name)&&(width=style.width,minWidth=style.minWidth,maxWidth=style.maxWidth,style.minWidth=style.maxWidth=style.width=ret,ret=computed.width,style.width=width,style.minWidth=minWidth,style.maxWidth=maxWidth)),void 0!==ret?ret+"":ret}function addGetHookIf(conditionFn,hookFn){return{get:function(){if(!conditionFn())return(this.get=hookFn).apply(this,arguments);delete this.get}}}!function(){function computeStyleTests(){if(div){container.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",div.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",documentElement.appendChild(container).appendChild(div);var divStyle=window.getComputedStyle(div);pixelPositionVal="1%"!==divStyle.top,reliableMarginLeftVal=12===roundPixelMeasures(divStyle.marginLeft),div.style.right="60%",pixelBoxStylesVal=36===roundPixelMeasures(divStyle.right),boxSizingReliableVal=36===roundPixelMeasures(divStyle.width),div.style.position="absolute",scrollboxSizeVal=36===div.offsetWidth||"absolute",documentElement.removeChild(container),div=null}}function roundPixelMeasures(measure){return Math.round(parseFloat(measure))}var pixelPositionVal,boxSizingReliableVal,scrollboxSizeVal,pixelBoxStylesVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");div.style&&(div.style.backgroundClip="content-box",div.cloneNode(!0).style.backgroundClip="",support.clearCloneStyle="content-box"===div.style.backgroundClip,jQuery.extend(support,{boxSizingReliable:function(){return computeStyleTests(),boxSizingReliableVal},pixelBoxStyles:function(){return computeStyleTests(),pixelBoxStylesVal},pixelPosition:function(){return computeStyleTests(),pixelPositionVal},reliableMarginLeft:function(){return computeStyleTests(),reliableMarginLeftVal},scrollboxSize:function(){return computeStyleTests(),scrollboxSizeVal}}))}();var rdisplayswap=/^(none|table(?!-c[ea]).+)/,rcustomProp=/^--/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","Moz","ms"],emptyStyle=document.createElement("div").style;function finalPropName(name){var ret=jQuery.cssProps[name];return ret||(ret=jQuery.cssProps[name]=function(name){if(name in emptyStyle)return name;for(var capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;i--;)if((name=cssPrefixes[i]+capName)in emptyStyle)return name}(name)||name),ret}function setPositiveNumber(elem,value,subtract){var matches=rcssNum.exec(value);return matches?Math.max(0,matches[2]-(subtract||0))+(matches[3]||"px"):value}function boxModelAdjustment(elem,dimension,box,isBorderBox,styles,computedVal){var i="width"===dimension?1:0,extra=0,delta=0;if(box===(isBorderBox?"border":"content"))return 0;for(;i<4;i+=2)"margin"===box&&(delta+=jQuery.css(elem,box+cssExpand[i],!0,styles)),isBorderBox?("content"===box&&(delta-=jQuery.css(elem,"padding"+cssExpand[i],!0,styles)),"margin"!==box&&(delta-=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles))):(delta+=jQuery.css(elem,"padding"+cssExpand[i],!0,styles),"padding"!==box?delta+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles):extra+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles));return!isBorderBox&&computedVal>=0&&(delta+=Math.max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-computedVal-delta-extra-.5))),delta}function getWidthOrHeight(elem,dimension,extra){var styles=getStyles(elem),val=curCSS(elem,dimension,styles),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),valueIsBorderBox=isBorderBox;if(rnumnonpx.test(val)){if(!extra)return val;val="auto"}return valueIsBorderBox=valueIsBorderBox&&(support.boxSizingReliable()||val===elem.style[dimension]),("auto"===val||!parseFloat(val)&&"inline"===jQuery.css(elem,"display",!1,styles))&&(val=elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)],valueIsBorderBox=!0),(val=parseFloat(val)||0)+boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles,val)+"px"}function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing)}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return""===ret?"1":ret}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(elem,name,value,extra){if(elem&&3!==elem.nodeType&&8!==elem.nodeType&&elem.style){var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;if(isCustomProp||(name=finalPropName(origName)),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],void 0===value)return hooks&&"get"in hooks&&void 0!==(ret=hooks.get(elem,!1,extra))?ret:style[name];"string"===(type=typeof value)&&(ret=rcssNum.exec(value))&&ret[1]&&(value=adjustCSS(elem,name,ret),type="number"),null!=value&&value==value&&("number"===type&&(value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")),support.clearCloneStyle||""!==value||0!==name.indexOf("background")||(style[name]="inherit"),hooks&&"set"in hooks&&void 0===(value=hooks.set(elem,value,extra))||(isCustomProp?style.setProperty(name,value):style[name]=value))}},css:function(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name);return rcustomProp.test(name)||(name=finalPropName(origName)),(hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName])&&"get"in hooks&&(val=hooks.get(elem,!0,extra)),void 0===val&&(val=curCSS(elem,name,styles)),"normal"===val&&name in cssNormalTransform&&(val=cssNormalTransform[name]),""===extra||extra?(num=parseFloat(val),!0===extra||isFinite(num)?num||0:val):val}}),jQuery.each(["height","width"],function(i,dimension){jQuery.cssHooks[dimension]={get:function(elem,computed,extra){if(computed)return!rdisplayswap.test(jQuery.css(elem,"display"))||elem.getClientRects().length&&elem.getBoundingClientRect().width?getWidthOrHeight(elem,dimension,extra):swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra)})},set:function(elem,value,extra){var matches,styles=getStyles(elem),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),subtract=extra&&boxModelAdjustment(elem,dimension,extra,isBorderBox,styles);return isBorderBox&&support.scrollboxSize()===styles.position&&(subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-parseFloat(styles[dimension])-boxModelAdjustment(elem,dimension,"border",!1,styles)-.5)),subtract&&(matches=rcssNum.exec(value))&&"px"!==(matches[3]||"px")&&(elem.style[dimension]=value,value=jQuery.css(elem,dimension)),setPositiveNumber(0,value,subtract)}}}),jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed)return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}))+"px"}),jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){for(var i=0,expanded={},parts="string"==typeof value?value.split(" "):[value];i<4;i++)expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];return expanded}},"margin"!==prefix&&(jQuery.cssHooks[prefix+suffix].set=setPositiveNumber)}),jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){for(styles=getStyles(elem),len=name.length;i<len;i++)map[name[i]]=jQuery.css(elem,name[i],!1,styles);return map}return void 0!==value?jQuery.style(elem,name,value):jQuery.css(elem,name)},name,value,arguments.length>1)}}),jQuery.Tween=Tween,Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem,this.prop=prop,this.easing=easing||jQuery.easing._default,this.options=options,this.start=this.now=this.cur(),this.end=end,this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];return this.options.duration?this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration):this.pos=eased=percent,this.now=(this.end-this.start)*eased+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),hooks&&hooks.set?hooks.set(this):Tween.propHooks._default.set(this),this}},Tween.prototype.init.prototype=Tween.prototype,Tween.propHooks={_default:{get:function(tween){var result;return 1!==tween.elem.nodeType||null!=tween.elem[tween.prop]&&null==tween.elem.style[tween.prop]?tween.elem[tween.prop]:(result=jQuery.css(tween.elem,tween.prop,""))&&"auto"!==result?result:0},set:function(tween){jQuery.fx.step[tween.prop]?jQuery.fx.step[tween.prop](tween):1!==tween.elem.nodeType||null==tween.elem.style[jQuery.cssProps[tween.prop]]&&!jQuery.cssHooks[tween.prop]?tween.elem[tween.prop]=tween.now:jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}}},Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){tween.elem.nodeType&&tween.elem.parentNode&&(tween.elem[tween.prop]=tween.now)}},jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"},jQuery.fx=Tween.prototype.init,jQuery.fx.step={};var fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){inProgress&&(!1===document.hidden&&window.requestAnimationFrame?window.requestAnimationFrame(schedule):window.setTimeout(schedule,jQuery.fx.interval),jQuery.fx.tick())}function createFxNow(){return window.setTimeout(function(){fxNow=void 0}),fxNow=Date.now()}function genFx(type,includeWidth){var which,i=0,attrs={height:type};for(includeWidth=includeWidth?1:0;i<4;i+=2-includeWidth)attrs["margin"+(which=cssExpand[i])]=attrs["padding"+which]=type;return includeWidth&&(attrs.opacity=attrs.width=type),attrs}function createTween(value,prop,animation){for(var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;index<length;index++)if(tween=collection[index].call(animation,prop,value))return tween}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem}),tick=function(){if(stopped)return!1;for(var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),percent=1-(remaining/animation.duration||0),index=0,length=animation.tweens.length;index<length;index++)animation.tweens[index].run(percent);return deferred.notifyWith(elem,[animation,percent,remaining]),percent<1&&length?remaining:(length||deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation]),!1)},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(!0,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);return animation.tweens.push(tween),tween},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped)return this;for(stopped=!0;index<length;index++)animation.tweens[index].run(1);return gotoEnd?(deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation,gotoEnd])):deferred.rejectWith(elem,[animation,gotoEnd]),this}}),props=animation.props;for(!function(props,specialEasing){var index,name,easing,value,hooks;for(index in props)if(easing=specialEasing[name=camelCase(index)],value=props[index],Array.isArray(value)&&(easing=value[1],value=props[index]=value[0]),index!==name&&(props[name]=value,delete props[index]),(hooks=jQuery.cssHooks[name])&&"expand"in hooks)for(index in value=hooks.expand(value),delete props[name],value)index in props||(props[index]=value[index],specialEasing[index]=easing);else specialEasing[name]=easing}(props,animation.opts.specialEasing);index<length;index++)if(result=Animation.prefilters[index].call(animation,elem,props,animation.opts))return isFunction(result.stop)&&(jQuery._queueHooks(animation.elem,animation.opts.queue).stop=result.stop.bind(result)),result;return jQuery.map(props,createTween,animation),isFunction(animation.opts.start)&&animation.opts.start.call(elem,animation),animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always),jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue})),animation}jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);return adjustCSS(tween.elem,prop,rcssNum.exec(value),tween),tween}]},tweener:function(props,callback){isFunction(props)?(callback=props,props=["*"]):props=props.match(rnothtmlwhite);for(var prop,index=0,length=props.length;index<length;index++)prop=props[index],Animation.tweeners[prop]=Animation.tweeners[prop]||[],Animation.tweeners[prop].unshift(callback)},prefilters:[function(elem,props,opts){var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox="width"in props||"height"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,"fxshow");for(prop in opts.queue||(null==(hooks=jQuery._queueHooks(elem,"fx")).unqueued&&(hooks.unqueued=0,oldfire=hooks.empty.fire,hooks.empty.fire=function(){hooks.unqueued||oldfire()}),hooks.unqueued++,anim.always(function(){anim.always(function(){hooks.unqueued--,jQuery.queue(elem,"fx").length||hooks.empty.fire()})})),props)if(value=props[prop],rfxtypes.test(value)){if(delete props[prop],toggle=toggle||"toggle"===value,value===(hidden?"hide":"show")){if("show"!==value||!dataShow||void 0===dataShow[prop])continue;hidden=!0}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop)}if((propTween=!jQuery.isEmptyObject(props))||!jQuery.isEmptyObject(orig))for(prop in isBox&&1===elem.nodeType&&(opts.overflow=[style.overflow,style.overflowX,style.overflowY],null==(restoreDisplay=dataShow&&dataShow.display)&&(restoreDisplay=dataPriv.get(elem,"display")),"none"===(display=jQuery.css(elem,"display"))&&(restoreDisplay?display=restoreDisplay:(showHide([elem],!0),restoreDisplay=elem.style.display||restoreDisplay,display=jQuery.css(elem,"display"),showHide([elem]))),("inline"===display||"inline-block"===display&&null!=restoreDisplay)&&"none"===jQuery.css(elem,"float")&&(propTween||(anim.done(function(){style.display=restoreDisplay}),null==restoreDisplay&&(display=style.display,restoreDisplay="none"===display?"":display)),style.display="inline-block")),opts.overflow&&(style.overflow="hidden",anim.always(function(){style.overflow=opts.overflow[0],style.overflowX=opts.overflow[1],style.overflowY=opts.overflow[2]})),propTween=!1,orig)propTween||(dataShow?"hidden"in dataShow&&(hidden=dataShow.hidden):dataShow=dataPriv.access(elem,"fxshow",{display:restoreDisplay}),toggle&&(dataShow.hidden=!hidden),hidden&&showHide([elem],!0),anim.done(function(){for(prop in hidden||showHide([elem]),dataPriv.remove(elem,"fxshow"),orig)jQuery.style(elem,prop,orig[prop])})),propTween=createTween(hidden?dataShow[prop]:0,prop,anim),prop in dataShow||(dataShow[prop]=propTween.start,hidden&&(propTween.end=propTween.start,propTween.start=0))}],prefilter:function(callback,prepend){prepend?Animation.prefilters.unshift(callback):Animation.prefilters.push(callback)}}),jQuery.speed=function(speed,easing,fn){var opt=speed&&"object"==typeof speed?jQuery.extend({},speed):{complete:fn||!fn&&easing||isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!isFunction(easing)&&easing};return jQuery.fx.off?opt.duration=0:"number"!=typeof opt.duration&&(opt.duration in jQuery.fx.speeds?opt.duration=jQuery.fx.speeds[opt.duration]:opt.duration=jQuery.fx.speeds._default),null!=opt.queue&&!0!==opt.queue||(opt.queue="fx"),opt.old=opt.complete,opt.complete=function(){isFunction(opt.old)&&opt.old.call(this),opt.queue&&jQuery.dequeue(this,opt.queue)},opt},jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHiddenWithinTree).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback)},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);(empty||dataPriv.get(this,"finish"))&&anim.stop(!0)};return doAnimation.finish=doAnimation,empty||!1===optall.queue?this.each(doAnimation):this.queue(optall.queue,doAnimation)},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop,stop(gotoEnd)};return"string"!=typeof type&&(gotoEnd=clearQueue,clearQueue=type,type=void 0),clearQueue&&!1!==type&&this.queue(type||"fx",[]),this.each(function(){var dequeue=!0,index=null!=type&&type+"queueHooks",timers=jQuery.timers,data=dataPriv.get(this);if(index)data[index]&&data[index].stop&&stopQueue(data[index]);else for(index in data)data[index]&&data[index].stop&&rrun.test(index)&&stopQueue(data[index]);for(index=timers.length;index--;)timers[index].elem!==this||null!=type&&timers[index].queue!==type||(timers[index].anim.stop(gotoEnd),dequeue=!1,timers.splice(index,1));!dequeue&&gotoEnd||jQuery.dequeue(this,type)})},finish:function(type){return!1!==type&&(type=type||"fx"),this.each(function(){var index,data=dataPriv.get(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;for(data.finish=!0,jQuery.queue(this,type,[]),hooks&&hooks.stop&&hooks.stop.call(this,!0),index=timers.length;index--;)timers[index].elem===this&&timers[index].queue===type&&(timers[index].anim.stop(!0),timers.splice(index,1));for(index=0;index<length;index++)queue[index]&&queue[index].finish&&queue[index].finish.call(this);delete data.finish})}}),jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return null==speed||"boolean"==typeof speed?cssFn.apply(this,arguments):this.animate(genFx(name,!0),speed,easing,callback)}}),jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback)}}),jQuery.timers=[],jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;for(fxNow=Date.now();i<timers.length;i++)(timer=timers[i])()||timers[i]!==timer||timers.splice(i--,1);timers.length||jQuery.fx.stop(),fxNow=void 0},jQuery.fx.timer=function(timer){jQuery.timers.push(timer),jQuery.fx.start()},jQuery.fx.interval=13,jQuery.fx.start=function(){inProgress||(inProgress=!0,schedule())},jQuery.fx.stop=function(){inProgress=null},jQuery.fx.speeds={slow:600,fast:200,_default:400},jQuery.fn.delay=function(time,type){return time=jQuery.fx&&jQuery.fx.speeds[time]||time,type=type||"fx",this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout)}})},function(){var input=document.createElement("input"),opt=document.createElement("select").appendChild(document.createElement("option"));input.type="checkbox",support.checkOn=""!==input.value,support.optSelected=opt.selected,(input=document.createElement("input")).value="t",input.type="radio",support.radioValue="t"===input.value}();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}}),jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return void 0===elem.getAttribute?jQuery.prop(elem,name,value):(1===nType&&jQuery.isXMLDoc(elem)||(hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:void 0)),void 0!==value?null===value?void jQuery.removeAttr(elem,name):hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:(elem.setAttribute(name,value+""),value):hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:null==(ret=jQuery.find.attr(elem,name))?void 0:ret)},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&"radio"===value&&nodeName(elem,"input")){var val=elem.value;return elem.setAttribute("type",value),val&&(elem.value=val),value}}}},removeAttr:function(elem,value){var name,i=0,attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&1===elem.nodeType)for(;name=attrNames[i++];)elem.removeAttribute(name)}}),boolHook={set:function(elem,value,name){return!1===value?jQuery.removeAttr(elem,name):elem.setAttribute(name,name),name}},jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();return isXML||(handle=attrHandle[lowercaseName],attrHandle[lowercaseName]=ret,ret=null!=getter(elem,name,isXML)?lowercaseName:null,attrHandle[lowercaseName]=handle),ret}});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;function stripAndCollapse(value){return(value.match(rnothtmlwhite)||[]).join(" ")}function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||""}function classesToArray(value){return Array.isArray(value)?value:"string"==typeof value&&value.match(rnothtmlwhite)||[]}jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){return this.each(function(){delete this[jQuery.propFix[name]||name]})}}),jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return 1===nType&&jQuery.isXMLDoc(elem)||(name=jQuery.propFix[name]||name,hooks=jQuery.propHooks[name]),void 0!==value?hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:elem[name]=value:hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),support.optSelected||(jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;return parent&&parent.parentNode&&parent.parentNode.selectedIndex,null},set:function(elem){var parent=elem.parentNode;parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex)}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this}),jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))});if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)cur.indexOf(" "+clazz+" ")<0&&(cur+=clazz+" ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))});if(!arguments.length)return this.attr("class","");if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)for(;cur.indexOf(" "+clazz+" ")>-1;)cur=cur.replace(" "+clazz+" "," ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},toggleClass:function(value,stateVal){var type=typeof value,isValidValue="string"===type||Array.isArray(value);return"boolean"==typeof stateVal&&isValidValue?stateVal?this.addClass(value):this.removeClass(value):isFunction(value)?this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)}):this.each(function(){var className,i,self,classNames;if(isValidValue)for(i=0,self=jQuery(this),classNames=classesToArray(value);className=classNames[i++];)self.hasClass(className)?self.removeClass(className):self.addClass(className);else void 0!==value&&"boolean"!==type||((className=getClass(this))&&dataPriv.set(this,"__className__",className),this.setAttribute&&this.setAttribute("class",className||!1===value?"":dataPriv.get(this,"__className__")||""))})},hasClass:function(selector){var className,elem,i=0;for(className=" "+selector+" ";elem=this[i++];)if(1===elem.nodeType&&(" "+stripAndCollapse(getClass(elem))+" ").indexOf(className)>-1)return!0;return!1}});var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,valueIsFunction,elem=this[0];return arguments.length?(valueIsFunction=isFunction(value),this.each(function(i){var val;1===this.nodeType&&(null==(val=valueIsFunction?value.call(this,i,jQuery(this).val()):value)?val="":"number"==typeof val?val+="":Array.isArray(val)&&(val=jQuery.map(val,function(value){return null==value?"":value+""})),(hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()])&&"set"in hooks&&void 0!==hooks.set(this,val,"value")||(this.value=val))})):elem?(hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()])&&"get"in hooks&&void 0!==(ret=hooks.get(elem,"value"))?ret:"string"==typeof(ret=elem.value)?ret.replace(rreturn,""):null==ret?"":ret:void 0}}),jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return null!=val?val:stripAndCollapse(jQuery.text(elem))}},select:{get:function(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one="select-one"===elem.type,values=one?null:[],max=one?index+1:options.length;for(i=index<0?max:one?index:0;i<max;i++)if(((option=options[i]).selected||i===index)&&!option.disabled&&(!option.parentNode.disabled||!nodeName(option.parentNode,"optgroup"))){if(value=jQuery(option).val(),one)return value;values.push(value)}return values},set:function(elem,value){for(var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;i--;)((option=options[i]).selected=jQuery.inArray(jQuery.valHooks.option.get(option),values)>-1)&&(optionSet=!0);return optionSet||(elem.selectedIndex=-1),values}}}}),jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(Array.isArray(value))return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1}},support.checkOn||(jQuery.valHooks[this].get=function(elem){return null===elem.getAttribute("value")?"on":elem.value})}),support.focusin="onfocusin"in window;var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(e){e.stopPropagation()};jQuery.extend(jQuery.event,{trigger:function(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];if(cur=lastElement=tmp=elem=elem||document,3!==elem.nodeType&&8!==elem.nodeType&&!rfocusMorph.test(type+jQuery.event.triggered)&&(type.indexOf(".")>-1&&(type=(namespaces=type.split(".")).shift(),namespaces.sort()),ontype=type.indexOf(":")<0&&"on"+type,(event=event[jQuery.expando]?event:new jQuery.Event(type,"object"==typeof event&&event)).isTrigger=onlyHandlers?2:3,event.namespace=namespaces.join("."),event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,event.result=void 0,event.target||(event.target=elem),data=null==data?[event]:jQuery.makeArray(data,[event]),special=jQuery.event.special[type]||{},onlyHandlers||!special.trigger||!1!==special.trigger.apply(elem,data))){if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){for(bubbleType=special.delegateType||type,rfocusMorph.test(bubbleType+type)||(cur=cur.parentNode);cur;cur=cur.parentNode)eventPath.push(cur),tmp=cur;tmp===(elem.ownerDocument||document)&&eventPath.push(tmp.defaultView||tmp.parentWindow||window)}for(i=0;(cur=eventPath[i++])&&!event.isPropagationStopped();)lastElement=cur,event.type=i>1?bubbleType:special.bindType||type,(handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle"))&&handle.apply(cur,data),(handle=ontype&&cur[ontype])&&handle.apply&&acceptData(cur)&&(event.result=handle.apply(cur,data),!1===event.result&&event.preventDefault());return event.type=type,onlyHandlers||event.isDefaultPrevented()||special._default&&!1!==special._default.apply(eventPath.pop(),data)||!acceptData(elem)||ontype&&isFunction(elem[type])&&!isWindow(elem)&&((tmp=elem[ontype])&&(elem[ontype]=null),jQuery.event.triggered=type,event.isPropagationStopped()&&lastElement.addEventListener(type,stopPropagationCallback),elem[type](),event.isPropagationStopped()&&lastElement.removeEventListener(type,stopPropagationCallback),jQuery.event.triggered=void 0,tmp&&(elem[ontype]=tmp)),event.result}},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event,event,{type:type,isSimulated:!0});jQuery.event.trigger(e,null,elem)}}),jQuery.fn.extend({trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this)})},triggerHandler:function(type,data){var elem=this[0];if(elem)return jQuery.event.trigger(type,data,elem,!0)}}),support.focusin||jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event))};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix);attaches||doc.addEventListener(orig,handler,!0),dataPriv.access(doc,fix,(attaches||0)+1)},teardown:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix)-1;attaches?dataPriv.access(doc,fix,attaches):(doc.removeEventListener(orig,handler,!0),dataPriv.remove(doc,fix))}}});var location=window.location,nonce=Date.now(),rquery=/\?/;jQuery.parseXML=function(data){var xml;if(!data||"string"!=typeof data)return null;try{xml=(new window.DOMParser).parseFromString(data,"text/xml")}catch(e){xml=void 0}return xml&&!xml.getElementsByTagName("parsererror").length||jQuery.error("Invalid XML: "+data),xml};var rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj))jQuery.each(obj,function(i,v){traditional||rbracket.test(prefix)?add(prefix,v):buildParams(prefix+"["+("object"==typeof v&&null!=v?i:"")+"]",v,traditional,add)});else if(traditional||"object"!==toType(obj))add(prefix,obj);else for(name in obj)buildParams(prefix+"["+name+"]",obj[name],traditional,add)}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,valueOrFunction){var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(null==value?"":value)};if(Array.isArray(a)||a.jquery&&!jQuery.isPlainObject(a))jQuery.each(a,function(){add(this.name,this.value)});else for(prefix in a)buildParams(prefix,a[prefix],traditional,add);return s.join("&")},jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return null==val?null:Array.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}});var r20=/%20/g,rhash=/#.*$/,rantiCache=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/gm,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,prefilters={},transports={},allTypes="*/".concat("*"),originAnchor=document.createElement("a");function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){"string"!=typeof dataTypeExpression&&(func=dataTypeExpression,dataTypeExpression="*");var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func))for(;dataType=dataTypes[i++];)"+"===dataType[0]?(dataType=dataType.slice(1)||"*",(structure[dataType]=structure[dataType]||[]).unshift(func)):(structure[dataType]=structure[dataType]||[]).push(func)}}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;return inspected[dataType]=!0,jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);return"string"!=typeof dataTypeOrTransport||seekingTransport||inspected[dataTypeOrTransport]?seekingTransport?!(selected=dataTypeOrTransport):void 0:(options.dataTypes.unshift(dataTypeOrTransport),inspect(dataTypeOrTransport),!1)}),selected}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*")}function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src)void 0!==src[key]&&((flatOptions[key]?target:deep||(deep={}))[key]=src[key]);return deep&&jQuery.extend(!0,target,deep),target}originAnchor.href=location.href,jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(location.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){"object"==typeof url&&(options=url,url=void 0),options=options||{};var transport,cacheURL,responseHeadersString,responseHeaders,timeoutTimer,urlAnchor,completed,fireGlobals,i,uncached,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(completed){if(!responseHeaders)for(responseHeaders={};match=rheaders.exec(responseHeadersString);)responseHeaders[match[1].toLowerCase()]=match[2];match=responseHeaders[key.toLowerCase()]}return null==match?null:match},getAllResponseHeaders:function(){return completed?responseHeadersString:null},setRequestHeader:function(name,value){return null==completed&&(name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name,requestHeaders[name]=value),this},overrideMimeType:function(type){return null==completed&&(s.mimeType=type),this},statusCode:function(map){var code;if(map)if(completed)jqXHR.always(map[jqXHR.status]);else for(code in map)statusCode[code]=[statusCode[code],map[code]];return this},abort:function(statusText){var finalText=statusText||strAbort;return transport&&transport.abort(finalText),done(0,finalText),this}};if(deferred.promise(jqXHR),s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//"),s.type=options.method||options.type||s.method||s.type,s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""],null==s.crossDomain){urlAnchor=document.createElement("a");try{urlAnchor.href=s.url,urlAnchor.href=urlAnchor.href,s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!=urlAnchor.protocol+"//"+urlAnchor.host}catch(e){s.crossDomain=!0}}if(s.data&&s.processData&&"string"!=typeof s.data&&(s.data=jQuery.param(s.data,s.traditional)),inspectPrefiltersOrTransports(prefilters,s,options,jqXHR),completed)return jqXHR;for(i in(fireGlobals=jQuery.event&&s.global)&&0==jQuery.active++&&jQuery.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!rnoContent.test(s.type),cacheURL=s.url.replace(rhash,""),s.hasContent?s.data&&s.processData&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&(s.data=s.data.replace(r20,"+")):(uncached=s.url.slice(cacheURL.length),s.data&&(s.processData||"string"==typeof s.data)&&(cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data,delete s.data),!1===s.cache&&(cacheURL=cacheURL.replace(rantiCache,"$1"),uncached=(rquery.test(cacheURL)?"&":"?")+"_="+nonce+++uncached),s.url=cacheURL+uncached),s.ifModified&&(jQuery.lastModified[cacheURL]&&jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]),jQuery.etag[cacheURL]&&jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])),(s.data&&s.hasContent&&!1!==s.contentType||options.contentType)&&jqXHR.setRequestHeader("Content-Type",s.contentType),jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+allTypes+"; q=0.01":""):s.accepts["*"]),s.headers)jqXHR.setRequestHeader(i,s.headers[i]);if(s.beforeSend&&(!1===s.beforeSend.call(callbackContext,jqXHR,s)||completed))return jqXHR.abort();if(strAbort="abort",completeDeferred.add(s.complete),jqXHR.done(s.success),jqXHR.fail(s.error),transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR)){if(jqXHR.readyState=1,fireGlobals&&globalEventContext.trigger("ajaxSend",[jqXHR,s]),completed)return jqXHR;s.async&&s.timeout>0&&(timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout));try{completed=!1,transport.send(requestHeaders,done)}catch(e){if(completed)throw e;done(-1,e)}}else done(-1,"No Transport");function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;completed||(completed=!0,timeoutTimer&&window.clearTimeout(timeoutTimer),transport=void 0,responseHeadersString=headers||"",jqXHR.readyState=status>0?4:0,isSuccess=status>=200&&status<300||304===status,responses&&(response=function(s,jqXHR,responses){for(var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;"*"===dataTypes[0];)dataTypes.shift(),void 0===ct&&(ct=s.mimeType||jqXHR.getResponseHeader("Content-Type"));if(ct)for(type in contents)if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break}if(dataTypes[0]in responses)finalDataType=dataTypes[0];else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break}firstDataType||(firstDataType=type)}finalDataType=finalDataType||firstDataType}if(finalDataType)return finalDataType!==dataTypes[0]&&dataTypes.unshift(finalDataType),responses[finalDataType]}(s,jqXHR,responses)),response=function(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1])for(conv in s.converters)converters[conv.toLowerCase()]=s.converters[conv];for(current=dataTypes.shift();current;)if(s.responseFields[current]&&(jqXHR[s.responseFields[current]]=response),!prev&&isSuccess&&s.dataFilter&&(response=s.dataFilter(response,s.dataType)),prev=current,current=dataTypes.shift())if("*"===current)current=prev;else if("*"!==prev&&prev!==current){if(!(conv=converters[prev+" "+current]||converters["* "+current]))for(conv2 in converters)if((tmp=conv2.split(" "))[1]===current&&(conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]])){!0===conv?conv=converters[conv2]:!0!==converters[conv2]&&(current=tmp[0],dataTypes.unshift(tmp[1]));break}if(!0!==conv)if(conv&&s.throws)response=conv(response);else try{response=conv(response)}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current}}}return{state:"success",data:response}}(s,response,jqXHR,isSuccess),isSuccess?(s.ifModified&&((modified=jqXHR.getResponseHeader("Last-Modified"))&&(jQuery.lastModified[cacheURL]=modified),(modified=jqXHR.getResponseHeader("etag"))&&(jQuery.etag[cacheURL]=modified)),204===status||"HEAD"===s.type?statusText="nocontent":304===status?statusText="notmodified":(statusText=response.state,success=response.data,isSuccess=!(error=response.error))):(error=statusText,!status&&statusText||(statusText="error",status<0&&(status=0))),jqXHR.status=status,jqXHR.statusText=(nativeStatusText||statusText)+"",isSuccess?deferred.resolveWith(callbackContext,[success,statusText,jqXHR]):deferred.rejectWith(callbackContext,[jqXHR,statusText,error]),jqXHR.statusCode(statusCode),statusCode=void 0,fireGlobals&&globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]),completeDeferred.fireWith(callbackContext,[jqXHR,statusText]),fireGlobals&&(globalEventContext.trigger("ajaxComplete",[jqXHR,s]),--jQuery.active||jQuery.event.trigger("ajaxStop")))}return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,void 0,callback,"script")}}),jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){return isFunction(data)&&(type=type||callback,callback=data,data=void 0),jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}}),jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},jQuery.fn.extend({wrapAll:function(html){var wrap;return this[0]&&(isFunction(html)&&(html=html.call(this[0])),wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&wrap.insertBefore(this[0]),wrap.map(function(){for(var elem=this;elem.firstElementChild;)elem=elem.firstElementChild;return elem}).append(this)),this},wrapInner:function(html){return isFunction(html)?this.each(function(i){jQuery(this).wrapInner(html.call(this,i))}):this.each(function(){var self=jQuery(this),contents=self.contents();contents.length?contents.wrapAll(html):self.append(html)})},wrap:function(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html)})},unwrap:function(selector){return this.parent(selector).not("body").each(function(){jQuery(this).replaceWith(this.childNodes)}),this}}),jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem)},jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length)},jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest}catch(e){}};var xhrSuccessStatus={0:200,1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&"withCredentials"in xhrSupported,support.ajax=xhrSupported=!!xhrSupported,jQuery.ajaxTransport(function(options){var callback,errorCallback;if(support.cors||xhrSupported&&!options.crossDomain)return{send:function(headers,complete){var i,xhr=options.xhr();if(xhr.open(options.type,options.url,options.async,options.username,options.password),options.xhrFields)for(i in options.xhrFields)xhr[i]=options.xhrFields[i];for(i in options.mimeType&&xhr.overrideMimeType&&xhr.overrideMimeType(options.mimeType),options.crossDomain||headers["X-Requested-With"]||(headers["X-Requested-With"]="XMLHttpRequest"),headers)xhr.setRequestHeader(i,headers[i]);callback=function(type){return function(){callback&&(callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null,"abort"===type?xhr.abort():"error"===type?"number"!=typeof xhr.status?complete(0,"error"):complete(xhr.status,xhr.statusText):complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,"text"!==(xhr.responseType||"text")||"string"!=typeof xhr.responseText?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders()))}},xhr.onload=callback(),errorCallback=xhr.onerror=xhr.ontimeout=callback("error"),void 0!==xhr.onabort?xhr.onabort=errorCallback:xhr.onreadystatechange=function(){4===xhr.readyState&&window.setTimeout(function(){callback&&errorCallback()})},callback=callback("abort");try{xhr.send(options.hasContent&&options.data||null)}catch(e){if(callback)throw e}},abort:function(){callback&&callback()}}}),jQuery.ajaxPrefilter(function(s){s.crossDomain&&(s.contents.script=!1)}),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){return jQuery.globalEval(text),text}}}),jQuery.ajaxPrefilter("script",function(s){void 0===s.cache&&(s.cache=!1),s.crossDomain&&(s.type="GET")}),jQuery.ajaxTransport("script",function(s){var script,callback;if(s.crossDomain)return{send:function(_,complete){script=jQuery("<script>").prop({charset:s.scriptCharset,src:s.url}).on("load error",callback=function(evt){script.remove(),callback=null,evt&&complete("error"===evt.type?404:200,evt.type)}),document.head.appendChild(script[0])},abort:function(){callback&&callback()}}});var body,oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;return this[callback]=!0,callback}}),jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=!1!==s.jsonp&&(rjsonp.test(s.url)?"url":"string"==typeof s.data&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||"jsonp"===s.dataTypes[0])return callbackName=s.jsonpCallback=isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback,jsonProp?s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName):!1!==s.jsonp&&(s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName),s.converters["script json"]=function(){return responseContainer||jQuery.error(callbackName+" was not called"),responseContainer[0]},s.dataTypes[0]="json",overwritten=window[callbackName],window[callbackName]=function(){responseContainer=arguments},jqXHR.always(function(){void 0===overwritten?jQuery(window).removeProp(callbackName):window[callbackName]=overwritten,s[callbackName]&&(s.jsonpCallback=originalSettings.jsonpCallback,oldCallbacks.push(callbackName)),responseContainer&&isFunction(overwritten)&&overwritten(responseContainer[0]),responseContainer=overwritten=void 0}),"script"}),support.createHTMLDocument=((body=document.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===body.childNodes.length),jQuery.parseHTML=function(data,context,keepScripts){return"string"!=typeof data?[]:("boolean"==typeof context&&(keepScripts=context,context=!1),context||(support.createHTMLDocument?((base=(context=document.implementation.createHTMLDocument("")).createElement("base")).href=document.location.href,context.head.appendChild(base)):context=document),parsed=rsingleTag.exec(data),scripts=!keepScripts&&[],parsed?[context.createElement(parsed[1])]:(parsed=buildFragment([data],context,scripts),scripts&&scripts.length&&jQuery(scripts).remove(),jQuery.merge([],parsed.childNodes)));var base,parsed,scripts},jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(" ");return off>-1&&(selector=stripAndCollapse(url.slice(off)),url=url.slice(0,off)),isFunction(params)?(callback=params,params=void 0):params&&"object"==typeof params&&(type="POST"),self.length>0&&jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments,self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR])})}),this},jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}}),jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length},jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};"static"===position&&(elem.style.position="relative"),curOffset=curElem.offset(),curCSSTop=jQuery.css(elem,"top"),curCSSLeft=jQuery.css(elem,"left"),("absolute"===position||"fixed"===position)&&(curCSSTop+curCSSLeft).indexOf("auto")>-1?(curTop=(curPosition=curElem.position()).top,curLeft=curPosition.left):(curTop=parseFloat(curCSSTop)||0,curLeft=parseFloat(curCSSLeft)||0),isFunction(options)&&(options=options.call(elem,i,jQuery.extend({},curOffset))),null!=options.top&&(props.top=options.top-curOffset.top+curTop),null!=options.left&&(props.left=options.left-curOffset.left+curLeft),"using"in options?options.using.call(elem,props):curElem.css(props)}},jQuery.fn.extend({offset:function(options){if(arguments.length)return void 0===options?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)});var rect,win,elem=this[0];return elem?elem.getClientRects().length?(rect=elem.getBoundingClientRect(),win=elem.ownerDocument.defaultView,{top:rect.top+win.pageYOffset,left:rect.left+win.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var offsetParent,offset,doc,elem=this[0],parentOffset={top:0,left:0};if("fixed"===jQuery.css(elem,"position"))offset=elem.getBoundingClientRect();else{for(offset=this.offset(),doc=elem.ownerDocument,offsetParent=elem.offsetParent||doc.documentElement;offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.parentNode;offsetParent&&offsetParent!==elem&&1===offsetParent.nodeType&&((parentOffset=jQuery(offsetParent).offset()).top+=jQuery.css(offsetParent,"borderTopWidth",!0),parentOffset.left+=jQuery.css(offsetParent,"borderLeftWidth",!0))}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",!0),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var offsetParent=this.offsetParent;offsetParent&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.offsetParent;return offsetParent||documentElement})}}),jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top="pageYOffset"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win;if(isWindow(elem)?win=elem:9===elem.nodeType&&(win=elem.defaultView),void 0===val)return win?win[prop]:elem[method];win?win.scrollTo(top?win.pageXOffset:val,top?val:win.pageYOffset):elem[method]=val},method,val,arguments.length)}}),jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed)return computed=curCSS(elem,prop),rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed})}),jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||"boolean"!=typeof margin),extra=defaultExtra||(!0===margin||!0===value?"margin":"border");return access(this,function(elem,type,value){var doc;return isWindow(elem)?0===funcName.indexOf("outer")?elem["inner"+name]:elem.document.documentElement["client"+name]:9===elem.nodeType?(doc=elem.documentElement,Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])):void 0===value?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:void 0,chainable)}})}),jQuery.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}}),jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}}),jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return 1===arguments.length?this.off(selector,"**"):this.off(types,selector||"**",fn)}}),jQuery.proxy=function(fn,context){var tmp,args,proxy;if("string"==typeof context&&(tmp=fn[context],context=fn,fn=tmp),isFunction(fn))return args=slice.call(arguments,2),(proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)))}).guid=fn.guid=fn.guid||jQuery.guid++,proxy},jQuery.holdReady=function(hold){hold?jQuery.readyWait++:jQuery.ready(!0)},jQuery.isArray=Array.isArray,jQuery.parseJSON=JSON.parse,jQuery.nodeName=nodeName,jQuery.isFunction=isFunction,jQuery.isWindow=isWindow,jQuery.camelCase=camelCase,jQuery.type=toType,jQuery.now=Date.now,jQuery.isNumeric=function(obj){var type=jQuery.type(obj);return("number"===type||"string"===type)&&!isNaN(obj-parseFloat(obj))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return jQuery});var _jQuery=window.jQuery,_$=window.$;return jQuery.noConflict=function(deep){return window.$===jQuery&&(window.$=_$),deep&&window.jQuery===jQuery&&(window.jQuery=_jQuery),jQuery},noGlobal||(window.jQuery=window.$=jQuery),jQuery}),function(){!function(){for(var lastTime=0,vendors=["ms","moz","webkit","o"],x=0;x<vendors.length&&!window.requestAnimationFrame;++x)window.requestAnimationFrame=window[vendors[x]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[vendors[x]+"CancelAnimationFrame"]||window[vendors[x]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(callback,element){var currTime=(new Date).getTime(),timeToCall=Math.max(0,16-(currTime-lastTime)),id=window.setTimeout(function(){callback(currTime+timeToCall)},timeToCall);return lastTime=currTime+timeToCall,id}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(id){clearTimeout(id)})}(),window.Typewriter=function(element,options){return this._settings={cursorAnimationPaused:!1,opacityIncreasing:!1,currentOpacity:1,delayedQue:[],delayItemsCount:0,eventQue:[],calledEvents:[],eventRunning:!1,timeout:!1,delayExecution:!1,fps:.06,typingFrameCount:0,stringToTypeHTMLArray:[],currentTypedCharacters:[],typing:!1,usedIDs:[],charAmountToDelete:!1,userOptions:{},eventLoopRerun:0},element?"object"!=typeof options?console.error("Typewriter only accepts the options as an object."):(this._settings.userOptions=options,this.default_options={strings:!1,cursorClassName:"typewriter-cursor",cursor:"|",animateCursor:!0,blinkSpeed:50,typingSpeed:"natural",deleteSpeed:"natural",charSpanClassName:"typewriter-char",wrapperClassName:"typewriter-wrapper",loop:!1,autoStart:!1,devMode:!1},this.options=this._setupOptions(options),this.el=element,this._setupTypwriterWrapper(),this._startCursorAnimation(),void(!0===this.options.autoStart&&this.options.strings&&this.typeOutAllStrings())):console.error("Please choose an DOM element so that type writer can display itself.")};var TypewriterPrototype=window.Typewriter.prototype;TypewriterPrototype.stop=function(){return this._addToEventQue(this._stopEventLoop),this},TypewriterPrototype.start=function(){return this._startEventLoop(),this},TypewriterPrototype.rerun=function(){return this._addToEventQue(this._rerunCalledEvents),this},TypewriterPrototype.typeString=function(string){if(!string||"string"!=typeof string)return console.error("Please enter a string as the paramater.");var string_chars=this._getCharacters(string);return this._addToEventQue([this._typeCharacters,[string_chars]]),this},TypewriterPrototype.deleteAll=function(){return this._addToEventQue([this._deleteChars,["all"]]),this},TypewriterPrototype.deleteChars=function(amount){return this._addToEventQue([this._deleteChars,[amount]]),this},TypewriterPrototype.pauseFor=function(ms){return this._addToEventQue([this._pauseFor,[ms]]),this},TypewriterPrototype.typeOutAllStrings=function(){var characters_array=this._getStringsAsCharsArray();if(1===characters_array.length)this._typeCharacters(characters_array[0]);else for(var i=0,length=characters_array.length;i<length;i++)this._addToEventQue([this._typeCharacters,[characters_array[i]]]),this.pauseFor(this._randomInteger(1500,2500)),this.deleteAll(),this.pauseFor(this._randomInteger(1500,2500));return this},TypewriterPrototype.changeSettings=function(new_settings){return new_settings||"object"==typeof new_settings?(this._addToEventQue([this._changeSettings,[JSON.stringify(new_settings)]]),this):console.error("Typewriter will only accept an object as the settings.")},TypewriterPrototype.changeBlinkSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({blinkSpeed:new_speed}),this):console.error("Please enter a number for the new blink speed.")},TypewriterPrototype.changeTypingSpeed=function(new_speed){if(!new_speed&&"number"!=typeof new_speed)return console.error("Please enter a number for the new typing speed.");return this.changeSettings({typingSpeed:new_speed}),this},TypewriterPrototype.changeDeleteSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({changeDeleteSpeed:new_speed}),this):console.error("Please enter a number for the new delete speed.")},TypewriterPrototype._rerunCalledEvents=function(){this._settings.currentTypedCharacters.length>0?(this.deleteAll(),this._resetEventLoop("rerunCalledEvents")):(this._settings.eventQue=this._settings.calledEvents,this._settings.calledEvents=[],this.options=this._setupOptions(this._settings.userOptions),this._settings.usedIDs=[],this.charAmountToDelete=!1,this._startEventLoop())},TypewriterPrototype._deleteChars=function(amount){return amount&&(this._settings.charAmountToDelete=amount),this._deletingCharIdsAnimation=window.requestAnimationFrame(this._deletingCharAnimationFrame.bind(this)),this},TypewriterPrototype._pauseFor=function(ms){var self=this;self._settings.eventRunning=!0,setTimeout(function(){self._resetEventLoop("pauseFor")},ms)},TypewriterPrototype._changeSettings=function(new_settings){this.options=this._setupOptions(JSON.parse(new_settings[0])),this._resetEventLoop("changeSettings"),this.options.devMode&&console.log("New settings",this.options)},TypewriterPrototype._deletingCharAnimationFrame=function(){var self=this,delete_speed=this.options.deleteSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName,current_typed_char_ids=self._settings.currentTypedCharacters,char_amount_to_delete=self._settings.charAmountToDelete;if(!self._settings.charAmountToDelete||0===self._settings.charAmountToDelete||0===current_typed_char_ids)return self._resetEventLoop("deletingCharAnimationFrame"),!0;"natural"==delete_speed&&(delete_speed=self._randomInteger(50,150)),"all"==char_amount_to_delete&&(char_amount_to_delete=current_typed_char_ids.length,self._settings.charAmountToDelete=char_amount_to_delete),setTimeout(function(){if(self._settings.charAmountToDelete){var last_typed_char_index=current_typed_char_ids.length-1,get_last_typed_char=current_typed_char_ids[last_typed_char_index];self._settings.currentTypedCharacters.splice(last_typed_char_index,1);var char_to_delete_el=document.getElementById(get_last_typed_char);if(char_to_delete_el)self.el.querySelector("."+typewriter_wrapper_class_name).removeChild(char_to_delete_el),self._settings.charAmountToDelete=char_amount_to_delete-1,self.options.devMode&&console.log("Deleted char with ID",get_last_typed_char)}self._deletingCharIdsAnimation=window.requestAnimationFrame(self._deletingCharAnimationFrame.bind(self))},delete_speed)},TypewriterPrototype._setupOptions=function(new_options){var merged_options={};for(var attrname in this.default_options)merged_options[attrname]=this.default_options[attrname];if(this._settings.userOptions)for(var attrname in this._settings.userOptions)merged_options[attrname]=this._settings.userOptions[attrname];for(var attrname in new_options)merged_options[attrname]=new_options[attrname];return merged_options},TypewriterPrototype._addToEventQue=function(event){this._settings.eventQue.push(event),this._settings.eventQue.length>0&&!this._settings.eventRunning&&this.options.autoStart&&this._startEventLoop()},TypewriterPrototype._startEventLoop=function(){if(this.options.devMode&&console.log("Event loop started."),!this._settings.eventRunning){if(this._settings.eventQue.length>0){this.eventLoopRerun=0;var first_event=this._settings.eventQue[0];"function"==typeof first_event?(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event.call(this),this.options.devMode&&console.log("Event started.")):first_event instanceof Array&&"function"==typeof first_event[0]&&first_event[1]instanceof Array&&(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event[0].call(this,first_event[1]),this.options.devMode&&console.log("Event started."))}this._eventQueAnimation=window.requestAnimationFrame(this._startEventLoop.bind(this))}if(!this._settings.eventRunning&&this._settings.eventQue.length<=0){var self=this;return self._stopEventLoop(),void setTimeout(function(){self.options.loop&&(self.eventLoopRerun++,self.options.devMode&&console.log("Before Loop State",self._settings),self.eventLoopRerun>4?(console.error("Maximum amount of loop retries reached."),self._stopEventLoop()):(self.options.devMode&&console.log("Looping events."),self._rerunCalledEvents()))},1e3)}},TypewriterPrototype._resetEventLoop=function(name){var event_name=name||"Event";this._settings.eventRunning=!1,this._startEventLoop(),this.options.devMode&&console.log(event_name,"Finished")},TypewriterPrototype._stopEventLoop=function(){window.cancelAnimationFrame(this._eventQueAnimation),this.options.devMode&&console.log("Event loop stopped.")},TypewriterPrototype._setupTypwriterWrapper=function(){var typewriter_wrapper_class_name=this.options.wrapperClassName,typewriter_wrapper=document.createElement("span");typewriter_wrapper.className=typewriter_wrapper_class_name,this.el.innerHTML="",this.el.appendChild(typewriter_wrapper)},TypewriterPrototype._typeCharacters=function(characters_array){return this._settings.stringToTypeHTMLArray=this._convertCharsToHTML(characters_array),this._typingAnimation=window.requestAnimationFrame(this._typingAnimationFrame.bind(this,characters_array.length)),this},TypewriterPrototype._typingAnimationFrame=function(total_items){var self=this,typing_speed=this.options.typingSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName;if(0==self._settings.stringToTypeHTMLArray.length)return window.cancelAnimationFrame(self._typingAnimation),this._resetEventLoop("typingAnimationFrame"),!0;"natural"==typing_speed&&(typing_speed=this._randomInteger(50,150)),setTimeout(function(){self.el.innerHTML;var item_to_type=self._settings.stringToTypeHTMLArray[0];self.el.querySelector("."+typewriter_wrapper_class_name).appendChild(item_to_type.el),self._settings.currentTypedCharacters.push(item_to_type.id),self._settings.stringToTypeHTMLArray.splice(0,1),self._typingAnimation=window.requestAnimationFrame(self._typingAnimationFrame.bind(self,total_items)),self.options.devMode&&console.log("Typed",item_to_type)},typing_speed)},TypewriterPrototype._convertCharsToHTML=function(chars){for(var chars_html_wrap_array=[],char_class_name=this.options.charSpanClassName,chars_array=chars[0],i=0,length=chars_array.length;i<length;i++){var char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" typewriter-item-"+i,char_element.innerHTML=chars_array[i],chars_html_wrap_array.push({id:char_id,el:char_element})}return chars_html_wrap_array},TypewriterPrototype._getCharacters=function(string){return"string"==typeof string&&string.split("")},TypewriterPrototype._getStringsAsCharsArray=function(){var strings_array_check=this.options.strings instanceof Array,strings_string_check="string"==typeof this.options.strings;if(!strings_array_check)return strings_string_check?[this.options.strings.split("")]:console.error("Typewriter only accepts strings or an array of strings as the input.");for(var strings_chars_array=[],i=0,length=this.options.strings.length;i<length;i++){var string_chars=this._getCharacters(this.options.strings[i]);if(!string_chars){console.error("Please enter only strings.");break}strings_chars_array.push(string_chars)}return strings_chars_array},TypewriterPrototype._cursorAnimationFrame=function(){if(!this._settings.cursorAnimationPaused){var opacity_amount=.001*this.options.blinkSpeed,cursor_el=this.el.querySelector(".typewriter-cursor");1==this._settings.opacityIncreasing&&(this._settings.currentOpacity>=1&&(this._settings.opacityIncreasing=!1,this._settings.currentOpacity=1),this._settings.currentOpacity+=opacity_amount),0==this._settings.opacityIncreasing&&(this._settings.currentOpacity<=0&&(this._settings.opacityIncreasing=!0,this._settings.currentOpacity=0),this._settings.currentOpacity-=opacity_amount),cursor_el.style.opacity=this._settings.currentOpacity,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))}},TypewriterPrototype.appendText=function(text){return this._addToEventQue([this._appendText,[text]]),this},TypewriterPrototype._appendText=function(text){var char_class_name=this.options.charSpanClassName,char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" dom-appended",char_element.innerHTML=text;var items=[];items.push({id:char_id,el:char_element}),this._settings.stringToTypeHTMLArray=items,window.requestAnimationFrame(this._typingAnimationFrame.bind(this,1))},TypewriterPrototype._startCursorAnimation=function(){var cursor=this.options.cursor,cursor_class_name=this.options.cursorClassName,cursor_element=document.createElement("span");cursor_element.className=cursor_class_name,cursor_element.innerHTML=cursor,this.el.appendChild(cursor_element),this.options.animateCursor&&(this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this)))},TypewriterPrototype._pauseCursorAnimation=function(){this._settings.cursorAnimationPaused||(window.cancelAnimationFrame(this._cursorAnimation),this._settings.cursorAnimationPaused=!0)},TypewriterPrototype._restartCursorAnimation=function(){if(!this._settings.cursorAnimationPaused)return console.error("Cursor animation is already running.");this._settings.cursorAnimationPaused=!1,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))},TypewriterPrototype._randomInteger=function(min,max){return Math.floor(Math.random()*(max-min+1))+min},TypewriterPrototype._randomID=function(){for(var text="",possible="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",i=0;i<this._randomInteger(5,15);i++)text+=possible.charAt(Math.floor(Math.random()*possible.length));return text},TypewriterPrototype._generateUniqueID=function(){var temp_id=this._randomID();return-1==this._settings.usedIDs.indexOf(temp_id)?(this._settings.usedIDs.push(temp_id),temp_id):this._generateUniqueID.call(this)}}(),function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define("uikit",factory):global.UIkit=factory()}(this,function(){function bind(fn,context){return function(a){var l=arguments.length;return l?l>1?fn.apply(context,arguments):fn.call(context,a):fn.call(context)}}var hasOwnProperty=Object.prototype.hasOwnProperty;function hasOwn(obj,key){return hasOwnProperty.call(obj,key)}var hyphenateCache={},hyphenateRe=/([a-z\d])([A-Z])/g;function hyphenate(str){return str in hyphenateCache||(hyphenateCache[str]=str.replace(hyphenateRe,"$1-$2").toLowerCase()),hyphenateCache[str]}var camelizeRe=/-(\w)/g;function camelize(str){return str.replace(camelizeRe,toUpper)}function toUpper(_,c){return c?c.toUpperCase():""}function ucfirst(str){return str.length?toUpper(0,str.charAt(0))+str.slice(1):""}var strPrototype=String.prototype,startsWithFn=strPrototype.startsWith||function(search){return 0===this.lastIndexOf(search,0)};function startsWith(str,search){return startsWithFn.call(str,search)}var endsWithFn=strPrototype.endsWith||function(search){return this.substr(-search.length)===search};function endsWith(str,search){return endsWithFn.call(str,search)}var includesFn=function(search){return~this.indexOf(search)},includesStr=strPrototype.includes||includesFn,includesArray=Array.prototype.includes||includesFn;function includes(obj,search){return obj&&(isString(obj)?includesStr:includesArray).call(obj,search)}var isArray=Array.isArray;function isFunction(obj){return"function"==typeof obj}function isObject(obj){return null!==obj&&"object"==typeof obj}function isPlainObject(obj){return isObject(obj)&&Object.getPrototypeOf(obj)===Object.prototype}function isWindow(obj){return isObject(obj)&&obj===obj.window}function isDocument(obj){return isObject(obj)&&9===obj.nodeType}function isJQuery(obj){return isObject(obj)&&!!obj.jquery}function isNode(element){return element instanceof Node||isObject(element)&&1===element.nodeType}function isNodeCollection(element){return element instanceof NodeList||element instanceof HTMLCollection}function isBoolean(value){return"boolean"==typeof value}function isString(value){return"string"==typeof value}function isNumber(value){return"number"==typeof value}function isNumeric(value){return isNumber(value)||isString(value)&&!isNaN(value-parseFloat(value))}function isUndefined(value){return void 0===value}function toBoolean(value){return isBoolean(value)?value:"true"===value||"1"===value||""===value||"false"!==value&&"0"!==value&&value}function toNumber(value){var number=Number(value);return!isNaN(number)&&number}function toFloat(value){return parseFloat(value)||0}function toNode(element){return isNode(element)||isWindow(element)||isDocument(element)?element:isNodeCollection(element)||isJQuery(element)?element[0]:isArray(element)?toNode(element[0]):null}var arrayProto=Array.prototype;function toNodes(element){return isNode(element)?[element]:isNodeCollection(element)?arrayProto.slice.call(element):isArray(element)?element.map(toNode).filter(Boolean):isJQuery(element)?element.toArray():[]}function toList(value){return isArray(value)?value:isString(value)?value.split(/,(?![^(]*\))/).map(function(value){return isNumeric(value)?toNumber(value):toBoolean(value.trim())}):[value]}function toMs(time){return time?endsWith(time,"ms")?toFloat(time):1e3*toFloat(time):0}function swap(value,a,b){return value.replace(new RegExp(a+"|"+b,"mg"),function(match){return match===a?b:a})}var assign=Object.assign||function(target){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];target=Object(target);for(var i=0;i<args.length;i++){var source=args[i];if(null!==source)for(var key in source)hasOwn(source,key)&&(target[key]=source[key])}return target};function each(obj,cb){for(var key in obj)cb.call(obj[key],obj[key],key)}function sortBy(collection,prop){return collection.sort(function(a,b){return a[prop]>b[prop]?1:b[prop]>a[prop]?-1:0})}function clamp(number,min,max){return void 0===min&&(min=0),void 0===max&&(max=1),Math.min(Math.max(number,min),max)}function noop(){}function intersectRect(r1,r2){return r1.left<=r2.right&&r2.left<=r1.right&&r1.top<=r2.bottom&&r2.top<=r1.bottom}function pointInRect(point,rect){return intersectRect({top:point.y,bottom:point.y,left:point.x,right:point.x},rect)}var Dimensions={ratio:function(dimensions,prop,value){var obj,aProp="width"===prop?"height":"width";return(obj={})[aProp]=Math.round(value*dimensions[aProp]/dimensions[prop]),obj[prop]=value,obj},contain:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=assign({},dimensions),function(_,prop){return dimensions=dimensions[prop]>maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions},cover:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=this.contain(dimensions,maxDimensions),function(_,prop){return dimensions=dimensions[prop]<maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions}};function attr(element,name,value){if(isObject(name))for(var key in name)attr(element,key,name[key]);else{if(isUndefined(value))return(element=toNode(element))&&element.getAttribute(name);toNodes(element).forEach(function(element){isFunction(value)&&(value=value.call(element,attr(element,name))),null===value?removeAttr(element,name):element.setAttribute(name,value)})}}function hasAttr(element,name){return toNodes(element).some(function(element){return element.hasAttribute(name)})}function removeAttr(element,name){element=toNodes(element),name.split(" ").forEach(function(name){return element.forEach(function(element){return element.removeAttribute(name)})})}function filterAttr(element,attribute,pattern,replacement){attr(element,attribute,function(value){return value?value.replace(pattern,replacement):value})}function data(element,attribute){for(var i=0,attrs=[attribute,"data-"+attribute];i<attrs.length;i++)if(hasAttr(element,attrs[i]))return attr(element,attrs[i])}function query(selector,context){return toNode(selector)||find(selector,isContextSelector(selector)?context:document)}function queryAll(selector,context){var nodes=toNodes(selector);return nodes.length&&nodes||findAll(selector,isContextSelector(selector)?context:document)}function find(selector,context){return toNode(_query(selector,context,"querySelector"))}function findAll(selector,context){return toNodes(_query(selector,context,"querySelectorAll"))}function _query(selector,context,queryFn){if(void 0===context&&(context=document),!selector||!isString(selector))return null;var removes;isContextSelector(selector=selector.replace(contextSanitizeRe,"$1 *"))&&(removes=[],selector=selector.split(",").map(function(selector,i){var ctx=context;if("!"===(selector=selector.trim())[0]){var selectors=selector.substr(1).trim().split(" ");ctx=closest(context.parentNode,selectors[0]),selector=selectors.slice(1).join(" ").trim()}if("-"===selector[0]){var selectors$1=selector.substr(1).trim().split(" "),prev=(ctx||context).previousElementSibling;ctx=matches(prev,selector.substr(1))?prev:null,selector=selectors$1.slice(1).join(" ")}return ctx?(ctx.id||(ctx.id="uk-"+Date.now()+i,removes.push(function(){return removeAttr(ctx,"id")})),"#"+escape(ctx.id)+" "+selector):null}).filter(Boolean).join(","),context=document);try{return context[queryFn](selector)}catch(e){return null}finally{removes&&removes.forEach(function(remove){return remove()})}}var contextSelectorRe=/(^|,)\s*[!>+~-]/,contextSanitizeRe=/([!>+~-])(?=\s+[!>+~-]|\s*$)/g;function isContextSelector(selector){return isString(selector)&&selector.match(contextSelectorRe)}var elProto=Element.prototype,matchesFn=elProto.matches||elProto.webkitMatchesSelector||elProto.msMatchesSelector;function matches(element,selector){return toNodes(element).some(function(element){return matchesFn.call(element,selector)})}var closestFn=elProto.closest||function(selector){var ancestor=this;do{if(matches(ancestor,selector))return ancestor;ancestor=ancestor.parentNode}while(ancestor&&1===ancestor.nodeType)};function closest(element,selector){return startsWith(selector,">")&&(selector=selector.slice(1)),isNode(element)?element.parentNode&&closestFn.call(element,selector):toNodes(element).map(function(element){return element.parentNode&&closestFn.call(element,selector)}).filter(Boolean)}function parents(element,selector){for(var elements=[],parent=toNode(element).parentNode;parent&&1===parent.nodeType;)matches(parent,selector)&&elements.push(parent),parent=parent.parentNode;return elements}var escapeFn=window.CSS&&CSS.escape||function(css){return css.replace(/([^\x7f-\uFFFF\w-])/g,function(match){return"\\"+match})};function escape(css){return isString(css)?escapeFn.call(null,css):""}var voidElements={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};function isVoidElement(element){return toNodes(element).some(function(element){return voidElements[element.tagName.toLowerCase()]})}function isVisible(element){return toNodes(element).some(function(element){return element.offsetWidth||element.offsetHeight||element.getClientRects().length})}var selInput="input,select,textarea,button";function isInput(element){return toNodes(element).some(function(element){return matches(element,selInput)})}function filter(element,selector){return toNodes(element).filter(function(element){return matches(element,selector)})}function within(element,selector){return isString(selector)?matches(element,selector)||closest(element,selector):element===selector||(isDocument(selector)?selector.documentElement:toNode(selector)).contains(toNode(element))}function on(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),target=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4];return target=toEventTarget(target),selector&&(listener=function(element,selector,listener){var this$1=this;return function(e){var target=e.target,current=">"===selector[0]?findAll(selector,element).reverse().filter(function(element){return within(target,element)})[0]:closest(target,selector);current&&(e.delegate=element,e.current=current,listener.call(this$1,e))}}(target,selector,listener)),listener.length>1&&(listener=function(listener){return function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)}}(listener)),type.split(" ").forEach(function(type){return target&&target.addEventListener(type,listener,useCapture)}),function(){return off(target,type,listener,useCapture)}}function off(target,type,listener,useCapture){void 0===useCapture&&(useCapture=!1),(target=toEventTarget(target))&&type.split(" ").forEach(function(type){return target.removeEventListener(type,listener,useCapture)})}function once(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),element=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4],condition=ref[5],off=on(element,type,selector,function(e){var result=!condition||condition(e);result&&(off(),listener(e,result))},useCapture);return off}function trigger(target,event,detail){return toEventTargets(target).reduce(function(notCanceled,target){return notCanceled&&target.dispatchEvent(createEvent(event,!0,!0,detail))},!0)}function createEvent(e,bubbles,cancelable,detail){if(void 0===bubbles&&(bubbles=!0),void 0===cancelable&&(cancelable=!1),isString(e)){var event=document.createEvent("CustomEvent");event.initCustomEvent(e,bubbles,cancelable,detail),e=event}return e}function getArgs(args){return isString(args[0])&&(args[0]=find(args[0])),isFunction(args[2])&&args.splice(2,0,!1),args}function isEventTarget(target){return"EventTarget"in window?target instanceof EventTarget:target&&"addEventListener"in target}function toEventTarget(target){return isEventTarget(target)?target:toNode(target)}function toEventTargets(target){return isEventTarget(target)?[target]:isArray(target)?target.map(toEventTarget).filter(Boolean):toNodes(target)}function preventClick(){var timer=setTimeout(once(document,"click",function(e){e.preventDefault(),e.stopImmediatePropagation(),clearTimeout(timer)},!0));trigger(document,"touchcancel")}var Promise$1="Promise"in window?window.Promise:PromiseFn,Deferred=function(){var this$1=this;this.promise=new Promise$1(function(resolve,reject){this$1.reject=reject,this$1.resolve=resolve})},PENDING=2,async="setImmediate"in window?setImmediate:setTimeout;function PromiseFn(executor){this.state=PENDING,this.value=void 0,this.deferred=[];var promise=this;try{executor(function(x){promise.resolve(x)},function(r){promise.reject(r)})}catch(e){promise.reject(e)}}PromiseFn.reject=function(r){return new PromiseFn(function(resolve,reject){reject(r)})},PromiseFn.resolve=function(x){return new PromiseFn(function(resolve,reject){resolve(x)})},PromiseFn.all=function(iterable){return new PromiseFn(function(resolve,reject){var result=[],count=0;function resolver(i){return function(x){result[i]=x,(count+=1)===iterable.length&&resolve(result)}}0===iterable.length&&resolve(result);for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolver(i),reject)})},PromiseFn.race=function(iterable){return new PromiseFn(function(resolve,reject){for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolve,reject)})};var p=PromiseFn.prototype;function ajax(url,options){return new Promise$1(function(resolve,reject){var env=assign({data:null,method:"GET",headers:{},xhr:new XMLHttpRequest,beforeSend:noop,responseType:""},options);env.beforeSend(env);var xhr=env.xhr;for(var prop in env)if(prop in xhr)try{xhr[prop]=env[prop]}catch(e){}for(var header in xhr.open(env.method.toUpperCase(),url),env.headers)xhr.setRequestHeader(header,env.headers[header]);on(xhr,"load",function(){0===xhr.status||xhr.status>=200&&xhr.status<300||304===xhr.status?resolve(xhr):reject(assign(Error(xhr.statusText),{xhr:xhr,status:xhr.status}))}),on(xhr,"error",function(){return reject(assign(Error("Network Error"),{xhr:xhr}))}),on(xhr,"timeout",function(){return reject(assign(Error("Network Timeout"),{xhr:xhr}))}),xhr.send(env.data)})}function getImage(src,srcset,sizes){return new Promise$1(function(resolve,reject){var img=new Image;img.onerror=reject,img.onload=function(){return resolve(img)},img.src=src,srcset&&(img.srcset=srcset),sizes&&(img.sizes=sizes)})}function isReady(){return"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll}function ready(fn){if(isReady())fn();else var handle=function(){unbind1(),unbind2(),fn()},unbind1=on(document,"DOMContentLoaded",handle),unbind2=on(window,"load",handle)}function index(element,ref){return ref?toNodes(element).indexOf(toNode(ref)):toNodes((element=toNode(element))&&element.parentNode.children).indexOf(element)}function getIndex(i,elements,current,finite){void 0===current&&(current=0),void 0===finite&&(finite=!1);var length=(elements=toNodes(elements)).length;return i=isNumeric(i)?toNumber(i):"next"===i?current+1:"previous"===i?current-1:index(elements,i),finite?clamp(i,0,length-1):(i%=length)<0?i+length:i}function empty(element){return(element=toNode(element)).innerHTML="",element}function html(parent,html){return parent=toNode(parent),isUndefined(html)?parent.innerHTML:append(parent.hasChildNodes()?empty(parent):parent,html)}function append(parent,element){return parent=toNode(parent),insertNodes(element,function(element){return parent.appendChild(element)})}function before(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.parentNode.insertBefore(element,ref)})}function after(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.nextSibling?before(ref.nextSibling,element):append(ref.parentNode,element)})}function insertNodes(element,fn){return(element=isString(element)?fragment(element):element)?"length"in element?toNodes(element).map(fn):fn(element):null}function remove(element){toNodes(element).map(function(element){return element.parentNode&&element.parentNode.removeChild(element)})}function wrapAll(element,structure){for(structure=toNode(before(element,structure));structure.firstChild;)structure=structure.firstChild;return append(structure,element),structure}function wrapInner(element,structure){return toNodes(toNodes(element).map(function(element){return element.hasChildNodes?wrapAll(toNodes(element.childNodes),structure):append(element,structure)}))}function unwrap(element){toNodes(element).map(function(element){return element.parentNode}).filter(function(value,index,self){return self.indexOf(value)===index}).forEach(function(parent){before(parent,parent.childNodes),remove(parent)})}p.resolve=function(x){var promise=this;if(promise.state===PENDING){if(x===promise)throw new TypeError("Promise settled with itself.");var called=!1;try{var then=x&&x.then;if(null!==x&&isObject(x)&&isFunction(then))return void then.call(x,function(x){called||promise.resolve(x),called=!0},function(r){called||promise.reject(r),called=!0})}catch(e){return void(called||promise.reject(e))}promise.state=0,promise.value=x,promise.notify()}},p.reject=function(reason){if(this.state===PENDING){if(reason===this)throw new TypeError("Promise settled with itself.");this.state=1,this.value=reason,this.notify()}},p.notify=function(){var this$1=this;async(function(){if(this$1.state!==PENDING)for(;this$1.deferred.length;){var ref=this$1.deferred.shift(),onResolved=ref[0],onRejected=ref[1],resolve=ref[2],reject=ref[3];try{0===this$1.state?isFunction(onResolved)?resolve(onResolved.call(void 0,this$1.value)):resolve(this$1.value):1===this$1.state&&(isFunction(onRejected)?resolve(onRejected.call(void 0,this$1.value)):reject(this$1.value))}catch(e){reject(e)}}})},p.then=function(onResolved,onRejected){var this$1=this;return new PromiseFn(function(resolve,reject){this$1.deferred.push([onResolved,onRejected,resolve,reject]),this$1.notify()})},p.catch=function(onRejected){return this.then(void 0,onRejected)};var fragmentRe=/^\s*<(\w+|!)[^>]*>/,singleTagRe=/^<(\w+)\s*\/?>(?:<\/\1>)?$/;function fragment(html){var matches=singleTagRe.exec(html);if(matches)return document.createElement(matches[1]);var container=document.createElement("div");return fragmentRe.test(html)?container.insertAdjacentHTML("beforeend",html.trim()):container.textContent=html,container.childNodes.length>1?toNodes(container.childNodes):container.firstChild}function apply(node,fn){if(node&&1===node.nodeType)for(fn(node),node=node.firstElementChild;node;)apply(node,fn),node=node.nextElementSibling}function addClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"add")}function removeClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"remove")}function removeClasses(element,cls){filterAttr(element,"class",new RegExp("(^|\\s)"+cls+"(?!\\S)","g"),"")}function replaceClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];args[0]&&removeClass(element,args[0]),args[1]&&addClass(element,args[1])}function hasClass(element,cls){return toNodes(element).some(function(element){return element.classList.contains(cls)})}function toggleClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];if(args.length){var force=isString((args=getArgs$1(args))[args.length-1])?[]:args.pop();args=args.filter(Boolean),toNodes(element).forEach(function(ref){for(var classList=ref.classList,i=0;i<args.length;i++)supports.Force?classList.toggle.apply(classList,[args[i]].concat(force)):classList[(isUndefined(force)?!classList.contains(args[i]):force)?"add":"remove"](args[i])})}}function apply$1(element,args,fn){(args=getArgs$1(args).filter(Boolean)).length&&toNodes(element).forEach(function(ref){var classList=ref.classList;supports.Multiple?classList[fn].apply(classList,args):args.forEach(function(cls){return classList[fn](cls)})})}function getArgs$1(args){return args.reduce(function(args,arg){return args.concat.call(args,isString(arg)&&includes(arg," ")?arg.trim().split(" "):arg)},[])}var list,supports={};(list=document.createElement("_").classList)&&(list.add("a","b"),list.toggle("c",!1),supports.Multiple=list.contains("b"),supports.Force=!list.contains("c")),list=null;var cssNumber={"animation-iteration-count":!0,"column-count":!0,"fill-opacity":!0,"flex-grow":!0,"flex-shrink":!0,"font-weight":!0,"line-height":!0,opacity:!0,order:!0,orphans:!0,widows:!0,"z-index":!0,zoom:!0};function css(element,property,value){return toNodes(element).map(function(element){if(isString(property)){if(property=propName(property),isUndefined(value))return getStyle(element,property);value||0===value?element.style[property]=isNumeric(value)&&!cssNumber[property]?value+"px":value:element.style.removeProperty(property)}else{if(isArray(property)){var styles=getStyles(element);return property.reduce(function(props,property){return props[property]=styles[propName(property)],props},{})}isObject(property)&&each(property,function(value,property){return css(element,property,value)})}return element})[0]}function getStyles(element,pseudoElt){return(element=toNode(element)).ownerDocument.defaultView.getComputedStyle(element,pseudoElt)}function getStyle(element,property,pseudoElt){return getStyles(element,pseudoElt)[property]}var vars={};function getCssVar(name){if(!(name in vars)){var element=append(document.documentElement,document.createElement("div"));addClass(element,"var-"+name);try{vars[name]=getStyle(element,"content",":before").replace(/^["'](.*)["']$/,"$1"),vars[name]=JSON.parse(vars[name])}catch(e){}document.documentElement.removeChild(element)}return vars[name]}var cssProps={};function propName(name){var ret=cssProps[name];return ret||(ret=cssProps[name]=function(name){if((name=hyphenate(name))in style)return name;var prefixedName,i=cssPrefixes.length;for(;i--;)if((prefixedName="-"+cssPrefixes[i]+"-"+name)in style)return prefixedName}(name)||name),ret}var cssPrefixes=["webkit","moz","ms"],style=document.createElement("_").style;function transition(element,props,duration,timing){return void 0===duration&&(duration=400),void 0===timing&&(timing="linear"),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){for(var name in props){var value=css(element,name);""===value&&css(element,name,value)}var timer=setTimeout(function(){return trigger(element,"transitionend")},duration);once(element,"transitionend transitioncanceled",function(ref){var type=ref.type;clearTimeout(timer),removeClass(element,"uk-transition"),css(element,{"transition-property":"","transition-duration":"","transition-timing-function":""}),"transitioncanceled"===type?reject():resolve()},!1,function(ref){var target=ref.target;return element===target}),addClass(element,"uk-transition"),css(element,assign({"transition-property":Object.keys(props).map(propName).join(","),"transition-duration":duration+"ms","transition-timing-function":timing},props))})}))}var Transition={start:transition,stop:function(element){return trigger(element,"transitionend"),Promise$1.resolve()},cancel:function(element){trigger(element,"transitioncanceled")},inProgress:function(element){return hasClass(element,"uk-transition")}},animationPrefix="uk-animation-",clsCancelAnimation="uk-cancel-animation";function animate(element,animation,duration,origin,out){var arguments$1=arguments;return void 0===duration&&(duration=200),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){if(hasClass(element,clsCancelAnimation))requestAnimationFrame(function(){return Promise$1.resolve().then(function(){return animate.apply(void 0,arguments$1).then(resolve,reject)})});else{var cls=animation+" "+animationPrefix+(out?"leave":"enter");startsWith(animation,animationPrefix)&&(origin&&(cls+=" uk-transform-origin-"+origin),out&&(cls+=" "+animationPrefix+"reverse")),reset(),once(element,"animationend animationcancel",function(ref){var hasReset=!1;"animationcancel"===ref.type?(reject(),reset()):(resolve(),Promise$1.resolve().then(function(){hasReset=!0,reset()})),requestAnimationFrame(function(){hasReset||(addClass(element,clsCancelAnimation),requestAnimationFrame(function(){return removeClass(element,clsCancelAnimation)}))})},!1,function(ref){var target=ref.target;return element===target}),css(element,"animationDuration",duration+"ms"),addClass(element,cls)}function reset(){css(element,"animationDuration",""),removeClasses(element,animationPrefix+"\\S*")}})}))}var inProgress=new RegExp(animationPrefix+"(enter|leave)"),Animation={in:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!1)},out:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!0)},inProgress:function(element){return inProgress.test(attr(element,"class"))},cancel:function(element){trigger(element,"animationcancel")}};function $(selector,context){return isString(selector)?isHtml(selector)?toNode(fragment(selector)):find(selector,context):toNode(selector)}function $$(selector,context){return isString(selector)?isHtml(selector)?toNodes(fragment(selector)):findAll(selector,context):toNodes(selector)}function isHtml(str){return"<"===str[0]||str.match(/^\s*</)}var dirs={width:["x","left","right"],height:["y","top","bottom"]};function positionAt(element,target,elAttach,targetAttach,elOffset,targetOffset,flip,boundary){elAttach=getPos(elAttach),targetAttach=getPos(targetAttach);var flipped={element:elAttach,target:targetAttach};if(!element||!target)return flipped;var dim=getDimensions(element),targetDim=getDimensions(target),position=targetDim;return moveTo(position,elAttach,dim,-1),moveTo(position,targetAttach,targetDim,1),elOffset=getOffsets(elOffset,dim.width,dim.height),targetOffset=getOffsets(targetOffset,targetDim.width,targetDim.height),elOffset.x+=targetOffset.x,elOffset.y+=targetOffset.y,position.left+=elOffset.x,position.top+=elOffset.y,boundary=getDimensions(boundary||window$1(element)),flip&&each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];if(!0===flip||includes(flip,dir)){var elemOffset=elAttach[dir]===align?-dim[prop]:elAttach[dir]===alignFlip?dim[prop]:0,targetOffset=targetAttach[dir]===align?targetDim[prop]:targetAttach[dir]===alignFlip?-targetDim[prop]:0;if(position[align]<boundary[align]||position[align]+dim[prop]>boundary[alignFlip]){var centerOffset=dim[prop]/2,centerTargetOffset="center"===targetAttach[dir]?-targetDim[prop]/2:0;"center"===elAttach[dir]&&(apply(centerOffset,centerTargetOffset)||apply(-centerOffset,-centerTargetOffset))||apply(elemOffset,targetOffset)}}function apply(elemOffset,targetOffset){var newVal=position[align]+elemOffset+targetOffset-2*elOffset[dir];if(newVal>=boundary[align]&&newVal+dim[prop]<=boundary[alignFlip])return position[align]=newVal,["element","target"].forEach(function(el){flipped[el][dir]=elemOffset?flipped[el][dir]===dirs[prop][1]?dirs[prop][2]:dirs[prop][1]:flipped[el][dir]}),!0}}),offset(element,position),flipped}function offset(element,coordinates){if(element=toNode(element),!coordinates)return getDimensions(element);var currentOffset=offset(element),pos=css(element,"position");["left","top"].forEach(function(prop){if(prop in coordinates){var value=css(element,prop);css(element,prop,coordinates[prop]-currentOffset[prop]+toFloat("absolute"===pos&&"auto"===value?position(element)[prop]:value))}})}function getDimensions(element){var style,hidden,ref=window$1(element=toNode(element)),top=ref.pageYOffset,left=ref.pageXOffset;if(isWindow(element)){var height=element.innerHeight,width=element.innerWidth;return{top:top,left:left,height:height,width:width,bottom:top+height,right:left+width}}isVisible(element)||(style=attr(element,"style"),hidden=attr(element,"hidden"),attr(element,{style:(style||"")+";display:block !important;",hidden:null}));var rect=element.getBoundingClientRect();return isUndefined(style)||attr(element,{style:style,hidden:hidden}),{height:rect.height,width:rect.width,top:rect.top+top,left:rect.left+left,bottom:rect.bottom+top,right:rect.right+left}}function position(element){var parent=function(element){var parent=toNode(element).offsetParent;for(;parent&&"static"===css(parent,"position");)parent=parent.offsetParent;return parent||docEl(element)}(element=toNode(element)),parentOffset=parent===docEl(element)?{top:0,left:0}:offset(parent),ref=["top","left"].reduce(function(props,prop){var propName$$1=ucfirst(prop);return props[prop]-=parentOffset[prop]+(toFloat(css(element,"margin"+propName$$1))||0)+(toFloat(css(parent,"border"+propName$$1+"Width"))||0),props},offset(element));return{top:ref.top,left:ref.left}}var height=dimension("height"),width=dimension("width");function dimension(prop){var propName$$1=ucfirst(prop);return function(element,value){if(element=toNode(element),isUndefined(value)){if(isWindow(element))return element["inner"+propName$$1];if(isDocument(element)){var doc=element.documentElement;return Math.max(doc["offset"+propName$$1],doc["scroll"+propName$$1])}return(value="auto"===(value=css(element,prop))?element["offset"+propName$$1]:toFloat(value)||0)-boxModelAdjust(prop,element)}css(element,prop,value||0===value?+value+boxModelAdjust(prop,element)+"px":"")}}function boxModelAdjust(prop,element){return"border-box"===css(element,"boxSizing")?dirs[prop].slice(1).map(ucfirst).reduce(function(value,prop){return value+toFloat(css(element,"padding"+prop))+toFloat(css(element,"border"+prop+"Width"))},0):0}function moveTo(position,attach,dim,factor){each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];attach[dir]===alignFlip?position[align]+=dim[prop]*factor:"center"===attach[dir]&&(position[align]+=dim[prop]*factor/2)})}function getPos(pos){var x=/left|center|right/,y=/top|center|bottom/;return 1===(pos=(pos||"").split(" ")).length&&(pos=x.test(pos[0])?pos.concat(["center"]):y.test(pos[0])?["center"].concat(pos):["center","center"]),{x:x.test(pos[0])?pos[0]:"center",y:y.test(pos[1])?pos[1]:"center"}}function getOffsets(offsets,width,height){var ref=(offsets||"").split(" "),x=ref[0],y=ref[1];return{x:x?toFloat(x)*(endsWith(x,"%")?width/100:1):0,y:y?toFloat(y)*(endsWith(y,"%")?height/100:1):0}}function flipPosition(pos){switch(pos){case"left":return"right";case"right":return"left";case"top":return"bottom";case"bottom":return"top";default:return pos}}function isInView(element,topOffset,leftOffset,relativeToViewport){if(void 0===topOffset&&(topOffset=0),void 0===leftOffset&&(leftOffset=0),!isVisible(element))return!1;var win=window$1(element=toNode(element));if(relativeToViewport)return intersectRect(element.getBoundingClientRect(),{top:-topOffset,left:-leftOffset,bottom:topOffset+height(win),right:leftOffset+width(win)});var ref=offsetPosition(element),elTop=ref[0],elLeft=ref[1],top=win.pageYOffset,left=win.pageXOffset;return intersectRect({top:elTop,left:elLeft,bottom:elTop+element.offsetHeight,right:elTop+element.offsetWidth},{top:top-topOffset,left:left-leftOffset,bottom:top+topOffset+height(win),right:left+leftOffset+width(win)})}function scrolledOver(element,heightOffset){if(void 0===heightOffset&&(heightOffset=0),!isVisible(element))return 0;var win=window$1(element=toNode(element)),doc=document$1(element),elHeight=element.offsetHeight+heightOffset,top=offsetPosition(element)[0],vp=height(win),vh=vp+Math.min(0,top-vp),diff=Math.max(0,vp-(height(doc)+heightOffset-(top+elHeight)));return clamp((vh+win.pageYOffset-top)/((vh+(elHeight-(diff<vp?diff:0)))/100)/100)}function offsetPosition(element){var offset=[0,0];do{if(offset[0]+=element.offsetTop,offset[1]+=element.offsetLeft,"fixed"===css(element,"position")){var win=window$1(element);return offset[0]+=win.pageYOffset,offset[1]+=win.pageXOffset,offset}}while(element=element.offsetParent);return offset}function window$1(element){return isWindow(element)?element:document$1(element).defaultView}function document$1(element){return toNode(element).ownerDocument}function docEl(element){return document$1(element).documentElement}var isRtl="rtl"===attr(document.documentElement,"dir"),hasTouchEvents="ontouchstart"in window,hasPointerEvents=window.PointerEvent,hasTouch=hasTouchEvents||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,pointerDown=hasTouch?"mousedown "+(hasTouchEvents?"touchstart":"pointerdown"):"mousedown",pointerMove=hasTouch?"mousemove "+(hasTouchEvents?"touchmove":"pointermove"):"mousemove",pointerUp=hasTouch?"mouseup "+(hasTouchEvents?"touchend":"pointerup"):"mouseup",pointerEnter=hasTouch&&hasPointerEvents?"pointerenter":"mouseenter",pointerLeave=hasTouch&&hasPointerEvents?"pointerleave":"mouseleave",fastdom={reads:[],writes:[],read:function(task){return this.reads.push(task),scheduleFlush(),task},write:function(task){return this.writes.push(task),scheduleFlush(),task},clear:function(task){return remove$1(this.reads,task)||remove$1(this.writes,task)},flush:function(){runTasks(this.reads),runTasks(this.writes.splice(0,this.writes.length)),this.scheduled=!1,(this.reads.length||this.writes.length)&&scheduleFlush()}};function scheduleFlush(){fastdom.scheduled||(fastdom.scheduled=!0,requestAnimationFrame(fastdom.flush.bind(fastdom)))}function runTasks(tasks){for(var task;task=tasks.shift();)task()}function remove$1(array,item){var index=array.indexOf(item);return!!~index&&!!array.splice(index,1)}function MouseTracker(){}function slope(a,b){return(b.y-a.y)/(b.x-a.x)}MouseTracker.prototype={positions:[],position:null,init:function(){var this$1=this;this.positions=[],this.position=null;var ticking=!1;this.unbind=on(document,"mousemove",function(e){ticking||(setTimeout(function(){var time=Date.now(),length=this$1.positions.length;length&&time-this$1.positions[length-1].time>100&&this$1.positions.splice(0,length),this$1.positions.push({time:time,x:e.pageX,y:e.pageY}),this$1.positions.length>5&&this$1.positions.shift(),ticking=!1},5),ticking=!0)})},cancel:function(){this.unbind&&this.unbind()},movesTo:function(target){if(this.positions.length<2)return!1;var p=offset(target),position$$1=this.positions[this.positions.length-1],prevPos=this.positions[0];if(p.left<=position$$1.x&&position$$1.x<=p.right&&p.top<=position$$1.y&&position$$1.y<=p.bottom)return!1;var points=[[{x:p.left,y:p.top},{x:p.right,y:p.bottom}],[{x:p.right,y:p.top},{x:p.left,y:p.bottom}]];return p.right<=position$$1.x||(p.left>=position$$1.x?(points[0].reverse(),points[1].reverse()):p.bottom<=position$$1.y?points[0].reverse():p.top>=position$$1.y&&points[1].reverse()),!!points.reduce(function(result,point){return result+(slope(prevPos,point[0])<slope(position$$1,point[0])&&slope(prevPos,point[1])>slope(position$$1,point[1]))},0)}};var strats={};function mergeFnData(parentVal,childVal,vm){return strats.computed(isFunction(parentVal)?parentVal.call(vm,vm):parentVal,isFunction(childVal)?childVal.call(vm,vm):childVal)}strats.args=strats.events=strats.init=strats.created=strats.beforeConnect=strats.connected=strats.ready=strats.beforeDisconnect=strats.disconnected=strats.destroy=function(parentVal,childVal){return parentVal=parentVal&&!isArray(parentVal)?[parentVal]:parentVal,childVal?parentVal?parentVal.concat(childVal):isArray(childVal)?childVal:[childVal]:parentVal},strats.update=function(parentVal,childVal){return strats.args(parentVal,isFunction(childVal)?{read:childVal}:childVal)},strats.props=function(parentVal,childVal){return isArray(childVal)&&(childVal=childVal.reduce(function(value,key){return value[key]=String,value},{})),strats.methods(parentVal,childVal)},strats.computed=strats.methods=function(parentVal,childVal){return childVal?parentVal?assign({},parentVal,childVal):childVal:parentVal},strats.data=function(parentVal,childVal,vm){return vm?mergeFnData(parentVal,childVal,vm):childVal?parentVal?function(vm){return mergeFnData(parentVal,childVal,vm)}:childVal:parentVal};var defaultStrat=function(parentVal,childVal){return isUndefined(childVal)?parentVal:childVal};function mergeOptions(parent,child,vm){var options={};if(isFunction(child)&&(child=child.options),child.extends&&(parent=mergeOptions(parent,child.extends,vm)),child.mixins)for(var i=0,l=child.mixins.length;i<l;i++)parent=mergeOptions(parent,child.mixins[i],vm);for(var key in parent)mergeKey(key);for(var key$1 in child)hasOwn(parent,key$1)||mergeKey(key$1);function mergeKey(key){options[key]=(strats[key]||defaultStrat)(parent[key],child[key],vm)}return options}function parseOptions(options,args){var obj;void 0===args&&(args=[]);try{return options?startsWith(options,"{")?JSON.parse(options):args.length&&!includes(options,":")?((obj={})[args[0]]=options,obj):options.split(";").reduce(function(options,option){var ref=option.split(/:(.*)/),key=ref[0],value=ref[1];return key&&!isUndefined(value)&&(options[key.trim()]=value.trim()),options},{}):{}}catch(e){return{}}}var id=0,Player=function(el){this.id=++id,this.el=toNode(el)};function post(el,cmd){try{el.contentWindow.postMessage(JSON.stringify(assign({event:"command"},cmd)),"*")}catch(e){}}Player.prototype.isVideo=function(){return this.isYoutube()||this.isVimeo()||this.isHTML5()},Player.prototype.isHTML5=function(){return"VIDEO"===this.el.tagName},Player.prototype.isIFrame=function(){return"IFRAME"===this.el.tagName},Player.prototype.isYoutube=function(){return this.isIFrame()&&!!this.el.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/)},Player.prototype.isVimeo=function(){return this.isIFrame()&&!!this.el.src.match(/vimeo\.com\/video\/.*/)},Player.prototype.enableApi=function(){var this$1=this;if(this.ready)return this.ready;var poller,youtube=this.isYoutube(),vimeo=this.isVimeo();return youtube||vimeo?this.ready=new Promise$1(function(resolve){var cb;once(this$1.el,"load",function(){if(youtube){var listener=function(){return post(this$1.el,{event:"listening",id:this$1.id})};poller=setInterval(listener,100),listener()}}),(cb=function(data$$1){return youtube&&data$$1.id===this$1.id&&"onReady"===data$$1.event||vimeo&&Number(data$$1.player_id)===this$1.id},new Promise$1(function(resolve){once(window,"message",function(_,data$$1){return resolve(data$$1)},!1,function(ref){var data$$1=ref.data;if(data$$1&&isString(data$$1)){try{data$$1=JSON.parse(data$$1)}catch(e){return}return data$$1&&cb(data$$1)}})})).then(function(){resolve(),poller&&clearInterval(poller)}),attr(this$1.el,"src",this$1.el.src+(includes(this$1.el.src,"?")?"&":"?")+(youtube?"enablejsapi=1":"api=1&player_id="+this$1.id))}):Promise$1.resolve()},Player.prototype.play=function(){var this$1=this;if(this.isVideo())if(this.isIFrame())this.enableApi().then(function(){return post(this$1.el,{func:"playVideo",method:"play"})});else if(this.isHTML5())try{var promise=this.el.play();promise&&promise.catch(noop)}catch(e){}},Player.prototype.pause=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"pauseVideo",method:"pause"})}):this.isHTML5()&&this.el.pause())},Player.prototype.mute=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"mute",method:"setVolume",value:0})}):this.isHTML5()&&(this.el.muted=!0,attr(this.el,"muted","")))};var clickTimeout,swipeTimeout,tapTimeout,clicked,touch={};function cancelAll(){clickTimeout&&clearTimeout(clickTimeout),swipeTimeout&&clearTimeout(swipeTimeout),tapTimeout&&clearTimeout(tapTimeout),clickTimeout=swipeTimeout=tapTimeout=null,touch={}}ready(function(){on(document,"click",function(){return clicked=!0},!0),on(document,pointerDown,function(e){var target=e.target,ref=getPos$1(e),x=ref.x,y=ref.y,now=Date.now(),type=getType(e.type);touch.type&&touch.type!==type||(touch.el="tagName"in target?target:target.parentNode,clickTimeout&&clearTimeout(clickTimeout),touch.x1=x,touch.y1=y,touch.last&&now-touch.last<=250&&(touch={}),touch.type=type,touch.last=now,clicked=e.button>0)}),on(document,pointerMove,function(e){if(!e.defaultPrevented){var ref=getPos$1(e),x=ref.x,y=ref.y;touch.x2=x,touch.y2=y}}),on(document,pointerUp,function(ref){var type=ref.type,target=ref.target;touch.type===getType(type)&&(touch.x2&&Math.abs(touch.x1-touch.x2)>30||touch.y2&&Math.abs(touch.y1-touch.y2)>30?swipeTimeout=setTimeout(function(){var ref,x1,x2,y1,y2;touch.el&&(trigger(touch.el,"swipe"),trigger(touch.el,"swipe"+(x1=(ref=touch).x1,x2=ref.x2,y1=ref.y1,y2=ref.y2,Math.abs(x1-x2)>=Math.abs(y1-y2)?x1-x2>0?"Left":"Right":y1-y2>0?"Up":"Down"))),touch={}}):"last"in touch?(tapTimeout=setTimeout(function(){return trigger(touch.el,"tap")}),touch.el&&"mouseup"!==type&&within(target,touch.el)&&(clickTimeout=setTimeout(function(){clickTimeout=null,touch.el&&!clicked&&trigger(touch.el,"click"),touch={}},350))):touch={})}),on(document,"touchcancel",cancelAll),on(window,"scroll",cancelAll)});var touching=!1;function isTouch(e){return touching||"touch"===e.pointerType}function getPos$1(e){var touches=e.touches,changedTouches=e.changedTouches,ref=touches&&touches[0]||changedTouches&&changedTouches[0]||e;return{x:ref.pageX,y:ref.pageY}}function getType(type){return type.slice(0,5)}function getComponentName(attribute){return!(!startsWith(attribute,"uk-")&&!startsWith(attribute,"data-uk-"))&&camelize(attribute.replace("data-uk-","").replace("uk-",""))}on(document,"touchstart",function(){return touching=!0},!0),on(document,"click",function(){touching=!1}),on(document,"touchcancel",function(){return touching=!1},!0);var UIkit=function(options){this._init(options)};UIkit.util=Object.freeze({ajax:ajax,getImage:getImage,transition:transition,Transition:Transition,animate:animate,Animation:Animation,attr:attr,hasAttr:hasAttr,removeAttr:removeAttr,filterAttr:filterAttr,data:data,addClass:addClass,removeClass:removeClass,removeClasses:removeClasses,replaceClass:replaceClass,hasClass:hasClass,toggleClass:toggleClass,$:$,$$:$$,positionAt:positionAt,offset:offset,position:position,height:height,width:width,flipPosition:flipPosition,isInView:isInView,scrolledOver:scrolledOver,isReady:isReady,ready:ready,index:index,getIndex:getIndex,empty:empty,html:html,prepend:function(parent,element){return(parent=toNode(parent)).hasChildNodes()?insertNodes(element,function(element){return parent.insertBefore(element,parent.firstChild)}):append(parent,element)},append:append,before:before,after:after,remove:remove,wrapAll:wrapAll,wrapInner:wrapInner,unwrap:unwrap,fragment:fragment,apply:apply,isRtl:isRtl,hasTouch:hasTouch,pointerDown:pointerDown,pointerMove:pointerMove,pointerUp:pointerUp,pointerEnter:pointerEnter,pointerLeave:pointerLeave,on:on,off:off,once:once,trigger:trigger,createEvent:createEvent,toEventTargets:toEventTargets,preventClick:preventClick,fastdom:fastdom,isVoidElement:isVoidElement,isVisible:isVisible,selInput:selInput,isInput:isInput,filter:filter,within:within,bind:bind,hasOwn:hasOwn,hyphenate:hyphenate,camelize:camelize,ucfirst:ucfirst,startsWith:startsWith,endsWith:endsWith,includes:includes,isArray:isArray,isFunction:isFunction,isObject:isObject,isPlainObject:isPlainObject,isWindow:isWindow,isDocument:isDocument,isJQuery:isJQuery,isNode:isNode,isNodeCollection:isNodeCollection,isBoolean:isBoolean,isString:isString,isNumber:isNumber,isNumeric:isNumeric,isUndefined:isUndefined,toBoolean:toBoolean,toNumber:toNumber,toFloat:toFloat,toNode:toNode,toNodes:toNodes,toList:toList,toMs:toMs,swap:swap,assign:assign,each:each,sortBy:sortBy,clamp:clamp,noop:noop,intersectRect:intersectRect,pointInRect:pointInRect,Dimensions:Dimensions,MouseTracker:MouseTracker,mergeOptions:mergeOptions,parseOptions:parseOptions,Player:Player,Promise:Promise$1,Deferred:Deferred,query:query,queryAll:queryAll,find:find,findAll:findAll,matches:matches,closest:closest,parents:parents,escape:escape,css:css,getStyles:getStyles,getStyle:getStyle,getCssVar:getCssVar,propName:propName,isTouch:isTouch,getPos:getPos$1}),UIkit.data="__uikit__",UIkit.prefix="uk-",UIkit.options={},function(UIkit){var container,DATA=UIkit.data;function update(data$$1,e){if(data$$1)for(var name in data$$1)data$$1[name]._isReady&&data$$1[name]._callUpdate(e)}UIkit.use=function(plugin){if(!plugin.installed)return plugin.call(null,this),plugin.installed=!0,this},UIkit.mixin=function(mixin,component){component=(isString(component)?UIkit.component(component):component)||this,(mixin=mergeOptions({},mixin)).mixins=component.options.mixins,delete component.options.mixins,component.options=mergeOptions(mixin,component.options)},UIkit.extend=function(options){options=options||{};var Sub=function(options){this._init(options)};return(Sub.prototype=Object.create(this.prototype)).constructor=Sub,Sub.options=mergeOptions(this.options,options),Sub.super=this,Sub.extend=this.extend,Sub},UIkit.update=function(element,e){e=createEvent(e||"update"),function(element){for(var path=[];element&&element!==document.body&&element.parentNode;)element=element.parentNode,path.unshift(element);return path}(element=element?toNode(element):document.body).map(function(element){return update(element[DATA],e)}),apply(element,function(element){return update(element[DATA],e)})},Object.defineProperty(UIkit,"container",{get:function(){return container||document.body},set:function(element){container=$(element)}})}(UIkit),function(UIkit){UIkit.prototype._callHook=function(hook){var this$1=this,handlers=this.$options[hook];handlers&&handlers.forEach(function(handler){return handler.call(this$1)})},UIkit.prototype._callConnected=function(){var this$1=this;this._connected||(this._data={},this._initProps(),this._callHook("beforeConnect"),this._connected=!0,this._initEvents(),this._initObserver(),this._callHook("connected"),this._isReady||ready(function(){return this$1._callReady()}),this._callUpdate())},UIkit.prototype._callDisconnected=function(){this._connected&&(this._callHook("beforeDisconnect"),this._observer&&(this._observer.disconnect(),this._observer=null),this._unbindEvents(),this._callHook("disconnected"),this._connected=!1)},UIkit.prototype._callReady=function(){this._isReady||(this._isReady=!0,this._callHook("ready"),this._resetComputeds(),this._callUpdate())},UIkit.prototype._callUpdate=function(e){var this$1=this,type=(e=createEvent(e||"update")).type;includes(["update","load","resize"],type)&&this._resetComputeds();var updates=this.$options.update,ref=this._frames,reads=ref.reads,writes=ref.writes;updates&&updates.forEach(function(ref,i){var read=ref.read,write=ref.write,events=ref.events;("update"===type||includes(events,type))&&(read&&!includes(fastdom.reads,reads[i])&&(reads[i]=fastdom.read(function(){var result=this$1._connected&&read.call(this$1,this$1._data,e);!1===result&&write?(fastdom.clear(writes[i]),delete writes[i]):isPlainObject(result)&&assign(this$1._data,result),delete reads[i]})),write&&!includes(fastdom.writes,writes[i])&&(writes[i]=fastdom.write(function(){this$1._connected&&write.call(this$1,this$1._data,e),delete writes[i]})))})}}(UIkit),function(UIkit){var uid=0;function getProps(opts,name){var data$$1={},args=opts.args;void 0===args&&(args=[]);var props=opts.props;void 0===props&&(props={});var el=opts.el;if(!props)return data$$1;for(var key in props){var prop=hyphenate(key);if(hasAttr(el,prop)){var value=coerce(props[key],attr(el,prop));if("target"===prop&&(!value||startsWith(value,"_")))continue;data$$1[key]=value}}var options=parseOptions(data(el,name),args);for(var key$1 in options){var prop$1=camelize(key$1);void 0!==props[prop$1]&&(data$$1[prop$1]=coerce(props[prop$1],options[key$1]))}return data$$1}function registerComputed(component,key,cb){Object.defineProperty(component,key,{enumerable:!0,get:function(){var _computeds=component._computeds,$props=component.$props,$el=component.$el;return hasOwn(_computeds,key)||(_computeds[key]=cb.call(component,$props,$el)),_computeds[key]},set:function(value){component._computeds[key]=value}})}function registerEvent(component,event,key){isPlainObject(event)||(event={name:key,handler:event});var listener,name=event.name,el=event.el,handler=event.handler,capture=event.capture,delegate=event.delegate,filter$$1=event.filter,self=event.self;el=isFunction(el)?el.call(component):el||component.$el,isArray(el)?el.forEach(function(el){return registerEvent(component,assign({},event,{el:el}),key)}):!el||filter$$1&&!filter$$1.call(component)||(listener=isString(handler)?component[handler]:bind(handler,component),handler=function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)},self&&(handler=function(handler){return function(e){if(e.target===e.currentTarget||e.target===e.current)return handler.call(null,e)}}(handler)),component._events.push(on(el,name,delegate?isString(delegate)?delegate:delegate.call(component):null,handler,capture)))}function notIn(options,key){return options.every(function(arr){return!arr||!hasOwn(arr,key)})}function coerce(type,value){return type===Boolean?toBoolean(value):type===Number?toNumber(value):"list"===type?toList(value):"media"===type?function(value){if(isString(value))if("@"===value[0]){var name="media-"+value.substr(1);value=toFloat(getCssVar(name))}else if(isNaN(value))return value;return!(!value||isNaN(value))&&"(min-width: "+value+"px)"}(value):type?type(value):value}UIkit.prototype._init=function(options){(options=options||{}).data=function(ref,ref$1){var data$$1=ref.data,args=(ref.el,ref$1.args),props=ref$1.props;if(void 0===props&&(props={}),data$$1=isArray(data$$1)?args&&args.length?data$$1.slice(0,args.length).reduce(function(data$$1,value,index$$1){return isPlainObject(value)?assign(data$$1,value):data$$1[args[index$$1]]=value,data$$1},{}):void 0:data$$1)for(var key in data$$1)isUndefined(data$$1[key])?delete data$$1[key]:data$$1[key]=props[key]?coerce(props[key],data$$1[key]):data$$1[key];return data$$1}(options,this.constructor.options),this.$options=mergeOptions(this.constructor.options,options,this),this.$el=null,this.$props={},this._frames={reads:{},writes:{}},this._events=[],this._uid=uid++,this._initData(),this._initMethods(),this._initComputeds(),this._callHook("created"),options.el&&this.$mount(options.el)},UIkit.prototype._initData=function(){var data$$1=this.$options.data;for(var key in void 0===data$$1&&(data$$1={}),data$$1)this.$props[key]=this[key]=data$$1[key]},UIkit.prototype._initMethods=function(){var methods=this.$options.methods;if(methods)for(var key in methods)this[key]=bind(methods[key],this)},UIkit.prototype._initComputeds=function(){var computed=this.$options.computed;if(this._resetComputeds(),computed)for(var key in computed)registerComputed(this,key,computed[key])},UIkit.prototype._resetComputeds=function(){this._computeds={}},UIkit.prototype._initProps=function(props){var key;for(key in this._resetComputeds(),props=props||getProps(this.$options,this.$name))isUndefined(props[key])||(this.$props[key]=props[key]);var exclude=[this.$options.computed,this.$options.methods];for(key in this.$props)key in props&¬In(exclude,key)&&(this[key]=this.$props[key])},UIkit.prototype._initEvents=function(){var this$1=this,events=this.$options.events;events&&events.forEach(function(event){if(hasOwn(event,"handler"))registerEvent(this$1,event);else for(var key in event)registerEvent(this$1,event[key],key)})},UIkit.prototype._unbindEvents=function(){this._events.forEach(function(unbind){return unbind()}),this._events=[]},UIkit.prototype._initObserver=function(){var this$1=this,ref=this.$options,attrs=ref.attrs,props=ref.props,el=ref.el;!this._observer&&props&&attrs&&(attrs=isArray(attrs)?attrs:Object.keys(props).map(function(key){return hyphenate(key)}),this._observer=new MutationObserver(function(){var data$$1=getProps(this$1.$options,this$1.$name);attrs.some(function(key){return!isUndefined(data$$1[key])&&data$$1[key]!==this$1.$props[key]})&&this$1.$reset()}),this._observer.observe(el,{attributes:!0,attributeFilter:attrs.concat([this.$name,"data-"+this.$name])}))}}(UIkit),function(UIkit){var DATA=UIkit.data,components={};UIkit.component=function(name,options){if(!options)return isPlainObject(components[name])&&(components[name]=UIkit.extend(components[name])),components[name];UIkit[name]=function(element,data$$1){for(var i=arguments.length,argsArray=Array(i);i--;)argsArray[i]=arguments[i];var component=UIkit.component(name);return isPlainObject(element)?new component({data:element}):component.options.functional?new component({data:[].concat(argsArray)}):element&&element.nodeType?init(element):$$(element).map(init)[0];function init(element){var instance=UIkit.getComponent(element,name);if(instance){if(!data$$1)return instance;instance.$destroy()}return new component({el:element,data:data$$1})}};var opt=isPlainObject(options)?assign({},options):options.options;if(opt.name=name,opt.install&&opt.install(UIkit,opt,name),UIkit._initialized&&!opt.functional){var id=hyphenate(name);fastdom.read(function(){return UIkit[name]("[uk-"+id+"],[data-uk-"+id+"]")})}return components[name]=isPlainObject(options)?opt:options},UIkit.getComponents=function(element){return element&&element[DATA]||{}},UIkit.getComponent=function(element,name){return UIkit.getComponents(element)[name]},UIkit.connect=function(node){if(node[DATA])for(var name in node[DATA])node[DATA][name]._callConnected();for(var i=0;i<node.attributes.length;i++){var name$1=getComponentName(node.attributes[i].name);name$1&&name$1 in components&&UIkit[name$1](node)}},UIkit.disconnect=function(node){for(var name in node[DATA])node[DATA][name]._callDisconnected()}}(UIkit),function(UIkit){var DATA=UIkit.data;UIkit.prototype.$mount=function(el){var name=this.$options.name;el[DATA]||(el[DATA]={}),el[DATA][name]||(el[DATA][name]=this,this.$el=this.$options.el=this.$options.el||el,this._callHook("init"),within(el,document)&&this._callConnected())},UIkit.prototype.$emit=function(e){this._callUpdate(e)},UIkit.prototype.$reset=function(){this._callDisconnected(),this._callConnected()},UIkit.prototype.$destroy=function(removeEl){void 0===removeEl&&(removeEl=!1);var ref=this.$options,el=ref.el,name=ref.name;el&&this._callDisconnected(),this._callHook("destroy"),el&&el[DATA]&&(delete el[DATA][name],Object.keys(el[DATA]).length||delete el[DATA],removeEl&&remove(this.$el))},UIkit.prototype.$create=function(component,element,data$$1){return UIkit[component](element,data$$1)},UIkit.prototype.$update=UIkit.update,UIkit.prototype.$getComponent=UIkit.getComponent;var names={};Object.defineProperties(UIkit.prototype,{$container:Object.getOwnPropertyDescriptor(UIkit,"container"),$name:{get:function(){var name=this.$options.name;return names[name]||(names[name]=UIkit.prefix+hyphenate(name)),names[name]}}})}(UIkit);var Class={connected:function(){addClass(this.$el,this.$name)}},Togglable={props:{cls:Boolean,animation:"list",duration:Number,origin:String,transition:String,queued:Boolean},data:{cls:!1,animation:[!1],duration:200,origin:!1,transition:"linear",queued:!1,initProps:{overflow:"",height:"",paddingTop:"",paddingBottom:"",marginTop:"",marginBottom:""},hideProps:{overflow:"hidden",height:0,paddingTop:0,paddingBottom:0,marginTop:0,marginBottom:0}},computed:{hasAnimation:function(ref){return!!ref.animation[0]},hasTransition:function(ref){var animation=ref.animation;return this.hasAnimation&&!0===animation[0]}},methods:{toggleElement:function(targets,show,animate$$1){var this$1=this;return new Promise$1(function(resolve){var p,all=function(targets){return Promise$1.all(targets.map(function(el){return this$1._toggleElement(el,show,animate$$1)}))},toggled=(targets=toNodes(targets)).filter(function(el){return this$1.isToggled(el)}),untoggled=targets.filter(function(el){return!includes(toggled,el)});if(this$1.queued&&isUndefined(animate$$1)&&isUndefined(show)&&this$1.hasAnimation&&!(targets.length<2)){var body=document.body,scroll=body.scrollTop,el=toggled[0],inProgress=Animation.inProgress(el)&&hasClass(el,"uk-animation-leave")||Transition.inProgress(el)&&"0px"===el.style.height;p=all(toggled),inProgress||(p=p.then(function(){var p=all(untoggled);return body.scrollTop=scroll,p}))}else p=all(untoggled.concat(toggled));p.then(resolve,noop)})},toggleNow:function(targets,show){var this$1=this;return new Promise$1(function(resolve){return Promise$1.all(toNodes(targets).map(function(el){return this$1._toggleElement(el,show,!1)})).then(resolve,noop)})},isToggled:function(el){var nodes=toNodes(el||this.$el);return this.cls?hasClass(nodes,this.cls.split(" ")[0]):!hasAttr(nodes,"hidden")},updateAria:function(el){!1===this.cls&&attr(el,"aria-hidden",!this.isToggled(el))},_toggleElement:function(el,show,animate$$1){var this$1=this;if(show=isBoolean(show)?show:Animation.inProgress(el)?hasClass(el,"uk-animation-leave"):Transition.inProgress(el)?"0px"===el.style.height:!this.isToggled(el),!trigger(el,"before"+(show?"show":"hide"),[this]))return Promise$1.reject();var promise=(!1!==animate$$1&&this.hasAnimation?this.hasTransition?this._toggleHeight:this._toggleAnimation:this._toggleImmediate)(el,show);return trigger(el,show?"show":"hide",[this]),promise.then(function(){trigger(el,show?"shown":"hidden",[this$1]),this$1.$update(el)})},_toggle:function(el,toggled){var changed;el&&(this.cls?(changed=includes(this.cls," ")||Boolean(toggled)!==hasClass(el,this.cls))&&toggleClass(el,this.cls,includes(this.cls," ")?void 0:toggled):(changed=Boolean(toggled)===hasAttr(el,"hidden"))&&attr(el,"hidden",toggled?null:""),$$("[autofocus]",el).some(function(el){return isVisible(el)&&(el.focus()||!0)}),this.updateAria(el),changed&&this.$update(el))},_toggleImmediate:function(el,show){return this._toggle(el,show),Promise$1.resolve()},_toggleHeight:function(el,show){var this$1=this,inProgress=Transition.inProgress(el),inner=el.hasChildNodes?toFloat(css(el.firstElementChild,"marginTop"))+toFloat(css(el.lastElementChild,"marginBottom")):0,currentHeight=isVisible(el)?height(el)+(inProgress?0:inner):0;Transition.cancel(el),this.isToggled(el)||this._toggle(el,!0),height(el,""),fastdom.flush();var endHeight=height(el)+(inProgress?0:inner);return height(el,currentHeight),(show?Transition.start(el,assign({},this.initProps,{overflow:"hidden",height:endHeight}),Math.round(this.duration*(1-currentHeight/endHeight)),this.transition):Transition.start(el,this.hideProps,Math.round(this.duration*(currentHeight/endHeight)),this.transition).then(function(){return this$1._toggle(el,!1)})).then(function(){return css(el,this$1.initProps)})},_toggleAnimation:function(el,show){var this$1=this;return Animation.cancel(el),show?(this._toggle(el,!0),Animation.in(el,this.animation[0],this.duration,this.origin)):Animation.out(el,this.animation[1]||this.animation[0],this.duration,this.origin).then(function(){return this$1._toggle(el,!1)})}}},Accordion={mixins:[Class,Togglable],props:{targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,transition:String},data:{targets:"> *",active:!1,animation:[!0],collapsible:!0,multiple:!1,clsOpen:"uk-open",toggle:"> .uk-accordion-title",content:"> .uk-accordion-content",transition:"ease"},computed:{items:function(ref,$el){return $$(ref.targets,$el)}},events:[{name:"click",delegate:function(){return this.targets+" "+this.$props.toggle},handler:function(e){e.preventDefault(),this.toggle(index($$(this.targets+" "+this.$props.toggle,this.$el),e.current))}}],connected:function(){if(!1!==this.active){var active=this.items[Number(this.active)];active&&!hasClass(active,this.clsOpen)&&this.toggle(active,!1)}},update:function(){var this$1=this;this.items.forEach(function(el){return this$1._toggleImmediate($(this$1.content,el),hasClass(el,this$1.clsOpen))});var active=!this.collapsible&&!hasClass(this.items,this.clsOpen)&&this.items[0];active&&this.toggle(active,!1)},methods:{toggle:function(item,animate$$1){var this$1=this,index$$1=getIndex(item,this.items),active=filter(this.items,"."+this.clsOpen);(item=this.items[index$$1])&&[item].concat(!this.multiple&&!includes(active,item)&&active||[]).forEach(function(el){var isItem=el===item,state=isItem&&!hasClass(el,this$1.clsOpen);if(state||!isItem||this$1.collapsible||!(active.length<2)){toggleClass(el,this$1.clsOpen,state);var content=el._wrapper?el._wrapper.firstElementChild:$(this$1.content,el);el._wrapper||(el._wrapper=wrapAll(content,"<div>"),attr(el._wrapper,"hidden",state?"":null)),this$1._toggleImmediate(content,!0),this$1.toggleElement(el._wrapper,state,animate$$1).then(function(){hasClass(el,this$1.clsOpen)===state&&(state||this$1._toggleImmediate(content,!1),el._wrapper=null,unwrap(content))})}})}}},Alert={attrs:!0,mixins:[Class,Togglable],args:"animation",props:{close:String},data:{animation:[!0],selClose:".uk-alert-close",duration:150,hideProps:assign({opacity:0},Togglable.data.hideProps)},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.close()}}],methods:{close:function(){var this$1=this;this.toggleElement(this.$el).then(function(){return this$1.$destroy(!0)})}}};function Core(UIkit){ready(function(){var scroll=0,started=0;if(on(window,"load resize",function(e){return UIkit.update(null,e)}),on(window,"scroll",function(e){e.dir=scroll<=window.pageYOffset?"down":"up",e.pageYOffset=scroll=window.pageYOffset,UIkit.update(null,e)},{capture:!0,passive:!1}),on(document,"animationstart",function(ref){var target=ref.target;(css(target,"animationName")||"").match(/^uk-.*(left|right)/)&&(started++,css(document.body,"overflowX","hidden"),setTimeout(function(){--started||css(document.body,"overflowX","")},toMs(css(target,"animationDuration"))+100))},!0),hasTouch){var cls="uk-hover";on(document,"tap",function(ref){var target=ref.target;return $$("."+cls).forEach(function(el){return!within(target,el)&&removeClass(el,cls)})}),Object.defineProperty(UIkit,"hoverSelector",{set:function(selector){on(document,"tap",selector,function(ref){return addClass(ref.current,cls)})}}),UIkit.hoverSelector=".uk-animation-toggle, .uk-transition-toggle, [uk-hover]"}})}var active,registered,Video={args:"autoplay",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},computed:{inView:function(ref){return"inview"===ref.autoplay}},connected:function(){this.inView&&!hasAttr(this.$el,"preload")&&(this.$el.preload="none")},ready:function(){this.player=new Player(this.$el),this.automute&&this.player.mute()},update:[{read:function(_,ref){var type=ref.type;return!(!this.player||!("scroll"!==type&&"resize"!==type||this.inView))&&{visible:isVisible(this.$el)&&"hidden"!==css(this.$el,"visibility"),inView:this.inView&&isInView(this.$el)}},write:function(ref){var visible=ref.visible,inView=ref.inView;!visible||this.inView&&!inView?this.player.pause():(!0===this.autoplay||this.inView&&inView)&&this.player.play()},events:["load","resize","scroll"]}]},Cover={mixins:[Class,Video],props:{width:Number,height:Number},data:{automute:!0},update:{write:function(){var el=this.$el;if(isVisible(el)){var ref=el.parentNode,height$$1=ref.offsetHeight,width$$1=ref.offsetWidth;css(css(el,{width:"",height:""}),Dimensions.cover({width:this.width||el.clientWidth,height:this.height||el.clientHeight},{width:width$$1+(width$$1%2?1:0),height:height$$1+(height$$1%2?1:0)}))}},events:["load","resize"]},events:{loadedmetadata:function(){this.$emit()}}},Position={props:{pos:String,offset:null,flip:Boolean,clsPos:String},data:{pos:"bottom-"+(isRtl?"right":"left"),flip:!0,offset:!1,clsPos:""},computed:{pos:function(ref){var pos=ref.pos;return(pos+(includes(pos,"-")?"":"-center")).split("-")},dir:function(){return this.pos[0]},align:function(){return this.pos[1]}},methods:{positionAt:function(element,target,boundary){var node;removeClasses(element,this.clsPos+"-(top|bottom|left|right)(-[a-z]+)?"),css(element,{top:"",left:""});var offset$$1=this.offset;offset$$1=isNumeric(offset$$1)?offset$$1:(node=$(offset$$1))?offset(node)["x"===axis?"left":"top"]-offset(target)["x"===axis?"right":"bottom"]:0;var axis=this.getAxis(),ref$1=positionAt(element,target,"x"===axis?flipPosition(this.dir)+" "+this.align:this.align+" "+flipPosition(this.dir),"x"===axis?this.dir+" "+this.align:this.align+" "+this.dir,"x"===axis?""+("left"===this.dir?-offset$$1:offset$$1):" "+("top"===this.dir?-offset$$1:offset$$1),null,this.flip,boundary).target,x=ref$1.x,y=ref$1.y;this.dir="x"===axis?x:y,this.align="x"===axis?y:x,toggleClass(element,this.clsPos+"-"+this.dir+"-"+this.align,!1===this.offset)},getAxis:function(){return"top"===this.dir||"bottom"===this.dir?"y":"x"}}},Drop={mixins:[Position,Togglable],args:"pos",props:{mode:"list",toggle:Boolean,boundary:Boolean,boundaryAlign:Boolean,delayShow:Number,delayHide:Number,clsDrop:String},data:{mode:["click","hover"],toggle:"- *",boundary:window,boundaryAlign:!1,delayShow:0,delayHide:800,clsDrop:!1,hoverIdle:200,animation:["uk-animation-fade"],cls:"uk-open"},computed:{boundary:function(ref,$el){return query(ref.boundary,$el)},clsDrop:function(ref){return ref.clsDrop||"uk-"+this.$options.name},clsPos:function(){return this.clsDrop}},init:function(){this.tracker=new MouseTracker},connected:function(){addClass(this.$el,this.clsDrop);var toggle=this.$props.toggle;this.toggle=toggle&&this.$create("toggle",query(toggle,this.$el),{target:this.$el,mode:this.mode}),this.updateAria(this.$el)},events:[{name:"click",delegate:function(){return"."+this.clsDrop+"-close"},handler:function(e){e.preventDefault(),this.hide(!1)}},{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(e){if(!e.defaultPrevented){var id=e.target.hash;id||e.preventDefault(),id&&within(id,this.$el)||this.hide(!1)}}},{name:"beforescroll",handler:function(){this.hide(!1)}},{name:"toggle",self:!0,handler:function(e,toggle){e.preventDefault(),this.isToggled()?this.hide(!1):this.show(toggle,!1)}},{name:pointerEnter,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||(active&&active!==this&&active.toggle&&includes(active.toggle.mode,"hover")&&!within(e.target,active.toggle.$el)&&!pointInRect({x:e.pageX,y:e.pageY},offset(active.$el))&&active.hide(!1),e.preventDefault(),this.show(this.toggle))}},{name:"toggleshow",handler:function(e,toggle){toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.show(toggle||this.toggle))}},{name:"togglehide "+pointerLeave,handler:function(e,toggle){isTouch(e)||toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.toggle&&includes(this.toggle.mode,"hover")&&this.hide())}},{name:"beforeshow",self:!0,handler:function(){this.clearTimers(),Animation.cancel(this.$el),this.position()}},{name:"show",self:!0,handler:function(){this.tracker.init(),this.toggle&&(addClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","true")),function(){if(registered)return;registered=!0,on(document,"click",function(ref){var prev,target=ref.target,defaultPrevented=ref.defaultPrevented;if(!defaultPrevented)for(;active&&active!==prev&&!within(target,active.$el)&&(!active.toggle||!within(target,active.toggle.$el));)prev=active,active.hide(!1)})}()}},{name:"beforehide",self:!0,handler:function(){this.clearTimers()}},{name:"hide",handler:function(ref){var target=ref.target;this.$el===target?(active=this.isActive()?null:active,this.toggle&&(removeClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","false"),this.toggle.$el.blur(),$$("a, button",this.toggle.$el).forEach(function(el){return el.blur()})),this.tracker.cancel()):active=null===active&&within(target,this.$el)&&this.isToggled()?this:active}}],update:{write:function(){this.isToggled()&&!Animation.inProgress(this.$el)&&this.position()},events:["resize"]},methods:{show:function(toggle,delay){var this$1=this;void 0===delay&&(delay=!0);var show=function(){return!this$1.isToggled()&&this$1.toggleElement(this$1.$el,!0)},tryShow=function(){if(this$1.toggle=toggle||this$1.toggle,this$1.clearTimers(),!this$1.isActive())if(delay&&active&&active!==this$1&&active.isDelaying)this$1.showTimer=setTimeout(this$1.show,10);else{if(this$1.isParentOf(active)){if(!active.hideTimer)return;active.hide(!1)}else if(active&&!this$1.isChildOf(active)&&!this$1.isParentOf(active))for(var prev;active&&active!==prev&&!this$1.isChildOf(active);)prev=active,active.hide(!1);delay&&this$1.delayShow?this$1.showTimer=setTimeout(show,this$1.delayShow):show(),active=this$1}};toggle&&this.toggle&&toggle.$el!==this.toggle.$el?(once(this.$el,"hide",tryShow),this.hide(!1)):tryShow()},hide:function(delay){var this$1=this;void 0===delay&&(delay=!0);var hide=function(){return this$1.toggleNow(this$1.$el,!1)};this.clearTimers(),this.isDelaying=this.tracker.movesTo(this.$el),delay&&this.isDelaying?this.hideTimer=setTimeout(this.hide,this.hoverIdle):delay&&this.delayHide?this.hideTimer=setTimeout(hide,this.delayHide):hide()},clearTimers:function(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null,this.isDelaying=!1},isActive:function(){return active===this},isChildOf:function(drop){return drop&&drop!==this&&within(this.$el,drop.$el)},isParentOf:function(drop){return drop&&drop!==this&&within(drop.$el,this.$el)},position:function(){removeClasses(this.$el,this.clsDrop+"-(stack|boundary)"),css(this.$el,{top:"",left:"",display:"block"}),toggleClass(this.$el,this.clsDrop+"-boundary",this.boundaryAlign);var boundary=offset(this.boundary),alignTo=this.boundaryAlign?boundary:offset(this.toggle.$el);if("justify"===this.align){var prop="y"===this.getAxis()?"width":"height";css(this.$el,prop,alignTo[prop])}else this.$el.offsetWidth>Math.max(boundary.right-alignTo.left,alignTo.right-boundary.left)&&addClass(this.$el,this.clsDrop+"-stack");this.positionAt(this.$el,this.boundaryAlign?this.boundary:this.toggle.$el,this.boundary),css(this.$el,"display","")}}};var Dropdown={extends:Drop},FormCustom={mixins:[Class],args:"target",props:{target:Boolean},data:{target:!1},computed:{input:function(_,$el){return $(selInput,$el)},state:function(){return this.input.nextElementSibling},target:function(ref,$el){var target=ref.target;return target&&(!0===target&&this.input.parentNode===$el&&this.input.nextElementSibling||query(target,$el))}},update:function(){var target=this.target,input=this.input;if(target){var option,prop=isInput(target)?"value":"textContent",prev=target[prop],value=input.files&&input.files[0]?input.files[0].name:matches(input,"select")&&(option=$$("option",input).filter(function(el){return el.selected})[0])?option.textContent:input.value;prev!==value&&(target[prop]=value)}},events:[{name:"focusin focusout mouseenter mouseleave",delegate:selInput,handler:function(ref){var type=ref.type;ref.current===this.input&&toggleClass(this.state,"uk-"+(includes(type,"focus")?"focus":"hover"),includes(["focusin","mouseenter"],type))}},{name:"change",handler:function(){this.$emit()}}]},Gif={update:{read:function(data$$1){var inview=isInView(this.$el);if(!inview||data$$1.isInView===inview)return!1;data$$1.isInView=inview},write:function(){this.$el.src=this.$el.src},events:["scroll","load","resize"]}},Margin={props:{margin:String,firstColumn:Boolean},data:{margin:"uk-margin-small-top",firstColumn:"uk-first-column"},update:{read:function(data$$1){var items=this.$el.children;if(!items.length||!isVisible(this.$el))return data$$1.rows=[[]];data$$1.rows=getRows(items),data$$1.stacks=!data$$1.rows.some(function(row){return row.length>1})},write:function(ref){var this$1=this;ref.rows.forEach(function(row,i){return row.forEach(function(el,j){toggleClass(el,this$1.margin,0!==i),toggleClass(el,this$1.firstColumn,0===j)})})},events:["load","resize"]}};function getRows(items){for(var rows=[[]],i=0;i<items.length;i++){var el=items[i],dim=getOffset(el);if(dim.height)for(var j=rows.length-1;j>=0;j--){var row=rows[j];if(!row[0]){row.push(el);break}var leftDim=getOffset(row[0]);if(dim.top>=leftDim.bottom-1){rows.push([el]);break}if(dim.bottom>leftDim.top){if(dim.left<leftDim.left&&!isRtl){row.unshift(el);break}row.push(el);break}if(0===j){rows.unshift([el]);break}}}return rows}function getOffset(element){var offsetTop=element.offsetTop,offsetLeft=element.offsetLeft,offsetHeight=element.offsetHeight;return{top:offsetTop,left:offsetLeft,height:offsetHeight,bottom:offsetTop+offsetHeight}}var Grid={extends:Margin,mixins:[Class],attrs:!0,name:"grid",props:{masonry:Boolean,parallax:Number},data:{margin:"uk-grid-margin",clsStack:"uk-grid-stack",masonry:!1,parallax:0},computed:{parallax:function(ref){var parallax=ref.parallax;return Math.abs(parallax)}},connected:function(){this.masonry&&addClass(this.$el,"uk-flex-top uk-flex-wrap-top")},update:[{read:function(ref){var rows=ref.rows;(this.masonry||this.parallax)&&(rows=rows.map(function(elements){return sortBy(elements,"offsetLeft")}));var root,cls,nodes,node,translates=!1,elHeight=!1;if(this.masonry){var height$$1=0;translates=rows.reduce(function(translates,row,i){return translates[i]=row.map(function(_,j){return 0===i?0:toFloat(translates[i-1][j])+(height$$1-toFloat(rows[i-1][j]&&rows[i-1][j].offsetHeight))}),height$$1=row.reduce(function(height$$1,el){return Math.max(height$$1,el.offsetHeight)},0),translates},[]),elHeight=function(rows){return Math.max.apply(Math,rows.reduce(function(sum,row){return row.forEach(function(el,i){return sum[i]=(sum[i]||0)+el.offsetHeight}),sum},[]))}(rows)+(root=this.$el,cls=this.margin,nodes=toNodes(root.children),toFloat((node=nodes.filter(function(el){return hasClass(el,cls)})[0])?css(node,"marginTop"):css(nodes[0],"paddingLeft"))*(rows.length-1))}return{rows:rows,translates:translates,height:elHeight}},write:function(ref){var rows=ref.rows,stacks=ref.stacks,height$$1=ref.height;toggleClass(this.$el,this.clsStack,stacks),css(this.$el,"paddingBottom",this.parallax&&rows.some(function(row){return row.length>1})?this.parallax:""),height$$1&&css(this.$el,"minHeight",height$$1)},events:["load","resize"]},{read:function(ref){var rows=ref.rows,height$$1=ref.height;return{scrolled:!(!this.parallax||!rows.some(function(row){return row.length>1}))&&scrolledOver(this.$el,height$$1?height$$1-height(this.$el):0)*this.parallax}},write:function(ref){var rows=ref.rows,scrolled=ref.scrolled,translates=ref.translates;(!1!==scrolled||translates)&&rows.forEach(function(row,i){return row.forEach(function(el,j){return css(el,"transform",scrolled||translates?"translateY("+((translates&&-translates[i][j])+(scrolled?j%2?scrolled:scrolled/8:0))+"px)":"")})})},events:["scroll","load","resize"]}]};var HeightMatch={args:"target",props:{target:String,row:Boolean},data:{target:"> *",row:!0},computed:{elements:function(ref,$el){return $$(ref.target,$el)}},update:{read:function(){var this$1=this;return css(this.elements,{minHeight:"",boxSizing:""}),{rows:this.row?getRows(this.elements).map(function(elements){return this$1.match(elements)}):[this.match(this.elements)]}},write:function(ref){ref.rows.forEach(function(ref){var height$$1=ref.height;return css(ref.elements,{minHeight:height$$1,boxSizing:"border-box"})})},events:["load","resize"]},methods:{match:function(elements){if(elements.length<2)return{};var heights=[],max=0;return elements.forEach(function(el){var height$$1=offset(el).height;max=Math.max(max,height$$1),heights.push(height$$1)}),elements=elements.filter(function(el,i){return heights[i]<max}),{height:max,elements:elements}}}},HeightViewport={props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},update:{write:function(){css(this.$el,"boxSizing","border-box");var minHeight,viewport=height(window),offsetTop=0;if(this.expand){css(this.$el,{height:"",minHeight:""});var diff=viewport-offsetHeight(document.documentElement);diff>0&&(minHeight=offsetHeight(this.$el)+diff)}else{var top=offset(this.$el).top;top<viewport/2&&this.offsetTop&&(offsetTop+=top),!0===this.offsetBottom?offsetTop+=offsetHeight(this.$el.nextElementSibling):isNumeric(this.offsetBottom)?offsetTop+=viewport/100*this.offsetBottom:this.offsetBottom&&endsWith(this.offsetBottom,"px")?offsetTop+=toFloat(this.offsetBottom):isString(this.offsetBottom)&&(offsetTop+=offsetHeight(query(this.offsetBottom,this.$el))),minHeight=offsetTop?"calc(100vh - "+offsetTop+"px)":"100vh"}if(minHeight){css(this.$el,{height:"",minHeight:minHeight});var elHeight=this.$el.offsetHeight;this.minHeight&&this.minHeight>elHeight&&css(this.$el,"minHeight",this.minHeight),viewport-offsetTop>=elHeight&&css(this.$el,"height",minHeight)}},events:["load","resize"]}};function offsetHeight(el){return el&&el.offsetHeight||0}var svgs={},SVG={attrs:!0,props:{id:String,icon:String,src:String,style:String,width:Number,height:Number,ratio:Number,class:String},data:{ratio:1,id:!1,exclude:["ratio","src","icon"],class:""},connected:function(){var assign$$1,this$1=this;if(this.class+=" uk-svg",!this.icon&&includes(this.src,"#")){var parts=this.src.split("#");parts.length>1&&(assign$$1=parts,this.src=assign$$1[0],this.icon=assign$$1[1])}this.svg=this.getSvg().then(function(svg){var el;if(isString(svg)?(this$1.icon&&includes(svg,"<symbol")&&(svg=function(svg,icon){if(!symbols[svg]){var match;for(symbols[svg]={};match=symbolRe.exec(svg);)symbols[svg][match[3]]='<svg xmlns="http://www.w3.org/2000/svg"'+match[1]+"svg>";symbolRe.lastIndex=0}return symbols[svg][icon]}(svg,this$1.icon)||svg),el=$(svg.substr(svg.indexOf("<svg")))):el=svg.cloneNode(!0),!el)return Promise$1.reject("SVG not found.");var dimensions=attr(el,"viewBox");for(var prop in dimensions&&(dimensions=dimensions.split(" "),this$1.width=this$1.$props.width||dimensions[2],this$1.height=this$1.$props.height||dimensions[3]),this$1.width*=this$1.ratio,this$1.height*=this$1.ratio,this$1.$options.props)this$1[prop]&&!includes(this$1.exclude,prop)&&attr(el,prop,this$1[prop]);this$1.id||removeAttr(el,"id"),this$1.width&&!this$1.height&&removeAttr(el,"height"),this$1.height&&!this$1.width&&removeAttr(el,"width");var root=this$1.$el;if(isVoidElement(root)||"CANVAS"===root.tagName){attr(root,{hidden:!0,id:null});var next=root.nextElementSibling;next&&el.isEqualNode(next)?el=next:after(root,el)}else{var last=root.lastElementChild;last&&el.isEqualNode(last)?el=last:append(root,el)}return this$1.svgEl=el,el},noop)},disconnected:function(){var this$1=this;isVoidElement(this.$el)&&attr(this.$el,{hidden:null,id:this.id||null}),this.svg&&this.svg.then(function(svg){return(!this$1._connected||svg!==this$1.svgEl)&&remove(svg)},noop),this.svg=this.svgEl=null},methods:{getSvg:function(){var this$1=this;return this.src?svgs[this.src]?svgs[this.src]:(svgs[this.src]=new Promise$1(function(resolve,reject){startsWith(this$1.src,"data:")?resolve(decodeURIComponent(this$1.src.split(",")[1])):ajax(this$1.src).then(function(xhr){return resolve(xhr.response)},function(){return reject("SVG not found.")})}),svgs[this.src]):Promise$1.reject()}}},symbolRe=/<symbol(.*?id=(['"])(.*?)\2[^]*?<\/)symbol>/g,symbols={};var parsed={},icons={spinner:'<svg width="30" height="30" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" cx="15" cy="15" r="14"/></svg>',totop:'<svg width="18" height="10" viewBox="0 0 18 10" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 9 9 1 17 9 "/></svg>',marker:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="9" y="4" width="1" height="11"/><rect x="4" y="9" width="11" height="1"/></svg>',"close-icon":'<svg width="14" height="14" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.1" x1="1" y1="1" x2="13" y2="13"/><line fill="none" stroke="#000" stroke-width="1.1" x1="13" y1="1" x2="1" y2="13"/></svg>',"close-large":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.4" x1="1" y1="1" x2="19" y2="19"/><line fill="none" stroke="#000" stroke-width="1.4" x1="19" y1="1" x2="1" y2="19"/></svg>',"navbar-toggle-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect y="9" width="20" height="2"/><rect y="3" width="20" height="2"/><rect y="15" width="20" height="2"/></svg>',"overlay-icon":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><rect x="19" y="0" width="1" height="40"/><rect x="0" y="19" width="40" height="1"/></svg>',"pagination-next":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 1 6 6 1 11"/></svg>',"pagination-previous":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="6 1 1 6 6 11"/></svg>',"search-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="9" cy="9" r="7"/><path fill="none" stroke="#000" stroke-width="1.1" d="M14,14 L18,18 L14,14 Z"/></svg>',"search-large":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.8" cx="17.5" cy="17.5" r="16.5"/><line fill="none" stroke="#000" stroke-width="1.8" x1="38" y1="39" x2="29" y2="30"/></svg>',"search-navbar":'<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10.5" cy="10.5" r="9.5"/><line fill="none" stroke="#000" stroke-width="1.1" x1="23" y1="23" x2="17" y2="17"/></svg>',"slidenav-next":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="1.225,23 12.775,12 1.225,1 "/></svg>',"slidenav-next-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="4.002,38.547 22.527,20.024 4,1.5 "/></svg>',"slidenav-previous":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="12.775,1 1.225,12 12.775,23 "/></svg>',"slidenav-previous-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="20.527,1.5 2,20.024 20.525,38.547 "/></svg>'},Icon={install:function(UIkit){UIkit.icon.add=function(name,svg){var obj,added=isString(name)?((obj={})[name]=svg,obj):name;each(added,function(svg,name){icons[name]=svg,delete parsed[name]}),UIkit._initialized&&apply(document.body,function(el){return each(UIkit.getComponents(el),function(cmp){return cmp.$options.isIcon&&cmp.icon in added&&cmp.$reset()})})}},attrs:["icon","ratio"],mixins:[Class,SVG],args:"icon",props:["icon"],data:{exclude:["id","style","class","src","icon","ratio"]},isIcon:!0,connected:function(){addClass(this.$el,"uk-icon")},methods:{getSvg:function(){var icon=function(icon){if(!icons[icon])return null;parsed[icon]||(parsed[icon]=$(icons[icon].trim()));return parsed[icon]}(function(icon){return isRtl?swap(swap(icon,"left","right"),"previous","next"):icon}(this.icon));return icon?Promise$1.resolve(icon):Promise$1.reject("Icon not found.")}}},IconComponent={extends:Icon,data:function(vm){return{icon:hyphenate(vm.constructor.options.name)}}},Slidenav={extends:IconComponent,connected:function(){addClass(this.$el,"uk-slidenav")},computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-slidenav-large")?icon+"-large":icon}}},Search={extends:IconComponent,computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-search-icon")&&parents($el,".uk-search-large").length?"search-large":parents($el,".uk-search-navbar").length?"search-navbar":icon}}},Close={extends:IconComponent,computed:{icon:function(){return"close-"+(hasClass(this.$el,"uk-close-large")?"large":"icon")}}},Spinner={extends:IconComponent,connected:function(){var this$1=this;this.svg.then(function(svg){return 1!==this$1.ratio&&css($("circle",svg),"strokeWidth",1/this$1.ratio)},noop)}};var Img={attrs:!0,props:{dataSrc:String,dataSrcset:Boolean,dataSizes:Boolean,sizes:String,width:Number,height:Number,dataWidth:Number,dataHeight:Number,offsetTop:String,offsetLeft:String,target:String},data:{dataSrc:"",dataSrcset:!1,dataSizes:!1,sizes:!1,width:!1,height:!1,offsetTop:"50vh",offsetLeft:0,target:!1},computed:{cacheKey:function(ref){var dataSrc=ref.dataSrc;return this.$name+"."+dataSrc},width:function(ref){var width$$1=ref.width,dataWidth=ref.dataWidth;return width$$1||dataWidth},height:function(ref){var height$$1=ref.height,dataHeight=ref.dataHeight;return height$$1||dataHeight},sizes:function(ref){var sizes=ref.sizes,dataSizes=ref.dataSizes;return sizes||dataSizes},isImg:function(_,$el){return isImg($el)},target:function(ref){var target=ref.target;return[this.$el].concat(queryAll(target,this.$el))},offsetTop:function(ref){return toPx(ref.offsetTop,"height")},offsetLeft:function(ref){return toPx(ref.offsetLeft,"width")}},connected:function(){storage[this.cacheKey]?setSrcAttrs(this.$el,storage[this.cacheKey]||this.dataSrc,this.dataSrcset,this.sizes):this.isImg&&this.width&&this.height&&setSrcAttrs(this.$el,function(width$$1,height$$1,sizes,color){var assign$$1;void 0===color&&(color="transparent");if(sizes){for(var matches$$1;matches$$1=sizesRe.exec(sizes);)if(!matches$$1[1]||window.matchMedia(matches$$1[1]).matches){size=matches$$1[2],matches$$1=startsWith(size,"calc")?size.substring(5,size.length-1).replace(sizeRe,function(size){return toPx(size)}).replace(/ /g,"").match(additionRe).reduce(function(a,b){return a+ +b},0):size;break}sizesRe.lastIndex=0,assign$$1=Dimensions.ratio({width:width$$1,height:height$$1},"width",toPx(matches$$1||"100vw")),width$$1=assign$$1.width,height$$1=assign$$1.height}var size;var key=width$$1+"."+height$$1+"."+color;if(urlCache[key])return urlCache[key];var canvas=fragment("<canvas>");canvas.width=width$$1,canvas.height=height$$1;var context=canvas.getContext("2d");return context.fillStyle=color,context.fillRect(0,0,width$$1,height$$1),urlCache[key]=canvas.toDataURL("image/png")}(this.width,this.height,this.sizes))},update:[{read:function(ref){var this$1=this,delay=ref.delay,image=ref.image;if(delay){if(!image&&this.target.some(function(el){return isInView(el,this$1.offsetTop,this$1.offsetLeft,!0)}))return{image:getImage(this.dataSrc,this.dataSrcset,this.sizes).then(function(img){return setSrcAttrs(this$1.$el,currentSrc(img),img.srcset,img.sizes),storage[this$1.cacheKey]=currentSrc(img),img},noop)};!this.isImg&&image&&image.then(function(img){return img&&setSrcAttrs(this$1.$el,currentSrc(img))})}},write:function(data$$1){if(!data$$1.delay)return this.$emit(),data$$1.delay=!0},events:["scroll","load","resize"]}]};function setSrcAttrs(el,src,srcset,sizes){isImg(el)?(src&&(el.src=src),srcset&&(el.srcset=srcset),sizes&&(el.sizes=sizes)):src&&css(el,"backgroundImage","url("+src+")")}var urlCache={},sizesRe=/\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;var sizeRe=/\d+(?:\w+|%)/g,additionRe=/[+-]?(\d+)/g;function toPx(value,property,element){return void 0===property&&(property="width"),void 0===element&&(element=window),isNumeric(value)?+value:endsWith(value,"vw")?percent(element,"width",value):endsWith(value,"vh")?percent(element,"height",value):endsWith(value,"%")?percent(element,property,value):toFloat(value)}var dimensions={height:height,width:width};function percent(element,property,value){return dimensions[property](element)*toFloat(value)/100}function isImg(el){return"IMG"===el.tagName}function currentSrc(el){return el.currentSrc||el.src}var storage;try{(storage=window.sessionStorage||{}).__test__=1,delete storage.__test__}catch(e){storage={}}var active$1,events,Leader={mixins:[Class],props:{fill:String,media:"media"},data:{fill:"",media:!1,clsWrapper:"uk-leader-fill",clsHide:"uk-leader-hide",attrFill:"data-fill"},computed:{fill:function(ref){return ref.fill||getCssVar("leader-fill")}},connected:function(){var assign$$1;assign$$1=wrapInner(this.$el,'<span class="'+this.clsWrapper+'">'),this.wrapper=assign$$1[0]},disconnected:function(){unwrap(this.wrapper.childNodes)},update:[{read:function(ref){var changed=ref.changed,width$$1=ref.width,prev=width$$1;return{width:width$$1=Math.floor(this.$el.offsetWidth/2),changed:changed||prev!==width$$1,hide:this.media&&!window.matchMedia(this.media).matches}},write:function(data$$1){toggleClass(this.wrapper,this.clsHide,data$$1.hide),data$$1.changed&&(data$$1.changed=!1,attr(this.wrapper,this.attrFill,new Array(data$$1.width).join(this.fill)))},events:["load","resize"]}]},Container={props:{container:Boolean},data:{container:!0},computed:{container:function(ref){var container=ref.container;return!0===container&&this.$container||container&&$(container)}}},Modal={mixins:[Class,Container,Togglable],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean},data:{cls:"uk-open",escClose:!0,bgClose:!0,overlay:!0,stack:!1},computed:{panel:function(ref,$el){return $(ref.selPanel,$el)},transitionElement:function(){return this.panel},transitionDuration:function(){return toMs(css(this.transitionElement,"transitionDuration"))},bgClose:function(ref){return ref.bgClose&&this.panel}},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.hide()}},{name:"toggle",self:!0,handler:function(e){e.defaultPrevented||(e.preventDefault(),this.toggle())}},{name:"beforeshow",self:!0,handler:function(e){var prev=active$1&&active$1!==this&&active$1;if(active$1=this,prev){if(!this.stack)return prev.hide().then(this.show),void e.preventDefault();this.prev=prev}!function(){if(events)return;events=[on(document,"click",function(ref){var target=ref.target,defaultPrevented=ref.defaultPrevented;!active$1||!active$1.bgClose||defaultPrevented||active$1.overlay&&!within(target,active$1.$el)||within(target,active$1.panel)||active$1.hide()}),on(document,"keydown",function(e){27===e.keyCode&&active$1&&active$1.escClose&&(e.preventDefault(),active$1.hide())})]}()}},{name:"beforehide",self:!0,handler:function(){(active$1=active$1&&active$1!==this&&active$1||this.prev)||(events&&events.forEach(function(unbind){return unbind()}),events=null)}},{name:"show",self:!0,handler:function(){hasClass(document.documentElement,this.clsPage)||(this.scrollbarWidth=width(window)-width(document),css(document.body,"overflowY",this.scrollbarWidth&&this.overlay?"scroll":"")),addClass(document.documentElement,this.clsPage)}},{name:"hidden",self:!0,handler:function(){for(var found,prev=this.prev;prev;){if(prev.clsPage===this.clsPage){found=!0;break}prev=prev.prev}found||removeClass(document.documentElement,this.clsPage),!this.prev&&css(document.body,"overflowY","")}}],methods:{toggle:function(){return this.isToggled()?this.hide():this.show()},show:function(){return this.isToggled()?Promise$1.resolve():(this.container&&this.$el.parentNode!==this.container&&(append(this.container,this.$el),this._callConnected()),this.toggleNow(this.$el,!0))},hide:function(){return this.isToggled()?this.toggleNow(this.$el,!1):Promise$1.resolve()},getActive:function(){return active$1},_toggleImmediate:function(el,show){var this$1=this;return new Promise$1(function(resolve){return requestAnimationFrame(function(){this$1._toggle(el,show),this$1.transitionDuration?once(this$1.transitionElement,"transitionend",resolve,!1,function(e){return e.target===this$1.transitionElement}):resolve()})})}}};var Modal$1={install:function(UIkit){UIkit.modal.dialog=function(content,options){var dialog=UIkit.modal(' <div class="uk-modal"> <div class="uk-modal-dialog">'+content+"</div> </div> ",options);return dialog.show(),on(dialog.$el,"hidden",function(ref){var target=ref.target,currentTarget=ref.currentTarget;target===currentTarget&&dialog.$destroy(!0)}),dialog},UIkit.modal.alert=function(message,options){return options=assign({bgClose:!1,escClose:!1,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){return on(UIkit.modal.dialog(' <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-primary uk-modal-close" autofocus>'+options.labels.ok+"</button> </div> ",options).$el,"hide",resolve)})},UIkit.modal.confirm=function(message,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve,reject){var confirm=UIkit.modal.dialog(' <form> <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary" autofocus>'+options.labels.ok+"</button> </div> </form> ",options),resolved=!1;on(confirm.$el,"submit","form",function(e){e.preventDefault(),resolve(),resolved=!0,confirm.hide()}),on(confirm.$el,"hide",function(){resolved||reject()})})},UIkit.modal.prompt=function(message,value,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){var prompt=UIkit.modal.dialog(' <form class="uk-form-stacked"> <div class="uk-modal-body"> <label>'+(isString(message)?message:html(message))+'</label> <input class="uk-input" autofocus> </div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary">'+options.labels.ok+"</button> </div> </form> ",options),input=$("input",prompt.$el);input.value=value;var resolved=!1;on(prompt.$el,"submit","form",function(e){e.preventDefault(),resolve(input.value),resolved=!0,prompt.hide()}),on(prompt.$el,"hide",function(){resolved||resolve(null)})})},UIkit.modal.labels={ok:"Ok",cancel:"Cancel"}},mixins:[Modal],data:{clsPage:"uk-modal-page",selPanel:".uk-modal-dialog",selClose:".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full"},events:[{name:"show",self:!0,handler:function(){hasClass(this.panel,"uk-margin-auto-vertical")?addClass(this.$el,"uk-flex"):css(this.$el,"display","block"),height(this.$el)}},{name:"hidden",self:!0,handler:function(){css(this.$el,"display",""),removeClass(this.$el,"uk-flex")}}]};var scroll,Nav={extends:Accordion,data:{targets:"> .uk-parent",toggle:"> a",content:"> ul"}},Navbar={mixins:[Class],props:{dropdown:String,mode:"list",align:String,offset:Number,boundary:Boolean,boundaryAlign:Boolean,clsDrop:String,delayShow:Number,delayHide:Number,dropbar:Boolean,dropbarMode:String,dropbarAnchor:Boolean,duration:Number},data:{dropdown:".uk-navbar-nav > li",align:isRtl?"right":"left",clsDrop:"uk-navbar-dropdown",mode:void 0,offset:void 0,delayShow:void 0,delayHide:void 0,boundaryAlign:void 0,flip:"x",boundary:!0,dropbar:!1,dropbarMode:"slide",dropbarAnchor:!1,duration:200},computed:{boundary:function(ref,$el){var boundary=ref.boundary,boundaryAlign=ref.boundaryAlign;return!0===boundary||boundaryAlign?$el:boundary},dropbarAnchor:function(ref,$el){return query(ref.dropbarAnchor,$el)},pos:function(ref){return"bottom-"+ref.align},dropdowns:function(ref,$el){return $$(ref.dropdown+" ."+ref.clsDrop,$el)}},beforeConnect:function(){var dropbar=this.$props.dropbar;this.dropbar=dropbar&&(query(dropbar,this.$el)||$("+ .uk-navbar-dropbar",this.$el)||$("<div></div>")),this.dropbar&&(addClass(this.dropbar,"uk-navbar-dropbar"),"slide"===this.dropbarMode&&addClass(this.dropbar,"uk-navbar-dropbar-slide"))},disconnected:function(){this.dropbar&&remove(this.dropbar)},update:function(){var this$1=this;this.$create("drop",this.dropdowns.filter(function(el){return!this$1.getDropdown(el)}),assign({},this.$props,{boundary:this.boundary,pos:this.pos,offset:this.dropbar||this.offset}))},events:[{name:"mouseover",delegate:function(){return this.dropdown},handler:function(ref){var current=ref.current,active=this.getActive();active&&active.toggle&&!within(active.toggle.$el,current)&&!active.tracker.movesTo(active.$el)&&active.hide(!1)}},{name:"mouseleave",el:function(){return this.dropbar},handler:function(){var active=this.getActive();active&&!matches(this.dropbar,":hover")&&active.hide()}},{name:"beforeshow",capture:!0,filter:function(){return this.dropbar},handler:function(){this.dropbar.parentNode||after(this.dropbarAnchor||this.$el,this.dropbar)}},{name:"show",capture:!0,filter:function(){return this.dropbar},handler:function(_,drop){var $el=drop.$el,dir=drop.dir;this.clsDrop&&addClass($el,this.clsDrop+"-dropbar"),"bottom"===dir&&this.transitionTo($el.offsetHeight+toFloat(css($el,"marginTop"))+toFloat(css($el,"marginBottom")),$el)}},{name:"beforehide",filter:function(){return this.dropbar},handler:function(e,ref){var $el=ref.$el,active=this.getActive();matches(this.dropbar,":hover")&&active&&active.$el===$el&&e.preventDefault()}},{name:"hide",filter:function(){return this.dropbar},handler:function(_,ref){var $el=ref.$el,active=this.getActive();(!active||active&&active.$el===$el)&&this.transitionTo(0)}}],methods:{getActive:function(){var active=this.dropdowns.map(this.getDropdown).filter(function(drop){return drop.isActive()})[0];return active&&includes(active.mode,"hover")&&within(active.toggle.$el,this.$el)&&active},transitionTo:function(newHeight,el){var dropbar=this.dropbar,oldHeight=isVisible(dropbar)?height(dropbar):0;return css(el=oldHeight<newHeight&&el,"clip","rect(0,"+el.offsetWidth+"px,"+oldHeight+"px,0)"),height(dropbar,oldHeight),Transition.cancel([el,dropbar]),Promise.all([Transition.start(dropbar,{height:newHeight},this.duration),Transition.start(el,{clip:"rect(0,"+el.offsetWidth+"px,"+newHeight+"px,0)"},this.duration)]).catch(noop).then(function(){return css(el,{clip:""})})},getDropdown:function(el){return this.$getComponent(el,"drop")||this.$getComponent(el,"dropdown")}}},Offcanvas={mixins:[Modal],args:"mode",props:{content:String,mode:String,flip:Boolean,overlay:Boolean},data:{content:".uk-offcanvas-content",mode:"slide",flip:!1,overlay:!1,clsPage:"uk-offcanvas-page",clsContainer:"uk-offcanvas-container",selPanel:".uk-offcanvas-bar",clsFlip:"uk-offcanvas-flip",clsContent:"uk-offcanvas-content",clsContentAnimation:"uk-offcanvas-content-animation",clsSidebarAnimation:"uk-offcanvas-bar-animation",clsMode:"uk-offcanvas",clsOverlay:"uk-offcanvas-overlay",selClose:".uk-offcanvas-close"},computed:{content:function(ref){return $(ref.content)||document.body},clsFlip:function(ref){var flip=ref.flip,clsFlip=ref.clsFlip;return flip?clsFlip:""},clsOverlay:function(ref){var overlay=ref.overlay,clsOverlay=ref.clsOverlay;return overlay?clsOverlay:""},clsMode:function(ref){var mode=ref.mode;return ref.clsMode+"-"+mode},clsSidebarAnimation:function(ref){var mode=ref.mode,clsSidebarAnimation=ref.clsSidebarAnimation;return"none"===mode||"reveal"===mode?"":clsSidebarAnimation},clsContentAnimation:function(ref){var mode=ref.mode,clsContentAnimation=ref.clsContentAnimation;return"push"!==mode&&"reveal"!==mode?"":clsContentAnimation},transitionElement:function(ref){return"reveal"===ref.mode?this.panel.parentNode:this.panel}},update:{write:function(){this.getActive()===this&&((this.overlay||this.clsContentAnimation)&&width(this.content,width(window)-this.scrollbarWidth),this.overlay&&(height(this.content,height(window)),scroll&&(this.content.scrollTop=scroll.y)))},events:["resize"]},events:[{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(ref){var current=ref.current;current.hash&&$(current.hash,this.content)&&(scroll=null,this.hide())}},{name:"beforescroll",filter:function(){return this.overlay},handler:function(e,scroll,target){scroll&&target&&this.isToggled()&&$(target,this.content)&&(once(this.$el,"hidden",function(){return scroll.scrollTo(target)}),e.preventDefault())}},{name:"show",self:!0,handler:function(){scroll=scroll||{x:window.pageXOffset,y:window.pageYOffset},"reveal"!==this.mode||hasClass(this.panel,this.clsMode)||(wrapAll(this.panel,"<div>"),addClass(this.panel.parentNode,this.clsMode)),css(document.documentElement,"overflowY",(!this.clsContentAnimation||this.flip)&&this.scrollbarWidth&&this.overlay?"scroll":""),addClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),height(document.body),addClass(this.content,this.clsContentAnimation),addClass(this.panel,this.clsSidebarAnimation,"reveal"!==this.mode?this.clsMode:""),addClass(this.$el,this.clsOverlay),css(this.$el,"display","block"),height(this.$el)}},{name:"hide",self:!0,handler:function(){removeClass(this.content,this.clsContentAnimation);var active=this.getActive();("none"===this.mode||active&&active!==this&&active!==this.prev)&&trigger(this.panel,"transitionend")}},{name:"hidden",self:!0,handler:function(){if("reveal"===this.mode&&unwrap(this.panel),this.overlay){if(!scroll){var ref=this.content,x=ref.scrollLeft,y=ref.scrollTop;scroll={x:x,y:y}}}else scroll={x:window.pageXOffset,y:window.pageYOffset};removeClass(this.panel,this.clsSidebarAnimation,this.clsMode),removeClass(this.$el,this.clsOverlay),css(this.$el,"display",""),removeClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),document.body.scrollTop=scroll.y,css(document.documentElement,"overflowY",""),width(this.content,""),height(this.content,""),window.scroll(scroll.x,scroll.y),scroll=null}},{name:"swipeLeft swipeRight",handler:function(e){this.isToggled()&&isTouch(e)&&("swipeLeft"===e.type&&!this.flip||"swipeRight"===e.type&&this.flip)&&this.hide()}}]},OverflowAuto={mixins:[Class],computed:{modal:function(_,$el){return closest($el,".uk-modal")},panel:function(_,$el){return closest($el,".uk-modal-dialog")}},connected:function(){css(this.$el,"minHeight",150)},update:{write:function(){if(this.panel&&this.modal){var current=css(this.$el,"maxHeight");css(css(this.$el,"maxHeight",150),"maxHeight",Math.max(150,150+height(this.modal)-this.panel.offsetHeight)),current!==css(this.$el,"maxHeight")&&trigger(this.$el,"resize")}},events:["load","resize"]}},Responsive={props:["width","height"],connected:function(){addClass(this.$el,"uk-responsive-width")},update:{read:function(){return!!(isVisible(this.$el)&&this.width&&this.height)&&{width:width(this.$el.parentNode),height:this.height}},write:function(dim){height(this.$el,Dimensions.contain({height:this.height,width:this.width},dim).height)},events:["load","resize"]}},Scroll={props:{duration:Number,offset:Number},data:{duration:1e3,offset:0},methods:{scrollTo:function(el){var this$1=this;el=el&&$(el)||document.body;var docHeight=height(document),winHeight=height(window),target=offset(el).top-this.offset;if(target+winHeight>docHeight&&(target=docHeight-winHeight),trigger(this.$el,"beforescroll",[this,el])){var start=Date.now(),startY=window.pageYOffset,step=function(){var k,currentY=startY+(target-startY)*(k=clamp((Date.now()-start)/this$1.duration),.5*(1-Math.cos(Math.PI*k)));window.scroll(window.pageXOffset,currentY),currentY!==target?requestAnimationFrame(step):trigger(this$1.$el,"scrolled",[this$1,el])};step()}}},events:{click:function(e){e.defaultPrevented||(e.preventDefault(),this.scrollTo(escape(this.$el.hash).substr(1)))}}};var Scrollspy={args:"cls",props:{cls:"list",target:String,hidden:Boolean,offsetTop:Number,offsetLeft:Number,repeat:Boolean,delay:Number},data:function(){return{cls:[],target:!1,hidden:!0,offsetTop:0,offsetLeft:0,repeat:!1,delay:0,inViewClass:"uk-scrollspy-inview"}},computed:{elements:function(ref,$el){var target=ref.target;return target?$$(target,$el):[$el]}},update:[{write:function(){this.hidden&&css(filter(this.elements,":not(."+this.inViewClass+")"),"visibility","hidden")}},{read:function(els){var this$1=this;els.delay&&this.elements.forEach(function(el,i){var elData=els[i];if(!elData||elData.el!==el){var cls=data(el,"uk-scrollspy-class");elData={el:el,toggles:cls&&cls.split(",")||this$1.cls}}elData.show=isInView(el,this$1.offsetTop,this$1.offsetLeft),els[i]=elData})},write:function(els){var this$1=this;if(!els.delay)return this.$emit(),els.delay=!0;var index$$1=1===this.elements.length?1:0;this.elements.forEach(function(el,i){var elData=els[i],cls=elData.toggles[i]||elData.toggles[0];if(!elData.show||elData.inview||elData.timer)!elData.show&&elData.inview&&this$1.repeat&&(elData.timer&&(clearTimeout(elData.timer),delete elData.timer),css(el,"visibility",this$1.hidden?"hidden":""),removeClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"outview"),this$1.$update(el),elData.inview=!1);else{var show=function(){css(el,"visibility",""),addClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"inview"),this$1.$update(el),elData.inview=!0,delete elData.timer};this$1.delay&&index$$1?elData.timer=setTimeout(show,this$1.delay*index$$1):show(),index$$1++}})},events:["scroll","load","resize"]}]},ScrollspyNav={props:{cls:String,closest:String,scroll:Boolean,overflow:Boolean,offset:Number},data:{cls:"uk-active",closest:!1,scroll:!1,overflow:!0,offset:0},computed:{links:function(_,$el){return $$('a[href^="#"]',$el).filter(function(el){return el.hash})},elements:function(){return this.closest?closest(this.links,this.closest):this.links},targets:function(){return $$(this.links.map(function(el){return el.hash}).join(","))}},update:[{read:function(){this.scroll&&this.$create("scroll",this.links,{offset:this.offset||0})}},{read:function(data$$1){var this$1=this,scroll=window.pageYOffset+this.offset+1,max=height(document)-height(window)+this.offset;data$$1.active=!1,this.targets.every(function(el,i){var top=offset(el).top,last=i+1===this$1.targets.length;if(!this$1.overflow&&(0===i&&top>scroll||last&&top+el.offsetTop<scroll))return!1;if(!last&&offset(this$1.targets[i+1]).top<=scroll)return!0;if(scroll>=max)for(var j=this$1.targets.length-1;j>i;j--)if(isInView(this$1.targets[j])){el=this$1.targets[j];break}return!(data$$1.active=$(filter(this$1.links,'[href="#'+el.id+'"]')))})},write:function(ref){var active=ref.active;this.links.forEach(function(el){return el.blur()}),removeClass(this.elements,this.cls),active&&trigger(this.$el,"active",[active,addClass(this.closest?closest(active,this.closest):active,this.cls)])},events:["scroll","load","resize"]}]},Sticky={mixins:[Class],attrs:!0,props:{top:null,bottom:Boolean,offset:Number,animation:String,clsActive:String,clsInactive:String,clsFixed:String,clsBelow:String,selTarget:String,widthElement:Boolean,showOnUp:Boolean,media:"media",targetOffset:Number},data:{top:0,bottom:!1,offset:0,animation:"",clsActive:"uk-active",clsInactive:"",clsFixed:"uk-sticky-fixed",clsBelow:"uk-sticky-below",selTarget:"",widthElement:!1,showOnUp:!1,media:!1,targetOffset:!1},computed:{selTarget:function(ref,$el){var selTarget=ref.selTarget;return selTarget&&$(selTarget,$el)||$el},widthElement:function(ref,$el){return query(ref.widthElement,$el)||this.placeholder}},connected:function(){this.placeholder=$("+ .uk-sticky-placeholder",this.$el)||$('<div class="uk-sticky-placeholder"></div>'),this.isActive||this.hide()},disconnected:function(){this.isActive&&(this.isActive=!1,this.hide(),removeClass(this.selTarget,this.clsInactive)),remove(this.placeholder),this.placeholder=null,this.widthElement=null},events:[{name:"active",self:!0,handler:function(){replaceClass(this.selTarget,this.clsInactive,this.clsActive)}},{name:"inactive",self:!0,handler:function(){replaceClass(this.selTarget,this.clsActive,this.clsInactive)}},{name:"load hashchange popstate",el:window,handler:function(){var this$1=this;if(!1!==this.targetOffset&&location.hash&&window.pageYOffset>0){var target=$(location.hash);target&&fastdom.read(function(){var top=offset(target).top,elTop=offset(this$1.$el).top,elHeight=this$1.$el.offsetHeight;this$1.isActive&&elTop+elHeight>=top&&elTop<=top+target.offsetHeight&&window.scroll(0,top-elHeight-(isNumeric(this$1.targetOffset)?this$1.targetOffset:0)-this$1.offset)})}}}],update:[{write:function(){var placeholder=this.placeholder,offsetHeight=this.$el.offsetHeight;css(placeholder,assign({height:"absolute"!==css(this.$el,"position")?offsetHeight:""},css(this.$el,["marginTop","marginBottom","marginLeft","marginRight"]))),within(placeholder,document)||(after(this.$el,placeholder),attr(placeholder,"hidden","")),this.topOffset=offset(this.isActive?placeholder:this.$el).top,this.bottomOffset=this.topOffset+offsetHeight;var bottom=parseProp("bottom",this);this.top=Math.max(toFloat(parseProp("top",this)),this.topOffset)-this.offset,this.bottom=bottom&&bottom-offsetHeight,this.inactive=this.media&&!window.matchMedia(this.media).matches},events:["load","resize"]},{read:function(_,ref){var scrollY=ref.scrollY;return void 0===scrollY&&(scrollY=window.pageYOffset),this.width=(isVisible(this.widthElement)?this.widthElement:this.$el).offsetWidth,{scroll:this.scroll=scrollY,visible:isVisible(this.$el)}},write:function(ref,ref$1){var this$1=this,visible=ref.visible,scroll=ref.scroll;void 0===ref$1&&(ref$1={});var dir=ref$1.dir;if(!(scroll<0||!visible||this.disabled||this.showOnUp&&!dir))if(this.inactive||scroll<this.top||this.showOnUp&&(scroll<=this.top||"down"===dir||"up"===dir&&!this.isActive&&scroll<=this.bottomOffset)){if(!this.isActive)return;this.isActive=!1,this.animation&&scroll>this.topOffset?(Animation.cancel(this.$el),Animation.out(this.$el,this.animation).then(function(){return this$1.hide()},noop)):this.hide()}else this.isActive?this.update():this.animation?(Animation.cancel(this.$el),this.show(),Animation.in(this.$el,this.animation).catch(noop)):this.show()},events:["load","resize","scroll"]}],methods:{show:function(){this.isActive=!0,this.update(),attr(this.placeholder,"hidden",null)},hide:function(){this.isActive&&!hasClass(this.selTarget,this.clsActive)||trigger(this.$el,"inactive"),removeClass(this.$el,this.clsFixed,this.clsBelow),css(this.$el,{position:"",top:"",width:""}),attr(this.placeholder,"hidden","")},update:function(){var active=0!==this.top||this.scroll>this.top,top=Math.max(0,this.offset);this.bottom&&this.scroll>this.bottom-this.offset&&(top=this.bottom-this.scroll),css(this.$el,{position:"fixed",top:top+"px",width:this.width}),hasClass(this.selTarget,this.clsActive)?active||trigger(this.$el,"inactive"):active&&trigger(this.$el,"active"),toggleClass(this.$el,this.clsBelow,this.scroll>this.bottomOffset),addClass(this.$el,this.clsFixed)}}};function parseProp(prop,ref){var $props=ref.$props,$el=ref.$el,propOffset=ref[prop+"Offset"],value=$props[prop];if(value){if(isNumeric(value))return propOffset+toFloat(value);if(isString(value)&&value.match(/^-?\d+vh$/))return height(window)*toFloat(value)/100;var el=!0===value?$el.parentNode:query(value,$el);return el?offset(el).top+el.offsetHeight:void 0}}var Switcher={mixins:[Togglable],args:"connect",props:{connect:String,toggle:String,active:Number,swiping:Boolean},data:{connect:"~.uk-switcher",toggle:"> *",active:0,swiping:!0,cls:"uk-active",clsContainer:"uk-switcher",attrItem:"uk-switcher-item",queued:!0},computed:{connects:function(ref,$el){return queryAll(ref.connect,$el)},toggles:function(ref,$el){return $$(ref.toggle,$el)}},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),this.show(e.current)}},{name:"click",el:function(){return this.connects},delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.show(data(e.current,this.attrItem))}},{name:"swipeRight swipeLeft",filter:function(){return this.swiping},el:function(){return this.connects},handler:function(e){isTouch(e)&&(e.preventDefault(),window.getSelection().toString()||this.show("swipeLeft"===e.type?"next":"previous"))}}],update:function(){var this$1=this;this.connects.forEach(function(list){return this$1.updateAria(list.children)}),this.show(filter(this.toggles,"."+this.cls)[0]||this.toggles[this.active]||this.toggles[0])},methods:{show:function(item){for(var toggle,this$1=this,length=this.toggles.length,prev=!!this.connects.length&&index(filter(this.connects[0].children,"."+this.cls)[0]),hasPrev=prev>=0,dir="previous"===item?-1:1,next=getIndex(item,this.toggles,prev),i=0;i<length;i++,next=(next+dir+length)%length)if(!matches(this$1.toggles[next],".uk-disabled, [disabled]")){toggle=this$1.toggles[next];break}!toggle||prev>=0&&hasClass(toggle,this.cls)||prev===next||(removeClass(this.toggles,this.cls),attr(this.toggles,"aria-expanded",!1),addClass(toggle,this.cls),attr(toggle,"aria-expanded",!0),this.connects.forEach(function(list){hasPrev?this$1.toggleElement([list.children[prev],list.children[next]]):this$1.toggleNow(list.children[next])}))}}},Tab={mixins:[Class],extends:Switcher,props:{media:"media"},data:{media:960,attrItem:"uk-tab-item"},connected:function(){var cls=hasClass(this.$el,"uk-tab-left")?"uk-tab-left":!!hasClass(this.$el,"uk-tab-right")&&"uk-tab-right";cls&&this.$create("toggle",this.$el,{cls:cls,mode:"media",media:this.media})}},Toggle={mixins:[Togglable],args:"target",props:{href:String,target:null,mode:"list",media:"media"},data:{href:!1,target:!1,mode:"click",queued:!0,media:!1},computed:{target:function(ref,$el){var href=ref.href,target=ref.target;return(target=queryAll(target||href,$el)).length&&target||[$el]}},events:[{name:pointerEnter+" "+pointerLeave,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||this.toggle("toggle"+(e.type===pointerEnter?"show":"hide"))}},{name:"click",filter:function(){return includes(this.mode,"click")||hasTouch&&includes(this.mode,"hover")},handler:function(e){var link;(isTouch(e)||includes(this.mode,"click"))&&((closest(e.target,'a[href="#"], button')||(link=closest(e.target,"a[href]"))&&(this.cls||!isVisible(this.target)||link.hash&&matches(this.target,link.hash)))&&once(document,"click",function(e){return e.preventDefault()}),this.toggle())}}],update:{write:function(){if(includes(this.mode,"media")&&this.media){var toggled=this.isToggled(this.target);(window.matchMedia(this.media).matches?!toggled:toggled)&&this.toggle()}},events:["load","resize"]},methods:{toggle:function(type){trigger(this.target,type||"toggle",[this])&&this.toggleElement(this.target)}}};UIkit.version="3.0.0-rc.5",function(UIkit){UIkit.component("accordion",Accordion),UIkit.component("alert",Alert),UIkit.component("cover",Cover),UIkit.component("drop",Drop),UIkit.component("dropdown",Dropdown),UIkit.component("formCustom",FormCustom),UIkit.component("gif",Gif),UIkit.component("grid",Grid),UIkit.component("heightMatch",HeightMatch),UIkit.component("heightViewport",HeightViewport),UIkit.component("icon",Icon),UIkit.component("img",Img),UIkit.component("leader",Leader),UIkit.component("margin",Margin),UIkit.component("modal",Modal$1),UIkit.component("nav",Nav),UIkit.component("navbar",Navbar),UIkit.component("offcanvas",Offcanvas),UIkit.component("overflowAuto",OverflowAuto),UIkit.component("responsive",Responsive),UIkit.component("scroll",Scroll),UIkit.component("scrollspy",Scrollspy),UIkit.component("scrollspyNav",ScrollspyNav),UIkit.component("sticky",Sticky),UIkit.component("svg",SVG),UIkit.component("switcher",Switcher),UIkit.component("tab",Tab),UIkit.component("toggle",Toggle),UIkit.component("video",Video),UIkit.component("close",Close),UIkit.component("marker",IconComponent),UIkit.component("navbarToggleIcon",IconComponent),UIkit.component("overlayIcon",IconComponent),UIkit.component("paginationNext",IconComponent),UIkit.component("paginationPrevious",IconComponent),UIkit.component("searchIcon",Search),UIkit.component("slidenavNext",Slidenav),UIkit.component("slidenavPrevious",Slidenav),UIkit.component("spinner",Spinner),UIkit.component("totop",IconComponent),UIkit.use(Core)}(UIkit);var Countdown={mixins:[Class],attrs:!0,props:{date:String,clsWrapper:String},data:{date:"",clsWrapper:".uk-countdown-%unit%"},computed:{date:function(ref){var date=ref.date;return Date.parse(date)},days:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","days"),$el)},hours:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","hours"),$el)},minutes:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","minutes"),$el)},seconds:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","seconds"),$el)},units:function(){var this$1=this;return["days","hours","minutes","seconds"].filter(function(unit){return this$1[unit]})}},connected:function(){this.start()},disconnected:function(){var this$1=this;this.stop(),this.units.forEach(function(unit){return empty(this$1[unit])})},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stop():this.start()}}],update:{write:function(){var date,total,this$1=this,timespan=(date=this.date,{total:total=date-Date.now(),seconds:total/1e3%60,minutes:total/1e3/60%60,hours:total/1e3/60/60%24,days:total/1e3/60/60/24});timespan.total<=0&&(this.stop(),timespan.days=timespan.hours=timespan.minutes=timespan.seconds=0),this.units.forEach(function(unit){var digits=String(Math.floor(timespan[unit]));digits=digits.length<2?"0"+digits:digits;var el=this$1[unit];el.textContent!==digits&&((digits=digits.split("")).length!==el.children.length&&html(el,digits.map(function(){return"<span></span>"}).join("")),digits.forEach(function(digit,i){return el.children[i].textContent=digit}))})}},methods:{start:function(){var this$1=this;this.stop(),this.date&&this.units.length&&(this.$emit(),this.timer=setInterval(function(){return this$1.$emit()},1e3))},stop:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};var style$1,targetClass="uk-animation-target",Animate={props:{animation:Number},data:{animation:150},computed:{target:function(){return this.$el}},methods:{animate:function(action){var this$1=this;style$1||(style$1=append(document.head,"<style>").sheet).insertRule("."+targetClass+" > * {\n margin-top: 0 !important;\n transform: none !important;\n }");var children=toNodes(this.target.children),propsFrom=children.map(function(el){return getProps(el,!0)}),oldHeight=height(this.target),oldScrollY=window.pageYOffset;action(),Transition.cancel(this.target),children.forEach(Transition.cancel),reset(this.target),this.$update(this.target),fastdom.flush();var newHeight=height(this.target),propsTo=(children=children.concat(toNodes(this.target.children).filter(function(el){return!includes(children,el)}))).map(function(el,i){return!!(el.parentNode&&i in propsFrom)&&(propsFrom[i]?isVisible(el)?getPositionWithMargin(el):{opacity:0}:{opacity:isVisible(el)?1:0})});return propsFrom=propsTo.map(function(props,i){var from=children[i].parentNode===this$1.target&&(propsFrom[i]||getProps(children[i]));if(from)if(props){if(!("opacity"in props)){from.opacity%1?props.opacity=1:delete from.opacity}}else delete from.opacity;return from}),addClass(this.target,targetClass),children.forEach(function(el,i){return propsFrom[i]&&css(el,propsFrom[i])}),css(this.target,"minHeight",oldHeight),window.scroll(window.pageXOffset,oldScrollY),Promise$1.all(children.map(function(el,i){return propsFrom[i]&&propsTo[i]?Transition.start(el,propsTo[i],this$1.animation,"ease"):Promise$1.resolve()}).concat(Transition.start(this.target,{minHeight:newHeight},this.animation,"ease"))).then(function(){children.forEach(function(el,i){return css(el,{display:0===propsTo[i].opacity?"none":"",zIndex:""})}),reset(this$1.target),this$1.$update(this$1.target)},noop)}}};function getProps(el,opacity){var zIndex=css(el,"zIndex");return!!isVisible(el)&&assign({display:"",opacity:opacity?css(el,"opacity"):"0",pointerEvents:"none",position:"absolute",zIndex:"auto"===zIndex?index(el):zIndex},getPositionWithMargin(el))}function reset(el){css(el.children,{height:"",left:"",opacity:"",pointerEvents:"",position:"",top:"",width:""}),removeClass(el,targetClass),css(el,"minHeight","")}function getPositionWithMargin(el){var ref=el.getBoundingClientRect(),height$$1=ref.height,width$$1=ref.width,ref$1=position(el),top=ref$1.top,left=ref$1.left;return{top:top+=toFloat(css(el,"marginTop")),left:left,height:height$$1,width:width$$1}}var Filter={mixins:[Animate],args:"target",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:"uk-filter-control",cls:"uk-active",animation:250},computed:{toggles:function(ref,$el){ref.attrItem;return $$("["+this.attrItem+"],[data-"+this.attrItem+"]",$el)},target:function(ref,$el){return $(ref.target,$el)}},events:[{name:"click",delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.apply(e.current)}}],connected:function(){var this$1=this;if(!1!==this.selActive){var actives=$$(this.selActive,this.$el);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,includes(actives,el))})}},update:function(data$$1){var toggles=data$$1.toggles,children=data$$1.children;isEqualList(toggles,this.toggles,!1)&&isEqualList(children,this.target.children,!1)||(data$$1.toggles=this.toggles,data$$1.children=this.target.children,this.setState(this.getState(),!1))},methods:{apply:function(el){this.setState(mergeState(el,this.attrItem,this.getState()))},getState:function(){var this$1=this;return this.toggles.filter(function(item){return hasClass(item,this$1.cls)}).reduce(function(state,el){return mergeState(el,this$1.attrItem,state)},{filter:{"":""},sort:[]})},setState:function(state,animate$$1){var this$1=this;void 0===animate$$1&&(animate$$1=!0),state=assign({filter:{"":""},sort:[]},state),trigger(this.$el,"beforeFilter",[this,state]);var children=toNodes(this.target.children);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,function(el,attr$$1,ref){var stateFilter=ref.filter,ref_sort=ref.sort,stateSort=ref_sort[0],stateOrder=ref_sort[1],ref$1=getFilter(el,attr$$1),filter$$1=ref$1.filter,group=ref$1.group;void 0===group&&(group="");var sort=ref$1.sort,order=ref$1.order;void 0===order&&(order="asc");return Boolean((filter$$1||isUndefined(sort))&&group in stateFilter&&(filter$$1===stateFilter[group]||isUndefined(filter$$1)&&!stateFilter[group])||stateSort&&sort&&stateSort===sort&&stateOrder===order)}(el,this$1.attrItem,state))});var apply$$1=function(){var selector=function(ref){var selector="";return each(ref.filter,function(value){return selector+=value||""}),selector}(state);children.forEach(function(el){return css(el,"display",selector&&!matches(el,selector)?"none":"")});var ref=state.sort,sort=ref[0],order=ref[1];if(sort){var sorted=function(nodes,sort,order){return toNodes(nodes).sort(function(a,b){return data(a,sort).localeCompare(data(b,sort))*("asc"===order||-1)})}(children,sort,order);isEqualList(sorted,children)||sorted.forEach(function(el){return append(this$1.target,el)})}};animate$$1?this.animate(apply$$1).then(function(){return trigger(this$1.$el,"afterFilter",[this$1])}):(apply$$1(),trigger(this.$el,"afterFilter",[this]))}}};function getFilter(el,attr$$1){return parseOptions(data(el,attr$$1),["filter"])}function mergeState(el,attr$$1,state){return toNodes(el).forEach(function(el){var filterBy=getFilter(el,attr$$1),filter$$1=filterBy.filter,group=filterBy.group,sort=filterBy.sort,order=filterBy.order;void 0===order&&(order="asc"),(filter$$1||isUndefined(sort))&&(group?(delete state.filter[""],state.filter[group]=filter$$1):state.filter={"":filter$$1}),isUndefined(sort)||(state.sort=[sort,order])}),state}function isEqualList(listA,listB,strict){return void 0===strict&&(strict=!0),listA=toNodes(listA),listB=toNodes(listB),listA.length===listB.length&&listA.every(function(el,i){return strict?el===listB[i]:~listB.indexOf(el)})}var Animations={slide:{show:function(dir){return[{transform:translate(-100*dir)},{transform:translate()}]},percent:function(current){return translated(current)},translate:function(percent,dir){return[{transform:translate(-100*dir*percent)},{transform:translate(100*dir*(1-percent))}]}}};function translated(el){return Math.abs(css(el,"transform").split(",")[4]/el.offsetWidth)||0}function translate(value,unit){return void 0===value&&(value=0),void 0===unit&&(unit="%"),"translateX("+value+(value?unit:"")+")"}function scale3d(value){return"scale3d("+value+", "+value+", 1)"}var Animations$1=assign({},Animations,{fade:{show:function(){return[{opacity:0},{opacity:1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent},{opacity:percent}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(.8)},{opacity:1,transform:scale3d(1)}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1-.2*percent)},{opacity:percent,transform:scale3d(.8+.2*percent)}]}}});function triggerUpdate(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}var Slider={attrs:!0,mixins:[{props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected:function(){this.startAutoplay()},disconnected:function(){this.stopAutoplay()},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stopAutoplay():this.startAutoplay()}},{name:pointerDown,handler:"stopAutoplay"},{name:"mouseenter",filter:function(){return this.autoplay},handler:function(){this.isHovering=!0}},{name:"mouseleave",filter:function(){return this.autoplay},handler:function(){this.isHovering=!1}}],methods:{startAutoplay:function(){var this$1=this;this.stopAutoplay(),this.autoplay&&(this.interval=setInterval(function(){return!(this$1.isHovering&&this$1.pauseOnHover)&&!this$1.stack.length&&this$1.show("next")},this.autoplayInterval))},stopAutoplay:function(){this.interval&&clearInterval(this.interval)}}},{data:{threshold:10,preventCatch:!1},init:function(){var this$1=this;["start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){var pos=getPos$1(e).x*(isRtl?-1:1);this$1.prevPos=pos!==this$1.pos?this$1.pos:this$1.prevPos,this$1.pos=pos,fn(e)}})},events:[{name:pointerDown,delegate:function(){return this.slidesSelector},handler:function(e){var el;!isTouch(e)&&(el=e.target,!el.children.length&&el.childNodes.length)||e.button>0||this.length<2||this.preventCatch||this.start(e)}},{name:"dragstart",handler:function(e){e.preventDefault()}}],methods:{start:function(){this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.translate(this.percent),this._transitioner.cancel(),this.dragging=!0,this.stack=[]):this.prevIndex=this.index,this.unbindMove=on(document,pointerMove,this.move,{capture:!0,passive:!1}),on(window,"scroll",this.unbindMove),on(document,pointerUp,this.end,!0)},move:function(e){var this$1=this,distance=this.pos-this.drag;if(!(0===distance||this.prevPos===this.pos||!this.dragging&&Math.abs(distance)<this.threshold)){e.cancelable&&e.preventDefault(),this.dragging=!0,this.dir=distance<0?1:-1;for(var slides=this.slides,prevIndex=this.prevIndex,dis=Math.abs(distance),nextIndex=this.getIndex(prevIndex+this.dir,prevIndex),width$$1=this._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;nextIndex!==prevIndex&&dis>width$$1;)this$1.drag-=width$$1*this$1.dir,prevIndex=nextIndex,dis-=width$$1,nextIndex=this$1.getIndex(prevIndex+this$1.dir,prevIndex),width$$1=this$1._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;this.percent=dis/width$$1;var itemShown,prev=slides[prevIndex],next=slides[nextIndex],changed=this.index!==nextIndex,edge=prevIndex===nextIndex;[this.index,this.prevIndex].filter(function(i){return!includes([nextIndex,prevIndex],i)}).forEach(function(i){trigger(slides[i],"itemhidden",[this$1]),edge&&(itemShown=!0,this$1.prevIndex=prevIndex)}),(this.index===prevIndex&&this.prevIndex!==prevIndex||itemShown)&&trigger(slides[this.index],"itemshown",[this]),changed&&(this.prevIndex=prevIndex,this.index=nextIndex,!edge&&trigger(prev,"beforeitemhide",[this]),trigger(next,"beforeitemshow",[this])),this._transitioner=this._translate(Math.abs(this.percent),prev,!edge&&next),changed&&(!edge&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]))}},end:function(){if(off(window,"scroll",this.unbindMove),this.unbindMove(),off(document,pointerUp,this.end,!0),this.dragging){if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{var dirChange=(isRtl?this.dir*(isRtl?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=dirChange?this.index:this.prevIndex,dirChange&&(this.percent=1-this.percent),this.show(this.dir>0&&!dirChange||this.dir<0&&dirChange?"next":"previous",!0)}preventClick()}this.drag=this.percent=null}}},{data:{selNav:!1},computed:{nav:function(ref,$el){return $(ref.selNav,$el)},navItemSelector:function(ref){var attrItem=ref.attrItem;return"["+attrItem+"],[data-"+attrItem+"]"},navItems:function(_,$el){return $$(this.navItemSelector,$el)}},update:[{write:function(){var this$1=this;this.nav&&this.length!==this.nav.children.length&&html(this.nav,this.slides.map(function(_,i){return"<li "+this$1.attrItem+'="'+i+'"><a href="#"></a></li>'}).join("")),toggleClass($$(this.navItemSelector,this.$el).concat(this.nav),"uk-hidden",!this.maxIndex),this.updateNav()},events:["load","resize"]}],events:[{name:"click",delegate:function(){return this.navItemSelector},handler:function(e){e.preventDefault(),e.current.blur(),this.show(data(e.current,this.attrItem))}},{name:"itemshow",handler:"updateNav"}],methods:{updateNav:function(){var this$1=this,i=this.getValidIndex();this.navItems.forEach(function(el){var cmd=data(el,this$1.attrItem);toggleClass(el,this$1.clsActive,toNumber(cmd)===i),toggleClass(el,"uk-invisible",this$1.finite&&("previous"===cmd&&0===i||"next"===cmd&&i>=this$1.maxIndex))})}}}],props:{clsActivated:Boolean,easing:String,index:Number,finite:Boolean,velocity:Number},data:function(){return{easing:"ease",finite:!1,velocity:1,index:0,stack:[],percent:0,clsActive:"uk-active",clsActivated:!1,Transitioner:!1,transitionOptions:{}}},computed:{duration:function(ref,$el){var velocity=ref.velocity;return speedUp($el.offsetWidth/velocity)},length:function(){return this.slides.length},list:function(ref,$el){return $(ref.selList,$el)},maxIndex:function(){return this.length-1},slidesSelector:function(ref){return ref.selList+" > *"},slides:function(){return toNodes(this.list.children)}},events:{itemshown:function(){this.$update(this.list)}},methods:{show:function(index$$1,force){var this$1=this;if(void 0===force&&(force=!1),!this.dragging&&this.length){var stack=this.stack,queueIndex=force?0:stack.length,reset=function(){stack.splice(queueIndex,1),stack.length&&this$1.show(stack.shift(),!0)};if(stack[force?"unshift":"push"](index$$1),!force&&stack.length>1)2===stack.length&&this._transitioner.forward(Math.min(this.duration,200));else{var prevIndex=this.index,prev=hasClass(this.slides,this.clsActive)&&this.slides[prevIndex],nextIndex=this.getIndex(index$$1,this.index),next=this.slides[nextIndex];if(prev!==next){if(this.dir=function(index$$1,prevIndex){return"next"===index$$1?1:"previous"===index$$1?-1:index$$1<prevIndex?-1:1}(index$$1,prevIndex),this.prevIndex=prevIndex,this.index=nextIndex,prev&&trigger(prev,"beforeitemhide",[this]),!trigger(next,"beforeitemshow",[this,prev]))return this.index=this.prevIndex,void reset();var promise=this._show(prev,next,force).then(function(){return prev&&trigger(prev,"itemhidden",[this$1]),trigger(next,"itemshown",[this$1]),new Promise$1(function(resolve){fastdom.write(function(){stack.shift(),stack.length?this$1.show(stack.shift(),!0):this$1._transitioner=null,resolve()})})});return prev&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]),promise}reset()}}},getIndex:function(index$$1,prev){return void 0===index$$1&&(index$$1=this.index),void 0===prev&&(prev=this.index),clamp(getIndex(index$$1,this.slides,prev,this.finite),0,this.maxIndex)},getValidIndex:function(index$$1,prevIndex){return void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),this.getIndex(index$$1,prevIndex)},_show:function(prev,next,force){if(this._transitioner=this._getTransitioner(prev,next,this.dir,assign({easing:force?next.offsetWidth<600?"cubic-bezier(0.25, 0.46, 0.45, 0.94)":"cubic-bezier(0.165, 0.84, 0.44, 1)":this.easing},this.transitionOptions)),!force&&!prev)return this._transitioner.translate(1),Promise$1.resolve();var length=this.stack.length;return this._transitioner[length>1?"forward":"show"](length>1?Math.min(this.duration,75+75/(length-1)):this.duration,this.percent)},_getDistance:function(prev,next){return new this._getTransitioner(prev,prev!==next&&next).getDistance()},_translate:function(percent,prev,next){void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index);var transitioner=this._getTransitioner(prev!==next&&prev,next);return transitioner.translate(percent),transitioner},_getTransitioner:function(prev,next,dir,options){return void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index),void 0===dir&&(dir=this.dir||1),void 0===options&&(options=this.transitionOptions),new this.Transitioner(isNumber(prev)?this.slides[prev]:prev,isNumber(next)?this.slides[next]:next,dir*(isRtl?-1:1),options)}}};function speedUp(x){return.5*x+300}var Slideshow={mixins:[Slider],props:{animation:String},data:{animation:"slide",clsActivated:"uk-transition-active",Animations:Animations,Transitioner:function(prev,next,dir,ref){var animation=ref.animation,easing=ref.easing,percent=animation.percent,translate=animation.translate,show=animation.show;void 0===show&&(show=noop);var props=show(dir),deferred=new Deferred;return{dir:dir,show:function(duration,percent,linear){var this$1=this;void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),triggerUpdate(next,"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),triggerUpdate(prev,"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Promise$1.all([Transition.start(next,props[1],duration,timing),Transition.start(prev,props[0],duration,timing)]).then(function(){this$1.reset(),deferred.resolve()},noop),deferred.promise},stop:function(){return Transition.stop([next,prev])},cancel:function(){Transition.cancel([next,prev])},reset:function(){for(var prop in props[0])css([next,prev],prop,"")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel([next,prev]),this.show(duration,percent,!0)},translate:function(percent){this.reset();var props=translate(percent,dir);css(next,props[1]),css(prev,props[0]),triggerUpdate(next,"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate(prev,"itemtranslateout",{percent:1-percent,dir:dir})},percent:function(){return percent(prev||next,next,dir)},getDistance:function(){return prev.offsetWidth}}}},computed:{animation:function(ref){var animation=ref.animation,Animations$$1=ref.Animations;return assign(animation in Animations$$1?Animations$$1[animation]:Animations$$1.slide,{name:animation})},transitionOptions:function(){return{animation:this.animation}}},events:{"itemshow itemhide itemshown itemhidden":function(ref){var target=ref.target;this.$update(target)},itemshow:function(){isNumber(this.prevIndex)&&fastdom.flush()},beforeitemshow:function(ref){addClass(ref.target,this.clsActive)},itemshown:function(ref){addClass(ref.target,this.clsActivated)},itemhidden:function(ref){removeClass(ref.target,this.clsActive,this.clsActivated)}}},LightboxPanel={mixins:[Container,Modal,Togglable,Slideshow],functional:!0,props:{delayControls:Number,preload:Number,videoAutoplay:Boolean,template:String},data:function(){return{preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:"uk-open",clsPage:"uk-lightbox-page",selList:".uk-lightbox-items",attrItem:"uk-lightbox-item",selClose:".uk-close-large",pauseOnHover:!1,velocity:2,Animations:Animations$1,template:'<div class="uk-lightbox uk-overflow-hidden"> <ul class="uk-lightbox-items"></ul> <div class="uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque"> <button class="uk-lightbox-toolbar-icon uk-close-large" type="button" uk-close></button> </div> <a class="uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade" href="#" uk-slidenav-previous uk-lightbox-item="previous"></a> <a class="uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade" href="#" uk-slidenav-next uk-lightbox-item="next"></a> <div class="uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque"></div> </div>'}},created:function(){var this$1=this;this.$mount(append(this.container,this.template)),this.caption=$(".uk-lightbox-caption",this.$el),this.items.forEach(function(){return append(this$1.list,"<li></li>")})},events:[{name:pointerMove+" "+pointerDown+" keydown",handler:"showControls"},{name:"click",self:!0,delegate:function(){return this.slidesSelector},handler:function(e){e.preventDefault(),this.hide()}},{name:"shown",self:!0,handler:"showControls"},{name:"hide",self:!0,handler:function(){this.hideControls(),removeClass(this.slides,this.clsActive),Transition.stop(this.slides)}},{name:"keyup",el:document,handler:function(e){if(this.isToggled(this.$el))switch(e.keyCode){case 37:this.show("previous");break;case 39:this.show("next")}}},{name:"beforeitemshow",handler:function(e){this.isToggled()||(this.preventCatch=!0,e.preventDefault(),this.toggleNow(this.$el,!0),this.animation=Animations$1.scale,removeClass(e.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:"itemshow",handler:function(ref){var i=index(ref.target),caption=this.getItem(i).caption;css(this.caption,"display",caption?"":"none"),html(this.caption,caption);for(var j=0;j<=this.preload;j++)this.loadItem(this.getIndex(i+j)),this.loadItem(this.getIndex(i-j))}},{name:"itemshown",handler:function(){this.preventCatch=!1}},{name:"itemload",handler:function(_,item){var matches$$1,this$1=this,source=item.source,type=item.type,alt=item.alt;if(this.setItem(item,"<span uk-spinner></span>"),source)if("image"===type||source.match(/\.(jp(e)?g|png|gif|svg)($|\?)/i))getImage(source).then(function(img){return this$1.setItem(item,'<img width="'+img.width+'" height="'+img.height+'" src="'+source+'" alt="'+(alt||"")+'">')},function(){return this$1.setError(item)});else if("video"===type||source.match(/\.(mp4|webm|ogv)($|\?)/i)){var video=$("<video controls playsinline"+(item.poster?' poster="'+item.poster+'"':"")+' uk-video="'+this.videoAutoplay+'"></video>');attr(video,"src",source),on(video,"error",function(){return this$1.setError(item)}),on(video,"loadedmetadata",function(){attr(video,{width:video.videoWidth,height:video.videoHeight}),this$1.setItem(item,video)})}else if("iframe"===type||source.match(/\.(html|php)($|\?)/i))this.setItem(item,'<iframe class="uk-lightbox-iframe" src="'+source+'" frameborder="0" allowfullscreen></iframe>');else if(matches$$1=source.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/watch\?v=([^&\s]+)/)||source.match(/()youtu\.be\/(.*)/)){var id=matches$$1[2],setIframe=function(width$$1,height$$1){return void 0===width$$1&&(width$$1=640),void 0===height$$1&&(height$$1=450),this$1.setItem(item,getIframe("https://www.youtube"+(matches$$1[1]||"")+".com/embed/"+id,width$$1,height$$1,this$1.videoAutoplay))};getImage("https://img.youtube.com/vi/"+id+"/maxresdefault.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;120===width$$1&&90===height$$1?getImage("https://img.youtube.com/vi/"+id+"/0.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;return setIframe(width$$1,height$$1)},setIframe):setIframe(width$$1,height$$1)},setIframe)}else(matches$$1=source.match(/(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/))&&ajax("https://vimeo.com/api/oembed.json?maxwidth=1920&url="+encodeURI(source),{responseType:"json",withCredentials:!1}).then(function(ref){var ref_response=ref.response,height$$1=ref_response.height,width$$1=ref_response.width;return this$1.setItem(item,getIframe("https://player.vimeo.com/video/"+matches$$1[2],width$$1,height$$1,this$1.videoAutoplay))},function(){return this$1.setError(item)})}}],methods:{loadItem:function(index$$1){void 0===index$$1&&(index$$1=this.index);var item=this.getItem(index$$1);item.content||trigger(this.$el,"itemload",[item])},getItem:function(index$$1){return void 0===index$$1&&(index$$1=this.index),this.items[index$$1]||{}},setItem:function(item,content){assign(item,{content:content});var el=html(this.slides[this.items.indexOf(item)],content);trigger(this.$el,"itemloaded",[this,el]),this.$update(el)},setError:function(item){this.setItem(item,'<span uk-icon="icon: bolt; ratio: 2"></span>')},showControls:function(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),addClass(this.$el,"uk-active","uk-transition-active")},hideControls:function(){removeClass(this.$el,"uk-active","uk-transition-active")}}};function getIframe(src,width$$1,height$$1,autoplay){return'<iframe src="'+src+'" width="'+width$$1+'" height="'+height$$1+'" style="max-width: 100%; box-sizing: border-box;" frameborder="0" allowfullscreen uk-video="autoplay: '+autoplay+'" uk-responsive></iframe>'}var obj,props=merge(LightboxPanel,"props"),defaults=merge(LightboxPanel,"data"),Lightbox={install:function(UIkit){UIkit.lightboxPanel||UIkit.component("lightboxPanel",LightboxPanel)},attrs:!0,props:assign({toggle:String},props),data:assign({toggle:"a"},Object.keys(props).reduce(function(data$$1,key){return data$$1[key]=defaults[key],data$$1},{})),computed:{toggles:function(ref,$el){return $$(ref.toggle,$el)}},disconnected:function(){this._destroy()},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),e.current.blur(),this.show(index(this.toggles,e.current))}}],update:function(data$$1){var listA,listB;(data$$1.toggles=data$$1.toggles||this.toggles,this.panel&&this.animation&&(this.panel.$props.animation=this.animation,this.panel.$emit()),this.panel&&(listA=data$$1.toggles,listB=this.toggles,listA.length!==listB.length||!listA.every(function(el,i){return el===listB[i]})))&&(data$$1.toggles=this.toggles,this._destroy(),this._init())},methods:{_init:function(){return this.panel=this.panel||this.$create("lightboxPanel",assign({},this.$props,{items:this.toggles.reduce(function(items,el){return items.push(["href","caption","type","poster","alt"].reduce(function(obj,attr$$1){return obj["href"===attr$$1?"source":attr$$1]=data(el,attr$$1),obj},{})),items},[])}))},_destroy:function(){this.panel&&(this.panel.$destroy(!0),this.panel=null)},show:function(index$$1){return this.panel||this._init(),this.panel.show(index$$1)},hide:function(){return this.panel&&this.panel.hide()}}};function merge(options,prop){return assign.apply(void 0,[{}].concat(options.mixins?options.mixins.map(function(mixin){return merge(mixin,prop)}):[],[isFunction(options[prop])?options[prop]():options[prop]]))}var containers={},Notification={functional:!0,args:["message","status"],data:{message:"",status:"",timeout:5e3,group:null,pos:"top-center",clsClose:"uk-notification-close",clsMsg:"uk-notification-message"},install:function(UIkit){UIkit.notification.closeAll=function(group,immediate){apply(document.body,function(el){var notification=UIkit.getComponent(el,"notification");!notification||group&&group!==notification.group||notification.close(immediate)})}},created:function(){containers[this.pos]||(containers[this.pos]=append(this.$container,'<div class="uk-notification uk-notification-'+this.pos+'"></div>'));var container=css(containers[this.pos],"display","block");this.$mount(append(container,'<div class="'+this.clsMsg+(this.status?" "+this.clsMsg+"-"+this.status:"")+'"> <a href="#" class="'+this.clsClose+'" data-uk-close></a> <div>'+this.message+"</div> </div>"))},ready:function(){var this$1=this,marginBottom=toFloat(css(this.$el,"marginBottom"));Transition.start(css(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}),{opacity:1,marginTop:0,marginBottom:marginBottom}).then(function(){this$1.timeout&&(this$1.timer=setTimeout(this$1.close,this$1.timeout))})},events:(obj={click:function(e){closest(e.target,'a[href="#"]')&&e.preventDefault(),this.close()}},obj[pointerEnter]=function(){this.timer&&clearTimeout(this.timer)},obj[pointerLeave]=function(){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},obj),methods:{close:function(immediate){var this$1=this,removeFn=function(){trigger(this$1.$el,"close",[this$1]),remove(this$1.$el),containers[this$1.pos].children.length||css(containers[this$1.pos],"display","none")};this.timer&&clearTimeout(this.timer),immediate?removeFn():Transition.start(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}).then(removeFn)}}};var props$1=["x","y","bgx","bgy","rotate","scale","color","backgroundColor","borderColor","opacity","blur","hue","grayscale","invert","saturate","sepia","fopacity"],Parallax={props:props$1.reduce(function(props,prop){return props[prop]="list",props},{media:"media"}),data:props$1.reduce(function(data$$1,prop){return data$$1[prop]=void 0,data$$1},{media:!1}),computed:{props:function(properties,$el){var this$1=this;return props$1.reduce(function(props,prop){if(isUndefined(properties[prop]))return props;var pos,bgPos,diff,isColor=prop.match(/color/i),isCssProp=isColor||"opacity"===prop,steps=properties[prop].slice(0);isCssProp&&css($el,prop,""),steps.length<2&&steps.unshift(("scale"===prop?1:isCssProp?css($el,prop):0)||0);var unit=includes(steps.join(""),"%")?"%":"px";if(isColor){var color=$el.style.color;steps=steps.map(function(step){return css(css($el,"color",step),"color").split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(function(n){return toFloat(n)})}),$el.style.color=color}else steps=steps.map(toFloat);if(prop.match(/^bg/))if(css($el,"background-position-"+prop[2],""),bgPos=css($el,"backgroundPosition").split(" ")["x"===prop[2]?0:1],this$1.covers){var min=Math.min.apply(Math,steps),max=Math.max.apply(Math,steps),down=steps.indexOf(min)<steps.indexOf(max);diff=max-min,steps=steps.map(function(step){return step-(down?min:max)}),pos=(down?-diff:0)+"px"}else pos=bgPos;return props[prop]={steps:steps,unit:unit,pos:pos,bgPos:bgPos,diff:diff},props},{})},bgProps:function(){var this$1=this;return["bgx","bgy"].filter(function(bg){return bg in this$1.props})},covers:function(_,$el){return function(el){var backgroundSize=el.style.backgroundSize,covers="cover"===css(css(el,"backgroundSize",""),"backgroundSize");return el.style.backgroundSize=backgroundSize,covers}($el)}},disconnected:function(){delete this._image},update:[{read:function(data$$1){var this$1=this;if(data$$1.active=!this.media||window.matchMedia(this.media).matches,data$$1.image&&(data$$1.image.dimEl={width:this.$el.offsetWidth,height:this.$el.offsetHeight}),!("image"in data$$1)&&this.covers&&this.bgProps.length){var src=css(this.$el,"backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/,"$1");src&&(data$$1.image=!1,getImage(src).then(function(img){data$$1.image={width:img.naturalWidth,height:img.naturalHeight},this$1.$emit()}))}},write:function(ref){var this$1=this,image=ref.image,active=ref.active;if(image)if(active){var dimEl=image.dimEl,dim=Dimensions.cover(image,dimEl);this.bgProps.forEach(function(prop){var ref=this$1.props[prop],diff=ref.diff,bgPos=ref.bgPos,steps=ref.steps,attr$$1="bgy"===prop?"height":"width",span=dim[attr$$1]-dimEl[attr$$1];if(bgPos.match(/%$|0px/)){if(span<diff)dimEl[attr$$1]=dim[attr$$1]+diff-span;else if(span>diff){var bgPosFloat=parseFloat(bgPos);bgPosFloat&&(this$1.props[prop].steps=steps.map(function(step){return step-(span-diff)/(100/bgPosFloat)}))}dim=Dimensions.cover(image,dimEl)}}),css(this.$el,{backgroundSize:dim.width+"px "+dim.height+"px",backgroundRepeat:"no-repeat"})}else css(this.$el,{backgroundSize:"",backgroundRepeat:""})},events:["load","resize"]}],methods:{reset:function(){var this$1=this;each(this.getCss(0),function(_,prop){return css(this$1.$el,prop,"")})},getCss:function(percent){var props=this.props,translated=!1;return Object.keys(props).reduce(function(css$$1,prop){var ref=props[prop],steps=ref.steps,unit=ref.unit,pos=ref.pos,value=getValue(steps,percent);switch(prop){case"x":case"y":if(translated)break;var ref$1=["x","y"].map(function(dir){return prop===dir?value+unit:props[dir]?getValue(props[dir].steps,percent)+props[dir].unit:0}),x=ref$1[0],y=ref$1[1];translated=css$$1.transform+=" translate3d("+x+", "+y+", 0)";break;case"rotate":css$$1.transform+=" rotate("+value+"deg)";break;case"scale":css$$1.transform+=" scale("+value+")";break;case"bgy":case"bgx":css$$1["background-position-"+prop[2]]="calc("+pos+" + "+(value+unit)+")";break;case"color":case"backgroundColor":case"borderColor":var ref$2=getStep(steps,percent),start=ref$2[0],end=ref$2[1],p=ref$2[2];css$$1[prop]="rgba("+start.map(function(value,i){return value+=p*(end[i]-value),3===i?toFloat(value):parseInt(value,10)}).join(",")+")";break;case"blur":css$$1.filter+=" blur("+value+"px)";break;case"hue":css$$1.filter+=" hue-rotate("+value+"deg)";break;case"fopacity":css$$1.filter+=" opacity("+value+"%)";break;case"grayscale":case"invert":case"saturate":case"sepia":css$$1.filter+=" "+prop+"("+value+"%)";break;default:css$$1[prop]=value}return css$$1},{transform:"",filter:""})}}};function getStep(steps,percent){var count=steps.length-1,index$$1=Math.min(Math.floor(count*percent),count-1),step=steps.slice(index$$1,index$$1+2);return step.push(1===percent?1:percent%(1/count)*count),step}function getValue(steps,percent){var ref=getStep(steps,percent),start=ref[0],end=ref[1],p=ref[2];return(isNumber(start)?start+Math.abs(start-end)*p*(start<end?1:-1):+end).toFixed(2)}var Parallax$1={mixins:[Parallax],props:{target:String,viewport:Number,easing:Number},data:{target:!1,viewport:1,easing:1},computed:{target:function(ref,$el){var target=ref.target;return target&&query(target,$el)||$el}},update:[{read:function(ref){return{prev:ref.percent,percent:function(percent,easing){return clamp(percent*(1-(easing-easing*percent)))}(scrolledOver(this.target)/(this.viewport||1),this.easing)}},write:function(ref,ref$1){var prev=ref.prev,percent=ref.percent,active=ref.active;"scroll"!==ref$1.type&&(prev=!1),active?prev!==percent&&css(this.$el,this.getCss(percent)):this.reset()},events:["scroll","load","resize"]}]};var SliderReactive={update:[{write:function(){if(!this.stack.length&&!this.dragging){var index$$1=this.getValidIndex();delete this.index,removeClass(this.slides,this.clsActive,this.clsActivated),this.show(index$$1)}},events:["load","resize"]}]};function getLeft(el,list,center){var left=getElLeft(el,list);return center?left-function(el,list){return list.offsetWidth/2-el.offsetWidth/2}(el,list):Math.min(left,getMax(list))}function getMax(list){return Math.max(0,getWidth(list)-list.offsetWidth)}function getWidth(list){return slides(list).reduce(function(right,el){return el.offsetWidth+right},0)}function getElLeft(el,list){return(el.offsetLeft+(isRtl?el.offsetWidth-list.offsetWidth:0))*(isRtl?-1:1)}function triggerUpdate$1(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}function slides(list){return toNodes(list.children)}var Slider$1={mixins:[Class,Slider,SliderReactive],props:{center:Boolean,sets:Boolean},data:{center:!1,sets:!1,attrItem:"uk-slider-item",selList:".uk-slider-items",selNav:".uk-slider-nav",clsContainer:"uk-slider-container",Transitioner:function(prev,next,dir,ref){var center=ref.center,easing=ref.easing,list=ref.list,deferred=new Deferred,from=prev?getLeft(prev,list,center):getLeft(next,list,center)+next.offsetWidth*dir,to=next?getLeft(next,list,center):from+prev.offsetWidth*dir*(isRtl?-1:1);return{dir:dir,show:function(duration,percent,linear){void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),prev&&this.updateTranslates(),percent=prev?percent:clamp(percent,0,1),triggerUpdate$1(this.getItemIn(),"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),prev&&triggerUpdate$1(this.getItemIn(!0),"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Transition.start(list,{transform:translate(-to*(isRtl?-1:1),"px")},duration,timing).then(deferred.resolve,noop),deferred.promise},stop:function(){return Transition.stop(list)},cancel:function(){Transition.cancel(list)},reset:function(){css(list,"transform","")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel(list),this.show(duration,percent,!0)},translate:function(percent){var distance=this.getDistance()*dir*(isRtl?-1:1);css(list,"transform",translate(clamp(distance-distance*percent-to,-getWidth(list),list.offsetWidth)*(isRtl?-1:1),"px")),this.updateTranslates(),prev&&(percent=clamp(percent,-1,1),triggerUpdate$1(this.getItemIn(),"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate$1(this.getItemIn(!0),"itemtranslateout",{percent:1-percent,dir:dir}))},percent:function(){return Math.abs((css(list,"transform").split(",")[4]*(isRtl?-1:1)+from)/(to-from))},getDistance:function(){return Math.abs(to-from)},getItemIn:function(out){void 0===out&&(out=!1);var actives=this.getActives(),all=sortBy(slides(list),"offsetLeft"),i=index(all,actives[dir*(out?-1:1)>0?actives.length-1:0]);return~i&&all[i+(prev&&!out?dir:0)]},getActives:function(){var left=getLeft(prev||next,list,center);return sortBy(slides(list).filter(function(slide){var slideLeft=getElLeft(slide,list);return slideLeft>=left&&slideLeft+slide.offsetWidth<=list.offsetWidth+left}),"offsetLeft")},updateTranslates:function(){var actives=this.getActives();slides(list).forEach(function(slide){var isActive=includes(actives,slide);triggerUpdate$1(slide,"itemtranslate"+(isActive?"in":"out"),{percent:isActive?1:0,dir:slide.offsetLeft<=next.offsetLeft?1:-1})})}}}},computed:{avgWidth:function(){return getWidth(this.list)/this.length},finite:function(ref){return ref.finite||getWidth(this.list)<this.list.offsetWidth+slides(this.list).reduce(function(right,el){return Math.max(right,el.offsetWidth)},0)+this.center},maxIndex:function(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return this.sets[this.sets.length-1];css(this.slides,"order","");for(var max=getMax(this.list),i=this.length;i--;)if(getElLeft(this.list.children[i],this.list)<max)return Math.min(i+1,this.length-1);return 0},sets:function(ref){var this$1=this,sets=ref.sets,width$$1=this.list.offsetWidth/(this.center?2:1),left=0,leftCenter=width$$1,slideLeft=0;return(sets=sets&&this.slides.reduce(function(sets,slide,i){var slideWidth=offset(slide).width;if(slideLeft+slideWidth>left&&(!this$1.center&&i>this$1.maxIndex&&(i=this$1.maxIndex),!includes(sets,i))){var cmp=this$1.slides[i+1];this$1.center&&cmp&&slideWidth<leftCenter-offset(cmp).width/2?leftCenter-=slideWidth:(leftCenter=width$$1,sets.push(i),left=slideLeft+width$$1+(this$1.center?slideWidth/2:0))}return slideLeft+=slideWidth,sets},[]))&&sets.length&&sets},transitionOptions:function(){return{center:this.center,list:this.list}}},connected:function(){toggleClass(this.$el,this.clsContainer,!$("."+this.clsContainer,this.$el))},update:{write:function(){var this$1=this;$$("["+this.attrItem+"],[data-"+this.attrItem+"]",this.$el).forEach(function(el){var index$$1=data(el,this$1.attrItem);this$1.maxIndex&&toggleClass(el,"uk-hidden",isNumeric(index$$1)&&(this$1.sets&&!includes(this$1.sets,toFloat(index$$1))||index$$1>this$1.maxIndex))})},events:["load","resize"]},events:{beforeitemshow:function(e){!this.dragging&&this.sets&&this.stack.length<2&&!includes(this.sets,this.index)&&(this.index=this.getValidIndex());var diff=Math.abs(this.index-this.prevIndex+(this.dir>0&&this.index<this.prevIndex||this.dir<0&&this.index>this.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&diff>1){for(var i=0;i<diff;i++)this.stack.splice(1,0,this.dir>0?"next":"previous");e.preventDefault()}else this.duration=speedUp(this.avgWidth/this.velocity)*((this.dir<0||!this.slides[this.prevIndex]?this.slides[this.index]:this.slides[this.prevIndex]).offsetWidth/this.avgWidth),this.reorder()},itemshow:function(){!isUndefined(this.prevIndex)&&addClass(this._getTransitioner().getItemIn(),this.clsActive)},itemshown:function(){var this$1=this,actives=this._getTransitioner(this.index).getActives();this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActive,includes(actives,slide))}),(!this.sets||includes(this.sets,toFloat(this.index)))&&this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActivated,includes(actives,slide))})}},methods:{reorder:function(){var this$1=this;if(css(this.slides,"order",""),!this.finite){var index$$1=this.dir>0&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach(function(slide,i){return css(slide,"order",this$1.dir>0&&i<index$$1?1:this$1.dir<0&&i>=this$1.index?-1:"")}),this.center)for(var next=this.slides[index$$1],width$$1=this.list.offsetWidth/2-next.offsetWidth/2,j=0;width$$1>0;){var slideIndex=this$1.getIndex(--j+index$$1,index$$1),slide=this$1.slides[slideIndex];css(slide,"order",slideIndex>index$$1?-2:-1),width$$1-=slide.offsetWidth}}},getValidIndex:function(index$$1,prevIndex){var prev;if(void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),index$$1=this.getIndex(index$$1,prevIndex),!this.sets)return index$$1;do{if(includes(this.sets,index$$1))return index$$1;prev=index$$1,index$$1=this.getIndex(index$$1+this.dir,prevIndex)}while(index$$1!==prev);return index$$1}}},SliderParallax={mixins:[Parallax],data:{selItem:"!li"},computed:{item:function(ref,$el){return query(ref.selItem,$el)}},events:[{name:"itemshown",self:!0,el:function(){return this.item},handler:function(){css(this.$el,this.getCss(.5))}},{name:"itemin itemout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,duration=ref_detail.duration,timing=ref_detail.timing,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent))),Transition.start(this.$el,this.getCss(isIn(type)?.5:dir>0?1:0),duration,timing).catch(noop)}},{name:"transitioncanceled transitionend",self:!0,el:function(){return this.item},handler:function(){Transition.cancel(this.$el)}},{name:"itemtranslatein itemtranslateout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent)))}}]};function isIn(type){return endsWith(type,"in")}function getCurrent(type,dir,percent){return percent/=2,isIn(type)?dir<0?1-percent:percent:dir<0?percent:1-percent}var obj$1,obj$2,Animations$2=assign({},Animations,{fade:{show:function(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,zIndex:0},{zIndex:-1}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(1.5),zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1+.5*percent),zIndex:0},{zIndex:-1}]}},pull:{show:function(dir){return dir<0?[{transform:translate(30),zIndex:-1},{transform:translate(),zIndex:0}]:[{transform:translate(-100),zIndex:0},{transform:translate(),zIndex:-1}]},percent:function(current,next,dir){return dir<0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(30*percent),zIndex:-1},{transform:translate(-100*(1-percent)),zIndex:0}]:[{transform:translate(100*-percent),zIndex:0},{transform:translate(30*(1-percent)),zIndex:-1}]}},push:{show:function(dir){return dir<0?[{transform:translate(100),zIndex:0},{transform:translate(),zIndex:-1}]:[{transform:translate(-30),zIndex:-1},{transform:translate(),zIndex:0}]},percent:function(current,next,dir){return dir>0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(100*percent),zIndex:0},{transform:translate(-30*(1-percent)),zIndex:-1}]:[{transform:translate(-30*percent),zIndex:-1},{transform:translate(100*(1-percent)),zIndex:0}]}}}),Slideshow$1={mixins:[Class,Slideshow,SliderReactive],props:{ratio:String,minHeight:Boolean,maxHeight:Boolean},data:{ratio:"16:9",minHeight:!1,maxHeight:!1,selList:".uk-slideshow-items",attrItem:"uk-slideshow-item",selNav:".uk-slideshow-nav",Animations:Animations$2},update:{read:function(){var ref=this.ratio.split(":").map(Number),width$$1=ref[0],height$$1=ref[1];return height$$1=height$$1*this.$el.offsetWidth/width$$1,this.minHeight&&(height$$1=Math.max(this.minHeight,height$$1)),this.maxHeight&&(height$$1=Math.min(this.maxHeight,height$$1)),{height:height$$1}},write:function(ref){var hgt=ref.height;height(this.list,Math.floor(hgt))},events:["load","resize"]}},Sortable={mixins:[Class,Animate],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:"uk-sortable-item",clsPlaceholder:"uk-sortable-placeholder",clsDrag:"uk-sortable-drag",clsDragState:"uk-drag",clsBase:"uk-sortable",clsNoDrag:"uk-sortable-nodrag",clsEmpty:"uk-sortable-empty",clsCustom:"",handle:!1},init:function(){var this$1=this;["init","start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){this$1.scrollY=window.pageYOffset;var ref=getPos$1(e),x=ref.x,y=ref.y;this$1.pos={x:x,y:y},fn(e)}})},events:(obj$1={},obj$1[pointerDown]="init",obj$1),update:{write:function(){if(this.clsEmpty&&toggleClass(this.$el,this.clsEmpty,!this.$el.children.length),this.drag){offset(this.drag,{top:this.pos.y+this.origin.top,left:this.pos.x+this.origin.left});var scroll,top=offset(this.drag).top,bottom=top+this.drag.offsetHeight;top>0&&top<this.scrollY?scroll=this.scrollY-5:bottom<height(document)&&bottom>height(window)+this.scrollY&&(scroll=this.scrollY+5),scroll&&setTimeout(function(){return window.scroll(window.pageXOffset,scroll)},5)}}},methods:{init:function(e){var target=e.target,button=e.button,defaultPrevented=e.defaultPrevented,placeholder=toNodes(this.$el.children).filter(function(el){return within(target,el)})[0];!placeholder||isInput(e.target)||this.handle&&!within(target,this.handle)||button>0||within(target,"."+this.clsNoDrag)||defaultPrevented||(e.preventDefault(),this.touched=[this],this.placeholder=placeholder,this.origin=assign({target:target,index:index(placeholder)},this.pos),on(document,pointerMove,this.move),on(document,pointerUp,this.end),on(window,"scroll",this.scroll),this.threshold||this.start(e))},start:function(e){this.drag=append(this.$container,this.placeholder.outerHTML.replace(/^<li/i,"<div").replace(/li>$/i,"div>")),css(this.drag,assign({boxSizing:"border-box",width:this.placeholder.offsetWidth,height:this.placeholder.offsetHeight},css(this.placeholder,["paddingLeft","paddingRight","paddingTop","paddingBottom"]))),attr(this.drag,"uk-no-boot",""),addClass(this.drag,this.clsDrag,this.clsCustom),height(this.drag.firstElementChild,height(this.placeholder.firstElementChild));var ref=offset(this.placeholder),left=ref.left,top=ref.top;assign(this.origin,{left:left-this.pos.x,top:top-this.pos.y}),addClass(this.placeholder,this.clsPlaceholder),addClass(this.$el.children,this.clsItem),addClass(document.documentElement,this.clsDragState),trigger(this.$el,"start",[this,this.placeholder]),this.move(e)},move:function(e){if(this.drag){this.$emit();var target="mousemove"===e.type?e.target:document.elementFromPoint(this.pos.x-document.body.scrollLeft,this.pos.y-document.body.scrollTop),sortable=this.getSortable(target),previous=this.getSortable(this.placeholder),move=sortable!==previous;if(sortable&&!within(target,this.placeholder)&&(!move||sortable.group&&sortable.group===previous.group)){if(target=sortable.$el===target.parentNode&&target||toNodes(sortable.$el.children).filter(function(element){return within(target,element)})[0],move)previous.remove(this.placeholder);else if(!target)return;sortable.insert(this.placeholder,target),includes(this.touched,sortable)||this.touched.push(sortable)}}else(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(e)},scroll:function(){var scroll=window.pageYOffset;scroll!==this.scrollY&&(this.pos.y+=scroll-this.scrollY,this.scrollY=scroll,this.$emit())},end:function(e){if(off(document,pointerMove,this.move),off(document,pointerUp,this.end),off(window,"scroll",this.scroll),this.drag){preventClick();var sortable=this.getSortable(this.placeholder);this===sortable?this.origin.index!==index(this.placeholder)&&trigger(this.$el,"moved",[this,this.placeholder]):(trigger(sortable.$el,"added",[sortable,this.placeholder]),trigger(this.$el,"removed",[this,this.placeholder])),trigger(this.$el,"stop",[this,this.placeholder]),remove(this.drag),this.drag=null;var classes=this.touched.map(function(sortable){return sortable.clsPlaceholder+" "+sortable.clsItem}).join(" ");this.touched.forEach(function(sortable){return removeClass(sortable.$el.children,classes)}),removeClass(document.documentElement,this.clsDragState)}else"mouseup"!==e.type&&within(e.target,"a[href]")&&(location.href=closest(e.target,"a[href]").href)},insert:function(element,target){var this$1=this;addClass(this.$el.children,this.clsItem);var insert=function(){target?!within(element,this$1.$el)||function(element,target){return element.parentNode===target.parentNode&&index(element)>index(target)}(element,target)?before(target,element):after(target,element):append(this$1.$el,element)};this.animation?this.animate(insert):insert()},remove:function(element){within(element,this.$el)&&(this.animation?this.animate(function(){return remove(element)}):remove(element))},getSortable:function(element){return element&&(this.$getComponent(element,"sortable")||this.getSortable(element.parentNode))}}};var actives=[],Tooltip={attrs:!0,args:"title",mixins:[Container,Togglable,Position],props:{delay:Number,title:String},data:{pos:"top",title:"",delay:0,animation:["uk-animation-scale-up"],duration:100,cls:"uk-active",clsPos:"uk-tooltip"},beforeConnect:function(){this._hasTitle=hasAttr(this.$el,"title"),attr(this.$el,{title:"","aria-expanded":!1})},disconnected:function(){this.hide(),attr(this.$el,{title:this._hasTitle?this.title:null,"aria-expanded":null})},methods:{show:function(){var this$1=this;includes(actives,this)||(actives.forEach(function(active){return active.hide()}),actives.push(this),this._unbind=on(document,"click",function(e){return!within(e.target,this$1.$el)&&this$1.hide()}),clearTimeout(this.showTimer),this.tooltip=append(this.container,'<div class="'+this.clsPos+'" aria-hidden><div class="'+this.clsPos+'-inner">'+this.title+"</div></div>"),attr(this.$el,"aria-expanded",!0),this.positionAt(this.tooltip,this.$el),this.origin="y"===this.getAxis()?flipPosition(this.dir)+"-"+this.align:this.align+"-"+flipPosition(this.dir),this.showTimer=setTimeout(function(){this$1.toggleElement(this$1.tooltip,!0),this$1.hideTimer=setInterval(function(){isVisible(this$1.$el)||this$1.hide()},150)},this.delay))},hide:function(){var index$$1=actives.indexOf(this);!~index$$1||matches(this.$el,"input")&&this.$el===document.activeElement||(actives.splice(index$$1,1),clearTimeout(this.showTimer),clearInterval(this.hideTimer),attr(this.$el,"aria-expanded",!1),this.toggleElement(this.tooltip,!1),this.tooltip&&remove(this.tooltip),this.tooltip=!1,this._unbind())}},events:(obj$2={},obj$2["focus "+pointerEnter+" "+pointerDown]=function(e){e.type===pointerDown&&isTouch(e)||this.show()},obj$2.blur="hide",obj$2[pointerLeave]=function(e){isTouch(e)||this.hide()},obj$2)},Upload={props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,msgInvalidMime:String,msgInvalidName:String,msgInvalidSize:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:"uk-dragover",concurrent:1,maxSize:0,method:"POST",mime:!1,msgInvalidMime:"Invalid File Type: %s",msgInvalidName:"Invalid File Name: %s",msgInvalidSize:"Invalid File Size: %s Kilobytes Max",multiple:!1,name:"files[]",params:{},type:"",url:"",abort:noop,beforeAll:noop,beforeSend:noop,complete:noop,completeAll:noop,error:noop,fail:noop,load:noop,loadEnd:noop,loadStart:noop,progress:noop},events:{change:function(e){matches(e.target,'input[type="file"]')&&(e.preventDefault(),e.target.files&&this.upload(e.target.files),e.target.value="")},drop:function(e){stop(e);var transfer=e.dataTransfer;transfer&&transfer.files&&(removeClass(this.$el,this.clsDragover),this.upload(transfer.files))},dragenter:function(e){stop(e)},dragover:function(e){stop(e),addClass(this.$el,this.clsDragover)},dragleave:function(e){stop(e),removeClass(this.$el,this.clsDragover)}},methods:{upload:function(files){var this$1=this;if(files.length){trigger(this.$el,"upload",[files]);for(var i=0;i<files.length;i++){if(this$1.maxSize&&1e3*this$1.maxSize<files[i].size)return void this$1.fail(this$1.msgInvalidSize.replace("%s",this$1.maxSize));if(this$1.allow&&!match(this$1.allow,files[i].name))return void this$1.fail(this$1.msgInvalidName.replace("%s",this$1.allow));if(this$1.mime&&!match(this$1.mime,files[i].type))return void this$1.fail(this$1.msgInvalidMime.replace("%s",this$1.mime))}this.multiple||(files=[files[0]]),this.beforeAll(this,files);var chunks=function(files,size){for(var chunks=[],i=0;i<files.length;i+=size){for(var chunk=[],j=0;j<size;j++)chunk.push(files[i+j]);chunks.push(chunk)}return chunks}(files,this.concurrent),upload=function(files){var data$$1=new FormData;for(var key in files.forEach(function(file){return data$$1.append(this$1.name,file)}),this$1.params)data$$1.append(key,this$1.params[key]);ajax(this$1.url,{data:data$$1,method:this$1.method,responseType:this$1.type,beforeSend:function(env){var xhr=env.xhr;xhr.upload&&on(xhr.upload,"progress",this$1.progress),["loadStart","load","loadEnd","abort"].forEach(function(type){return on(xhr,type.toLowerCase(),this$1[type])}),this$1.beforeSend(env)}}).then(function(xhr){this$1.complete(xhr),chunks.length?upload(chunks.shift()):this$1.completeAll(xhr)},function(e){return this$1.error(e.message)})};upload(chunks.shift())}}}};function match(pattern,path){return path.match(new RegExp("^"+pattern.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")+"$","i"))}function stop(e){e.preventDefault(),e.stopPropagation()}return UIkit.component("countdown",Countdown),UIkit.component("filter",Filter),UIkit.component("lightbox",Lightbox),UIkit.component("lightboxPanel",LightboxPanel),UIkit.component("notification",Notification),UIkit.component("parallax",Parallax$1),UIkit.component("slider",Slider$1),UIkit.component("sliderParallax",SliderParallax),UIkit.component("slideshow",Slideshow$1),UIkit.component("slideshowParallax",SliderParallax),UIkit.component("sortable",Sortable),UIkit.component("tooltip",Tooltip),UIkit.component("upload",Upload),function(UIkit){var connect=UIkit.connect,disconnect=UIkit.disconnect;function init(){apply$$1(document.body,connect),fastdom.flush(),new MutationObserver(function(mutations){return mutations.forEach(applyMutation)}).observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),UIkit._initialized=!0}function applyMutation(mutation){var target=mutation.target;("attributes"!==mutation.type?function(ref){for(var addedNodes=ref.addedNodes,removedNodes=ref.removedNodes,i=0;i<addedNodes.length;i++)apply$$1(addedNodes[i],connect);for(var i$1=0;i$1<removedNodes.length;i$1++)apply$$1(removedNodes[i$1],disconnect);return!0}(mutation):function(ref){var target=ref.target,attributeName=ref.attributeName;if("href"===attributeName)return!0;var name=getComponentName(attributeName);if(name&&name in UIkit){if(hasAttr(target,attributeName))return UIkit[name](target),!0;var component=UIkit.getComponent(target,name);return component?(component.$destroy(),!0):void 0}}(mutation))&&UIkit.update(target)}function apply$$1(node,fn){if(1===node.nodeType&&!hasAttr(node,"uk-no-boot"))for(fn(node),node=node.firstElementChild;node;){var next=node.nextElementSibling;apply$$1(node,fn),node=next}}"MutationObserver"in window&&(document.body?init():new MutationObserver(function(){document.body&&(this.disconnect(),init())}).observe(document,{childList:!0,subtree:!0}))}(UIkit),UIkit}); -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2pzL3NyYy9mb3VjLmpzIiwiLi4vanMvc3JjL2Vycm9ycy5qcyIsIi4uL2pzL3NyYy9jb3VudGRvd24uanMiLCIuLi9qcy9zcmMvamFtcy5qcyIsIi4uL2pzL3NyYy9yZXZpc2lvbl9kaWZmLmpzIiwiLi4vanMvc3JjL3dpa2kuanMiLCIuLi9qcy92ZW5kb3IvbW9tZW50L21vbWVudC5qcyIsIi4uL2pzL3ZlbmRvci9tb21lbnQvbW9tZW50LXRpbWV6b25lLmpzIiwiLi4vanMvdmVuZG9yL2pxdWVyeS9qcXVlcnktMy4zLjEuanMiLCIuLi9qcy92ZW5kb3IvdHlwZXdyaXRlci90eXBld3JpdGVyLmpzIiwiLi4vanMvdmVuZG9yL3Vpa2l0L3Vpa2l0LmpzIl0sIm5hbWVzIjpbImdldFNjcmlwdCIsInVybCIsImludGVncml0eSIsImNyb3NzX29yaWdpbiIsInNjcmlwdCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJzcmMiLCJkZWZlciIsInVuZGVmaW5lZCIsImNyb3NzT3JpZ2luIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhcHBlbmRDaGlsZCIsInNldENsYXNzIiwic2VsZWN0b3IiLCJteV9jbGFzcyIsInF1ZXJ5U2VsZWN0b3IiLCJjbGFzc05hbWUiLCJyZW1vdmVDbGFzcyIsImVsZW1lbnQiLCJyZWciLCJSZWdFeHAiLCJyZXBsYWNlIiwiZXJyb3JfdHlwZXdyaXRlciIsImFwcCIsImdldEVsZW1lbnRCeUlkIiwidHlwZXdyaXRlciIsIlR5cGV3cml0ZXIiLCJsb29wIiwiZGVsZXRlU3BlZWQiLCJ0eXBpbmdTcGVlZCIsImRldk1vZGUiLCJvbmNsaWNrIiwiY3VycmVudF9jbGFzcyIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInN0b3AiLCJhcHBlbmRUZXh0IiwicGF1c2VGb3IiLCJ0eXBlU3RyaW5nIiwiZGVsZXRlQ2hhcnMiLCJjaGFuZ2VTZXR0aW5ncyIsIndpbmRvdyIsIl9SZXF1ZXN0TWV0aG9kIiwiX1BhdGgiLCJfQ29kZSIsIl9FcnJvck1zZyIsInN0YXJ0Iiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInN0YXJ0amFtIiwiRGF0ZSIsIlVUQyIsImVuZGphbSIsIm5vdyIsImdvYWwiLCJnZXRUaW1lIiwiVUlraXQiLCJub3RpZmljYXRpb24iLCJtZXNzYWdlIiwicG9zIiwidGltZW91dCIsImhlYWRpbmciLCJpbm5lckhUTUwiLCJyZWZyZXNoQ291bnRkb3duIiwic2V0SW50ZXJ2YWwiLCJkZWx0YSIsImNsZWFySW50ZXJ2YWwiLCJsb2NhdGlvbiIsInJlbG9hZCIsImRheXMiLCJNYXRoIiwiZmxvb3IiLCJob3VycyIsIm1pbnV0ZXMiLCJzZWNvbmRzIiwiZSIsIkphbUFjdGlvbnMiLCJbb2JqZWN0IE9iamVjdF0iLCJjc3JmX3Rva2VuIiwidGhpcyIsImFjdGlvbiIsIm1ldGhvZCIsImRhdGEiLCJjYWxsYmFjayIsIiQiLCJhamF4IiwiZGF0YVR5cGUiLCJoZWFkZXJzIiwiWC1DU1JGVG9rZW4iLCJkb25lIiwiZmFpbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJqYW0iLCJzdGF0ZSIsInNlbmQiLCJzZW5kX2pzb24iLCJpZCIsImZvcm0iLCJxdWVzdGlvbiIsInJlYXNvbiIsIm51bWJlciIsInBhcnRpY2lwYW50IiwidGVhbSIsIm1lbWJlciIsInJldmlzaW9uX2RpZmYiLCJyZXZpc2lvbnMiLCJidXR0b25zIiwicXVlcnlTZWxlY3RvckFsbCIsImlkX3JlZyIsImdldFJldmlzaW9uSWQiLCJtYXRjaCIsImdldFJldmlzaW9uIiwiZmlsdGVyIiwieCIsImZvckVhY2giLCJidXR0b24iLCJjaGVja2VkIiwib25jaGFuZ2UiLCJyZXYiLCJhZnQiLCJiZWYiLCJkYXRlIiwicmVtb3ZlQXR0cmlidXRlIiwiaHJlZiIsInJhZGlvQnV0dG9uQ2hlY2tlZCIsIndpa2lfc2lkZWJhciIsInNpZGViYXIiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsInJlbW92ZSIsImFkZCIsImdsb2JhbCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwibW9tZW50IiwiaG9va0NhbGxiYWNrIiwic29tZSIsImhvb2tzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJpc0FycmF5IiwiaW5wdXQiLCJBcnJheSIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImlzT2JqZWN0IiwiaXNVbmRlZmluZWQiLCJpc051bWJlciIsImlzRGF0ZSIsIm1hcCIsImFyciIsImZuIiwiaSIsInJlcyIsImxlbmd0aCIsInB1c2giLCJoYXNPd25Qcm9wIiwiYSIsImIiLCJoYXNPd25Qcm9wZXJ0eSIsImV4dGVuZCIsInZhbHVlT2YiLCJjcmVhdGVVVEMiLCJmb3JtYXQiLCJsb2NhbGUiLCJzdHJpY3QiLCJjcmVhdGVMb2NhbE9yVVRDIiwidXRjIiwiZ2V0UGFyc2luZ0ZsYWdzIiwibSIsIl9wZiIsImVtcHR5IiwidW51c2VkVG9rZW5zIiwidW51c2VkSW5wdXQiLCJvdmVyZmxvdyIsImNoYXJzTGVmdE92ZXIiLCJudWxsSW5wdXQiLCJpbnZhbGlkTW9udGgiLCJpbnZhbGlkRm9ybWF0IiwidXNlckludmFsaWRhdGVkIiwiaXNvIiwicGFyc2VkRGF0ZVBhcnRzIiwibWVyaWRpZW0iLCJyZmMyODIyIiwid2Vla2RheU1pc21hdGNoIiwiaXNWYWxpZCIsIl9pc1ZhbGlkIiwiZmxhZ3MiLCJwYXJzZWRQYXJ0cyIsImlzTm93VmFsaWQiLCJpc05hTiIsIl9kIiwiaW52YWxpZFdlZWtkYXkiLCJfc3RyaWN0IiwiYmlnSG91ciIsImlzRnJvemVuIiwiY3JlYXRlSW52YWxpZCIsIk5hTiIsImZ1biIsInQiLCJsZW4iLCJtb21lbnRQcm9wZXJ0aWVzIiwiY29weUNvbmZpZyIsInRvIiwiZnJvbSIsInByb3AiLCJ2YWwiLCJfaXNBTW9tZW50T2JqZWN0IiwiX2kiLCJfZiIsIl9sIiwiX3R6bSIsIl9pc1VUQyIsIl9vZmZzZXQiLCJfbG9jYWxlIiwidXBkYXRlSW5Qcm9ncmVzcyIsIk1vbWVudCIsImNvbmZpZyIsInVwZGF0ZU9mZnNldCIsImlzTW9tZW50Iiwib2JqIiwiYWJzRmxvb3IiLCJjZWlsIiwidG9JbnQiLCJhcmd1bWVudEZvckNvZXJjaW9uIiwiY29lcmNlZE51bWJlciIsInZhbHVlIiwiaXNGaW5pdGUiLCJjb21wYXJlQXJyYXlzIiwiYXJyYXkxIiwiYXJyYXkyIiwiZG9udENvbnZlcnQiLCJtaW4iLCJsZW5ndGhEaWZmIiwiYWJzIiwiZGlmZnMiLCJ3YXJuIiwibXNnIiwic3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzIiwiY29uc29sZSIsImRlcHJlY2F0ZSIsImZpcnN0VGltZSIsImRlcHJlY2F0aW9uSGFuZGxlciIsImFyZyIsImFyZ3MiLCJrZXkiLCJzbGljZSIsImpvaW4iLCJFcnJvciIsInN0YWNrIiwia2V5cyIsImRlcHJlY2F0aW9ucyIsImRlcHJlY2F0ZVNpbXBsZSIsIm5hbWUiLCJpc0Z1bmN0aW9uIiwiRnVuY3Rpb24iLCJtZXJnZUNvbmZpZ3MiLCJwYXJlbnRDb25maWciLCJjaGlsZENvbmZpZyIsIkxvY2FsZSIsInNldCIsImFsaWFzZXMiLCJhZGRVbml0QWxpYXMiLCJ1bml0Iiwic2hvcnRoYW5kIiwibG93ZXJDYXNlIiwidG9Mb3dlckNhc2UiLCJub3JtYWxpemVVbml0cyIsInVuaXRzIiwibm9ybWFsaXplT2JqZWN0VW5pdHMiLCJpbnB1dE9iamVjdCIsIm5vcm1hbGl6ZWRQcm9wIiwibm9ybWFsaXplZElucHV0IiwicHJpb3JpdGllcyIsImFkZFVuaXRQcmlvcml0eSIsInByaW9yaXR5IiwiemVyb0ZpbGwiLCJ0YXJnZXRMZW5ndGgiLCJmb3JjZVNpZ24iLCJhYnNOdW1iZXIiLCJ6ZXJvc1RvRmlsbCIsInBvdyIsIm1heCIsInN1YnN0ciIsImZvcm1hdHRpbmdUb2tlbnMiLCJsb2NhbEZvcm1hdHRpbmdUb2tlbnMiLCJmb3JtYXRGdW5jdGlvbnMiLCJmb3JtYXRUb2tlbkZ1bmN0aW9ucyIsImFkZEZvcm1hdFRva2VuIiwidG9rZW4iLCJwYWRkZWQiLCJvcmRpbmFsIiwiZnVuYyIsImxvY2FsZURhdGEiLCJmb3JtYXRNb21lbnQiLCJleHBhbmRGb3JtYXQiLCJhcnJheSIsIm1vbSIsIm91dHB1dCIsIm1ha2VGb3JtYXRGdW5jdGlvbiIsImludmFsaWREYXRlIiwicmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zIiwibG9uZ0RhdGVGb3JtYXQiLCJsYXN0SW5kZXgiLCJ0ZXN0IiwibWF0Y2gxIiwibWF0Y2gyIiwibWF0Y2gzIiwibWF0Y2g0IiwibWF0Y2g2IiwibWF0Y2gxdG8yIiwibWF0Y2gzdG80IiwibWF0Y2g1dG82IiwibWF0Y2gxdG8zIiwibWF0Y2gxdG80IiwibWF0Y2gxdG82IiwibWF0Y2hVbnNpZ25lZCIsIm1hdGNoU2lnbmVkIiwibWF0Y2hPZmZzZXQiLCJtYXRjaFNob3J0T2Zmc2V0IiwibWF0Y2hXb3JkIiwicmVnZXhlcyIsImFkZFJlZ2V4VG9rZW4iLCJyZWdleCIsInN0cmljdFJlZ2V4IiwiaXNTdHJpY3QiLCJnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4iLCJyZWdleEVzY2FwZSIsIm1hdGNoZWQiLCJwMSIsInAyIiwicDMiLCJwNCIsInMiLCJ0b2tlbnMiLCJhZGRQYXJzZVRva2VuIiwiYWRkV2Vla1BhcnNlVG9rZW4iLCJfdyIsImFkZFRpbWVUb0FycmF5RnJvbVRva2VuIiwiX2EiLCJZRUFSIiwiTU9OVEgiLCJEQVRFIiwiSE9VUiIsIk1JTlVURSIsIlNFQ09ORCIsIk1JTExJU0VDT05EIiwiV0VFSyIsIldFRUtEQVkiLCJkYXlzSW5ZZWFyIiwieWVhciIsImlzTGVhcFllYXIiLCJ5IiwicGFyc2VUd29EaWdpdFllYXIiLCJwYXJzZUludCIsImluZGV4T2YiLCJnZXRTZXRZZWFyIiwibWFrZUdldFNldCIsImtlZXBUaW1lIiwic2V0JDEiLCJnZXQiLCJtb250aCIsImRheXNJbk1vbnRoIiwibW9kTW9udGgiLCJvIiwibW9udGhzU2hvcnQiLCJtb250aHMiLCJtb250aHNTaG9ydFJlZ2V4IiwibW9udGhzUmVnZXgiLCJtb250aHNQYXJzZSIsIk1PTlRIU19JTl9GT1JNQVQiLCJkZWZhdWx0TG9jYWxlTW9udGhzIiwic3BsaXQiLCJkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQiLCJzZXRNb250aCIsImRheU9mTW9udGgiLCJnZXRTZXRNb250aCIsImRlZmF1bHRNb250aHNTaG9ydFJlZ2V4IiwiZGVmYXVsdE1vbnRoc1JlZ2V4IiwiY29tcHV0ZU1vbnRoc1BhcnNlIiwiY21wTGVuUmV2Iiwic2hvcnRQaWVjZXMiLCJsb25nUGllY2VzIiwibWl4ZWRQaWVjZXMiLCJzb3J0IiwiX21vbnRoc1JlZ2V4IiwiX21vbnRoc1Nob3J0UmVnZXgiLCJfbW9udGhzU3RyaWN0UmVnZXgiLCJfbW9udGhzU2hvcnRTdHJpY3RSZWdleCIsImNyZWF0ZVVUQ0RhdGUiLCJnZXRVVENGdWxsWWVhciIsInNldFVUQ0Z1bGxZZWFyIiwiZmlyc3RXZWVrT2Zmc2V0IiwiZG93IiwiZG95IiwiZndkIiwiZ2V0VVRDRGF5IiwiZGF5T2ZZZWFyRnJvbVdlZWtzIiwid2VlayIsIndlZWtkYXkiLCJyZXNZZWFyIiwicmVzRGF5T2ZZZWFyIiwiZGF5T2ZZZWFyIiwid2Vla09mWWVhciIsInJlc1dlZWsiLCJ3ZWVrT2Zmc2V0Iiwid2Vla3NJblllYXIiLCJ3ZWVrT2Zmc2V0TmV4dCIsIndlZWtkYXlzTWluIiwid2Vla2RheXNTaG9ydCIsIndlZWtkYXlzIiwid2Vla2RheXNNaW5SZWdleCIsIndlZWtkYXlzU2hvcnRSZWdleCIsIndlZWtkYXlzUmVnZXgiLCJ3ZWVrZGF5c1BhcnNlIiwiZCIsImRlZmF1bHRMb2NhbGVXZWVrZGF5cyIsImRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0IiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluIiwiZGVmYXVsdFdlZWtkYXlzUmVnZXgiLCJkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4IiwiZGVmYXVsdFdlZWtkYXlzTWluUmVnZXgiLCJjb21wdXRlV2Vla2RheXNQYXJzZSIsIm1pbnAiLCJzaG9ydHAiLCJsb25ncCIsIm1pblBpZWNlcyIsImRheSIsIl93ZWVrZGF5c1JlZ2V4IiwiX3dlZWtkYXlzU2hvcnRSZWdleCIsIl93ZWVrZGF5c01pblJlZ2V4IiwiX3dlZWtkYXlzU3RyaWN0UmVnZXgiLCJfd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4IiwiX3dlZWtkYXlzTWluU3RyaWN0UmVnZXgiLCJoRm9ybWF0IiwibG93ZXJjYXNlIiwibWF0Y2hNZXJpZGllbSIsIl9tZXJpZGllbVBhcnNlIiwia0lucHV0IiwiX2lzUG0iLCJpc1BNIiwiX21lcmlkaWVtIiwicG9zMSIsInBvczIiLCJnbG9iYWxMb2NhbGUiLCJnZXRTZXRIb3VyIiwiYmFzZUNvbmZpZyIsImNhbGVuZGFyIiwic2FtZURheSIsIm5leHREYXkiLCJuZXh0V2VlayIsImxhc3REYXkiLCJsYXN0V2VlayIsInNhbWVFbHNlIiwiTFRTIiwiTFQiLCJMIiwiTEwiLCJMTEwiLCJMTExMIiwiZGF5T2ZNb250aE9yZGluYWxQYXJzZSIsInJlbGF0aXZlVGltZSIsImZ1dHVyZSIsInBhc3QiLCJzcyIsIm1tIiwiaCIsImhoIiwiZGQiLCJNIiwiTU0iLCJ5eSIsIm1lcmlkaWVtUGFyc2UiLCJsb2NhbGVzIiwibG9jYWxlRmFtaWxpZXMiLCJub3JtYWxpemVMb2NhbGUiLCJsb2FkTG9jYWxlIiwib2xkTG9jYWxlIiwiX2FiYnIiLCJyZXF1aXJlIiwiZ2V0U2V0R2xvYmFsTG9jYWxlIiwidmFsdWVzIiwiZ2V0TG9jYWxlIiwiZGVmaW5lTG9jYWxlIiwiYWJiciIsIl9jb25maWciLCJwYXJlbnRMb2NhbGUiLCJuYW1lcyIsImoiLCJuZXh0IiwiY2hvb3NlTG9jYWxlIiwiY2hlY2tPdmVyZmxvdyIsIl9vdmVyZmxvd0RheU9mWWVhciIsIl9vdmVyZmxvd1dlZWtzIiwiX292ZXJmbG93V2Vla2RheSIsImRlZmF1bHRzIiwiYyIsImNvbmZpZ0Zyb21BcnJheSIsImN1cnJlbnREYXRlIiwiZXhwZWN0ZWRXZWVrZGF5IiwieWVhclRvVXNlIiwibm93VmFsdWUiLCJfdXNlVVRDIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJjdXJyZW50RGF0ZUFycmF5IiwidyIsIndlZWtZZWFyIiwidGVtcCIsIndlZWtkYXlPdmVyZmxvdyIsIkdHIiwiVyIsIkUiLCJjcmVhdGVMb2NhbCIsIl93ZWVrIiwiY3VyV2VlayIsImdnIiwiX2RheU9mWWVhciIsImRheU9mWWVhckZyb21XZWVrSW5mbyIsIl9uZXh0RGF5IiwibXMiLCJzZXRGdWxsWWVhciIsImdldERheSIsInNldFVUQ01pbnV0ZXMiLCJnZXRVVENNaW51dGVzIiwiZXh0ZW5kZWRJc29SZWdleCIsImJhc2ljSXNvUmVnZXgiLCJ0elJlZ2V4IiwiaXNvRGF0ZXMiLCJpc29UaW1lcyIsImFzcE5ldEpzb25SZWdleCIsImNvbmZpZ0Zyb21JU08iLCJsIiwiYWxsb3dUaW1lIiwiZGF0ZUZvcm1hdCIsInRpbWVGb3JtYXQiLCJ0ekZvcm1hdCIsInN0cmluZyIsImV4ZWMiLCJjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0IiwiZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyIsInllYXJTdHIiLCJtb250aFN0ciIsImRheVN0ciIsImhvdXJTdHIiLCJtaW51dGVTdHIiLCJzZWNvbmRTdHIiLCJyZXN1bHQiLCJ1bnRydW5jYXRlWWVhciIsIm9ic09mZnNldHMiLCJVVCIsIkdNVCIsIkVEVCIsIkVTVCIsIkNEVCIsIkNTVCIsIk1EVCIsIk1TVCIsIlBEVCIsIlBTVCIsImNvbmZpZ0Zyb21SRkMyODIyIiwicGFyc2VkQXJyYXkiLCJ3ZWVrZGF5U3RyIiwicGFyc2VkSW5wdXQiLCJjaGVja1dlZWtkYXkiLCJvYnNPZmZzZXQiLCJtaWxpdGFyeU9mZnNldCIsIm51bU9mZnNldCIsImhtIiwiY2FsY3VsYXRlT2Zmc2V0IiwiSVNPXzg2MDEiLCJSRkNfMjgyMiIsInNraXBwZWQiLCJzdHJpbmdMZW5ndGgiLCJ0b3RhbFBhcnNlZElucHV0TGVuZ3RoIiwiaG91ciIsImlzUG0iLCJtZXJpZGllbUhvdXIiLCJtZXJpZGllbUZpeFdyYXAiLCJwcmVwYXJlQ29uZmlnIiwicHJlcGFyc2UiLCJ0ZW1wQ29uZmlnIiwiYmVzdE1vbWVudCIsInNjb3JlVG9CZWF0IiwiY3VycmVudFNjb3JlIiwic2NvcmUiLCJjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkiLCJjcmVhdGVGcm9tSW5wdXRGYWxsYmFjayIsImNvbmZpZ0Zyb21TdHJpbmciLCJtaW51dGUiLCJzZWNvbmQiLCJtaWxsaXNlY29uZCIsImNvbmZpZ0Zyb21PYmplY3QiLCJjb25maWdGcm9tSW5wdXQiLCJpc1VUQyIsImdldE93blByb3BlcnR5TmFtZXMiLCJrIiwiaXNPYmplY3RFbXB0eSIsInByb3RvdHlwZU1pbiIsIm90aGVyIiwicHJvdG90eXBlTWF4IiwicGlja0J5IiwibW9tZW50cyIsIm9yZGVyaW5nIiwiRHVyYXRpb24iLCJkdXJhdGlvbiIsInllYXJzIiwicXVhcnRlcnMiLCJxdWFydGVyIiwid2Vla3MiLCJtaWxsaXNlY29uZHMiLCJ1bml0SGFzRGVjaW1hbCIsInBhcnNlRmxvYXQiLCJpc0R1cmF0aW9uVmFsaWQiLCJfbWlsbGlzZWNvbmRzIiwiX2RheXMiLCJfbW9udGhzIiwiX2RhdGEiLCJfYnViYmxlIiwiaXNEdXJhdGlvbiIsImFic1JvdW5kIiwicm91bmQiLCJvZmZzZXQiLCJzZXBhcmF0b3IiLCJ1dGNPZmZzZXQiLCJzaWduIiwib2Zmc2V0RnJvbVN0cmluZyIsImNodW5rT2Zmc2V0IiwibWF0Y2hlciIsIm1hdGNoZXMiLCJwYXJ0cyIsImNsb25lV2l0aE9mZnNldCIsIm1vZGVsIiwiZGlmZiIsImNsb25lIiwic2V0VGltZSIsImxvY2FsIiwiZ2V0RGF0ZU9mZnNldCIsImdldFRpbWV6b25lT2Zmc2V0IiwiaXNVdGMiLCJhc3BOZXRSZWdleCIsImlzb1JlZ2V4IiwiY3JlYXRlRHVyYXRpb24iLCJyZXQiLCJkaWZmUmVzIiwicGFyc2VJc28iLCJiYXNlIiwiaXNCZWZvcmUiLCJwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlIiwibW9tZW50c0RpZmZlcmVuY2UiLCJpbnAiLCJpc0FmdGVyIiwiY3JlYXRlQWRkZXIiLCJkaXJlY3Rpb24iLCJwZXJpb2QiLCJ0bXAiLCJhZGRTdWJ0cmFjdCIsImlzQWRkaW5nIiwiaW52YWxpZCIsInN1YnRyYWN0IiwibW9udGhEaWZmIiwid2hvbGVNb250aERpZmYiLCJhbmNob3IiLCJuZXdMb2NhbGVEYXRhIiwiZGVmYXVsdEZvcm1hdCIsImRlZmF1bHRGb3JtYXRVdGMiLCJsYW5nIiwiYWRkV2Vla1llYXJGb3JtYXRUb2tlbiIsImdldHRlciIsImdldFNldFdlZWtZZWFySGVscGVyIiwid2Vla3NUYXJnZXQiLCJkYXlPZlllYXJEYXRhIiwiaXNvV2Vla1llYXIiLCJfZGF5T2ZNb250aE9yZGluYWxQYXJzZSIsIl9vcmRpbmFsUGFyc2UiLCJfZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQiLCJnZXRTZXREYXlPZk1vbnRoIiwiZ2V0U2V0TWludXRlIiwiZ2V0U2V0U2Vjb25kIiwicGFyc2VNcyIsImdldFNldE1pbGxpc2Vjb25kIiwicHJvdG8iLCJwcmVQYXJzZVBvc3RGb3JtYXQiLCJ0aW1lIiwiZm9ybWF0cyIsInNvZCIsInN0YXJ0T2YiLCJjYWxlbmRhckZvcm1hdCIsImFzRmxvYXQiLCJ0aGF0Iiwiem9uZURlbHRhIiwiZW5kT2YiLCJpbnB1dFN0cmluZyIsInBvc3Rmb3JtYXQiLCJ3aXRob3V0U3VmZml4IiwiaHVtYW5pemUiLCJmcm9tTm93IiwidG9Ob3ciLCJpbnZhbGlkQXQiLCJsb2NhbElucHV0IiwiaXNCZXR3ZWVuIiwiaW5jbHVzaXZpdHkiLCJpc1NhbWUiLCJpbnB1dE1zIiwiaXNTYW1lT3JBZnRlciIsImlzU2FtZU9yQmVmb3JlIiwicGFyc2luZ0ZsYWdzIiwicHJpb3JpdGl6ZWQiLCJ1bml0c09iaiIsInUiLCJnZXRQcmlvcml0aXplZFVuaXRzIiwiaXNvV2Vla2RheSIsInRvQXJyYXkiLCJ0b09iamVjdCIsInRvRGF0ZSIsInRvSVNPU3RyaW5nIiwia2VlcE9mZnNldCIsImluc3BlY3QiLCJ6b25lIiwiaXNMb2NhbCIsInByZWZpeCIsInN1ZmZpeCIsInRvSlNPTiIsInVuaXgiLCJjcmVhdGlvbkRhdGEiLCJpc29XZWVrIiwiaXNvV2Vla3MiLCJ3ZWVrSW5mbyIsImlzb1dlZWtzSW5ZZWFyIiwicGFyc2VXZWVrZGF5IiwicGFyc2VJc29XZWVrZGF5Iiwia2VlcExvY2FsVGltZSIsImtlZXBNaW51dGVzIiwibG9jYWxBZGp1c3QiLCJfY2hhbmdlSW5Qcm9ncmVzcyIsInBhcnNlWm9uZSIsInRab25lIiwiaGFzQWxpZ25lZEhvdXJPZmZzZXQiLCJpc0RTVCIsImlzVXRjT2Zmc2V0Iiwiem9uZUFiYnIiLCJ6b25lTmFtZSIsImRhdGVzIiwiaXNEU1RTaGlmdGVkIiwiX2lzRFNUU2hpZnRlZCIsInByb3RvJDEiLCJnZXQkMSIsImluZGV4IiwiZmllbGQiLCJzZXR0ZXIiLCJsaXN0TW9udGhzSW1wbCIsIm91dCIsImxpc3RXZWVrZGF5c0ltcGwiLCJsb2NhbGVTb3J0ZWQiLCJzaGlmdCIsIl9jYWxlbmRhciIsIl9sb25nRGF0ZUZvcm1hdCIsImZvcm1hdFVwcGVyIiwidG9VcHBlckNhc2UiLCJfaW52YWxpZERhdGUiLCJfb3JkaW5hbCIsImlzRnV0dXJlIiwiX3JlbGF0aXZlVGltZSIsInBhc3RGdXR1cmUiLCJzb3VyY2UiLCJpc0Zvcm1hdCIsIl9tb250aHNTaG9ydCIsIm1vbnRoTmFtZSIsIl9tb250aHNQYXJzZUV4YWN0IiwiaWkiLCJsbGMiLCJ0b0xvY2FsZUxvd2VyQ2FzZSIsIl9tb250aHNQYXJzZSIsIl9sb25nTW9udGhzUGFyc2UiLCJfc2hvcnRNb250aHNQYXJzZSIsImZpcnN0RGF5T2ZZZWFyIiwiZmlyc3REYXlPZldlZWsiLCJfd2Vla2RheXMiLCJfd2Vla2RheXNNaW4iLCJfd2Vla2RheXNTaG9ydCIsIndlZWtkYXlOYW1lIiwiX3dlZWtkYXlzUGFyc2VFeGFjdCIsIl93ZWVrZGF5c1BhcnNlIiwiX3Nob3J0V2Vla2RheXNQYXJzZSIsIl9taW5XZWVrZGF5c1BhcnNlIiwiX2Z1bGxXZWVrZGF5c1BhcnNlIiwiY2hhckF0IiwiaXNMb3dlciIsImxhbmdEYXRhIiwibWF0aEFicyIsImFkZFN1YnRyYWN0JDEiLCJhYnNDZWlsIiwiZGF5c1RvTW9udGhzIiwibW9udGhzVG9EYXlzIiwibWFrZUFzIiwiYWxpYXMiLCJhcyIsImFzTWlsbGlzZWNvbmRzIiwiYXNTZWNvbmRzIiwiYXNNaW51dGVzIiwiYXNIb3VycyIsImFzRGF5cyIsImFzV2Vla3MiLCJhc01vbnRocyIsImFzWWVhcnMiLCJtYWtlR2V0dGVyIiwidGhyZXNob2xkcyIsImFicyQxIiwidG9JU09TdHJpbmckMSIsIlkiLCJEIiwidG9GaXhlZCIsInRvdGFsIiwidG90YWxTaWduIiwieW1TaWduIiwiZGF5c1NpZ24iLCJobXNTaWduIiwicHJvdG8kMiIsIm1vbnRoc0Zyb21EYXlzIiwid2l0aFN1ZmZpeCIsInBvc05lZ0R1cmF0aW9uIiwicmVsYXRpdmVUaW1lJDEiLCJ0b0lzb1N0cmluZyIsInZlcnNpb24iLCJ1cGRhdGVMb2NhbGUiLCJ0bXBMb2NhbGUiLCJyZWxhdGl2ZVRpbWVSb3VuZGluZyIsInJvdW5kaW5nRnVuY3Rpb24iLCJyZWxhdGl2ZVRpbWVUaHJlc2hvbGQiLCJ0aHJlc2hvbGQiLCJsaW1pdCIsIm15TW9tZW50IiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUwiLCJEQVRFVElNRV9MT0NBTF9TRUNPTkRTIiwiREFURVRJTUVfTE9DQUxfTVMiLCJUSU1FIiwiVElNRV9TRUNPTkRTIiwiVElNRV9NUyIsInJvb3QiLCJjYWNoZWRHdWVzcyIsInpvbmVzIiwibGlua3MiLCJndWVzc2VzIiwibW9tZW50VmVyc2lvbiIsIm1ham9yIiwibWlub3IiLCJjaGFyQ29kZVRvSW50IiwiY2hhckNvZGUiLCJ1bnBhY2tCYXNlNjAiLCJ3aG9sZSIsImZyYWN0aW9uYWwiLCJtdWx0aXBsaWVyIiwiY2hhckNvZGVBdCIsImFycmF5VG9JbnQiLCJtYXBJbmRpY2VzIiwiaW5kaWNlcyIsInVucGFjayIsIm9mZnNldHMiLCJ1bnRpbHMiLCJJbmZpbml0eSIsImludFRvVW50aWwiLCJhYmJycyIsInBvcHVsYXRpb24iLCJab25lIiwicGFja2VkU3RyaW5nIiwiX3NldCIsIk9mZnNldEF0IiwiYXQiLCJ0aW1lU3RyaW5nIiwidG9UaW1lU3RyaW5nIiwiWm9uZVNjb3JlIiwib2Zmc2V0U2NvcmUiLCJhYmJyU2NvcmUiLCJmaW5kQ2hhbmdlIiwibG93IiwiaGlnaCIsIm1pZCIsInNvcnRab25lU2NvcmVzIiwiYWRkVG9HdWVzc2VzIiwiZ3Vlc3Nlc0ZvclVzZXJPZmZzZXRzIiwiZ3Vlc3Nlc09mZnNldCIsIm9mZnNldHNMZW5ndGgiLCJmaWx0ZXJlZEd1ZXNzZXMiLCJyZWJ1aWxkR3Vlc3MiLCJpbnRsTmFtZSIsIkludGwiLCJEYXRlVGltZUZvcm1hdCIsInJlc29sdmVkT3B0aW9ucyIsInRpbWVab25lIiwibm9ybWFsaXplTmFtZSIsImxvZ0Vycm9yIiwiem9uZVNjb3JlIiwiY2hhbmdlIiwic3RhcnRZZWFyIiwibGFzdCIsInVzZXJPZmZzZXRzIiwiem9uZVNjb3JlcyIsImdldFpvbmUiLCJzY29yZU9mZnNldEF0IiwiYWRkWm9uZSIsInBhY2tlZCIsIm5vcm1hbGl6ZWQiLCJjYWxsZXIiLCJsaW5rIiwiYWRkTGluayIsIm5vcm1hbDAiLCJub3JtYWwxIiwibG9hZERhdGEiLCJ0eiIsImRhdGFWZXJzaW9uIiwibmVlZHNPZmZzZXQiLCJpc1VuaXhUaW1lc3RhbXAiLCJlcnJvciIsInBhcnNlIiwidW5wYWNrZWQiLCJfaW5kZXgiLCJ0aW1lc3RhbXAiLCJ0YXJnZXQiLCJvZmZzZXROZXh0Iiwib2Zmc2V0UHJldiIsIm1vdmVBbWJpZ3VvdXNGb3J3YXJkIiwibW92ZUludmFsaWRGb3J3YXJkIiwib2Zmc2V0QXQiLCJfem9uZXMiLCJfbGlua3MiLCJfbmFtZXMiLCJsb2FkIiwiem9uZUV4aXN0cyIsImRpZFNob3dFcnJvciIsImd1ZXNzIiwiaWdub3JlQ2FjaGUiLCJvbGQiLCJhYmJyV3JhcCIsIl96IiwiZGVmYXVsdFpvbmUiLCJzZXREZWZhdWx0Iiwibm9HbG9iYWwiLCJnZXRQcm90byIsImdldFByb3RvdHlwZU9mIiwiY29uY2F0IiwiY2xhc3MydHlwZSIsImhhc093biIsImZuVG9TdHJpbmciLCJPYmplY3RGdW5jdGlvblN0cmluZyIsInN1cHBvcnQiLCJub2RlVHlwZSIsImlzV2luZG93IiwicHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyIsIm5vTW9kdWxlIiwiRE9NRXZhbCIsImNvZGUiLCJkb2MiLCJub2RlIiwidGV4dCIsImhlYWQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJ0b1R5cGUiLCJqUXVlcnkiLCJjb250ZXh0IiwiaW5pdCIsInJ0cmltIiwiaXNBcnJheUxpa2UiLCJqcXVlcnkiLCJjb25zdHJ1Y3RvciIsIm51bSIsInB1c2hTdGFjayIsImVsZW1zIiwibWVyZ2UiLCJwcmV2T2JqZWN0IiwiZWFjaCIsImVsZW0iLCJmaXJzdCIsImVxIiwiZW5kIiwic3BsaWNlIiwib3B0aW9ucyIsImNvcHkiLCJjb3B5SXNBcnJheSIsImRlZXAiLCJpc1BsYWluT2JqZWN0IiwiZXhwYW5kbyIsInJhbmRvbSIsImlzUmVhZHkiLCJub29wIiwiQ3RvciIsImlzRW1wdHlPYmplY3QiLCJnbG9iYWxFdmFsIiwidHJpbSIsIm1ha2VBcnJheSIsInJlc3VsdHMiLCJpbkFycmF5IiwiZ3JlcCIsImludmVydCIsImNhbGxiYWNrRXhwZWN0IiwiZ3VpZCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiU2l6emxlIiwiRXhwciIsImdldFRleHQiLCJpc1hNTCIsInRva2VuaXplIiwiY29tcGlsZSIsInNlbGVjdCIsIm91dGVybW9zdENvbnRleHQiLCJzb3J0SW5wdXQiLCJoYXNEdXBsaWNhdGUiLCJzZXREb2N1bWVudCIsImRvY0VsZW0iLCJkb2N1bWVudElzSFRNTCIsInJidWdneVFTQSIsInJidWdneU1hdGNoZXMiLCJwcmVmZXJyZWREb2MiLCJkaXJydW5zIiwiY2xhc3NDYWNoZSIsImNyZWF0ZUNhY2hlIiwidG9rZW5DYWNoZSIsImNvbXBpbGVyQ2FjaGUiLCJzb3J0T3JkZXIiLCJwb3AiLCJwdXNoX25hdGl2ZSIsImxpc3QiLCJib29sZWFucyIsIndoaXRlc3BhY2UiLCJpZGVudGlmaWVyIiwiYXR0cmlidXRlcyIsInBzZXVkb3MiLCJyd2hpdGVzcGFjZSIsInJjb21tYSIsInJjb21iaW5hdG9ycyIsInJhdHRyaWJ1dGVRdW90ZXMiLCJycHNldWRvIiwicmlkZW50aWZpZXIiLCJtYXRjaEV4cHIiLCJJRCIsIkNMQVNTIiwiVEFHIiwiQVRUUiIsIlBTRVVETyIsIkNISUxEIiwiYm9vbCIsIm5lZWRzQ29udGV4dCIsInJpbnB1dHMiLCJyaGVhZGVyIiwicm5hdGl2ZSIsInJxdWlja0V4cHIiLCJyc2libGluZyIsInJ1bmVzY2FwZSIsImZ1bmVzY2FwZSIsIl8iLCJlc2NhcGVkIiwiZXNjYXBlZFdoaXRlc3BhY2UiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJyY3NzZXNjYXBlIiwiZmNzc2VzY2FwZSIsImNoIiwiYXNDb2RlUG9pbnQiLCJ1bmxvYWRIYW5kbGVyIiwiZGlzYWJsZWRBbmNlc3RvciIsImFkZENvbWJpbmF0b3IiLCJkaXNhYmxlZCIsImRpciIsImNoaWxkTm9kZXMiLCJlbHMiLCJzZWVkIiwibmlkIiwiZ3JvdXBzIiwibmV3U2VsZWN0b3IiLCJuZXdDb250ZXh0Iiwib3duZXJEb2N1bWVudCIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJxc2EiLCJub2RlTmFtZSIsInRvU2VsZWN0b3IiLCJ0ZXN0Q29udGV4dCIsInFzYUVycm9yIiwiY2FjaGUiLCJjYWNoZUxlbmd0aCIsIm1hcmtGdW5jdGlvbiIsImFzc2VydCIsImVsIiwiYWRkSGFuZGxlIiwiYXR0cnMiLCJoYW5kbGVyIiwiYXR0ckhhbmRsZSIsInNpYmxpbmdDaGVjayIsImN1ciIsInNvdXJjZUluZGV4IiwibmV4dFNpYmxpbmciLCJjcmVhdGVJbnB1dFBzZXVkbyIsImNyZWF0ZUJ1dHRvblBzZXVkbyIsImNyZWF0ZURpc2FibGVkUHNldWRvIiwiaXNEaXNhYmxlZCIsImNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8iLCJhcmd1bWVudCIsIm1hdGNoSW5kZXhlcyIsImRvY3VtZW50RWxlbWVudCIsImhhc0NvbXBhcmUiLCJzdWJXaW5kb3ciLCJkZWZhdWx0VmlldyIsInRvcCIsImFkZEV2ZW50TGlzdGVuZXIiLCJhdHRhY2hFdmVudCIsImNyZWF0ZUNvbW1lbnQiLCJnZXRCeUlkIiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJhdHRySWQiLCJmaW5kIiwiZ2V0QXR0cmlidXRlTm9kZSIsInRhZyIsIm1hdGNoZXNTZWxlY3RvciIsIndlYmtpdE1hdGNoZXNTZWxlY3RvciIsIm1vek1hdGNoZXNTZWxlY3RvciIsIm9NYXRjaGVzU2VsZWN0b3IiLCJtc01hdGNoZXNTZWxlY3RvciIsImRpc2Nvbm5lY3RlZE1hdGNoIiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJhZG93biIsImJ1cCIsImNvbXBhcmUiLCJzb3J0RGV0YWNoZWQiLCJhdXAiLCJhcCIsImJwIiwidW5zaGlmdCIsImV4cHIiLCJlbGVtZW50cyIsImF0dHIiLCJzcGVjaWZpZWQiLCJlc2NhcGUiLCJzZWwiLCJ1bmlxdWVTb3J0IiwiZHVwbGljYXRlcyIsImRldGVjdER1cGxpY2F0ZXMiLCJzb3J0U3RhYmxlIiwidGV4dENvbnRlbnQiLCJmaXJzdENoaWxkIiwibm9kZVZhbHVlIiwic2VsZWN0b3JzIiwiY3JlYXRlUHNldWRvIiwicmVsYXRpdmUiLCI+IiwiICIsIisiLCJ+IiwicHJlRmlsdGVyIiwiZXhjZXNzIiwidW5xdW90ZWQiLCJub2RlTmFtZVNlbGVjdG9yIiwicGF0dGVybiIsIm9wZXJhdG9yIiwiY2hlY2siLCJ3aGF0Iiwic2ltcGxlIiwiZm9yd2FyZCIsIm9mVHlwZSIsInhtbCIsInVuaXF1ZUNhY2hlIiwib3V0ZXJDYWNoZSIsIm5vZGVJbmRleCIsInBhcmVudCIsInVzZUNhY2hlIiwibGFzdENoaWxkIiwidW5pcXVlSUQiLCJwc2V1ZG8iLCJzZXRGaWx0ZXJzIiwiaWR4Iiwibm90IiwidW5tYXRjaGVkIiwiaGFzIiwiaW5uZXJUZXh0IiwiZWxlbUxhbmciLCJoYXNoIiwiZm9jdXMiLCJhY3RpdmVFbGVtZW50IiwiaGFzRm9jdXMiLCJ0YWJJbmRleCIsImVuYWJsZWQiLCJzZWxlY3RlZCIsInNlbGVjdGVkSW5kZXgiLCJoZWFkZXIiLCJldmVuIiwib2RkIiwibHQiLCJndCIsInJhZGlvIiwiY2hlY2tib3giLCJmaWxlIiwicGFzc3dvcmQiLCJpbWFnZSIsInN1Ym1pdCIsInJlc2V0IiwiY29tYmluYXRvciIsInNraXAiLCJjaGVja05vbkVsZW1lbnRzIiwiZG9uZU5hbWUiLCJvbGRDYWNoZSIsIm5ld0NhY2hlIiwiZWxlbWVudE1hdGNoZXIiLCJtYXRjaGVycyIsImNvbmRlbnNlIiwibmV3VW5tYXRjaGVkIiwibWFwcGVkIiwic2V0TWF0Y2hlciIsInBvc3RGaWx0ZXIiLCJwb3N0RmluZGVyIiwicG9zdFNlbGVjdG9yIiwicHJlTWFwIiwicG9zdE1hcCIsInByZWV4aXN0aW5nIiwiY29udGV4dHMiLCJtdWx0aXBsZUNvbnRleHRzIiwibWF0Y2hlckluIiwibWF0Y2hlck91dCIsIm1hdGNoZXJGcm9tVG9rZW5zIiwiY2hlY2tDb250ZXh0IiwibGVhZGluZ1JlbGF0aXZlIiwiaW1wbGljaXRSZWxhdGl2ZSIsIm1hdGNoQ29udGV4dCIsIm1hdGNoQW55Q29udGV4dCIsImZpbHRlcnMiLCJwYXJzZU9ubHkiLCJzb0ZhciIsInByZUZpbHRlcnMiLCJjYWNoZWQiLCJzZXRNYXRjaGVycyIsImVsZW1lbnRNYXRjaGVycyIsImJ5U2V0IiwiYnlFbGVtZW50Iiwic3VwZXJNYXRjaGVyIiwib3V0ZXJtb3N0IiwibWF0Y2hlZENvdW50Iiwic2V0TWF0Y2hlZCIsImNvbnRleHRCYWNrdXAiLCJkaXJydW5zVW5pcXVlIiwibWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzIiwiY29tcGlsZWQiLCJkZWZhdWx0VmFsdWUiLCJ1bmlxdWUiLCJpc1hNTERvYyIsImVzY2FwZVNlbGVjdG9yIiwidW50aWwiLCJ0cnVuY2F0ZSIsImlzIiwic2libGluZ3MiLCJuIiwicm5lZWRzQ29udGV4dCIsInJzaW5nbGVUYWciLCJ3aW5ub3ciLCJxdWFsaWZpZXIiLCJzZWxmIiwicm9vdGpRdWVyeSIsInBhcnNlSFRNTCIsInJlYWR5IiwicnBhcmVudHNwcmV2IiwiZ3VhcmFudGVlZFVuaXF1ZSIsImNoaWxkcmVuIiwiY29udGVudHMiLCJwcmV2Iiwic2libGluZyIsInRhcmdldHMiLCJjbG9zZXN0IiwicHJldkFsbCIsImFkZEJhY2siLCJwYXJlbnRzIiwicGFyZW50c1VudGlsIiwibmV4dEFsbCIsIm5leHRVbnRpbCIsInByZXZVbnRpbCIsImNvbnRlbnREb2N1bWVudCIsImNvbnRlbnQiLCJyZXZlcnNlIiwicm5vdGh0bWx3aGl0ZSIsIklkZW50aXR5IiwidiIsIlRocm93ZXIiLCJleCIsImFkb3B0VmFsdWUiLCJyZXNvbHZlIiwicmVqZWN0Iiwibm9WYWx1ZSIsInByb21pc2UiLCJ0aGVuIiwiQ2FsbGJhY2tzIiwib2JqZWN0IiwiZmxhZyIsImNyZWF0ZU9wdGlvbnMiLCJmaXJpbmciLCJtZW1vcnkiLCJmaXJlZCIsImxvY2tlZCIsInF1ZXVlIiwiZmlyaW5nSW5kZXgiLCJmaXJlIiwib25jZSIsInN0b3BPbkZhbHNlIiwiZGlzYWJsZSIsImxvY2siLCJmaXJlV2l0aCIsIkRlZmVycmVkIiwidHVwbGVzIiwiYWx3YXlzIiwiZGVmZXJyZWQiLCJjYXRjaCIsInBpcGUiLCJmbnMiLCJuZXdEZWZlciIsInR1cGxlIiwicmV0dXJuZWQiLCJwcm9ncmVzcyIsIm5vdGlmeSIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsIm9uUHJvZ3Jlc3MiLCJtYXhEZXB0aCIsImRlcHRoIiwic3BlY2lhbCIsIm1pZ2h0VGhyb3ciLCJUeXBlRXJyb3IiLCJub3RpZnlXaXRoIiwicmVzb2x2ZVdpdGgiLCJwcm9jZXNzIiwiZXhjZXB0aW9uSG9vayIsInN0YWNrVHJhY2UiLCJyZWplY3RXaXRoIiwiZ2V0U3RhY2tIb29rIiwic2V0VGltZW91dCIsInN0YXRlU3RyaW5nIiwid2hlbiIsInNpbmdsZVZhbHVlIiwicmVtYWluaW5nIiwicmVzb2x2ZUNvbnRleHRzIiwicmVzb2x2ZVZhbHVlcyIsIm1hc3RlciIsInVwZGF0ZUZ1bmMiLCJyZXJyb3JOYW1lcyIsInJlYWR5RXhjZXB0aW9uIiwicmVhZHlMaXN0IiwiY29tcGxldGVkIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlYWR5V2FpdCIsIndhaXQiLCJkb1Njcm9sbCIsImFjY2VzcyIsImNoYWluYWJsZSIsImVtcHR5R2V0IiwicmF3IiwiYnVsayIsInJtc1ByZWZpeCIsInJkYXNoQWxwaGEiLCJmY2FtZWxDYXNlIiwiYWxsIiwibGV0dGVyIiwiY2FtZWxDYXNlIiwiYWNjZXB0RGF0YSIsIm93bmVyIiwiRGF0YSIsInVpZCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiaGFzRGF0YSIsImRhdGFQcml2IiwiZGF0YVVzZXIiLCJyYnJhY2UiLCJybXVsdGlEYXNoIiwiZGF0YUF0dHIiLCJnZXREYXRhIiwicmVtb3ZlRGF0YSIsIl9yZW1vdmVEYXRhIiwiZGVxdWV1ZSIsInN0YXJ0TGVuZ3RoIiwiX3F1ZXVlSG9va3MiLCJjbGVhclF1ZXVlIiwiY291bnQiLCJwbnVtIiwicmNzc051bSIsImNzc0V4cGFuZCIsImlzSGlkZGVuV2l0aGluVHJlZSIsInN0eWxlIiwiZGlzcGxheSIsImNzcyIsInN3YXAiLCJhZGp1c3RDU1MiLCJ2YWx1ZVBhcnRzIiwidHdlZW4iLCJhZGp1c3RlZCIsInNjYWxlIiwibWF4SXRlcmF0aW9ucyIsImN1cnJlbnRWYWx1ZSIsImluaXRpYWwiLCJjc3NOdW1iZXIiLCJpbml0aWFsSW5Vbml0IiwiZGVmYXVsdERpc3BsYXlNYXAiLCJnZXREZWZhdWx0RGlzcGxheSIsImJvZHkiLCJzaG93SGlkZSIsInNob3ciLCJoaWRlIiwidG9nZ2xlIiwicmNoZWNrYWJsZVR5cGUiLCJydGFnTmFtZSIsInJzY3JpcHRUeXBlIiwid3JhcE1hcCIsIm9wdGlvbiIsInRoZWFkIiwiY29sIiwidHIiLCJ0ZCIsIl9kZWZhdWx0IiwiZ2V0QWxsIiwic2V0R2xvYmFsRXZhbCIsInJlZkVsZW1lbnRzIiwib3B0Z3JvdXAiLCJ0Ym9keSIsInRmb290IiwiY29sZ3JvdXAiLCJjYXB0aW9uIiwidGgiLCJkaXYiLCJyaHRtbCIsImJ1aWxkRnJhZ21lbnQiLCJzY3JpcHRzIiwic2VsZWN0aW9uIiwiaWdub3JlZCIsIndyYXAiLCJmcmFnbWVudCIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJub2RlcyIsImh0bWxQcmVmaWx0ZXIiLCJjcmVhdGVUZXh0Tm9kZSIsImNoZWNrQ2xvbmUiLCJjbG9uZU5vZGUiLCJub0Nsb25lQ2hlY2tlZCIsInJrZXlFdmVudCIsInJtb3VzZUV2ZW50IiwicnR5cGVuYW1lc3BhY2UiLCJyZXR1cm5UcnVlIiwicmV0dXJuRmFsc2UiLCJzYWZlQWN0aXZlRWxlbWVudCIsImVyciIsIm9uIiwidHlwZXMiLCJvbmUiLCJvcmlnRm4iLCJldmVudCIsIm9mZiIsImhhbmRsZU9iakluIiwiZXZlbnRIYW5kbGUiLCJldmVudHMiLCJoYW5kbGVPYmoiLCJoYW5kbGVycyIsIm5hbWVzcGFjZXMiLCJvcmlnVHlwZSIsImVsZW1EYXRhIiwiaGFuZGxlIiwidHJpZ2dlcmVkIiwiZGlzcGF0Y2giLCJkZWxlZ2F0ZVR5cGUiLCJiaW5kVHlwZSIsIm5hbWVzcGFjZSIsImRlbGVnYXRlQ291bnQiLCJzZXR1cCIsIm1hcHBlZFR5cGVzIiwib3JpZ0NvdW50IiwidGVhcmRvd24iLCJyZW1vdmVFdmVudCIsIm5hdGl2ZUV2ZW50IiwiaGFuZGxlclF1ZXVlIiwiZml4IiwiZGVsZWdhdGVUYXJnZXQiLCJwcmVEaXNwYXRjaCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiY3VycmVudFRhcmdldCIsImlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkIiwicm5hbWVzcGFjZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwicG9zdERpc3BhdGNoIiwibWF0Y2hlZEhhbmRsZXJzIiwibWF0Y2hlZFNlbGVjdG9ycyIsImFkZFByb3AiLCJob29rIiwiRXZlbnQiLCJlbnVtZXJhYmxlIiwib3JpZ2luYWxFdmVudCIsIndyaXRhYmxlIiwibm9CdWJibGUiLCJ0cmlnZ2VyIiwiYmx1ciIsImNsaWNrIiwiYmVmb3JldW5sb2FkIiwicmV0dXJuVmFsdWUiLCJwcm9wcyIsImlzRGVmYXVsdFByZXZlbnRlZCIsImRlZmF1bHRQcmV2ZW50ZWQiLCJyZWxhdGVkVGFyZ2V0IiwidGltZVN0YW1wIiwiaXNTaW11bGF0ZWQiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJhbHRLZXkiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsImNoYW5nZWRUb3VjaGVzIiwiY3RybEtleSIsImRldGFpbCIsImV2ZW50UGhhc2UiLCJtZXRhS2V5IiwicGFnZVgiLCJwYWdlWSIsInNoaWZ0S2V5IiwidmlldyIsImNoYXIiLCJrZXlDb2RlIiwiY2xpZW50WCIsImNsaWVudFkiLCJvZmZzZXRYIiwib2Zmc2V0WSIsInBvaW50ZXJJZCIsInBvaW50ZXJUeXBlIiwic2NyZWVuWCIsInNjcmVlblkiLCJ0YXJnZXRUb3VjaGVzIiwidG9FbGVtZW50IiwidG91Y2hlcyIsIndoaWNoIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJwb2ludGVyZW50ZXIiLCJwb2ludGVybGVhdmUiLCJvcmlnIiwicmVsYXRlZCIsInJ4aHRtbFRhZyIsInJub0lubmVyaHRtbCIsInJjaGVja2VkIiwicmNsZWFuU2NyaXB0IiwibWFuaXB1bGF0aW9uVGFyZ2V0IiwiZGlzYWJsZVNjcmlwdCIsInJlc3RvcmVTY3JpcHQiLCJjbG9uZUNvcHlFdmVudCIsImRlc3QiLCJwZGF0YU9sZCIsInBkYXRhQ3VyIiwidWRhdGFPbGQiLCJ1ZGF0YUN1ciIsImRvbU1hbmlwIiwiY29sbGVjdGlvbiIsImhhc1NjcmlwdHMiLCJpTm9DbG9uZSIsInZhbHVlSXNGdW5jdGlvbiIsImh0bWwiLCJfZXZhbFVybCIsImtlZXBEYXRhIiwiY2xlYW5EYXRhIiwiZGF0YUFuZEV2ZW50cyIsImRlZXBEYXRhQW5kRXZlbnRzIiwic3JjRWxlbWVudHMiLCJkZXN0RWxlbWVudHMiLCJpblBhZ2UiLCJkZXRhY2giLCJhcHBlbmQiLCJwcmVwZW5kIiwiaW5zZXJ0QmVmb3JlIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZXBsYWNlV2l0aCIsInJlcGxhY2VDaGlsZCIsImFwcGVuZFRvIiwicHJlcGVuZFRvIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlQWxsIiwib3JpZ2luYWwiLCJpbnNlcnQiLCJybnVtbm9ucHgiLCJnZXRTdHlsZXMiLCJvcGVuZXIiLCJnZXRDb21wdXRlZFN0eWxlIiwicmJveFN0eWxlIiwiY3VyQ1NTIiwiY29tcHV0ZWQiLCJ3aWR0aCIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicGl4ZWxCb3hTdHlsZXMiLCJhZGRHZXRIb29rSWYiLCJjb25kaXRpb25GbiIsImhvb2tGbiIsImNvbXB1dGVTdHlsZVRlc3RzIiwiY29udGFpbmVyIiwiY3NzVGV4dCIsImRpdlN0eWxlIiwicGl4ZWxQb3NpdGlvblZhbCIsInJlbGlhYmxlTWFyZ2luTGVmdFZhbCIsInJvdW5kUGl4ZWxNZWFzdXJlcyIsIm1hcmdpbkxlZnQiLCJyaWdodCIsInBpeGVsQm94U3R5bGVzVmFsIiwiYm94U2l6aW5nUmVsaWFibGVWYWwiLCJwb3NpdGlvbiIsInNjcm9sbGJveFNpemVWYWwiLCJvZmZzZXRXaWR0aCIsIm1lYXN1cmUiLCJiYWNrZ3JvdW5kQ2xpcCIsImNsZWFyQ2xvbmVTdHlsZSIsImJveFNpemluZ1JlbGlhYmxlIiwicGl4ZWxQb3NpdGlvbiIsInJlbGlhYmxlTWFyZ2luTGVmdCIsInNjcm9sbGJveFNpemUiLCJyZGlzcGxheXN3YXAiLCJyY3VzdG9tUHJvcCIsImNzc1Nob3ciLCJ2aXNpYmlsaXR5IiwiY3NzTm9ybWFsVHJhbnNmb3JtIiwibGV0dGVyU3BhY2luZyIsImZvbnRXZWlnaHQiLCJjc3NQcmVmaXhlcyIsImVtcHR5U3R5bGUiLCJmaW5hbFByb3BOYW1lIiwiY3NzUHJvcHMiLCJjYXBOYW1lIiwidmVuZG9yUHJvcE5hbWUiLCJzZXRQb3NpdGl2ZU51bWJlciIsImJveE1vZGVsQWRqdXN0bWVudCIsImRpbWVuc2lvbiIsImJveCIsImlzQm9yZGVyQm94Iiwic3R5bGVzIiwiY29tcHV0ZWRWYWwiLCJleHRyYSIsImdldFdpZHRoT3JIZWlnaHQiLCJ2YWx1ZUlzQm9yZGVyQm94IiwiVHdlZW4iLCJlYXNpbmciLCJjc3NIb29rcyIsIm9wYWNpdHkiLCJhbmltYXRpb25JdGVyYXRpb25Db3VudCIsImNvbHVtbkNvdW50IiwiZmlsbE9wYWNpdHkiLCJmbGV4R3JvdyIsImZsZXhTaHJpbmsiLCJsaW5lSGVpZ2h0Iiwib3JkZXIiLCJvcnBoYW5zIiwid2lkb3dzIiwiekluZGV4Iiwiem9vbSIsIm9yaWdOYW1lIiwiaXNDdXN0b21Qcm9wIiwic2V0UHJvcGVydHkiLCJnZXRDbGllbnRSZWN0cyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImxlZnQiLCJtYXJnaW4iLCJwYWRkaW5nIiwiYm9yZGVyIiwiZXhwYW5kIiwiZXhwYW5kZWQiLCJwcm9wSG9va3MiLCJydW4iLCJwZXJjZW50IiwiZWFzZWQiLCJzdGVwIiwiZngiLCJzY3JvbGxUb3AiLCJzY3JvbGxMZWZ0IiwibGluZWFyIiwicCIsInN3aW5nIiwiY29zIiwiUEkiLCJmeE5vdyIsImluUHJvZ3Jlc3MiLCJyZnh0eXBlcyIsInJydW4iLCJzY2hlZHVsZSIsImhpZGRlbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImludGVydmFsIiwidGljayIsImNyZWF0ZUZ4Tm93IiwiZ2VuRngiLCJpbmNsdWRlV2lkdGgiLCJoZWlnaHQiLCJjcmVhdGVUd2VlbiIsImFuaW1hdGlvbiIsIkFuaW1hdGlvbiIsInR3ZWVuZXJzIiwicHJvcGVydGllcyIsInN0b3BwZWQiLCJwcmVmaWx0ZXJzIiwiY3VycmVudFRpbWUiLCJzdGFydFRpbWUiLCJ0d2VlbnMiLCJvcHRzIiwic3BlY2lhbEVhc2luZyIsIm9yaWdpbmFsUHJvcGVydGllcyIsIm9yaWdpbmFsT3B0aW9ucyIsImdvdG9FbmQiLCJwcm9wRmlsdGVyIiwiYmluZCIsImNvbXBsZXRlIiwidGltZXIiLCJhbmltIiwiKiIsInR3ZWVuZXIiLCJvbGRmaXJlIiwicHJvcFR3ZWVuIiwicmVzdG9yZURpc3BsYXkiLCJpc0JveCIsImRhdGFTaG93IiwidW5xdWV1ZWQiLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJwcmVmaWx0ZXIiLCJzcGVlZCIsIm9wdCIsInNwZWVkcyIsImZhZGVUbyIsImFuaW1hdGUiLCJvcHRhbGwiLCJkb0FuaW1hdGlvbiIsImZpbmlzaCIsInN0b3BRdWV1ZSIsInRpbWVycyIsImNzc0ZuIiwic2xpZGVEb3duIiwic2xpZGVVcCIsInNsaWRlVG9nZ2xlIiwiZmFkZUluIiwiZmFkZU91dCIsImZhZGVUb2dnbGUiLCJzbG93IiwiZmFzdCIsImRlbGF5IiwiY2xlYXJUaW1lb3V0IiwiY2hlY2tPbiIsIm9wdFNlbGVjdGVkIiwicmFkaW9WYWx1ZSIsImJvb2xIb29rIiwicmVtb3ZlQXR0ciIsIm5UeXBlIiwiYXR0ckhvb2tzIiwiYXR0ck5hbWVzIiwibG93ZXJjYXNlTmFtZSIsInJmb2N1c2FibGUiLCJyY2xpY2thYmxlIiwic3RyaXBBbmRDb2xsYXBzZSIsImdldENsYXNzIiwiY2xhc3Nlc1RvQXJyYXkiLCJyZW1vdmVQcm9wIiwicHJvcEZpeCIsInRhYmluZGV4IiwiZm9yIiwiY2xhc3MiLCJhZGRDbGFzcyIsImNsYXNzZXMiLCJjdXJWYWx1ZSIsImNsYXp6IiwiZmluYWxWYWx1ZSIsInRvZ2dsZUNsYXNzIiwic3RhdGVWYWwiLCJpc1ZhbGlkVmFsdWUiLCJjbGFzc05hbWVzIiwiaGFzQ2xhc3MiLCJycmV0dXJuIiwidmFsSG9va3MiLCJvcHRpb25TZXQiLCJmb2N1c2luIiwicmZvY3VzTW9ycGgiLCJzdG9wUHJvcGFnYXRpb25DYWxsYmFjayIsIm9ubHlIYW5kbGVycyIsImJ1YmJsZVR5cGUiLCJvbnR5cGUiLCJsYXN0RWxlbWVudCIsImV2ZW50UGF0aCIsImlzVHJpZ2dlciIsInBhcmVudFdpbmRvdyIsInNpbXVsYXRlIiwidHJpZ2dlckhhbmRsZXIiLCJhdHRhY2hlcyIsIm5vbmNlIiwicnF1ZXJ5IiwicGFyc2VYTUwiLCJET01QYXJzZXIiLCJwYXJzZUZyb21TdHJpbmciLCJyYnJhY2tldCIsInJDUkxGIiwicnN1Ym1pdHRlclR5cGVzIiwicnN1Ym1pdHRhYmxlIiwiYnVpbGRQYXJhbXMiLCJ0cmFkaXRpb25hbCIsInBhcmFtIiwidmFsdWVPckZ1bmN0aW9uIiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwic2VyaWFsaXplIiwic2VyaWFsaXplQXJyYXkiLCJyMjAiLCJyaGFzaCIsInJhbnRpQ2FjaGUiLCJyaGVhZGVycyIsInJub0NvbnRlbnQiLCJycHJvdG9jb2wiLCJ0cmFuc3BvcnRzIiwiYWxsVHlwZXMiLCJvcmlnaW5BbmNob3IiLCJhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMiLCJzdHJ1Y3R1cmUiLCJkYXRhVHlwZUV4cHJlc3Npb24iLCJkYXRhVHlwZXMiLCJpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsImpxWEhSIiwiaW5zcGVjdGVkIiwic2Vla2luZ1RyYW5zcG9ydCIsInByZWZpbHRlck9yRmFjdG9yeSIsImRhdGFUeXBlT3JUcmFuc3BvcnQiLCJhamF4RXh0ZW5kIiwiZmxhdE9wdGlvbnMiLCJhamF4U2V0dGluZ3MiLCJhY3RpdmUiLCJsYXN0TW9kaWZpZWQiLCJldGFnIiwicHJvdG9jb2wiLCJwcm9jZXNzRGF0YSIsImFzeW5jIiwiY29udGVudFR5cGUiLCJhY2NlcHRzIiwianNvbiIsInJlc3BvbnNlRmllbGRzIiwiY29udmVydGVycyIsIiogdGV4dCIsInRleHQgaHRtbCIsInRleHQganNvbiIsInRleHQgeG1sIiwiYWpheFNldHVwIiwic2V0dGluZ3MiLCJhamF4UHJlZmlsdGVyIiwiYWpheFRyYW5zcG9ydCIsInRyYW5zcG9ydCIsImNhY2hlVVJMIiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwicmVzcG9uc2VIZWFkZXJzIiwidGltZW91dFRpbWVyIiwidXJsQW5jaG9yIiwiZmlyZUdsb2JhbHMiLCJ1bmNhY2hlZCIsImNhbGxiYWNrQ29udGV4dCIsImdsb2JhbEV2ZW50Q29udGV4dCIsImNvbXBsZXRlRGVmZXJyZWQiLCJzdGF0dXNDb2RlIiwicmVxdWVzdEhlYWRlcnMiLCJyZXF1ZXN0SGVhZGVyc05hbWVzIiwic3RyQWJvcnQiLCJnZXRSZXNwb25zZUhlYWRlciIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJvdmVycmlkZU1pbWVUeXBlIiwibWltZVR5cGUiLCJzdGF0dXMiLCJhYm9ydCIsInN0YXR1c1RleHQiLCJmaW5hbFRleHQiLCJjcm9zc0RvbWFpbiIsImhvc3QiLCJoYXNDb250ZW50IiwiaWZNb2RpZmllZCIsImJlZm9yZVNlbmQiLCJzdWNjZXNzIiwibmF0aXZlU3RhdHVzVGV4dCIsInJlc3BvbnNlcyIsImlzU3VjY2VzcyIsInJlc3BvbnNlIiwibW9kaWZpZWQiLCJjdCIsImZpbmFsRGF0YVR5cGUiLCJmaXJzdERhdGFUeXBlIiwiYWpheEhhbmRsZVJlc3BvbnNlcyIsImNvbnYyIiwiY3VycmVudCIsImNvbnYiLCJkYXRhRmlsdGVyIiwidGhyb3dzIiwiYWpheENvbnZlcnQiLCJnZXRKU09OIiwid3JhcEFsbCIsImZpcnN0RWxlbWVudENoaWxkIiwid3JhcElubmVyIiwiaHRtbElzRnVuY3Rpb24iLCJ1bndyYXAiLCJ2aXNpYmxlIiwib2Zmc2V0SGVpZ2h0IiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJ4aHJTdWNjZXNzU3RhdHVzIiwiMCIsIjEyMjMiLCJ4aHJTdXBwb3J0ZWQiLCJjb3JzIiwiZXJyb3JDYWxsYmFjayIsIm9wZW4iLCJ1c2VybmFtZSIsInhockZpZWxkcyIsIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib250aW1lb3V0IiwicmVzcG9uc2VUeXBlIiwicmVzcG9uc2VUZXh0IiwiYmluYXJ5IiwidGV4dCBzY3JpcHQiLCJjaGFyc2V0Iiwic2NyaXB0Q2hhcnNldCIsImV2dCIsIm9sZENhbGxiYWNrcyIsInJqc29ucCIsImpzb25wIiwianNvbnBDYWxsYmFjayIsIm9yaWdpbmFsU2V0dGluZ3MiLCJjYWxsYmFja05hbWUiLCJvdmVyd3JpdHRlbiIsInJlc3BvbnNlQ29udGFpbmVyIiwianNvblByb3AiLCJjcmVhdGVIVE1MRG9jdW1lbnQiLCJpbXBsZW1lbnRhdGlvbiIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwicGFyYW1zIiwiYW5pbWF0ZWQiLCJzZXRPZmZzZXQiLCJjdXJQb3NpdGlvbiIsImN1ckxlZnQiLCJjdXJDU1NUb3AiLCJjdXJUb3AiLCJjdXJPZmZzZXQiLCJjdXJDU1NMZWZ0IiwiY3VyRWxlbSIsInVzaW5nIiwicmVjdCIsIndpbiIsInBhZ2VZT2Zmc2V0IiwicGFnZVhPZmZzZXQiLCJvZmZzZXRQYXJlbnQiLCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwiIiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJob3ZlciIsImZuT3ZlciIsImZuT3V0IiwidW5iaW5kIiwiZGVsZWdhdGUiLCJ1bmRlbGVnYXRlIiwicHJveHkiLCJob2xkUmVhZHkiLCJob2xkIiwicGFyc2VKU09OIiwiaXNOdW1lcmljIiwiX2pRdWVyeSIsIl8kIiwibm9Db25mbGljdCIsImxhc3RUaW1lIiwidmVuZG9ycyIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiY3VyclRpbWUiLCJ0aW1lVG9DYWxsIiwiX3NldHRpbmdzIiwiY3Vyc29yQW5pbWF0aW9uUGF1c2VkIiwib3BhY2l0eUluY3JlYXNpbmciLCJjdXJyZW50T3BhY2l0eSIsImRlbGF5ZWRRdWUiLCJkZWxheUl0ZW1zQ291bnQiLCJldmVudFF1ZSIsImNhbGxlZEV2ZW50cyIsImV2ZW50UnVubmluZyIsImRlbGF5RXhlY3V0aW9uIiwiZnBzIiwidHlwaW5nRnJhbWVDb3VudCIsInN0cmluZ1RvVHlwZUhUTUxBcnJheSIsImN1cnJlbnRUeXBlZENoYXJhY3RlcnMiLCJ0eXBpbmciLCJ1c2VkSURzIiwiY2hhckFtb3VudFRvRGVsZXRlIiwidXNlck9wdGlvbnMiLCJldmVudExvb3BSZXJ1biIsImRlZmF1bHRfb3B0aW9ucyIsInN0cmluZ3MiLCJjdXJzb3JDbGFzc05hbWUiLCJjdXJzb3IiLCJhbmltYXRlQ3Vyc29yIiwiYmxpbmtTcGVlZCIsImNoYXJTcGFuQ2xhc3NOYW1lIiwid3JhcHBlckNsYXNzTmFtZSIsImF1dG9TdGFydCIsIl9zZXR1cE9wdGlvbnMiLCJfc2V0dXBUeXB3cml0ZXJXcmFwcGVyIiwiX3N0YXJ0Q3Vyc29yQW5pbWF0aW9uIiwidHlwZU91dEFsbFN0cmluZ3MiLCJUeXBld3JpdGVyUHJvdG90eXBlIiwiX2FkZFRvRXZlbnRRdWUiLCJfc3RvcEV2ZW50TG9vcCIsIl9zdGFydEV2ZW50TG9vcCIsInJlcnVuIiwiX3JlcnVuQ2FsbGVkRXZlbnRzIiwic3RyaW5nX2NoYXJzIiwiX2dldENoYXJhY3RlcnMiLCJfdHlwZUNoYXJhY3RlcnMiLCJkZWxldGVBbGwiLCJfZGVsZXRlQ2hhcnMiLCJhbW91bnQiLCJfcGF1c2VGb3IiLCJjaGFyYWN0ZXJzX2FycmF5IiwiX2dldFN0cmluZ3NBc0NoYXJzQXJyYXkiLCJfcmFuZG9tSW50ZWdlciIsIm5ld19zZXR0aW5ncyIsIl9jaGFuZ2VTZXR0aW5ncyIsImNoYW5nZUJsaW5rU3BlZWQiLCJuZXdfc3BlZWQiLCJjaGFuZ2VUeXBpbmdTcGVlZCIsImNoYW5nZURlbGV0ZVNwZWVkIiwiX3Jlc2V0RXZlbnRMb29wIiwiX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiIsIl9kZWxldGluZ0NoYXJBbmltYXRpb25GcmFtZSIsImxvZyIsImRlbGV0ZV9zcGVlZCIsInR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lIiwiY3VycmVudF90eXBlZF9jaGFyX2lkcyIsImNoYXJfYW1vdW50X3RvX2RlbGV0ZSIsImxhc3RfdHlwZWRfY2hhcl9pbmRleCIsImdldF9sYXN0X3R5cGVkX2NoYXIiLCJjaGFyX3RvX2RlbGV0ZV9lbCIsIm5ld19vcHRpb25zIiwibWVyZ2VkX29wdGlvbnMiLCJhdHRybmFtZSIsImZpcnN0X2V2ZW50IiwiX2V2ZW50UXVlQW5pbWF0aW9uIiwiZXZlbnRfbmFtZSIsInR5cGV3cml0ZXJfd3JhcHBlciIsIl9jb252ZXJ0Q2hhcnNUb0hUTUwiLCJfdHlwaW5nQW5pbWF0aW9uIiwiX3R5cGluZ0FuaW1hdGlvbkZyYW1lIiwidG90YWxfaXRlbXMiLCJ0eXBpbmdfc3BlZWQiLCJpdGVtX3RvX3R5cGUiLCJjaGFycyIsImNoYXJzX2h0bWxfd3JhcF9hcnJheSIsImNoYXJfY2xhc3NfbmFtZSIsImNoYXJzX2FycmF5IiwiY2hhcl9lbGVtZW50IiwiY2hhcl9pZCIsIl9nZW5lcmF0ZVVuaXF1ZUlEIiwic3RyaW5nc19hcnJheV9jaGVjayIsInN0cmluZ3Nfc3RyaW5nX2NoZWNrIiwic3RyaW5nc19jaGFyc19hcnJheSIsIl9jdXJzb3JBbmltYXRpb25GcmFtZSIsIm9wYWNpdHlfYW1vdW50IiwiY3Vyc29yX2VsIiwiX2N1cnNvckFuaW1hdGlvbiIsIl9hcHBlbmRUZXh0IiwiaXRlbXMiLCJjdXJzb3JfY2xhc3NfbmFtZSIsImN1cnNvcl9lbGVtZW50IiwiX3BhdXNlQ3Vyc29yQW5pbWF0aW9uIiwiX3Jlc3RhcnRDdXJzb3JBbmltYXRpb24iLCJfcmFuZG9tSUQiLCJwb3NzaWJsZSIsInRlbXBfaWQiLCJoeXBoZW5hdGVDYWNoZSIsImh5cGhlbmF0ZVJlIiwiaHlwaGVuYXRlIiwic3RyIiwiY2FtZWxpemVSZSIsImNhbWVsaXplIiwidG9VcHBlciIsInVjZmlyc3QiLCJzdHJQcm90b3R5cGUiLCJzdGFydHNXaXRoRm4iLCJzdGFydHNXaXRoIiwic2VhcmNoIiwibGFzdEluZGV4T2YiLCJlbmRzV2l0aEZuIiwiZW5kc1dpdGgiLCJpbmNsdWRlc0ZuIiwiaW5jbHVkZXNTdHIiLCJpbmNsdWRlcyIsImluY2x1ZGVzQXJyYXkiLCJpc1N0cmluZyIsImlzRG9jdW1lbnQiLCJpc0pRdWVyeSIsImlzTm9kZSIsIk5vZGUiLCJpc05vZGVDb2xsZWN0aW9uIiwiTm9kZUxpc3QiLCJIVE1MQ29sbGVjdGlvbiIsImlzQm9vbGVhbiIsInRvQm9vbGVhbiIsInRvTnVtYmVyIiwiTnVtYmVyIiwidG9GbG9hdCIsInRvTm9kZSIsImFycmF5UHJvdG8iLCJ0b05vZGVzIiwiQm9vbGVhbiIsInRvTGlzdCIsInRvTXMiLCJhc3NpZ24iLCJjYiIsInNvcnRCeSIsImNsYW1wIiwiaW50ZXJzZWN0UmVjdCIsInIxIiwicjIiLCJib3R0b20iLCJwb2ludEluUmVjdCIsInBvaW50IiwiRGltZW5zaW9ucyIsInJhdGlvIiwiZGltZW5zaW9ucyIsImFQcm9wIiwiY29udGFpbiIsIm1heERpbWVuc2lvbnMiLCJ0aGlzJDEiLCJjb3ZlciIsImhhc0F0dHIiLCJoYXNBdHRyaWJ1dGUiLCJmaWx0ZXJBdHRyIiwiYXR0cmlidXRlIiwicmVwbGFjZW1lbnQiLCJxdWVyeSIsImlzQ29udGV4dFNlbGVjdG9yIiwicXVlcnlBbGwiLCJmaW5kQWxsIiwiX3F1ZXJ5IiwicXVlcnlGbiIsInJlbW92ZXMiLCJjb250ZXh0U2FuaXRpemVSZSIsImN0eCIsInNlbGVjdG9ycyQxIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsImNvbnRleHRTZWxlY3RvclJlIiwiZWxQcm90byIsIkVsZW1lbnQiLCJtYXRjaGVzRm4iLCJjbG9zZXN0Rm4iLCJhbmNlc3RvciIsImVzY2FwZUZuIiwiQ1NTIiwidm9pZEVsZW1lbnRzIiwiYXJlYSIsImJyIiwiZW1iZWQiLCJociIsImltZyIsImtleWdlbiIsIm1lbnVpdGVtIiwibWV0YSIsInRyYWNrIiwid2JyIiwiaXNWb2lkRWxlbWVudCIsInRhZ05hbWUiLCJpc1Zpc2libGUiLCJzZWxJbnB1dCIsImlzSW5wdXQiLCJ3aXRoaW4iLCJyZWYiLCJnZXRBcmdzIiwibGlzdGVuZXIiLCJ1c2VDYXB0dXJlIiwidG9FdmVudFRhcmdldCIsImNvbmRpdGlvbiIsInRvRXZlbnRUYXJnZXRzIiwicmVkdWNlIiwibm90Q2FuY2VsZWQiLCJkaXNwYXRjaEV2ZW50IiwiY3JlYXRlRXZlbnQiLCJpbml0Q3VzdG9tRXZlbnQiLCJpc0V2ZW50VGFyZ2V0IiwiRXZlbnRUYXJnZXQiLCJwcmV2ZW50Q2xpY2siLCJQcm9taXNlJDEiLCJQcm9taXNlIiwiUHJvbWlzZUZuIiwiUEVORElORyIsInNldEltbWVkaWF0ZSIsImV4ZWN1dG9yIiwiciIsIml0ZXJhYmxlIiwicmVzb2x2ZXIiLCJyYWNlIiwiZW52IiwiZ2V0SW1hZ2UiLCJzcmNzZXQiLCJzaXplcyIsIkltYWdlIiwidW5iaW5kMSIsInVuYmluZDIiLCJnZXRJbmRleCIsImZpbml0ZSIsImhhc0NoaWxkTm9kZXMiLCJpbnNlcnROb2RlcyIsImNhbGxlZCIsIm9uUmVzb2x2ZWQiLCJmcmFnbWVudFJlIiwic2luZ2xlVGFnUmUiLCJpbnNlcnRBZGphY2VudEhUTUwiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJhcHBseSQxIiwicmVtb3ZlQ2xhc3NlcyIsImNscyIsInJlcGxhY2VDbGFzcyIsImZvcmNlIiwiZ2V0QXJncyQxIiwic3VwcG9ydHMiLCJGb3JjZSIsIk11bHRpcGxlIiwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsImNvbHVtbi1jb3VudCIsImZpbGwtb3BhY2l0eSIsImZsZXgtZ3JvdyIsImZsZXgtc2hyaW5rIiwiZm9udC13ZWlnaHQiLCJsaW5lLWhlaWdodCIsInotaW5kZXgiLCJwcm9wZXJ0eSIsInByb3BOYW1lIiwiZ2V0U3R5bGUiLCJyZW1vdmVQcm9wZXJ0eSIsInBzZXVkb0VsdCIsInZhcnMiLCJnZXRDc3NWYXIiLCJwcmVmaXhlZE5hbWUiLCJ0cmFuc2l0aW9uIiwidGltaW5nIiwidHJhbnNpdGlvbi1wcm9wZXJ0eSIsInRyYW5zaXRpb24tZHVyYXRpb24iLCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsIlRyYW5zaXRpb24iLCJjYW5jZWwiLCJhbmltYXRpb25QcmVmaXgiLCJjbHNDYW5jZWxBbmltYXRpb24iLCJvcmlnaW4iLCJhcmd1bWVudHMkMSIsImhhc1Jlc2V0IiwiaW4iLCJpc0h0bWwiLCIkJCIsImRpcnMiLCJwb3NpdGlvbkF0IiwiZWxBdHRhY2giLCJ0YXJnZXRBdHRhY2giLCJlbE9mZnNldCIsInRhcmdldE9mZnNldCIsImZsaXAiLCJib3VuZGFyeSIsImdldFBvcyIsImZsaXBwZWQiLCJkaW0iLCJnZXREaW1lbnNpb25zIiwidGFyZ2V0RGltIiwibW92ZVRvIiwiZ2V0T2Zmc2V0cyIsIndpbmRvdyQxIiwiYWxpZ24iLCJhbGlnbkZsaXAiLCJlbGVtT2Zmc2V0IiwiY2VudGVyT2Zmc2V0IiwiY2VudGVyVGFyZ2V0T2Zmc2V0IiwibmV3VmFsIiwiY29vcmRpbmF0ZXMiLCJjdXJyZW50T2Zmc2V0IiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZG9jRWwiLCJwcm9wTmFtZSQkMSIsImJveE1vZGVsQWRqdXN0IiwiYXR0YWNoIiwiZmFjdG9yIiwiZmxpcFBvc2l0aW9uIiwiaXNJblZpZXciLCJ0b3BPZmZzZXQiLCJsZWZ0T2Zmc2V0IiwicmVsYXRpdmVUb1ZpZXdwb3J0Iiwib2Zmc2V0UG9zaXRpb24iLCJlbFRvcCIsImVsTGVmdCIsInNjcm9sbGVkT3ZlciIsImhlaWdodE9mZnNldCIsImRvY3VtZW50JDEiLCJlbEhlaWdodCIsInZwIiwidmgiLCJvZmZzZXRUb3AiLCJvZmZzZXRMZWZ0IiwiaXNSdGwiLCJoYXNUb3VjaEV2ZW50cyIsImhhc1BvaW50ZXJFdmVudHMiLCJQb2ludGVyRXZlbnQiLCJoYXNUb3VjaCIsIkRvY3VtZW50VG91Y2giLCJuYXZpZ2F0b3IiLCJtYXhUb3VjaFBvaW50cyIsInBvaW50ZXJEb3duIiwicG9pbnRlck1vdmUiLCJwb2ludGVyVXAiLCJwb2ludGVyRW50ZXIiLCJwb2ludGVyTGVhdmUiLCJmYXN0ZG9tIiwicmVhZHMiLCJ3cml0ZXMiLCJyZWFkIiwidGFzayIsInNjaGVkdWxlRmx1c2giLCJ3cml0ZSIsImNsZWFyIiwicmVtb3ZlJDEiLCJmbHVzaCIsInJ1blRhc2tzIiwic2NoZWR1bGVkIiwidGFza3MiLCJpdGVtIiwiTW91c2VUcmFja2VyIiwic2xvcGUiLCJwb3NpdGlvbnMiLCJ0aWNraW5nIiwibW92ZXNUbyIsInBvc2l0aW9uJCQxIiwicHJldlBvcyIsInBvaW50cyIsInN0cmF0cyIsIm1lcmdlRm5EYXRhIiwicGFyZW50VmFsIiwiY2hpbGRWYWwiLCJ2bSIsImNyZWF0ZWQiLCJiZWZvcmVDb25uZWN0IiwiY29ubmVjdGVkIiwiYmVmb3JlRGlzY29ubmVjdCIsImRpc2Nvbm5lY3RlZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJtZXRob2RzIiwiZGVmYXVsdFN0cmF0IiwibWVyZ2VPcHRpb25zIiwiY2hpbGQiLCJleHRlbmRzIiwibWl4aW5zIiwibWVyZ2VLZXkiLCJrZXkkMSIsInBhcnNlT3B0aW9ucyIsIlBsYXllciIsInBvc3QiLCJjbWQiLCJjb250ZW50V2luZG93IiwicG9zdE1lc3NhZ2UiLCJpc1ZpZGVvIiwiaXNZb3V0dWJlIiwiaXNWaW1lbyIsImlzSFRNTDUiLCJpc0lGcmFtZSIsImVuYWJsZUFwaSIsInBvbGxlciIsInlvdXR1YmUiLCJ2aW1lbyIsImRhdGEkJDEiLCJwbGF5ZXJfaWQiLCJwbGF5IiwicGF1c2UiLCJtdXRlIiwibXV0ZWQiLCJjbGlja1RpbWVvdXQiLCJzd2lwZVRpbWVvdXQiLCJ0YXBUaW1lb3V0IiwiY2xpY2tlZCIsInRvdWNoIiwiY2FuY2VsQWxsIiwiZ2V0UG9zJDEiLCJnZXRUeXBlIiwieDEiLCJ5MSIsIngyIiwieTIiLCJ0b3VjaGluZyIsImlzVG91Y2giLCJnZXRDb21wb25lbnROYW1lIiwiX2luaXQiLCJ1dGlsIiwiZnJlZXplIiwiREFUQSIsIl9pc1JlYWR5IiwiX2NhbGxVcGRhdGUiLCJ1c2UiLCJwbHVnaW4iLCJpbnN0YWxsZWQiLCJtaXhpbiIsImNvbXBvbmVudCIsIlN1YiIsImNyZWF0ZSIsInBhdGgiLCJnbG9iYWxBUEkiLCJfY2FsbEhvb2siLCIkb3B0aW9ucyIsIl9jYWxsQ29ubmVjdGVkIiwiX2Nvbm5lY3RlZCIsIl9pbml0UHJvcHMiLCJfaW5pdEV2ZW50cyIsIl9pbml0T2JzZXJ2ZXIiLCJfY2FsbFJlYWR5IiwiX2NhbGxEaXNjb25uZWN0ZWQiLCJfb2JzZXJ2ZXIiLCJkaXNjb25uZWN0IiwiX3VuYmluZEV2ZW50cyIsIl9yZXNldENvbXB1dGVkcyIsInVwZGF0ZXMiLCJfZnJhbWVzIiwiaG9va3NBUEkiLCJnZXRQcm9wcyIsImNvZXJjZSIsInByb3AkMSIsInJlZ2lzdGVyQ29tcHV0ZWQiLCJfY29tcHV0ZWRzIiwiJHByb3BzIiwiJGVsIiwicmVnaXN0ZXJFdmVudCIsImNhcHR1cmUiLCJmaWx0ZXIkJDEiLCJzZWxmRmlsdGVyIiwiX2V2ZW50cyIsIm5vdEluIiwiZXZlcnkiLCJ0b01lZGlhIiwicmVmJDEiLCJpbmRleCQkMSIsIm5vcm1hbGl6ZURhdGEiLCJfdWlkIiwiX2luaXREYXRhIiwiX2luaXRNZXRob2RzIiwiX2luaXRDb21wdXRlZHMiLCIkbW91bnQiLCIkbmFtZSIsImV4Y2x1ZGUiLCJNdXRhdGlvbk9ic2VydmVyIiwiJHJlc2V0Iiwib2JzZXJ2ZSIsImF0dHJpYnV0ZUZpbHRlciIsInN0YXRlQVBJIiwiY29tcG9uZW50cyIsImFyZ3NBcnJheSIsImZ1bmN0aW9uYWwiLCJpbnN0YW5jZSIsImdldENvbXBvbmVudCIsIiRkZXN0cm95IiwiaW5zdGFsbCIsIl9pbml0aWFsaXplZCIsImdldENvbXBvbmVudHMiLCJjb25uZWN0IiwibmFtZSQxIiwiY29tcG9uZW50QVBJIiwiJGVtaXQiLCJyZW1vdmVFbCIsIiRjcmVhdGUiLCIkdXBkYXRlIiwiJGdldENvbXBvbmVudCIsImRlZmluZVByb3BlcnRpZXMiLCIkY29udGFpbmVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiaW5zdGFuY2VBUEkiLCJDbGFzcyIsIlRvZ2dsYWJsZSIsInF1ZXVlZCIsImluaXRQcm9wcyIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwiaGlkZVByb3BzIiwiaGFzQW5pbWF0aW9uIiwiaGFzVHJhbnNpdGlvbiIsInRvZ2dsZUVsZW1lbnQiLCJhbmltYXRlJCQxIiwiX3RvZ2dsZUVsZW1lbnQiLCJ0b2dnbGVkIiwiaXNUb2dnbGVkIiwidW50b2dnbGVkIiwic2Nyb2xsIiwidG9nZ2xlTm93IiwidXBkYXRlQXJpYSIsIl90b2dnbGVIZWlnaHQiLCJfdG9nZ2xlQW5pbWF0aW9uIiwiX3RvZ2dsZUltbWVkaWF0ZSIsIl90b2dnbGUiLCJjaGFuZ2VkIiwiaW5uZXIiLCJsYXN0RWxlbWVudENoaWxkIiwiY3VycmVudEhlaWdodCIsImVuZEhlaWdodCIsIkFjY29yZGlvbiIsImNvbGxhcHNpYmxlIiwibXVsdGlwbGUiLCJjbHNPcGVuIiwiaXNJdGVtIiwiX3dyYXBwZXIiLCJBbGVydCIsImNsb3NlIiwic2VsQ2xvc2UiLCJDb3JlIiwic3RhcnRlZCIsInBhc3NpdmUiLCJob3ZlclNlbGVjdG9yIiwicmVnaXN0ZXJlZCIsIlZpZGVvIiwiYXV0b211dGUiLCJhdXRvcGxheSIsImluVmlldyIsInByZWxvYWQiLCJwbGF5ZXIiLCJDb3ZlciIsImhlaWdodCQkMSIsIndpZHRoJCQxIiwiY2xpZW50V2lkdGgiLCJjbGllbnRIZWlnaHQiLCJsb2FkZWRtZXRhZGF0YSIsIlBvc2l0aW9uIiwiY2xzUG9zIiwib2Zmc2V0JCQxIiwiYXhpcyIsImdldEF4aXMiLCJEcm9wIiwibW9kZSIsImJvdW5kYXJ5QWxpZ24iLCJkZWxheVNob3ciLCJkZWxheUhpZGUiLCJjbHNEcm9wIiwiaG92ZXJJZGxlIiwidHJhY2tlciIsImNsZWFyVGltZXJzIiwiaXNBY3RpdmUiLCJ0cnlTaG93IiwiaXNEZWxheWluZyIsInNob3dUaW1lciIsImlzUGFyZW50T2YiLCJoaWRlVGltZXIiLCJpc0NoaWxkT2YiLCJkcm9wIiwiYWxpZ25UbyIsIkRyb3Bkb3duIiwiRm9ybUN1c3RvbSIsImZpbGVzIiwiR2lmIiwiaW52aWV3IiwiTWFyZ2luIiwiZmlyc3RDb2x1bW4iLCJyb3dzIiwiZ2V0Um93cyIsInN0YWNrcyIsInJvdyIsImdldE9mZnNldCIsImxlZnREaW0iLCJHcmlkIiwibWFzb25yeSIsInBhcmFsbGF4IiwiY2xzU3RhY2siLCJ0cmFuc2xhdGVzIiwic3VtIiwibWF4Q29sdW1uSGVpZ2h0Iiwic2Nyb2xsZWQiLCJIZWlnaHRNYXRjaCIsIm1pbkhlaWdodCIsImJveFNpemluZyIsImhlaWdodHMiLCJIZWlnaHRWaWV3cG9ydCIsIm9mZnNldEJvdHRvbSIsInZpZXdwb3J0Iiwic3ZncyIsIlNWRyIsImljb24iLCJhc3NpZ24kJDEiLCJzdmciLCJnZXRTdmciLCJzeW1ib2xzIiwic3ltYm9sUmUiLCJwYXJzZVN5bWJvbHMiLCJpc0VxdWFsTm9kZSIsInN2Z0VsIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaWNvbnMiLCJzcGlubmVyIiwidG90b3AiLCJtYXJrZXIiLCJjbG9zZS1pY29uIiwiY2xvc2UtbGFyZ2UiLCJuYXZiYXItdG9nZ2xlLWljb24iLCJvdmVybGF5LWljb24iLCJwYWdpbmF0aW9uLW5leHQiLCJwYWdpbmF0aW9uLXByZXZpb3VzIiwic2VhcmNoLWljb24iLCJzZWFyY2gtbGFyZ2UiLCJzZWFyY2gtbmF2YmFyIiwic2xpZGVuYXYtbmV4dCIsInNsaWRlbmF2LW5leHQtbGFyZ2UiLCJzbGlkZW5hdi1wcmV2aW91cyIsInNsaWRlbmF2LXByZXZpb3VzLWxhcmdlIiwiSWNvbiIsImFkZGVkIiwiY21wIiwiaXNJY29uIiwiZ2V0SWNvbiIsImFwcGx5UnRsIiwiSWNvbkNvbXBvbmVudCIsIlNsaWRlbmF2IiwiU2VhcmNoIiwiQ2xvc2UiLCJTcGlubmVyIiwiSW1nIiwiZGF0YVNyYyIsImRhdGFTcmNzZXQiLCJkYXRhU2l6ZXMiLCJkYXRhV2lkdGgiLCJkYXRhSGVpZ2h0IiwiY2FjaGVLZXkiLCJpc0ltZyIsInRvUHgiLCJzdG9yYWdlIiwic2V0U3JjQXR0cnMiLCJjb2xvciIsIm1hdGNoZXMkJDEiLCJzaXplc1JlIiwibWF0Y2hNZWRpYSIsInNpemUiLCJzdWJzdHJpbmciLCJzaXplUmUiLCJhZGRpdGlvblJlIiwidXJsQ2FjaGUiLCJjYW52YXMiLCJnZXRDb250ZXh0IiwiZmlsbFN0eWxlIiwiZmlsbFJlY3QiLCJ0b0RhdGFVUkwiLCJnZXRQbGFjZWhvbGRlckltYWdlIiwiY3VycmVudFNyYyIsInNlc3Npb25TdG9yYWdlIiwiYWN0aXZlJDEiLCJMZWFkZXIiLCJmaWxsIiwibWVkaWEiLCJjbHNXcmFwcGVyIiwiY2xzSGlkZSIsImF0dHJGaWxsIiwid3JhcHBlciIsIkNvbnRhaW5lciIsIk1vZGFsIiwic2VsUGFuZWwiLCJlc2NDbG9zZSIsImJnQ2xvc2UiLCJvdmVybGF5IiwicGFuZWwiLCJ0cmFuc2l0aW9uRWxlbWVudCIsInRyYW5zaXRpb25EdXJhdGlvbiIsInJlZ2lzdGVyRXZlbnRzIiwiY2xzUGFnZSIsInNjcm9sbGJhcldpZHRoIiwiZm91bmQiLCJnZXRBY3RpdmUiLCJNb2RhbCQxIiwibW9kYWwiLCJkaWFsb2ciLCJhbGVydCIsImxhYmVscyIsImNvbmZpcm0iLCJyZXNvbHZlZCIsInByb21wdCIsIm9rIiwiTmF2IiwiTmF2YmFyIiwiZHJvcGRvd24iLCJkcm9wYmFyIiwiZHJvcGJhck1vZGUiLCJkcm9wYmFyQW5jaG9yIiwiZHJvcGRvd25zIiwiZ2V0RHJvcGRvd24iLCJ0cmFuc2l0aW9uVG8iLCJuZXdIZWlnaHQiLCJvbGRIZWlnaHQiLCJjbGlwIiwiT2ZmY2FudmFzIiwiY2xzQ29udGFpbmVyIiwiY2xzRmxpcCIsImNsc0NvbnRlbnQiLCJjbHNDb250ZW50QW5pbWF0aW9uIiwiY2xzU2lkZWJhckFuaW1hdGlvbiIsImNsc01vZGUiLCJjbHNPdmVybGF5IiwiT3ZlcmZsb3dBdXRvIiwiUmVzcG9uc2l2ZSIsIlNjcm9sbCIsImRvY0hlaWdodCIsIndpbkhlaWdodCIsInN0YXJ0WSIsImN1cnJlbnRZIiwiU2Nyb2xsc3B5IiwicmVwZWF0IiwiaW5WaWV3Q2xhc3MiLCJlbERhdGEiLCJ0b2dnbGVzIiwiU2Nyb2xsc3B5TmF2IiwiU3RpY2t5IiwiY2xzQWN0aXZlIiwiY2xzSW5hY3RpdmUiLCJjbHNGaXhlZCIsImNsc0JlbG93Iiwic2VsVGFyZ2V0Iiwid2lkdGhFbGVtZW50Iiwic2hvd09uVXAiLCJwbGFjZWhvbGRlciIsImJvdHRvbU9mZnNldCIsInBhcnNlUHJvcCIsImluYWN0aXZlIiwic2Nyb2xsWSIsInByb3BPZmZzZXQiLCJTd2l0Y2hlciIsInN3aXBpbmciLCJhdHRySXRlbSIsImNvbm5lY3RzIiwiZ2V0U2VsZWN0aW9uIiwiaGFzUHJldiIsIlRhYiIsIlRvZ2dsZSIsImNvcmUiLCJDb3VudGRvd24iLCJ0aW1lc3BhbiIsImRpZ2l0cyIsImRpZ2l0Iiwic3R5bGUkMSIsInRhcmdldENsYXNzIiwiQW5pbWF0ZSIsInNoZWV0IiwiaW5zZXJ0UnVsZSIsInByb3BzRnJvbSIsIm9sZFNjcm9sbFkiLCJwcm9wc1RvIiwiZ2V0UG9zaXRpb25XaXRoTWFyZ2luIiwicG9pbnRlckV2ZW50cyIsIkZpbHRlciIsInNlbEFjdGl2ZSIsImFjdGl2ZXMiLCJpc0VxdWFsTGlzdCIsInNldFN0YXRlIiwiZ2V0U3RhdGUiLCJtZXJnZVN0YXRlIiwiYXR0ciQkMSIsInN0YXRlRmlsdGVyIiwicmVmX3NvcnQiLCJzdGF0ZVNvcnQiLCJzdGF0ZU9yZGVyIiwiZ2V0RmlsdGVyIiwiZ3JvdXAiLCJtYXRjaEZpbHRlciIsImFwcGx5JCQxIiwiZ2V0U2VsZWN0b3IiLCJzb3J0ZWQiLCJsb2NhbGVDb21wYXJlIiwic29ydEl0ZW1zIiwiZmlsdGVyQnkiLCJsaXN0QSIsImxpc3RCIiwiQW5pbWF0aW9ucyIsInNsaWRlIiwidHJhbnNmb3JtIiwidHJhbnNsYXRlIiwidHJhbnNsYXRlZCIsInNjYWxlM2QiLCJBbmltYXRpb25zJDEiLCJmYWRlIiwidHJpZ2dlclVwZGF0ZSIsIlNsaWRlciIsImF1dG9wbGF5SW50ZXJ2YWwiLCJwYXVzZU9uSG92ZXIiLCJzdGFydEF1dG9wbGF5Iiwic3RvcEF1dG9wbGF5IiwiaXNIb3ZlcmluZyIsInByZXZlbnRDYXRjaCIsInNsaWRlc1NlbGVjdG9yIiwiZHJhZyIsIl90cmFuc2l0aW9uZXIiLCJnZXREaXN0YW5jZSIsImRyYWdnaW5nIiwicHJldkluZGV4IiwidW5iaW5kTW92ZSIsIm1vdmUiLCJkaXN0YW5jZSIsInNsaWRlcyIsImRpcyIsIm5leHRJbmRleCIsIl9nZXREaXN0YW5jZSIsIml0ZW1TaG93biIsImVkZ2UiLCJfdHJhbnNsYXRlIiwiX3Nob3ciLCJkaXJDaGFuZ2UiLCJzZWxOYXYiLCJuYXYiLCJuYXZJdGVtU2VsZWN0b3IiLCJuYXZJdGVtcyIsIm1heEluZGV4IiwidXBkYXRlTmF2IiwiZ2V0VmFsaWRJbmRleCIsImNsc0FjdGl2YXRlZCIsInZlbG9jaXR5IiwiVHJhbnNpdGlvbmVyIiwidHJhbnNpdGlvbk9wdGlvbnMiLCJzcGVlZFVwIiwic2VsTGlzdCIsIml0ZW1zaG93biIsInF1ZXVlSW5kZXgiLCJnZXREaXJlY3Rpb24iLCJfZ2V0VHJhbnNpdGlvbmVyIiwidHJhbnNpdGlvbmVyIiwiU2xpZGVzaG93IiwiQW5pbWF0aW9ucyQkMSIsIml0ZW1zaG93IGl0ZW1oaWRlIGl0ZW1zaG93biBpdGVtaGlkZGVuIiwiaXRlbXNob3ciLCJiZWZvcmVpdGVtc2hvdyIsIml0ZW1oaWRkZW4iLCJMaWdodGJveFBhbmVsIiwiZGVsYXlDb250cm9scyIsInZpZGVvQXV0b3BsYXkiLCJ0ZW1wbGF0ZSIsImhpZGVDb250cm9scyIsImdldEl0ZW0iLCJsb2FkSXRlbSIsImFsdCIsInNldEl0ZW0iLCJzZXRFcnJvciIsInZpZGVvIiwicG9zdGVyIiwidmlkZW9XaWR0aCIsInZpZGVvSGVpZ2h0Iiwic2V0SWZyYW1lIiwiZ2V0SWZyYW1lIiwiZW5jb2RlVVJJIiwid2l0aENyZWRlbnRpYWxzIiwicmVmX3Jlc3BvbnNlIiwic2hvd0NvbnRyb2xzIiwiY29udHJvbHNUaW1lciIsIkxpZ2h0Ym94IiwibGlnaHRib3hQYW5lbCIsIl9kZXN0cm95IiwiY29udGFpbmVycyIsIk5vdGlmaWNhdGlvbiIsImNsc0Nsb3NlIiwiY2xzTXNnIiwiY2xvc2VBbGwiLCJpbW1lZGlhdGUiLCJyZW1vdmVGbiIsInByb3BzJDEiLCJQYXJhbGxheCIsImJnUG9zIiwiaXNDb2xvciIsImlzQ3NzUHJvcCIsInN0ZXBzIiwiY292ZXJzIiwiZG93biIsImJnUHJvcHMiLCJiZyIsImJhY2tncm91bmRTaXplIiwiX2ltYWdlIiwiZGltRWwiLCJuYXR1cmFsV2lkdGgiLCJuYXR1cmFsSGVpZ2h0Iiwic3BhbiIsImJnUG9zRmxvYXQiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiZ2V0Q3NzIiwiY3NzJCQxIiwiZ2V0VmFsdWUiLCJyZWYkMiIsImdldFN0ZXAiLCJQYXJhbGxheCQxIiwiZWFzZSQxIiwiU2xpZGVyUmVhY3RpdmUiLCJnZXRMZWZ0IiwiY2VudGVyIiwiZ2V0RWxMZWZ0IiwiY2VudGVyRWwiLCJnZXRNYXgiLCJnZXRXaWR0aCIsInRyaWdnZXJVcGRhdGUkMSIsIlNsaWRlciQxIiwic2V0cyIsInVwZGF0ZVRyYW5zbGF0ZXMiLCJnZXRJdGVtSW4iLCJnZXRBY3RpdmVzIiwic2xpZGVMZWZ0IiwiYXZnV2lkdGgiLCJsZWZ0Q2VudGVyIiwic2xpZGVXaWR0aCIsInJlb3JkZXIiLCJzbGlkZUluZGV4IiwiU2xpZGVyUGFyYWxsYXgiLCJzZWxJdGVtIiwicmVmX2RldGFpbCIsImdldEN1cnJlbnQiLCJpc0luIiwib2JqJDEiLCJvYmokMiIsIkFuaW1hdGlvbnMkMiIsInB1bGwiLCJTbGlkZXNob3ckMSIsIm1heEhlaWdodCIsImhndCIsIlNvcnRhYmxlIiwiY2xzSXRlbSIsImNsc1BsYWNlaG9sZGVyIiwiY2xzRHJhZyIsImNsc0RyYWdTdGF0ZSIsImNsc0Jhc2UiLCJjbHNOb0RyYWciLCJjbHNFbXB0eSIsImNsc0N1c3RvbSIsInRvdWNoZWQiLCJvdXRlckhUTUwiLCJlbGVtZW50RnJvbVBvaW50Iiwic29ydGFibGUiLCJnZXRTb3J0YWJsZSIsInByZXZpb3VzIiwiaXNQcmVkZWNlc3NvciIsIlRvb2x0aXAiLCJ0aXRsZSIsIl9oYXNUaXRsZSIsImFyaWEtZXhwYW5kZWQiLCJfdW5iaW5kIiwidG9vbHRpcCIsIlVwbG9hZCIsImFsbG93IiwiY2xzRHJhZ292ZXIiLCJjb25jdXJyZW50IiwibWF4U2l6ZSIsIm1pbWUiLCJtc2dJbnZhbGlkTWltZSIsIm1zZ0ludmFsaWROYW1lIiwibXNnSW52YWxpZFNpemUiLCJiZWZvcmVBbGwiLCJjb21wbGV0ZUFsbCIsImxvYWRFbmQiLCJsb2FkU3RhcnQiLCJ1cGxvYWQiLCJ0cmFuc2ZlciIsImRhdGFUcmFuc2ZlciIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiY2h1bmtzIiwiY2h1bmsiLCJGb3JtRGF0YSIsIm11dGF0aW9ucyIsImFwcGx5TXV0YXRpb24iLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiY2hhcmFjdGVyRGF0YSIsIm11dGF0aW9uIiwiYWRkZWROb2RlcyIsInJlbW92ZWROb2RlcyIsImkkMSIsImFwcGx5Q2hpbGRMaXN0IiwiYXR0cmlidXRlTmFtZSIsImFwcGx5QXR0cmlidXRlIiwiYm9vdCJdLCJtYXBwaW5ncyI6IkFBQUEsYUFFQSxTQUFBQSxVQUFBQyxJQUFBQyxVQUFBQyxjQUNBLE1BQUFDLE9BQUFDLFNBQUFDLGNBQUEsVUFDQUYsT0FBQUcsS0FBQSxrQkFDQUgsT0FBQUksSUFBQVAsSUFDQUcsT0FBQUssT0FBQSxPQUVBQyxJQUFBUixZQUNBRSxPQUFBRixVQUFBQSxnQkFHQVEsSUFBQVAsZUFDQUMsT0FBQU8sWUFBQVIsY0FHQUUsU0FBQU8scUJBQUEsUUFBQSxHQUFBQyxZQUFBVCxRQUdBLFNBQUFVLFNBQUFDLFNBQUFDLFVBQ0FYLFNBQUFZLGNBQUFGLFVBRUFHLFVBQUFGLFNBR0EsU0FBQUcsWUFBQUosU0FBQUMsVUFDQSxNQUFBSSxRQUFBZixTQUFBWSxjQUFBRixVQUNBTSxJQUFBLElBQUFDLGVBQUFOLGdCQUFBLEtBQ0FJLFFBQUFGLFVBQUFFLFFBQUFGLFVBQUFLLFFBQUFGLElBQUEsS0N4QkEsU0FBQUcsbUJBQ0EsTUFBQUMsSUFBQXBCLFNBQUFxQixlQUFBLFNBRUFDLFdBQUEsSUFBQUMsV0FBQUgsS0FDQUksTUFBQSxFQUNBQyxZQUFBLEdBQ0FDLFlBQUEsVUFDQUMsU0FBQSxJQVVBM0IsU0FBQXFCLGVBQUEsa0JBQUFPLFFBUEEsV0FDQSxN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QixNQUNBQSxLQUFBQSxLQUFBczZCLGtCQUNBdDZCLE1BQUEsQ0FDQSxJQUFBbmQsS0FBQW1kLEtBQUF3dUMsbUJBQ0F1aUIsU0FBQS93RCxLQUFBcnlCLElBQ0FxeUIsS0FBQW5kLE1BMUdBLHFCQUFBdGMsU0FJQXRDLFNBQUEyM0MsS0FFQXBiLE9BSUEsSUFBQTI4QyxpQkFBQSxXQUVBbDVFLFNBQUEyM0MsT0FDQS95QyxLQUFBdXlFLGFBQ0E1NkMsVUFHQTY4QyxRQUFBcDVFLFVBQUFxNUYsV0FBQSxFQUFBQyxTQUFBLEtBOHZSQVMsQ0FBQTEyRixPQUdBQSIsImZpbGUiOiJzY3JpcHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gZ2V0U2NyaXB0KHVybCwgaW50ZWdyaXR5LCBjcm9zc19vcmlnaW4pIHtcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgIHNjcmlwdC50eXBlID0gXCJ0ZXh0L2phdmFzY3JpcHRcIjtcbiAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgIHNjcmlwdC5kZWZlciA9IHRydWU7XG5cbiAgICBpZiAoaW50ZWdyaXR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2NyaXB0LmludGVncml0eSA9IGludGVncml0eTtcbiAgICB9XG5cbiAgICBpZiAoY3Jvc3Nfb3JpZ2luICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2NyaXB0LmNyb3NzT3JpZ2luID0gY3Jvc3Nfb3JpZ2luO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZChzY3JpcHQpO1xufVxuXG5mdW5jdGlvbiBzZXRDbGFzcyhzZWxlY3RvciwgbXlfY2xhc3MpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgLy8gY29uc29sZS5sb2coZWxlbWVudCk7XG4gICAgZWxlbWVudC5jbGFzc05hbWUgPSBteV9jbGFzcztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2xhc3Moc2VsZWN0b3IsIG15X2NsYXNzKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYChefCApJHtteV9jbGFzc30oJHwgKWAsIFwiZ1wiKTtcbiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UocmVnLCBcIiBcIik7XG59XG5cbi8vIGhpZGUgdGhlIGh0bWwgd2hlbiB0aGUgcGFnZSBsb2FkcywgYnV0IG9ubHkgaWYganMgaXMgdHVybmVkIG9uLlxuc2V0Q2xhc3MoXCJodG1sXCIsIFwicHJldmVudC1mb3VjXCIpO1xuXG4vLyB3aGVuIHRoZSBET00gaGFzIGZpbmlzaGVkIGxvYWRpbmcsIHVuaGlkZSB0aGUgaHRtbFxuZG9jdW1lbnQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImludGVyYWN0aXZlXCIpIHtcbiAgICAgICAgcmVtb3ZlQ2xhc3MoXCJodG1sXCIsIFwicHJldmVudC1mb3VjXCIpO1xuICAgICAgICBnZXRTY3JpcHQoXG4gICAgICAgICAgICBcImh0dHBzOi8vcHJvLmZvbnRhd2Vzb21lLmNvbS9yZWxlYXNlcy92NS4wLjEzL2pzL2FsbC5qc1wiLCAvLyBVUkxcbiAgICAgICAgICAgIFwic2hhMzg0LWQ4NExHZzJwbTlLaFI0bUNBczNOMjlHUTRPWU55K0srRkJIWDhXaGltSHBQbTg2YzgzOSsrTURBQmVnclozZ25cIiwgLy8gSW50ZWdyaXR5XG4gICAgICAgICAgICBcImFub255bW91c1wiIC8vIENyb3NzLW9yaWdpblxuICAgICAgICApO1xuICAgICAgICBnZXRTY3JpcHQoXG4gICAgICAgICAgICBcImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2FjZS8xLjMuMy9hY2UuanNcIlxuICAgICAgICApO1xuICAgICAgICBnZXRTY3JpcHQoXG4gICAgICAgICAgICBcImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vZmxhdHBpY2tyXCJcbiAgICAgICAgKTtcbiAgICB9XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGV4cG9ydGVkIGVycm9yX3R5cGV3cml0ZXIgKi9cblxuZnVuY3Rpb24gZXJyb3JfdHlwZXdyaXRlcigpIHtcbiAgICBjb25zdCBhcHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVycm9yXCIpO1xuXG4gICAgY29uc3QgdHlwZXdyaXRlciA9IG5ldyBUeXBld3JpdGVyKGFwcCwge1xuICAgICAgICBcImxvb3BcIjogZmFsc2UsXG4gICAgICAgIFwiZGVsZXRlU3BlZWRcIjogNDAsXG4gICAgICAgIFwidHlwaW5nU3BlZWRcIjogXCJuYXR1cmFsXCIsXG4gICAgICAgIFwiZGV2TW9kZVwiOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gY2xvc2VXaW5kb3coKSB7XG4gICAgICAgIGNvbnN0IGFwcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid2luXCIpO1xuICAgICAgICBjb25zdCBjdXJyZW50X2NsYXNzID0gYXBwLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpO1xuICAgICAgICBhcHAuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgYCR7Y3VycmVudF9jbGFzcyB9IHVrLWFuaW1hdGlvbi1zY2FsZS11cCB1ay1hbmltYXRpb24tcmV2ZXJzZWApO1xuICAgICAgICB0eXBld3JpdGVyLnN0b3AoKTtcbiAgICB9XG5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRlcm1pbmFsLWNsb3NlXCIpLm9uY2xpY2sgPSBjbG9zZVdpbmRvdztcblxuICAgIHR5cGV3cml0ZXIuYXBwZW5kVGV4dChcIlB5dGhvbiAzLjYuNCAoZGVmYXVsdCwgSmFuICA1IDIwMTgsIDAyOjM1OjQwKVxcblwiKVxuICAgICAgICAuYXBwZW5kVGV4dChcIltHQ0MgNy4yLjEgMjAxNzEyMjRdIG9uIGRhcndpblxcblwiKVxuICAgICAgICAuYXBwZW5kVGV4dChcIlR5cGUgXFxcImhlbHBcXFwiLCBcXFwiY29weXJpZ2h0XFxcIiwgXFxcImNyZWRpdHNcXFwiIG9yIFxcXCJsaWNlbnNlXFxcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cXG5cIilcbiAgICAgICAgLmFwcGVuZFRleHQoXCI+Pj4gXCIpXG4gICAgICAgIC5wYXVzZUZvcigxMDAwKVxuICAgICAgICAudHlwZVN0cmluZyhcImltcG9yIHJlcXVlc3RzXCIpXG4gICAgICAgIC5kZWxldGVDaGFycyg5KVxuICAgICAgICAudHlwZVN0cmluZyhcInQgcmVxdWVzdHNcXG5cIilcbiAgICAgICAgLmFwcGVuZFRleHQoXCI+Pj4gXCIpXG4gICAgICAgIC5wYXVzZUZvcig3NTApXG4gICAgICAgIC5jaGFuZ2VTZXR0aW5ncyh7XCJ0eXBpbmdTcGVlZFwiOiBcIm5hdHVyYWxcIn0pXG4gICAgICAgIC50eXBlU3RyaW5nKGByZXNwb25zZSA9IHJlcXVlc3RzLiR7IHdpbmRvdy5fUmVxdWVzdE1ldGhvZCB9KCdodHRwczovL3B5dGhpbWApXG4gICAgICAgIC5kZWxldGVDaGFycygyKVxuICAgICAgICAudHlwZVN0cmluZyhcIm9uZGlzY29yZC5jb24vXCIpXG4gICAgICAgIC5kZWxldGVDaGFycygyKVxuICAgICAgICAudHlwZVN0cmluZyhgbSR7IHdpbmRvdy5fUGF0aCB9JylcXG5gKVxuICAgICAgICAucGF1c2VGb3IoMTAwMClcbiAgICAgICAgLmFwcGVuZFRleHQoYCZsdDtSZXNwb25zZSBbJHsgd2luZG93Ll9Db2RlIH1dJmd0O1xcbj4+PiBgKVxuICAgICAgICAudHlwZVN0cmluZyhcIiMgaG1tbW1cIilcbiAgICAgICAgLnBhdXNlRm9yKDEwMDApXG4gICAgICAgIC5kZWxldGVDaGFycyg3KVxuICAgICAgICAucGF1c2VGb3IoMTAwMClcbiAgICAgICAgLnR5cGVTdHJpbmcoXCJyZXNwb25zZS50ZXh0XFxuXCIpXG4gICAgICAgIC5hcHBlbmRUZXh0KGAkeyB3aW5kb3cuX0Vycm9yTXNnIH1cXG4+Pj4gYClcbiAgICAgICAgLnN0YXJ0KCk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuKGZ1bmN0aW9uKCl7IC8vIFVzZSBhIGNsb3N1cmUgdG8gYXZvaWQgcG9sbHV0aW5nIGdsb2JhbCBzY29wZVxuICAgIC8vIFRPRE86IFRoaXMgbmVlZHMgdG8gYmUgYnVpbHQgaW50byB0aGUgamFtcyBzeXN0ZW1cbiAgICBjb25zdCBzdGFydGphbSA9IG5ldyBEYXRlKERhdGUuVVRDKDIwMTgsIDIsIDIzKSk7XG4gICAgY29uc3QgZW5kamFtID0gbmV3IERhdGUoRGF0ZS5VVEMoMjAxOCwgMiwgMjYpKTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgbGV0IGdvYWw7XG5cbiAgICBpZiAobm93ICsgMTAwMCA8IGVuZGphbS5nZXRUaW1lKCkpIHsgLy8gT25seSBkbyBhbnl0aGluZyBpZiB0aGUgamFtIGhhc24ndCBlbmRlZFxuICAgICAgICBVSWtpdC5ub3RpZmljYXRpb24oIC8vIFNwYXduIHRoZSBub3RpZmljYXRpb25cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcIm1lc3NhZ2VcIjogXCJcIlxuICAgICAgICAgICAgICAgICAgKyBcIjxkaXYgY2xhc3M9J3VrLXRleHQtY2VudGVyJz5cIlxuICAgICAgICAgICAgICAgICAgKyBcIiAgICA8c3BhbiBpZD1cXFwiY291bnRkb3duLXRpdGxlXFxcIiBjbGFzcz1cXFwidWstdGV4dC1jZW50ZXJcXFwiPlwiXG4gICAgICAgICAgICAgICAgICArIFwiICAgICAgICA8YSBocmVmPVxcXCIvaW5mby9qYW1zXFxcIj5Db2RlIEphbTwvYT4gQ291bnRkb3duXCJcbiAgICAgICAgICAgICAgICAgICsgXCIgICAgPC9zcGFuPlwiXG4gICAgICAgICAgICAgICAgICArIFwiICAgIDxwIGNsYXNzPSd1ay10ZXh0LWxhcmdlJyBpZD1cXFwiY291bnRkb3duLXJlbWFpbmluZ1xcXCI+Li4uPC9wPlwiXG4gICAgICAgICAgICAgICAgICArIFwiPHNtYWxsIHN0eWxlPSdmb250LXNpemU6IDAuNmVtOyc+KFRhcC9jbGljayB0byBkaXNtaXNzKTwvc21hbGw+XCJcbiAgICAgICAgICAgICAgICAgICsgXCI8L2Rpdj5cIixcbiAgICAgICAgICAgICAgICBcInBvc1wiOiBcImJvdHRvbS1yaWdodFwiLFxuICAgICAgICAgICAgICAgIFwidGltZW91dFwiOiBlbmRqYW0gLSBub3dcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBoZWFkaW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb3VudGRvd24tdGl0bGVcIik7XG5cbiAgICAgICAgaWYgKG5vdyA+IHN0YXJ0amFtLmdldFRpbWUoKSkgeyAvLyBKYW0ncyBhbHJlYWR5IHN0YXJ0ZWRcbiAgICAgICAgICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gXCJDdXJyZW50IDxhIGhyZWY9XFxcIi9pbmZvL2phbXNcXFwiPmNvZGUgamFtPC9hPiBlbmRzIGluLi4uXCI7XG4gICAgICAgICAgICBnb2FsID0gZW5kamFtLmdldFRpbWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gXCJOZXh0IDxhIGhyZWY9XFxcIi9pbmZvL2phbXNcXFwiPmNvZGUgamFtPC9hPiBzdGFydHMgaW4uLi5cIjtcbiAgICAgICAgICAgIGdvYWwgPSBzdGFydGphbS5nZXRUaW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWZyZXNoQ291bnRkb3duID0gc2V0SW50ZXJ2YWwoKCkgPT4geyAvLyBDcmVhdGUgYSByZXBlYXRpbmcgdGFza1xuICAgICAgICAgICAgbGV0IGRlbHRhID0gZ29hbCAtIERhdGUubm93KCk7IC8vIFRpbWUgdW50aWwgdGhlIGdvYWwgaXMgbWV0XG5cbiAgICAgICAgICAgIGlmIChkZWx0YSA8PSAxMDAwKSB7IC8vIEdvYWwgaGFzIGJlZW4gbWV0LCBiZXN0IHJlbG9hZFxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVmcmVzaENvdW50ZG93bik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZGF5cyA9IE1hdGguZmxvb3IoZGVsdGEgLyAoMjQgKiA2MCAqIDYwICogMTAwMCkpO1xuICAgICAgICAgICAgZGVsdGEgLT0gZGF5cyAqICgyNCAqIDYwICogNjAgKiAxMDAwKTtcblxuICAgICAgICAgICAgbGV0IGhvdXJzID0gTWF0aC5mbG9vcihkZWx0YSAvICg2MCAqIDYwICogMTAwMCkpO1xuICAgICAgICAgICAgZGVsdGEgLT0gaG91cnMgKiAoNjAgKiA2MCAqIDEwMDApO1xuXG4gICAgICAgICAgICBsZXQgbWludXRlcyA9IE1hdGguZmxvb3IoZGVsdGEgLyAoNjAgKiAxMDAwKSk7XG4gICAgICAgICAgICBkZWx0YSAtPSBtaW51dGVzICogKDYwICogMTAwMCk7XG5cbiAgICAgICAgICAgIGxldCBzZWNvbmRzID0gTWF0aC5mbG9vcihkZWx0YSAvIDEwMDApO1xuXG4gICAgICAgICAgICBpZiAoZGF5cyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgZGF5cyA9IGAwJHtkYXlzfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChob3VycyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgaG91cnMgPSBgMCR7aG91cnN9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1pbnV0ZXMgPCAxMCkge1xuICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBgMCR7bWludXRlc31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2Vjb25kcyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgc2Vjb25kcyA9IGAwJHtzZWNvbmRzfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb3VudGRvd24tcmVtYWluaW5nXCIpLmlubmVySFRNTCA9IGAke2RheXN9OiR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfWA7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7IC8vIE5vdGlmaWNhdGlvbiB3YXMgcHJvYmFibHkgY2xvc2VkLCBzbyB3ZSBjYW4gc3RvcCBjb3VudGluZ1xuICAgICAgICAgICAgICAgIHJldHVybiBjbGVhckludGVydmFsKHJlZnJlc2hDb3VudGRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCA1MDApO1xuICAgIH1cbn0pKCk7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXhwb3J0ZWQgSmFtQWN0aW9ucyAqL1xuXG5jbGFzcyBKYW1BY3Rpb25zIHtcbiAgICBjb25zdHJ1Y3Rvcih1cmwsIGNzcmZfdG9rZW4pIHtcbiAgICAgICAgdGhpcy51cmwgPSB1cmw7XG4gICAgICAgIHRoaXMuY3NyZl90b2tlbiA9IGNzcmZfdG9rZW47XG4gICAgfVxuXG4gICAgc2VuZChhY3Rpb24sIG1ldGhvZCwgZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgZGF0YVtcImFjdGlvblwiXSA9IGFjdGlvbjtcblxuICAgICAgICAkLmFqYXgodGhpcy51cmwsIHtcbiAgICAgICAgICAgIFwiZGF0YVwiOiBkYXRhLFxuICAgICAgICAgICAgXCJkYXRhVHlwZVwiOiBcImpzb25cIixcbiAgICAgICAgICAgIFwiaGVhZGVyc1wiOiB7XCJYLUNTUkZUb2tlblwiOiB0aGlzLmNzcmZfdG9rZW59LFxuICAgICAgICAgICAgXCJtZXRob2RcIjogbWV0aG9kLFxuICAgICAgICB9KS5kb25lKGRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKFwiZXJyb3JfY29kZVwiIGluIGRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZmFsc2UsIGRhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sodHJ1ZSwgZGF0YSk7XG4gICAgICAgIH0pLmZhaWwoKCkgPT4gY2FsbGJhY2soZmFsc2UpKTtcbiAgICB9XG5cbiAgICBzZW5kX2pzb24oYWN0aW9uLCBtZXRob2QsIGRhdGEsIGNhbGxiYWNrKSB7XG4gICAgICAgIGRhdGFbXCJhY3Rpb25cIl0gPSBhY3Rpb247XG5cbiAgICAgICAgJC5hamF4KHRoaXMudXJsLCB7XG4gICAgICAgICAgICBcImRhdGFcIjogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgICAgICAgICBcImRhdGFUeXBlXCI6IFwianNvblwiLFxuICAgICAgICAgICAgXCJoZWFkZXJzXCI6IHtcIlgtQ1NSRlRva2VuXCI6IHRoaXMuY3NyZl90b2tlbn0sXG4gICAgICAgICAgICBcIm1ldGhvZFwiOiBtZXRob2RcbiAgICAgICAgfSkuZG9uZShkYXRhID0+IHtcbiAgICAgICAgICAgIGlmIChcImVycm9yX2NvZGVcIiBpbiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGZhbHNlLCBkYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHRydWUsIGRhdGEpO1xuICAgICAgICB9KS5mYWlsKCgpID0+IGNhbGxiYWNrKGZhbHNlKSk7XG4gICAgfVxuXG4gICAgc2V0X3N0YXRlKGphbSwgc3RhdGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwic3RhdGVcIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiamFtXCI6IGphbSxcbiAgICAgICAgICAgICAgICBcInN0YXRlXCI6IHN0YXRlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRfcXVlc3Rpb25zKGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwicXVlc3Rpb25zXCIsXG4gICAgICAgICAgICBcIkdFVFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGNyZWF0ZV9xdWVzdGlvbihkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmRfanNvbihcbiAgICAgICAgICAgIFwicXVlc3Rpb25zXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZV9xdWVzdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJxdWVzdGlvblwiLFxuICAgICAgICAgICAgXCJERUxFVEVcIixcbiAgICAgICAgICAgIHtcImlkXCI6IGlkfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXNzb2NpYXRlX3F1ZXN0aW9uKGZvcm0sIHF1ZXN0aW9uLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImFzc29jaWF0ZV9xdWVzdGlvblwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJmb3JtXCI6IGZvcm0sXG4gICAgICAgICAgICAgICAgXCJxdWVzdGlvblwiOiBxdWVzdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGRpc2Fzc29jaWF0ZV9xdWVzdGlvbihmb3JtLCBxdWVzdGlvbiwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJkaXNhc3NvY2lhdGVfcXVlc3Rpb25cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiZm9ybVwiOiBmb3JtLFxuICAgICAgICAgICAgICAgIFwicXVlc3Rpb25cIjogcXVlc3Rpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjcmVhdGVfaW5mcmFjdGlvbihpZCwgcmVhc29uLCBudW1iZXIsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiaW5mcmFjdGlvblwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJwYXJ0aWNpcGFudFwiOiBpZCxcbiAgICAgICAgICAgICAgICBcInJlYXNvblwiOiByZWFzb24sXG4gICAgICAgICAgICAgICAgXCJudW1iZXJcIjogbnVtYmVyXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkZWxldGVfaW5mcmFjdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJpbmZyYWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRFTEVURVwiLFxuICAgICAgICAgICAge1wiaWRcIjogaWR9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhcHByb3ZlX2FwcGxpY2F0aW9uKGlkLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImFwcHJvdmVfYXBwbGljYXRpb25cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1wiaWRcIjogaWR9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1bmFwcHJvdmVfYXBwbGljYXRpb24oaWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwidW5hcHByb3ZlX2FwcGxpY2F0aW9uXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcImlkXCI6IGlkfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVfdGVhbXMoamFtLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImdlbmVyYXRlX3RlYW1zXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcImphbVwiOiBqYW19LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjcmVhdGVfdGVhbShqYW0sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiY3JlYXRlX3RlYW1cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1wiamFtXCI6IGphbX0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlcm9sbF90ZWFtKHRlYW0sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwicmVyb2xsX3RlYW1cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1widGVhbVwiOiB0ZWFtfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZGVsZXRlX3RlYW0odGVhbSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJ0ZWFtXCIsXG4gICAgICAgICAgICBcIkRFTEVURVwiLFxuICAgICAgICAgICAge1widGVhbVwiOiB0ZWFtfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0X3RlYW1fbWVtYmVyKGphbSwgbWVtYmVyLCB0ZWFtLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcInNldF90ZWFtX21lbWJlclwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XCJqYW1cIjogamFtLCBcIm1lbWJlclwiOiBtZW1iZXIsIFwidGVhbVwiOiB0ZWFtfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGV4cG9ydGVkIHJldmlzaW9uX2RpZmYgKi9cblxuZnVuY3Rpb24gcmV2aXNpb25fZGlmZihyZXZpc2lvbnMpIHtcbiAgICBjb25zdCBidXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInRkIGlucHV0XCIpOyAvLyBGZXRjaCBhbGwgcmFkaW8gYnV0dG9uc1xuICAgIGNvbnN0IGlkX3JlZyA9IC9jb21wYXJlLShiZWZvcmV8YWZ0ZXIpLShbXFx3fC1dKykvOyAvLyBNYXRjaGVzIGNvbXBhcmUtYWZ0ZXIvYmVmb3JlLUlEXG5cblxuICAgIGZ1bmN0aW9uIGdldFJldmlzaW9uSWQoZWxlbWVudCl7XG4gICAgICAgIGNvbnN0IGUgPSBlbGVtZW50LmlkLm1hdGNoKGlkX3JlZyk7IC8vIE1hdGNoIElEIHdpdGggUmVnRXhwXG4gICAgICAgIHJldHVybiBbZVsxXSwgZVsyXV07IC8vIGUgaXMgaW4gZm9ybWF0IG9mIFtmdWxsIGlkLCBhZnRlci9iZWZvcmUsIElEXSB3ZSBvbmx5IHdhbnQgSUQgJiBtb2RlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UmV2aXNpb24oaWQpIHtcbiAgICAgICAgY29uc3QgZSA9IHJldmlzaW9ucy5maWx0ZXIoKHgpID0+IHtcbiAgICAgICAgICAgIC8vIEZpbHRlciB0aHJvdWdoIGFsbCByZXZpc2lvbnMgdG8gZmluZCB0aGUgc2VsZWN0ZWQgb25lIChyZXZpc2lvbnMgaW4gZGVjbGFyZWQgaW4gdGhlIHRlbXBsYXRlKVxuICAgICAgICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGVbMF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmFkaW9CdXR0b25DaGVja2VkKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWQgPSBnZXRSZXZpc2lvbklkKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCByZXYgPSBnZXRSZXZpc2lvbihpZFsxXSk7XG4gICAgICAgIGlmIChpZFswXSA9PT0gXCJhZnRlclwiKXtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgKiBEZXNlbGVjdCB0aGUgb3Bwb3NpdGUgY2hlY2tib3ggdG8gdGhlIG9uZSB3aGljaCBoYXMgYmVlbiBjaGVja2VkXG4gICAgICAgICAgICAgKiBiZWNhdXNlIHdlIGRvbid0IHdhbnQgY2hlY2tpbmcgb2YgdGhlIHNhbWUgcmV2aXNpb25cbiAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjY29tcGFyZS1iZWZvcmUtJHtpZFsxXX1gKS5jaGVja2VkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChnZXRSZXZpc2lvbklkKGUpWzBdID09PSBcImFmdGVyXCIgJiYgZS5pZCAhPT0gZWxlbWVudC5pZCkgeyAvLyBEZXNlbGVjdCBhbGwgY2hlY2tib3hlcyBpbiB0aGUgc2FtZSByb3dcbiAgICAgICAgICAgICAgICAgICAgZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7IC8vIFRoaXMgZWxzZSBkb2VzIHRoZSBzYW1lIGFzIGFib3ZlIGJ1dCBmb3IgdGhlIGJlZm9yZSBjb2x1bW5cbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNjb21wYXJlLWFmdGVyLSR7aWRbMV19YCkuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgYnV0dG9ucy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGdldFJldmlzaW9uSWQoZSlbMF0gPT09IFwiYmVmb3JlXCIgJiYgZS5pZCAhPT0gZWxlbWVudC5pZCkge1xuICAgICAgICAgICAgICAgICAgICBlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhhdCB5b3UgZG8gbm90IGNvbXBhcmUgYSBuZXcgcmV2aXNpb24gd2l0aCBhbiBvbGQgb25lXG4gICAgICAgICAgICAgICAgaWYgKGdldFJldmlzaW9uSWQoZSlbMF0gPT09IFwiYWZ0ZXJcIikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0bXByZXYgPSBnZXRSZXZpc2lvbihnZXRSZXZpc2lvbklkKGUpWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codG1wcmV2KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRtcHJldi5kYXRlIDw9IHJldi5kYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtlLmlkfWApLnNldEF0dHJpYnV0ZShcImRpc2FibGVkXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7ZS5pZH1gKS5yZW1vdmVBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFmdCwgYmVmO1xuXG4gICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7IC8vIEZpbmQgdGhlIHNlbGVjdGVkIHBvc3RzXG4gICAgICAgICAgICBjb25zdCBpZCA9IGdldFJldmlzaW9uSWQoYnV0dG9uKTtcbiAgICAgICAgICAgIGlmIChidXR0b24uY2hlY2tlZCAmJiBpZFswXSA9PT0gXCJiZWZvcmVcIikge1xuICAgICAgICAgICAgICAgIGJlZiA9IGlkWzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYnV0dG9uLmNoZWNrZWQgJiYgaWRbMF0gPT09IFwiYWZ0ZXJcIikge1xuICAgICAgICAgICAgICAgIGFmdCA9IGlkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTd2l0Y2ggdGhlIGJ1dHRvbnMgSFJFRiB0byBwb2ludCB0byB0aGUgY29ycmVjdCBjb21wYXJlIFVSTFxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbXBhcmUtc3VibWl0XCIpLmhyZWYgPSBgL2hpc3RvcnkvY29tcGFyZS8ke2JlZn0vJHthZnR9YDtcblxuICAgIH1cblxuICAgIGJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XG4gICAgICAgIGJ1dHRvbi5jaGVja2VkID0gZmFsc2U7IC8vIFNvbWUgYnJvd3NlcnMgcmVtZW1iZXIgaWYgYSBidXR0b24gaXMgY2hlY2tlZC5cbiAgICAgICAgYnV0dG9uLm9uY2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByYWRpb0J1dHRvbkNoZWNrZWQoYnV0dG9uKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBleHBvcnRlZCB3aWtpX3NpZGViYXIgKi9cblxuZnVuY3Rpb24gd2lraV9zaWRlYmFyKCl7XG4gICAgY29uc3QgdmlzaWJsZV9jbGFzcyA9IFwidWstdmlzaWJsZUBzXCI7XG4gICAgY29uc3Qgc2lkZWJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid2lraS1zaWRlYmFyXCIpO1xuICAgIGNvbnN0IGRpc3BsYXlfYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3aWtpLXNpZGViYXItYnV0dG9uXCIpO1xuXG4gICAgZGlzcGxheV9idXR0b24ub25jbGljayA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoc2lkZWJhci5jbGFzc0xpc3QuY29udGFpbnModmlzaWJsZV9jbGFzcykpIHtcbiAgICAgICAgICAgIHNpZGViYXIuY2xhc3NMaXN0LnJlbW92ZSh2aXNpYmxlX2NsYXNzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZGViYXIuY2xhc3NMaXN0LmFkZCh2aXNpYmxlX2NsYXNzKTtcbiAgICAgICAgfVxuICAgIH07XG59XG4iLCIvLyEgbW9tZW50LmpzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICAgIGdsb2JhbC5tb21lbnQgPSBmYWN0b3J5KClcbn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIGhvb2tDYWxsYmFjaztcblxuICAgIGZ1bmN0aW9uIGhvb2tzICgpIHtcbiAgICAgICAgcmV0dXJuIGhvb2tDYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgZG9uZSB0byByZWdpc3RlciB0aGUgbWV0aG9kIGNhbGxlZCB3aXRoIG1vbWVudCgpXG4gICAgLy8gd2l0aG91dCBjcmVhdGluZyBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gICAgZnVuY3Rpb24gc2V0SG9va0NhbGxiYWNrIChjYWxsYmFjaykge1xuICAgICAgICBob29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FycmF5KGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIEFycmF5IHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IHdpbGwgdHJlYXQgdW5kZWZpbmVkIGFuZCBudWxsIGFzIG9iamVjdCBpZiBpdCB3YXNuJ3QgZm9yXG4gICAgICAgIC8vIGlucHV0ICE9IG51bGxcbiAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikubGVuZ3RoID09PSAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBrO1xuICAgICAgICAgICAgZm9yIChrIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09PSB2b2lkIDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOdW1iZXIoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgTnVtYmVyXSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXRlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIERhdGUgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hcChhcnIsIGZuKSB7XG4gICAgICAgIHZhciByZXMgPSBbXSwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgcmVzLnB1c2goZm4oYXJyW2ldLCBpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNPd25Qcm9wKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLCBiKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlbmQoYSwgYikge1xuICAgICAgICBmb3IgKHZhciBpIGluIGIpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGIsIGkpKSB7XG4gICAgICAgICAgICAgICAgYVtpXSA9IGJbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndG9TdHJpbmcnKSkge1xuICAgICAgICAgICAgYS50b1N0cmluZyA9IGIudG9TdHJpbmc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndmFsdWVPZicpKSB7XG4gICAgICAgICAgICBhLnZhbHVlT2YgPSBiLnZhbHVlT2Y7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVVEMgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCB0cnVlKS51dGMoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZhdWx0UGFyc2luZ0ZsYWdzKCkge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIGRlZXAgY2xvbmUgdGhpcyBvYmplY3QuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbXB0eSAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVudXNlZFRva2VucyAgICA6IFtdLFxuICAgICAgICAgICAgdW51c2VkSW5wdXQgICAgIDogW10sXG4gICAgICAgICAgICBvdmVyZmxvdyAgICAgICAgOiAtMixcbiAgICAgICAgICAgIGNoYXJzTGVmdE92ZXIgICA6IDAsXG4gICAgICAgICAgICBudWxsSW5wdXQgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIGludmFsaWRNb250aCAgICA6IG51bGwsXG4gICAgICAgICAgICBpbnZhbGlkRm9ybWF0ICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVzZXJJbnZhbGlkYXRlZCA6IGZhbHNlLFxuICAgICAgICAgICAgaXNvICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICBwYXJzZWREYXRlUGFydHMgOiBbXSxcbiAgICAgICAgICAgIG1lcmlkaWVtICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICByZmMyODIyICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHdlZWtkYXlNaXNtYXRjaCA6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2luZ0ZsYWdzKG0pIHtcbiAgICAgICAgaWYgKG0uX3BmID09IG51bGwpIHtcbiAgICAgICAgICAgIG0uX3BmID0gZGVmYXVsdFBhcnNpbmdGbGFncygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9wZjtcbiAgICB9XG5cbiAgICB2YXIgc29tZTtcbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLnNvbWUpIHtcbiAgICAgICAgc29tZSA9IEFycmF5LnByb3RvdHlwZS5zb21lO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWUgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgICAgICAgICB2YXIgdCA9IE9iamVjdCh0aGlzKTtcbiAgICAgICAgICAgIHZhciBsZW4gPSB0Lmxlbmd0aCA+Pj4gMDtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpIGluIHQgJiYgZnVuLmNhbGwodGhpcywgdFtpXSwgaSwgdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZChtKSB7XG4gICAgICAgIGlmIChtLl9pc1ZhbGlkID09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBmbGFncyA9IGdldFBhcnNpbmdGbGFncyhtKTtcbiAgICAgICAgICAgIHZhciBwYXJzZWRQYXJ0cyA9IHNvbWUuY2FsbChmbGFncy5wYXJzZWREYXRlUGFydHMsIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgIT0gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGlzTm93VmFsaWQgPSAhaXNOYU4obS5fZC5nZXRUaW1lKCkpICYmXG4gICAgICAgICAgICAgICAgZmxhZ3Mub3ZlcmZsb3cgPCAwICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmVtcHR5ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRNb250aCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkV2Vla2RheSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy53ZWVrZGF5TWlzbWF0Y2ggJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MubnVsbElucHV0ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRGb3JtYXQgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MudXNlckludmFsaWRhdGVkICYmXG4gICAgICAgICAgICAgICAgKCFmbGFncy5tZXJpZGllbSB8fCAoZmxhZ3MubWVyaWRpZW0gJiYgcGFyc2VkUGFydHMpKTtcblxuICAgICAgICAgICAgaWYgKG0uX3N0cmljdCkge1xuICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgPSBpc05vd1ZhbGlkICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLmNoYXJzTGVmdE92ZXIgPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MudW51c2VkVG9rZW5zLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5iaWdIb3VyID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4gPT0gbnVsbCB8fCAhT2JqZWN0LmlzRnJvemVuKG0pKSB7XG4gICAgICAgICAgICAgICAgbS5faXNWYWxpZCA9IGlzTm93VmFsaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNOb3dWYWxpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkIChmbGFncykge1xuICAgICAgICB2YXIgbSA9IGNyZWF0ZVVUQyhOYU4pO1xuICAgICAgICBpZiAoZmxhZ3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgZXh0ZW5kKGdldFBhcnNpbmdGbGFncyhtKSwgZmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLnVzZXJJbnZhbGlkYXRlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICAvLyBQbHVnaW5zIHRoYXQgYWRkIHByb3BlcnRpZXMgc2hvdWxkIGFsc28gYWRkIHRoZSBrZXkgaGVyZSAobnVsbCB2YWx1ZSksXG4gICAgLy8gc28gd2UgY2FuIHByb3Blcmx5IGNsb25lIG91cnNlbHZlcy5cbiAgICB2YXIgbW9tZW50UHJvcGVydGllcyA9IGhvb2tzLm1vbWVudFByb3BlcnRpZXMgPSBbXTtcblxuICAgIGZ1bmN0aW9uIGNvcHlDb25maWcodG8sIGZyb20pIHtcbiAgICAgICAgdmFyIGksIHByb3AsIHZhbDtcblxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzQU1vbWVudE9iamVjdCkpIHtcbiAgICAgICAgICAgIHRvLl9pc0FNb21lbnRPYmplY3QgPSBmcm9tLl9pc0FNb21lbnRPYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pKSkge1xuICAgICAgICAgICAgdG8uX2kgPSBmcm9tLl9pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fZikpIHtcbiAgICAgICAgICAgIHRvLl9mID0gZnJvbS5fZjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2wpKSB7XG4gICAgICAgICAgICB0by5fbCA9IGZyb20uX2w7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9zdHJpY3QpKSB7XG4gICAgICAgICAgICB0by5fc3RyaWN0ID0gZnJvbS5fc3RyaWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fdHptKSkge1xuICAgICAgICAgICAgdG8uX3R6bSA9IGZyb20uX3R6bTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzVVRDKSkge1xuICAgICAgICAgICAgdG8uX2lzVVRDID0gZnJvbS5faXNVVEM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9vZmZzZXQpKSB7XG4gICAgICAgICAgICB0by5fb2Zmc2V0ID0gZnJvbS5fb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fcGYpKSB7XG4gICAgICAgICAgICB0by5fcGYgPSBnZXRQYXJzaW5nRmxhZ3MoZnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9sb2NhbGUpKSB7XG4gICAgICAgICAgICB0by5fbG9jYWxlID0gZnJvbS5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vbWVudFByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1vbWVudFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwcm9wID0gbW9tZW50UHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgICAgICB2YWwgPSBmcm9tW3Byb3BdO1xuICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICB0b1twcm9wXSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG87XG4gICAgfVxuXG4gICAgdmFyIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIC8vIE1vbWVudCBwcm90b3R5cGUgb2JqZWN0XG4gICAgZnVuY3Rpb24gTW9tZW50KGNvbmZpZykge1xuICAgICAgICBjb3B5Q29uZmlnKHRoaXMsIGNvbmZpZyk7XG4gICAgICAgIHRoaXMuX2QgPSBuZXcgRGF0ZShjb25maWcuX2QgIT0gbnVsbCA/IGNvbmZpZy5fZC5nZXRUaW1lKCkgOiBOYU4pO1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3AgaW4gY2FzZSB1cGRhdGVPZmZzZXQgY3JlYXRlcyBuZXcgbW9tZW50XG4gICAgICAgIC8vIG9iamVjdHMuXG4gICAgICAgIGlmICh1cGRhdGVJblByb2dyZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB1cGRhdGVJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc01vbWVudCAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBNb21lbnQgfHwgKG9iaiAhPSBudWxsICYmIG9iai5faXNBTW9tZW50T2JqZWN0ICE9IG51bGwpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0Zsb29yIChudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIC0wIC0+IDBcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKSB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSW50KGFyZ3VtZW50Rm9yQ29lcmNpb24pIHtcbiAgICAgICAgdmFyIGNvZXJjZWROdW1iZXIgPSArYXJndW1lbnRGb3JDb2VyY2lvbixcbiAgICAgICAgICAgIHZhbHVlID0gMDtcblxuICAgICAgICBpZiAoY29lcmNlZE51bWJlciAhPT0gMCAmJiBpc0Zpbml0ZShjb2VyY2VkTnVtYmVyKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBhYnNGbG9vcihjb2VyY2VkTnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBjb21wYXJlIHR3byBhcnJheXMsIHJldHVybiB0aGUgbnVtYmVyIG9mIGRpZmZlcmVuY2VzXG4gICAgZnVuY3Rpb24gY29tcGFyZUFycmF5cyhhcnJheTEsIGFycmF5MiwgZG9udENvbnZlcnQpIHtcbiAgICAgICAgdmFyIGxlbiA9IE1hdGgubWluKGFycmF5MS5sZW5ndGgsIGFycmF5Mi5sZW5ndGgpLFxuICAgICAgICAgICAgbGVuZ3RoRGlmZiA9IE1hdGguYWJzKGFycmF5MS5sZW5ndGggLSBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGRpZmZzID0gMCxcbiAgICAgICAgICAgIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKChkb250Q29udmVydCAmJiBhcnJheTFbaV0gIT09IGFycmF5MltpXSkgfHxcbiAgICAgICAgICAgICAgICAoIWRvbnRDb252ZXJ0ICYmIHRvSW50KGFycmF5MVtpXSkgIT09IHRvSW50KGFycmF5MltpXSkpKSB7XG4gICAgICAgICAgICAgICAgZGlmZnMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlmZnMgKyBsZW5ndGhEaWZmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gICAgICAgIGlmIChob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEZXByZWNhdGlvbiB3YXJuaW5nOiAnICsgbXNnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZShtc2csIGZuKSB7XG4gICAgICAgIHZhciBmaXJzdFRpbWUgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBleHRlbmQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG51bGwsIG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlyc3RUaW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgYXJnO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSAnXFxuWycgKyBpICsgJ10gJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBhcmd1bWVudHNbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0ga2V5ICsgJzogJyArIGFyZ3VtZW50c1swXVtrZXldICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZy5zbGljZSgwLCAtMik7IC8vIFJlbW92ZSB0cmFpbGluZyBjb21tYSBhbmQgc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fybihtc2cgKyAnXFxuQXJndW1lbnRzOiAnICsgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncykuam9pbignJykgKyAnXFxuJyArIChuZXcgRXJyb3IoKSkuc3RhY2spO1xuICAgICAgICAgICAgICAgIGZpcnN0VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sIGZuKTtcbiAgICB9XG5cbiAgICB2YXIgZGVwcmVjYXRpb25zID0ge307XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVTaW1wbGUobmFtZSwgbXNnKSB7XG4gICAgICAgIGlmIChob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG5hbWUsIG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZXByZWNhdGlvbnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHdhcm4obXNnKTtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPSBmYWxzZTtcbiAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgPSBudWxsO1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldCAoY29uZmlnKSB7XG4gICAgICAgIHZhciBwcm9wLCBpO1xuICAgICAgICBmb3IgKGkgaW4gY29uZmlnKSB7XG4gICAgICAgICAgICBwcm9wID0gY29uZmlnW2ldO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocHJvcCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzW2ldID0gcHJvcDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1snXycgKyBpXSA9IHByb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICAvLyBMZW5pZW50IG9yZGluYWwgcGFyc2luZyBhY2NlcHRzIGp1c3QgYSBudW1iZXIgaW4gYWRkaXRpb24gdG9cbiAgICAgICAgLy8gbnVtYmVyICsgKHBvc3NpYmx5KSBzdHVmZiBjb21pbmcgZnJvbSBfZGF5T2ZNb250aE9yZGluYWxQYXJzZS5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIFwib3JkaW5hbFBhcnNlXCIgZmFsbGJhY2sgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAgICB0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAodGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZS5zb3VyY2UgfHwgdGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkgK1xuICAgICAgICAgICAgICAgICd8JyArICgvXFxkezEsMn0vKS5zb3VyY2UpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNoaWxkQ29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBleHRlbmQoe30sIHBhcmVudENvbmZpZyksIHByb3A7XG4gICAgICAgIGZvciAocHJvcCBpbiBjaGlsZENvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkgJiYgaXNPYmplY3QoY2hpbGRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBwYXJlbnRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBjaGlsZENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZENvbmZpZ1twcm9wXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGNoaWxkQ29uZmlnW3Byb3BdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXNbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAocHJvcCBpbiBwYXJlbnRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKHBhcmVudENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApICYmXG4gICAgICAgICAgICAgICAgICAgIGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2hhbmdlcyB0byBwcm9wZXJ0aWVzIGRvbid0IG1vZGlmeSBwYXJlbnQgY29uZmlnXG4gICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gZXh0ZW5kKHt9LCByZXNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTG9jYWxlKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cztcblxuICAgIGlmIChPYmplY3Qua2V5cykge1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAga2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciBpLCByZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcChvYmosIGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRDYWxlbmRhciA9IHtcbiAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhciAoa2V5LCBtb20sIG5vdykge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fY2FsZW5kYXJba2V5XSB8fCB0aGlzLl9jYWxlbmRhclsnc2FtZUVsc2UnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob3V0cHV0KSA/IG91dHB1dC5jYWxsKG1vbSwgbm93KSA6IG91dHB1dDtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvbmdEYXRlRm9ybWF0ID0ge1xuICAgICAgICBMVFMgIDogJ2g6bW06c3MgQScsXG4gICAgICAgIExUICAgOiAnaDptbSBBJyxcbiAgICAgICAgTCAgICA6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgTEwgICA6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICBMTEwgIDogJ01NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGxvbmdEYXRlRm9ybWF0IChrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0sXG4gICAgICAgICAgICBmb3JtYXRVcHBlciA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleS50b1VwcGVyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoZm9ybWF0IHx8ICFmb3JtYXRVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0gPSBmb3JtYXRVcHBlci5yZXBsYWNlKC9NTU1NfE1NfEREfGRkZGQvZywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbC5zbGljZSgxKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRJbnZhbGlkRGF0ZSA9ICdJbnZhbGlkIGRhdGUnO1xuXG4gICAgZnVuY3Rpb24gaW52YWxpZERhdGUgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52YWxpZERhdGU7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRPcmRpbmFsID0gJyVkJztcbiAgICB2YXIgZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UgPSAvXFxkezEsMn0vO1xuXG4gICAgZnVuY3Rpb24gb3JkaW5hbCAobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmRpbmFsLnJlcGxhY2UoJyVkJywgbnVtYmVyKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFJlbGF0aXZlVGltZSA9IHtcbiAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgcGFzdCAgIDogJyVzIGFnbycsXG4gICAgICAgIHMgIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgbSAgOiAnYSBtaW51dGUnLFxuICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgaCAgOiAnYW4gaG91cicsXG4gICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgZCAgOiAnYSBkYXknLFxuICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgTSAgOiAnYSBtb250aCcsXG4gICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgIHkgIDogJ2EgeWVhcicsXG4gICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUgKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW3N0cmluZ107XG4gICAgICAgIHJldHVybiAoaXNGdW5jdGlvbihvdXRwdXQpKSA/XG4gICAgICAgICAgICBvdXRwdXQobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSA6XG4gICAgICAgICAgICBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXN0RnV0dXJlIChkaWZmLCBvdXRwdXQpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX3JlbGF0aXZlVGltZVtkaWZmID4gMCA/ICdmdXR1cmUnIDogJ3Bhc3QnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oZm9ybWF0KSA/IGZvcm1hdChvdXRwdXQpIDogZm9ybWF0LnJlcGxhY2UoLyVzL2ksIG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFsaWFzZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFVuaXRBbGlhcyAodW5pdCwgc2hvcnRoYW5kKSB7XG4gICAgICAgIHZhciBsb3dlckNhc2UgPSB1bml0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGFsaWFzZXNbbG93ZXJDYXNlXSA9IGFsaWFzZXNbbG93ZXJDYXNlICsgJ3MnXSA9IGFsaWFzZXNbc2hvcnRoYW5kXSA9IHVuaXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplVW5pdHModW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB1bml0cyA9PT0gJ3N0cmluZycgPyBhbGlhc2VzW3VuaXRzXSB8fCBhbGlhc2VzW3VuaXRzLnRvTG93ZXJDYXNlKCldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdFVuaXRzKGlucHV0T2JqZWN0KSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSB7fSxcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wLFxuICAgICAgICAgICAgcHJvcDtcblxuICAgICAgICBmb3IgKHByb3AgaW4gaW5wdXRPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGlucHV0T2JqZWN0LCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wID0gbm9ybWFsaXplVW5pdHMocHJvcCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRJbnB1dFtub3JtYWxpemVkUHJvcF0gPSBpbnB1dE9iamVjdFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZElucHV0O1xuICAgIH1cblxuICAgIHZhciBwcmlvcml0aWVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRVbml0UHJpb3JpdHkodW5pdCwgcHJpb3JpdHkpIHtcbiAgICAgICAgcHJpb3JpdGllc1t1bml0XSA9IHByaW9yaXR5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFByaW9yaXRpemVkVW5pdHModW5pdHNPYmopIHtcbiAgICAgICAgdmFyIHVuaXRzID0gW107XG4gICAgICAgIGZvciAodmFyIHUgaW4gdW5pdHNPYmopIHtcbiAgICAgICAgICAgIHVuaXRzLnB1c2goe3VuaXQ6IHUsIHByaW9yaXR5OiBwcmlvcml0aWVzW3VdfSk7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGEucHJpb3JpdHkgLSBiLnByaW9yaXR5O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVuaXRzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHplcm9GaWxsKG51bWJlciwgdGFyZ2V0TGVuZ3RoLCBmb3JjZVNpZ24pIHtcbiAgICAgICAgdmFyIGFic051bWJlciA9ICcnICsgTWF0aC5hYnMobnVtYmVyKSxcbiAgICAgICAgICAgIHplcm9zVG9GaWxsID0gdGFyZ2V0TGVuZ3RoIC0gYWJzTnVtYmVyLmxlbmd0aCxcbiAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDtcbiAgICAgICAgcmV0dXJuIChzaWduID8gKGZvcmNlU2lnbiA/ICcrJyA6ICcnKSA6ICctJykgK1xuICAgICAgICAgICAgTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsIHplcm9zVG9GaWxsKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkgKyBhYnNOdW1iZXI7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fFlZWVlZWXxZWVlZWXxZWVlZfFlZfGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nO1xuXG4gICAgdmFyIGxvY2FsRm9ybWF0dGluZ1Rva2VucyA9IC8oXFxbW15cXFtdKlxcXSl8KFxcXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2c7XG5cbiAgICB2YXIgZm9ybWF0RnVuY3Rpb25zID0ge307XG5cbiAgICB2YXIgZm9ybWF0VG9rZW5GdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIHRva2VuOiAgICAnTSdcbiAgICAvLyBwYWRkZWQ6ICAgWydNTScsIDJdXG4gICAgLy8gb3JkaW5hbDogICdNbydcbiAgICAvLyBjYWxsYmFjazogZnVuY3Rpb24gKCkgeyB0aGlzLm1vbnRoKCkgKyAxIH1cbiAgICBmdW5jdGlvbiBhZGRGb3JtYXRUb2tlbiAodG9rZW4sIHBhZGRlZCwgb3JkaW5hbCwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBjYWxsYmFjaztcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGJhY2tdKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dID0gZnVuYztcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGVkKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1twYWRkZWRbMF1dID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB6ZXJvRmlsbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHBhZGRlZFsxXSwgcGFkZGVkWzJdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9yZGluYWwpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW29yZGluYWxdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdG9rZW4pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC9cXFtbXFxzXFxTXS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXlxcW3xcXF0kL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBmb3JtYXQubWF0Y2goZm9ybWF0dGluZ1Rva2VucyksIGksIGxlbmd0aDtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoYXJyYXlbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtb20pIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAnJywgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG91dHB1dCArPSBpc0Z1bmN0aW9uKGFycmF5W2ldKSA/IGFycmF5W2ldLmNhbGwobW9tLCBmb3JtYXQpIDogYXJyYXlbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIGZvcm1hdCBkYXRlIHVzaW5nIG5hdGl2ZSBkYXRlIG9iamVjdFxuICAgIGZ1bmN0aW9uIGZvcm1hdE1vbWVudChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG0ubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtYXQgPSBleHBhbmRGb3JtYXQoZm9ybWF0LCBtLmxvY2FsZURhdGEoKSk7XG4gICAgICAgIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdID0gZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gfHwgbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdKG0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4cGFuZEZvcm1hdChmb3JtYXQsIGxvY2FsZSkge1xuICAgICAgICB2YXIgaSA9IDU7XG5cbiAgICAgICAgZnVuY3Rpb24gcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLmxvbmdEYXRlRm9ybWF0KGlucHV0KSB8fCBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKGxvY2FsRm9ybWF0dGluZ1Rva2VucywgcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKTtcbiAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2gxICAgICAgICAgPSAvXFxkLzsgICAgICAgICAgICAvLyAgICAgICAwIC0gOVxuICAgIHZhciBtYXRjaDIgICAgICAgICA9IC9cXGRcXGQvOyAgICAgICAgICAvLyAgICAgIDAwIC0gOTlcbiAgICB2YXIgbWF0Y2gzICAgICAgICAgPSAvXFxkezN9LzsgICAgICAgICAvLyAgICAgMDAwIC0gOTk5XG4gICAgdmFyIG1hdGNoNCAgICAgICAgID0gL1xcZHs0fS87ICAgICAgICAgLy8gICAgMDAwMCAtIDk5OTlcbiAgICB2YXIgbWF0Y2g2ICAgICAgICAgPSAvWystXT9cXGR7Nn0vOyAgICAvLyAtOTk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMiAgICAgID0gL1xcZFxcZD8vOyAgICAgICAgIC8vICAgICAgIDAgLSA5OVxuICAgIHZhciBtYXRjaDN0bzQgICAgICA9IC9cXGRcXGRcXGRcXGQ/LzsgICAgIC8vICAgICA5OTkgLSA5OTk5XG4gICAgdmFyIG1hdGNoNXRvNiAgICAgID0gL1xcZFxcZFxcZFxcZFxcZFxcZD8vOyAvLyAgIDk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMyAgICAgID0gL1xcZHsxLDN9LzsgICAgICAgLy8gICAgICAgMCAtIDk5OVxuICAgIHZhciBtYXRjaDF0bzQgICAgICA9IC9cXGR7MSw0fS87ICAgICAgIC8vICAgICAgIDAgLSA5OTk5XG4gICAgdmFyIG1hdGNoMXRvNiAgICAgID0gL1srLV0/XFxkezEsNn0vOyAgLy8gLTk5OTk5OSAtIDk5OTk5OVxuXG4gICAgdmFyIG1hdGNoVW5zaWduZWQgID0gL1xcZCsvOyAgICAgICAgICAgLy8gICAgICAgMCAtIGluZlxuICAgIHZhciBtYXRjaFNpZ25lZCAgICA9IC9bKy1dP1xcZCsvOyAgICAgIC8vICAgIC1pbmYgLSBpbmZcblxuICAgIHZhciBtYXRjaE9mZnNldCAgICA9IC9afFsrLV1cXGRcXGQ6P1xcZFxcZC9naTsgLy8gKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG4gICAgdmFyIG1hdGNoU2hvcnRPZmZzZXQgPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy9naTsgLy8gKzAwIC0wMCArMDA6MDAgLTAwOjAwICswMDAwIC0wMDAwIG9yIFpcblxuICAgIHZhciBtYXRjaFRpbWVzdGFtcCA9IC9bKy1dP1xcZCsoXFwuXFxkezEsM30pPy87IC8vIDEyMzQ1Njc4OSAxMjM0NTY3ODkuMTIzXG5cbiAgICAvLyBhbnkgd29yZCAob3IgdHdvKSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMgaW5jbHVkaW5nIHR3by90aHJlZSB3b3JkIG1vbnRoIGluIGFyYWJpYy5cbiAgICAvLyBpbmNsdWRlcyBzY290dGlzaCBnYWVsaWMgdHdvIHdvcmQgYW5kIGh5cGhlbmF0ZWQgbW9udGhzXG4gICAgdmFyIG1hdGNoV29yZCA9IC9bMC05XXswLDI1Nn1bJ2EtelxcdTAwQTAtXFx1MDVGRlxcdTA3MDAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkYwN1xcdUZGMTAtXFx1RkZFRl17MSwyNTZ9fFtcXHUwNjAwLVxcdTA2RkZcXC9dezEsMjU2fShcXHMqP1tcXHUwNjAwLVxcdTA2RkZdezEsMjU2fSl7MSwyfS9pO1xuXG4gICAgdmFyIHJlZ2V4ZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFJlZ2V4VG9rZW4gKHRva2VuLCByZWdleCwgc3RyaWN0UmVnZXgpIHtcbiAgICAgICAgcmVnZXhlc1t0b2tlbl0gPSBpc0Z1bmN0aW9uKHJlZ2V4KSA/IHJlZ2V4IDogZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGVEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gKGlzU3RyaWN0ICYmIHN0cmljdFJlZ2V4KSA/IHN0cmljdFJlZ2V4IDogcmVnZXg7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2VSZWdleEZvclRva2VuICh0b2tlbiwgY29uZmlnKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcChyZWdleGVzLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHVuZXNjYXBlRm9ybWF0KHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVnZXhlc1t0b2tlbl0oY29uZmlnLl9zdHJpY3QsIGNvbmZpZy5fbG9jYWxlKTtcbiAgICB9XG5cbiAgICAvLyBDb2RlIGZyb20gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEtcmVnZXhwLWVzY2FwZS1mdW5jdGlvbi1pbi1qYXZhc2NyaXB0XG4gICAgZnVuY3Rpb24gdW5lc2NhcGVGb3JtYXQocykge1xuICAgICAgICByZXR1cm4gcmVnZXhFc2NhcGUocy5yZXBsYWNlKCdcXFxcJywgJycpLnJlcGxhY2UoL1xcXFwoXFxbKXxcXFxcKFxcXSl8XFxbKFteXFxdXFxbXSopXFxdfFxcXFwoLikvZywgZnVuY3Rpb24gKG1hdGNoZWQsIHAxLCBwMiwgcDMsIHA0KSB7XG4gICAgICAgICAgICByZXR1cm4gcDEgfHwgcDIgfHwgcDMgfHwgcDQ7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWdleEVzY2FwZShzKSB7XG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuICAgIH1cblxuICAgIHZhciB0b2tlbnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFBhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgaSwgZnVuYyA9IGNhbGxiYWNrO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdG9rZW4gPSBbdG9rZW5dO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihjYWxsYmFjaykpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbY2FsbGJhY2tdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9rZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbltpXV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1BhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICBhZGRQYXJzZVRva2VuKHRva2VuLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICBjb25maWcuX3cgPSBjb25maWcuX3cgfHwge307XG4gICAgICAgICAgICBjYWxsYmFjayhpbnB1dCwgY29uZmlnLl93LCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIGlucHV0LCBjb25maWcpIHtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwgJiYgaGFzT3duUHJvcCh0b2tlbnMsIHRva2VuKSkge1xuICAgICAgICAgICAgdG9rZW5zW3Rva2VuXShpbnB1dCwgY29uZmlnLl9hLCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBZRUFSID0gMDtcbiAgICB2YXIgTU9OVEggPSAxO1xuICAgIHZhciBEQVRFID0gMjtcbiAgICB2YXIgSE9VUiA9IDM7XG4gICAgdmFyIE1JTlVURSA9IDQ7XG4gICAgdmFyIFNFQ09ORCA9IDU7XG4gICAgdmFyIE1JTExJU0VDT05EID0gNjtcbiAgICB2YXIgV0VFSyA9IDc7XG4gICAgdmFyIFdFRUtEQVkgPSA4O1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1knLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB5ID0gdGhpcy55ZWFyKCk7XG4gICAgICAgIHJldHVybiB5IDw9IDk5OTkgPyAnJyArIHkgOiAnKycgKyB5O1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWScsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWScsICAgNF0sICAgICAgIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWScsICA1XSwgICAgICAgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZWScsIDYsIHRydWVdLCAwLCAneWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd5ZWFyJywgJ3knKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgneWVhcicsIDEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWScsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZJywgICAgIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWVknLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZWScsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydZWVlZWScsICdZWVlZWVknXSwgWUVBUik7XG4gICAgYWRkUGFyc2VUb2tlbignWVlZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBpbnB1dC5sZW5ndGggPT09IDIgPyBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCkgOiB0b0ludChpbnB1dCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1knLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIGZ1bmN0aW9uIGRheXNJblllYXIoeWVhcikge1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHtcbiAgICAgICAgcmV0dXJuICh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB8fCB5ZWFyICUgNDAwID09PSAwO1xuICAgIH1cblxuICAgIC8vIEhPT0tTXG5cbiAgICBob29rcy5wYXJzZVR3b0RpZ2l0WWVhciA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdG9JbnQoaW5wdXQpICsgKHRvSW50KGlucHV0KSA+IDY4ID8gMTkwMCA6IDIwMDApO1xuICAgIH07XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0WWVhciA9IG1ha2VHZXRTZXQoJ0Z1bGxZZWFyJywgdHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBnZXRJc0xlYXBZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VHZXRTZXQgKHVuaXQsIGtlZXBUaW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0JDEodGhpcywgdW5pdCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0IChtb20sIHVuaXQpIHtcbiAgICAgICAgcmV0dXJuIG1vbS5pc1ZhbGlkKCkgP1xuICAgICAgICAgICAgbW9tLl9kWydnZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0JDEgKG1vbSwgdW5pdCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKG1vbS5pc1ZhbGlkKCkgJiYgIWlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHVuaXQgPT09ICdGdWxsWWVhcicgJiYgaXNMZWFwWWVhcihtb20ueWVhcigpKSAmJiBtb20ubW9udGgoKSA9PT0gMSAmJiBtb20uZGF0ZSgpID09PSAyOSkge1xuICAgICAgICAgICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSh2YWx1ZSwgbW9tLm1vbnRoKCksIGRheXNJbk1vbnRoKHZhbHVlLCBtb20ubW9udGgoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIHN0cmluZ0dldCAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdTZXQgKHVuaXRzLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHVuaXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVPYmplY3RVbml0cyh1bml0cyk7XG4gICAgICAgICAgICB2YXIgcHJpb3JpdGl6ZWQgPSBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJpb3JpdGl6ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzW3ByaW9yaXRpemVkW2ldLnVuaXRdKHVuaXRzW3ByaW9yaXRpemVkW2ldLnVuaXRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhpc1t1bml0c10pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb2QobiwgeCkge1xuICAgICAgICByZXR1cm4gKChuICUgeCkgKyB4KSAlIHg7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4T2Y7XG5cbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHtcbiAgICAgICAgaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4T2YgPSBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgLy8gSSBrbm93XG4gICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT09IG8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgICAgIGlmIChpc05hTih5ZWFyKSB8fCBpc05hTihtb250aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1vZE1vbnRoID0gbW9kKG1vbnRoLCAxMik7XG4gICAgICAgIHllYXIgKz0gKG1vbnRoIC0gbW9kTW9udGgpIC8gMTI7XG4gICAgICAgIHJldHVybiBtb2RNb250aCA9PT0gMSA/IChpc0xlYXBZZWFyKHllYXIpID8gMjkgOiAyOCkgOiAoMzEgLSBtb2RNb250aCAlIDcgJSAyKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignTScsIFsnTU0nLCAyXSwgJ01vJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aCgpICsgMTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ01NTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbW9udGgnLCAnTScpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnbW9udGgnLCA4KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ00nLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NJywgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NJywgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NTScsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ00nLCAnTU0nXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSB0b0ludChpbnB1dCkgLSAxO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ01NTScsICdNTU1NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgdmFyIG1vbnRoID0gY29uZmlnLl9sb2NhbGUubW9udGhzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgbW9udGggbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkLlxuICAgICAgICBpZiAobW9udGggIT0gbnVsbCkge1xuICAgICAgICAgICAgYXJyYXlbTU9OVEhdID0gbW9udGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkTW9udGggPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgdmFyIE1PTlRIU19JTl9GT1JNQVQgPSAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NPy87XG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNb250aHMgPSAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHMgKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHMgOlxuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1snc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHNbbS5tb250aCgpXSA6XG4gICAgICAgICAgICB0aGlzLl9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdCB8fCBNT05USFNfSU5fRk9STUFUKS50ZXN0KGZvcm1hdCkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ11bbS5tb250aCgpXTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0ID0gJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1Nob3J0IChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydCA6XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydFttLm1vbnRoKCldIDpcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0W01PTlRIU19JTl9GT1JNQVQudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSddW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgaWksIG1vbSwgbGxjID0gbW9udGhOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fbW9udGhzUGFyc2UpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHVzZWRcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRocyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNQYXJzZSAobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVN0cmljdFBhcnNlLmNhbGwodGhpcywgbW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiBhZGQgc29ydGluZ1xuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyXG4gICAgICAgIC8vIHNlZSBzb3J0aW5nIGluIGNvbXB1dGVNb250aHNQYXJzZVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIGldKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5tb250aHMobW9tLCAnJykucmVwbGFjZSgnLicsICcnKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXN0cmljdCAmJiAhdGhpcy5fbW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9ICdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMubW9udGhzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleFxuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU1NJyAmJiB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU0nICYmIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdGhpcy5fbW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzZXRNb250aCAobW9tLCB2YWx1ZSkge1xuICAgICAgICB2YXIgZGF5T2ZNb250aDtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm4gbW9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICgvXlxcZCskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9JbnQodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbS5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IEFub3RoZXIgc2lsZW50IGZhaWx1cmU/XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkYXlPZk1vbnRoID0gTWF0aC5taW4obW9tLmRhdGUoKSwgZGF5c0luTW9udGgobW9tLnllYXIoKSwgdmFsdWUpKTtcbiAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArICdNb250aCddKHZhbHVlLCBkYXlPZk1vbnRoKTtcbiAgICAgICAgcmV0dXJuIG1vbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRNb250aCAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNldE1vbnRoKHRoaXMsIHZhbHVlKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldCh0aGlzLCAnTW9udGgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERheXNJbk1vbnRoICgpIHtcbiAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TW9udGhzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNTaG9ydFJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVNb250aHNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzU2hvcnRSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRSZWdleCA9IGRlZmF1bHRNb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggOiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRNb250aHNSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNSZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gZGVmYXVsdE1vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTdHJpY3RSZWdleCA6IHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZU1vbnRoc1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNob3J0UGllY2VzID0gW10sIGxvbmdQaWVjZXMgPSBbXSwgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksIG1vbTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBzaG9ydFBpZWNlcy5wdXNoKHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykpO1xuICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHMobW9tLCAnJykpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgc2hvcnRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShzaG9ydFBpZWNlc1tpXSk7XG4gICAgICAgICAgICBsb25nUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobG9uZ1BpZWNlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDI0OyBpKyspIHtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbW9udGhzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIHNob3J0UGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVEYXRlICh5LCBtLCBkLCBoLCBNLCBzLCBtcykge1xuICAgICAgICAvLyBjYW4ndCBqdXN0IGFwcGx5KCkgdG8gY3JlYXRlIGEgZGF0ZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzE4MTM0OFxuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHksIG0sIGQsIGgsIE0sIHMsIG1zKTtcblxuICAgICAgICAvLyB0aGUgZGF0ZSBjb25zdHJ1Y3RvciByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwICYmIGlzRmluaXRlKGRhdGUuZ2V0RnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDRGF0ZSAoeSkge1xuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuXG4gICAgICAgIC8vIHRoZSBEYXRlLlVUQyBmdW5jdGlvbiByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwICYmIGlzRmluaXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLy8gc3RhcnQtb2YtZmlyc3Qtd2VlayAtIHN0YXJ0LW9mLXllYXJcbiAgICBmdW5jdGlvbiBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIC8vIGZpcnN0LXdlZWsgZGF5IC0tIHdoaWNoIGphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrICg0IGZvciBpc28sIDEgZm9yIG90aGVyKVxuICAgICAgICAgICAgZndkID0gNyArIGRvdyAtIGRveSxcbiAgICAgICAgICAgIC8vIGZpcnN0LXdlZWsgZGF5IGxvY2FsIHdlZWtkYXkgLS0gd2hpY2ggbG9jYWwgd2Vla2RheSBpcyBmd2RcbiAgICAgICAgICAgIGZ3ZGx3ID0gKDcgKyBjcmVhdGVVVENEYXRlKHllYXIsIDAsIGZ3ZCkuZ2V0VVRDRGF5KCkgLSBkb3cpICUgNztcblxuICAgICAgICByZXR1cm4gLWZ3ZGx3ICsgZndkIC0gMTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlI0NhbGN1bGF0aW5nX2FfZGF0ZV9naXZlbl90aGVfeWVhci4yQ193ZWVrX251bWJlcl9hbmRfd2Vla2RheVxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrcyh5ZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgbG9jYWxXZWVrZGF5ID0gKDcgKyB3ZWVrZGF5IC0gZG93KSAlIDcsXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRheU9mWWVhciA9IDEgKyA3ICogKHdlZWsgLSAxKSArIGxvY2FsV2Vla2RheSArIHdlZWtPZmZzZXQsXG4gICAgICAgICAgICByZXNZZWFyLCByZXNEYXlPZlllYXI7XG5cbiAgICAgICAgaWYgKGRheU9mWWVhciA8PSAwKSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhciAtIDE7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlzSW5ZZWFyKHJlc1llYXIpICsgZGF5T2ZZZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKGRheU9mWWVhciA+IGRheXNJblllYXIoeWVhcikpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyICsgMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhciAtIGRheXNJblllYXIoeWVhcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhcjtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiByZXNZZWFyLFxuICAgICAgICAgICAgZGF5T2ZZZWFyOiByZXNEYXlPZlllYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrT2ZZZWFyKG1vbSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQobW9tLnllYXIoKSwgZG93LCBkb3kpLFxuICAgICAgICAgICAgd2VlayA9IE1hdGguZmxvb3IoKG1vbS5kYXlPZlllYXIoKSAtIHdlZWtPZmZzZXQgLSAxKSAvIDcpICsgMSxcbiAgICAgICAgICAgIHJlc1dlZWssIHJlc1llYXI7XG5cbiAgICAgICAgaWYgKHdlZWsgPCAxKSB7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSAtIDE7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayArIHdlZWtzSW5ZZWFyKHJlc1llYXIsIGRvdywgZG95KTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrID4gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayAtIHdlZWtzSW5ZZWFyKG1vbS55ZWFyKCksIGRvdywgZG95KTtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpO1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2VlazogcmVzV2VlayxcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrc0luWWVhcih5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0TmV4dCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyICsgMSwgZG93LCBkb3kpO1xuICAgICAgICByZXR1cm4gKGRheXNJblllYXIoeWVhcikgLSB3ZWVrT2Zmc2V0ICsgd2Vla09mZnNldE5leHQpIC8gNztcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigndycsIFsnd3cnLCAyXSwgJ3dvJywgJ3dlZWsnKTtcbiAgICBhZGRGb3JtYXRUb2tlbignVycsIFsnV1cnLCAyXSwgJ1dvJywgJ2lzb1dlZWsnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2VlaycsICd3Jyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrJywgJ1cnKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnd2VlaycsIDUpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2VlaycsIDUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigndycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3d3JywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1cnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdXVycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsndycsICd3dycsICdXJywgJ1dXJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAxKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrIChtb20pIHtcbiAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIobW9tLCB0aGlzLl93ZWVrLmRvdywgdGhpcy5fd2Vlay5kb3kpLndlZWs7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrID0ge1xuICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mV2VlayAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mWWVhciAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRveTtcbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHRoaXMubG9jYWxlRGF0YSgpLndlZWsodGhpcyk7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAtIHdlZWspICogNywgJ2QnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09XZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHdlZWtPZlllYXIodGhpcywgMSwgNCkud2VlaztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkJywgMCwgJ2RvJywgJ2RheScpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGRkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZScsIDAsIDAsICd3ZWVrZGF5Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ0UnLCAwLCAwLCAnaXNvV2Vla2RheScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXknLCAnZCcpO1xuICAgIGFkZFVuaXRBbGlhcygnd2Vla2RheScsICdlJyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrZGF5JywgJ0UnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXknLCAxMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrZGF5JywgMTEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla2RheScsIDExKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2QnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkJywgICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzTWluUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2RkJywgJ2RkZCcsICdkZGRkJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB2YXIgd2Vla2RheSA9IGNvbmZpZy5fbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSB3ZWVrZGF5IG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZFxuICAgICAgICBpZiAod2Vla2RheSAhPSBudWxsKSB7XG4gICAgICAgICAgICB3ZWVrLmQgPSB3ZWVrZGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZFdlZWtkYXkgPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydkJywgJ2UnLCAnRSddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbl0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBwYXJzZVdlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc05hTihpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChpbnB1dCwgMTApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQgPSBsb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KSAlIDcgfHwgNztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNOYU4oaW5wdXQpID8gbnVsbCA6IGlucHV0O1xuICAgIH1cblxuICAgIC8vIExPQ0FMRVNcblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXMgPSAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXMgKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKSA/IHRoaXMuX3dlZWtkYXlzIDpcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1snc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKSA/IHRoaXMuX3dlZWtkYXlzW20uZGF5KCldIDpcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzW3RoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoZm9ybWF0KSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXVttLmRheSgpXTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQgPSAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzU2hvcnQgKG0pIHtcbiAgICAgICAgcmV0dXJuIChtKSA/IHRoaXMuX3dlZWtkYXlzU2hvcnRbbS5kYXkoKV0gOiB0aGlzLl93ZWVrZGF5c1Nob3J0O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4gPSAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNNaW4gKG0pIHtcbiAgICAgICAgcmV0dXJuIChtKSA/IHRoaXMuX3dlZWtkYXlzTWluW20uZGF5KCldIDogdGhpcy5fd2Vla2RheXNNaW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UkMSh3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIGlpLCBtb20sIGxsYyA9IHdlZWtkYXlOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW107XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyArK2kpIHtcbiAgICAgICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5cyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2RkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNQYXJzZSAod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBtb20sIHJlZ2V4O1xuXG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZSQxLmNhbGwodGhpcywgd2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG5cbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXMobW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ14nICsgdGhpcy53ZWVrZGF5cyhtb20sICcnKSArICd8XicgKyB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykgKyAnfF4nICsgdGhpcy53ZWVrZGF5c01pbihtb20sICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnZGRkZCcgJiYgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkZCcgJiYgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZCcgJiYgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mV2VlayAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXkgPSB0aGlzLl9pc1VUQyA/IHRoaXMuX2QuZ2V0VVRDRGF5KCkgOiB0aGlzLl9kLmdldERheSgpO1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5wdXQgPSBwYXJzZVdlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChpbnB1dCAtIGRheSwgJ2QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRMb2NhbGVEYXlPZldlZWsgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2Vla2RheSA9ICh0aGlzLmRheSgpICsgNyAtIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdykgJSA3O1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWtkYXkgOiB0aGlzLmFkZChpbnB1dCAtIHdlZWtkYXksICdkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPRGF5T2ZXZWVrIChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vbWVudCNkYXkgZXhjZXB0XG4gICAgICAgIC8vIGFzIGEgZ2V0dGVyLCByZXR1cm5zIDcgaW5zdGVhZCBvZiAwICgxLTcgcmFuZ2UgaW5zdGVhZCBvZiAwLTYpXG4gICAgICAgIC8vIGFzIGEgc2V0dGVyLCBzdW5kYXkgc2hvdWxkIGJlbG9uZyB0byB0aGUgcHJldmlvdXMgd2Vlay5cblxuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIHdlZWtkYXkgPSBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSh0aGlzLmRheSgpICUgNyA/IHdlZWtkYXkgOiB3ZWVrZGF5IC0gNyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkoKSB8fCA3O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c1JlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1JlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c1Nob3J0UmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNTaG9ydFJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzTWluUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c01pblJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXZWVrZGF5c1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG1pblBpZWNlcyA9IFtdLCBzaG9ydFBpZWNlcyA9IFtdLCBsb25nUGllY2VzID0gW10sIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLCBtb20sIG1pbnAsIHNob3J0cCwgbG9uZ3A7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgbWlucCA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJyk7XG4gICAgICAgICAgICBzaG9ydHAgPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICBsb25ncCA9IHRoaXMud2Vla2RheXMobW9tLCAnJyk7XG4gICAgICAgICAgICBtaW5QaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKG1pbnApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydHApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgbWluUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICBzaG9ydFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKHNob3J0UGllY2VzW2ldKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXNbaV0gPSByZWdleEVzY2FwZShsb25nUGllY2VzW2ldKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1peGVkUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaW5QaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIGhGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgJSAxMiB8fCAxMjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpIHx8IDI0O1xuICAgIH1cblxuICAgIGFkZEZvcm1hdFRva2VuKCdIJywgWydISCcsIDJdLCAwLCAnaG91cicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdoJywgWydoaCcsIDJdLCAwLCBoRm9ybWF0KTtcbiAgICBhZGRGb3JtYXRUb2tlbignaycsIFsna2snLCAyXSwgMCwga0Zvcm1hdCk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignaG1tJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW0nLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMoKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgdGhpcy5ob3VycygpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmlkaWVtICh0b2tlbiwgbG93ZXJjYXNlKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLCB0aGlzLm1pbnV0ZXMoKSwgbG93ZXJjYXNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWVyaWRpZW0oJ2EnLCB0cnVlKTtcbiAgICBtZXJpZGllbSgnQScsIGZhbHNlKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnaG91cicsICdoJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnaG91cicsIDEzKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGZ1bmN0aW9uIG1hdGNoTWVyaWRpZW0gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5fbWVyaWRpZW1QYXJzZTtcbiAgICB9XG5cbiAgICBhZGRSZWdleFRva2VuKCdhJywgIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0EnLCAgbWF0Y2hNZXJpZGllbSk7XG4gICAgYWRkUmVnZXhUb2tlbignSCcsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2gnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdrJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignSEgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignaGgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbigna2snLCBtYXRjaDF0bzIsIG1hdGNoMik7XG5cbiAgICBhZGRSZWdleFRva2VuKCdobW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2htbXNzJywgbWF0Y2g1dG82KTtcbiAgICBhZGRSZWdleFRva2VuKCdIbW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0htbXNzJywgbWF0Y2g1dG82KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydIJywgJ0hIJ10sIEhPVVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydrJywgJ2trJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIga0lucHV0ID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBhcnJheVtIT1VSXSA9IGtJbnB1dCA9PT0gMjQgPyAwIDoga0lucHV0O1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oWydhJywgJ0EnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5faXNQbSA9IGNvbmZpZy5fbG9jYWxlLmlzUE0oaW5wdXQpO1xuICAgICAgICBjb25maWcuX21lcmlkaWVtID0gaW5wdXQ7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2gnLCAnaGgnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW0nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvcyA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvcykpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQ7XG4gICAgICAgIHZhciBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczEsIDIpKTtcbiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignSG1tc3MnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0O1xuICAgICAgICB2YXIgcG9zMiA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvczEpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7XG4gICAgICAgIGFycmF5W1NFQ09ORF0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMikpO1xuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlSXNQTSAoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IFF1aXJrcyBNb2RlICYgSUU3IFN0YW5kYXJkcyBNb2RlIGRvIG5vdCBhbGxvdyBhY2Nlc3Npbmcgc3RyaW5ncyBsaWtlIGFycmF5c1xuICAgICAgICAvLyBVc2luZyBjaGFyQXQgc2hvdWxkIGJlIG1vcmUgY29tcGF0aWJsZS5cbiAgICAgICAgcmV0dXJuICgoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkgPT09ICdwJyk7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNZXJpZGllbVBhcnNlID0gL1thcF1cXC4/bT9cXC4/L2k7XG4gICAgZnVuY3Rpb24gbG9jYWxlTWVyaWRpZW0gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdwbScgOiAnUE0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnYW0nIDogJ0FNJztcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8gU2V0dGluZyB0aGUgaG91ciBzaG91bGQga2VlcCB0aGUgdGltZSwgYmVjYXVzZSB0aGUgdXNlciBleHBsaWNpdGx5XG4gICAgLy8gc3BlY2lmaWVkIHdoaWNoIGhvdXIgdGhleSB3YW50LiBTbyB0cnlpbmcgdG8gbWFpbnRhaW4gdGhlIHNhbWUgaG91ciAoaW5cbiAgICAvLyBhIG5ldyB0aW1lem9uZSkgbWFrZXMgc2Vuc2UuIEFkZGluZy9zdWJ0cmFjdGluZyBob3VycyBkb2VzIG5vdCBmb2xsb3dcbiAgICAvLyB0aGlzIHJ1bGUuXG4gICAgdmFyIGdldFNldEhvdXIgPSBtYWtlR2V0U2V0KCdIb3VycycsIHRydWUpO1xuXG4gICAgdmFyIGJhc2VDb25maWcgPSB7XG4gICAgICAgIGNhbGVuZGFyOiBkZWZhdWx0Q2FsZW5kYXIsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiBkZWZhdWx0TG9uZ0RhdGVGb3JtYXQsXG4gICAgICAgIGludmFsaWREYXRlOiBkZWZhdWx0SW52YWxpZERhdGUsXG4gICAgICAgIG9yZGluYWw6IGRlZmF1bHRPcmRpbmFsLFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiBkZWZhdWx0UmVsYXRpdmVUaW1lLFxuXG4gICAgICAgIG1vbnRoczogZGVmYXVsdExvY2FsZU1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCxcblxuICAgICAgICB3ZWVrOiBkZWZhdWx0TG9jYWxlV2VlayxcblxuICAgICAgICB3ZWVrZGF5czogZGVmYXVsdExvY2FsZVdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCxcblxuICAgICAgICBtZXJpZGllbVBhcnNlOiBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZVxuICAgIH07XG5cbiAgICAvLyBpbnRlcm5hbCBzdG9yYWdlIGZvciBsb2NhbGUgY29uZmlnIGZpbGVzXG4gICAgdmFyIGxvY2FsZXMgPSB7fTtcbiAgICB2YXIgbG9jYWxlRmFtaWxpZXMgPSB7fTtcbiAgICB2YXIgZ2xvYmFsTG9jYWxlO1xuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ID8ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICctJykgOiBrZXk7XG4gICAgfVxuXG4gICAgLy8gcGljayB0aGUgbG9jYWxlIGZyb20gdGhlIGFycmF5XG4gICAgLy8gdHJ5IFsnZW4tYXUnLCAnZW4tZ2InXSBhcyAnZW4tYXUnLCAnZW4tZ2InLCAnZW4nLCBhcyBpbiBtb3ZlIHRocm91Z2ggdGhlIGxpc3QgdHJ5aW5nIGVhY2hcbiAgICAvLyBzdWJzdHJpbmcgZnJvbSBtb3N0IHNwZWNpZmljIHRvIGxlYXN0LCBidXQgbW92ZSB0byB0aGUgbmV4dCBhcnJheSBpdGVtIGlmIGl0J3MgYSBtb3JlIHNwZWNpZmljIHZhcmlhbnQgdGhhbiB0aGUgY3VycmVudCByb290XG4gICAgZnVuY3Rpb24gY2hvb3NlTG9jYWxlKG5hbWVzKSB7XG4gICAgICAgIHZhciBpID0gMCwgaiwgbmV4dCwgbG9jYWxlLCBzcGxpdDtcblxuICAgICAgICB3aGlsZSAoaSA8IG5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3BsaXQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaV0pLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBqID0gc3BsaXQubGVuZ3RoO1xuICAgICAgICAgICAgbmV4dCA9IG5vcm1hbGl6ZUxvY2FsZShuYW1lc1tpICsgMV0pO1xuICAgICAgICAgICAgbmV4dCA9IG5leHQgPyBuZXh0LnNwbGl0KCctJykgOiBudWxsO1xuICAgICAgICAgICAgd2hpbGUgKGogPiAwKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShzcGxpdC5zbGljZSgwLCBqKS5qb2luKCctJykpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5leHQgJiYgbmV4dC5sZW5ndGggPj0gaiAmJiBjb21wYXJlQXJyYXlzKHNwbGl0LCBuZXh0LCB0cnVlKSA+PSBqIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvL3RoZSBuZXh0IGFycmF5IGl0ZW0gaXMgYmV0dGVyIHRoYW4gYSBzaGFsbG93ZXIgc3Vic3RyaW5nIG9mIHRoaXMgb25lXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2FkTG9jYWxlKG5hbWUpIHtcbiAgICAgICAgdmFyIG9sZExvY2FsZSA9IG51bGw7XG4gICAgICAgIC8vIFRPRE86IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZ2lzdGVyIGFuZCBsb2FkIGFsbCB0aGUgbG9jYWxlcyBpbiBOb2RlXG4gICAgICAgIGlmICghbG9jYWxlc1tuYW1lXSAmJiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpICYmXG4gICAgICAgICAgICAgICAgbW9kdWxlICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9sZExvY2FsZSA9IGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICAgICAgICAgICAgICB2YXIgYWxpYXNlZFJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgICAgICAgICAgIGFsaWFzZWRSZXF1aXJlKCcuL2xvY2FsZS8nICsgbmFtZSk7XG4gICAgICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG9sZExvY2FsZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBsb2FkIGxvY2FsZSBhbmQgdGhlbiBzZXQgdGhlIGdsb2JhbCBsb2NhbGUuICBJZlxuICAgIC8vIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGluLCBpdCB3aWxsIHNpbXBseSByZXR1cm4gdGhlIGN1cnJlbnQgZ2xvYmFsXG4gICAgLy8gbG9jYWxlIGtleS5cbiAgICBmdW5jdGlvbiBnZXRTZXRHbG9iYWxMb2NhbGUgKGtleSwgdmFsdWVzKSB7XG4gICAgICAgIHZhciBkYXRhO1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWVzKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkZWZpbmVMb2NhbGUoa2V5LCB2YWx1ZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIC8vIG1vbWVudC5kdXJhdGlvbi5fbG9jYWxlID0gbW9tZW50Ll9sb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgICAgIGdsb2JhbExvY2FsZSA9IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgICAgICAgICAvL3dhcm4gdXNlciBpZiBhcmd1bWVudHMgYXJlIHBhc3NlZCBidXQgdGhlIGxvY2FsZSBjb3VsZCBub3QgYmUgc2V0XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTG9jYWxlICcgKyBrZXkgKyAgJyBub3QgZm91bmQuIERpZCB5b3UgZm9yZ2V0IHRvIGxvYWQgaXQ/Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVMb2NhbGUgKG5hbWUsIGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuICAgICAgICAgICAgY29uZmlnLmFiYnIgPSBuYW1lO1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZSgnZGVmaW5lTG9jYWxlT3ZlcnJpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBtb21lbnQudXBkYXRlTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgdG8gY2hhbmdlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2FuIGV4aXN0aW5nIGxvY2FsZS4gbW9tZW50LmRlZmluZUxvY2FsZShsb2NhbGVOYW1lLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcpIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGNyZWF0aW5nIGEgbmV3IGxvY2FsZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kZWZpbmUtbG9jYWxlLyBmb3IgbW9yZSBpbmZvLicpO1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbbmFtZV0uX2NvbmZpZztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZXNbY29uZmlnLnBhcmVudExvY2FsZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLl9jb25maWc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShjb25maWcucGFyZW50TG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBuZXcgTG9jYWxlKG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZykpO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxlRmFtaWxpZXNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmluZUxvY2FsZSh4Lm5hbWUsIHguY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBsb2NhbGUgQUZURVIgYWxsIGNoaWxkIGxvY2FsZXMgaGF2ZSBiZWVuXG4gICAgICAgICAgICAvLyBjcmVhdGVkLCBzbyB3ZSB3b24ndCBlbmQgdXAgd2l0aCB0aGUgY2hpbGQgbG9jYWxlIHNldC5cbiAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcblxuXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVzZWZ1bCBmb3IgdGVzdGluZ1xuICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUxvY2FsZShuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCB0bXBMb2NhbGUsIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7XG4gICAgICAgICAgICAvLyBNRVJHRVxuICAgICAgICAgICAgdG1wTG9jYWxlID0gbG9hZExvY2FsZShuYW1lKTtcbiAgICAgICAgICAgIGlmICh0bXBMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IHRtcExvY2FsZS5fY29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uZmlnID0gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZSA9IG5ldyBMb2NhbGUoY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZS5wYXJlbnRMb2NhbGUgPSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IGxvY2FsZTtcblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBwYXNzIG51bGwgZm9yIGNvbmZpZyB0byB1bnVwZGF0ZSwgdXNlZnVsIGZvciB0ZXN0c1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyBsb2NhbGUgZGF0YVxuICAgIGZ1bmN0aW9uIGdldExvY2FsZSAoa2V5KSB7XG4gICAgICAgIHZhciBsb2NhbGU7XG5cbiAgICAgICAgaWYgKGtleSAmJiBrZXkuX2xvY2FsZSAmJiBrZXkuX2xvY2FsZS5fYWJicikge1xuICAgICAgICAgICAga2V5ID0ga2V5Ll9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICAvL3Nob3J0LWNpcmN1aXQgZXZlcnl0aGluZyBlbHNlXG4gICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtleSA9IFtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNob29zZUxvY2FsZShrZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RMb2NhbGVzKCkge1xuICAgICAgICByZXR1cm4ga2V5cyhsb2NhbGVzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja092ZXJmbG93IChtKSB7XG4gICAgICAgIHZhciBvdmVyZmxvdztcbiAgICAgICAgdmFyIGEgPSBtLl9hO1xuXG4gICAgICAgIGlmIChhICYmIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9PT0gLTIpIHtcbiAgICAgICAgICAgIG92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICBhW01PTlRIXSAgICAgICA8IDAgfHwgYVtNT05USF0gICAgICAgPiAxMSAgPyBNT05USCA6XG4gICAgICAgICAgICAgICAgYVtEQVRFXSAgICAgICAgPCAxIHx8IGFbREFURV0gICAgICAgID4gZGF5c0luTW9udGgoYVtZRUFSXSwgYVtNT05USF0pID8gREFURSA6XG4gICAgICAgICAgICAgICAgYVtIT1VSXSAgICAgICAgPCAwIHx8IGFbSE9VUl0gICAgICAgID4gMjQgfHwgKGFbSE9VUl0gPT09IDI0ICYmIChhW01JTlVURV0gIT09IDAgfHwgYVtTRUNPTkRdICE9PSAwIHx8IGFbTUlMTElTRUNPTkRdICE9PSAwKSkgPyBIT1VSIDpcbiAgICAgICAgICAgICAgICBhW01JTlVURV0gICAgICA8IDAgfHwgYVtNSU5VVEVdICAgICAgPiA1OSAgPyBNSU5VVEUgOlxuICAgICAgICAgICAgICAgIGFbU0VDT05EXSAgICAgIDwgMCB8fCBhW1NFQ09ORF0gICAgICA+IDU5ICA/IFNFQ09ORCA6XG4gICAgICAgICAgICAgICAgYVtNSUxMSVNFQ09ORF0gPCAwIHx8IGFbTUlMTElTRUNPTkRdID4gOTk5ID8gTUlMTElTRUNPTkQgOlxuICAgICAgICAgICAgICAgIC0xO1xuXG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd0RheU9mWWVhciAmJiAob3ZlcmZsb3cgPCBZRUFSIHx8IG92ZXJmbG93ID4gREFURSkpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IERBVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtzICYmIG92ZXJmbG93ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gV0VFSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93V2Vla2RheSAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUtEQVk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9IG92ZXJmbG93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGljayB0aGUgZmlyc3QgZGVmaW5lZCBvZiB0d28gb3IgdGhyZWUgYXJndW1lbnRzLlxuICAgIGZ1bmN0aW9uIGRlZmF1bHRzKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGIgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3VycmVudERhdGVBcnJheShjb25maWcpIHtcbiAgICAgICAgLy8gaG9va3MgaXMgYWN0dWFsbHkgdGhlIGV4cG9ydGVkIG1vbWVudCBvYmplY3RcbiAgICAgICAgdmFyIG5vd1ZhbHVlID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICBpZiAoY29uZmlnLl91c2VVVEMpIHtcbiAgICAgICAgICAgIHJldHVybiBbbm93VmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgbm93VmFsdWUuZ2V0VVRDTW9udGgoKSwgbm93VmFsdWUuZ2V0VVRDRGF0ZSgpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW25vd1ZhbHVlLmdldEZ1bGxZZWFyKCksIG5vd1ZhbHVlLmdldE1vbnRoKCksIG5vd1ZhbHVlLmdldERhdGUoKV07XG4gICAgfVxuXG4gICAgLy8gY29udmVydCBhbiBhcnJheSB0byBhIGRhdGUuXG4gICAgLy8gdGhlIGFycmF5IHNob3VsZCBtaXJyb3IgdGhlIHBhcmFtZXRlcnMgYmVsb3dcbiAgICAvLyBub3RlOiBhbGwgdmFsdWVzIHBhc3QgdGhlIHllYXIgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIGRlZmF1bHQgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSB2YWx1ZS5cbiAgICAvLyBbeWVhciwgbW9udGgsIGRheSAsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZF1cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tQXJyYXkgKGNvbmZpZykge1xuICAgICAgICB2YXIgaSwgZGF0ZSwgaW5wdXQgPSBbXSwgY3VycmVudERhdGUsIGV4cGVjdGVkV2Vla2RheSwgeWVhclRvVXNlO1xuXG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGVBcnJheShjb25maWcpO1xuXG4gICAgICAgIC8vY29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2RheXNcbiAgICAgICAgaWYgKGNvbmZpZy5fdyAmJiBjb25maWcuX2FbREFURV0gPT0gbnVsbCAmJiBjb25maWcuX2FbTU9OVEhdID09IG51bGwpIHtcbiAgICAgICAgICAgIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNldCwgZmlndXJlIG91dCB3aGF0IGl0IGlzXG4gICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciAhPSBudWxsKSB7XG4gICAgICAgICAgICB5ZWFyVG9Vc2UgPSBkZWZhdWx0cyhjb25maWcuX2FbWUVBUl0sIGN1cnJlbnREYXRlW1lFQVJdKTtcblxuICAgICAgICAgICAgaWYgKGNvbmZpZy5fZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyVG9Vc2UpIHx8IGNvbmZpZy5fZGF5T2ZZZWFyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93RGF5T2ZZZWFyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoeWVhclRvVXNlLCAwLCBjb25maWcuX2RheU9mWWVhcik7XG4gICAgICAgICAgICBjb25maWcuX2FbTU9OVEhdID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICAgICAgY29uZmlnLl9hW0RBVEVdID0gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgZGF0ZS5cbiAgICAgICAgLy8gKiBpZiBubyB5ZWFyLCBtb250aCwgZGF5IG9mIG1vbnRoIGFyZSBnaXZlbiwgZGVmYXVsdCB0byB0b2RheVxuICAgICAgICAvLyAqIGlmIGRheSBvZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBtb250aCBhbmQgeWVhclxuICAgICAgICAvLyAqIGlmIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG9ubHkgeWVhclxuICAgICAgICAvLyAqIGlmIHllYXIgaXMgZ2l2ZW4sIGRvbid0IGRlZmF1bHQgYW55dGhpbmdcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDMgJiYgY29uZmlnLl9hW2ldID09IG51bGw7ICsraSkge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSBjdXJyZW50RGF0ZVtpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFplcm8gb3V0IHdoYXRldmVyIHdhcyBub3QgZGVmYXVsdGVkLCBpbmNsdWRpbmcgdGltZVxuICAgICAgICBmb3IgKDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSAoY29uZmlnLl9hW2ldID09IG51bGwpID8gKGkgPT09IDIgPyAxIDogMCkgOiBjb25maWcuX2FbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgMjQ6MDA6MDAuMDAwXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPT09IDI0ICYmXG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW01JTlVURV0gPT09IDAgJiZcbiAgICAgICAgICAgICAgICBjb25maWcuX2FbU0VDT05EXSA9PT0gMCAmJlxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtNSUxMSVNFQ09ORF0gPT09IDApIHtcbiAgICAgICAgICAgIGNvbmZpZy5fbmV4dERheSA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnLl9kID0gKGNvbmZpZy5fdXNlVVRDID8gY3JlYXRlVVRDRGF0ZSA6IGNyZWF0ZURhdGUpLmFwcGx5KG51bGwsIGlucHV0KTtcbiAgICAgICAgZXhwZWN0ZWRXZWVrZGF5ID0gY29uZmlnLl91c2VVVEMgPyBjb25maWcuX2QuZ2V0VVRDRGF5KCkgOiBjb25maWcuX2QuZ2V0RGF5KCk7XG5cbiAgICAgICAgLy8gQXBwbHkgdGltZXpvbmUgb2Zmc2V0IGZyb20gaW5wdXQuIFRoZSBhY3R1YWwgdXRjT2Zmc2V0IGNhbiBiZSBjaGFuZ2VkXG4gICAgICAgIC8vIHdpdGggcGFyc2Vab25lLlxuICAgICAgICBpZiAoY29uZmlnLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kLnNldFVUQ01pbnV0ZXMoY29uZmlnLl9kLmdldFVUQ01pbnV0ZXMoKSAtIGNvbmZpZy5fdHptKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX25leHREYXkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDI0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIG1pc21hdGNoaW5nIGRheSBvZiB3ZWVrXG4gICAgICAgIGlmIChjb25maWcuX3cgJiYgdHlwZW9mIGNvbmZpZy5fdy5kICE9PSAndW5kZWZpbmVkJyAmJiBjb25maWcuX3cuZCAhPT0gZXhwZWN0ZWRXZWVrZGF5KSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZykge1xuICAgICAgICB2YXIgdywgd2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95LCB0ZW1wLCB3ZWVrZGF5T3ZlcmZsb3c7XG5cbiAgICAgICAgdyA9IGNvbmZpZy5fdztcbiAgICAgICAgaWYgKHcuR0cgIT0gbnVsbCB8fCB3LlcgIT0gbnVsbCB8fCB3LkUgIT0gbnVsbCkge1xuICAgICAgICAgICAgZG93ID0gMTtcbiAgICAgICAgICAgIGRveSA9IDQ7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gdGFrZSB0aGUgY3VycmVudCBpc29XZWVrWWVhciwgYnV0IHRoYXQgZGVwZW5kcyBvblxuICAgICAgICAgICAgLy8gaG93IHdlIGludGVycHJldCBub3cgKGxvY2FsLCB1dGMsIGZpeGVkIG9mZnNldCkuIFNvIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYSBub3cgdmVyc2lvbiBvZiBjdXJyZW50IGNvbmZpZyAodGFrZSBsb2NhbC91dGMvb2Zmc2V0IGZsYWdzLCBhbmRcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBub3cpLlxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LkdHLCBjb25maWcuX2FbWUVBUl0sIHdlZWtPZlllYXIoY3JlYXRlTG9jYWwoKSwgMSwgNCkueWVhcik7XG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody5XLCAxKTtcbiAgICAgICAgICAgIHdlZWtkYXkgPSBkZWZhdWx0cyh3LkUsIDEpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAxIHx8IHdlZWtkYXkgPiA3KSB7XG4gICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvdyA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRvdztcbiAgICAgICAgICAgIGRveSA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRveTtcblxuICAgICAgICAgICAgdmFyIGN1cldlZWsgPSB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIGRvdywgZG95KTtcblxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LmdnLCBjb25maWcuX2FbWUVBUl0sIGN1cldlZWsueWVhcik7XG5cbiAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCB3ZWVrLlxuICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcudywgY3VyV2Vlay53ZWVrKTtcblxuICAgICAgICAgICAgaWYgKHcuZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gd2Vla2RheSAtLSBsb3cgZGF5IG51bWJlcnMgYXJlIGNvbnNpZGVyZWQgbmV4dCB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZDtcbiAgICAgICAgICAgICAgICBpZiAod2Vla2RheSA8IDAgfHwgd2Vla2RheSA+IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHcuZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9jYWwgd2Vla2RheSAtLSBjb3VudGluZyBzdGFydHMgZnJvbSBiZWdpbmluZyBvZiB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZSArIGRvdztcbiAgICAgICAgICAgICAgICBpZiAody5lIDwgMCB8fCB3LmUgPiA2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGJlZ2luaW5nIG9mIHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gZG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3ZWVrIDwgMSB8fCB3ZWVrID4gd2Vla3NJblllYXIod2Vla1llYXIsIGRvdywgZG95KSkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93V2Vla3MgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWtkYXlPdmVyZmxvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dXZWVrZGF5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRlbXAgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtZRUFSXSA9IHRlbXAueWVhcjtcbiAgICAgICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdGVtcC5kYXlPZlllYXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpc28gODYwMSByZWdleFxuICAgIC8vIDAwMDAtMDAtMDAgMDAwMC1XMDAgb3IgMDAwMC1XMDAtMCArIFQgKyAwMCBvciAwMDowMCBvciAwMDowMDowMCBvciAwMDowMDowMC4wMDAgKyArMDA6MDAgb3IgKzAwMDAgb3IgKzAwKVxuICAgIHZhciBleHRlbmRlZElzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KS0oPzpcXGRcXGQtXFxkXFxkfFdcXGRcXGQtXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86OlxcZFxcZCg/OjpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoW1xcK1xcLV1cXGRcXGQoPzo6P1xcZFxcZCk/fFxccypaKT8pPyQvO1xuICAgIHZhciBiYXNpY0lzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KSg/OlxcZFxcZFxcZFxcZHxXXFxkXFxkXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86XFxkXFxkKD86XFxkXFxkKD86Wy4sXVxcZCspPyk/KT8pKFtcXCtcXC1dXFxkXFxkKD86Oj9cXGRcXGQpP3xcXHMqWik/KT8kLztcblxuICAgIHZhciB0elJlZ2V4ID0gL1p8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8vO1xuXG4gICAgdmFyIGlzb0RhdGVzID0gW1xuICAgICAgICBbJ1lZWVlZWS1NTS1ERCcsIC9bKy1dXFxkezZ9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgWydZWVlZLU1NLUREJywgL1xcZHs0fS1cXGRcXGQtXFxkXFxkL10sXG4gICAgICAgIFsnR0dHRy1bV11XVy1FJywgL1xcZHs0fS1XXFxkXFxkLVxcZC9dLFxuICAgICAgICBbJ0dHR0ctW1ddV1cnLCAvXFxkezR9LVdcXGRcXGQvLCBmYWxzZV0sXG4gICAgICAgIFsnWVlZWS1EREQnLCAvXFxkezR9LVxcZHszfS9dLFxuICAgICAgICBbJ1lZWVktTU0nLCAvXFxkezR9LVxcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZWVlNTUREJywgL1srLV1cXGR7MTB9L10sXG4gICAgICAgIFsnWVlZWU1NREQnLCAvXFxkezh9L10sXG4gICAgICAgIC8vIFlZWVlNTSBpcyBOT1QgYWxsb3dlZCBieSB0aGUgc3RhbmRhcmRcbiAgICAgICAgWydHR0dHW1ddV1dFJywgL1xcZHs0fVdcXGR7M30vXSxcbiAgICAgICAgWydHR0dHW1ddV1cnLCAvXFxkezR9V1xcZHsyfS8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZREREJywgL1xcZHs3fS9dXG4gICAgXTtcblxuICAgIC8vIGlzbyB0aW1lIGZvcm1hdHMgYW5kIHJlZ2V4ZXNcbiAgICB2YXIgaXNvVGltZXMgPSBbXG4gICAgICAgIFsnSEg6bW06c3MuU1NTUycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcyxTU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICBbJ0hIOm1tJywgL1xcZFxcZDpcXGRcXGQvXSxcbiAgICAgICAgWydISG1tc3MuU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGRcXC5cXGQrL10sXG4gICAgICAgIFsnSEhtbXNzLFNTU1MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISG1tc3MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkL10sXG4gICAgICAgIFsnSEhtbScsIC9cXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgWydISCcsIC9cXGRcXGQvXVxuICAgIF07XG5cbiAgICB2YXIgYXNwTmV0SnNvblJlZ2V4ID0gL15cXC8/RGF0ZVxcKChcXC0/XFxkKykvaTtcblxuICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUlTTyhjb25maWcpIHtcbiAgICAgICAgdmFyIGksIGwsXG4gICAgICAgICAgICBzdHJpbmcgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBtYXRjaCA9IGV4dGVuZGVkSXNvUmVnZXguZXhlYyhzdHJpbmcpIHx8IGJhc2ljSXNvUmVnZXguZXhlYyhzdHJpbmcpLFxuICAgICAgICAgICAgYWxsb3dUaW1lLCBkYXRlRm9ybWF0LCB0aW1lRm9ybWF0LCB0ekZvcm1hdDtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmlzbyA9IHRydWU7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29EYXRlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNvRGF0ZXNbaV1bMV0uZXhlYyhtYXRjaFsxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCA9IGlzb0RhdGVzW2ldWzBdO1xuICAgICAgICAgICAgICAgICAgICBhbGxvd1RpbWUgPSBpc29EYXRlc1tpXVsyXSAhPT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRlRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbM10pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvVGltZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc29UaW1lc1tpXVsxXS5leGVjKG1hdGNoWzNdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hbMl0gc2hvdWxkIGJlICdUJyBvciBzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCA9IChtYXRjaFsyXSB8fCAnICcpICsgaXNvVGltZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGltZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhbGxvd1RpbWUgJiYgdGltZUZvcm1hdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzRdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR6UmVnZXguZXhlYyhtYXRjaFs0XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHpGb3JtYXQgPSAnWic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25maWcuX2YgPSBkYXRlRm9ybWF0ICsgKHRpbWVGb3JtYXQgfHwgJycpICsgKHR6Rm9ybWF0IHx8ICcnKTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkZDIDI4MjIgcmVnZXg6IEZvciBkZXRhaWxzIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjgyMiNzZWN0aW9uLTMuM1xuICAgIHZhciByZmMyODIyID0gL14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfChbKy1dXFxkezR9KSkkLztcblxuICAgIGZ1bmN0aW9uIGV4dHJhY3RGcm9tUkZDMjgyMlN0cmluZ3MoeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtcbiAgICAgICAgICAgIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpLFxuICAgICAgICAgICAgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpLFxuICAgICAgICAgICAgcGFyc2VJbnQoZGF5U3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChob3VyU3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtaW51dGVTdHIsIDEwKVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChzZWNvbmRTdHIpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlSW50KHNlY29uZFN0ciwgMTApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhclN0cikge1xuICAgICAgICB2YXIgeWVhciA9IHBhcnNlSW50KHllYXJTdHIsIDEwKTtcbiAgICAgICAgaWYgKHllYXIgPD0gNDkpIHtcbiAgICAgICAgICAgIHJldHVybiAyMDAwICsgeWVhcjtcbiAgICAgICAgfSBlbHNlIGlmICh5ZWFyIDw9IDk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIDE5MDAgKyB5ZWFyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5ZWFyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXByb2Nlc3NSRkMyODIyKHMpIHtcbiAgICAgICAgLy8gUmVtb3ZlIGNvbW1lbnRzIGFuZCBmb2xkaW5nIHdoaXRlc3BhY2UgYW5kIHJlcGxhY2UgbXVsdGlwbGUtc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXFwoW14pXSpcXCl8W1xcblxcdF0vZywgJyAnKS5yZXBsYWNlKC8oXFxzXFxzKykvZywgJyAnKS5yZXBsYWNlKC9eXFxzXFxzKi8sICcnKS5yZXBsYWNlKC9cXHNcXHMqJC8sICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1dlZWtkYXkod2Vla2RheVN0ciwgcGFyc2VkSW5wdXQsIGNvbmZpZykge1xuICAgICAgICBpZiAod2Vla2RheVN0cikge1xuICAgICAgICAgICAgLy8gVE9ETzogUmVwbGFjZSB0aGUgdmFuaWxsYSBKUyBEYXRlIG9iamVjdCB3aXRoIGFuIGluZGVwZW50ZW50IGRheS1vZi13ZWVrIGNoZWNrLlxuICAgICAgICAgICAgdmFyIHdlZWtkYXlQcm92aWRlZCA9IGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0ciksXG4gICAgICAgICAgICAgICAgd2Vla2RheUFjdHVhbCA9IG5ldyBEYXRlKHBhcnNlZElucHV0WzBdLCBwYXJzZWRJbnB1dFsxXSwgcGFyc2VkSW5wdXRbMl0pLmdldERheSgpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXlQcm92aWRlZCAhPT0gd2Vla2RheUFjdHVhbCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLndlZWtkYXlNaXNtYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBvYnNPZmZzZXRzID0ge1xuICAgICAgICBVVDogMCxcbiAgICAgICAgR01UOiAwLFxuICAgICAgICBFRFQ6IC00ICogNjAsXG4gICAgICAgIEVTVDogLTUgKiA2MCxcbiAgICAgICAgQ0RUOiAtNSAqIDYwLFxuICAgICAgICBDU1Q6IC02ICogNjAsXG4gICAgICAgIE1EVDogLTYgKiA2MCxcbiAgICAgICAgTVNUOiAtNyAqIDYwLFxuICAgICAgICBQRFQ6IC03ICogNjAsXG4gICAgICAgIFBTVDogLTggKiA2MFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVPZmZzZXQob2JzT2Zmc2V0LCBtaWxpdGFyeU9mZnNldCwgbnVtT2Zmc2V0KSB7XG4gICAgICAgIGlmIChvYnNPZmZzZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnNPZmZzZXRzW29ic09mZnNldF07XG4gICAgICAgIH0gZWxzZSBpZiAobWlsaXRhcnlPZmZzZXQpIHtcbiAgICAgICAgICAgIC8vIHRoZSBvbmx5IGFsbG93ZWQgbWlsaXRhcnkgdHogaXMgWlxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBwYXJzZUludChudW1PZmZzZXQsIDEwKTtcbiAgICAgICAgICAgIHZhciBtID0gaG0gJSAxMDAsIGggPSAoaG0gLSBtKSAvIDEwMDtcbiAgICAgICAgICAgIHJldHVybiBoICogNjAgKyBtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBhbmQgdGltZSBmcm9tIHJlZiAyODIyIGZvcm1hdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZykge1xuICAgICAgICB2YXIgbWF0Y2ggPSByZmMyODIyLmV4ZWMocHJlcHJvY2Vzc1JGQzI4MjIoY29uZmlnLl9pKSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgdmFyIHBhcnNlZEFycmF5ID0gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyhtYXRjaFs0XSwgbWF0Y2hbM10sIG1hdGNoWzJdLCBtYXRjaFs1XSwgbWF0Y2hbNl0sIG1hdGNoWzddKTtcbiAgICAgICAgICAgIGlmICghY2hlY2tXZWVrZGF5KG1hdGNoWzFdLCBwYXJzZWRBcnJheSwgY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uZmlnLl9hID0gcGFyc2VkQXJyYXk7XG4gICAgICAgICAgICBjb25maWcuX3R6bSA9IGNhbGN1bGF0ZU9mZnNldChtYXRjaFs4XSwgbWF0Y2hbOV0sIG1hdGNoWzEwXSk7XG5cbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IGNyZWF0ZVVUQ0RhdGUuYXBwbHkobnVsbCwgY29uZmlnLl9hKTtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnJmYzI4MjIgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gaXNvIGZvcm1hdCBvciBmYWxsYmFja1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaGVkID0gYXNwTmV0SnNvblJlZ2V4LmV4ZWMoY29uZmlnLl9pKTtcblxuICAgICAgICBpZiAobWF0Y2hlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoK21hdGNoZWRbMV0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICBpZiAoY29uZmlnLl9pc1ZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNvbmZpZy5faXNWYWxpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmluYWwgYXR0ZW1wdCwgdXNlIElucHV0IEZhbGxiYWNrXG4gICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2sgPSBkZXByZWNhdGUoXG4gICAgICAgICd2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3IgSVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgJyArXG4gICAgICAgICd3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlICcgK1xuICAgICAgICAnZGlzY291cmFnZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhbiB1cGNvbWluZyBtYWpvciByZWxlYXNlLiBQbGVhc2UgcmVmZXIgdG8gJyArXG4gICAgICAgICdodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uJyxcbiAgICAgICAgZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoY29uZmlnLl9pICsgKGNvbmZpZy5fdXNlVVRDID8gJyBVVEMnIDogJycpKTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgSVNPIHN0YW5kYXJkXG4gICAgaG9va3MuSVNPXzg2MDEgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBSRkMgMjgyMiBmb3JtXG4gICAgaG9va3MuUkZDXzI4MjIgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmdcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZykge1xuICAgICAgICAvLyBUT0RPOiBNb3ZlIHRoaXMgdG8gYW5vdGhlciBwYXJ0IG9mIHRoZSBjcmVhdGlvbiBmbG93IHRvIHByZXZlbnQgY2lyY3VsYXIgZGVwc1xuICAgICAgICBpZiAoY29uZmlnLl9mID09PSBob29rcy5JU09fODYwMSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcuX2YgPT09IGhvb2tzLlJGQ18yODIyKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tUkZDMjgyMihjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZy5fYSA9IFtdO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IHRydWU7XG5cbiAgICAgICAgLy8gVGhpcyBhcnJheSBpcyB1c2VkIHRvIG1ha2UgYSBEYXRlLCBlaXRoZXIgd2l0aCBgbmV3IERhdGVgIG9yIGBEYXRlLlVUQ2BcbiAgICAgICAgdmFyIHN0cmluZyA9ICcnICsgY29uZmlnLl9pLFxuICAgICAgICAgICAgaSwgcGFyc2VkSW5wdXQsIHRva2VucywgdG9rZW4sIHNraXBwZWQsXG4gICAgICAgICAgICBzdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCA9IDA7XG5cbiAgICAgICAgdG9rZW5zID0gZXhwYW5kRm9ybWF0KGNvbmZpZy5fZiwgY29uZmlnLl9sb2NhbGUpLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpIHx8IFtdO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgcGFyc2VkSW5wdXQgPSAoc3RyaW5nLm1hdGNoKGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSkgfHwgW10pWzBdO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3Rva2VuJywgdG9rZW4sICdwYXJzZWRJbnB1dCcsIHBhcnNlZElucHV0LFxuICAgICAgICAgICAgLy8gICAgICAgICAncmVnZXgnLCBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgc2tpcHBlZCA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YocGFyc2VkSW5wdXQpKTtcbiAgICAgICAgICAgICAgICBpZiAoc2tpcHBlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc2tpcHBlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zbGljZShzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkgKyBwYXJzZWRJbnB1dC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggKz0gcGFyc2VkSW5wdXQubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2UgaWYgaXQncyBub3QgYSBrbm93biB0b2tlblxuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkVG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgcGFyc2VkSW5wdXQsIGNvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb25maWcuX3N0cmljdCAmJiAhcGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhZGQgcmVtYWluaW5nIHVucGFyc2VkIGlucHV0IGxlbmd0aCB0byB0aGUgc3RyaW5nXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmNoYXJzTGVmdE92ZXIgPSBzdHJpbmdMZW5ndGggLSB0b3RhbFBhcnNlZElucHV0TGVuZ3RoO1xuICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNsZWFyIF8xMmggZmxhZyBpZiBob3VyIGlzIDw9IDEyXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPD0gMTIgJiZcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPT09IHRydWUgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5wYXJzZWREYXRlUGFydHMgPSBjb25maWcuX2Euc2xpY2UoMCk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLm1lcmlkaWVtID0gY29uZmlnLl9tZXJpZGllbTtcbiAgICAgICAgLy8gaGFuZGxlIG1lcmlkaWVtXG4gICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IG1lcmlkaWVtRml4V3JhcChjb25maWcuX2xvY2FsZSwgY29uZmlnLl9hW0hPVVJdLCBjb25maWcuX21lcmlkaWVtKTtcblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICAgICAgY2hlY2tPdmVyZmxvdyhjb25maWcpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbWVyaWRpZW1GaXhXcmFwIChsb2NhbGUsIGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgIHZhciBpc1BtO1xuXG4gICAgICAgIGlmIChtZXJpZGllbSA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlLm1lcmlkaWVtSG91ciAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLm1lcmlkaWVtSG91cihob3VyLCBtZXJpZGllbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxlLmlzUE0gIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gRmFsbGJhY2tcbiAgICAgICAgICAgIGlzUG0gPSBsb2NhbGUuaXNQTShtZXJpZGllbSk7XG4gICAgICAgICAgICBpZiAoaXNQbSAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyICs9IDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1BtICYmIGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHN1cHBvc2VkIHRvIGhhcHBlblxuICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBhcnJheSBvZiBmb3JtYXQgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpIHtcbiAgICAgICAgdmFyIHRlbXBDb25maWcsXG4gICAgICAgICAgICBiZXN0TW9tZW50LFxuXG4gICAgICAgICAgICBzY29yZVRvQmVhdCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBjdXJyZW50U2NvcmU7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fZi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb25maWcuX2YubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSA9IDA7XG4gICAgICAgICAgICB0ZW1wQ29uZmlnID0gY29weUNvbmZpZyh7fSwgY29uZmlnKTtcbiAgICAgICAgICAgIGlmIChjb25maWcuX3VzZVVUQyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGVtcENvbmZpZy5fdXNlVVRDID0gY29uZmlnLl91c2VVVEM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZW1wQ29uZmlnLl9mID0gY29uZmlnLl9mW2ldO1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdCh0ZW1wQ29uZmlnKTtcblxuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHRlbXBDb25maWcpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGFueSBpbnB1dCB0aGF0IHdhcyBub3QgcGFyc2VkIGFkZCBhIHBlbmFsdHkgZm9yIHRoYXQgZm9ybWF0XG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLmNoYXJzTGVmdE92ZXI7XG5cbiAgICAgICAgICAgIC8vb3IgdG9rZW5zXG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnVudXNlZFRva2Vucy5sZW5ndGggKiAxMDtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnNjb3JlID0gY3VycmVudFNjb3JlO1xuXG4gICAgICAgICAgICBpZiAoc2NvcmVUb0JlYXQgPT0gbnVsbCB8fCBjdXJyZW50U2NvcmUgPCBzY29yZVRvQmVhdCkge1xuICAgICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID0gY3VycmVudFNjb3JlO1xuICAgICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXh0ZW5kKGNvbmZpZywgYmVzdE1vbWVudCB8fCB0ZW1wQ29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tT2JqZWN0KGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLl9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGNvbmZpZy5faSk7XG4gICAgICAgIGNvbmZpZy5fYSA9IG1hcChbaS55ZWFyLCBpLm1vbnRoLCBpLmRheSB8fCBpLmRhdGUsIGkuaG91ciwgaS5taW51dGUsIGkuc2Vjb25kLCBpLm1pbGxpc2Vjb25kXSwgZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIG9iaiAmJiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRnJvbUNvbmZpZyAoY29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3cocHJlcGFyZUNvbmZpZyhjb25maWcpKSk7XG4gICAgICAgIGlmIChyZXMuX25leHREYXkpIHtcbiAgICAgICAgICAgIC8vIEFkZGluZyBpcyBzbWFydCBlbm91Z2ggYXJvdW5kIERTVFxuICAgICAgICAgICAgcmVzLmFkZCgxLCAnZCcpO1xuICAgICAgICAgICAgcmVzLl9uZXh0RGF5ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwYXJlQ29uZmlnIChjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pLFxuICAgICAgICAgICAgZm9ybWF0ID0gY29uZmlnLl9mO1xuXG4gICAgICAgIGNvbmZpZy5fbG9jYWxlID0gY29uZmlnLl9sb2NhbGUgfHwgZ2V0TG9jYWxlKGNvbmZpZy5fbCk7XG5cbiAgICAgICAgaWYgKGlucHV0ID09PSBudWxsIHx8IChmb3JtYXQgPT09IHVuZGVmaW5lZCAmJiBpbnB1dCA9PT0gJycpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCh7bnVsbElucHV0OiB0cnVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnLl9pID0gaW5wdXQgPSBjb25maWcuX2xvY2FsZS5wcmVwYXJzZShpbnB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNNb21lbnQoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vbWVudChjaGVja092ZXJmbG93KGlucHV0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gaW5wdXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShmb3JtYXQpKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSAgZWxzZSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSW5wdXQoY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNWYWxpZChjb25maWcpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSW5wdXQoY29uZmlnKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0LnZhbHVlT2YoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZyhjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2EgPSBtYXAoaW5wdXQuc2xpY2UoMCksIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQob2JqLCAxMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbU9iamVjdChjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgLy8gZnJvbSBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbE9yVVRDIChpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgaXNVVEMpIHtcbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBpZiAobG9jYWxlID09PSB0cnVlIHx8IGxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHN0cmljdCA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoaXNPYmplY3QoaW5wdXQpICYmIGlzT2JqZWN0RW1wdHkoaW5wdXQpKSB8fFxuICAgICAgICAgICAgICAgIChpc0FycmF5KGlucHV0KSAmJiBpbnB1dC5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICBpbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBvYmplY3QgY29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE0MjNcbiAgICAgICAgYy5faXNBTW9tZW50T2JqZWN0ID0gdHJ1ZTtcbiAgICAgICAgYy5fdXNlVVRDID0gYy5faXNVVEMgPSBpc1VUQztcbiAgICAgICAgYy5fbCA9IGxvY2FsZTtcbiAgICAgICAgYy5faSA9IGlucHV0O1xuICAgICAgICBjLl9mID0gZm9ybWF0O1xuICAgICAgICBjLl9zdHJpY3QgPSBzdHJpY3Q7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21Db25maWcoYyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlTG9jYWwgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvdHlwZU1pbiA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPCB0aGlzID8gdGhpcyA6IG90aGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIHZhciBwcm90b3R5cGVNYXggPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID4gdGhpcyA/IHRoaXMgOiBvdGhlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBQaWNrIGEgbW9tZW50IG0gZnJvbSBtb21lbnRzIHNvIHRoYXQgbVtmbl0ob3RoZXIpIGlzIHRydWUgZm9yIGFsbFxuICAgIC8vIG90aGVyLiBUaGlzIHJlbGllcyBvbiB0aGUgZnVuY3Rpb24gZm4gdG8gYmUgdHJhbnNpdGl2ZS5cbiAgICAvL1xuICAgIC8vIG1vbWVudHMgc2hvdWxkIGVpdGhlciBiZSBhbiBhcnJheSBvZiBtb21lbnQgb2JqZWN0cyBvciBhbiBhcnJheSwgd2hvc2VcbiAgICAvLyBmaXJzdCBlbGVtZW50IGlzIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzLlxuICAgIGZ1bmN0aW9uIHBpY2tCeShmbiwgbW9tZW50cykge1xuICAgICAgICB2YXIgcmVzLCBpO1xuICAgICAgICBpZiAobW9tZW50cy5sZW5ndGggPT09IDEgJiYgaXNBcnJheShtb21lbnRzWzBdKSkge1xuICAgICAgICAgICAgbW9tZW50cyA9IG1vbWVudHNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtb21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gbW9tZW50c1swXTtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IG1vbWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50c1tpXS5pc1ZhbGlkKCkgfHwgbW9tZW50c1tpXVtmbl0ocmVzKSkge1xuICAgICAgICAgICAgICAgIHJlcyA9IG1vbWVudHNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgW10uc29ydCBpbnN0ZWFkP1xuICAgIGZ1bmN0aW9uIG1pbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuXG4gICAgICAgIHJldHVybiBwaWNrQnkoJ2lzQmVmb3JlJywgYXJncyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF4ICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNBZnRlcicsIGFyZ3MpO1xuICAgIH1cblxuICAgIHZhciBub3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdyA/IERhdGUubm93KCkgOiArKG5ldyBEYXRlKCkpO1xuICAgIH07XG5cbiAgICB2YXIgb3JkZXJpbmcgPSBbJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCAnbWlsbGlzZWNvbmQnXTtcblxuICAgIGZ1bmN0aW9uIGlzRHVyYXRpb25WYWxpZChtKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBtKSB7XG4gICAgICAgICAgICBpZiAoIShpbmRleE9mLmNhbGwob3JkZXJpbmcsIGtleSkgIT09IC0xICYmIChtW2tleV0gPT0gbnVsbCB8fCAhaXNOYU4obVtrZXldKSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHVuaXRIYXNEZWNpbWFsID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXJpbmcubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChtW29yZGVyaW5nW2ldXSkge1xuICAgICAgICAgICAgICAgIGlmICh1bml0SGFzRGVjaW1hbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG9ubHkgYWxsb3cgbm9uLWludGVnZXJzIGZvciBzbWFsbGVzdCB1bml0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUZsb2F0KG1bb3JkZXJpbmdbaV1dKSAhPT0gdG9JbnQobVtvcmRlcmluZ1tpXV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXRIYXNEZWNpbWFsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKE5hTik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRHVyYXRpb24gKGR1cmF0aW9uKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSBub3JtYWxpemVPYmplY3RVbml0cyhkdXJhdGlvbiksXG4gICAgICAgICAgICB5ZWFycyA9IG5vcm1hbGl6ZWRJbnB1dC55ZWFyIHx8IDAsXG4gICAgICAgICAgICBxdWFydGVycyA9IG5vcm1hbGl6ZWRJbnB1dC5xdWFydGVyIHx8IDAsXG4gICAgICAgICAgICBtb250aHMgPSBub3JtYWxpemVkSW5wdXQubW9udGggfHwgMCxcbiAgICAgICAgICAgIHdlZWtzID0gbm9ybWFsaXplZElucHV0LndlZWsgfHwgMCxcbiAgICAgICAgICAgIGRheXMgPSBub3JtYWxpemVkSW5wdXQuZGF5IHx8IDAsXG4gICAgICAgICAgICBob3VycyA9IG5vcm1hbGl6ZWRJbnB1dC5ob3VyIHx8IDAsXG4gICAgICAgICAgICBtaW51dGVzID0gbm9ybWFsaXplZElucHV0Lm1pbnV0ZSB8fCAwLFxuICAgICAgICAgICAgc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5zZWNvbmQgfHwgMCxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5taWxsaXNlY29uZCB8fCAwO1xuXG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc0R1cmF0aW9uVmFsaWQobm9ybWFsaXplZElucHV0KTtcblxuICAgICAgICAvLyByZXByZXNlbnRhdGlvbiBmb3IgZGF0ZUFkZFJlbW92ZVxuICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSArbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHNlY29uZHMgKiAxZTMgKyAvLyAxMDAwXG4gICAgICAgICAgICBtaW51dGVzICogNmU0ICsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBob3VycyAqIDEwMDAgKiA2MCAqIDYwOyAvL3VzaW5nIDEwMDAgKiA2MCAqIDYwIGluc3RlYWQgb2YgMzZlNSB0byBhdm9pZCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnMgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzI5NzhcbiAgICAgICAgLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhXG4gICAgICAgIC8vIGRheSB3aGVuIHdvcmtpbmcgYXJvdW5kIERTVCwgd2UgbmVlZCB0byBzdG9yZSB0aGVtIHNlcGFyYXRlbHlcbiAgICAgICAgdGhpcy5fZGF5cyA9ICtkYXlzICtcbiAgICAgICAgICAgIHdlZWtzICogNztcbiAgICAgICAgLy8gSXQgaXMgaW1wb3NzaWJsZSB0byB0cmFuc2xhdGUgbW9udGhzIGludG8gZGF5cyB3aXRob3V0IGtub3dpbmdcbiAgICAgICAgLy8gd2hpY2ggbW9udGhzIHlvdSBhcmUgYXJlIHRhbGtpbmcgYWJvdXQsIHNvIHdlIGhhdmUgdG8gc3RvcmVcbiAgICAgICAgLy8gaXQgc2VwYXJhdGVseS5cbiAgICAgICAgdGhpcy5fbW9udGhzID0gK21vbnRocyArXG4gICAgICAgICAgICBxdWFydGVycyAqIDMgK1xuICAgICAgICAgICAgeWVhcnMgKiAxMjtcblxuICAgICAgICB0aGlzLl9kYXRhID0ge307XG5cbiAgICAgICAgdGhpcy5fbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG5cbiAgICAgICAgdGhpcy5fYnViYmxlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvbiAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEdXJhdGlvbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNSb3VuZCAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgtMSAqIG51bWJlcikgKiAtMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBvZmZzZXQgKHRva2VuLCBzZXBhcmF0b3IpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLnV0Y09mZnNldCgpO1xuICAgICAgICAgICAgdmFyIHNpZ24gPSAnKyc7XG4gICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgc2lnbiA9ICctJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaWduICsgemVyb0ZpbGwofn4ob2Zmc2V0IC8gNjApLCAyKSArIHNlcGFyYXRvciArIHplcm9GaWxsKH5+KG9mZnNldCkgJSA2MCwgMik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9mZnNldCgnWicsICc6Jyk7XG4gICAgb2Zmc2V0KCdaWicsICcnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1onLCAgbWF0Y2hTaG9ydE9mZnNldCk7XG4gICAgYWRkUmVnZXhUb2tlbignWlonLCBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnWicsICdaWiddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl91c2VVVEMgPSB0cnVlO1xuICAgICAgICBjb25maWcuX3R6bSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hTaG9ydE9mZnNldCwgaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gdGltZXpvbmUgY2h1bmtlclxuICAgIC8vICcrMTA6MDAnID4gWycxMCcsICAnMDAnXVxuICAgIC8vICctMTUzMCcgID4gWyctMTUnLCAnMzAnXVxuICAgIHZhciBjaHVua09mZnNldCA9IC8oW1xcK1xcLV18XFxkXFxkKS9naTtcblxuICAgIGZ1bmN0aW9uIG9mZnNldEZyb21TdHJpbmcobWF0Y2hlciwgc3RyaW5nKSB7XG4gICAgICAgIHZhciBtYXRjaGVzID0gKHN0cmluZyB8fCAnJykubWF0Y2gobWF0Y2hlcik7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNodW5rICAgPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0gfHwgW107XG4gICAgICAgIHZhciBwYXJ0cyAgID0gKGNodW5rICsgJycpLm1hdGNoKGNodW5rT2Zmc2V0KSB8fCBbJy0nLCAwLCAwXTtcbiAgICAgICAgdmFyIG1pbnV0ZXMgPSArKHBhcnRzWzFdICogNjApICsgdG9JbnQocGFydHNbMl0pO1xuXG4gICAgICAgIHJldHVybiBtaW51dGVzID09PSAwID9cbiAgICAgICAgICAwIDpcbiAgICAgICAgICBwYXJ0c1swXSA9PT0gJysnID8gbWludXRlcyA6IC1taW51dGVzO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBhIG1vbWVudCBmcm9tIGlucHV0LCB0aGF0IGlzIGxvY2FsL3V0Yy96b25lIGVxdWl2YWxlbnQgdG8gbW9kZWwuXG4gICAgZnVuY3Rpb24gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCBtb2RlbCkge1xuICAgICAgICB2YXIgcmVzLCBkaWZmO1xuICAgICAgICBpZiAobW9kZWwuX2lzVVRDKSB7XG4gICAgICAgICAgICByZXMgPSBtb2RlbC5jbG9uZSgpO1xuICAgICAgICAgICAgZGlmZiA9IChpc01vbWVudChpbnB1dCkgfHwgaXNEYXRlKGlucHV0KSA/IGlucHV0LnZhbHVlT2YoKSA6IGNyZWF0ZUxvY2FsKGlucHV0KS52YWx1ZU9mKCkpIC0gcmVzLnZhbHVlT2YoKTtcbiAgICAgICAgICAgIC8vIFVzZSBsb3ctbGV2ZWwgYXBpLCBiZWNhdXNlIHRoaXMgZm4gaXMgbG93LWxldmVsIGFwaS5cbiAgICAgICAgICAgIHJlcy5fZC5zZXRUaW1lKHJlcy5fZC52YWx1ZU9mKCkgKyBkaWZmKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldChyZXMsIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQpLmxvY2FsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXRlT2Zmc2V0IChtKSB7XG4gICAgICAgIC8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MVxuICAgICAgICByZXR1cm4gLU1hdGgucm91bmQobS5fZC5nZXRUaW1lem9uZU9mZnNldCgpIC8gMTUpICogMTU7XG4gICAgfVxuXG4gICAgLy8gSE9PS1NcblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBtb21lbnQgaXMgbXV0YXRlZC5cbiAgICAvLyBJdCBpcyBpbnRlbmRlZCB0byBrZWVwIHRoZSBvZmZzZXQgaW4gc3luYyB3aXRoIHRoZSB0aW1lem9uZS5cbiAgICBob29rcy51cGRhdGVPZmZzZXQgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIC8vIGtlZXBMb2NhbFRpbWUgPSB0cnVlIG1lYW5zIG9ubHkgY2hhbmdlIHRoZSB0aW1lem9uZSwgd2l0aG91dFxuICAgIC8vIGFmZmVjdGluZyB0aGUgbG9jYWwgaG91ci4gU28gNTozMToyNiArMDMwMCAtLVt1dGNPZmZzZXQoMiwgdHJ1ZSldLS0+XG4gICAgLy8gNTozMToyNiArMDIwMCBJdCBpcyBwb3NzaWJsZSB0aGF0IDU6MzE6MjYgZG9lc24ndCBleGlzdCB3aXRoIG9mZnNldFxuICAgIC8vICswMjAwLCBzbyB3ZSBhZGp1c3QgdGhlIHRpbWUgYXMgbmVlZGVkLCB0byBiZSB2YWxpZC5cbiAgICAvL1xuICAgIC8vIEtlZXBpbmcgdGhlIHRpbWUgYWN0dWFsbHkgYWRkcy9zdWJ0cmFjdHMgKG9uZSBob3VyKVxuICAgIC8vIGZyb20gdGhlIGFjdHVhbCByZXByZXNlbnRlZCB0aW1lLiBUaGF0IGlzIHdoeSB3ZSBjYWxsIHVwZGF0ZU9mZnNldFxuICAgIC8vIGEgc2Vjb25kIHRpbWUuIEluIGNhc2UgaXQgd2FudHMgdXMgdG8gY2hhbmdlIHRoZSBvZmZzZXQgYWdhaW5cbiAgICAvLyBfY2hhbmdlSW5Qcm9ncmVzcyA9PSB0cnVlIGNhc2UsIHRoZW4gd2UgaGF2ZSB0byBhZGp1c3QsIGJlY2F1c2VcbiAgICAvLyB0aGVyZSBpcyBubyBzdWNoIHRpbWUgaW4gdGhlIGdpdmVuIHRpbWV6b25lLlxuICAgIGZ1bmN0aW9uIGdldFNldE9mZnNldCAoaW5wdXQsIGtlZXBMb2NhbFRpbWUsIGtlZXBNaW51dGVzKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLl9vZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIGxvY2FsQWRqdXN0O1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoU2hvcnRPZmZzZXQsIGlucHV0KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChNYXRoLmFicyhpbnB1dCkgPCAxNiAmJiAha2VlcE1pbnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0ICogNjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzVVRDICYmIGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgICAgICAgICBsb2NhbEFkanVzdCA9IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXQgPSBpbnB1dDtcbiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChsb2NhbEFkanVzdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGQobG9jYWxBZGp1c3QsICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBpbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmICgha2VlcExvY2FsVGltZSB8fCB0aGlzLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFN1YnRyYWN0KHRoaXMsIGNyZWF0ZUR1cmF0aW9uKGlucHV0IC0gb2Zmc2V0LCAnbScpLCAxLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/IG9mZnNldCA6IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRab25lIChpbnB1dCwga2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IC1pbnB1dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoaW5wdXQsIGtlZXBMb2NhbFRpbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAtdGhpcy51dGNPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb0xvY2FsIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc1VUQykge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gICAgICAgICAgICB0aGlzLl9pc1VUQyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoa2VlcExvY2FsVGltZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3VidHJhY3QoZ2V0RGF0ZU9mZnNldCh0aGlzKSwgJ20nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldCAoKSB7XG4gICAgICAgIGlmICh0aGlzLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX2kgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YXIgdFpvbmUgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoT2Zmc2V0LCB0aGlzLl9pKTtcbiAgICAgICAgICAgIGlmICh0Wm9uZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodFpvbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzQWxpZ25lZEhvdXJPZmZzZXQgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dCA9IGlucHV0ID8gY3JlYXRlTG9jYWwoaW5wdXQpLnV0Y09mZnNldCgpIDogMDtcblxuICAgICAgICByZXR1cm4gKHRoaXMudXRjT2Zmc2V0KCkgLSBpbnB1dCkgJSA2MCA9PT0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZSAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpIHx8XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkICgpIHtcbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9pc0RTVFNoaWZ0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBjb3B5Q29uZmlnKGMsIHRoaXMpO1xuICAgICAgICBjID0gcHJlcGFyZUNvbmZpZyhjKTtcblxuICAgICAgICBpZiAoYy5fYSkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gYy5faXNVVEMgPyBjcmVhdGVVVEMoYy5fYSkgOiBjcmVhdGVMb2NhbChjLl9hKTtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgY29tcGFyZUFycmF5cyhjLl9hLCBvdGhlci50b0FycmF5KCkpID4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xvY2FsICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gIXRoaXMuX2lzVVRDIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVdGNPZmZzZXQgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVXRjICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgJiYgdGhpcy5fb2Zmc2V0ID09PSAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQVNQLk5FVCBqc29uIGRhdGUgZm9ybWF0IHJlZ2V4XG4gICAgdmFyIGFzcE5ldFJlZ2V4ID0gL14oXFwtfFxcKyk/KD86KFxcZCopWy4gXSk/KFxcZCspXFw6KFxcZCspKD86XFw6KFxcZCspKFxcLlxcZCopPyk/JC87XG5cbiAgICAvLyBmcm9tIGh0dHA6Ly9kb2NzLmNsb3N1cmUtbGlicmFyeS5nb29nbGVjb2RlLmNvbS9naXQvY2xvc3VyZV9nb29nX2RhdGVfZGF0ZS5qcy5zb3VyY2UuaHRtbFxuICAgIC8vIHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVjLCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmVcbiAgICAvLyBhbmQgZnVydGhlciBtb2RpZmllZCB0byBhbGxvdyBmb3Igc3RyaW5ncyBjb250YWluaW5nIGJvdGggd2VlayBhbmQgZGF5XG4gICAgdmFyIGlzb1JlZ2V4ID0gL14oLXxcXCspP1AoPzooWy0rXT9bMC05LC5dKilZKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilXKT8oPzooWy0rXT9bMC05LC5dKilEKT8oPzpUKD86KFstK10/WzAtOSwuXSopSCk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopUyk/KT8kLztcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUR1cmF0aW9uIChpbnB1dCwga2V5KSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGlucHV0LFxuICAgICAgICAgICAgLy8gbWF0Y2hpbmcgYWdhaW5zdCByZWdleHAgaXMgZXhwZW5zaXZlLCBkbyBpdCBvbiBkZW1hbmRcbiAgICAgICAgICAgIG1hdGNoID0gbnVsbCxcbiAgICAgICAgICAgIHNpZ24sXG4gICAgICAgICAgICByZXQsXG4gICAgICAgICAgICBkaWZmUmVzO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgbXMgOiBpbnB1dC5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgICAgIGQgIDogaW5wdXQuX2RheXMsXG4gICAgICAgICAgICAgICAgTSAgOiBpbnB1dC5fbW9udGhzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbltrZXldID0gaW5wdXQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uLm1pbGxpc2Vjb25kcyA9IGlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gYXNwTmV0UmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeSAgOiAwLFxuICAgICAgICAgICAgICAgIGQgIDogdG9JbnQobWF0Y2hbREFURV0pICAgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBoICA6IHRvSW50KG1hdGNoW0hPVVJdKSAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpZ24sXG4gICAgICAgICAgICAgICAgbSAgOiB0b0ludChtYXRjaFtNSU5VVEVdKSAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIHMgIDogdG9JbnQobWF0Y2hbU0VDT05EXSkgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBtcyA6IHRvSW50KGFic1JvdW5kKG1hdGNoW01JTExJU0VDT05EXSAqIDEwMDApKSAqIHNpZ24gLy8gdGhlIG1pbGxpc2Vjb25kIGRlY2ltYWwgcG9pbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1hdGNoXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gaXNvUmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAobWF0Y2hbMV0gPT09ICcrJykgPyAxIDogMTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIHkgOiBwYXJzZUlzbyhtYXRjaFsyXSwgc2lnbiksXG4gICAgICAgICAgICAgICAgTSA6IHBhcnNlSXNvKG1hdGNoWzNdLCBzaWduKSxcbiAgICAgICAgICAgICAgICB3IDogcGFyc2VJc28obWF0Y2hbNF0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIGQgOiBwYXJzZUlzbyhtYXRjaFs1XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgaCA6IHBhcnNlSXNvKG1hdGNoWzZdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBtIDogcGFyc2VJc28obWF0Y2hbN10sIHNpZ24pLFxuICAgICAgICAgICAgICAgIHMgOiBwYXJzZUlzbyhtYXRjaFs4XSwgc2lnbilcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoZHVyYXRpb24gPT0gbnVsbCkgey8vIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uID09PSAnb2JqZWN0JyAmJiAoJ2Zyb20nIGluIGR1cmF0aW9uIHx8ICd0bycgaW4gZHVyYXRpb24pKSB7XG4gICAgICAgICAgICBkaWZmUmVzID0gbW9tZW50c0RpZmZlcmVuY2UoY3JlYXRlTG9jYWwoZHVyYXRpb24uZnJvbSksIGNyZWF0ZUxvY2FsKGR1cmF0aW9uLnRvKSk7XG5cbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgICAgICBkdXJhdGlvbi5tcyA9IGRpZmZSZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgZHVyYXRpb24uTSA9IGRpZmZSZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0ID0gbmV3IER1cmF0aW9uKGR1cmF0aW9uKTtcblxuICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkgJiYgaGFzT3duUHJvcChpbnB1dCwgJ19sb2NhbGUnKSkge1xuICAgICAgICAgICAgcmV0Ll9sb2NhbGUgPSBpbnB1dC5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBjcmVhdGVEdXJhdGlvbi5mbiA9IER1cmF0aW9uLnByb3RvdHlwZTtcbiAgICBjcmVhdGVEdXJhdGlvbi5pbnZhbGlkID0gY3JlYXRlSW52YWxpZCQxO1xuXG4gICAgZnVuY3Rpb24gcGFyc2VJc28gKGlucCwgc2lnbikge1xuICAgICAgICAvLyBXZSdkIG5vcm1hbGx5IHVzZSB+fmlucCBmb3IgdGhpcywgYnV0IHVuZm9ydHVuYXRlbHkgaXQgYWxzb1xuICAgICAgICAvLyBjb252ZXJ0cyBmbG9hdHMgdG8gaW50cy5cbiAgICAgICAgLy8gaW5wIG1heSBiZSB1bmRlZmluZWQsIHNvIGNhcmVmdWwgY2FsbGluZyByZXBsYWNlIG9uIGl0LlxuICAgICAgICB2YXIgcmVzID0gaW5wICYmIHBhcnNlRmxvYXQoaW5wLnJlcGxhY2UoJywnLCAnLicpKTtcbiAgICAgICAgLy8gYXBwbHkgc2lnbiB3aGlsZSB3ZSdyZSBhdCBpdFxuICAgICAgICByZXR1cm4gKGlzTmFOKHJlcykgPyAwIDogcmVzKSAqIHNpZ247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzID0ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwfTtcblxuICAgICAgICByZXMubW9udGhzID0gb3RoZXIubW9udGgoKSAtIGJhc2UubW9udGgoKSArXG4gICAgICAgICAgICAob3RoZXIueWVhcigpIC0gYmFzZS55ZWFyKCkpICogMTI7XG4gICAgICAgIGlmIChiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykuaXNBZnRlcihvdGhlcikpIHtcbiAgICAgICAgICAgIC0tcmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSArb3RoZXIgLSArKGJhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzO1xuICAgICAgICBpZiAoIShiYXNlLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwfTtcbiAgICAgICAgfVxuXG4gICAgICAgIG90aGVyID0gY2xvbmVXaXRoT2Zmc2V0KG90aGVyLCBiYXNlKTtcbiAgICAgICAgaWYgKGJhc2UuaXNCZWZvcmUob3RoZXIpKSB7XG4gICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2Uob3RoZXIsIGJhc2UpO1xuICAgICAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9IC1yZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgcmVzLm1vbnRocyA9IC1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiByZW1vdmUgJ25hbWUnIGFyZyBhZnRlciBkZXByZWNhdGlvbiBpcyByZW1vdmVkXG4gICAgZnVuY3Rpb24gY3JlYXRlQWRkZXIoZGlyZWN0aW9uLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBkdXIsIHRtcDtcbiAgICAgICAgICAgIC8vaW52ZXJ0IHRoZSBhcmd1bWVudHMsIGJ1dCBjb21wbGFpbiBhYm91dCBpdFxuICAgICAgICAgICAgaWYgKHBlcmlvZCAhPT0gbnVsbCAmJiAhaXNOYU4oK3BlcmlvZCkpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUobmFtZSwgJ21vbWVudCgpLicgKyBuYW1lICArICcocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuJyArIG5hbWUgKyAnKG51bWJlciwgcGVyaW9kKS4gJyArXG4gICAgICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4nKTtcbiAgICAgICAgICAgICAgICB0bXAgPSB2YWw7IHZhbCA9IHBlcmlvZDsgcGVyaW9kID0gdG1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWwgPSB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyA/ICt2YWwgOiB2YWw7XG4gICAgICAgICAgICBkdXIgPSBjcmVhdGVEdXJhdGlvbih2YWwsIHBlcmlvZCk7XG4gICAgICAgICAgICBhZGRTdWJ0cmFjdCh0aGlzLCBkdXIsIGRpcmVjdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCAobW9tLCBkdXJhdGlvbiwgaXNBZGRpbmcsIHVwZGF0ZU9mZnNldCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gZHVyYXRpb24uX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGRheXMgPSBhYnNSb3VuZChkdXJhdGlvbi5fZGF5cyksXG4gICAgICAgICAgICBtb250aHMgPSBhYnNSb3VuZChkdXJhdGlvbi5fbW9udGhzKTtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVPZmZzZXQgPSB1cGRhdGVPZmZzZXQgPT0gbnVsbCA/IHRydWUgOiB1cGRhdGVPZmZzZXQ7XG5cbiAgICAgICAgaWYgKG1vbnRocykge1xuICAgICAgICAgICAgc2V0TW9udGgobW9tLCBnZXQobW9tLCAnTW9udGgnKSArIG1vbnRocyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF5cykge1xuICAgICAgICAgICAgc2V0JDEobW9tLCAnRGF0ZScsIGdldChtb20sICdEYXRlJykgKyBkYXlzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgICAgIG1vbS5fZC5zZXRUaW1lKG1vbS5fZC52YWx1ZU9mKCkgKyBtaWxsaXNlY29uZHMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVwZGF0ZU9mZnNldCkge1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KG1vbSwgZGF5cyB8fCBtb250aHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFkZCAgICAgID0gY3JlYXRlQWRkZXIoMSwgJ2FkZCcpO1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZUFkZGVyKC0xLCAnc3VidHJhY3QnKTtcblxuICAgIGZ1bmN0aW9uIGdldENhbGVuZGFyRm9ybWF0KG15TW9tZW50LCBub3cpIHtcbiAgICAgICAgdmFyIGRpZmYgPSBteU1vbWVudC5kaWZmKG5vdywgJ2RheXMnLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGRpZmYgPCAtNiA/ICdzYW1lRWxzZScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAtMSA/ICdsYXN0V2VlaycgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAwID8gJ2xhc3REYXknIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgMSA/ICdzYW1lRGF5JyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDIgPyAnbmV4dERheScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCA3ID8gJ25leHRXZWVrJyA6ICdzYW1lRWxzZSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsZW5kYXIkMSAodGltZSwgZm9ybWF0cykge1xuICAgICAgICAvLyBXZSB3YW50IHRvIGNvbXBhcmUgdGhlIHN0YXJ0IG9mIHRvZGF5LCB2cyB0aGlzLlxuICAgICAgICAvLyBHZXR0aW5nIHN0YXJ0LW9mLXRvZGF5IGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBsb2NhbC91dGMvb2Zmc2V0IG9yIG5vdC5cbiAgICAgICAgdmFyIG5vdyA9IHRpbWUgfHwgY3JlYXRlTG9jYWwoKSxcbiAgICAgICAgICAgIHNvZCA9IGNsb25lV2l0aE9mZnNldChub3csIHRoaXMpLnN0YXJ0T2YoJ2RheScpLFxuICAgICAgICAgICAgZm9ybWF0ID0gaG9va3MuY2FsZW5kYXJGb3JtYXQodGhpcywgc29kKSB8fCAnc2FtZUVsc2UnO1xuXG4gICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRzICYmIChpc0Z1bmN0aW9uKGZvcm1hdHNbZm9ybWF0XSkgPyBmb3JtYXRzW2Zvcm1hdF0uY2FsbCh0aGlzLCBub3cpIDogZm9ybWF0c1tmb3JtYXRdKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQob3V0cHV0IHx8IHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKGZvcm1hdCwgdGhpcywgY3JlYXRlTG9jYWwobm93KSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb21lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBZnRlciAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHMoIWlzVW5kZWZpbmVkKHVuaXRzKSA/IHVuaXRzIDogJ21pbGxpc2Vjb25kJyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID4gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxJbnB1dC52YWx1ZU9mKCkgPCB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCZWZvcmUgKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKCFpc1VuZGVmaW5lZCh1bml0cykgPyB1bml0cyA6ICdtaWxsaXNlY29uZCcpO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA8IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JldHdlZW4gKGZyb20sIHRvLCB1bml0cywgaW5jbHVzaXZpdHkpIHtcbiAgICAgICAgaW5jbHVzaXZpdHkgPSBpbmNsdXNpdml0eSB8fCAnKCknO1xuICAgICAgICByZXR1cm4gKGluY2x1c2l2aXR5WzBdID09PSAnKCcgPyB0aGlzLmlzQWZ0ZXIoZnJvbSwgdW5pdHMpIDogIXRoaXMuaXNCZWZvcmUoZnJvbSwgdW5pdHMpKSAmJlxuICAgICAgICAgICAgKGluY2x1c2l2aXR5WzFdID09PSAnKScgPyB0aGlzLmlzQmVmb3JlKHRvLCB1bml0cykgOiAhdGhpcy5pc0FmdGVyKHRvLCB1bml0cykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCksXG4gICAgICAgICAgICBpbnB1dE1zO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzIHx8ICdtaWxsaXNlY29uZCcpO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA9PT0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dE1zID0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckFmdGVyIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGlucHV0LCB1bml0cykgfHwgdGhpcy5pc0FmdGVyKGlucHV0LHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckJlZm9yZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZShpbnB1dCwgdW5pdHMpIHx8IHRoaXMuaXNCZWZvcmUoaW5wdXQsdW5pdHMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpZmYgKGlucHV0LCB1bml0cywgYXNGbG9hdCkge1xuICAgICAgICB2YXIgdGhhdCxcbiAgICAgICAgICAgIHpvbmVEZWx0YSxcbiAgICAgICAgICAgIG91dHB1dDtcblxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhhdCA9IGNsb25lV2l0aE9mZnNldChpbnB1dCwgdGhpcyk7XG5cbiAgICAgICAgaWYgKCF0aGF0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHpvbmVEZWx0YSA9ICh0aGF0LnV0Y09mZnNldCgpIC0gdGhpcy51dGNPZmZzZXQoKSkgKiA2ZTQ7XG5cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG5cbiAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6IG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KSAvIDEyOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzogb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOiBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCkgLyAzOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyAxZTM7IGJyZWFrOyAvLyAxMDAwXG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gNmU0OyBicmVhazsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBjYXNlICdob3VyJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDM2ZTU7IGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MFxuICAgICAgICAgICAgY2FzZSAnZGF5Jzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0IC0gem9uZURlbHRhKSAvIDg2NGU1OyBicmVhazsgLy8gMTAwMCAqIDYwICogNjAgKiAyNCwgbmVnYXRlIGRzdFxuICAgICAgICAgICAgY2FzZSAnd2Vlayc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCAtIHpvbmVEZWx0YSkgLyA2MDQ4ZTU7IGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MCAqIDI0ICogNywgbmVnYXRlIGRzdFxuICAgICAgICAgICAgZGVmYXVsdDogb3V0cHV0ID0gdGhpcyAtIHRoYXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXNGbG9hdCA/IG91dHB1dCA6IGFic0Zsb29yKG91dHB1dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhEaWZmIChhLCBiKSB7XG4gICAgICAgIC8vIGRpZmZlcmVuY2UgaW4gbW9udGhzXG4gICAgICAgIHZhciB3aG9sZU1vbnRoRGlmZiA9ICgoYi55ZWFyKCkgLSBhLnllYXIoKSkgKiAxMikgKyAoYi5tb250aCgpIC0gYS5tb250aCgpKSxcbiAgICAgICAgICAgIC8vIGIgaXMgaW4gKGFuY2hvciAtIDEgbW9udGgsIGFuY2hvciArIDEgbW9udGgpXG4gICAgICAgICAgICBhbmNob3IgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmLCAnbW9udGhzJyksXG4gICAgICAgICAgICBhbmNob3IyLCBhZGp1c3Q7XG5cbiAgICAgICAgaWYgKGIgLSBhbmNob3IgPCAwKSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiAtIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yIC0gYW5jaG9yMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiArIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yMiAtIGFuY2hvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvL2NoZWNrIGZvciBuZWdhdGl2ZSB6ZXJvLCByZXR1cm4gemVybyBpZiBuZWdhdGl2ZSB6ZXJvXG4gICAgICAgIHJldHVybiAtKHdob2xlTW9udGhEaWZmICsgYWRqdXN0KSB8fCAwO1xuICAgIH1cblxuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXQgPSAnWVlZWS1NTS1ERFRISDptbTpzc1onO1xuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXRVdGMgPSAnWVlZWS1NTS1ERFRISDptbTpzc1taXSc7XG5cbiAgICBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCdlbicpLmZvcm1hdCgnZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWlonKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0lTT1N0cmluZyhrZWVwT2Zmc2V0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1dGMgPSBrZWVwT2Zmc2V0ICE9PSB0cnVlO1xuICAgICAgICB2YXIgbSA9IHV0YyA/IHRoaXMuY2xvbmUoKS51dGMoKSA6IHRoaXM7XG4gICAgICAgIGlmIChtLnllYXIoKSA8IDAgfHwgbS55ZWFyKCkgPiA5OTk5KSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KG0sIHV0YyA/ICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nIDogJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1onKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNGdW5jdGlvbihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZykpIHtcbiAgICAgICAgICAgIC8vIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpcyB+NTB4IGZhc3RlciwgdXNlIGl0IHdoZW4gd2UgY2FuXG4gICAgICAgICAgICBpZiAodXRjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpICsgdGhpcy51dGNPZmZzZXQoKSAqIDYwICogMTAwMCkudG9JU09TdHJpbmcoKS5yZXBsYWNlKCdaJywgZm9ybWF0TW9tZW50KG0sICdaJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQobSwgdXRjID8gJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nIDogJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgaHVtYW4gcmVhZGFibGUgcmVwcmVzZW50YXRpb24gb2YgYSBtb21lbnQgdGhhdCBjYW5cbiAgICAgKiBhbHNvIGJlIGV2YWx1YXRlZCB0byBnZXQgYSBuZXcgbW9tZW50IHdoaWNoIGlzIHRoZSBzYW1lXG4gICAgICpcbiAgICAgKiBAbGluayBodHRwczovL25vZGVqcy5vcmcvZGlzdC9sYXRlc3QvZG9jcy9hcGkvdXRpbC5odG1sI3V0aWxfY3VzdG9tX2luc3BlY3RfZnVuY3Rpb25fb25fb2JqZWN0c1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ21vbWVudC5pbnZhbGlkKC8qICcgKyB0aGlzLl9pICsgJyAqLyknO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmdW5jID0gJ21vbWVudCc7XG4gICAgICAgIHZhciB6b25lID0gJyc7XG4gICAgICAgIGlmICghdGhpcy5pc0xvY2FsKCkpIHtcbiAgICAgICAgICAgIGZ1bmMgPSB0aGlzLnV0Y09mZnNldCgpID09PSAwID8gJ21vbWVudC51dGMnIDogJ21vbWVudC5wYXJzZVpvbmUnO1xuICAgICAgICAgICAgem9uZSA9ICdaJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJlZml4ID0gJ1snICsgZnVuYyArICcoXCJdJztcbiAgICAgICAgdmFyIHllYXIgPSAoMCA8PSB0aGlzLnllYXIoKSAmJiB0aGlzLnllYXIoKSA8PSA5OTk5KSA/ICdZWVlZJyA6ICdZWVlZWVknO1xuICAgICAgICB2YXIgZGF0ZXRpbWUgPSAnLU1NLUREW1RdSEg6bW06c3MuU1NTJztcbiAgICAgICAgdmFyIHN1ZmZpeCA9IHpvbmUgKyAnW1wiKV0nO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdChwcmVmaXggKyB5ZWFyICsgZGF0ZXRpbWUgKyBzdWZmaXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZvcm1hdCAoaW5wdXRTdHJpbmcpIHtcbiAgICAgICAgaWYgKCFpbnB1dFN0cmluZykge1xuICAgICAgICAgICAgaW5wdXRTdHJpbmcgPSB0aGlzLmlzVXRjKCkgPyBob29rcy5kZWZhdWx0Rm9ybWF0VXRjIDogaG9va3MuZGVmYXVsdEZvcm1hdDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3V0cHV0ID0gZm9ybWF0TW9tZW50KHRoaXMsIGlucHV0U3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLnBvc3Rmb3JtYXQob3V0cHV0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmcm9tICh0aW1lLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgICAgICgoaXNNb21lbnQodGltZSkgJiYgdGltZS5pc1ZhbGlkKCkpIHx8XG4gICAgICAgICAgICAgICAgIGNyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7dG86IHRoaXMsIGZyb206IHRpbWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmcm9tTm93ICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20oY3JlYXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG8gKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHxcbiAgICAgICAgICAgICAgICAgY3JlYXRlTG9jYWwodGltZSkuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHtmcm9tOiB0aGlzLCB0bzogdGltZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTm93ICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvKGNyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIC8vIElmIHBhc3NlZCBhIGxvY2FsZSBrZXksIGl0IHdpbGwgc2V0IHRoZSBsb2NhbGUgZm9yIHRoaXNcbiAgICAvLyBpbnN0YW5jZS4gIE90aGVyd2lzZSwgaXQgd2lsbCByZXR1cm4gdGhlIGxvY2FsZSBjb25maWd1cmF0aW9uXG4gICAgLy8gdmFyaWFibGVzIGZvciB0aGlzIGluc3RhbmNlLlxuICAgIGZ1bmN0aW9uIGxvY2FsZSAoa2V5KSB7XG4gICAgICAgIHZhciBuZXdMb2NhbGVEYXRhO1xuXG4gICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZS5fYWJicjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0xvY2FsZURhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIGlmIChuZXdMb2NhbGVEYXRhICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2NhbGUgPSBuZXdMb2NhbGVEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFuZyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLmxhbmcoKSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgbW9tZW50KCkubG9jYWxlRGF0YSgpIHRvIGdldCB0aGUgbGFuZ3VhZ2UgY29uZmlndXJhdGlvbi4gVXNlIG1vbWVudCgpLmxvY2FsZSgpIHRvIGNoYW5nZSBsYW5ndWFnZXMuJyxcbiAgICAgICAgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVEYXRhICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGFydE9mICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgLy8gdGhlIGZvbGxvd2luZyBzd2l0Y2ggaW50ZW50aW9uYWxseSBvbWl0cyBicmVhayBrZXl3b3Jkc1xuICAgICAgICAvLyB0byB1dGlsaXplIGZhbGxpbmcgdGhyb3VnaCB0aGUgY2FzZXMuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMubW9udGgoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlKDEpO1xuICAgICAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgY2FzZSAnaXNvV2Vlayc6XG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5ob3VycygwKTtcbiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm1pbnV0ZXMoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNlY29uZHMoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICB0aGlzLm1pbGxpc2Vjb25kcygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdlZWtzIGFyZSBhIHNwZWNpYWwgY2FzZVxuICAgICAgICBpZiAodW5pdHMgPT09ICd3ZWVrJykge1xuICAgICAgICAgICAgdGhpcy53ZWVrZGF5KDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ2lzb1dlZWsnKSB7XG4gICAgICAgICAgICB0aGlzLmlzb1dlZWtkYXkoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBxdWFydGVycyBhcmUgYWxzbyBzcGVjaWFsXG4gICAgICAgIGlmICh1bml0cyA9PT0gJ3F1YXJ0ZXInKSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoKE1hdGguZmxvb3IodGhpcy5tb250aCgpIC8gMykgKiAzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgaWYgKHVuaXRzID09PSB1bmRlZmluZWQgfHwgdW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gJ2RhdGUnIGlzIGFuIGFsaWFzIGZvciAnZGF5Jywgc28gaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgc3VjaC5cbiAgICAgICAgaWYgKHVuaXRzID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIHVuaXRzID0gJ2RheSc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdGFydE9mKHVuaXRzKS5hZGQoMSwgKHVuaXRzID09PSAnaXNvV2VlaycgPyAnd2VlaycgOiB1bml0cykpLnN1YnRyYWN0KDEsICdtcycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbHVlT2YgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCkgLSAoKHRoaXMuX29mZnNldCB8fCAwKSAqIDYwMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bml4ICgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkgLyAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0RhdGUgKCkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQXJyYXkgKCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBbbS55ZWFyKCksIG0ubW9udGgoKSwgbS5kYXRlKCksIG0uaG91cigpLCBtLm1pbnV0ZSgpLCBtLnNlY29uZCgpLCBtLm1pbGxpc2Vjb25kKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvT2JqZWN0ICgpIHtcbiAgICAgICAgdmFyIG0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeWVhcnM6IG0ueWVhcigpLFxuICAgICAgICAgICAgbW9udGhzOiBtLm1vbnRoKCksXG4gICAgICAgICAgICBkYXRlOiBtLmRhdGUoKSxcbiAgICAgICAgICAgIGhvdXJzOiBtLmhvdXJzKCksXG4gICAgICAgICAgICBtaW51dGVzOiBtLm1pbnV0ZXMoKSxcbiAgICAgICAgICAgIHNlY29uZHM6IG0uc2Vjb25kcygpLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzOiBtLm1pbGxpc2Vjb25kcygpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICAgICAgLy8gbmV3IERhdGUoTmFOKS50b0pTT04oKSA9PT0gbnVsbFxuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLnRvSVNPU3RyaW5nKCkgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQkMiAoKSB7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNpbmdGbGFncyAoKSB7XG4gICAgICAgIHJldHVybiBleHRlbmQoe30sIGdldFBhcnNpbmdGbGFncyh0aGlzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW52YWxpZEF0ICgpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhcnNpbmdGbGFncyh0aGlzKS5vdmVyZmxvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGlvbkRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnB1dDogdGhpcy5faSxcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fZixcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5fbG9jYWxlLFxuICAgICAgICAgICAgaXNVVEM6IHRoaXMuX2lzVVRDLFxuICAgICAgICAgICAgc3RyaWN0OiB0aGlzLl9zdHJpY3RcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ2dnJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2Vla1llYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnR0cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1llYXJGb3JtYXRUb2tlbiAodG9rZW4sIGdldHRlcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbigwLCBbdG9rZW4sIHRva2VuLmxlbmd0aF0sIDAsIGdldHRlcik7XG4gICAgfVxuXG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZycsICAgICAnd2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnZycsICAgICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ0dHR0cnLCAgJ2lzb1dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHR0cnLCAnaXNvV2Vla1llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2Vla1llYXInLCAnZ2cnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtZZWFyJywgJ0dHJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrWWVhcicsIDEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla1llYXInLCAxKTtcblxuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignRycsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2cnLCAgICAgIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdHRycsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2cnLCAgICAgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHR0cnLCAgIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdnZ2dnJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHR0cnLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2dnJywgIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2dnZycsICdnZ2dnZycsICdHR0dHJywgJ0dHR0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAyKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2dnJywgJ0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIHRoaXMud2VlaygpLFxuICAgICAgICAgICAgICAgIHRoaXMud2Vla2RheSgpLFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyxcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LCB0aGlzLmlzb1dlZWsoKSwgdGhpcy5pc29XZWVrZGF5KCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElTT1dlZWtzSW5ZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCAxLCA0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXZWVrc0luWWVhciAoKSB7XG4gICAgICAgIHZhciB3ZWVrSW5mbyA9IHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIHdlZWtJbmZvLmRvdywgd2Vla0luZm8uZG95KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrWWVhckhlbHBlcihpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtzVGFyZ2V0O1xuICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIodGhpcywgZG93LCBkb3kpLnllYXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3ZWVrc1RhcmdldCA9IHdlZWtzSW5ZZWFyKGlucHV0LCBkb3csIGRveSk7XG4gICAgICAgICAgICBpZiAod2VlayA+IHdlZWtzVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgd2VlayA9IHdlZWtzVGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldFdlZWtBbGwuY2FsbCh0aGlzLCBpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0V2Vla0FsbCh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhckRhdGEgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKGRheU9mWWVhckRhdGEueWVhciwgMCwgZGF5T2ZZZWFyRGF0YS5kYXlPZlllYXIpO1xuXG4gICAgICAgIHRoaXMueWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgICAgICB0aGlzLm1vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgICAgIHRoaXMuZGF0ZShkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdRJywgMCwgJ1FvJywgJ3F1YXJ0ZXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygncXVhcnRlcicsICdRJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdxdWFydGVyJywgNyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdRJywgbWF0Y2gxKTtcbiAgICBhZGRQYXJzZVRva2VuKCdRJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSAodG9JbnQoaW5wdXQpIC0gMSkgKiAzO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0UXVhcnRlciAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBNYXRoLmNlaWwoKHRoaXMubW9udGgoKSArIDEpIC8gMykgOiB0aGlzLm1vbnRoKChpbnB1dCAtIDEpICogMyArIHRoaXMubW9udGgoKSAlIDMpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEJywgWydERCcsIDJdLCAnRG8nLCAnZGF0ZScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXRlJywgJ0QnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXRlJywgOSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignREQnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignRG8nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgXCJvcmRpbmFsUGFyc2VcIiBmYWxsYmFjayBpbiBuZXh0IG1ham9yIHJlbGVhc2UuXG4gICAgICAgIHJldHVybiBpc1N0cmljdCA/XG4gICAgICAgICAgKGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZSB8fCBsb2NhbGUuX29yZGluYWxQYXJzZSkgOlxuICAgICAgICAgIGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQ7XG4gICAgfSk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnRCcsICdERCddLCBEQVRFKTtcbiAgICBhZGRQYXJzZVRva2VuKCdEbycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbREFURV0gPSB0b0ludChpbnB1dC5tYXRjaChtYXRjaDF0bzIpWzBdKTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXREYXlPZk1vbnRoID0gbWFrZUdldFNldCgnRGF0ZScsIHRydWUpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0RERCcsIFsnRERERCcsIDNdLCAnREREbycsICdkYXlPZlllYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnZGF5T2ZZZWFyJywgJ0RERCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RheU9mWWVhcicsIDQpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignREREJywgIG1hdGNoMXRvMyk7XG4gICAgYWRkUmVnZXhUb2tlbignRERERCcsIG1hdGNoMyk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ0RERCcsICdEREREJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mWWVhciAoaW5wdXQpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhciA9IE1hdGgucm91bmQoKHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKSAtIHRoaXMuY2xvbmUoKS5zdGFydE9mKCd5ZWFyJykpIC8gODY0ZTUpICsgMTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBkYXlPZlllYXIgOiB0aGlzLmFkZCgoaW5wdXQgLSBkYXlPZlllYXIpLCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdtJywgWydtbScsIDJdLCAwLCAnbWludXRlJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbnV0ZScsICdtJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaW51dGUnLCAxNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdtJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignbW0nLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ20nLCAnbW0nXSwgTUlOVVRFKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRNaW51dGUgPSBtYWtlR2V0U2V0KCdNaW51dGVzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3MnLCBbJ3NzJywgMl0sIDAsICdzZWNvbmQnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnc2Vjb25kJywgJ3MnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3NlY29uZCcsIDE1KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3MnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdzcycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsncycsICdzcyddLCBTRUNPTkQpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldFNlY29uZCA9IG1ha2VHZXRTZXQoJ1NlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignUycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwMCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTJywgM10sIDAsICdtaWxsaXNlY29uZCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTUycsIDRdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTJywgNV0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTUycsIDZdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTUycsIDddLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTJywgOF0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTUycsIDldLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDAwO1xuICAgIH0pO1xuXG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbGxpc2Vjb25kJywgJ21zJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaWxsaXNlY29uZCcsIDE2KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1MnLCAgICBtYXRjaDF0bzMsIG1hdGNoMSk7XG4gICAgYWRkUmVnZXhUb2tlbignU1MnLCAgIG1hdGNoMXRvMywgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdTU1MnLCAgbWF0Y2gxdG8zLCBtYXRjaDMpO1xuXG4gICAgdmFyIHRva2VuO1xuICAgIGZvciAodG9rZW4gPSAnU1NTUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUmVnZXhUb2tlbih0b2tlbiwgbWF0Y2hVbnNpZ25lZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VNcyhpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTUlMTElTRUNPTkRdID0gdG9JbnQoKCcwLicgKyBpbnB1dCkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmb3IgKHRva2VuID0gJ1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIHBhcnNlTXMpO1xuICAgIH1cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0TWlsbGlzZWNvbmQgPSBtYWtlR2V0U2V0KCdNaWxsaXNlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigneicsICAwLCAwLCAnem9uZUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignenonLCAwLCAwLCAnem9uZU5hbWUnKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFpvbmVBYmJyICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ1VUQycgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRab25lTmFtZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/ICdDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZScgOiAnJztcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8gPSBNb21lbnQucHJvdG90eXBlO1xuXG4gICAgcHJvdG8uYWRkICAgICAgICAgICAgICAgPSBhZGQ7XG4gICAgcHJvdG8uY2FsZW5kYXIgICAgICAgICAgPSBjYWxlbmRhciQxO1xuICAgIHByb3RvLmNsb25lICAgICAgICAgICAgID0gY2xvbmU7XG4gICAgcHJvdG8uZGlmZiAgICAgICAgICAgICAgPSBkaWZmO1xuICAgIHByb3RvLmVuZE9mICAgICAgICAgICAgID0gZW5kT2Y7XG4gICAgcHJvdG8uZm9ybWF0ICAgICAgICAgICAgPSBmb3JtYXQ7XG4gICAgcHJvdG8uZnJvbSAgICAgICAgICAgICAgPSBmcm9tO1xuICAgIHByb3RvLmZyb21Ob3cgICAgICAgICAgID0gZnJvbU5vdztcbiAgICBwcm90by50byAgICAgICAgICAgICAgICA9IHRvO1xuICAgIHByb3RvLnRvTm93ICAgICAgICAgICAgID0gdG9Ob3c7XG4gICAgcHJvdG8uZ2V0ICAgICAgICAgICAgICAgPSBzdHJpbmdHZXQ7XG4gICAgcHJvdG8uaW52YWxpZEF0ICAgICAgICAgPSBpbnZhbGlkQXQ7XG4gICAgcHJvdG8uaXNBZnRlciAgICAgICAgICAgPSBpc0FmdGVyO1xuICAgIHByb3RvLmlzQmVmb3JlICAgICAgICAgID0gaXNCZWZvcmU7XG4gICAgcHJvdG8uaXNCZXR3ZWVuICAgICAgICAgPSBpc0JldHdlZW47XG4gICAgcHJvdG8uaXNTYW1lICAgICAgICAgICAgPSBpc1NhbWU7XG4gICAgcHJvdG8uaXNTYW1lT3JBZnRlciAgICAgPSBpc1NhbWVPckFmdGVyO1xuICAgIHByb3RvLmlzU2FtZU9yQmVmb3JlICAgID0gaXNTYW1lT3JCZWZvcmU7XG4gICAgcHJvdG8uaXNWYWxpZCAgICAgICAgICAgPSBpc1ZhbGlkJDI7XG4gICAgcHJvdG8ubGFuZyAgICAgICAgICAgICAgPSBsYW5nO1xuICAgIHByb3RvLmxvY2FsZSAgICAgICAgICAgID0gbG9jYWxlO1xuICAgIHByb3RvLmxvY2FsZURhdGEgICAgICAgID0gbG9jYWxlRGF0YTtcbiAgICBwcm90by5tYXggICAgICAgICAgICAgICA9IHByb3RvdHlwZU1heDtcbiAgICBwcm90by5taW4gICAgICAgICAgICAgICA9IHByb3RvdHlwZU1pbjtcbiAgICBwcm90by5wYXJzaW5nRmxhZ3MgICAgICA9IHBhcnNpbmdGbGFncztcbiAgICBwcm90by5zZXQgICAgICAgICAgICAgICA9IHN0cmluZ1NldDtcbiAgICBwcm90by5zdGFydE9mICAgICAgICAgICA9IHN0YXJ0T2Y7XG4gICAgcHJvdG8uc3VidHJhY3QgICAgICAgICAgPSBzdWJ0cmFjdDtcbiAgICBwcm90by50b0FycmF5ICAgICAgICAgICA9IHRvQXJyYXk7XG4gICAgcHJvdG8udG9PYmplY3QgICAgICAgICAgPSB0b09iamVjdDtcbiAgICBwcm90by50b0RhdGUgICAgICAgICAgICA9IHRvRGF0ZTtcbiAgICBwcm90by50b0lTT1N0cmluZyAgICAgICA9IHRvSVNPU3RyaW5nO1xuICAgIHByb3RvLmluc3BlY3QgICAgICAgICAgID0gaW5zcGVjdDtcbiAgICBwcm90by50b0pTT04gICAgICAgICAgICA9IHRvSlNPTjtcbiAgICBwcm90by50b1N0cmluZyAgICAgICAgICA9IHRvU3RyaW5nO1xuICAgIHByb3RvLnVuaXggICAgICAgICAgICAgID0gdW5peDtcbiAgICBwcm90by52YWx1ZU9mICAgICAgICAgICA9IHZhbHVlT2Y7XG4gICAgcHJvdG8uY3JlYXRpb25EYXRhICAgICAgPSBjcmVhdGlvbkRhdGE7XG4gICAgcHJvdG8ueWVhciAgICAgICA9IGdldFNldFllYXI7XG4gICAgcHJvdG8uaXNMZWFwWWVhciA9IGdldElzTGVhcFllYXI7XG4gICAgcHJvdG8ud2Vla1llYXIgICAgPSBnZXRTZXRXZWVrWWVhcjtcbiAgICBwcm90by5pc29XZWVrWWVhciA9IGdldFNldElTT1dlZWtZZWFyO1xuICAgIHByb3RvLnF1YXJ0ZXIgPSBwcm90by5xdWFydGVycyA9IGdldFNldFF1YXJ0ZXI7XG4gICAgcHJvdG8ubW9udGggICAgICAgPSBnZXRTZXRNb250aDtcbiAgICBwcm90by5kYXlzSW5Nb250aCA9IGdldERheXNJbk1vbnRoO1xuICAgIHByb3RvLndlZWsgICAgICAgICAgID0gcHJvdG8ud2Vla3MgICAgICAgID0gZ2V0U2V0V2VlaztcbiAgICBwcm90by5pc29XZWVrICAgICAgICA9IHByb3RvLmlzb1dlZWtzICAgICA9IGdldFNldElTT1dlZWs7XG4gICAgcHJvdG8ud2Vla3NJblllYXIgICAgPSBnZXRXZWVrc0luWWVhcjtcbiAgICBwcm90by5pc29XZWVrc0luWWVhciA9IGdldElTT1dlZWtzSW5ZZWFyO1xuICAgIHByb3RvLmRhdGUgICAgICAgPSBnZXRTZXREYXlPZk1vbnRoO1xuICAgIHByb3RvLmRheSAgICAgICAgPSBwcm90by5kYXlzICAgICAgICAgICAgID0gZ2V0U2V0RGF5T2ZXZWVrO1xuICAgIHByb3RvLndlZWtkYXkgICAgPSBnZXRTZXRMb2NhbGVEYXlPZldlZWs7XG4gICAgcHJvdG8uaXNvV2Vla2RheSA9IGdldFNldElTT0RheU9mV2VlaztcbiAgICBwcm90by5kYXlPZlllYXIgID0gZ2V0U2V0RGF5T2ZZZWFyO1xuICAgIHByb3RvLmhvdXIgPSBwcm90by5ob3VycyA9IGdldFNldEhvdXI7XG4gICAgcHJvdG8ubWludXRlID0gcHJvdG8ubWludXRlcyA9IGdldFNldE1pbnV0ZTtcbiAgICBwcm90by5zZWNvbmQgPSBwcm90by5zZWNvbmRzID0gZ2V0U2V0U2Vjb25kO1xuICAgIHByb3RvLm1pbGxpc2Vjb25kID0gcHJvdG8ubWlsbGlzZWNvbmRzID0gZ2V0U2V0TWlsbGlzZWNvbmQ7XG4gICAgcHJvdG8udXRjT2Zmc2V0ICAgICAgICAgICAgPSBnZXRTZXRPZmZzZXQ7XG4gICAgcHJvdG8udXRjICAgICAgICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1VUQztcbiAgICBwcm90by5sb2NhbCAgICAgICAgICAgICAgICA9IHNldE9mZnNldFRvTG9jYWw7XG4gICAgcHJvdG8ucGFyc2Vab25lICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldDtcbiAgICBwcm90by5oYXNBbGlnbmVkSG91ck9mZnNldCA9IGhhc0FsaWduZWRIb3VyT2Zmc2V0O1xuICAgIHByb3RvLmlzRFNUICAgICAgICAgICAgICAgID0gaXNEYXlsaWdodFNhdmluZ1RpbWU7XG4gICAgcHJvdG8uaXNMb2NhbCAgICAgICAgICAgICAgPSBpc0xvY2FsO1xuICAgIHByb3RvLmlzVXRjT2Zmc2V0ICAgICAgICAgID0gaXNVdGNPZmZzZXQ7XG4gICAgcHJvdG8uaXNVdGMgICAgICAgICAgICAgICAgPSBpc1V0YztcbiAgICBwcm90by5pc1VUQyAgICAgICAgICAgICAgICA9IGlzVXRjO1xuICAgIHByb3RvLnpvbmVBYmJyID0gZ2V0Wm9uZUFiYnI7XG4gICAgcHJvdG8uem9uZU5hbWUgPSBnZXRab25lTmFtZTtcbiAgICBwcm90by5kYXRlcyAgPSBkZXByZWNhdGUoJ2RhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuJywgZ2V0U2V0RGF5T2ZNb250aCk7XG4gICAgcHJvdG8ubW9udGhzID0gZGVwcmVjYXRlKCdtb250aHMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbnRoIGluc3RlYWQnLCBnZXRTZXRNb250aCk7XG4gICAgcHJvdG8ueWVhcnMgID0gZGVwcmVjYXRlKCd5ZWFycyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgeWVhciBpbnN0ZWFkJywgZ2V0U2V0WWVhcik7XG4gICAgcHJvdG8uem9uZSAgID0gZGVwcmVjYXRlKCdtb21lbnQoKS56b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy96b25lLycsIGdldFNldFpvbmUpO1xuICAgIHByb3RvLmlzRFNUU2hpZnRlZCA9IGRlcHJlY2F0ZSgnaXNEU1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBpbmZvcm1hdGlvbicsIGlzRGF5bGlnaHRTYXZpbmdUaW1lU2hpZnRlZCk7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVbml4IChpbnB1dCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJblpvbmUgKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5wYXJzZVpvbmUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVQYXJzZVBvc3RGb3JtYXQgKHN0cmluZykge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgIH1cblxuICAgIHZhciBwcm90byQxID0gTG9jYWxlLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDEuY2FsZW5kYXIgICAgICAgID0gY2FsZW5kYXI7XG4gICAgcHJvdG8kMS5sb25nRGF0ZUZvcm1hdCAgPSBsb25nRGF0ZUZvcm1hdDtcbiAgICBwcm90byQxLmludmFsaWREYXRlICAgICA9IGludmFsaWREYXRlO1xuICAgIHByb3RvJDEub3JkaW5hbCAgICAgICAgID0gb3JkaW5hbDtcbiAgICBwcm90byQxLnByZXBhcnNlICAgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnBvc3Rmb3JtYXQgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnJlbGF0aXZlVGltZSAgICA9IHJlbGF0aXZlVGltZTtcbiAgICBwcm90byQxLnBhc3RGdXR1cmUgICAgICA9IHBhc3RGdXR1cmU7XG4gICAgcHJvdG8kMS5zZXQgICAgICAgICAgICAgPSBzZXQ7XG5cbiAgICBwcm90byQxLm1vbnRocyAgICAgICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRocztcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0ICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRoc1Nob3J0O1xuICAgIHByb3RvJDEubW9udGhzUGFyc2UgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzUGFyc2U7XG4gICAgcHJvdG8kMS5tb250aHNSZWdleCAgICAgICA9IG1vbnRoc1JlZ2V4O1xuICAgIHByb3RvJDEubW9udGhzU2hvcnRSZWdleCAgPSBtb250aHNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2VlayA9IGxvY2FsZVdlZWs7XG4gICAgcHJvdG8kMS5maXJzdERheU9mWWVhciA9IGxvY2FsZUZpcnN0RGF5T2ZZZWFyO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZldlZWsgPSBsb2NhbGVGaXJzdERheU9mV2VlaztcblxuICAgIHByb3RvJDEud2Vla2RheXMgICAgICAgPSAgICAgICAgbG9jYWxlV2Vla2RheXM7XG4gICAgcHJvdG8kMS53ZWVrZGF5c01pbiAgICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c01pbjtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnQgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzU2hvcnQ7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1BhcnNlICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c1BhcnNlO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5c1JlZ2V4ICAgICAgID0gICAgICAgIHdlZWtkYXlzUmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0UmVnZXggID0gICAgICAgIHdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzTWluUmVnZXggICAgPSAgICAgICAgd2Vla2RheXNNaW5SZWdleDtcblxuICAgIHByb3RvJDEuaXNQTSA9IGxvY2FsZUlzUE07XG4gICAgcHJvdG8kMS5tZXJpZGllbSA9IGxvY2FsZU1lcmlkaWVtO1xuXG4gICAgZnVuY3Rpb24gZ2V0JDEgKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCBzZXR0ZXIpIHtcbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpO1xuICAgICAgICB2YXIgdXRjID0gY3JlYXRlVVRDKCkuc2V0KHNldHRlciwgaW5kZXgpO1xuICAgICAgICByZXR1cm4gbG9jYWxlW2ZpZWxkXSh1dGMsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRoc0ltcGwgKGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICBvdXRbaV0gPSBnZXQkMShmb3JtYXQsIGksIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIC8vICgpXG4gICAgLy8gKDUpXG4gICAgLy8gKGZtdCwgNSlcbiAgICAvLyAoZm10KVxuICAgIC8vICh0cnVlKVxuICAgIC8vICh0cnVlLCA1KVxuICAgIC8vICh0cnVlLCBmbXQsIDUpXG4gICAgLy8gKHRydWUsIGZtdClcbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNJbXBsIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbG9jYWxlU29ydGVkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtYXQgPSBsb2NhbGVTb3J0ZWQ7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGxvY2FsZVNvcnRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpLFxuICAgICAgICAgICAgc2hpZnQgPSBsb2NhbGVTb3J0ZWQgPyBsb2NhbGUuX3dlZWsuZG93IDogMDtcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgKGluZGV4ICsgc2hpZnQpICUgNywgZmllbGQsICdkYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IGdldCQxKGZvcm1hdCwgKGkgKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRocyAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRocycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RNb250aHNTaG9ydCAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRoc1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNTaG9ydCAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzU2hvcnQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNNaW4gKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c01pbicpO1xuICAgIH1cblxuICAgIGdldFNldEdsb2JhbExvY2FsZSgnZW4nLCB7XG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSh0aHxzdHxuZHxyZCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodG9JbnQobnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG4gICAgaG9va3MubGFuZyA9IGRlcHJlY2F0ZSgnbW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4nLCBnZXRTZXRHbG9iYWxMb2NhbGUpO1xuICAgIGhvb2tzLmxhbmdEYXRhID0gZGVwcmVjYXRlKCdtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuJywgZ2V0TG9jYWxlKTtcblxuICAgIHZhciBtYXRoQWJzID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBhYnMgKCkge1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgICAgPSB0aGlzLl9kYXRhO1xuXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9IG1hdGhBYnModGhpcy5fbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgdGhpcy5fZGF5cyAgICAgICAgID0gbWF0aEFicyh0aGlzLl9kYXlzKTtcbiAgICAgICAgdGhpcy5fbW9udGhzICAgICAgID0gbWF0aEFicyh0aGlzLl9tb250aHMpO1xuXG4gICAgICAgIGRhdGEubWlsbGlzZWNvbmRzICA9IG1hdGhBYnMoZGF0YS5taWxsaXNlY29uZHMpO1xuICAgICAgICBkYXRhLnNlY29uZHMgICAgICAgPSBtYXRoQWJzKGRhdGEuc2Vjb25kcyk7XG4gICAgICAgIGRhdGEubWludXRlcyAgICAgICA9IG1hdGhBYnMoZGF0YS5taW51dGVzKTtcbiAgICAgICAgZGF0YS5ob3VycyAgICAgICAgID0gbWF0aEFicyhkYXRhLmhvdXJzKTtcbiAgICAgICAgZGF0YS5tb250aHMgICAgICAgID0gbWF0aEFicyhkYXRhLm1vbnRocyk7XG4gICAgICAgIGRhdGEueWVhcnMgICAgICAgICA9IG1hdGhBYnMoZGF0YS55ZWFycyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU3VidHJhY3QkMSAoZHVyYXRpb24sIGlucHV0LCB2YWx1ZSwgZGlyZWN0aW9uKSB7XG4gICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUR1cmF0aW9uKGlucHV0LCB2YWx1ZSk7XG5cbiAgICAgICAgZHVyYXRpb24uX21pbGxpc2Vjb25kcyArPSBkaXJlY3Rpb24gKiBvdGhlci5fbWlsbGlzZWNvbmRzO1xuICAgICAgICBkdXJhdGlvbi5fZGF5cyAgICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9kYXlzO1xuICAgICAgICBkdXJhdGlvbi5fbW9udGhzICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9tb250aHM7XG5cbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBhZGQoMSwgJ3MnKSBvciBhZGQoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gYWRkJDEgKGlucHV0LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYWRkU3VidHJhY3QkMSh0aGlzLCBpbnB1dCwgdmFsdWUsIDEpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIHN1YnRyYWN0KDEsICdzJykgb3Igc3VidHJhY3QoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gc3VidHJhY3QkMSAoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgLTEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0NlaWwgKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1YmJsZSAoKSB7XG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSB0aGlzLl9taWxsaXNlY29uZHM7XG4gICAgICAgIHZhciBkYXlzICAgICAgICAgPSB0aGlzLl9kYXlzO1xuICAgICAgICB2YXIgbW9udGhzICAgICAgID0gdGhpcy5fbW9udGhzO1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgID0gdGhpcy5fZGF0YTtcbiAgICAgICAgdmFyIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzLCB5ZWFycywgbW9udGhzRnJvbURheXM7XG5cbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhIG1peCBvZiBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgdmFsdWVzLCBidWJibGUgZG93biBmaXJzdFxuICAgICAgICAvLyBjaGVjazogaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzIxNjZcbiAgICAgICAgaWYgKCEoKG1pbGxpc2Vjb25kcyA+PSAwICYmIGRheXMgPj0gMCAmJiBtb250aHMgPj0gMCkgfHxcbiAgICAgICAgICAgICAgICAobWlsbGlzZWNvbmRzIDw9IDAgJiYgZGF5cyA8PSAwICYmIG1vbnRocyA8PSAwKSkpIHtcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHMpICsgZGF5cykgKiA4NjRlNTtcbiAgICAgICAgICAgIGRheXMgPSAwO1xuICAgICAgICAgICAgbW9udGhzID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBidWJibGVzIHVwIHZhbHVlcywgc2VlIHRoZSB0ZXN0cyBmb3JcbiAgICAgICAgLy8gZXhhbXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLlxuICAgICAgICBkYXRhLm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAlIDEwMDA7XG5cbiAgICAgICAgc2Vjb25kcyAgICAgICAgICAgPSBhYnNGbG9vcihtaWxsaXNlY29uZHMgLyAxMDAwKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzICAgICAgPSBzZWNvbmRzICUgNjA7XG5cbiAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgICAgICA9IG1pbnV0ZXMgJSA2MDtcblxuICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIGRhdGEuaG91cnMgICAgICAgID0gaG91cnMgJSAyNDtcblxuICAgICAgICBkYXlzICs9IGFic0Zsb29yKGhvdXJzIC8gMjQpO1xuXG4gICAgICAgIC8vIGNvbnZlcnQgZGF5cyB0byBtb250aHNcbiAgICAgICAgbW9udGhzRnJvbURheXMgPSBhYnNGbG9vcihkYXlzVG9Nb250aHMoZGF5cykpO1xuICAgICAgICBtb250aHMgKz0gbW9udGhzRnJvbURheXM7XG4gICAgICAgIGRheXMgLT0gYWJzQ2VpbChtb250aHNUb0RheXMobW9udGhzRnJvbURheXMpKTtcblxuICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5ZWFyXG4gICAgICAgIHllYXJzID0gYWJzRmxvb3IobW9udGhzIC8gMTIpO1xuICAgICAgICBtb250aHMgJT0gMTI7XG5cbiAgICAgICAgZGF0YS5kYXlzICAgPSBkYXlzO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRocztcbiAgICAgICAgZGF0YS55ZWFycyAgPSB5ZWFycztcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzVG9Nb250aHMgKGRheXMpIHtcbiAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTQ2MDk3IGRheXMgKHRha2luZyBpbnRvIGFjY291bnQgbGVhcCB5ZWFyIHJ1bGVzKVxuICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxMiBtb250aHMgPT09IDQ4MDBcbiAgICAgICAgcmV0dXJuIGRheXMgKiA0ODAwIC8gMTQ2MDk3O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1RvRGF5cyAobW9udGhzKSB7XG4gICAgICAgIC8vIHRoZSByZXZlcnNlIG9mIGRheXNUb01vbnRoc1xuICAgICAgICByZXR1cm4gbW9udGhzICogMTQ2MDk3IC8gNDgwMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcyAodW5pdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5cztcbiAgICAgICAgdmFyIG1vbnRocztcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBpZiAodW5pdHMgPT09ICdtb250aCcgfHwgdW5pdHMgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgZGF5cyAgID0gdGhpcy5fZGF5cyAgICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7XG4gICAgICAgICAgICBtb250aHMgPSB0aGlzLl9tb250aHMgKyBkYXlzVG9Nb250aHMoZGF5cyk7XG4gICAgICAgICAgICByZXR1cm4gdW5pdHMgPT09ICdtb250aCcgPyBtb250aHMgOiBtb250aHMgLyAxMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBtaWxsaXNlY29uZHMgc2VwYXJhdGVseSBiZWNhdXNlIG9mIGZsb2F0aW5nIHBvaW50IG1hdGggZXJyb3JzIChpc3N1ZSAjMTg2NylcbiAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzICsgTWF0aC5yb3VuZChtb250aHNUb0RheXModGhpcy5fbW9udGhzKSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnd2VlaycgICA6IHJldHVybiBkYXlzIC8gNyAgICAgKyBtaWxsaXNlY29uZHMgLyA2MDQ4ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGF5JyAgICA6IHJldHVybiBkYXlzICAgICAgICAgKyBtaWxsaXNlY29uZHMgLyA4NjRlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdob3VyJyAgIDogcmV0dXJuIGRheXMgKiAyNCAgICArIG1pbGxpc2Vjb25kcyAvIDM2ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnbWludXRlJyA6IHJldHVybiBkYXlzICogMTQ0MCAgKyBtaWxsaXNlY29uZHMgLyA2ZTQ7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kJyA6IHJldHVybiBkYXlzICogODY0MDAgKyBtaWxsaXNlY29uZHMgLyAxMDAwO1xuICAgICAgICAgICAgICAgIC8vIE1hdGguZmxvb3IgcHJldmVudHMgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgaGVyZVxuICAgICAgICAgICAgICAgIGNhc2UgJ21pbGxpc2Vjb25kJzogcmV0dXJuIE1hdGguZmxvb3IoZGF5cyAqIDg2NGU1KSArIG1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdW5pdCAnICsgdW5pdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVXNlIHRoaXMuYXMoJ21zJyk/XG4gICAgZnVuY3Rpb24gdmFsdWVPZiQxICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHRoaXMuX2RheXMgKiA4NjRlNSArXG4gICAgICAgICAgICAodGhpcy5fbW9udGhzICUgMTIpICogMjU5MmU2ICtcbiAgICAgICAgICAgIHRvSW50KHRoaXMuX21vbnRocyAvIDEyKSAqIDMxNTM2ZTZcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlQXMgKGFsaWFzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcyhhbGlhcyk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGFzTWlsbGlzZWNvbmRzID0gbWFrZUFzKCdtcycpO1xuICAgIHZhciBhc1NlY29uZHMgICAgICA9IG1ha2VBcygncycpO1xuICAgIHZhciBhc01pbnV0ZXMgICAgICA9IG1ha2VBcygnbScpO1xuICAgIHZhciBhc0hvdXJzICAgICAgICA9IG1ha2VBcygnaCcpO1xuICAgIHZhciBhc0RheXMgICAgICAgICA9IG1ha2VBcygnZCcpO1xuICAgIHZhciBhc1dlZWtzICAgICAgICA9IG1ha2VBcygndycpO1xuICAgIHZhciBhc01vbnRocyAgICAgICA9IG1ha2VBcygnTScpO1xuICAgIHZhciBhc1llYXJzICAgICAgICA9IG1ha2VBcygneScpO1xuXG4gICAgZnVuY3Rpb24gY2xvbmUkMSAoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXQkMiAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXNbdW5pdHMgKyAncyddKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUdldHRlcihuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9kYXRhW25hbWVdIDogTmFOO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBtaWxsaXNlY29uZHMgPSBtYWtlR2V0dGVyKCdtaWxsaXNlY29uZHMnKTtcbiAgICB2YXIgc2Vjb25kcyAgICAgID0gbWFrZUdldHRlcignc2Vjb25kcycpO1xuICAgIHZhciBtaW51dGVzICAgICAgPSBtYWtlR2V0dGVyKCdtaW51dGVzJyk7XG4gICAgdmFyIGhvdXJzICAgICAgICA9IG1ha2VHZXR0ZXIoJ2hvdXJzJyk7XG4gICAgdmFyIGRheXMgICAgICAgICA9IG1ha2VHZXR0ZXIoJ2RheXMnKTtcbiAgICB2YXIgbW9udGhzICAgICAgID0gbWFrZUdldHRlcignbW9udGhzJyk7XG4gICAgdmFyIHllYXJzICAgICAgICA9IG1ha2VHZXR0ZXIoJ3llYXJzJyk7XG5cbiAgICBmdW5jdGlvbiB3ZWVrcyAoKSB7XG4gICAgICAgIHJldHVybiBhYnNGbG9vcih0aGlzLmRheXMoKSAvIDcpO1xuICAgIH1cblxuICAgIHZhciByb3VuZCA9IE1hdGgucm91bmQ7XG4gICAgdmFyIHRocmVzaG9sZHMgPSB7XG4gICAgICAgIHNzOiA0NCwgICAgICAgICAvLyBhIGZldyBzZWNvbmRzIHRvIHNlY29uZHNcbiAgICAgICAgcyA6IDQ1LCAgICAgICAgIC8vIHNlY29uZHMgdG8gbWludXRlXG4gICAgICAgIG0gOiA0NSwgICAgICAgICAvLyBtaW51dGVzIHRvIGhvdXJcbiAgICAgICAgaCA6IDIyLCAgICAgICAgIC8vIGhvdXJzIHRvIGRheVxuICAgICAgICBkIDogMjYsICAgICAgICAgLy8gZGF5cyB0byBtb250aFxuICAgICAgICBNIDogMTEgICAgICAgICAgLy8gbW9udGhzIHRvIHllYXJcbiAgICB9O1xuXG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBtb21lbnQuZm4uZnJvbSwgbW9tZW50LmZuLmZyb21Ob3csIGFuZCBtb21lbnQuZHVyYXRpb24uZm4uaHVtYW5pemVcbiAgICBmdW5jdGlvbiBzdWJzdGl0dXRlVGltZUFnbyhzdHJpbmcsIG51bWJlciwgd2l0aG91dFN1ZmZpeCwgaXNGdXR1cmUsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLnJlbGF0aXZlVGltZShudW1iZXIgfHwgMSwgISF3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUkMSAocG9zTmVnRHVyYXRpb24sIHdpdGhvdXRTdWZmaXgsIGxvY2FsZSkge1xuICAgICAgICB2YXIgZHVyYXRpb24gPSBjcmVhdGVEdXJhdGlvbihwb3NOZWdEdXJhdGlvbikuYWJzKCk7XG4gICAgICAgIHZhciBzZWNvbmRzICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdzJykpO1xuICAgICAgICB2YXIgbWludXRlcyAgPSByb3VuZChkdXJhdGlvbi5hcygnbScpKTtcbiAgICAgICAgdmFyIGhvdXJzICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ2gnKSk7XG4gICAgICAgIHZhciBkYXlzICAgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdkJykpO1xuICAgICAgICB2YXIgbW9udGhzICAgPSByb3VuZChkdXJhdGlvbi5hcygnTScpKTtcbiAgICAgICAgdmFyIHllYXJzICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ3knKSk7XG5cbiAgICAgICAgdmFyIGEgPSBzZWNvbmRzIDw9IHRocmVzaG9sZHMuc3MgJiYgWydzJywgc2Vjb25kc10gIHx8XG4gICAgICAgICAgICAgICAgc2Vjb25kcyA8IHRocmVzaG9sZHMucyAgICYmIFsnc3MnLCBzZWNvbmRzXSB8fFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMgPD0gMSAgICAgICAgICAgICAmJiBbJ20nXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBtaW51dGVzIDwgdGhyZXNob2xkcy5tICAgJiYgWydtbScsIG1pbnV0ZXNdIHx8XG4gICAgICAgICAgICAgICAgaG91cnMgICA8PSAxICAgICAgICAgICAgICYmIFsnaCddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIGhvdXJzICAgPCB0aHJlc2hvbGRzLmggICAmJiBbJ2hoJywgaG91cnNdICAgfHxcbiAgICAgICAgICAgICAgICBkYXlzICAgIDw9IDEgICAgICAgICAgICAgJiYgWydkJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgZGF5cyAgICA8IHRocmVzaG9sZHMuZCAgICYmIFsnZGQnLCBkYXlzXSAgICB8fFxuICAgICAgICAgICAgICAgIG1vbnRocyAgPD0gMSAgICAgICAgICAgICAmJiBbJ00nXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBtb250aHMgIDwgdGhyZXNob2xkcy5NICAgJiYgWydNTScsIG1vbnRoc10gIHx8XG4gICAgICAgICAgICAgICAgeWVhcnMgICA8PSAxICAgICAgICAgICAgICYmIFsneSddICAgICAgICAgICB8fCBbJ3l5JywgeWVhcnNdO1xuXG4gICAgICAgIGFbMl0gPSB3aXRob3V0U3VmZml4O1xuICAgICAgICBhWzNdID0gK3Bvc05lZ0R1cmF0aW9uID4gMDtcbiAgICAgICAgYVs0XSA9IGxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGVUaW1lQWdvLmFwcGx5KG51bGwsIGEpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgdGhlIHJvdW5kaW5nIGZ1bmN0aW9uIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3NcbiAgICBmdW5jdGlvbiBnZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZyAocm91bmRpbmdGdW5jdGlvbikge1xuICAgICAgICBpZiAocm91bmRpbmdGdW5jdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcm91bmQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZihyb3VuZGluZ0Z1bmN0aW9uKSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcm91bmQgPSByb3VuZGluZ0Z1bmN0aW9uO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgYSB0aHJlc2hvbGQgZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZCAodGhyZXNob2xkLCBsaW1pdCkge1xuICAgICAgICBpZiAodGhyZXNob2xkc1t0aHJlc2hvbGRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGltaXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRocmVzaG9sZHNbdGhyZXNob2xkXTtcbiAgICAgICAgfVxuICAgICAgICB0aHJlc2hvbGRzW3RocmVzaG9sZF0gPSBsaW1pdDtcbiAgICAgICAgaWYgKHRocmVzaG9sZCA9PT0gJ3MnKSB7XG4gICAgICAgICAgICB0aHJlc2hvbGRzLnNzID0gbGltaXQgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGh1bWFuaXplICh3aXRoU3VmZml4KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IHRoaXMubG9jYWxlRGF0YSgpO1xuICAgICAgICB2YXIgb3V0cHV0ID0gcmVsYXRpdmVUaW1lJDEodGhpcywgIXdpdGhTdWZmaXgsIGxvY2FsZSk7XG5cbiAgICAgICAgaWYgKHdpdGhTdWZmaXgpIHtcbiAgICAgICAgICAgIG91dHB1dCA9IGxvY2FsZS5wYXN0RnV0dXJlKCt0aGlzLCBvdXRwdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvY2FsZS5wb3N0Zm9ybWF0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFicyQxID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBzaWduKHgpIHtcbiAgICAgICAgcmV0dXJuICgoeCA+IDApIC0gKHggPCAwKSkgfHwgK3g7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmckMSgpIHtcbiAgICAgICAgLy8gZm9yIElTTyBzdHJpbmdzIHdlIGRvIG5vdCB1c2UgdGhlIG5vcm1hbCBidWJibGluZyBydWxlczpcbiAgICAgICAgLy8gICogbWlsbGlzZWNvbmRzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSBob3Vyc1xuICAgICAgICAvLyAgKiBkYXlzIGRvIG5vdCBidWJibGUgYXQgYWxsXG4gICAgICAgIC8vICAqIG1vbnRocyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgeWVhcnNcbiAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHRoZXJlIGlzIG5vIGNvbnRleHQtZnJlZSBjb252ZXJzaW9uIGJldHdlZW4gaG91cnMgYW5kIGRheXNcbiAgICAgICAgLy8gKHRoaW5rIG9mIGNsb2NrIGNoYW5nZXMpXG4gICAgICAgIC8vIGFuZCBhbHNvIG5vdCBiZXR3ZWVuIGRheXMgYW5kIG1vbnRocyAoMjgtMzEgZGF5cyBwZXIgbW9udGgpXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlY29uZHMgPSBhYnMkMSh0aGlzLl9taWxsaXNlY29uZHMpIC8gMTAwMDtcbiAgICAgICAgdmFyIGRheXMgICAgICAgICA9IGFicyQxKHRoaXMuX2RheXMpO1xuICAgICAgICB2YXIgbW9udGhzICAgICAgID0gYWJzJDEodGhpcy5fbW9udGhzKTtcbiAgICAgICAgdmFyIG1pbnV0ZXMsIGhvdXJzLCB5ZWFycztcblxuICAgICAgICAvLyAzNjAwIHNlY29uZHMgLT4gNjAgbWludXRlcyAtPiAxIGhvdXJcbiAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIHNlY29uZHMgJT0gNjA7XG4gICAgICAgIG1pbnV0ZXMgJT0gNjA7XG5cbiAgICAgICAgLy8gMTIgbW9udGhzIC0+IDEgeWVhclxuICAgICAgICB5ZWFycyAgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuXG4gICAgICAgIC8vIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9kb3JkaWxsZS9tb21lbnQtaXNvZHVyYXRpb24vYmxvYi9tYXN0ZXIvbW9tZW50Lmlzb2R1cmF0aW9uLmpzXG4gICAgICAgIHZhciBZID0geWVhcnM7XG4gICAgICAgIHZhciBNID0gbW9udGhzO1xuICAgICAgICB2YXIgRCA9IGRheXM7XG4gICAgICAgIHZhciBoID0gaG91cnM7XG4gICAgICAgIHZhciBtID0gbWludXRlcztcbiAgICAgICAgdmFyIHMgPSBzZWNvbmRzID8gc2Vjb25kcy50b0ZpeGVkKDMpLnJlcGxhY2UoL1xcLj8wKyQvLCAnJykgOiAnJztcbiAgICAgICAgdmFyIHRvdGFsID0gdGhpcy5hc1NlY29uZHMoKTtcblxuICAgICAgICBpZiAoIXRvdGFsKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBzYW1lIGFzIEMjJ3MgKE5vZGEpIGFuZCBweXRob24gKGlzb2RhdGUpLi4uXG4gICAgICAgICAgICAvLyBidXQgbm90IG90aGVyIEpTIChnb29nLmRhdGUpXG4gICAgICAgICAgICByZXR1cm4gJ1AwRCc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdG90YWxTaWduID0gdG90YWwgPCAwID8gJy0nIDogJyc7XG4gICAgICAgIHZhciB5bVNpZ24gPSBzaWduKHRoaXMuX21vbnRocykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG4gICAgICAgIHZhciBkYXlzU2lnbiA9IHNpZ24odGhpcy5fZGF5cykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG4gICAgICAgIHZhciBobXNTaWduID0gc2lnbih0aGlzLl9taWxsaXNlY29uZHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuXG4gICAgICAgIHJldHVybiB0b3RhbFNpZ24gKyAnUCcgK1xuICAgICAgICAgICAgKFkgPyB5bVNpZ24gKyBZICsgJ1knIDogJycpICtcbiAgICAgICAgICAgIChNID8geW1TaWduICsgTSArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAoRCA/IGRheXNTaWduICsgRCArICdEJyA6ICcnKSArXG4gICAgICAgICAgICAoKGggfHwgbSB8fCBzKSA/ICdUJyA6ICcnKSArXG4gICAgICAgICAgICAoaCA/IGhtc1NpZ24gKyBoICsgJ0gnIDogJycpICtcbiAgICAgICAgICAgIChtID8gaG1zU2lnbiArIG0gKyAnTScgOiAnJykgK1xuICAgICAgICAgICAgKHMgPyBobXNTaWduICsgcyArICdTJyA6ICcnKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8kMiA9IER1cmF0aW9uLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDIuaXNWYWxpZCAgICAgICAgPSBpc1ZhbGlkJDE7XG4gICAgcHJvdG8kMi5hYnMgICAgICAgICAgICA9IGFicztcbiAgICBwcm90byQyLmFkZCAgICAgICAgICAgID0gYWRkJDE7XG4gICAgcHJvdG8kMi5zdWJ0cmFjdCAgICAgICA9IHN1YnRyYWN0JDE7XG4gICAgcHJvdG8kMi5hcyAgICAgICAgICAgICA9IGFzO1xuICAgIHByb3RvJDIuYXNNaWxsaXNlY29uZHMgPSBhc01pbGxpc2Vjb25kcztcbiAgICBwcm90byQyLmFzU2Vjb25kcyAgICAgID0gYXNTZWNvbmRzO1xuICAgIHByb3RvJDIuYXNNaW51dGVzICAgICAgPSBhc01pbnV0ZXM7XG4gICAgcHJvdG8kMi5hc0hvdXJzICAgICAgICA9IGFzSG91cnM7XG4gICAgcHJvdG8kMi5hc0RheXMgICAgICAgICA9IGFzRGF5cztcbiAgICBwcm90byQyLmFzV2Vla3MgICAgICAgID0gYXNXZWVrcztcbiAgICBwcm90byQyLmFzTW9udGhzICAgICAgID0gYXNNb250aHM7XG4gICAgcHJvdG8kMi5hc1llYXJzICAgICAgICA9IGFzWWVhcnM7XG4gICAgcHJvdG8kMi52YWx1ZU9mICAgICAgICA9IHZhbHVlT2YkMTtcbiAgICBwcm90byQyLl9idWJibGUgICAgICAgID0gYnViYmxlO1xuICAgIHByb3RvJDIuY2xvbmUgICAgICAgICAgPSBjbG9uZSQxO1xuICAgIHByb3RvJDIuZ2V0ICAgICAgICAgICAgPSBnZXQkMjtcbiAgICBwcm90byQyLm1pbGxpc2Vjb25kcyAgID0gbWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuc2Vjb25kcyAgICAgICAgPSBzZWNvbmRzO1xuICAgIHByb3RvJDIubWludXRlcyAgICAgICAgPSBtaW51dGVzO1xuICAgIHByb3RvJDIuaG91cnMgICAgICAgICAgPSBob3VycztcbiAgICBwcm90byQyLmRheXMgICAgICAgICAgID0gZGF5cztcbiAgICBwcm90byQyLndlZWtzICAgICAgICAgID0gd2Vla3M7XG4gICAgcHJvdG8kMi5tb250aHMgICAgICAgICA9IG1vbnRocztcbiAgICBwcm90byQyLnllYXJzICAgICAgICAgID0geWVhcnM7XG4gICAgcHJvdG8kMi5odW1hbml6ZSAgICAgICA9IGh1bWFuaXplO1xuICAgIHByb3RvJDIudG9JU09TdHJpbmcgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIudG9TdHJpbmcgICAgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIudG9KU09OICAgICAgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIubG9jYWxlICAgICAgICAgPSBsb2NhbGU7XG4gICAgcHJvdG8kMi5sb2NhbGVEYXRhICAgICA9IGxvY2FsZURhdGE7XG5cbiAgICBwcm90byQyLnRvSXNvU3RyaW5nID0gZGVwcmVjYXRlKCd0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKScsIHRvSVNPU3RyaW5nJDEpO1xuICAgIHByb3RvJDIubGFuZyA9IGxhbmc7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignWCcsIDAsIDAsICd1bml4Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3gnLCAwLCAwLCAndmFsdWVPZicpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigneCcsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdYJywgbWF0Y2hUaW1lc3RhbXApO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1gnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUocGFyc2VGbG9hdChpbnB1dCwgMTApICogMTAwMCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbigneCcsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSh0b0ludChpbnB1dCkpO1xuICAgIH0pO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG5cbiAgICBob29rcy52ZXJzaW9uID0gJzIuMjIuMic7XG5cbiAgICBzZXRIb29rQ2FsbGJhY2soY3JlYXRlTG9jYWwpO1xuXG4gICAgaG9va3MuZm4gICAgICAgICAgICAgICAgICAgID0gcHJvdG87XG4gICAgaG9va3MubWluICAgICAgICAgICAgICAgICAgID0gbWluO1xuICAgIGhvb2tzLm1heCAgICAgICAgICAgICAgICAgICA9IG1heDtcbiAgICBob29rcy5ub3cgICAgICAgICAgICAgICAgICAgPSBub3c7XG4gICAgaG9va3MudXRjICAgICAgICAgICAgICAgICAgID0gY3JlYXRlVVRDO1xuICAgIGhvb2tzLnVuaXggICAgICAgICAgICAgICAgICA9IGNyZWF0ZVVuaXg7XG4gICAgaG9va3MubW9udGhzICAgICAgICAgICAgICAgID0gbGlzdE1vbnRocztcbiAgICBob29rcy5pc0RhdGUgICAgICAgICAgICAgICAgPSBpc0RhdGU7XG4gICAgaG9va3MubG9jYWxlICAgICAgICAgICAgICAgID0gZ2V0U2V0R2xvYmFsTG9jYWxlO1xuICAgIGhvb2tzLmludmFsaWQgICAgICAgICAgICAgICA9IGNyZWF0ZUludmFsaWQ7XG4gICAgaG9va3MuZHVyYXRpb24gICAgICAgICAgICAgID0gY3JlYXRlRHVyYXRpb247XG4gICAgaG9va3MuaXNNb21lbnQgICAgICAgICAgICAgID0gaXNNb21lbnQ7XG4gICAgaG9va3Mud2Vla2RheXMgICAgICAgICAgICAgID0gbGlzdFdlZWtkYXlzO1xuICAgIGhvb2tzLnBhcnNlWm9uZSAgICAgICAgICAgICA9IGNyZWF0ZUluWm9uZTtcbiAgICBob29rcy5sb2NhbGVEYXRhICAgICAgICAgICAgPSBnZXRMb2NhbGU7XG4gICAgaG9va3MuaXNEdXJhdGlvbiAgICAgICAgICAgID0gaXNEdXJhdGlvbjtcbiAgICBob29rcy5tb250aHNTaG9ydCAgICAgICAgICAgPSBsaXN0TW9udGhzU2hvcnQ7XG4gICAgaG9va3Mud2Vla2RheXNNaW4gICAgICAgICAgID0gbGlzdFdlZWtkYXlzTWluO1xuICAgIGhvb2tzLmRlZmluZUxvY2FsZSAgICAgICAgICA9IGRlZmluZUxvY2FsZTtcbiAgICBob29rcy51cGRhdGVMb2NhbGUgICAgICAgICAgPSB1cGRhdGVMb2NhbGU7XG4gICAgaG9va3MubG9jYWxlcyAgICAgICAgICAgICAgID0gbGlzdExvY2FsZXM7XG4gICAgaG9va3Mud2Vla2RheXNTaG9ydCAgICAgICAgID0gbGlzdFdlZWtkYXlzU2hvcnQ7XG4gICAgaG9va3Mubm9ybWFsaXplVW5pdHMgICAgICAgID0gbm9ybWFsaXplVW5pdHM7XG4gICAgaG9va3MucmVsYXRpdmVUaW1lUm91bmRpbmcgID0gZ2V0U2V0UmVsYXRpdmVUaW1lUm91bmRpbmc7XG4gICAgaG9va3MucmVsYXRpdmVUaW1lVGhyZXNob2xkID0gZ2V0U2V0UmVsYXRpdmVUaW1lVGhyZXNob2xkO1xuICAgIGhvb2tzLmNhbGVuZGFyRm9ybWF0ICAgICAgICA9IGdldENhbGVuZGFyRm9ybWF0O1xuICAgIGhvb2tzLnByb3RvdHlwZSAgICAgICAgICAgICA9IHByb3RvO1xuXG4gICAgLy8gY3VycmVudGx5IEhUTUw1IGlucHV0IHR5cGUgb25seSBzdXBwb3J0cyAyNC1ob3VyIGZvcm1hdHNcbiAgICBob29rcy5IVE1MNV9GTVQgPSB7XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMOiAnWVlZWS1NTS1ERFRISDptbScsICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9TRUNPTkRTOiAnWVlZWS1NTS1ERFRISDptbTpzcycsICAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjFcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9NUzogJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTJywgICAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjAuMDAxXCIgLz5cbiAgICAgICAgREFURTogJ1lZWVktTU0tREQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJkYXRlXCIgLz5cbiAgICAgICAgVElNRTogJ0hIOm1tJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgLz5cbiAgICAgICAgVElNRV9TRUNPTkRTOiAnSEg6bW06c3MnLCAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgc3RlcD1cIjFcIiAvPlxuICAgICAgICBUSU1FX01TOiAnSEg6bW06c3MuU1NTJywgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiBzdGVwPVwiMC4wMDFcIiAvPlxuICAgICAgICBXRUVLOiAnWVlZWS1bV11XVycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cIndlZWtcIiAvPlxuICAgICAgICBNT05USDogJ1lZWVktTU0nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cIm1vbnRoXCIgLz5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGhvb2tzO1xuXG59KSkpOyIsIi8vISBtb21lbnQtdGltZXpvbmUuanNcbi8vISB2ZXJzaW9uIDogMC41LjE3XG4vLyEgQ29weXJpZ2h0IChjKSBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbi8vISBsaWNlbnNlIDogTUlUXG4vLyEgZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50LXRpbWV6b25lXG5cbihmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkge1xuXHRcInVzZSBzdHJpY3RcIjtcblxuXHQvKmdsb2JhbCBkZWZpbmUqL1xuXHRpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0ZGVmaW5lKFsnbW9tZW50J10sIGZhY3RvcnkpOyAgICAgICAgICAgICAgICAgLy8gQU1EXG5cdH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnbW9tZW50JykpOyAvLyBOb2RlXG5cdH0gZWxzZSB7XG5cdFx0ZmFjdG9yeShyb290Lm1vbWVudCk7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnJvd3NlclxuXHR9XG59KHRoaXMsIGZ1bmN0aW9uIChtb21lbnQpIHtcblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0Ly8gRG8gbm90IGxvYWQgbW9tZW50LXRpbWV6b25lIGEgc2Vjb25kIHRpbWUuXG5cdC8vIGlmIChtb21lbnQudHogIT09IHVuZGVmaW5lZCkge1xuXHQvLyBcdGxvZ0Vycm9yKCdNb21lbnQgVGltZXpvbmUgJyArIG1vbWVudC50ei52ZXJzaW9uICsgJyB3YXMgYWxyZWFkeSBsb2FkZWQgJyArIChtb21lbnQudHouZGF0YVZlcnNpb24gPyAnd2l0aCBkYXRhIGZyb20gJyA6ICd3aXRob3V0IGFueSBkYXRhJykgKyBtb21lbnQudHouZGF0YVZlcnNpb24pO1xuXHQvLyBcdHJldHVybiBtb21lbnQ7XG5cdC8vIH1cblxuXHR2YXIgVkVSU0lPTiA9IFwiMC41LjE3XCIsXG5cdFx0em9uZXMgPSB7fSxcblx0XHRsaW5rcyA9IHt9LFxuXHRcdG5hbWVzID0ge30sXG5cdFx0Z3Vlc3NlcyA9IHt9LFxuXHRcdGNhY2hlZEd1ZXNzLFxuXG5cdFx0bW9tZW50VmVyc2lvbiA9IG1vbWVudC52ZXJzaW9uLnNwbGl0KCcuJyksXG5cdFx0bWFqb3IgPSArbW9tZW50VmVyc2lvblswXSxcblx0XHRtaW5vciA9ICttb21lbnRWZXJzaW9uWzFdO1xuXG5cdC8vIE1vbWVudC5qcyB2ZXJzaW9uIGNoZWNrXG5cdGlmIChtYWpvciA8IDIgfHwgKG1ham9yID09PSAyICYmIG1pbm9yIDwgNikpIHtcblx0XHRsb2dFcnJvcignTW9tZW50IFRpbWV6b25lIHJlcXVpcmVzIE1vbWVudC5qcyA+PSAyLjYuMC4gWW91IGFyZSB1c2luZyBNb21lbnQuanMgJyArIG1vbWVudC52ZXJzaW9uICsgJy4gU2VlIG1vbWVudGpzLmNvbScpO1xuXHR9XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHRcdFVucGFja2luZ1xuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gY2hhckNvZGVUb0ludChjaGFyQ29kZSkge1xuXHRcdGlmIChjaGFyQ29kZSA+IDk2KSB7XG5cdFx0XHRyZXR1cm4gY2hhckNvZGUgLSA4Nztcblx0XHR9IGVsc2UgaWYgKGNoYXJDb2RlID4gNjQpIHtcblx0XHRcdHJldHVybiBjaGFyQ29kZSAtIDI5O1xuXHRcdH1cblx0XHRyZXR1cm4gY2hhckNvZGUgLSA0ODtcblx0fVxuXG5cdGZ1bmN0aW9uIHVucGFja0Jhc2U2MChzdHJpbmcpIHtcblx0XHR2YXIgaSA9IDAsXG5cdFx0XHRwYXJ0cyA9IHN0cmluZy5zcGxpdCgnLicpLFxuXHRcdFx0d2hvbGUgPSBwYXJ0c1swXSxcblx0XHRcdGZyYWN0aW9uYWwgPSBwYXJ0c1sxXSB8fCAnJyxcblx0XHRcdG11bHRpcGxpZXIgPSAxLFxuXHRcdFx0bnVtLFxuXHRcdFx0b3V0ID0gMCxcblx0XHRcdHNpZ24gPSAxO1xuXG5cdFx0Ly8gaGFuZGxlIG5lZ2F0aXZlIG51bWJlcnNcblx0XHRpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ1KSB7XG5cdFx0XHRpID0gMTtcblx0XHRcdHNpZ24gPSAtMTtcblx0XHR9XG5cblx0XHQvLyBoYW5kbGUgZGlnaXRzIGJlZm9yZSB0aGUgZGVjaW1hbFxuXHRcdGZvciAoaTsgaSA8IHdob2xlLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRudW0gPSBjaGFyQ29kZVRvSW50KHdob2xlLmNoYXJDb2RlQXQoaSkpO1xuXHRcdFx0b3V0ID0gNjAgKiBvdXQgKyBudW07XG5cdFx0fVxuXG5cdFx0Ly8gaGFuZGxlIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbFxuXHRcdGZvciAoaSA9IDA7IGkgPCBmcmFjdGlvbmFsLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRtdWx0aXBsaWVyID0gbXVsdGlwbGllciAvIDYwO1xuXHRcdFx0bnVtID0gY2hhckNvZGVUb0ludChmcmFjdGlvbmFsLmNoYXJDb2RlQXQoaSkpO1xuXHRcdFx0b3V0ICs9IG51bSAqIG11bHRpcGxpZXI7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dCAqIHNpZ247XG5cdH1cblxuXHRmdW5jdGlvbiBhcnJheVRvSW50IChhcnJheSkge1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcblx0XHRcdGFycmF5W2ldID0gdW5wYWNrQmFzZTYwKGFycmF5W2ldKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBpbnRUb1VudGlsIChhcnJheSwgbGVuZ3RoKSB7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0YXJyYXlbaV0gPSBNYXRoLnJvdW5kKChhcnJheVtpIC0gMV0gfHwgMCkgKyAoYXJyYXlbaV0gKiA2MDAwMCkpOyAvLyBtaW51dGVzIHRvIG1pbGxpc2Vjb25kc1xuXHRcdH1cblxuXHRcdGFycmF5W2xlbmd0aCAtIDFdID0gSW5maW5pdHk7XG5cdH1cblxuXHRmdW5jdGlvbiBtYXBJbmRpY2VzIChzb3VyY2UsIGluZGljZXMpIHtcblx0XHR2YXIgb3V0ID0gW10sIGk7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0b3V0W2ldID0gc291cmNlW2luZGljZXNbaV1dO1xuXHRcdH1cblxuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHRmdW5jdGlvbiB1bnBhY2sgKHN0cmluZykge1xuXHRcdHZhciBkYXRhID0gc3RyaW5nLnNwbGl0KCd8JyksXG5cdFx0XHRvZmZzZXRzID0gZGF0YVsyXS5zcGxpdCgnICcpLFxuXHRcdFx0aW5kaWNlcyA9IGRhdGFbM10uc3BsaXQoJycpLFxuXHRcdFx0dW50aWxzICA9IGRhdGFbNF0uc3BsaXQoJyAnKTtcblxuXHRcdGFycmF5VG9JbnQob2Zmc2V0cyk7XG5cdFx0YXJyYXlUb0ludChpbmRpY2VzKTtcblx0XHRhcnJheVRvSW50KHVudGlscyk7XG5cblx0XHRpbnRUb1VudGlsKHVudGlscywgaW5kaWNlcy5sZW5ndGgpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdG5hbWUgICAgICAgOiBkYXRhWzBdLFxuXHRcdFx0YWJicnMgICAgICA6IG1hcEluZGljZXMoZGF0YVsxXS5zcGxpdCgnICcpLCBpbmRpY2VzKSxcblx0XHRcdG9mZnNldHMgICAgOiBtYXBJbmRpY2VzKG9mZnNldHMsIGluZGljZXMpLFxuXHRcdFx0dW50aWxzICAgICA6IHVudGlscyxcblx0XHRcdHBvcHVsYXRpb24gOiBkYXRhWzVdIHwgMFxuXHRcdH07XG5cdH1cblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0Wm9uZSBvYmplY3Rcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdGZ1bmN0aW9uIFpvbmUgKHBhY2tlZFN0cmluZykge1xuXHRcdGlmIChwYWNrZWRTdHJpbmcpIHtcblx0XHRcdHRoaXMuX3NldCh1bnBhY2socGFja2VkU3RyaW5nKSk7XG5cdFx0fVxuXHR9XG5cblx0Wm9uZS5wcm90b3R5cGUgPSB7XG5cdFx0X3NldCA6IGZ1bmN0aW9uICh1bnBhY2tlZCkge1xuXHRcdFx0dGhpcy5uYW1lICAgICAgID0gdW5wYWNrZWQubmFtZTtcblx0XHRcdHRoaXMuYWJicnMgICAgICA9IHVucGFja2VkLmFiYnJzO1xuXHRcdFx0dGhpcy51bnRpbHMgICAgID0gdW5wYWNrZWQudW50aWxzO1xuXHRcdFx0dGhpcy5vZmZzZXRzICAgID0gdW5wYWNrZWQub2Zmc2V0cztcblx0XHRcdHRoaXMucG9wdWxhdGlvbiA9IHVucGFja2VkLnBvcHVsYXRpb247XG5cdFx0fSxcblxuXHRcdF9pbmRleCA6IGZ1bmN0aW9uICh0aW1lc3RhbXApIHtcblx0XHRcdHZhciB0YXJnZXQgPSArdGltZXN0YW1wLFxuXHRcdFx0XHR1bnRpbHMgPSB0aGlzLnVudGlscyxcblx0XHRcdFx0aTtcblxuXHRcdFx0Zm9yIChpID0gMDsgaSA8IHVudGlscy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAodGFyZ2V0IDwgdW50aWxzW2ldKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXG5cdFx0cGFyc2UgOiBmdW5jdGlvbiAodGltZXN0YW1wKSB7XG5cdFx0XHR2YXIgdGFyZ2V0ICA9ICt0aW1lc3RhbXAsXG5cdFx0XHRcdG9mZnNldHMgPSB0aGlzLm9mZnNldHMsXG5cdFx0XHRcdHVudGlscyAgPSB0aGlzLnVudGlscyxcblx0XHRcdFx0bWF4ICAgICA9IHVudGlscy5sZW5ndGggLSAxLFxuXHRcdFx0XHRvZmZzZXQsIG9mZnNldE5leHQsIG9mZnNldFByZXYsIGk7XG5cblx0XHRcdGZvciAoaSA9IDA7IGkgPCBtYXg7IGkrKykge1xuXHRcdFx0XHRvZmZzZXQgICAgID0gb2Zmc2V0c1tpXTtcblx0XHRcdFx0b2Zmc2V0TmV4dCA9IG9mZnNldHNbaSArIDFdO1xuXHRcdFx0XHRvZmZzZXRQcmV2ID0gb2Zmc2V0c1tpID8gaSAtIDEgOiBpXTtcblxuXHRcdFx0XHRpZiAob2Zmc2V0IDwgb2Zmc2V0TmV4dCAmJiB0ei5tb3ZlQW1iaWd1b3VzRm9yd2FyZCkge1xuXHRcdFx0XHRcdG9mZnNldCA9IG9mZnNldE5leHQ7XG5cdFx0XHRcdH0gZWxzZSBpZiAob2Zmc2V0ID4gb2Zmc2V0UHJldiAmJiB0ei5tb3ZlSW52YWxpZEZvcndhcmQpIHtcblx0XHRcdFx0XHRvZmZzZXQgPSBvZmZzZXRQcmV2O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHRhcmdldCA8IHVudGlsc1tpXSAtIChvZmZzZXQgKiA2MDAwMCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gb2Zmc2V0c1tpXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gb2Zmc2V0c1ttYXhdO1xuXHRcdH0sXG5cblx0XHRhYmJyIDogZnVuY3Rpb24gKG1vbSkge1xuXHRcdFx0cmV0dXJuIHRoaXMuYWJicnNbdGhpcy5faW5kZXgobW9tKV07XG5cdFx0fSxcblxuXHRcdG9mZnNldCA6IGZ1bmN0aW9uIChtb20pIHtcblx0XHRcdGxvZ0Vycm9yKFwiem9uZS5vZmZzZXQgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB6b25lLnV0Y09mZnNldFwiKTtcblx0XHRcdHJldHVybiB0aGlzLm9mZnNldHNbdGhpcy5faW5kZXgobW9tKV07XG5cdFx0fSxcblxuXHRcdHV0Y09mZnNldCA6IGZ1bmN0aW9uIChtb20pIHtcblx0XHRcdHJldHVybiB0aGlzLm9mZnNldHNbdGhpcy5faW5kZXgobW9tKV07XG5cdFx0fVxuXHR9O1xuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0XHRDdXJyZW50IFRpbWV6b25lXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHRmdW5jdGlvbiBPZmZzZXRBdChhdCkge1xuXHRcdHZhciB0aW1lU3RyaW5nID0gYXQudG9UaW1lU3RyaW5nKCk7XG5cdFx0dmFyIGFiYnIgPSB0aW1lU3RyaW5nLm1hdGNoKC9cXChbYS16IF0rXFwpL2kpO1xuXHRcdGlmIChhYmJyICYmIGFiYnJbMF0pIHtcblx0XHRcdC8vIDE3OjU2OjMxIEdNVC0wNjAwIChDU1QpXG5cdFx0XHQvLyAxNzo1NjozMSBHTVQtMDYwMCAoQ2VudHJhbCBTdGFuZGFyZCBUaW1lKVxuXHRcdFx0YWJiciA9IGFiYnJbMF0ubWF0Y2goL1tBLVpdL2cpO1xuXHRcdFx0YWJiciA9IGFiYnIgPyBhYmJyLmpvaW4oJycpIDogdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyAxNzo1NjozMSBDU1Rcblx0XHRcdC8vIDE3OjU2OjMxIEdNVCswODAwICjlj7DljJfmqJnmupbmmYLplpMpXG5cdFx0XHRhYmJyID0gdGltZVN0cmluZy5tYXRjaCgvW0EtWl17Myw1fS9nKTtcblx0XHRcdGFiYnIgPSBhYmJyID8gYWJiclswXSA6IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHRpZiAoYWJiciA9PT0gJ0dNVCcpIHtcblx0XHRcdGFiYnIgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0dGhpcy5hdCA9ICthdDtcblx0XHR0aGlzLmFiYnIgPSBhYmJyO1xuXHRcdHRoaXMub2Zmc2V0ID0gYXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtcblx0fVxuXG5cdGZ1bmN0aW9uIFpvbmVTY29yZSh6b25lKSB7XG5cdFx0dGhpcy56b25lID0gem9uZTtcblx0XHR0aGlzLm9mZnNldFNjb3JlID0gMDtcblx0XHR0aGlzLmFiYnJTY29yZSA9IDA7XG5cdH1cblxuXHRab25lU2NvcmUucHJvdG90eXBlLnNjb3JlT2Zmc2V0QXQgPSBmdW5jdGlvbiAob2Zmc2V0QXQpIHtcblx0XHR0aGlzLm9mZnNldFNjb3JlICs9IE1hdGguYWJzKHRoaXMuem9uZS51dGNPZmZzZXQob2Zmc2V0QXQuYXQpIC0gb2Zmc2V0QXQub2Zmc2V0KTtcblx0XHRpZiAodGhpcy56b25lLmFiYnIob2Zmc2V0QXQuYXQpLnJlcGxhY2UoL1teQS1aXS9nLCAnJykgIT09IG9mZnNldEF0LmFiYnIpIHtcblx0XHRcdHRoaXMuYWJiclNjb3JlKys7XG5cdFx0fVxuXHR9O1xuXG5cdGZ1bmN0aW9uIGZpbmRDaGFuZ2UobG93LCBoaWdoKSB7XG5cdFx0dmFyIG1pZCwgZGlmZjtcblxuXHRcdHdoaWxlICgoZGlmZiA9ICgoaGlnaC5hdCAtIGxvdy5hdCkgLyAxMmU0IHwgMCkgKiA2ZTQpKSB7XG5cdFx0XHRtaWQgPSBuZXcgT2Zmc2V0QXQobmV3IERhdGUobG93LmF0ICsgZGlmZikpO1xuXHRcdFx0aWYgKG1pZC5vZmZzZXQgPT09IGxvdy5vZmZzZXQpIHtcblx0XHRcdFx0bG93ID0gbWlkO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aGlnaCA9IG1pZDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbG93O1xuXHR9XG5cblx0ZnVuY3Rpb24gdXNlck9mZnNldHMoKSB7XG5cdFx0dmFyIHN0YXJ0WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDIsXG5cdFx0XHRsYXN0ID0gbmV3IE9mZnNldEF0KG5ldyBEYXRlKHN0YXJ0WWVhciwgMCwgMSkpLFxuXHRcdFx0b2Zmc2V0cyA9IFtsYXN0XSxcblx0XHRcdGNoYW5nZSwgbmV4dCwgaTtcblxuXHRcdGZvciAoaSA9IDE7IGkgPCA0ODsgaSsrKSB7XG5cdFx0XHRuZXh0ID0gbmV3IE9mZnNldEF0KG5ldyBEYXRlKHN0YXJ0WWVhciwgaSwgMSkpO1xuXHRcdFx0aWYgKG5leHQub2Zmc2V0ICE9PSBsYXN0Lm9mZnNldCkge1xuXHRcdFx0XHRjaGFuZ2UgPSBmaW5kQ2hhbmdlKGxhc3QsIG5leHQpO1xuXHRcdFx0XHRvZmZzZXRzLnB1c2goY2hhbmdlKTtcblx0XHRcdFx0b2Zmc2V0cy5wdXNoKG5ldyBPZmZzZXRBdChuZXcgRGF0ZShjaGFuZ2UuYXQgKyA2ZTQpKSk7XG5cdFx0XHR9XG5cdFx0XHRsYXN0ID0gbmV4dDtcblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7XG5cdFx0XHRvZmZzZXRzLnB1c2gobmV3IE9mZnNldEF0KG5ldyBEYXRlKHN0YXJ0WWVhciArIGksIDAsIDEpKSk7XG5cdFx0XHRvZmZzZXRzLnB1c2gobmV3IE9mZnNldEF0KG5ldyBEYXRlKHN0YXJ0WWVhciArIGksIDYsIDEpKSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG9mZnNldHM7XG5cdH1cblxuXHRmdW5jdGlvbiBzb3J0Wm9uZVNjb3JlcyAoYSwgYikge1xuXHRcdGlmIChhLm9mZnNldFNjb3JlICE9PSBiLm9mZnNldFNjb3JlKSB7XG5cdFx0XHRyZXR1cm4gYS5vZmZzZXRTY29yZSAtIGIub2Zmc2V0U2NvcmU7XG5cdFx0fVxuXHRcdGlmIChhLmFiYnJTY29yZSAhPT0gYi5hYmJyU2NvcmUpIHtcblx0XHRcdHJldHVybiBhLmFiYnJTY29yZSAtIGIuYWJiclNjb3JlO1xuXHRcdH1cblx0XHRyZXR1cm4gYi56b25lLnBvcHVsYXRpb24gLSBhLnpvbmUucG9wdWxhdGlvbjtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZFRvR3Vlc3NlcyAobmFtZSwgb2Zmc2V0cykge1xuXHRcdHZhciBpLCBvZmZzZXQ7XG5cdFx0YXJyYXlUb0ludChvZmZzZXRzKTtcblx0XHRmb3IgKGkgPSAwOyBpIDwgb2Zmc2V0cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0b2Zmc2V0ID0gb2Zmc2V0c1tpXTtcblx0XHRcdGd1ZXNzZXNbb2Zmc2V0XSA9IGd1ZXNzZXNbb2Zmc2V0XSB8fCB7fTtcblx0XHRcdGd1ZXNzZXNbb2Zmc2V0XVtuYW1lXSA9IHRydWU7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gZ3Vlc3Nlc0ZvclVzZXJPZmZzZXRzIChvZmZzZXRzKSB7XG5cdFx0dmFyIG9mZnNldHNMZW5ndGggPSBvZmZzZXRzLmxlbmd0aCxcblx0XHRcdGZpbHRlcmVkR3Vlc3NlcyA9IHt9LFxuXHRcdFx0b3V0ID0gW10sXG5cdFx0XHRpLCBqLCBndWVzc2VzT2Zmc2V0O1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IG9mZnNldHNMZW5ndGg7IGkrKykge1xuXHRcdFx0Z3Vlc3Nlc09mZnNldCA9IGd1ZXNzZXNbb2Zmc2V0c1tpXS5vZmZzZXRdIHx8IHt9O1xuXHRcdFx0Zm9yIChqIGluIGd1ZXNzZXNPZmZzZXQpIHtcblx0XHRcdFx0aWYgKGd1ZXNzZXNPZmZzZXQuaGFzT3duUHJvcGVydHkoaikpIHtcblx0XHRcdFx0XHRmaWx0ZXJlZEd1ZXNzZXNbal0gPSB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChpIGluIGZpbHRlcmVkR3Vlc3Nlcykge1xuXHRcdFx0aWYgKGZpbHRlcmVkR3Vlc3Nlcy5oYXNPd25Qcm9wZXJ0eShpKSkge1xuXHRcdFx0XHRvdXQucHVzaChuYW1lc1tpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dDtcblx0fVxuXG5cdGZ1bmN0aW9uIHJlYnVpbGRHdWVzcyAoKSB7XG5cblx0XHQvLyB1c2UgSW50bCBBUEkgd2hlbiBhdmFpbGFibGUgYW5kIHJldHVybmluZyB2YWxpZCB0aW1lIHpvbmVcblx0XHR0cnkge1xuXHRcdFx0dmFyIGludGxOYW1lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xuXHRcdFx0aWYgKGludGxOYW1lICYmIGludGxOYW1lLmxlbmd0aCA+IDMpIHtcblx0XHRcdFx0dmFyIG5hbWUgPSBuYW1lc1tub3JtYWxpemVOYW1lKGludGxOYW1lKV07XG5cdFx0XHRcdGlmIChuYW1lKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG5hbWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0bG9nRXJyb3IoXCJNb21lbnQgVGltZXpvbmUgZm91bmQgXCIgKyBpbnRsTmFtZSArIFwiIGZyb20gdGhlIEludGwgYXBpLCBidXQgZGlkIG5vdCBoYXZlIHRoYXQgZGF0YSBsb2FkZWQuXCIpO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdC8vIEludGwgdW5hdmFpbGFibGUsIGZhbGwgYmFjayB0byBtYW51YWwgZ3Vlc3NpbmcuXG5cdFx0fVxuXG5cdFx0dmFyIG9mZnNldHMgPSB1c2VyT2Zmc2V0cygpLFxuXHRcdFx0b2Zmc2V0c0xlbmd0aCA9IG9mZnNldHMubGVuZ3RoLFxuXHRcdFx0Z3Vlc3NlcyA9IGd1ZXNzZXNGb3JVc2VyT2Zmc2V0cyhvZmZzZXRzKSxcblx0XHRcdHpvbmVTY29yZXMgPSBbXSxcblx0XHRcdHpvbmVTY29yZSwgaSwgajtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBndWVzc2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR6b25lU2NvcmUgPSBuZXcgWm9uZVNjb3JlKGdldFpvbmUoZ3Vlc3Nlc1tpXSksIG9mZnNldHNMZW5ndGgpO1xuXHRcdFx0Zm9yIChqID0gMDsgaiA8IG9mZnNldHNMZW5ndGg7IGorKykge1xuXHRcdFx0XHR6b25lU2NvcmUuc2NvcmVPZmZzZXRBdChvZmZzZXRzW2pdKTtcblx0XHRcdH1cblx0XHRcdHpvbmVTY29yZXMucHVzaCh6b25lU2NvcmUpO1xuXHRcdH1cblxuXHRcdHpvbmVTY29yZXMuc29ydChzb3J0Wm9uZVNjb3Jlcyk7XG5cblx0XHRyZXR1cm4gem9uZVNjb3Jlcy5sZW5ndGggPiAwID8gem9uZVNjb3Jlc1swXS56b25lLm5hbWUgOiB1bmRlZmluZWQ7XG5cdH1cblxuXHRmdW5jdGlvbiBndWVzcyAoaWdub3JlQ2FjaGUpIHtcblx0XHRpZiAoIWNhY2hlZEd1ZXNzIHx8IGlnbm9yZUNhY2hlKSB7XG5cdFx0XHRjYWNoZWRHdWVzcyA9IHJlYnVpbGRHdWVzcygpO1xuXHRcdH1cblx0XHRyZXR1cm4gY2FjaGVkR3Vlc3M7XG5cdH1cblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0R2xvYmFsIE1ldGhvZHNcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdGZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUgKG5hbWUpIHtcblx0XHRyZXR1cm4gKG5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFwvL2csICdfJyk7XG5cdH1cblxuXHRmdW5jdGlvbiBhZGRab25lIChwYWNrZWQpIHtcblx0XHR2YXIgaSwgbmFtZSwgc3BsaXQsIG5vcm1hbGl6ZWQ7XG5cblx0XHRpZiAodHlwZW9mIHBhY2tlZCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0cGFja2VkID0gW3BhY2tlZF07XG5cdFx0fVxuXG5cdFx0Zm9yIChpID0gMDsgaSA8IHBhY2tlZC5sZW5ndGg7IGkrKykge1xuXHRcdFx0c3BsaXQgPSBwYWNrZWRbaV0uc3BsaXQoJ3wnKTtcblx0XHRcdG5hbWUgPSBzcGxpdFswXTtcblx0XHRcdG5vcm1hbGl6ZWQgPSBub3JtYWxpemVOYW1lKG5hbWUpO1xuXHRcdFx0em9uZXNbbm9ybWFsaXplZF0gPSBwYWNrZWRbaV07XG5cdFx0XHRuYW1lc1tub3JtYWxpemVkXSA9IG5hbWU7XG5cdFx0XHRhZGRUb0d1ZXNzZXMobm9ybWFsaXplZCwgc3BsaXRbMl0uc3BsaXQoJyAnKSk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0Wm9uZSAobmFtZSwgY2FsbGVyKSB7XG5cdFx0bmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSk7XG5cblx0XHR2YXIgem9uZSA9IHpvbmVzW25hbWVdO1xuXHRcdHZhciBsaW5rO1xuXG5cdFx0aWYgKHpvbmUgaW5zdGFuY2VvZiBab25lKSB7XG5cdFx0XHRyZXR1cm4gem9uZTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIHpvbmUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHR6b25lID0gbmV3IFpvbmUoem9uZSk7XG5cdFx0XHR6b25lc1tuYW1lXSA9IHpvbmU7XG5cdFx0XHRyZXR1cm4gem9uZTtcblx0XHR9XG5cblx0XHQvLyBQYXNzIGdldFpvbmUgdG8gcHJldmVudCByZWN1cnNpb24gbW9yZSB0aGFuIDEgbGV2ZWwgZGVlcFxuXHRcdGlmIChsaW5rc1tuYW1lXSAmJiBjYWxsZXIgIT09IGdldFpvbmUgJiYgKGxpbmsgPSBnZXRab25lKGxpbmtzW25hbWVdLCBnZXRab25lKSkpIHtcblx0XHRcdHpvbmUgPSB6b25lc1tuYW1lXSA9IG5ldyBab25lKCk7XG5cdFx0XHR6b25lLl9zZXQobGluayk7XG5cdFx0XHR6b25lLm5hbWUgPSBuYW1lc1tuYW1lXTtcblx0XHRcdHJldHVybiB6b25lO1xuXHRcdH1cblxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0ZnVuY3Rpb24gZ2V0TmFtZXMgKCkge1xuXHRcdHZhciBpLCBvdXQgPSBbXTtcblxuXHRcdGZvciAoaSBpbiBuYW1lcykge1xuXHRcdFx0aWYgKG5hbWVzLmhhc093blByb3BlcnR5KGkpICYmICh6b25lc1tpXSB8fCB6b25lc1tsaW5rc1tpXV0pICYmIG5hbWVzW2ldKSB7XG5cdFx0XHRcdG91dC5wdXNoKG5hbWVzW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb3V0LnNvcnQoKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZExpbmsgKGFsaWFzZXMpIHtcblx0XHR2YXIgaSwgYWxpYXMsIG5vcm1hbDAsIG5vcm1hbDE7XG5cblx0XHRpZiAodHlwZW9mIGFsaWFzZXMgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGFsaWFzZXMgPSBbYWxpYXNlc107XG5cdFx0fVxuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGFsaWFzZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGFsaWFzID0gYWxpYXNlc1tpXS5zcGxpdCgnfCcpO1xuXG5cdFx0XHRub3JtYWwwID0gbm9ybWFsaXplTmFtZShhbGlhc1swXSk7XG5cdFx0XHRub3JtYWwxID0gbm9ybWFsaXplTmFtZShhbGlhc1sxXSk7XG5cblx0XHRcdGxpbmtzW25vcm1hbDBdID0gbm9ybWFsMTtcblx0XHRcdG5hbWVzW25vcm1hbDBdID0gYWxpYXNbMF07XG5cblx0XHRcdGxpbmtzW25vcm1hbDFdID0gbm9ybWFsMDtcblx0XHRcdG5hbWVzW25vcm1hbDFdID0gYWxpYXNbMV07XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gbG9hZERhdGEgKGRhdGEpIHtcblx0XHRhZGRab25lKGRhdGEuem9uZXMpO1xuXHRcdGFkZExpbmsoZGF0YS5saW5rcyk7XG5cdFx0dHouZGF0YVZlcnNpb24gPSBkYXRhLnZlcnNpb247XG5cdH1cblxuXHRmdW5jdGlvbiB6b25lRXhpc3RzIChuYW1lKSB7XG5cdFx0aWYgKCF6b25lRXhpc3RzLmRpZFNob3dFcnJvcikge1xuXHRcdFx0em9uZUV4aXN0cy5kaWRTaG93RXJyb3IgPSB0cnVlO1xuXHRcdFx0XHRsb2dFcnJvcihcIm1vbWVudC50ei56b25lRXhpc3RzKCdcIiArIG5hbWUgKyBcIicpIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgIW1vbWVudC50ei56b25lKCdcIiArIG5hbWUgKyBcIicpXCIpO1xuXHRcdH1cblx0XHRyZXR1cm4gISFnZXRab25lKG5hbWUpO1xuXHR9XG5cblx0ZnVuY3Rpb24gbmVlZHNPZmZzZXQgKG0pIHtcblx0XHR2YXIgaXNVbml4VGltZXN0YW1wID0gKG0uX2YgPT09ICdYJyB8fCBtLl9mID09PSAneCcpO1xuXHRcdHJldHVybiAhIShtLl9hICYmIChtLl90em0gPT09IHVuZGVmaW5lZCkgJiYgIWlzVW5peFRpbWVzdGFtcCk7XG5cdH1cblxuXHRmdW5jdGlvbiBsb2dFcnJvciAobWVzc2FnZSkge1xuXHRcdGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHRcdG1vbWVudC50eiBuYW1lc3BhY2Vcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdGZ1bmN0aW9uIHR6IChpbnB1dCkge1xuXHRcdHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwLCAtMSksXG5cdFx0XHRuYW1lID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXSxcblx0XHRcdHpvbmUgPSBnZXRab25lKG5hbWUpLFxuXHRcdFx0b3V0ICA9IG1vbWVudC51dGMuYXBwbHkobnVsbCwgYXJncyk7XG5cblx0XHRpZiAoem9uZSAmJiAhbW9tZW50LmlzTW9tZW50KGlucHV0KSAmJiBuZWVkc09mZnNldChvdXQpKSB7XG5cdFx0XHRvdXQuYWRkKHpvbmUucGFyc2Uob3V0KSwgJ21pbnV0ZXMnKTtcblx0XHR9XG5cblx0XHRvdXQudHoobmFtZSk7XG5cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0dHoudmVyc2lvbiAgICAgID0gVkVSU0lPTjtcblx0dHouZGF0YVZlcnNpb24gID0gJyc7XG5cdHR6Ll96b25lcyAgICAgICA9IHpvbmVzO1xuXHR0ei5fbGlua3MgICAgICAgPSBsaW5rcztcblx0dHouX25hbWVzICAgICAgID0gbmFtZXM7XG5cdHR6LmFkZCAgICAgICAgICA9IGFkZFpvbmU7XG5cdHR6LmxpbmsgICAgICAgICA9IGFkZExpbms7XG5cdHR6LmxvYWQgICAgICAgICA9IGxvYWREYXRhO1xuXHR0ei56b25lICAgICAgICAgPSBnZXRab25lO1xuXHR0ei56b25lRXhpc3RzICAgPSB6b25lRXhpc3RzOyAvLyBkZXByZWNhdGVkIGluIDAuMS4wXG5cdHR6Lmd1ZXNzICAgICAgICA9IGd1ZXNzO1xuXHR0ei5uYW1lcyAgICAgICAgPSBnZXROYW1lcztcblx0dHouWm9uZSAgICAgICAgID0gWm9uZTtcblx0dHoudW5wYWNrICAgICAgID0gdW5wYWNrO1xuXHR0ei51bnBhY2tCYXNlNjAgPSB1bnBhY2tCYXNlNjA7XG5cdHR6Lm5lZWRzT2Zmc2V0ICA9IG5lZWRzT2Zmc2V0O1xuXHR0ei5tb3ZlSW52YWxpZEZvcndhcmQgICA9IHRydWU7XG5cdHR6Lm1vdmVBbWJpZ3VvdXNGb3J3YXJkID0gZmFsc2U7XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHRcdEludGVyZmFjZSB3aXRoIE1vbWVudC5qc1xuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0dmFyIGZuID0gbW9tZW50LmZuO1xuXG5cdG1vbWVudC50eiA9IHR6O1xuXG5cdG1vbWVudC5kZWZhdWx0Wm9uZSA9IG51bGw7XG5cblx0bW9tZW50LnVwZGF0ZU9mZnNldCA9IGZ1bmN0aW9uIChtb20sIGtlZXBUaW1lKSB7XG5cdFx0dmFyIHpvbmUgPSBtb21lbnQuZGVmYXVsdFpvbmUsXG5cdFx0XHRvZmZzZXQ7XG5cblx0XHRpZiAobW9tLl96ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICh6b25lICYmIG5lZWRzT2Zmc2V0KG1vbSkgJiYgIW1vbS5faXNVVEMpIHtcblx0XHRcdFx0bW9tLl9kID0gbW9tZW50LnV0Yyhtb20uX2EpLl9kO1xuXHRcdFx0XHRtb20udXRjKCkuYWRkKHpvbmUucGFyc2UobW9tKSwgJ21pbnV0ZXMnKTtcblx0XHRcdH1cblx0XHRcdG1vbS5feiA9IHpvbmU7XG5cdFx0fVxuXHRcdGlmIChtb20uX3opIHtcblx0XHRcdG9mZnNldCA9IG1vbS5fei51dGNPZmZzZXQobW9tKTtcblx0XHRcdGlmIChNYXRoLmFicyhvZmZzZXQpIDwgMTYpIHtcblx0XHRcdFx0b2Zmc2V0ID0gb2Zmc2V0IC8gNjA7XG5cdFx0XHR9XG5cdFx0XHRpZiAobW9tLnV0Y09mZnNldCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdG1vbS51dGNPZmZzZXQoLW9mZnNldCwga2VlcFRpbWUpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bW9tLnpvbmUob2Zmc2V0LCBrZWVwVGltZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdGZuLnR6ID0gZnVuY3Rpb24gKG5hbWUsIGtlZXBUaW1lKSB7XG5cdFx0aWYgKG5hbWUpIHtcblx0XHRcdHRoaXMuX3ogPSBnZXRab25lKG5hbWUpO1xuXHRcdFx0aWYgKHRoaXMuX3opIHtcblx0XHRcdFx0bW9tZW50LnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRsb2dFcnJvcihcIk1vbWVudCBUaW1lem9uZSBoYXMgbm8gZGF0YSBmb3IgXCIgKyBuYW1lICsgXCIuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL3RpbWV6b25lL2RvY3MvIy9kYXRhLWxvYWRpbmcvLlwiKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAodGhpcy5feikgeyByZXR1cm4gdGhpcy5fei5uYW1lOyB9XG5cdH07XG5cblx0ZnVuY3Rpb24gYWJicldyYXAgKG9sZCkge1xuXHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRpZiAodGhpcy5feikgeyByZXR1cm4gdGhpcy5fei5hYmJyKHRoaXMpOyB9XG5cdFx0XHRyZXR1cm4gb2xkLmNhbGwodGhpcyk7XG5cdFx0fTtcblx0fVxuXG5cdGZ1bmN0aW9uIHJlc2V0Wm9uZVdyYXAgKG9sZCkge1xuXHRcdHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdFx0XHR0aGlzLl96ID0gbnVsbDtcblx0XHRcdHJldHVybiBvbGQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0XHR9O1xuXHR9XG5cblx0Zm4uem9uZU5hbWUgPSBhYmJyV3JhcChmbi56b25lTmFtZSk7XG5cdGZuLnpvbmVBYmJyID0gYWJicldyYXAoZm4uem9uZUFiYnIpO1xuXHRmbi51dGMgICAgICA9IHJlc2V0Wm9uZVdyYXAoZm4udXRjKTtcblxuXHRtb21lbnQudHouc2V0RGVmYXVsdCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0XHRpZiAobWFqb3IgPCAyIHx8IChtYWpvciA9PT0gMiAmJiBtaW5vciA8IDkpKSB7XG5cdFx0XHRsb2dFcnJvcignTW9tZW50IFRpbWV6b25lIHNldERlZmF1bHQoKSByZXF1aXJlcyBNb21lbnQuanMgPj0gMi45LjAuIFlvdSBhcmUgdXNpbmcgTW9tZW50LmpzICcgKyBtb21lbnQudmVyc2lvbiArICcuJyk7XG5cdFx0fVxuXHRcdG1vbWVudC5kZWZhdWx0Wm9uZSA9IG5hbWUgPyBnZXRab25lKG5hbWUpIDogbnVsbDtcblx0XHRyZXR1cm4gbW9tZW50O1xuXHR9O1xuXG5cdC8vIENsb25pbmcgYSBtb21lbnQgc2hvdWxkIGluY2x1ZGUgdGhlIF96IHByb3BlcnR5LlxuXHR2YXIgbW9tZW50UHJvcGVydGllcyA9IG1vbWVudC5tb21lbnRQcm9wZXJ0aWVzO1xuXHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG1vbWVudFByb3BlcnRpZXMpID09PSAnW29iamVjdCBBcnJheV0nKSB7XG5cdFx0Ly8gbW9tZW50IDIuOC4xK1xuXHRcdG1vbWVudFByb3BlcnRpZXMucHVzaCgnX3onKTtcblx0XHRtb21lbnRQcm9wZXJ0aWVzLnB1c2goJ19hJyk7XG5cdH0gZWxzZSBpZiAobW9tZW50UHJvcGVydGllcykge1xuXHRcdC8vIG1vbWVudCAyLjcuMFxuXHRcdG1vbWVudFByb3BlcnRpZXMuX3ogPSBudWxsO1xuXHR9XG5cblx0bG9hZERhdGEoe1xuXHRcdFwidmVyc2lvblwiOiBcIjIwMThlXCIsXG5cdFx0XCJ6b25lc1wiOiBbXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufExNVCBHTVR8Zy44IDB8MDF8LTJsZFhILlF8NDhlNVwiLFxuXHRcdFx0XCJBZnJpY2EvQWNjcmF8TE1UIEdNVCArMDAyMHwuUSAwIC1rfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjZCYlguOCA2dHpYLjggTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FIDFDMGsgTW5FIDFCQWsgTW5FIDFCQWsgTW5FfDQxZTVcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8TE1UIEVBVCArMDIzMCArMDI0NXwtMnIuZyAtMzAgLTJ1IC0ySnwwMTIzMXwtMUYzQ3IuZyAzRHpyLmcgb2tNdSBNRlhKfDQ3ZTVcIixcblx0XHRcdFwiQWZyaWNhL0FsZ2llcnN8UE1UIFdFVCBXRVNUIENFVCBDRVNUfC05LmwgMCAtMTAgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMzQzNDMxMzEyMTIzNDMxMjEzfC0ybmNvOS5sIGNOYjkubCBIQTAgMTlBMCAxaU0wIDExYzAgMW9vMCBXbzAgMXJjMCBRTTAgMUVNMCBVTTAgREEwIEltbzAgcmQwIERlMCA5WHowIDFmYjAgMWFwMCAxNkswIDJ5bzAgbUVwMCBod0wwIGp4QTAgMTFBMCBkRGQwIDE3YjAgMTFCMCAxY04wIDJEeTAgMWNOMCAxZkIwIDFjTDB8MjZlNVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8TE1UIFdBVHwtZC5BIC0xMHwwMXwtMjJ5MGQuQXwxN2U2XCIsXG5cdFx0XHRcIkFmcmljYS9CaXNzYXV8TE1UIC0wMSBHTVR8MTIuayAxMCAwfDAxMnwtMmxkWDAgMnhvbzB8MzllNFwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfExNVCBDQVR8LTJhLmsgLTIwfDAxfC0yR0plYS5rfDI2ZTVcIixcblx0XHRcdFwiQWZyaWNhL0NhaXJvfEVFVCBFRVNUfC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMWJJTzAgdmIwIDFpcDAgMTF6MCAxaU4wIDFuejAgMTJwMCAxcHowIDEwTjAgMXB6MCAxNnAwIDFqejAgczNkMCBWejAgMW9OMCAxMWIwIDFvTzAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcGIwIDEwTjAgMXB6MCAxME4wIDFwYjAgMTBOMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMVdMMCByZDAgMVJ6MCB3cDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxcUwwIFhkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFueTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCBXTDAgMXFOMCBSYjAgMXdwMCBPbjAgMXpkMCBMejAgMUVOMCBGYjAgYzEwIDhuMCA4TmQwIGdMMCBlMTAgbW4wfDE1ZTZcIixcblx0XHRcdFwiQWZyaWNhL0Nhc2FibGFuY2F8TE1UIFdFVCBXRVNUIENFVHx1LmsgMCAtMTAgLTEwfDAxMjEyMTIxMjEyMTIxMjEyMTMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnTW50LkUgMTMwTHQuRSByYjAgRGQwIGRWYjAgYjZwMCBUWDAgRW9CMCBMTDAgZ25kMCByejAgNDNkMCBBTDAgMU5kMCBYWDAgMUNwMCBwejAgZEVwMCA0bW4wIFN5TjAgQUwwIDFOZDAgd24wIDFGQjAgRGIwIDF6ZDAgTHowIDFOZjAgd00wIGNvMCBnbzAgMW8wMCBzMDAgZEEwIHZjMCAxMUEwIEEwMCBlMDAgeTAwIDExQTAgdU0wIGUwMCBEYzAgMTFBMCBzMDAgZTAwIElNMCBXTTAgbW8wIGdNMCBMQTAgV00wIGpBMCBlMDAgUmMwIDExQTAgZTAwIGUwMCBVMDAgMTFBMCA4bzAgZTAwIDExQTAgMTFBMCA1QTAgZTAwIDE3YzAgMWZBMCAxYTAwIDFhMDAgMWZBMCAxN2MwIDFpbzAgMTRvMCAxbGMwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbGMwIDE0bzAgMWZBMHwzMmU1XCIsXG5cdFx0XHRcIkFmcmljYS9DZXV0YXxXRVQgV0VTVCBDRVQgQ0VTVHwwIC0xMCAtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjVLTjAgMTF6MCBkcmQwIDE4cDAgM0hYMCAxN2QwIDFmejAgMWExMCAxaW8wIDFhMDAgMXk3bzAgTEwwIGduZDAgcnowIDQzZDAgQUwwIDFOZDAgWFgwIDFDcDAgcHowIGRFcDAgNFZCMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8ODVlM1wiLFxuXHRcdFx0XCJBZnJpY2EvRWxfQWFpdW58TE1UIC0wMSBXRVQgV0VTVHxRLk0gMTAgMCAtMTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFyRHo3LmMgMUdWQTcuYyA2TDAgQUwwIDFOZDAgWFgwIDFDcDAgcHowIDFjQkIwIEFMMCAxTmQwIHduMCAxRkIwIERiMCAxemQwIEx6MCAxTmYwIHdNMCBjbzAgZ28wIDFvMDAgczAwIGRBMCB2YzAgMTFBMCBBMDAgZTAwIHkwMCAxMUEwIHVNMCBlMDAgRGMwIDExQTAgczAwIGUwMCBJTTAgV00wIG1vMCBnTTAgTEEwIFdNMCBqQTAgZTAwIFJjMCAxMUEwIGUwMCBlMDAgVTAwIDExQTAgOG8wIGUwMCAxMUEwIDExQTAgNUEwIGUwMCAxN2MwIDFmQTAgMWEwMCAxYTAwIDFmQTAgMTdjMCAxaW8wIDE0bzAgMWxjMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMWxjMCAxNG8wIDFmQTB8MjBlNFwiLFxuXHRcdFx0XCJBZnJpY2EvSm9oYW5uZXNidXJnfFNBU1QgU0FTVCBTQVNUfC0xdSAtMjAgLTMwfDAxMjEyMXwtMkdKZHUgMUFqZHUgMWNMMCAxY04wIDFjTDB8ODRlNVwiLFxuXHRcdFx0XCJBZnJpY2EvSnViYXxMTVQgQ0FUIENBU1QgRUFUfC0yNi5zIC0yMCAtMzAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzfC0xeVcyNi5zIDF6SzA2LnMgMTZMMCAxaU4wIDE3YjAgMWpkMCAxN2IwIDFpcDAgMTd6MCAxaTEwIDE3WDAgMWhCMCAxOG4wIDFoZDAgMTliMCAxZ3AwIDE5ejAgMWlOMCAxN2IwIDFpcDAgMTd6MCAxaTEwIDE4bjAgMWhkMCAxOEwwIDFnTjAgMTliMCAxZ3AwIDE5ejAgMWlOMCAxN3owIDFpMTAgMTdYMCB5R2QwXCIsXG5cdFx0XHRcIkFmcmljYS9LaGFydG91bXxMTVQgQ0FUIENBU1QgRUFUfC0yYS44IC0yMCAtMzAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzMXwtMXlXMmEuOCAxekswYS44IDE2TDAgMWlOMCAxN2IwIDFqZDAgMTdiMCAxaXAwIDE3ejAgMWkxMCAxN1gwIDFoQjAgMThuMCAxaGQwIDE5YjAgMWdwMCAxOXowIDFpTjAgMTdiMCAxaXAwIDE3ejAgMWkxMCAxOG4wIDFoZDAgMThMMCAxZ04wIDE5YjAgMWdwMCAxOXowIDFpTjAgMTd6MCAxaTEwIDE3WDAgeUdkMCBIakwwfDUxZTVcIixcblx0XHRcdFwiQWZyaWNhL01vbnJvdmlhfE1NVCBNTVQgR01UfEguOCBJLnUgMHwwMTJ8LTIzTHpnLlEgMjhHMDEubXwxMWU1XCIsXG5cdFx0XHRcIkFmcmljYS9OZGphbWVuYXxMTVQgV0FUIFdBU1R8LTEwLmMgLTEwIC0yMHwwMTIxfC0ybGUxMC5jIDJKM2MwLmMgV24wfDEzZTVcIixcblx0XHRcdFwiQWZyaWNhL1Nhb19Ub21lfExNVCBHTVQgV0FUfEEuSiAwIC0xMHwwMTJ8LTJsZTAwIDRpNk4wXCIsXG5cdFx0XHRcIkFmcmljYS9Ucmlwb2xpfExNVCBDRVQgQ0VTVCBFRVR8LVEuSSAtMTAgLTIwIC0yMHwwMTIxMjEyMTMxMjEyMTIxMjEyMTIxMjEyMTMxMjMxMjN8LTIxSmNRLkkgMWhuQlEuSSB2eDAgNGlQMCB4eDAgNGVOMCBCYjAgN2lwMCBVMG4wIEExMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFkYjAgMWVOMCAxYmIwIDFlMTAgMWNMMCAxYzEwIDFkYjAgMWRkMCAxZGIwIDFjTjAgMWRiMCAxcTEwIGZBbjAgMWVwMCAxZGIwIEFLcTAgVEEwIDFvMDB8MTFlNVwiLFxuXHRcdFx0XCJBZnJpY2EvVHVuaXN8UE1UIENFVCBDRVNUfC05LmwgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybmNvOS5sIDE4cGE5LmwgMXFNMCBEQTAgM1RjMCAxMUIwIDF6ZTAgV00wIDd6MCAzZDAgMTRMMCAxY04wIDFmOTAgMWFyMCAxNkowIDFnWEIwIFdNMCAxckEwIDExYzAgbndvMCBLbzAgMWNNMCAxY00wIDFyQTAgMTBNMCB6dU0wIDEwTjAgMWFOMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMHwyMGU1XCIsXG5cdFx0XHRcIkFmcmljYS9XaW5kaG9la3wrMDEzMCBTQVNUIFNBU1QgQ0FUIFdBVHwtMXUgLTIwIC0zMCAtMjAgLTEwfDAxMjEzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC0yR0pkdSAxQWpkdSAxY0wwIDFTcUwwIDlJbzAgMTZQMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwfDMyZTRcIixcblx0XHRcdFwiQW1lcmljYS9BZGFrfE5TVCBOV1QgTlBUIEJTVCBCRFQgQUhTVCBIU1QgSERUfGIwIGEwIGEwIGIwIGEwIGEwIGEwIDkwfDAxMjAzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQ1Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMTdTWDAgOHdXMCBpQjAgUWxiMCA1Mk8wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgY20wIDEwcTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzI2XCIsXG5cdFx0XHRcIkFtZXJpY2EvQW5jaG9yYWdlfEFTVCBBV1QgQVBUIEFIU1QgQUhEVCBZU1QgQUtTVCBBS0RUfGEwIDkwIDkwIGEwIDkwIDkwIDkwIDgwfDAxMjAzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQ1Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMTdUMDAgOHdYMCBpQTAgUWxiMCA1Mk8wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgY20wIDEwcTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzBlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58TE1UIEFTVHw0Ni40IDQwfDAxfC0ya052Ui5VfDQzZTNcIixcblx0XHRcdFwiQW1lcmljYS9BcmFndWFpbmF8TE1UIC0wMyAtMDJ8M2MuTSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x3TC5jIEhkS0wuYyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBkTU4wIEx6MCAxemQwIFJiMCAxd04wIFduMCAxdEIwIFJiMCAxdEIwIFdMMCAxdEIwIFJiMCAxemQwIE9uMCAxSEIwIEZYMCBueTEwIEx6MHwxNGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0J1ZW5vc19BaXJlc3xDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMzIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdwMCBSYjAgMXdwMCBUWDAgQTRwMCB1TDAgMXFOMCBXTDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ2F0YW1hcmNhfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTMyMzIxMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3EwIFJhMCAxd3AwIFRYMCBybEIwIDdCMCA4emIwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9Db3Jkb2JhfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTMyMzIzMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3EwIFJhMCAxd3AwIFRYMCBBNHAwIHVMMCAxcU4wIFdMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9KdWp1eXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMxMjEzMjMyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF6ZTAgVFgwIDFsZDAgV0swIDF3cDAgVFgwIEE0cDAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0xhX1Jpb2phfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTIzMjMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBRbjAgcU8wIDE2bjAgUmIwIDF3cDAgVFgwIHJsQjAgN0IwIDh6YjAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL01lbmRvemF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMTIxMjEzMjEyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF1MjAgU0wwIDF2ZDAgVGIwIDF3cDAgVFcwIHJpMTAgT3AwIDdUWDAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1Jpb19HYWxsZWdvc3xDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdwMCBSYjAgMXdwMCBUWDAgcmxCMCA3QjAgOHpiMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvU2FsdGF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMzIzMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3EwIFJhMCAxd3AwIFRYMCBBNHAwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9TYW5fSnVhbnxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzEyMzIzMjEyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUW4wIHFPMCAxNm4wIFJiMCAxd3AwIFRYMCBybGQwIG0xMCA4bGIwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9TYW5fTHVpc3xDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMxMjEyMTIzMjEyMTJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgWFgwIDFxMjAgU0wwIEFOMCB2RGIwIG0xMCA4bGIwIDhMMCBqZDAgMXFOMCBXTDAgMXFOMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9UdWN1bWFufENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTMyMzIxMjMyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIHJsQjAgNE4wIDhCWDAgdUwwIDFxTjAgV0wwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1VzaHVhaWF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjEyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cDAgUmIwIDF3cDAgVFgwIHJrTjAgOHAwIDh6YjAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3VyYWNhb3xMTVQgLTA0MzAgQVNUfDR6LkwgNHUgNDB8MDEyfC0ya1Y3by5kIDI4S0xTLmR8MTVlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FzdW5jaW9ufEFNVCAtMDQgLTAzfDNPLkUgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0xeDU4OS5rIDFES005LmsgM0NMMCAzRGQwIDEwTDAgMXBCMCAxMG4wIDFwQjAgMTBuMCAxcEIwIDFjTDAgMWRkMCAxZGIwIDFkZDAgMWNMMCAxZGQwIDFjTDAgMWRkMCAxY0wwIDFkZDAgMWRiMCAxZGQwIDFjTDAgMWRkMCAxY0wwIDFkZDAgMWNMMCAxZGQwIDFkYjAgMWRkMCAxY0wwIDFsQjAgMTRuMCAxZGQwIDFjTDAgMWZkMCBXTDAgMXJkMCAxYUwwIDFkQjAgWHowIDFxcDAgWGIwIDFxTjAgMTBMMCAxckIwIFRYMCAxdEIwIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDFjTDAgV04wIDFxTDAgMTFCMCAxblgwIDFpcDAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDF0QjAgVFgwIDF0QjAgVFgwIDF0QjAgMTlYMCAxYTEwIDFmejAgMWExMCAxZnowIDFjTjAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwfDI4ZTVcIixcblx0XHRcdFwiQW1lcmljYS9BdGlrb2thbnxDU1QgQ0RUIENXVCBDUFQgRVNUfDYwIDUwIDUwIDUwIDUwfDAxMDEyMzR8LTI1VFEwIDFpbjAgUm5iMCAzamUwIDh4MzAgaXcwfDI4ZTJcIixcblx0XHRcdFwiQW1lcmljYS9CYWhpYV9CYW5kZXJhc3xMTVQgTVNUIENTVCBQU1QgTURUIENEVHw3MSA3MCA2MCA4MCA2MCA1MHwwMTIxMjEyMTMxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgb3RYMCBnbU4wIFAyTjAgMTNWZDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuVzAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8ODRlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0JhaGlhfExNVCAtMDMgLTAyfDJ5LjQgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHhwLlUgSGRMcC5VIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIDFFTjAgTHowIDFDMTAgSUwwIDFIQjAgRGIwIDFIQjAgT24wIDF6ZDAgT24wIDF6ZDAgTHowIDF6ZDAgUmIwIDF3TjAgV24wIDF0QjAgUmIwIDF0QjAgV0wwIDF0QjAgUmIwIDF6ZDAgT24wIDFIQjAgRlgwIGw1QjAgUmIwfDI3ZTVcIixcblx0XHRcdFwiQW1lcmljYS9CYXJiYWRvc3xMTVQgQk1UIEFTVCBBRFR8M1cudCAzVy50IDQwIDMwfDAxMjMyMzIzMjMyfC0xUTBJMS52IGpzTTAgMU9EQzEudiBJTDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxbGQwIDEzYjB8MjhlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0JlbGVtfExNVCAtMDMgLTAyfDNkLlUgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x3Sy40IEhkS0suNCAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMHwyMGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQmVsaXplfExNVCBDU1QgLTA1MzAgQ0RUfDVRLk0gNjAgNXUgNTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTMxMzF8LTJrQnU3LmMgZlBBNy5jIE9udSAxemN1IFJidSAxd291IFJidSAxd291IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxd291IFJidSAxd291IFJidSAxd291IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxd291IFJidSAxd291IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxd291IFJidSAxd291IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxd291IFJidSAxZjBNdSBxbjAgbHhCMCBtbjB8NTdlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0JsYW5jLVNhYmxvbnxBU1QgQURUIEFXVCBBUFR8NDAgMzAgMzAgMzB8MDEwMjMwfC0yNVRTMCAxaW4wIFVHcDAgOHg1MCBpdTB8MTFlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0JvYV9WaXN0YXxMTVQgLTA0IC0wM3w0Mi5FIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZWLmsgSGRLVi5rIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIHNtcDAgV0wwIDF0QjAgMkwwfDYyZTJcIixcblx0XHRcdFwiQW1lcmljYS9Cb2dvdGF8Qk1UIC0wNSAtMDR8NFUuZyA1MCA0MHwwMTIxfC0yZWI3My5JIDM4eW8zLkkgMmVuMHw5MGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQm9pc2V8UFNUIFBEVCBNU1QgTVdUIE1QVCBNRFR8ODAgNzAgNzAgNjAgNjAgNjB8MDEwMTAyMzQyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MnwtMjYxcTAgMW5YMCAxMUIwIDFuWDAgOEMxMCBKQ0wwIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBEZDAgMUtuMCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjFlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0NhbWJyaWRnZV9CYXl8LTAwIE1TVCBNV1QgTVBUIE1ERFQgTURUIENTVCBDRFQgRVNUfDAgNzAgNjAgNjAgNTAgNjAgNjAgNTAgNTB8MDEyMzE0MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTY3ODY1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MXwtMjFKYzAgUk85MCA4eDIwIGl4MCBMQ0wwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUEwIDFuWDAgMkswIFdRMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTVlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0NhbXBvX0dyYW5kZXxMTVQgLTA0IC0wM3wzQy5zIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmdsd2wudyBIZExsLncgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgMUMxMCBMejAgMUlwMCBIWDAgMXpkMCBPbjAgMUhCMCBJTDAgMXdwMCBPbjAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBSYjAgMXpkMCBMejAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBJTDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUtwMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMHw3N2U0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2FuY3VufExNVCBDU1QgRVNUIEVEVCBDRFR8NUwuNCA2MCA1MCA0MCA1MHwwMTIzMjMyMzQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDEyfC0xVVFHMCAycTJvMCB5TEIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgTHowIHhCMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBEZDB8NjNlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0NhcmFjYXN8Q01UIC0wNDMwIC0wNHw0ci5FIDR1IDQwfDAxMjEyfC0ya1Y3dy5rIDI4S00yLmsgMUl3T3Uga3FvMHwyOWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2F5ZW5uZXxMTVQgLTA0IC0wM3wzdC5rIDQwIDMwfDAxMnwtMm1yd3UuRSAyZ1dvdS5FfDU4ZTNcIixcblx0XHRcdFwiQW1lcmljYS9QYW5hbWF8Q01UIEVTVHw1ai5BIDUwfDAxfC0ydWR1RS5vfDE1ZTVcIixcblx0XHRcdFwiQW1lcmljYS9DaGljYWdvfENTVCBDRFQgRVNUIENXVCBDUFR8NjAgNTAgNTAgNTAgNTB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDIwMTAxMDEwMTAxMDM0MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXMwIDFuWDAgMTFCMCAxblgwIDF3cDAgVFgwIFdOMCAxcUwwIDFjTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDExQjAgMUh6MCAxNHAwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgUkIwIDh4MzAgaXcwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw5MmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2hpaHVhaHVhfExNVCBNU1QgQ1NUIENEVCBNRFR8NzQuayA3MCA2MCA1MCA2MHwwMTIxMjEyMzIzMjQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgMnpRTjAgMWxiMCAxNHAwIDFsYjAgMTRxMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8ODFlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0Nvc3RhX1JpY2F8U0pNVCBDU1QgQ0RUfDVBLmQgNjAgNTB8MDEyMTIxMjEyMXwtMVhkNm4uTCAybHUwbi5MIERiMCAxS3AwIERiMCBwUkIwIDE1YjAgMWtwMCBtTDB8MTJlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0NyZXN0b258TVNUIFBTVHw3MCA4MHwwMTB8LTI5RFIwIDQzQjB8NTNlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0N1aWFiYXxMTVQgLTA0IC0wM3wzSS5rIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTJnbHdmLkUgSGRMZi5FIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIDFFTjAgTHowIDFDMTAgSUwwIDFIQjAgRGIwIDFIQjAgT24wIDF6ZDAgT24wIDF6ZDAgTHowIDF6ZDAgUmIwIDF3TjAgV24wIDF0QjAgUmIwIDF0QjAgV0wwIDF0QjAgUmIwIDF6ZDAgT24wIDFIQjAgRlgwIDRhMTAgSFgwIDF6ZDAgT24wIDFIQjAgSUwwIDF3cDAgT24wIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgUmIwIDF6ZDAgTHowIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjAgSUwwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFLcDAgRlgwIDFIQjAgSUwwIDFFTjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjB8NTRlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0Rhbm1hcmtzaGF2bnxMTVQgLTAzIC0wMiBHTVR8MWUuRSAzMCAyMCAwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzfC0yYTVXSi5rIDJ6NWZKLmsgMTlVMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBEQzB8OFwiLFxuXHRcdFx0XCJBbWVyaWNhL0Rhd3Nvbl9DcmVla3xQU1QgUERUIFBXVCBQUFQgTVNUfDgwIDcwIDcwIDcwIDcwfDAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTR8LTI1VE8wIDFpbjAgVUdwMCA4eDEwIGl5MCAzTkIwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgTUwwfDEyZTNcIixcblx0XHRcdFwiQW1lcmljYS9EYXdzb258WVNUIFlEVCBZV1QgWVBUIFlERFQgUFNUIFBEVHw5MCA4MCA4MCA4MCA3MCA4MCA3MHwwMTAxMDIzMDQwNTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1fC0yNVROMCAxaW4wIDFvMTAgMTNWMCBTZXIwIDh4MDAgaXowIExDTDAgMWZBMCBqckEwIGZOZDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDEzZTJcIixcblx0XHRcdFwiQW1lcmljYS9EZW52ZXJ8TVNUIE1EVCBNV1QgTVBUfDcwIDYwIDYwIDYwfDAxMDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFyMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIG1uMCBPcmQwIDh4MjAgaXgwIExDTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyNmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvRGV0cm9pdHxMTVQgQ1NUIEVTVCBFV1QgRVBUIEVEVHw1dy5iIDYwIDUwIDQwIDQwIDQwfDAxMjM0MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MnwtMkNnaXIuTiBwZXFyLk4gMTU2TDAgOHg0MCBpdjAgNmZkMCAxMXowIFhRcDAgMWNMMCBzMTAgMVZ6MCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDM3ZTVcIixcblx0XHRcdFwiQW1lcmljYS9FZG1vbnRvbnxMTVQgTVNUIE1EVCBNV1QgTVBUfDd4LlEgNzAgNjAgNjAgNjB8MDEyMTIxMjEyMTIxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJ5ZDRxLjggc2hkcS44IDFpbjAgMTdkMCBoejAgMmRCMCAxZnowIDFhMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgSUdOMCA4eDIwIGl4MCAzTkIwIDExejAgTEZCMCAxY0wwIDNDcDAgMWNMMCA2Nk4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDEwZTVcIixcblx0XHRcdFwiQW1lcmljYS9FaXJ1bmVwZXxMTVQgLTA1IC0wNHw0RC5zIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZrLncgSGRMay53IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIGRQQjAgT24wIHlUZDAgZDVYMHwzMWUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvRWxfU2FsdmFkb3J8TE1UIENTVCBDRFR8NVUuTSA2MCA1MHwwMTIxMjF8LTFYaUczLmMgMkZ2YzMuYyBXTDAgMXFOMCBXTDB8MTFlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1RpanVhbmF8TE1UIE1TVCBQU1QgUERUIFBXVCBQUFR8N00uNCA3MCA4MCA3MCA3MCA3MHwwMTIxMjMyNDUyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFVUUUwIDRQWDAgOG1NMCA4bGMwIFNOMCAxY0wwIHBIQjAgODNyMCB6STAgNU8xMCAxUnowIGNPTzAgMTFBMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCBCVXAwIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgVTEwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjBlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfTmVsc29ufFBTVCBQRFQgUFdUIFBQVCBNU1R8ODAgNzAgNzAgNzAgNzB8MDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDR8LTI1VE8wIDFpbjAgVUdwMCA4eDEwIGl5MCAzTkIwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwfDM5ZTJcIixcblx0XHRcdFwiQW1lcmljYS9Gb3J0X1dheW5lfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTA0MDQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgUUkxMCBEYjAgUkIwIDh4MzAgaXcwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCA1VHowIDFvMTAgcUxiMCAxY0wwIDFjTjAgMWNMMCAxcWhkMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydGFsZXphfExNVCAtMDMgLTAyfDJ5IDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHhxIEhkTHEgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgbnNwMCBXTDAgMXRCMCA1ejAgMm1OMCBPbjB8MzRlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0dsYWNlX0JheXxMTVQgQVNUIEFEVCBBV1QgQVBUfDNYLk0gNDAgMzAgMzAgMzB8MDEyMTM0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ySXNJMC5jIEN3TzAuYyAxaW4wIFVHcDAgOHg1MCBpdTAgaXExMCAxMXowIEpnMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTllM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0dvZHRoYWJ8TE1UIC0wMyAtMDJ8M3EuVSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yYTVVeC40IDJ6NWR4LjQgMTlVMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE3ZTNcIixcblx0XHRcdFwiQW1lcmljYS9Hb29zZV9CYXl8TlNUIE5EVCBOU1QgTkRUIE5XVCBOUFQgQVNUIEFEVCBBRERUfDN1LlEgMnUuUSAzdSAydSAydSAydSA0MCAzMCAyMHwwMTAyMzIzMjMyMzIzMjMyNDUyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njg2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzZ8LTI1VFN0LjggMWluMCBEWGIwIDJIYlguOCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBUWDAgMXRCMCBXTDAgMXFOMCBXTDAgMXFOMCA3VUh1IGl0dSAxdEIwIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFdMMCAxbGQwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCBTMTAgZzB1IDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNG4xIDFsYjAgMTRwMCAxblcwIDExQzAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemNYIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDc2ZTJcIixcblx0XHRcdFwiQW1lcmljYS9HcmFuZF9UdXJrfEtNVCBFU1QgRURUIEFTVHw1Ny5hIDUwIDQwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybDF1US5PIDJISEJRLk8gMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCA1SXAwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzdlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0d1YXRlbWFsYXxMTVQgQ1NUIENEVHw2Mi40IDYwIDUwfDAxMjEyMTIxMjF8LTI0S2hWLlUgMmVmWFYuVSBBbjAgbXRkMCBOejAgaWZCMCAxN2IwIHpEQjAgMTF6MHwxM2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvR3VheWFxdWlsfFFNVCAtMDUgLTA0fDVlIDUwIDQwfDAxMjF8LTF5VlNLIDJ1SUxLIHJ6MHwyN2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvR3V5YW5hfExNVCAtMDM0NSAtMDMgLTA0fDNRLkUgM0ogMzAgNDB8MDEyM3wtMmR2VTcuayAycjZMUS5rIEJ4YmZ8ODBlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0hhbGlmYXh8TE1UIEFTVCBBRFQgQVdUIEFQVHw0ZS5vIDQwIDMwIDMwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJJc0hKLkEgeHp6Si5BIDFkYjAgM0kzMCAxaW4wIDNIWDAgSUwwIDFFMTAgTUwwIDF5TjAgUGIwIDFCZDAgTW4wIDFCZDAgUnowIDF3MTAgWGIwIDF3MTAgTFgwIDF3MTAgWGIwIDF3MTAgTHowIDFDMTAgSnowIDFFMTAgT0wwIDF5TjAgVW4wIDFxcDAgWGIwIDFxcDAgMTFYMCAxdzEwIEx6MCAxSEIwIExYMCAxQzEwIEZYMCAxdzEwIFhiMCAxcXAwIFhiMCAxQkIwIExYMCAxdGQwIFhiMCAxcXAwIFhiMCBSZjAgOHg1MCBpdTAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDNRcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAzUXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgNmkxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzllNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0hhdmFuYXxITVQgQ1NUIENEVHw1dC5BIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMU1ldXUubyA3Mnp1Lm8gTUwwIHNsZDAgQW4wIDFOZDAgRGIwIDFOZDAgQW4wIDZFcDAgQW4wIDFOZDAgQW4wIEpEZDAgTW4wIDFBcDAgT24wIDFmZDAgMTFYMCAxcU4wIFdMMCAxd3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDE0bjAgMWxkMCAxNEwwIDFrTjAgMTViMCAxa3AwIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxZkIwIDExejAgMTRwMCAxblgwIDExQjAgMW5YMCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDE0bjAgMWxkMCAxNG4wIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxYTEwIDFpbjAgMWExMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDE3YzAgMW8wMCAxMUEwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDExQTAgNmkwMCBSYzAgMXdvMCBVMDAgMXRBMCBSYzAgMXdvMCBVMDAgMXdvMCBVMDAgMXpjMCBVMDAgMXFNMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMHwyMWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvSGVybW9zaWxsb3xMTVQgTVNUIENTVCBQU1QgTURUfDduLlEgNzAgNjAgODAgNjB8MDEyMTIxMjEzMTQxNDE0MXwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIG90WDAgZ21OMCBQMk4wIDEzVmQwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMHw2NGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9Lbm94fENTVCBDRFQgQ1dUIENQVCBFU1R8NjAgNTAgNTAgNTAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTA0MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAzTkIwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFvMTAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgM0NuMCA4d3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIHo4bzAgMW8wMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvTWFyZW5nb3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTA0NTQ1NDU0NTQ1NDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIGR5TjAgMTF6MCA2ZmQwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBqcnowIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVkEwIExBMCAxQlgwIDFlNnAwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1BldGVyc2J1cmd8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDQwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgbmpYMCBXTjAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAzRmIwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDE5Y28wIDFvMDAgUmQwIDF6YjAgT28wIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1RlbGxfQ2l0eXxDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDQ1NDU0MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAxbzEwIDExejAgZzBwMCAxMXowIDFvMTAgMTF6MCAxcUwwIFdOMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgV0wwIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCBjYUwwIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFvMDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1ZldmF5fENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCBrUEIwIEF3bjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxbG5kMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9WaW5jZW5uZXN8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTA0NTQ1NDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgMW8xMCAxMXowIGcwcDAgMTF6MCAxbzEwIDExejAgMXFMMCBXTjAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgY2FMMCAxY0wwIDFjTjAgMWNMMCAxcWhkMCAxbzAwIFJkMCAxemIwIE9vMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9XaW5hbWFjfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNDU0NTQxMDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBqcnowIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFvMDAgUmQwIDF6YTAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbnV2aWt8LTAwIFBTVCBQRERUIE1TVCBNRFR8MCA4MCA2MCA3MCA2MHwwMTIxMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC1GbkEwIHRXVTAgMWZBMCB3UGUwIDJwejAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDM1ZTJcIixcblx0XHRcdFwiQW1lcmljYS9JcWFsdWl0fC0wMCBFV1QgRVBUIEVTVCBFRERUIEVEVCBDU1QgQ0RUfDAgNDAgNDAgNTAgMzAgNDAgNjAgNTB8MDEyMzQzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1NjczNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTN8LTE2SzAwIDduWDAgaXYwIExDTDAgMWZBMCB6Z08wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQzAgMW5YMCAxMUEwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2N2UyXCIsXG5cdFx0XHRcIkFtZXJpY2EvSmFtYWljYXxLTVQgRVNUIEVEVHw1Ny5hIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsMXVRLk8gMnVNMVEuTyAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejB8OTRlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0p1bmVhdXxQU1QgUFdUIFBQVCBQRFQgWURUIFlTVCBBS1NUIEFLRFR8ODAgNzAgNzAgNzAgODAgOTAgOTAgODB8MDEyMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzA0MDMwMzAzNTY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzZ8LTE3VDIwIDh4MTAgaXkwIFZvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNNMCAxY00wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbzAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzM2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvS2VudHVja3kvTG91aXN2aWxsZXxDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCAzRmQwIE5iMCBMUGQwIDExejAgUkIwIDh4MzAgaXcwIEJiMCAxME4wIDJiQjAgOGluMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCB4ejAgZ3NvMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWQTAgTEEwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvS2VudHVja3kvTW9udGljZWxsb3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIFNXcDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUEwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0xhX1BhenxDTVQgQlNUIC0wNHw0dy5BIDN3LkEgNDB8MDEyfC0xeDM3ci5vIDEzYjB8MTllNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0xpbWF8TE1UIC0wNSAtMDR8NTguQSA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxfC0ydHlHUC5vIDFiRHpQLm8gelgwIDFhTjAgMWNMMCAxY04wIDFjTDAgMVByQjAgelgwIDFPMTAgelgwIDZHcDAgelgwIDk4cDAgelgwfDExZTZcIixcblx0XHRcdFwiQW1lcmljYS9Mb3NfQW5nZWxlc3xQU1QgUERUIFBXVCBQUFR8ODAgNzAgNzAgNzB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFxMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MTAgaXkwIDVXcDEgMVZhWCAzZEEwIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDE1ZTZcIixcblx0XHRcdFwiQW1lcmljYS9NYWNlaW98TE1UIC0wMyAtMDJ8Mm0uUSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHhCLjggSGRMQi44IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIGRNTjAgTHowIDhRMTAgV0wwIDF0QjAgNXowIDJtTjAgT24wfDkzZTRcIixcblx0XHRcdFwiQW1lcmljYS9NYW5hZ3VhfE1NVCBDU1QgRVNUIENEVHw1Si5jIDYwIDUwIDUwfDAxMjEzMTMxMjEyMTMxMzF8LTFxdWllLk0gMXlBTWUuTSA0bW4wIDlVcDAgRHowIDFLMTAgRHowIHMzRjAgMUtIMCBEQjAgOUluMCBrOHAwIDE5WDAgMW8zMCAxMXkwfDIyZTVcIixcblx0XHRcdFwiQW1lcmljYS9NYW5hdXN8TE1UIC0wNCAtMDN8NDAuNCA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdlguVSBIZEtYLlUgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgZFBCMCBPbjB8MTllNVwiLFxuXHRcdFx0XCJBbWVyaWNhL01hcnRpbmlxdWV8RkZNVCBBU1QgQURUfDQ0LmsgNDAgMzB8MDEyMXwtMm1QVFQuRSAyTFBiVC5FIDE5WDB8MzllNFwiLFxuXHRcdFx0XCJBbWVyaWNhL01hdGFtb3Jvc3xMTVQgQ1NUIENEVHw2RSA2MCA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xVVFHMCAyRmpDMCAxblgwIGk2cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBVMTAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw0NWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWF6YXRsYW58TE1UIE1TVCBDU1QgUFNUIE1EVHw3NS5FIDcwIDYwIDgwIDYwfDAxMjEyMTIxMzE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDF8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCBvdFgwIGdtTjAgUDJOMCAxM1ZkMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHw0NGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWVub21pbmVlfENTVCBDRFQgQ1dUIENQVCBFU1R8NjAgNTAgNTAgNTAgNTB8MDEwMTAyMzAxMDEwNDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgMW8xMCAxMXowIExDTjAgMWZ6MCA2NDEwIDlKYjAgMWNNMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8ODVlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL01lcmlkYXxMTVQgQ1NUIEVTVCBDRFR8NVcucyA2MCA1MCA1MHwwMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxfC0xVVFHMCAycTJvMCAyaHowIHd1MzAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8MTFlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL01ldGxha2F0bGF8UFNUIFBXVCBQUFQgUERUIEFLU1QgQUtEVHw4MCA3MCA3MCA3MCA5MCA4MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0xN1QyMCA4eDEwIGl5MCBWbzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWhVMTAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTRlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL01leGljb19DaXR5fExNVCBNU1QgQ1NUIENEVCBDV1R8NkEuQSA3MCA2MCA1MCA1MHwwMTIxMjEyMzIzMjQyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCBnRW4wIFRYMCAzeGQwIEpiMCA2ekIwIFNMMCBlNWQwIDE3YjAgMVBmZjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8MjBlNlwiLFxuXHRcdFx0XCJBbWVyaWNhL01pcXVlbG9ufExNVCBBU1QgLTAzIC0wMnwzSS5FIDQwIDMwIDIwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMm1La2YuayAyTFRBZi5rIGdRMTAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjFlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL01vbmN0b258RVNUIEFTVCBBRFQgQVdUIEFQVHw1MCA0MCAzMCAzMCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJJc0gwIEN3TjAgMWluMCB6QW8wIEFuMCAxTmQwIEFuMCAxTmQwIEFuMCAxTmQwIEFuMCAxTmQwIEFuMCAxTmQwIEFuMCAxSzEwIEx6MCAxekIwIE5YMCAxdTEwIFduMCBTMjAgOHg1MCBpdTAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAzQ3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRuMSAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZVggMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NGUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvTW9udGVycmV5fExNVCBDU1QgQ0RUfDZGLmcgNjAgNTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVVRRzAgMkZqQzAgMW5YMCBpNnAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDQxZTVcIixcblx0XHRcdFwiQW1lcmljYS9Nb250ZXZpZGVvfExNVCBNTVQgLTA0IC0wMyAtMDMzMCAtMDIzMCAtMDIgLTAxMzB8M0kuUCAzSS5QIDQwIDMwIDN1IDJ1IDIwIDF1fDAxMjM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNTM1MzYzNjM1MzYzNjM3NTM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2M3wtMnRSVWYuOSBzVmMwIDhqY2YuOSAxZGIwIDFkY3UgMWNMdSAxZGN1IDFjTHUgaXJjdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFxTXUgV0x1IDFxTXUgV0x1IDFmQXUgMWNMdSAxbzB1IDExenUgTkF1IDNqWHUgelh1IERxMHUgMTlYdSBwY3UganowIGNtMTAgMTlYMCA2dEIwIDFmYnUgM28wdSBqWDAgNHZCMCB4ejAgM0NwMCBtbXUgMWExMCBJTXUgRGIwIDRjMTAgdUwwIDFOZDAgQW4wIDFTTjAgdUwwIG1wMCAyOEwwIGlQQjAgdW4wIDFTTjAgeHowIDF6ZDAgTHowIDF6ZDAgUmIwIDF6ZDAgT24wIDF3cDAgUmIwIHM4cDAgMWZCMCAxaXAwIDExejAgMWxkMCAxNG4wIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxNG4wIDFsZDAgMTRuMCAxbGQwIDE0bjAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejB8MTdlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1Rvcm9udG98RVNUIEVEVCBFV1QgRVBUfDUwIDQwIDQwIDQwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNVRSMCAxaW4wIDExV3UgMW56dSAxZkQwIFdKMCAxd3IwIE5iMCAxQXAwIE9uMCAxemQwIE9uMCAxd3AwIFRYMCAxdEIwIFRYMCAxdEIwIFRYMCAxdEIwIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCA0a00wIDh4NDAgaXYwIDFvMTAgMTF6MCAxblgwIDExejAgMW8xMCAxMXowIDFvMTAgMXFMMCAxMUQwIDFuWDAgMTFCMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTmFzc2F1fExNVCBFU1QgRURUfDU5LnUgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ya051Ty51IDI2WGRPLnUgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyNGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvTmV3X1lvcmt8RVNUIEVEVCBFV1QgRVBUfDUwIDQwIDQwIDQwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjF0MCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgMWExMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgUkIwIDh4NDAgaXYwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyMWU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvTmlwaWdvbnxFU1QgRURUIEVXVCBFUFR8NTAgNDAgNDAgNDB8MDEwMTIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNVRSMCAxaW4wIFJuYjAgM2plMCA4eDQwIGl2MCAxOXlOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTZlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL05vbWV8TlNUIE5XVCBOUFQgQlNUIEJEVCBZU1QgQUtTVCBBS0RUfGIwIGEwIGEwIGIwIGEwIDkwIDkwIDgwfDAxMjAzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQ1Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMTdTWDAgOHdXMCBpQjAgUWxiMCA1Mk8wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgY2wwIDEwcTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzhlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL05vcm9uaGF8TE1UIC0wMiAtMDF8MjkuRSAyMCAxMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x4Ty5rIEhkS08uayAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBuc3AwIFdMMCAxdEIwIDJMMCAycEIwIE9uMHwzMGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9ydGhfRGFrb3RhL0JldWxhaHxNU1QgTURUIE1XVCBNUFQgQ1NUIENEVHw3MCA2MCA2MCA2MCA2MCA1MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXIwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPbzAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL05vcnRoX0Rha290YS9DZW50ZXJ8TVNUIE1EVCBNV1QgTVBUIENTVCBDRFR8NzAgNjAgNjAgNjAgNjAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0bzAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9Ob3J0aF9EYWtvdGEvTmV3X1NhbGVtfE1TVCBNRFQgTVdUIE1QVCBDU1QgQ0RUfDcwIDYwIDYwIDYwIDYwIDUwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDIwIGl4MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0bzAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvT2ppbmFnYXxMTVQgTVNUIENTVCBDRFQgTURUfDZWLkUgNzAgNjAgNTAgNjB8MDEyMTIxMjMyMzI0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MXwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIDJ6UU4wIDFsYjAgMTRwMCAxbGIwIDE0cTAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgVTEwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjNlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL1BhbmduaXJ0dW5nfC0wMCBBU1QgQVdUIEFQVCBBRERUIEFEVCBFRFQgRVNUIENTVCBDRFR8MCA0MCAzMCAzMCAyMCAzMCA0MCA1MCA2MCA1MHwwMTIzMTQxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNjc2NzY3Njc2ODk3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njd8LTFYaU0wIFBuRzAgOHg1MCBpdTAgTENMMCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW8wMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFDMCAxblgwIDExQTAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDE0ZTJcIixcblx0XHRcdFwiQW1lcmljYS9QYXJhbWFyaWJvfExNVCBQTVQgUE1UIC0wMzMwIC0wM3wzRS5FIDNFLlEgM0UuQSAzdSAzMHwwMTIzNHwtMm5EVWouayBXcW8wLmMgcWFuWC5JIDF5VlhOLm98MjRlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1Bob2VuaXh8TVNUIE1EVCBNV1R8NzAgNjAgNjB8MDEwMTAyMDIwMTB8LTI2MXIwIDFuWDAgMTFCMCAxblgwIFNnTjAgNEFsMSBBcDAgMWRiMCBTV3FYIDFjTDB8NDJlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnQtYXUtUHJpbmNlfFBQTVQgRVNUIEVEVHw0TiA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjhSSGIgMkZuTWIgMTlYMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRxMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIGk2bjAgMW5YMCAxMUIwIDFuWDAgZDQzMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIDNpTjAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyM2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvUmlvX0JyYW5jb3xMTVQgLTA1IC0wNHw0di5jIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x2cy5NIEhkTHMuTSAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCBOQmQwIGQ1WDB8MzFlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRvX1ZlbGhvfExNVCAtMDQgLTAzfDRmLkEgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x2SS5vIEhkS0kubyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMHwzN2U0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUHVlcnRvX1JpY298QVNUIEFXVCBBUFR8NDAgMzAgMzB8MDEyMHwtMTdsVTAgN1hUMCBpdTB8MjRlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1B1bnRhX0FyZW5hc3xTTVQgLTA1IC0wNCAtMDN8NEcuSyA1MCA0MCAzMHwwMTAyMDIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzfC0ycTJqaC5lIGZKQWguZSA1a25HLksgMVZ6aC5lIGpSQUcuSyAxcGJoLmUgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgbkhYMCBvcDAgYmx6MCBrbzAgUWVvMCBXTDAgMXpkMCBPbjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxbGQwIDE0bjAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFmQjAgMTlYMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxaXAwIDFmejAgMWZCMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMW8xMCAxOVgwIDFmQjAgMW5YMCBHMTAgMUVMMCBPcDAgMXpiMCBSZDAgMXduMCBSZDAgNDZuMCBBcDBcIixcblx0XHRcdFwiQW1lcmljYS9SYWlueV9SaXZlcnxDU1QgQ0RUIENXVCBDUFR8NjAgNTAgNTAgNTB8MDEwMTIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNVRRMCAxaW4wIFJuYjAgM2plMCA4eDMwIGl3MCAxOXlOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8ODQyXCIsXG5cdFx0XHRcIkFtZXJpY2EvUmFua2luX0lubGV0fC0wMCBDU1QgQ0REVCBDRFQgRVNUfDAgNjAgNDAgNTAgNTB8MDEyMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzNDMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxfC12RGMwIGtldTAgMWZBMCB6Z08wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyNmUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvUmVjaWZlfExNVCAtMDMgLTAyfDJqLkEgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseEUubyBIZExFLm8gMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgbnNwMCBXTDAgMXRCMCAyTDAgMnBCMCBPbjB8MzNlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1JlZ2luYXxMTVQgTVNUIE1EVCBNV1QgTVBUIENTVHw2Vy5BIDcwIDYwIDYwIDYwIDYwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTM0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxNXwtMkFENTEubyB1SGUxLm8gMWluMCBzMkwwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgNjZOMCAxY0wwIDFjTjAgMTlYMCAxZkIwIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCBNMzAgOHgyMCBpeDAgMWlwMCAxY0wwIDFpcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAzTkIwIDFjTDAgMWNOMHwxOWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUmVzb2x1dGV8LTAwIENTVCBDRERUIENEVCBFU1R8MCA2MCA0MCA1MCA1MHwwMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTM0MzEzMTMxMzEzMTM0MzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzF8LVNuQTAgR1dTMCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIyOVwiLFxuXHRcdFx0XCJBbWVyaWNhL1NhbnRhcmVtfExNVCAtMDQgLTAzfDNDLk0gNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmdsd2wuYyBIZExsLmMgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgTkJkMHwyMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FudGlhZ298U01UIC0wNSAtMDQgLTAzfDRHLksgNTAgNDAgMzB8MDEwMjAyMTIxMjEyMTIxMjEyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzfC0ycTJqaC5lIGZKQWguZSA1a25HLksgMVZ6aC5lIGpSQUcuSyAxcGJoLmUgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgbkhYMCBvcDAgOUJ6MCBqYjAgMW9OMCBrbzAgUWVvMCBXTDAgMXpkMCBPbjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxbGQwIDE0bjAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFmQjAgMTlYMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxaXAwIDFmejAgMWZCMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMW8xMCAxOVgwIDFmQjAgMW5YMCBHMTAgMUVMMCBPcDAgMXpiMCBSZDAgMXduMCBSZDAgNDZuMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBEZDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBEZDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBEZDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDAgMU5iMCBBcDB8NjJlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1NhbnRvX0RvbWluZ298U0RNVCBFU1QgRURUIC0wNDMwIEFTVHw0RSA1MCA0MCA0dSA0MHwwMTIxMzEzMTMxMzEzMTQxNHwtMXR0amsgMWxKTWsgTW4wIDZzcDAgTGJ1IDFDb3UgeUx1IDFSQXUgd0x1IDFRTXUgeHp1IDFRMHUgeFh1IDFQQXUgMTNqQjAgZTAwfDI5ZTVcIixcblx0XHRcdFwiQW1lcmljYS9TYW9fUGF1bG98TE1UIC0wMyAtMDJ8MzYucyAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTJnbHdSLncgSGRLUi53IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHBUZDAgUFgwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIDFFTjAgTHowIDFDMTAgSUwwIDFIQjAgRGIwIDFIQjAgT24wIDF6ZDAgT24wIDF6ZDAgTHowIDF6ZDAgUmIwIDF3TjAgV24wIDF0QjAgUmIwIDF0QjAgV0wwIDF0QjAgUmIwIDF6ZDAgT24wIDFIQjAgRlgwIDFDMTAgTHowIDFJcDAgSFgwIDF6ZDAgT24wIDFIQjAgSUwwIDF3cDAgT24wIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgUmIwIDF6ZDAgTHowIDFDMTAgTHowIDFDMTAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjAgSUwwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFIQjAgRlgwIDFLcDAgRlgwIDFIQjAgSUwwIDFFTjAgRlgwIDFIQjAgRlgwIDFIQjAgSUwwIDFFTjB8MjBlNlwiLFxuXHRcdFx0XCJBbWVyaWNhL1Njb3Jlc2J5c3VuZHxMTVQgLTAyIC0wMSArMDB8MXIuUSAyMCAxMCAwfDAxMjEzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTJhNVd3LjggMno1ZXcuOCAxYTAwIDFjSzAgMWNMMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvU2l0a2F8UFNUIFBXVCBQUFQgUERUIFlTVCBBS1NUIEFLRFR8ODAgNzAgNzAgNzAgOTAgOTAgODB8MDEyMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzNDU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjV8LTE3VDIwIDh4MTAgaXkwIFZvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbzAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw5MGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvU3RfSm9obnN8TlNUIE5EVCBOU1QgTkRUIE5XVCBOUFQgTkREVHwzdS5RIDJ1LlEgM3UgMnUgMnUgMnUgMXV8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDIzMjMyMzIzMjMyMzIzMjQ1MjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjYyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTI4b2l0LjggMTRMMCAxbkIwIDFpbjAgMWdtMCBEejAgMUpCMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMTBPMCBlS1guOCAxOVgwIDFpcTAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDF0QjAgVFgwIDF0QjAgV0wwIDFxTjAgV0wwIDFxTjAgN1VIdSBpdHUgMXRCMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBXTDAgMWxkMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRuMSAxbGIwIDE0cDAgMW5XMCAxMUMwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpjWCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvU3dpZnRfQ3VycmVudHxMTVQgTVNUIE1EVCBNV1QgTVBUIENTVHw3Yi5rIDcwIDYwIDYwIDYwIDYwfDAxMjEzNDEyMTIxMjEyMTIxMjEyMTIxNXwtMkFENE0uRSB1SGRNLkUgMWluMCBVR3AwIDh4MjAgaXgwIDFvMTAgMTdiMCAxaXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCBpc04wIDFjTDAgM0NwMCAxY0wwIDFjTjAgMTF6MCAxcU4wIFdMMCBwTXAwfDE2ZTNcIixcblx0XHRcdFwiQW1lcmljYS9UZWd1Y2lnYWxwYXxMTVQgQ1NUIENEVHw1TS5RIDYwIDUwfDAxMjEyMTIxfC0xV0dHYi44IDJFVGNiLjggV0wwIDFxTjAgV0wwIEdSZDAgQUwwfDExZTVcIixcblx0XHRcdFwiQW1lcmljYS9UaHVsZXxMTVQgQVNUIEFEVHw0ei44IDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmE1VG8uUSAzMU5Cby5RIDFjTDAgMWNOMCAxY0wwIDFmQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvVGh1bmRlcl9CYXl8Q1NUIEVTVCBFV1QgRVBUIEVEVHw2MCA1MCA0MCA0MCA0MHwwMTIzMTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0ycTVTMCAxaWFOMCA4eDQwIGl2MCBYTkIwIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAzQ3AwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvVmFuY291dmVyfFBTVCBQRFQgUFdUIFBQVHw4MCA3MCA3MCA3MHwwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNVRPMCAxaW4wIFVHcDAgOHgxMCBpeTAgMW8xMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyM2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvV2hpdGVob3JzZXxZU1QgWURUIFlXVCBZUFQgWUREVCBQU1QgUERUfDkwIDgwIDgwIDgwIDcwIDgwIDcwfDAxMDEwMjMwNDA1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjV8LTI1VE4wIDFpbjAgMW8xMCAxM1YwIFNlcjAgOHgwMCBpejAgTENMMCAxZkEwIDNOQTAgdnJkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjNlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL1dpbm5pcGVnfENTVCBDRFQgQ1dUIENQVHw2MCA1MCA1MCA1MHwwMTAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhSWkwIFdMMCAzTkQwIDFpbjAgSmFwMCBSYjAgYUNOMCA4eDMwIGl3MCAxdEIwIDExejAgMWlwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXJkMCAxMEwwIDFvcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxY0wwIDFjTjAgMTF6MCA2aTEwIFdMMCA2aTEwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY2ZTRcIixcblx0XHRcdFwiQW1lcmljYS9ZYWt1dGF0fFlTVCBZV1QgWVBUIFlEVCBBS1NUIEFLRFR8OTAgODAgODAgODAgOTAgODB8MDEyMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTE3VDEwIDh4MDAgaXowIFZvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbjAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NDJcIixcblx0XHRcdFwiQW1lcmljYS9ZZWxsb3drbmlmZXwtMDAgTVNUIE1XVCBNUFQgTUREVCBNRFR8MCA3MCA2MCA2MCA1MCA2MHwwMTIzMTQxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTF8LTFwZEEwIGhpeDAgOHgyMCBpeDAgTENMMCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDE5ZTNcIixcblx0XHRcdFwiQW50YXJjdGljYS9DYXNleXwtMDAgKzA4ICsxMXwwIC04MCAtYjB8MDEyMTIxMjF8LTJxMDAgMURqUzAgVDkwIDQwUDAgS0wwIGJsejAgM20xMHwxMFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL0RhdmlzfC0wMCArMDcgKzA1fDAgLTcwIC01MHwwMTAxMjEyMXwtdnlvMCBpWHQwIGFsajAgMUQ3djAgVkIwIDNXbjAgS04wfDcwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvRHVtb250RFVydmlsbGV8LTAwICsxMHwwIC1hMHwwMTAxfC1VMG8wIGNmcTAgYkZtMHw4MFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL01hY3F1YXJpZXxBRVNUIEFFRFQgLTAwICsxMXwtYTAgLWIwIDAgLWIwfDAxMDIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTN8LTI5RTgwIDE5WDAgNFNMMCAxYXl5MCBMdnMwIDFjTTAgMW8wMCBSYzAgMXdvMCBSYzAgMXdvMCBVMDAgMXdvMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxMUEwIDFxTTAgV00wIDFxTTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF3bzAgV00wIDF0QTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgMTFBMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxMUEwIDFvMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTB8MVwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL01hd3NvbnwtMDAgKzA2ICswNXwwIC02MCAtNTB8MDEyfC1DRW8wIDJmeWswfDYwXCIsXG5cdFx0XHRcIlBhY2lmaWMvQXVja2xhbmR8TlpNVCBOWlNUIE5aU1QgTlpEVHwtYnUgLWN1IC1jMCAtZDB8MDEwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTFHQ1Z1IEx6MCAxdEIwIDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDE0bnUgMWxjdSAxNG51IDFsY3UgMWxidSAxMUF1IDFuWHUgMTFBdSAxblh1IDExQXUgMW5YdSAxMUF1IDFuWHUgMTFBdSAxcUx1IFdNdSAxcUx1IDExQXUgMW4xYnUgSU0wIDFDMDAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDFxTTAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDB8MTRlNVwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL1BhbG1lcnwtMDAgLTAzIC0wNCAtMDJ8MCAzMCA0MCAyMHwwMTIxMjEyMTIxMjEzMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC1jYW8wIG5EMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIGpzTjAgMTROMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxZkIwIDE5WDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMWlwMCAxZnowIDFmQjAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFvMTAgMTlYMCAxZkIwIDFuWDAgRzEwIDFFTDAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDQ2bjAgQXAwfDQwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvUm90aGVyYXwtMDAgLTAzfDAgMzB8MDF8Z09vMHwxMzBcIixcblx0XHRcdFwiQW50YXJjdGljYS9TeW93YXwtMDAgKzAzfDAgLTMwfDAxfC12czAwfDIwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvVHJvbGx8LTAwICswMCArMDJ8MCAwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwxcHVvMCBoZDAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDBcIixcblx0XHRcdFwiQW50YXJjdGljYS9Wb3N0b2t8LTAwICswNnwwIC02MHwwMXwtdGpBMHwyNVwiLFxuXHRcdFx0XCJFdXJvcGUvT3Nsb3xDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmF3TTAgUW0wIFc2bzAgNXBmMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIHdKYzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFxTTAgV00wIHpwYzAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDYyZTRcIixcblx0XHRcdFwiQXNpYS9SaXlhZGh8TE1UICswM3wtMzYuUSAtMzB8MDF8LVR2RDYuUXw1N2U1XCIsXG5cdFx0XHRcIkFzaWEvQWxtYXR5fExNVCArMDUgKzA2ICswN3wtNTcuTSAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQYzU3Lk0gZVVvNy5NIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wfDE1ZTVcIixcblx0XHRcdFwiQXNpYS9BbW1hbnxMTVQgRUVUIEVFU1R8LTJuLkkgLTIwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xeVcybi5JIDFIaU1uLkkgS0wwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxZHowIDFjcDAgMTFiMCAxb3AwIDExYjAgZk8xMCAxZGIwIDFlMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFwZDAgMTBuMCAxbGQwIDE0bjAgMWhCMCAxNWIwIDFpcDAgMTlYMCAxY04wIDFjTDAgMWNOMCAxN2IwIDFsZDAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxU28wIHkwMCAxZmMwIDFkYzAgMWNvMCAxZGMwIDFjTTAgMWNNMCAxY00wIDFvMDAgMTFBMCAxbGMwIDE3YzAgMWNNMCAxY00wIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCA0YlgwIERkMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTB8MjVlNVwiLFxuXHRcdFx0XCJBc2lhL0FuYWR5cnxMTVQgKzEyICsxMyArMTQgKzExfC1iTi5VIC1jMCAtZDAgLWUwIC1iMHwwMTIzMjEyMTIxMjEyMTIxMjEyMTIxNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE0MXwtMVBjYk4uVSBlVW5OLlUgMjNDTDAgMWRiMCAycTEwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMnNwMCBXTTB8MTNlM1wiLFxuXHRcdFx0XCJBc2lhL0FxdGF1fExNVCArMDQgKzA1ICswNnwtM2wuNCAtNDAgLTUwIC02MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTFQYzNsLjQgZVVubC40IDI0UFgwIDJwWDAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwfDE1ZTRcIixcblx0XHRcdFwiQXNpYS9BcXRvYmV8TE1UICswNCArMDUgKzA2fC0zTS5FIC00MCAtNTAgLTYwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQYzNNLkUgZVVuTS5FIDIzQ0wwIDNEYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTB8MjdlNFwiLFxuXHRcdFx0XCJBc2lhL0FzaGdhYmF0fExNVCArMDQgKzA1ICswNnwtM1IudyAtNDAgLTUwIC02MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyfC0xUGMzUi53IGVVblIudyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wfDQxZTRcIixcblx0XHRcdFwiQXNpYS9BdHlyYXV8TE1UICswMyArMDUgKzA2ICswNHwtM3IuSSAtMzAgLTUwIC02MCAtNDB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyNDIzMjMyMzIzMjMyMzIzMjQyNDI0MjQyNDJ8LTFQYzNyLkkgZVVvci5JIDI0UFcwIDJwWDAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAyc3AwIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMFwiLFxuXHRcdFx0XCJBc2lhL0JhZ2hkYWR8Qk1UICswMyArMDR8LTJWLkEgLTMwIC00MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTI2QmVWLkEgMkFDblYuQSAxMWIwIDFjcDAgMWR6MCAxZGQwIDFkYjAgMWNOMCAxY3AwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWRlMCAxZGMwIDFkYzAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxZGMwIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWRjMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFkYzAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMHw2NmU1XCIsXG5cdFx0XHRcIkFzaWEvUWF0YXJ8TE1UICswNCArMDN8LTNxLjggLTQwIC0zMHwwMTJ8LTIxSmZxLjggMjdCWHEuOHw5NmU0XCIsXG5cdFx0XHRcIkFzaWEvQmFrdXxMTVQgKzAzICswNCArMDV8LTNqLm8gLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQYzNqLm8gMWpVb2oubyBXQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCAxY00wIDlKZTAgMW8wMCAxMXowIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMHwyN2U1XCIsXG5cdFx0XHRcIkFzaWEvQmFuZ2tva3xCTVQgKzA3fC02Ry40IC03MHwwMXwtMjE4U0cuNHwxNWU2XCIsXG5cdFx0XHRcIkFzaWEvQmFybmF1bHxMTVQgKzA2ICswNyArMDh8LTV6IC02MCAtNzAgLTgwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTIxUzV6IHBDbnogMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcDkwIExFMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgM3JkMFwiLFxuXHRcdFx0XCJBc2lhL0JlaXJ1dHxFRVQgRUVTVHwtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjFhcTAgMW9uMCAxNDEwIDFkYjAgMTlCMCAxaW4wIDFpcDAgV0wwIDFsUXAwIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxcGQwIDExYjAgMW9OMCAxMWIwIHE2TjAgRW4wIDFvTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIDExYjAgMW9wMCAxMWIwIGRBMTAgMTdiMCAxaU4wIDE3YjAgMWlOMCAxN2IwIDFpTjAgMTdiMCAxdkIwIFNMMCAxbXAwIDEzejAgMWlOMCAxN2IwIDFpTjAgMTdiMCAxamQwIDEybjAgMWExMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMHwyMmU1XCIsXG5cdFx0XHRcIkFzaWEvQmlzaGtla3xMTVQgKzA1ICswNiArMDd8LTRXLm8gLTUwIC02MCAtNzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0xUGM0Vy5vIGVVblcubyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJlMDAgMXRYMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxY1B1IDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjB8ODdlNFwiLFxuXHRcdFx0XCJBc2lhL0JydW5laXxMTVQgKzA3MzAgKzA4fC03RC5FIC03dSAtODB8MDEyfC0xS0lURC5FIGdEYzkuRXw0MmU0XCIsXG5cdFx0XHRcIkFzaWEvS29sa2F0YXxNTVQgSVNUICswNjMwfC01bC5hIC01dSAtNnV8MDEyMTIxfC0yek90bC5hIDFyMkxQLmEgMXVuMCBIQjAgN3pYMHwxNWU2XCIsXG5cdFx0XHRcIkFzaWEvQ2hpdGF8TE1UICswOCArMDkgKzEwfC03eC5RIC04MCAtOTAgLWEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMxMnwtMjFRN3guUSBwQW54LlEgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgM3JlMHwzM2U0XCIsXG5cdFx0XHRcIkFzaWEvQ2hvaWJhbHNhbnxMTVQgKzA3ICswOCArMTAgKzA5fC03QyAtNzAgLTgwIC1hMCAtOTB8MDEyMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQyNDI0MnwtMkFQSEMgMlVrb0MgY0tuMCAxZGEwIDFkZDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDZoRDAgMTF6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDNEYjAgaDFmMCAxY0owIDFjUDAgMWNKMHwzOGUzXCIsXG5cdFx0XHRcIkFzaWEvU2hhbmdoYWl8Q1NUIENEVHwtODAgLTkwfDAxMDEwMTAxMDEwMTAxMDEwfC0xYzFJMCBMWDAgMTZwMCAxanowIDFNeXAwIFJiMCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowfDIzZTZcIixcblx0XHRcdFwiQXNpYS9Db2xvbWJvfE1NVCArMDUzMCArMDYgKzA2MzB8LTVqLncgLTV1IC02MCAtNnV8MDEyMzEzMjF8LTJ6T3RqLncgMXJGYk4udyAxenp1IDdBcHUgMjNkejAgMTF6dSBuM2N1fDIyZTVcIixcblx0XHRcdFwiQXNpYS9EaGFrYXxITVQgKzA2MzAgKzA1MzAgKzA2ICswN3wtNVIuayAtNnUgLTV1IC02MCAtNzB8MDEyMTM0M3wtMThMRlIuayAxdW5uLmsgSEIwIG02bjAgMmt4YnUgMWkwMHwxNmU2XCIsXG5cdFx0XHRcIkFzaWEvRGFtYXNjdXN8TE1UIEVFVCBFRVNUfC0ycC5jIC0yMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTIxSmVwLmMgSGVwLmMgMTdiMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxeFJCMCAxMVgwIDFvTjAgMTBMMCAxcEIwIDExYjAgMW9OMCAxMEwwIDFtcDAgMTNYMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxcGQwIDExYjAgMW9OMCBOYjAgMUFOMCBOYjAgYmNwMCAxOVgwIDFncDAgMTlYMCAzbGQwIDF4WDAgVmQwIDFCejAgU3AwIDF2WDAgMTBwMCAxZHowIDFjTjAgMWNMMCAxZGIwIDFkYjAgMWcxMCAxYW4wIDFhcDAgMWRiMCAxZmQwIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWRiMCAxY3AwIDFkejAgMWMxMCAxZFgwIDFjTjAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxZGIwIDFjTjAgMWRiMCAxY04wIDE5ejAgMWZCMCAxcUwwIDExQjAgMW9uMCBXcDAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDB8MjZlNVwiLFxuXHRcdFx0XCJBc2lhL0RpbGl8TE1UICswOCArMDl8LThtLmsgLTgwIC05MHwwMTIxMnwtMmxlOG0uayAxZG5YbS5rIDFuZkEwIFhsZDB8MTllNFwiLFxuXHRcdFx0XCJBc2lhL0R1YmFpfExNVCArMDR8LTNGLmMgLTQwfDAxfC0yMUpmRi5jfDM5ZTVcIixcblx0XHRcdFwiQXNpYS9EdXNoYW5iZXxMTVQgKzA1ICswNiArMDd8LTR6LmMgLTUwIC02MCAtNzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxfC0xUGM0ei5jIGVVbnouYyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJoQjB8NzZlNFwiLFxuXHRcdFx0XCJBc2lhL0ZhbWFndXN0YXxMTVQgRUVUIEVFU1QgKzAzfC0yZi5NIC0yMCAtMzAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFWYzJmLk0gMmEzY2YuTSAxY0wwIDFxcDAgWHowIDE5QjAgMTlYMCAxZkIwIDFkYjAgMWNwMCAxY0wwIDFmQjAgMTlYMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMW8zMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxNVUwIDJLczAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDBcIixcblx0XHRcdFwiQXNpYS9HYXphfEVFVCBFRVNUIElTVCBJRFR8LTIwIC0zMCAtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMWMycTAgNVJiMCAxMHIwIDFweDAgMTBOMCAxcHowIDE2cDAgMWpCMCAxNnAwIDFqeDAgcEJkMCBWejAgMW9OMCAxMWIwIDFvTzAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcGIwIDEwTjAgMXB6MCAxME4wIDFwYjAgMTBOMCAxcGIwIDExZDAgMW9MMCBkVzAgaGZCMCBEYjAgMWZCMCBSYjAgbnBCMCAxMXowIDFDMTAgSUwwIDFzMTAgMTBuMCAxbzEwIFdMMCAxemQwIE9uMCAxbGQwIDExejAgMW8xMCAxNG4wIDFvMTAgMTRuMCAxbmQwIDEybjAgMW5kMCBYejAgMXExMCAxMm4wIE0xMCBDMDAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFvMDAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxN2MwIDFpbzAgMThOMCAxYnowIDE5ejAgMWdwMCAxNjEwIDFpTDAgMTF6MCAxbzEwIDE0bzAgMWxBMSBTS1ggMXhkMSBNS1ggMUFOMCAxYTAwIDFmQTAgMWNMMCAxY04wIDFuWDAgMTIxMCAxbnowIDEyMjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDB8MThlNVwiLFxuXHRcdFx0XCJBc2lhL0hlYnJvbnxFRVQgRUVTVCBJU1QgSURUfC0yMCAtMzAgLTIwIC0zMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMWMycTAgNVJiMCAxMHIwIDFweDAgMTBOMCAxcHowIDE2cDAgMWpCMCAxNnAwIDFqeDAgcEJkMCBWejAgMW9OMCAxMWIwIDFvTzAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcGIwIDEwTjAgMXB6MCAxME4wIDFwYjAgMTBOMCAxcGIwIDExZDAgMW9MMCBkVzAgaGZCMCBEYjAgMWZCMCBSYjAgbnBCMCAxMXowIDFDMTAgSUwwIDFzMTAgMTBuMCAxbzEwIFdMMCAxemQwIE9uMCAxbGQwIDExejAgMW8xMCAxNG4wIDFvMTAgMTRuMCAxbmQwIDEybjAgMW5kMCBYejAgMXExMCAxMm4wIE0xMCBDMDAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFvMDAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxN2MwIDFpbzAgMThOMCAxYnowIDE5ejAgMWdwMCAxNjEwIDFpTDAgMTJMMCAxbU4wIDE0bzAgMWxjMCBUYjAgMXhkMSBNS1ggYkIwIGNuMCAxY04wIDFhMDAgMWZBMCAxY0wwIDFjTjAgMW5YMCAxMjEwIDFuejAgMTIyMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMHwyNWU0XCIsXG5cdFx0XHRcIkFzaWEvSG9fQ2hpX01pbmh8TE1UIFBMTVQgKzA3ICswOCArMDl8LTc2LkUgLTc2LnUgLTcwIC04MCAtOTB8MDEyMzQyMzIzMnwtMnlDNzYuRSBiSzAwLmEgMWg3YjYudSA1bHowIDE4bzAgM09xMCBrNWIwIGFXMDAgQkFNMHw5MGU1XCIsXG5cdFx0XHRcIkFzaWEvSG9uZ19Lb25nfExNVCBIS1QgSEtTVCBKU1R8LTdBLkcgLTgwIC05MCAtOTB8MDEyMTMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMkNGSEEuRyAxc0VQNi5HIDFjTDAgeWx1IDkzWDAgMXFRdSAxdFgwIFJkMCAxSW4wIE5CMCAxY0wwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWtMMCAxNE4wIDFuWDAgVTEwIDF0ejAgVTEwIDF3bjAgUmQwIDF3bjAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwIDF0ejAgVTEwIDF3bjAgUmQwIDF3bjAgUmQwIDF3bjAgVTEwIDF0ejAgVTEwIDF0ejAgMTdkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgczEwIDFWejAgMWNOMCAxY0wwIDFjTjAgMWNMMCA2ZmQwIDE0bjB8NzNlNVwiLFxuXHRcdFx0XCJBc2lhL0hvdmR8TE1UICswNiArMDcgKzA4fC02Ni5BIC02MCAtNzAgLTgwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMkFQRzYuQSAyVWtvNi5BIGNLbjAgMWRiMCAxZGQwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCA2aEQwIDExejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCBrRXAwIDFjSjAgMWNQMCAxY0owfDgxZTNcIixcblx0XHRcdFwiQXNpYS9Jcmt1dHNrfElNVCArMDcgKzA4ICswOXwtNlYuNSAtNzAgLTgwIC05MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjF6R1YuNSBwalhWLjUgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8NjBlNFwiLFxuXHRcdFx0XCJFdXJvcGUvSXN0YW5idWx8SU1UIEVFVCBFRVNUICswNCArMDN8LTFVLlUgLTIwIC0zMCAtNDAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzNDM0MzQzNDM0MjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyNHwtMm9nTlUuVSBkenpVLlUgMTFiMCA4dEIwIDFvbjAgMTQxMCAxZGIwIDE5QjAgMWluMCAzUmQwIFVuMCAxb04wIDExYjAgelNwMCBDTDAgbU4wIDFWejAgMWdOMCAxcHowIDVSZDAgMWZ6MCAxeXAwIE1MMCAxa3AwIDE3YjAgMWlwMCAxN2IwIDFmQjAgMTlYMCAxakIwIDE4TDAgMWlwMCAxN3owIHFkZDAgeFgwIDNTMTAgVHowIGRBMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDF6ZTAgMTFCMCBXTTAgMXFPMCBXSTAgMW5YMCAxckIwIDEwTDAgMTFCMCAxaW4wIDE3ZDAgMWluMCAycFgwIDE5RTAgMWZVMCAxNlEwIDFpSTAgMTZRMCAxaUkwIDFWZDAgcGIwIDNLcDAgMTRvMCAxZGUwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdPMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFhjMCAxcW8wIFdNMCAxcU0wIDExQTAgMW8wMCAxMjAwIDFuQTAgMTFBMCAxdEEwIFUwMCAxNXcwfDEzZTZcIixcblx0XHRcdFwiQXNpYS9KYWthcnRhfEJNVCArMDcyMCArMDczMCArMDkgKzA4IFdJQnwtNzcuYyAtN2sgLTd1IC05MCAtODAgLTcwfDAxMjMyNDI1fC0xUTBUayBsdU0wIG1Qek8gOHZXdSA2a3B1IDRQWHUgeGhjdXwzMWU2XCIsXG5cdFx0XHRcIkFzaWEvSmF5YXB1cmF8TE1UICswOSArMDkzMCBXSVR8LTltLk0gLTkwIC05dSAtOTB8MDEyM3wtMXV1OW0uTSBzTU1tLk0gTDRudXwyNmU0XCIsXG5cdFx0XHRcIkFzaWEvSmVydXNhbGVtfEpNVCBJU1QgSURUIElERFR8LTJrLkUgLTIwIC0zMCAtNDB8MDEyMTIxMjEyMTIxMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTI2QmVrLkUgU3lNay5FIDVSYjAgMTByMCAxcHgwIDEwTjAgMXB6MCAxNnAwIDFqQjAgMTZwMCAxangwIDNMQjAgRW0wIG9yMCAxY24wIDFkQjAgMTZuMCAxME8wIDFqYTAgMXRDMCAxNG8wIDFjTTAgMWEwMCAxMUEwIDFOYTAgQW4wIDFNUDAgQUowIDFLcDAgTEMwIDFvbzAgV2wwIEVRTjAgRGIwIDFmQjAgUmIwIG5wQjAgMTF6MCAxQzEwIElMMCAxczEwIDEwbjAgMW8xMCBXTDAgMXpkMCBPbjAgMWxkMCAxMXowIDFvMTAgMTRuMCAxbzEwIDE0bjAgMW5kMCAxMm4wIDFuZDAgWHowIDFxMTAgMTJuMCAxaEIwIDFkWDAgMWVwMCAxYUwwIDFlTjAgMTdYMCAxbmYwIDExejAgMXRCMCAxOVcwIDFlMTAgMTdiMCAxZXAwIDFnTDAgMThOMCAxZnowIDFlTjAgMTdiMCAxZ3EwIDFnbjAgMTlkMCAxZHowIDFjMTAgMTdYMCAxaEIwIDFnbjAgMTlkMCAxZHowIDFjMTAgMTdYMCAxa3AwIDFkejAgMWMxMCAxYUwwIDFlTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMW9MMCAxME4wIDFyejAgVzEwIDFyejAgVzEwIDFyejAgMTBOMCAxb0wwIDEwTjAgMW9MMCAxME4wIDFyejAgVzEwIDFyejAgVzEwIDFyejAgVzEwIDFyejAgMTBOMCAxb0wwIDEwTjAgMW9MMHw4MWU0XCIsXG5cdFx0XHRcIkFzaWEvS2FidWx8KzA0ICswNDMwfC00MCAtNHV8MDF8LTEwUXMwfDQ2ZTVcIixcblx0XHRcdFwiQXNpYS9LYW1jaGF0a2F8TE1UICsxMSArMTIgKzEzfC1heS5BIC1iMCAtYzAgLWQwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMnwtMVNMS3kuQSBpdlh5LkEgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAyc3AwIFdNMHwxOGU0XCIsXG5cdFx0XHRcIkFzaWEvS2FyYWNoaXxMTVQgKzA1MzAgKzA2MzAgKzA1IFBLVCBQS1NUfC00cy5jIC01dSAtNnUgLTUwIC01MCAtNjB8MDEyMTM0NTQ1NDU0fC0yeG9zcy5jIDFxT0tXLmMgN3pYMCBldXAwIExxTXUgMWZ5MDAgMWNMMCBkSzEwIDExYjAgMTYxMCAxalgwfDI0ZTZcIixcblx0XHRcdFwiQXNpYS9VcnVtcWl8TE1UICswNnwtNU8uayAtNjB8MDF8LTFHZ3RPLmt8MzJlNVwiLFxuXHRcdFx0XCJBc2lhL0thdGhtYW5kdXxMTVQgKzA1MzAgKzA1NDV8LTVGLmcgLTV1IC01SnwwMTJ8LTIxSmhGLmcgMkVHTWIuZ3wxMmU1XCIsXG5cdFx0XHRcIkFzaWEvS2hhbmR5Z2F8TE1UICswOCArMDkgKzEwICsxMXwtOTIuZCAtODAgLTkwIC1hMCAtYjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjM0MzQzNDM0MzQzNDM0MzQzMnwtMjFROTIuZCBwQXAyLmQgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCBxSzAgeU4wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDE3VjAgN3pEMHw2NmUyXCIsXG5cdFx0XHRcIkFzaWEvS3Jhc25veWFyc2t8TE1UICswNiArMDcgKzA4fC02Yi5xIC02MCAtNzAgLTgwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yMUhpYi5xIHByQWIucSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwxMGU1XCIsXG5cdFx0XHRcIkFzaWEvS3VhbGFfTHVtcHVyfFNNVCArMDcgKzA3MjAgKzA3MzAgKzA5ICswOHwtNlQucCAtNzAgLTdrIC03dSAtOTAgLTgwfDAxMjM0MzV8LTJCZzZULnAgMTdhblQucCBsNVhFIDE3Yk8gOEZ5dSAxc28xdXw3MWU1XCIsXG5cdFx0XHRcIkFzaWEvS3VjaGluZ3xMTVQgKzA3MzAgKzA4ICswODIwICswOXwtN2wuayAtN3UgLTgwIC04ayAtOTB8MDEyMzIzMjMyMzIzMjMyMzI0MnwtMUtJVGwuayBnRGJQLmsgNnludSBBbkUgMU8wayBBbkUgMU5BayBBbkUgMU5BayBBbkUgMU5BayBBbkUgMU8wayBBbkUgMU5BayBBbkUgcEFrIDhGejB8MTNlNFwiLFxuXHRcdFx0XCJBc2lhL01hY2F1fExNVCBDU1QgQ0RUfC03eS5rIC04MCAtOTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybGU4MCAxWE8zdSAxd24wIFJkMCAxd24wIFI5dSAxd3F1IFUxMCAxdHowIFRWdSAxdHowIDE3Z3UgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjSnUgMWNMMCAxY04wIDFmejAgMWNOMCAxY091IDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjSnUgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwfDU3ZTRcIixcblx0XHRcdFwiQXNpYS9NYWdhZGFufExNVCArMTAgKzExICsxMnwtYTMuYyAtYTAgLWIwIC1jMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMTJ8LTFQY2EzLmMgZVVvMy5jIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNDcTB8OTVlM1wiLFxuXHRcdFx0XCJBc2lhL01ha2Fzc2FyfExNVCBNTVQgKzA4ICswOSBXSVRBfC03Vi5BIC03Vi5BIC04MCAtOTAgLTgwfDAxMjM0fC0yMUpqVi5BIHZmYzAgbXlMVi5BIDhNTDB8MTVlNVwiLFxuXHRcdFx0XCJBc2lhL01hbmlsYXwrMDggKzA5fC04MCAtOTB8MDEwMTAxMDEwfC0xa0pJMCBBTDAgY0sxMCA2NVgwIG1YQjAgdlgwIFZLMTAgMWRiMHwyNGU2XCIsXG5cdFx0XHRcIkFzaWEvTmljb3NpYXxMTVQgRUVUIEVFU1R8LTJkLnMgLTIwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVZjMmQucyAyYTNjZC5zIDFjTDAgMXFwMCBYejAgMTlCMCAxOVgwIDFmQjAgMWRiMCAxY3AwIDFjTDAgMWZCMCAxOVgwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxbzMwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzJlNFwiLFxuXHRcdFx0XCJBc2lhL05vdm9rdXpuZXRza3xMTVQgKzA2ICswNyArMDh8LTVNLk0gLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyfC0xUGN0TS5NIGVVTE0uTSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDJzcDAgV00wfDU1ZTRcIixcblx0XHRcdFwiQXNpYS9Ob3Zvc2liaXJza3xMTVQgKzA2ICswNyArMDh8LTV2LkUgLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMjFRbnYuRSBwQUZ2LkUgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIG1sMCBPczAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgNGVOMHwxNWU1XCIsXG5cdFx0XHRcIkFzaWEvT21za3xMTVQgKzA1ICswNiArMDd8LTRSLnUgLTUwIC02MCAtNzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTIyNHNSLnUgcE1MUi51IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDEyZTVcIixcblx0XHRcdFwiQXNpYS9PcmFsfExNVCArMDMgKzA1ICswNiArMDR8LTNwLm8gLTMwIC01MCAtNjAgLTQwfDAxMjMyMzIzMjMyMzIzMjMyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyfC0xUGMzcC5vIGVVb3AubyAyM0NLMCAzRGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDJwQjAgMWNNMCAxZkEwIDFjTTAgMWNNMCBJTTAgMUVNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwfDI3ZTRcIixcblx0XHRcdFwiQXNpYS9Qb250aWFuYWt8TE1UIFBNVCArMDczMCArMDkgKzA4IFdJVEEgV0lCfC03aC5rIC03aC5rIC03dSAtOTAgLTgwIC04MCAtNzB8MDEyMzI0MjU2fC0ydWE3aC5rIFhFMDAgbXVuTC5rIDhSYXUgNmtwdSA0UFh1IHhoY3UgV3FudXwyM2U0XCIsXG5cdFx0XHRcIkFzaWEvUHlvbmd5YW5nfExNVCBLU1QgSlNUIEtTVHwtOG4gLTh1IC05MCAtOTB8MDEyMzEzfC0ydW04biA5N1hSIDFsVHp1IDJPbmMwIDZCQXV8MjllNVwiLFxuXHRcdFx0XCJBc2lhL1F5enlsb3JkYXxMTVQgKzA0ICswNSArMDZ8LTRsLlEgLTQwIC01MCAtNjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyM3wtMVBjNGwuUSBlVW9sLlEgMjNDTDAgM0RiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDNhbzAgMUVNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwfDczZTRcIixcblx0XHRcdFwiQXNpYS9SYW5nb29ufFJNVCArMDYzMCArMDl8LTZvLkwgLTZ1IC05MHwwMTIxfC0yMUppby5MIFNtblMuTCA3ajl1fDQ4ZTVcIixcblx0XHRcdFwiQXNpYS9TYWtoYWxpbnxMTVQgKzA5ICsxMSArMTIgKzEwfC05dS5NIC05MCAtYjAgLWMwIC1hMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjQyMzIzMjMyMzIzMjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MnwtMkFHVnUuTSAxQm9NdS5NIDFxRmEwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDJwQjAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmQwfDU4ZTRcIixcblx0XHRcdFwiQXNpYS9TYW1hcmthbmR8TE1UICswNCArMDUgKzA2fC00ci5SIC00MCAtNTAgLTYwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xUGM0ci5SIGVVb3IuUiAyM0NMMCAzRGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wfDM2ZTRcIixcblx0XHRcdFwiQXNpYS9TZW91bHxMTVQgS1NUIEpTVCBLU1QgS0RUIEtEVHwtOHIuUSAtOHUgLTkwIC05MCAtOXUgLWEwfDAxMjMxNDE0MTQxNDE0MTQxMzUzNTN8LTJ1bThyLlEgOTdYVi5RIDFtMXp1IGtLbzAgMkkwdSBPTDAgMUZCMCBSYjAgMXFOMCBUWDAgMXRCMCBUWDAgMXRCMCBUWDAgMXRCMCBUWDAgMmFwMCAxMkZCdSAxMUEwIDFvMDAgMTFBMHwyM2U2XCIsXG5cdFx0XHRcIkFzaWEvU3JlZG5la29seW1za3xMTVQgKzEwICsxMSArMTJ8LWFlLlEgLWEwIC1iMCAtYzB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQY2FlLlEgZVVvZS5RIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDM1ZTJcIixcblx0XHRcdFwiQXNpYS9UYWlwZWl8Q1NUIEpTVCBDRFR8LTgwIC05MCAtOTB8MDEwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjB8LTFpdzgwIGpvTTAgMXlvMCBUejAgMWlwMCAxalgwIDFjTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxME4wIDFCWDAgMTBwMCAxcHowIDEwcDAgMXB6MCAxMHAwIDFkYjAgMWRkMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFCQjAgTUwwIDFCZDAgTUwwIHVxMTAgMWRiMCAxY04wIDFkYjAgOTdCMCBBTDB8NzRlNVwiLFxuXHRcdFx0XCJBc2lhL1Rhc2hrZW50fExNVCArMDUgKzA2ICswN3wtNEIuYiAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjF8LTFQYzRCLmIgZVVuQi5iIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMHwyM2U1XCIsXG5cdFx0XHRcIkFzaWEvVGJpbGlzaXxUQk1UICswMyArMDQgKzA1fC0yWC5iIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIxMjEyMzIzMjMyMzIzMjMyMzIzMjMyMTJ8LTFQYzJYLmIgMWpVblguYiBXQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCAxY0swIDFjTDAgMWNOMCAxY0wwIDFjTjAgMnB6MCAxY0wwIDFmQjAgM056MCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCBBbjAgT3MwIFdNMHwxMWU1XCIsXG5cdFx0XHRcIkFzaWEvVGVocmFufExNVCBUTVQgKzAzMzAgKzA0ICswNSArMDQzMHwtM3AuSSAtM3AuSSAtM3UgLTQwIC01MCAtNHV8MDEyMzQzMjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTJ8LTJidERwLkkgMWQzYzAgMWh1TFQuSSBUWHUgMXB6MCBzTjAgdkF1IDFjTDAgMWRCMCAxZW4wIHBOQjAgVUwwIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgNjRwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejB8MTRlNlwiLFxuXHRcdFx0XCJBc2lhL1RoaW1waHV8TE1UICswNTMwICswNnwtNVcuQSAtNXUgLTYwfDAxMnwtU3U1Vy5BIDFCR01zLkF8NzllM1wiLFxuXHRcdFx0XCJBc2lhL1Rva3lvfEpTVCBKRFR8LTkwIC1hMHwwMTAxMDEwMTB8LVFKSjAgUmIwIDFsZDAgMTRuMCAxemQwIE9uMCAxemQwIE9uMHwzOGU2XCIsXG5cdFx0XHRcIkFzaWEvVG9tc2t8TE1UICswNiArMDcgKzA4fC01RC5QIC02MCAtNzAgLTgwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTIxTmhELlAgcHh6RC5QIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgY28wIDFiQjAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzUXAwfDEwZTVcIixcblx0XHRcdFwiQXNpYS9VbGFhbmJhYXRhcnxMTVQgKzA3ICswOCArMDl8LTc3LncgLTcwIC04MCAtOTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yQVBINy53IDJVa283LncgY0tuMCAxZGIwIDFkZDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDZoRDAgMTF6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIGtFcDAgMWNKMCAxY1AwIDFjSjB8MTJlNVwiLFxuXHRcdFx0XCJBc2lhL1VzdC1OZXJhfExNVCArMDggKzA5ICsxMiArMTEgKzEwfC05dy5TIC04MCAtOTAgLWMwIC1iMCAtYTB8MDEyMzQzNDM0MzQzNDM0MzQzNDM0MzQ1NDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQ1fC0yMVE5dy5TIHBBcHcuUyAyM0NMMCAxZDkwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMTdWMCA3ekQwfDY1ZTJcIixcblx0XHRcdFwiQXNpYS9WbGFkaXZvc3Rva3xMTVQgKzA5ICsxMCArMTF8LThMLnYgLTkwIC1hMCAtYjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFTSklMLnYgaXRYTC52IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDYwZTRcIixcblx0XHRcdFwiQXNpYS9ZYWt1dHNrfExNVCArMDggKzA5ICsxMHwtOEMuVyAtODAgLTkwIC1hMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjFROEMuVyBwQW9DLlcgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MjhlNFwiLFxuXHRcdFx0XCJBc2lhL1lla2F0ZXJpbmJ1cmd8TE1UIFBNVCArMDQgKzA1ICswNnwtNDIueCAtM0ouNSAtNDAgLTUwIC02MHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDMyMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LTJhZzQyLnggN21RaC5zIHFCdkouNSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwxNGU1XCIsXG5cdFx0XHRcIkFzaWEvWWVyZXZhbnxMTVQgKzAzICswNCArMDV8LTJXIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQYzJXIDFqVW5XIFdDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgNFJYMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTB8MTNlNVwiLFxuXHRcdFx0XCJBdGxhbnRpYy9Bem9yZXN8SE1UIC0wMiAtMDEgKzAwIFdFVHwxUy53IDIwIDEwIDAgMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjEyMzIxMjMyMTIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzNDMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMmxkVzAgYVBYMCBTcDAgTFgwIDF2YzAgVGMwIDF1TTAgU00wIDF2YzAgVGMwIDF2YzAgU00wIDF2YzAgNjYwMCAxY28wIDNFMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAzSTAwIDE3YzAgMWNNMCAxY00wIDNGYzAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERjMCAxdEEwIDFjTTAgMWRjMCAxNDAwIGdMMCBJTTAgczEwIFUwMCBkWDAgUmMwIHBkMCBSYzAgZ0wwIE9vMCBwZDAgUmMwIGdMMCBPbzAgcGQwIDE0bzAgMWNNMCAxY1AwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAzQ28wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIHFJbDAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY04wIDFjTDAgMWNOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY0wwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDI1ZTRcIixcblx0XHRcdFwiQXRsYW50aWMvQmVybXVkYXxMTVQgQVNUIEFEVHw0ai5pIDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFCblJFLkcgMUxUYkUuRyAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjVlM1wiLFxuXHRcdFx0XCJBdGxhbnRpYy9DYW5hcnl8TE1UIC0wMSBXRVQgV0VTVHwxMS5BIDEwIDAgLTEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0xVXRhVy5vIFhQQVcubyAxbEFLMCAxYTEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NTRlNFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9DYXBlX1ZlcmRlfExNVCAtMDIgLTAxfDF5LjQgMjAgMTB8MDEyMTJ8LTJsZFcwIDFlRW8wIDd6WDAgMWRqZjB8NTBlNFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9GYXJvZXxMTVQgV0VUIFdFU1R8ci40IDAgLTEwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ydVNudy5VIDJXZ293LlUgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDllM1wiLFxuXHRcdFx0XCJBdGxhbnRpYy9NYWRlaXJhfEZNVCAtMDEgKzAwICswMSBXRVQgV0VTVHwxNy5BIDEwIDAgLTEwIDAgLTEwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMTIzMjEyMzIxMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0ybGRYMCBhUFgwIFNwMCBMWDAgMXZjMCBUYzAgMXVNMCBTTTAgMXZjMCBUYzAgMXZjMCBTTTAgMXZjMCA2NjAwIDFjbzAgM0UwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDNJMDAgMTdjMCAxY00wIDFjTTAgM0ZjMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIDF0QTAgMWNNMCAxZGMwIDE0MDAgZ0wwIElNMCBzMTAgVTAwIGRYMCBSYzAgcGQwIFJjMCBnTDAgT28wIHBkMCBSYzAgZ0wwIE9vMCBwZDAgMTRvMCAxY00wIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNDbzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcUlsMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MjdlNFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9SZXlramF2aWt8TE1UIC0wMSArMDAgR01UfDFzIDEwIDAgMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTN8LTJ1V213IG1mYXcgMUJkMCBNTDAgMUxCMCBDbjAgMUxCMCAzZlgwIEMxMCBIclgwIDFjTzAgTEIwIDFFTDAgTEEwIDFDMDAgT28wIDF3bzAgUmMwIDF3bzAgUmMwIDF3bzAgUmMwIDF6YzAgT28wIDF6YzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbGMwIDE0bzAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTRvMHwxMmU0XCIsXG5cdFx0XHRcIkF0bGFudGljL1NvdXRoX0dlb3JnaWF8LTAyfDIwfDB8fDMwXCIsXG5cdFx0XHRcIkF0bGFudGljL1N0YW5sZXl8U01UIC0wNCAtMDMgLTAyfDNQLm8gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0ya0p3OC5BIDEyYkE4LkEgMTlYMCAxZkIwIDE5WDAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCBDbjAgMUNjMTAgV0wwIDFxTDAgVTEwIDF0ejAgMm1OMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXR6MCBVMTAgMXR6MCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXR6MCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFOMCBVMTAgMXduMCBSZDAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCBVMTB8MjFlMlwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvU3lkbmV5fEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5M2xYIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxNG8wIDFvMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgVTAwIDFxTTAgV00wIDF0QTAgV00wIDF0QTAgVTAwIDF0QTAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxMUEwIDFvMDAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8NDBlNVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQWRlbGFpZGV8QUNTVCBBQ0RUfC05dSAtYXV8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjkzbHQgeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFUwMCAxcU0wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIE9vMCAxemMwIFdNMCAxcU0wIFJjMCAxemMwIFUwMCAxdEEwIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8MTFlNVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQnJpc2JhbmV8QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTB8LTI5M2xYIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgSDFBMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzB8MjBlNVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQnJva2VuX0hpbGx8QUNTVCBBQ0RUfC05dSAtYXV8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjkzbHQgeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDE0bzAgMW8wMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBVMDAgMXFNMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIFdNMCAxcU0wIDE0bzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wfDE4ZTNcIixcblx0XHRcdFwiQXVzdHJhbGlhL0N1cnJpZXxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOUU4MCAxOVgwIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMXFNMCBXTTAgMXFNMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXdvMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMUEwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDExQTAgMW8wMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wfDc0NlwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvRGFyd2lufEFDU1QgQUNEVHwtOXUgLWF1fDAxMDEwMTAxMHwtMjkzbHQgeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwfDEyZTRcIixcblx0XHRcdFwiQXVzdHJhbGlhL0V1Y2xhfCswODQ1ICswOTQ1fC04SiAtOUp8MDEwMTAxMDEwMTAxMDEwMTAxMHwtMjkza0kgeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWdTcDAgT28wIGw1QTAgT28wIGlKQTAgRzAwIHpVMDAgSU0wIDFxTTAgMTFBMCAxbzAwIDExQTB8MzY4XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9Ib2JhcnR8QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOUU4MCAxOVgwIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIFZmQjAgMWNNMCAxbzAwIFJjMCAxd28wIFJjMCAxd28wIFUwMCAxd28wIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMXFNMCBXTTAgMXFNMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXdvMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMUEwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDExQTAgMW8wMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wfDIxZTRcIixcblx0XHRcdFwiQXVzdHJhbGlhL0xvcmRfSG93ZXxBRVNUICsxMDMwICsxMTMwICsxMXwtYTAgLWF1IC1idSAtYjB8MDEyMTIxMjEyMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxM3xyYUMwIDF6ZHUgUmIwIDF6ZDAgT24wIDF6ZDAgT24wIDF6ZDAgT24wIDF6ZDAgVFh1IDFxTXUgV0x1IDF0QXUgV0x1IDF0QXUgVFh1IDF0QXUgT251IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxcU11IFdMdSAxMUF1IDFuWHUgMXFNdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMXFNdSBXTHUgMXFNdSAxMXp1IDFvMHUgV0x1IDFxTXUgMTRudSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWZBdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWZBdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFmenUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXV8MzQ3XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9MaW5kZW1hbnxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI5M2xYIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgSDFBMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzB8MTBcIixcblx0XHRcdFwiQXVzdHJhbGlhL01lbGJvdXJuZXxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOTNsWCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgVTAwIDFxTTAgV00wIDFxTTAgMTFBMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMTFBMCAxbzAwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIFdNMCAxcU0wIDE0bzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wfDM5ZTVcIixcblx0XHRcdFwiQXVzdHJhbGlhL1BlcnRofEFXU1QgQVdEVHwtODAgLTkwfDAxMDEwMTAxMDEwMTAxMDEwMTB8LTI5M2pYIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFnU3AwIE9vMCBsNUEwIE9vMCBpSkEwIEcwMCB6VTAwIElNMCAxcU0wIDExQTAgMW8wMCAxMUEwfDE4ZTVcIixcblx0XHRcdFwiQ0VUfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCBRcmMwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMTZNMCAxZ01NMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDBcIixcblx0XHRcdFwiUGFjaWZpYy9FYXN0ZXJ8RU1UIC0wNyAtMDYgLTA1fDdoLnMgNzAgNjAgNTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzfC0xdVNnRy53IDFzNElHLncgV0wwIDF6ZDAgT24wIDFpcDAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWxkMCAxNG4wIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDJwQTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWZCMCAxOVgwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFpcDAgMWZ6MCAxZkIwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDE5WDAgMWZCMCAxblgwIEcxMCAxRUwwIE9wMCAxemIwIFJkMCAxd24wIFJkMCA0Nm4wIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMHwzMGUyXCIsXG5cdFx0XHRcIkNTVDZDRFR8Q1NUIENEVCBDV1QgQ1BUfDYwIDUwIDUwIDUwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkVFVHxFRVQgRUVTVHwtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHxoREIwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMFwiLFxuXHRcdFx0XCJFdXJvcGUvRHVibGlufERNVCBJU1QgR01UIEJTVCBJU1R8cC5sIC15LkQgMCAtMTAgLTEwfDAxMjMyMzIzMjMyMzI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyfC0yYXg5eS5EIFJjMCAxZnp5LkQgMTRNMCAxZmMwIDFnMDAgMWNvMCAxZGMwIDFjbzAgMW9vMCAxNDAwIDFkYzAgMTlBMCAxaW8wIDFpbzAgV00wIDFvMDAgMTRvMCAxbzAwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMXFNMCBEYzAgZzYwMCAxNG8wIDF3bzAgMTdjMCAxaW8wIDExQTAgMW8wMCAxN2MwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxbGMwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFhMDAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDF0QTAgSU0wIDkwbzAgVTAwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgMTF6MCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDEyZTVcIixcblx0XHRcdFwiRVNUfEVTVHw1MHwwfFwiLFxuXHRcdFx0XCJFU1Q1RURUfEVTVCBFRFQgRVdUIEVQVHw1MCA0MCA0MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXQwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHg0MCBpdjAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8R01UfDB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC0xfCswMXwtMTB8MHxcIixcblx0XHRcdFwiUGFjaWZpYy9Qb3J0X01vcmVzYnl8KzEwfC1hMHwwfHwyNWU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9obnBlaXwrMTF8LWIwfDB8fDM0ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9UYXJhd2F8KzEyfC1jMHwwfHwyOWUzXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMTN8KzEzfC1kMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTE0fCsxNHwtZTB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC0yfCswMnwtMjB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC0zfCswM3wtMzB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC00fCswNHwtNDB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC01fCswNXwtNTB8MHxcIixcblx0XHRcdFwiRXRjL0dNVC02fCswNnwtNjB8MHxcIixcblx0XHRcdFwiSW5kaWFuL0NocmlzdG1hc3wrMDd8LTcwfDB8fDIxZTJcIixcblx0XHRcdFwiRXRjL0dNVC04fCswOHwtODB8MHxcIixcblx0XHRcdFwiUGFjaWZpYy9QYWxhdXwrMDl8LTkwfDB8fDIxZTNcIixcblx0XHRcdFwiRXRjL0dNVCsxfC0wMXwxMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzEwfC0xMHxhMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzExfC0xMXxiMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzEyfC0xMnxjMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzN8LTAzfDMwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrNHwtMDR8NDB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs1fC0wNXw1MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzZ8LTA2fDYwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrN3wtMDd8NzB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs4fC0wOHw4MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzl8LTA5fDkwfDB8XCIsXG5cdFx0XHRcIkV0Yy9VQ1R8VUNUfDB8MHxcIixcblx0XHRcdFwiRXRjL1VUQ3xVVEN8MHwwfFwiLFxuXHRcdFx0XCJFdXJvcGUvQW1zdGVyZGFtfEFNVCBOU1QgKzAxMjAgKzAwMjAgQ0VTVCBDRVR8LWoudyAtMWoudyAtMWsgLWsgLTIwIC0xMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIzMjMyMzQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDV8LTJhRmNqLncgMTFiMCAxaVAwIDExQTAgMWlvMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFjbzAgMWlvMCAxeW8wIFBjMCAxYTAwIDFmQTAgMUJjMCBNbzAgMXRjMCBVbzAgMXRBMCBVMDAgMXVvMCBXMDAgMXMwMCBWQTAgMXNvMCBWYzAgMXNNMCBVTTAgMXdvMCBSYzAgMXUwMCBXbzAgMXJBMCBXMDAgMXMwMCBWQTAgMXNNMCBVTTAgMXcwMCBmVjAgQkNYLncgMXRBMCBVMDAgMXUwMCBXbzAgMXNtMCA2MDFrIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDE2TTAgMWdNTTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE2ZTVcIixcblx0XHRcdFwiRXVyb3BlL0FuZG9ycmF8V0VUIENFVCBDRVNUfDAgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LVVCQTAgMXhJTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw3OWUzXCIsXG5cdFx0XHRcIkV1cm9wZS9Bc3RyYWtoYW58TE1UICswMyArMDQgKzA1fC0zYy5jIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMVBjcmMuYyBlVU1jLmMgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMWNNMCAzQ28wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmQwXCIsXG5cdFx0XHRcIkV1cm9wZS9BdGhlbnN8QU1UIEVFVCBFRVNUIENFU1QgQ0VUfC0xeS5RIC0yMCAtMzAgLTIwIC0xMHwwMTIxMjM0MzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJhNjF4LlEgQ05ieC5RIG1uMCBrVTEwIDliMCAzRXMwIFhhMCAxZmIwIDFkZDAgazNYMCBOejAgU0NwMCAxdmMwIFNPMCAxY00wIDFhMDAgMWFvMCAxZmMwIDFhMTAgMWZHMCAxY2cwIDFkWDAgMWJYMCAxY1EwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDM1ZTVcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxHTVQgQlNUIEJEU1R8MCAtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjEyMTIxMjEyMTAxMDEyMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJheGEwIFJjMCAxZkEwIDE0TTAgMWZjMCAxZzAwIDFjbzAgMWRjMCAxY28wIDFvbzAgMTQwMCAxZGMwIDE5QTAgMWlvMCAxaW8wIFdNMCAxbzAwIDE0bzAgMW8wMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFxTTAgRGMwIDJSejAgRGMwIDF6YzAgT28wIDF6YzAgUmMwIDF3bzAgMTdjMCAxaU0wIEZBMCB4QjAgMWZBMCAxYTAwIDE0bzAgYmIwIExBMCB4QjAgUmMwIDF3bzAgMTFBMCAxbzAwIDE3YzAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFsYzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWEwMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXRBMCBJTTAgOTBvMCBVMDAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMXowIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTBlNlwiLFxuXHRcdFx0XCJFdXJvcGUvQmVsZ3JhZGV8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMTlSQzAgM0lQMCBXTTAgMWZBMCAxY00wIDFjTTAgMXJjMCBRbzAgMXZtbzAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDEyZTVcIixcblx0XHRcdFwiRXVyb3BlL0JlcmxpbnxDRVQgQ0VTVCBDRU1UfC0xMCAtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMjEwMTAxMjEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIGtMMCBOYzAgbTEwIFdNMCAxYW8wIDFjcDAgZFgwIGp6MCBEZDAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxZWhBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDFlNVwiLFxuXHRcdFx0XCJFdXJvcGUvUHJhZ3VlfENFVCBDRVNUIEdNVHwtMTAgLTIwIDB8MDEwMTAxMDEwMTAxMDEwMTAyMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCBRcmMwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxcU0wIDExYzAgbXAwIHhBMCBtbjAgMTdjMCAxaW8wIDE3YzAgMWZjMCAxYW8wIDFiTmMwIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTNlNVwiLFxuXHRcdFx0XCJFdXJvcGUvQnJ1c3NlbHN8V0VUIENFVCBDRVNUIFdFU1R8MCAtMTAgLTIwIC0xMHwwMTIxMjEyMTAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZWhjMCAzelgwIDExYzAgMWlPMCAxMUEwIDFvMDAgMTFBMCBteTAgSWMwIDFxTTAgUmMwIDFFTTAgVU0wIDF1MDAgMTBvMCAxaW8wIDFpbzAgMTdjMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTMwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIHkwMCA1V24wIFdNMCAxZkEwIDFjTTAgMTZNMCAxaU0wIDE2TTAgMUMwMCBVbzAgMWVlbzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDIxZTVcIixcblx0XHRcdFwiRXVyb3BlL0J1Y2hhcmVzdHxCTVQgRUVUIEVFU1R8LTFJLm8gLTIwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xeEFwSS5vIDIwTEkubyBSQTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFBeGMwIE9uMCAxZkEwIDFhMTAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjSzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNMMCAxY04wIDFjTDAgMWZCMCAxblgwIDExRTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxOWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9CdWRhcGVzdHxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFpcDAgMTdiMCAxb3AwIDF0YjAgUTJtMCAzTmUwIFdNMCAxZkEwIDFjTTAgMWNNMCAxb0owIDFkYzAgMTAzMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFpTTAgMWZBMCA4SGEwIFJiMCAxd04wIFJiMCAxQkIwIEx6MCAxQzIwIExCMCBTTlgwIDFhMTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxN2U1XCIsXG5cdFx0XHRcIkV1cm9wZS9adXJpY2h8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMTlMYzAgMTFBMCAxbzAwIDExQTAgMXhHMTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzhlNFwiLFxuXHRcdFx0XCJFdXJvcGUvQ2hpc2luYXV8Q01UIEJNVCBFRVQgRUVTVCBDRVNUIENFVCBNU0sgTVNEfC0xVCAtMUkubyAtMjAgLTMwIC0yMCAtMTAgLTMwIC00MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzQ1NDU0Njc2NzY3Njc2NzY3Njc2NzY3NjczMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTI2amRUIHdHTWEuQSAyMExJLm8gUkEwIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAyN0EwIDJlbjAgMzlnMCBXTTAgMWZBMCAxY00wIFY5MCAxdDd6MCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBnTDAgV08wIDFjTTAgMWNNMCAxY0swIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxblgwIDExRDAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw2N2U0XCIsXG5cdFx0XHRcIkV1cm9wZS9Db3BlbmhhZ2VufENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmF6QzAgVHowIFZ1TzAgNjBxMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCBTMDAgMUhBMCBOYzAgMUMwMCBEYzAgMU5jMCBBbzAgMWg1QTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDEyZTVcIixcblx0XHRcdFwiRXVyb3BlL0dpYnJhbHRhcnxHTVQgQlNUIEJEU1QgQ0VUIENFU1R8MCAtMTAgLTIwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMTIxMjEyMTIxMDEwMTIxMDEwMTAxMDEwMTAxMDEwMTAxMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC0yYXhhMCBSYzAgMWZBMCAxNE0wIDFmYzAgMWcwMCAxY28wIDFkYzAgMWNvMCAxb28wIDE0MDAgMWRjMCAxOUEwIDFpbzAgMWlvMCBXTTAgMW8wMCAxNG8wIDFvMDAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxcU0wIERjMCAyUnowIERjMCAxemMwIE9vMCAxemMwIFJjMCAxd28wIDE3YzAgMWlNMCBGQTAgeEIwIDFmQTAgMWEwMCAxNG8wIGJiMCBMQTAgeEIwIFJjMCAxd28wIDExQTAgMW8wMCAxN2MwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxbGMwIDE3YzAgMWZBMCAxMEp6MCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDMwZTNcIixcblx0XHRcdFwiRXVyb3BlL0hlbHNpbmtpfEhNVCBFRVQgRUVTVHwtMUQuTiAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFXdU5ELk4gT1VMRC5OIDFkQTAgMXhHcTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvS2FsaW5pbmdyYWR8Q0VUIENFU1QgQ0VUIENFU1QgTVNLIE1TRCBFRVNUIEVFVCArMDN8LTEwIC0yMCAtMjAgLTMwIC0zMCAtNDAgLTMwIC0yMCAtMzB8MDEwMTAxMDEwMTAxMDIzMjQ1NDU0NTQ1NDU0NTQ1NDU0Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc4N3wtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgQW0wIExiMCAxZW4wIG9wMCAxcE56MCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDQ0ZTRcIixcblx0XHRcdFwiRXVyb3BlL0tpZXZ8S01UIEVFVCBNU0sgQ0VTVCBDRVQgTVNEIEVFU1R8LTIyLjQgLTIwIC0zMCAtMjAgLTEwIC00MCAtMzB8MDEyMzQzNDI1MjUyNTI1MjUyNTI1MjUyNTI1NjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MXwtMVBjMjIuNCBlVW8yLjQgcm56MCAySGcwIFdNMCAxZkEwIGRhMCAxdjRtMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBEYjAgMzIyMCAxY0swIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY1EwIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzNGU1XCIsXG5cdFx0XHRcIkV1cm9wZS9LaXJvdnxMTVQgKzAzICswNCArMDV8LTNpLk0gLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTIyV00wIHFIOTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMWNNMCAzQ28wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHw0OGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9MaXNib258TE1UIFdFVCBXRVNUIFdFTVQgQ0VUIENFU1R8QS5KIDAgLTEwIC0yMCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMTIzMjEyMzIxMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyNDU0NTQ1NDIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmxlMDAgYVBYMCBTcDAgTFgwIDF2YzAgVGMwIDF1TTAgU00wIDF2YzAgVGMwIDF2YzAgU00wIDF2YzAgNjYwMCAxY28wIDNFMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAzSTAwIDE3YzAgMWNNMCAxY00wIDNGYzAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERjMCAxdEEwIDFjTTAgMWRjMCAxNDAwIGdMMCBJTTAgczEwIFUwMCBkWDAgUmMwIHBkMCBSYzAgZ0wwIE9vMCBwZDAgUmMwIGdMMCBPbzAgcGQwIDE0bzAgMWNNMCAxY1AwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAzQ28wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIHB2eTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MjdlNVwiLFxuXHRcdFx0XCJFdXJvcGUvTHV4ZW1ib3VyZ3xMTVQgQ0VUIENFU1QgV0VUIFdFU1QgV0VTVCBXRVR8LW8uQSAtMTAgLTIwIDAgLTEwIC0yMCAtMTB8MDEyMTIxMjEzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NTY1MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMkRHMG8uQSB0Nm1vLkEgVEIwIDFuWDAgVXAwIDFvMjAgMTFBMCByVzAgQ00wIDFxUDAgUjkwIDFFTzAgVUswIDF1MjAgMTBtMCAxaXAwIDFpbjAgMTdlMCAxOVcwIDFmQjAgMWRiMCAxY3AwIDFpbjAgMTdkMCAxZnowIDFhMTAgMWluMCAxYTEwIDFpbjAgMTdmMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIHZBMCA2MEwwIFdNMCAxZkEwIDFjTTAgMTdjMCAxaW8wIDE2TTAgMUMwMCBVbzAgMWVlbzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDU0ZTRcIixcblx0XHRcdFwiRXVyb3BlL01hZHJpZHxXRVQgV0VTVCBXRU1UIENFVCBDRVNUfDAgLTEwIC0yMCAtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTIxMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0M3wtMjVUZDAgMTlCMCAxY0wwIDFkZDAgYjF6MCAxOHAwIDNIWDAgMTdkMCAxZnowIDFhMTAgMWlvMCAxYTAwIDFpbjAgMTdkMCBpSW4wIEhkMCAxY0wwIGJiMCAxMjAwIDJzMjAgMTRuMCA1YUwwIE1wMCAxdnowIDE3ZDAgMWluMCAxN2QwIDFpbjAgMTdkMCAxaW4wIDE3ZDAgNmhYMCAxMUIwIFhIWDAgMWExMCAxZnowIDFhMTAgMTlYMCAxY04wIDFmejAgMWExMCAxZkMwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDYyZTVcIixcblx0XHRcdFwiRXVyb3BlL01hbHRhfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFyQjAgTHowIDFjTjAgMWRiMCAxNDEwIDFvbjAgV3AwIDFxTDAgMTdkMCAxY0wwIE0zQjAgNU0yMCBXTTAgMWZBMCAxY28wIDE3YzAgMWlNMCAxNm0wIDFkZTAgMWxjMCAxNG0wIDFsYzAgV08wIDFxTTAgR1RXMCBPbjAgMUMxMCBMQTAgMUMwMCBMQTAgMUVNMCBMQTAgMUMwMCBMQTAgMXpjMCBPbzAgMUMwMCBPbzAgMWNvMCAxY00wIDFsQTAgWGMwIDFxcTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMWlOMCAxOXowIDFmQjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDJlNFwiLFxuXHRcdFx0XCJFdXJvcGUvTWluc2t8TU1UIEVFVCBNU0sgQ0VTVCBDRVQgTVNEIEVFU1QgKzAzfC0xTyAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMCAtMzB8MDEyMzQzNDMyNTI1MjUyNTI1MjUyNTI1MjUyNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTd8LTFQYzFPIGVVbk8gcU5YMCAzZ1EwIFdNMCAxZkEwIDFjTTAgQWwwIDF0c24wIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAzRmMwIDFjTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTB8MTllNVwiLFxuXHRcdFx0XCJFdXJvcGUvTW9uYWNvfFBNVCBXRVQgV0VTVCBXRU1UIENFVCBDRVNUfC05LmwgMCAtMTAgLTIwIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTJuY285LmwgY05iOS5sIEhBMCAxOUEwIDFpTTAgMTFjMCAxb28wIFdvMCAxcmMwIFFNMCAxRU0wIFVNMCAxdTAwIDEwbzAgMWlvMCAxd28wIFJjMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGYwIDJSVjAgMTF6MCAxMUIwIDF6ZTAgV00wIDFmQTAgMWNNMCAxZmEwIDFhcTAgMTZNMCAxZWtuMCAxY0wwIDFmQzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDM4ZTNcIixcblx0XHRcdFwiRXVyb3BlL01vc2Nvd3xNTVQgTU1UIE1TVCBNRFNUIE1TRCBNU0sgKzA1IEVFVCBFRVNUIE1TS3wtMnUuaCAtMnYuaiAtM3YuaiAtNHYuaiAtNDAgLTMwIC01MCAtMjAgLTMwIC00MHwwMTIxMzIzNDU0NjQ1NzU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTg3NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1OTV8LTJhZzJ1LmggMnB5Vy5XIDFiQTAgMTFYMCBHTjAgMUhiMCBjNHYuaiBpazAgM0RBMCBkejAgMTVBMCBjMTAgMnExMCBpTTEwIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY04wIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MTZlNlwiLFxuXHRcdFx0XCJFdXJvcGUvUGFyaXN8UE1UIFdFVCBXRVNUIENFU1QgQ0VUIFdFTVR8LTkubCAwIC0xMCAtMjAgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzNDM0MzUyNTQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0fC0ybmNvOC5sIGNOYjgubCBIQTAgMTlBMCAxaU0wIDExYzAgMW9vMCBXbzAgMXJjMCBRTTAgMUVNMCBVTTAgMXUwMCAxMG8wIDFpbzAgMXdvMCBSYzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFmQTAgMWlvMCAxcU0wIERmMCBJazAgNU0zMCBXTTAgMWZBMCAxY00wIFZ4MCBoQjAgMWFxMCAxNk0wIDFla24wIDFjTDAgMWZDMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTFlNlwiLFxuXHRcdFx0XCJFdXJvcGUvUmlnYXxSTVQgTFNUIEVFVCBNU0sgQ0VTVCBDRVQgTVNEIEVFU1R8LTFBLnkgLTJBLnkgLTIwIC0zMCAtMjAgLTEwIC00MCAtMzB8MDEwMTAyMzQ1NDU0NTM2MzYzNjM2MzYzNjM2MzYzNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyfC0yNVR6QS55IDExQTAgMWlNMCBrbzAgZ1dtMCB5RFhBLnkgMmJYMCAzZkUwIFdNMCAxZkEwIDFjTTAgMWNNMCA0bTAgMXNMeTAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY04wIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCAzb28wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDY0ZTRcIixcblx0XHRcdFwiRXVyb3BlL1JvbWV8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXJCMCBMejAgMWNOMCAxZGIwIDE0MTAgMW9uMCBXcDAgMXFMMCAxN2QwIDFjTDAgTTNCMCA1TTIwIFdNMCAxZkEwIDFjTTAgMTZNMCAxaU0wIDE2bTAgMWRlMCAxbGMwIDE0bTAgMWxjMCBXTzAgMXFNMCBHVFcwIE9uMCAxQzEwIExBMCAxQzAwIExBMCAxRU0wIExBMCAxQzAwIExBMCAxemMwIE9vMCAxQzAwIE9vMCAxQzAwIExBMCAxemMwIE9vMCAxQzAwIExBMCAxQzAwIExBMCAxemMwIE9vMCAxQzAwIE9vMCAxemMwIE9vMCAxZkMwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzOWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9TYW1hcmF8TE1UICswMyArMDQgKzA1fC0zay5rIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMzIxMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTJ8LTIyV00wIHFIOTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMnkxMCAxNG0wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMnNwMCBXTTB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvU2FyYXRvdnxMTVQgKzAzICswNCArMDV8LTM0LmkgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yMldNMCBxSDkwIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgM0NvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgNTgxMFwiLFxuXHRcdFx0XCJFdXJvcGUvU2ltZmVyb3BvbHxTTVQgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVCBNU0t8LTJnIC0yMCAtMzAgLTIwIC0xMCAtNDAgLTMwIC00MHwwMTIzNDM0MzI1MjUyNTI1MjUyNTI1MjUyNTIxNjE2MTY1MjUyNTI2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNzJ8LTFQYzJnIGVVb2cgckVuMCAycXMwIFdNMCAxZkEwIDFjTTAgM1YwIDF1MEwwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxUTAwIDRlTDAgMWNMMCAxY04wIDFjTDAgMWNOMCBkWDAgV0wwIDFjTjAgMWNMMCAxZkIwIDFvMzAgMTFCMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExejAgMW5XMHwzM2U0XCIsXG5cdFx0XHRcIkV1cm9wZS9Tb2ZpYXxFRVQgQ0VUIENFU1QgRUVTVHwtMjAgLTEwIC0yMCAtMzB8MDEyMTIxMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzB8LTE2OEwwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY04wIDFtS0gwIDFkZDAgMWZiMCAxYXAwIDFmYjAgMWEyMCAxZnkwIDFhMzAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY0swIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMW5YMCAxMUUwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvU3RvY2tob2xtfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhekMwIFRCMCAyeURlMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTVlNVwiLFxuXHRcdFx0XCJFdXJvcGUvVGFsbGlubnxUTVQgQ0VUIENFU1QgRUVUIE1TSyBNU0QgRUVTVHwtMUQgLTEwIC0yMCAtMjAgLTMwIC00MCAtMzB8MDEyMTAzNDIxMjEyNDU0NTQ1NDU0NTQ1NDU0NTQ2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzfC0yNm9ORCB0ZUQgMTFBMCAxVGEwIDRyWGwgS1NMRCAyRlgwIDJKZzAgV00wIDFmQTAgMWNNMCAxOEowIDFzVFgwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8xMCAxMUEwIDFxTTAgNVFNMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDQxZTRcIixcblx0XHRcdFwiRXVyb3BlL1RpcmFuZXxMTVQgQ0VUIENFU1R8LTFqLmsgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsQmouayAxNHBjai5rIDVMQzAgV00wIDRNMCAxZkNLMCAxMG4wIDFvcDAgMTF6MCAxcGQwIDExejAgMXFOMCBXTDAgMXFwMCBYYjAgMXFwMCBYYjAgMXFwMCAxMXowIDFsQjAgMTF6MCAxcU4wIDExejAgMWlOMCAxNm4wIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDJlNFwiLFxuXHRcdFx0XCJFdXJvcGUvVWx5YW5vdnNrfExNVCArMDMgKzA0ICswNSArMDJ8LTNkLkEgLTMwIC00MCAtNTAgLTIwfDAxMjMyMzIzMjMyMzIzMjMyMzIxMjE0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yMldNMCBxSDkwIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDJwQjAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmQwXCIsXG5cdFx0XHRcIkV1cm9wZS9Vemhnb3JvZHxDRVQgQ0VTVCBNU0sgTVNEIEVFVCBFRVNUfC0xMCAtMjAgLTMwIC00MCAtMjAgLTMwfDAxMDEwMTAyMzIzMjMyMzIzMjMyMzIzMjMyMDQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMWNxTDAgNmkwMCBXTTAgMWZBMCAxY00wIDFtbDAgMUNwMCAxcjNXMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMVEwMCAxTmYwIDJwdzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjUTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDExZTRcIixcblx0XHRcdFwiRXVyb3BlL1ZpZW5uYXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCAzS00wIDE0bzAgTEEwMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDQwMCAycU0wIDFhMDAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZ0hhMCAxOVgwIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MThlNVwiLFxuXHRcdFx0XCJFdXJvcGUvVmlsbml1c3xXTVQgS01UIENFVCBFRVQgTVNLIENFU1QgTVNEIEVFU1R8LTFvIC0xei5BIC0xMCAtMjAgLTMwIC0yMCAtNDAgLTMwfDAxMjMyNDUyNTI1NDY0NjQ2NDY0NjQ2NDY0NjQ3MzczNzM3MzczNzM3MzczNzM1MjUzNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3M3wtMjkzZG8gNklMTS5vIDFPb3ouQSB6ejAgTWZkMCAyOVcwIDNpczAgV00wIDFmQTAgMWNNMCBMVjAgMXRnTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFCMCAxbzAwIDExQTAgMXFNMCA4aW8wIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw1NGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9Wb2xnb2dyYWR8TE1UICswMyArMDQgKzA1fC0yVi5FIC0zMCAtNDAgLTUwfDAxMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yMUlxVi5FIHBzTFYuRSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDJwQjAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDNDbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDEwZTVcIixcblx0XHRcdFwiRXVyb3BlL1dhcnNhd3xXTVQgQ0VUIENFU1QgRUVUIEVFU1R8LTFvIC0xMCAtMjAgLTIwIC0zMHwwMTIxMjEyMzQzMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJjdGRvIDFMWG8gMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIDFvbjAgMTFBMCA2enkwIEhXUDAgNUlNMCBXTTAgMWZBMCAxY00wIDFkejAgMW1MMCAxZW4wIDE1QjAgMWFxMCAxbkEwIDExQTAgMWlvMCAxN2MwIDFmQTAgMWEwMCBpRFgwIExBMCAxY00wIDFjTTAgMUMwMCBPbzAgMWNNMCAxY00wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDFDMDAgTEEwIHVzbzAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE3ZTVcIixcblx0XHRcdFwiRXVyb3BlL1phcG9yb3poeWV8KzAyMjAgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVHwtMmsgLTIwIC0zMCAtMjAgLTEwIC00MCAtMzB8MDEyMzQzNDI1MjUyNTI1MjUyNTI1MjUyNTI1MjYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjF8LTFQYzJrIGVVb2sgcmRiMCAyUkUwIFdNMCAxZkEwIDhtMCAxdjlhMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNLMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY1EwIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw3N2U0XCIsXG5cdFx0XHRcIkhTVHxIU1R8YTB8MHxcIixcblx0XHRcdFwiSW5kaWFuL0NoYWdvc3xMTVQgKzA1ICswNnwtNE4uRSAtNTAgLTYwfDAxMnwtMnhvc04uRSAzQUdMTi5FfDMwZTJcIixcblx0XHRcdFwiSW5kaWFuL0NvY29zfCswNjMwfC02dXwwfHw1OTZcIixcblx0XHRcdFwiSW5kaWFuL0tlcmd1ZWxlbnwtMDAgKzA1fDAgLTUwfDAxfC1NRzAwfDEzMFwiLFxuXHRcdFx0XCJJbmRpYW4vTWFoZXxMTVQgKzA0fC0zRi5NIC00MHwwMXwtMnlPM0YuTXw3OWUzXCIsXG5cdFx0XHRcIkluZGlhbi9NYWxkaXZlc3xNTVQgKzA1fC00UyAtNTB8MDF8LW9sZ1N8MzVlNFwiLFxuXHRcdFx0XCJJbmRpYW4vTWF1cml0aXVzfExNVCArMDQgKzA1fC0zTyAtNDAgLTUwfDAxMjEyMXwtMnhvck8gMzR1bk8gMTRMMCAxMmtyMCAxMXowfDE1ZTRcIixcblx0XHRcdFwiSW5kaWFuL1JldW5pb258TE1UICswNHwtM0YuUSAtNDB8MDF8LTJtRERGLlF8ODRlNFwiLFxuXHRcdFx0XCJQYWNpZmljL0t3YWphbGVpbnwrMTEgLTEyICsxMnwtYjAgYzAgLWMwfDAxMnwtQVgwIFc5WDB8MTRlM1wiLFxuXHRcdFx0XCJNRVR8TUVUIE1FU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxNk0wIDFnTU0wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMFwiLFxuXHRcdFx0XCJNU1R8TVNUfDcwfDB8XCIsXG5cdFx0XHRcIk1TVDdNRFR8TVNUIE1EVCBNV1QgTVBUfDcwIDYwIDYwIDYwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDIwIGl4MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIlBhY2lmaWMvQ2hhdGhhbXwrMTIxNSArMTI0NSArMTM0NXwtY2YgLWNKIC1kSnwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LVdxQWYgMWFkZWYgSU0wIDFDMDAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDFxTTAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFpbzAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDB8NjAwXCIsXG5cdFx0XHRcIlBhY2lmaWMvQXBpYXxMTVQgLTExMzAgLTExIC0xMCArMTQgKzEzfGJxLlUgYnUgYjAgYTAgLWUwIC1kMHwwMTIzMjM0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMm5ETXguNCAxeVcwMy40IDJyUmJ1IDFmZjAgMWEwMCBDSTAgQVEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwfDM3ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9Cb3VnYWludmlsbGV8KzEwICswOSArMTF8LWEwIC05MCAtYjB8MDEwMnwtMTZXeTAgN0NOMCAyTVFwMHwxOGU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvRWZhdGV8TE1UICsxMSArMTJ8LWJkLmcgLWIwIC1jMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybDluZC5nIDJTemNkLmcgMWNMMCAxb04wIDEwTDAgMWZCMCAxOVgwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCBMejAgMU5kMCBBbjB8NjZlM1wiLFxuXHRcdFx0XCJQYWNpZmljL0VuZGVyYnVyeXwtMTIgLTExICsxM3xjMCBiMCAtZDB8MDEyfG5JYzAgQjdYMHwxXCIsXG5cdFx0XHRcIlBhY2lmaWMvRmFrYW9mb3wtMTEgKzEzfGIwIC1kMHwwMXwxR2ZuMHw0ODNcIixcblx0XHRcdFwiUGFjaWZpYy9GaWppfExNVCArMTIgKzEzfC1iVC5JIC1jMCAtZDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmJVelQuSSAzbThOVC5JIExBMCAxRU0wIElNMCBuSmMwIExBMCAxbzAwIFJjMCAxd28wIEFvMCAxTmMwIEFvMCAxUTAwIHh6MCAxU04wIHVNMCAxU00wIHVNMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHVNMCAxU00wIHVNMCAxU00wIHVNMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHMwMCAxVkEwIHVNMCAxU00wIHVNMCAxU00wIHVNMHw4OGU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvR2FsYXBhZ29zfExNVCAtMDUgLTA2fDVXLm8gNTAgNjB8MDEyMTJ8LTF5VlMxLkEgMmRUejEuQSBnTmQwIHJ6MHwyNWUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvR2FtYmllcnxMTVQgLTA5fDhYLk0gOTB8MDF8LTJqb2YwLmN8MTI1XCIsXG5cdFx0XHRcIlBhY2lmaWMvR3VhZGFsY2FuYWx8TE1UICsxMXwtYUQuTSAtYjB8MDF8LTJqb3lELk18MTFlNFwiLFxuXHRcdFx0XCJQYWNpZmljL0d1YW18R1NUIENoU1R8LWEwIC1hMHwwMXwxZnBxMHwxN2U0XCIsXG5cdFx0XHRcIlBhY2lmaWMvSG9ub2x1bHV8SFNUIEhEVCBIU1R8YXUgOXUgYTB8MDEwMTAyfC0xdGhMdSA4eDAgbGVmMCA4UHowIDQ2cDB8MzdlNFwiLFxuXHRcdFx0XCJQYWNpZmljL0tpcml0aW1hdGl8LTEwNDAgLTEwICsxNHxhRSBhMCAtZTB8MDEyfG5JYUUgQjdYa3w1MWUyXCIsXG5cdFx0XHRcIlBhY2lmaWMvS29zcmFlfCsxMSArMTJ8LWIwIC1jMHwwMTB8LUFYMCAxYmR6MHw2NmUyXCIsXG5cdFx0XHRcIlBhY2lmaWMvTWFqdXJvfCsxMSArMTJ8LWIwIC1jMHwwMXwtQVgwfDI4ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9NYXJxdWVzYXN8TE1UIC0wOTMwfDlpIDl1fDAxfC0yam9lR3w4NmUyXCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFnb19QYWdvfExNVCBTU1R8Ym0uTSBiMHwwMXwtMm5ETUIuY3wzN2UyXCIsXG5cdFx0XHRcIlBhY2lmaWMvTmF1cnV8TE1UICsxMTMwICswOSArMTJ8LWI3LkUgLWJ1IC05MCAtYzB8MDEyMTN8LTFYZG43LkUgUHZ6Qi5FIDVSQ3UgMW91SnV8MTBlM1wiLFxuXHRcdFx0XCJQYWNpZmljL05pdWV8LTExMjAgLTExMzAgLTExfGJrIGJ1IGIwfDAxMnwtS2ZNRSAxN3kwYXwxMmUyXCIsXG5cdFx0XHRcIlBhY2lmaWMvTm9yZm9sa3wrMTExMiArMTEzMCArMTIzMCArMTF8LWJjIC1idSAtY3UgLWIwfDAxMjEzfC1LZ2JjIFcwMUcgT24wIDFDT3AwfDI1ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9Ob3VtZWF8TE1UICsxMSArMTJ8LWI1Lk0gLWIwIC1jMHwwMTIxMjEyMXwtMmw5bjUuTSAyRXFNNS5NIHhYMCAxUEIwIHluMCBIZVAwIEFvMHw5OGUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvUGl0Y2Fpcm58LTA4MzAgLTA4fDh1IDgwfDAxfDE4Vmt1fDU2XCIsXG5cdFx0XHRcIlBhY2lmaWMvUmFyb3RvbmdhfC0xMDMwIC0wOTMwIC0xMHxhdSA5dSBhMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8bHlXdSBJTDAgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnV8MTNlM1wiLFxuXHRcdFx0XCJQYWNpZmljL1RhaGl0aXxMTVQgLTEwfDlXLmcgYTB8MDF8LTJqb2UxLkl8MThlNFwiLFxuXHRcdFx0XCJQYWNpZmljL1RvbmdhdGFwdXwrMTIyMCArMTMgKzE0fC1jayAtZDAgLWUwfDAxMjEyMTIxMjF8LTFhQjBrIDJuNWRrIDE1QTAgMXdvMCB4ejAgMVExMCB4ejAgeldOMCBzMDB8NzVlM1wiLFxuXHRcdFx0XCJQU1Q4UERUfFBTVCBQRFQgUFdUIFBQVHw4MCA3MCA3MCA3MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXEwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgxMCBpeTAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJXRVR8V0VUIFdFU1R8MCAtMTB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfGhEQjAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwXCJcblx0XHRdLFxuXHRcdFwibGlua3NcIjogW1xuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvQmFtYWtvXCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9CYW5qdWxcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0NvbmFrcnlcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0Rha2FyXCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9GcmVldG93blwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvTG9tZVwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvTm91YWtjaG90dFwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvT3VhZ2Fkb3Vnb3VcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL1RpbWJ1a3R1XCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEF0bGFudGljL1N0X0hlbGVuYVwiLFxuXHRcdFx0XCJBZnJpY2EvQ2Fpcm98RWd5cHRcIixcblx0XHRcdFwiQWZyaWNhL0pvaGFubmVzYnVyZ3xBZnJpY2EvTWFzZXJ1XCIsXG5cdFx0XHRcIkFmcmljYS9Kb2hhbm5lc2J1cmd8QWZyaWNhL01iYWJhbmVcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9CYW5ndWlcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9CcmF6emF2aWxsZVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0RvdWFsYVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0tpbnNoYXNhXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvTGlicmV2aWxsZVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0x1YW5kYVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL01hbGFib1wiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL05pYW1leVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL1BvcnRvLU5vdm9cIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvQmxhbnR5cmVcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvQnVqdW1idXJhXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0dhYm9yb25lXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0hhcmFyZVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9LaWdhbGlcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvTHVidW1iYXNoaVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9MdXNha2FcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL0FkZGlzX0FiYWJhXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9Bc21hcmFcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL0FzbWVyYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvRGFyX2VzX1NhbGFhbVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvRGppYm91dGlcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL0thbXBhbGFcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL01vZ2FkaXNodVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxJbmRpYW4vQW50YW5hbmFyaXZvXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEluZGlhbi9Db21vcm9cIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8SW5kaWFuL01heW90dGVcIixcblx0XHRcdFwiQWZyaWNhL1RyaXBvbGl8TGlieWFcIixcblx0XHRcdFwiQW1lcmljYS9BZGFrfEFtZXJpY2EvQXRrYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FkYWt8VVMvQWxldXRpYW5cIixcblx0XHRcdFwiQW1lcmljYS9BbmNob3JhZ2V8VVMvQWxhc2thXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0J1ZW5vc19BaXJlc3xBbWVyaWNhL0J1ZW5vc19BaXJlc1wiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9DYXRhbWFyY2F8QW1lcmljYS9BcmdlbnRpbmEvQ29tb2RSaXZhZGF2aWFcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ2F0YW1hcmNhfEFtZXJpY2EvQ2F0YW1hcmNhXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NvcmRvYmF8QW1lcmljYS9Db3Jkb2JhXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NvcmRvYmF8QW1lcmljYS9Sb3NhcmlvXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0p1anV5fEFtZXJpY2EvSnVqdXlcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvTWVuZG96YXxBbWVyaWNhL01lbmRvemFcIixcblx0XHRcdFwiQW1lcmljYS9BdGlrb2thbnxBbWVyaWNhL0NvcmFsX0hhcmJvdXJcIixcblx0XHRcdFwiQW1lcmljYS9DaGljYWdvfFVTL0NlbnRyYWxcIixcblx0XHRcdFwiQW1lcmljYS9DdXJhY2FvfEFtZXJpY2EvQXJ1YmFcIixcblx0XHRcdFwiQW1lcmljYS9DdXJhY2FvfEFtZXJpY2EvS3JhbGVuZGlqa1wiLFxuXHRcdFx0XCJBbWVyaWNhL0N1cmFjYW98QW1lcmljYS9Mb3dlcl9QcmluY2VzXCIsXG5cdFx0XHRcIkFtZXJpY2EvRGVudmVyfEFtZXJpY2EvU2hpcHJvY2tcIixcblx0XHRcdFwiQW1lcmljYS9EZW52ZXJ8TmF2YWpvXCIsXG5cdFx0XHRcIkFtZXJpY2EvRGVudmVyfFVTL01vdW50YWluXCIsXG5cdFx0XHRcIkFtZXJpY2EvRGV0cm9pdHxVUy9NaWNoaWdhblwiLFxuXHRcdFx0XCJBbWVyaWNhL0VkbW9udG9ufENhbmFkYS9Nb3VudGFpblwiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfV2F5bmV8QW1lcmljYS9JbmRpYW5hL0luZGlhbmFwb2xpc1wiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfV2F5bmV8QW1lcmljYS9JbmRpYW5hcG9saXNcIixcblx0XHRcdFwiQW1lcmljYS9Gb3J0X1dheW5lfFVTL0Vhc3QtSW5kaWFuYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0hhbGlmYXh8Q2FuYWRhL0F0bGFudGljXCIsXG5cdFx0XHRcIkFtZXJpY2EvSGF2YW5hfEN1YmFcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL0tub3h8QW1lcmljYS9Lbm94X0lOXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9Lbm94fFVTL0luZGlhbmEtU3RhcmtlXCIsXG5cdFx0XHRcIkFtZXJpY2EvSmFtYWljYXxKYW1haWNhXCIsXG5cdFx0XHRcIkFtZXJpY2EvS2VudHVja3kvTG91aXN2aWxsZXxBbWVyaWNhL0xvdWlzdmlsbGVcIixcblx0XHRcdFwiQW1lcmljYS9Mb3NfQW5nZWxlc3xVUy9QYWNpZmljXCIsXG5cdFx0XHRcIkFtZXJpY2EvTG9zX0FuZ2VsZXN8VVMvUGFjaWZpYy1OZXdcIixcblx0XHRcdFwiQW1lcmljYS9NYW5hdXN8QnJhemlsL1dlc3RcIixcblx0XHRcdFwiQW1lcmljYS9NYXphdGxhbnxNZXhpY28vQmFqYVN1clwiLFxuXHRcdFx0XCJBbWVyaWNhL01leGljb19DaXR5fE1leGljby9HZW5lcmFsXCIsXG5cdFx0XHRcIkFtZXJpY2EvTmV3X1lvcmt8VVMvRWFzdGVyblwiLFxuXHRcdFx0XCJBbWVyaWNhL05vcm9uaGF8QnJhemlsL0RlTm9yb25oYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BhbmFtYXxBbWVyaWNhL0NheW1hblwiLFxuXHRcdFx0XCJBbWVyaWNhL1Bob2VuaXh8VVMvQXJpem9uYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9Bbmd1aWxsYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9BbnRpZ3VhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL0RvbWluaWNhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL0dyZW5hZGFcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvR3VhZGVsb3VwZVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9NYXJpZ290XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL01vbnRzZXJyYXRcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvU3RfQmFydGhlbGVteVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9LaXR0c1wiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9MdWNpYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9UaG9tYXNcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvU3RfVmluY2VudFwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9Ub3J0b2xhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1ZpcmdpblwiLFxuXHRcdFx0XCJBbWVyaWNhL1JlZ2luYXxDYW5hZGEvU2Fza2F0Y2hld2FuXCIsXG5cdFx0XHRcIkFtZXJpY2EvUmlvX0JyYW5jb3xBbWVyaWNhL1BvcnRvX0FjcmVcIixcblx0XHRcdFwiQW1lcmljYS9SaW9fQnJhbmNvfEJyYXppbC9BY3JlXCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FudGlhZ298Q2hpbGUvQ29udGluZW50YWxcIixcblx0XHRcdFwiQW1lcmljYS9TYW9fUGF1bG98QnJhemlsL0Vhc3RcIixcblx0XHRcdFwiQW1lcmljYS9TdF9Kb2huc3xDYW5hZGEvTmV3Zm91bmRsYW5kXCIsXG5cdFx0XHRcIkFtZXJpY2EvVGlqdWFuYXxBbWVyaWNhL0Vuc2VuYWRhXCIsXG5cdFx0XHRcIkFtZXJpY2EvVGlqdWFuYXxBbWVyaWNhL1NhbnRhX0lzYWJlbFwiLFxuXHRcdFx0XCJBbWVyaWNhL1RpanVhbmF8TWV4aWNvL0JhamFOb3J0ZVwiLFxuXHRcdFx0XCJBbWVyaWNhL1Rvcm9udG98QW1lcmljYS9Nb250cmVhbFwiLFxuXHRcdFx0XCJBbWVyaWNhL1Rvcm9udG98Q2FuYWRhL0Vhc3Rlcm5cIixcblx0XHRcdFwiQW1lcmljYS9WYW5jb3V2ZXJ8Q2FuYWRhL1BhY2lmaWNcIixcblx0XHRcdFwiQW1lcmljYS9XaGl0ZWhvcnNlfENhbmFkYS9ZdWtvblwiLFxuXHRcdFx0XCJBbWVyaWNhL1dpbm5pcGVnfENhbmFkYS9DZW50cmFsXCIsXG5cdFx0XHRcIkFzaWEvQXNoZ2FiYXR8QXNpYS9Bc2hraGFiYWRcIixcblx0XHRcdFwiQXNpYS9CYW5na29rfEFzaWEvUGhub21fUGVuaFwiLFxuXHRcdFx0XCJBc2lhL0Jhbmdrb2t8QXNpYS9WaWVudGlhbmVcIixcblx0XHRcdFwiQXNpYS9EaGFrYXxBc2lhL0RhY2NhXCIsXG5cdFx0XHRcIkFzaWEvRHViYWl8QXNpYS9NdXNjYXRcIixcblx0XHRcdFwiQXNpYS9Ib19DaGlfTWluaHxBc2lhL1NhaWdvblwiLFxuXHRcdFx0XCJBc2lhL0hvbmdfS29uZ3xIb25na29uZ1wiLFxuXHRcdFx0XCJBc2lhL0plcnVzYWxlbXxBc2lhL1RlbF9Bdml2XCIsXG5cdFx0XHRcIkFzaWEvSmVydXNhbGVtfElzcmFlbFwiLFxuXHRcdFx0XCJBc2lhL0thdGhtYW5kdXxBc2lhL0thdG1hbmR1XCIsXG5cdFx0XHRcIkFzaWEvS29sa2F0YXxBc2lhL0NhbGN1dHRhXCIsXG5cdFx0XHRcIkFzaWEvS3VhbGFfTHVtcHVyfEFzaWEvU2luZ2Fwb3JlXCIsXG5cdFx0XHRcIkFzaWEvS3VhbGFfTHVtcHVyfFNpbmdhcG9yZVwiLFxuXHRcdFx0XCJBc2lhL01hY2F1fEFzaWEvTWFjYW9cIixcblx0XHRcdFwiQXNpYS9NYWthc3NhcnxBc2lhL1VqdW5nX1BhbmRhbmdcIixcblx0XHRcdFwiQXNpYS9OaWNvc2lhfEV1cm9wZS9OaWNvc2lhXCIsXG5cdFx0XHRcIkFzaWEvUWF0YXJ8QXNpYS9CYWhyYWluXCIsXG5cdFx0XHRcIkFzaWEvUmFuZ29vbnxBc2lhL1lhbmdvblwiLFxuXHRcdFx0XCJBc2lhL1JpeWFkaHxBc2lhL0FkZW5cIixcblx0XHRcdFwiQXNpYS9SaXlhZGh8QXNpYS9LdXdhaXRcIixcblx0XHRcdFwiQXNpYS9TZW91bHxST0tcIixcblx0XHRcdFwiQXNpYS9TaGFuZ2hhaXxBc2lhL0Nob25ncWluZ1wiLFxuXHRcdFx0XCJBc2lhL1NoYW5naGFpfEFzaWEvQ2h1bmdraW5nXCIsXG5cdFx0XHRcIkFzaWEvU2hhbmdoYWl8QXNpYS9IYXJiaW5cIixcblx0XHRcdFwiQXNpYS9TaGFuZ2hhaXxQUkNcIixcblx0XHRcdFwiQXNpYS9UYWlwZWl8Uk9DXCIsXG5cdFx0XHRcIkFzaWEvVGVocmFufElyYW5cIixcblx0XHRcdFwiQXNpYS9UaGltcGh1fEFzaWEvVGhpbWJ1XCIsXG5cdFx0XHRcIkFzaWEvVG9reW98SmFwYW5cIixcblx0XHRcdFwiQXNpYS9VbGFhbmJhYXRhcnxBc2lhL1VsYW5fQmF0b3JcIixcblx0XHRcdFwiQXNpYS9VcnVtcWl8QXNpYS9LYXNoZ2FyXCIsXG5cdFx0XHRcIkF0bGFudGljL0Zhcm9lfEF0bGFudGljL0ZhZXJvZVwiLFxuXHRcdFx0XCJBdGxhbnRpYy9SZXlramF2aWt8SWNlbGFuZFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9Tb3V0aF9HZW9yZ2lhfEV0Yy9HTVQrMlwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQWRlbGFpZGV8QXVzdHJhbGlhL1NvdXRoXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9CcmlzYmFuZXxBdXN0cmFsaWEvUXVlZW5zbGFuZFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQnJva2VuX0hpbGx8QXVzdHJhbGlhL1lhbmNvd2lubmFcIixcblx0XHRcdFwiQXVzdHJhbGlhL0RhcndpbnxBdXN0cmFsaWEvTm9ydGhcIixcblx0XHRcdFwiQXVzdHJhbGlhL0hvYmFydHxBdXN0cmFsaWEvVGFzbWFuaWFcIixcblx0XHRcdFwiQXVzdHJhbGlhL0xvcmRfSG93ZXxBdXN0cmFsaWEvTEhJXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9NZWxib3VybmV8QXVzdHJhbGlhL1ZpY3RvcmlhXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9QZXJ0aHxBdXN0cmFsaWEvV2VzdFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvU3lkbmV5fEF1c3RyYWxpYS9BQ1RcIixcblx0XHRcdFwiQXVzdHJhbGlhL1N5ZG5leXxBdXN0cmFsaWEvQ2FuYmVycmFcIixcblx0XHRcdFwiQXVzdHJhbGlhL1N5ZG5leXxBdXN0cmFsaWEvTlNXXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxFdGMvR01UXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxFdGMvR01UKzBcIixcblx0XHRcdFwiRXRjL0dNVC0wfEV0Yy9HTVQwXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxFdGMvR3JlZW53aWNoXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHTVRcIixcblx0XHRcdFwiRXRjL0dNVC0wfEdNVCswXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHTVQtMFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8R01UMFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8R3JlZW53aWNoXCIsXG5cdFx0XHRcIkV0Yy9VQ1R8VUNUXCIsXG5cdFx0XHRcIkV0Yy9VVEN8RXRjL1VuaXZlcnNhbFwiLFxuXHRcdFx0XCJFdGMvVVRDfEV0Yy9adWx1XCIsXG5cdFx0XHRcIkV0Yy9VVEN8VVRDXCIsXG5cdFx0XHRcIkV0Yy9VVEN8VW5pdmVyc2FsXCIsXG5cdFx0XHRcIkV0Yy9VVEN8WnVsdVwiLFxuXHRcdFx0XCJFdXJvcGUvQmVsZ3JhZGV8RXVyb3BlL0xqdWJsamFuYVwiLFxuXHRcdFx0XCJFdXJvcGUvQmVsZ3JhZGV8RXVyb3BlL1BvZGdvcmljYVwiLFxuXHRcdFx0XCJFdXJvcGUvQmVsZ3JhZGV8RXVyb3BlL1NhcmFqZXZvXCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvU2tvcGplXCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvWmFncmViXCIsXG5cdFx0XHRcIkV1cm9wZS9DaGlzaW5hdXxFdXJvcGUvVGlyYXNwb2xcIixcblx0XHRcdFwiRXVyb3BlL0R1YmxpbnxFaXJlXCIsXG5cdFx0XHRcIkV1cm9wZS9IZWxzaW5raXxFdXJvcGUvTWFyaWVoYW1uXCIsXG5cdFx0XHRcIkV1cm9wZS9Jc3RhbmJ1bHxBc2lhL0lzdGFuYnVsXCIsXG5cdFx0XHRcIkV1cm9wZS9Jc3RhbmJ1bHxUdXJrZXlcIixcblx0XHRcdFwiRXVyb3BlL0xpc2JvbnxQb3J0dWdhbFwiLFxuXHRcdFx0XCJFdXJvcGUvTG9uZG9ufEV1cm9wZS9CZWxmYXN0XCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258RXVyb3BlL0d1ZXJuc2V5XCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258RXVyb3BlL0lzbGVfb2ZfTWFuXCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258RXVyb3BlL0plcnNleVwiLFxuXHRcdFx0XCJFdXJvcGUvTG9uZG9ufEdCXCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258R0ItRWlyZVwiLFxuXHRcdFx0XCJFdXJvcGUvTW9zY293fFctU1VcIixcblx0XHRcdFwiRXVyb3BlL09zbG98QXJjdGljL0xvbmd5ZWFyYnllblwiLFxuXHRcdFx0XCJFdXJvcGUvT3Nsb3xBdGxhbnRpYy9KYW5fTWF5ZW5cIixcblx0XHRcdFwiRXVyb3BlL1ByYWd1ZXxFdXJvcGUvQnJhdGlzbGF2YVwiLFxuXHRcdFx0XCJFdXJvcGUvUm9tZXxFdXJvcGUvU2FuX01hcmlub1wiLFxuXHRcdFx0XCJFdXJvcGUvUm9tZXxFdXJvcGUvVmF0aWNhblwiLFxuXHRcdFx0XCJFdXJvcGUvV2Fyc2F3fFBvbGFuZFwiLFxuXHRcdFx0XCJFdXJvcGUvWnVyaWNofEV1cm9wZS9CdXNpbmdlblwiLFxuXHRcdFx0XCJFdXJvcGUvWnVyaWNofEV1cm9wZS9WYWR1elwiLFxuXHRcdFx0XCJJbmRpYW4vQ2hyaXN0bWFzfEV0Yy9HTVQtN1wiLFxuXHRcdFx0XCJQYWNpZmljL0F1Y2tsYW5kfEFudGFyY3RpY2EvTWNNdXJkb1wiLFxuXHRcdFx0XCJQYWNpZmljL0F1Y2tsYW5kfEFudGFyY3RpY2EvU291dGhfUG9sZVwiLFxuXHRcdFx0XCJQYWNpZmljL0F1Y2tsYW5kfE5aXCIsXG5cdFx0XHRcIlBhY2lmaWMvQ2hhdGhhbXxOWi1DSEFUXCIsXG5cdFx0XHRcIlBhY2lmaWMvRWFzdGVyfENoaWxlL0Vhc3RlcklzbGFuZFwiLFxuXHRcdFx0XCJQYWNpZmljL0d1YW18UGFjaWZpYy9TYWlwYW5cIixcblx0XHRcdFwiUGFjaWZpYy9Ib25vbHVsdXxQYWNpZmljL0pvaG5zdG9uXCIsXG5cdFx0XHRcIlBhY2lmaWMvSG9ub2x1bHV8VVMvSGF3YWlpXCIsXG5cdFx0XHRcIlBhY2lmaWMvS3dhamFsZWlufEt3YWphbGVpblwiLFxuXHRcdFx0XCJQYWNpZmljL1BhZ29fUGFnb3xQYWNpZmljL01pZHdheVwiLFxuXHRcdFx0XCJQYWNpZmljL1BhZ29fUGFnb3xQYWNpZmljL1NhbW9hXCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFnb19QYWdvfFVTL1NhbW9hXCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFsYXV8RXRjL0dNVC05XCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9obnBlaXxFdGMvR01ULTExXCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9obnBlaXxQYWNpZmljL1BvbmFwZVwiLFxuXHRcdFx0XCJQYWNpZmljL1BvcnRfTW9yZXNieXxFdGMvR01ULTEwXCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9ydF9Nb3Jlc2J5fFBhY2lmaWMvQ2h1dWtcIixcblx0XHRcdFwiUGFjaWZpYy9Qb3J0X01vcmVzYnl8UGFjaWZpYy9UcnVrXCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9ydF9Nb3Jlc2J5fFBhY2lmaWMvWWFwXCIsXG5cdFx0XHRcIlBhY2lmaWMvVGFyYXdhfEV0Yy9HTVQtMTJcIixcblx0XHRcdFwiUGFjaWZpYy9UYXJhd2F8UGFjaWZpYy9GdW5hZnV0aVwiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXxQYWNpZmljL1dha2VcIixcblx0XHRcdFwiUGFjaWZpYy9UYXJhd2F8UGFjaWZpYy9XYWxsaXNcIlxuXHRcdF1cblx0fSk7XG5cblxuXHRyZXR1cm4gbW9tZW50O1xufSkpOyIsIi8qIVxuICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2My4zLjFcbiAqIGh0dHBzOi8vanF1ZXJ5LmNvbS9cbiAqXG4gKiBJbmNsdWRlcyBTaXp6bGUuanNcbiAqIGh0dHBzOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDE4LTAxLTIwVDE3OjI0WlxuICovXG4oIGZ1bmN0aW9uKCBnbG9iYWwsIGZhY3RvcnkgKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0aWYgKCB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIEZvciBDb21tb25KUyBhbmQgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVudHMgd2hlcmUgYSBwcm9wZXIgYHdpbmRvd2Bcblx0XHQvLyBpcyBwcmVzZW50LCBleGVjdXRlIHRoZSBmYWN0b3J5IGFuZCBnZXQgalF1ZXJ5LlxuXHRcdC8vIEZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhIGB3aW5kb3dgIHdpdGggYSBgZG9jdW1lbnRgXG5cdFx0Ly8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4cG9zZSBhIGZhY3RvcnkgYXMgbW9kdWxlLmV4cG9ydHMuXG5cdFx0Ly8gVGhpcyBhY2NlbnR1YXRlcyB0aGUgbmVlZCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgcmVhbCBgd2luZG93YC5cblx0XHQvLyBlLmcuIHZhciBqUXVlcnkgPSByZXF1aXJlKFwianF1ZXJ5XCIpKHdpbmRvdyk7XG5cdFx0Ly8gU2VlIHRpY2tldCAjMTQ1NDkgZm9yIG1vcmUgaW5mby5cblx0XHRtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5kb2N1bWVudCA/XG5cdFx0XHRmYWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6XG5cdFx0XHRmdW5jdGlvbiggdyApIHtcblx0XHRcdFx0aWYgKCAhdy5kb2N1bWVudCApIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoIFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhY3RvcnkoIHcgKTtcblx0XHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0ZmFjdG9yeSggZ2xvYmFsICk7XG5cdH1cblxuLy8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXRcbn0gKSggdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0aW9uKCB3aW5kb3csIG5vR2xvYmFsICkge1xuXG4vLyBFZGdlIDw9IDEyIC0gMTMrLCBGaXJlZm94IDw9MTggLSA0NSssIElFIDEwIC0gMTEsIFNhZmFyaSA1LjEgLSA5KywgaU9TIDYgLSA5LjFcbi8vIHRocm93IGV4Y2VwdGlvbnMgd2hlbiBub24tc3RyaWN0IGNvZGUgKGUuZy4sIEFTUC5ORVQgNC41KSBhY2Nlc3NlcyBzdHJpY3QgbW9kZVxuLy8gYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIgKHRyYWMtMTMzMzUpLiBCdXQgYXMgb2YgalF1ZXJ5IDMuMCAoMjAxNiksIHN0cmljdCBtb2RlIHNob3VsZCBiZSBjb21tb25cbi8vIGVub3VnaCB0aGF0IGFsbCBzdWNoIGF0dGVtcHRzIGFyZSBndWFyZGVkIGluIGEgdHJ5IGJsb2NrLlxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBhcnIgPSBbXTtcblxudmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuXG52YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG5cbnZhciBzbGljZSA9IGFyci5zbGljZTtcblxudmFyIGNvbmNhdCA9IGFyci5jb25jYXQ7XG5cbnZhciBwdXNoID0gYXJyLnB1c2g7XG5cbnZhciBpbmRleE9mID0gYXJyLmluZGV4T2Y7XG5cbnZhciBjbGFzczJ0eXBlID0ge307XG5cbnZhciB0b1N0cmluZyA9IGNsYXNzMnR5cGUudG9TdHJpbmc7XG5cbnZhciBoYXNPd24gPSBjbGFzczJ0eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgZm5Ub1N0cmluZyA9IGhhc093bi50b1N0cmluZztcblxudmFyIE9iamVjdEZ1bmN0aW9uU3RyaW5nID0gZm5Ub1N0cmluZy5jYWxsKCBPYmplY3QgKTtcblxudmFyIHN1cHBvcnQgPSB7fTtcblxudmFyIGlzRnVuY3Rpb24gPSBmdW5jdGlvbiBpc0Z1bmN0aW9uKCBvYmogKSB7XG5cbiAgICAgIC8vIFN1cHBvcnQ6IENocm9tZSA8PTU3LCBGaXJlZm94IDw9NTJcbiAgICAgIC8vIEluIHNvbWUgYnJvd3NlcnMsIHR5cGVvZiByZXR1cm5zIFwiZnVuY3Rpb25cIiBmb3IgSFRNTCA8b2JqZWN0PiBlbGVtZW50c1xuICAgICAgLy8gKGkuZS4sIGB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJvYmplY3RcIiApID09PSBcImZ1bmN0aW9uXCJgKS5cbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY2xhc3NpZnkgKmFueSogRE9NIG5vZGUgYXMgYSBmdW5jdGlvbi5cbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIG9iai5ub2RlVHlwZSAhPT0gXCJudW1iZXJcIjtcbiAgfTtcblxuXG52YXIgaXNXaW5kb3cgPSBmdW5jdGlvbiBpc1dpbmRvdyggb2JqICkge1xuXHRcdHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7XG5cdH07XG5cblxuXG5cblx0dmFyIHByZXNlcnZlZFNjcmlwdEF0dHJpYnV0ZXMgPSB7XG5cdFx0dHlwZTogdHJ1ZSxcblx0XHRzcmM6IHRydWUsXG5cdFx0bm9Nb2R1bGU6IHRydWVcblx0fTtcblxuXHRmdW5jdGlvbiBET01FdmFsKCBjb2RlLCBkb2MsIG5vZGUgKSB7XG5cdFx0ZG9jID0gZG9jIHx8IGRvY3VtZW50O1xuXG5cdFx0dmFyIGksXG5cdFx0XHRzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCggXCJzY3JpcHRcIiApO1xuXG5cdFx0c2NyaXB0LnRleHQgPSBjb2RlO1xuXHRcdGlmICggbm9kZSApIHtcblx0XHRcdGZvciAoIGkgaW4gcHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyApIHtcblx0XHRcdFx0aWYgKCBub2RlWyBpIF0gKSB7XG5cdFx0XHRcdFx0c2NyaXB0WyBpIF0gPSBub2RlWyBpIF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZG9jLmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdCApLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHNjcmlwdCApO1xuXHR9XG5cblxuZnVuY3Rpb24gdG9UeXBlKCBvYmogKSB7XG5cdGlmICggb2JqID09IG51bGwgKSB7XG5cdFx0cmV0dXJuIG9iaiArIFwiXCI7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cClcblx0cmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiID9cblx0XHRjbGFzczJ0eXBlWyB0b1N0cmluZy5jYWxsKCBvYmogKSBdIHx8IFwib2JqZWN0XCIgOlxuXHRcdHR5cGVvZiBvYmo7XG59XG4vKiBnbG9iYWwgU3ltYm9sICovXG4vLyBEZWZpbmluZyB0aGlzIGdsb2JhbCBpbiAuZXNsaW50cmMuanNvbiB3b3VsZCBjcmVhdGUgYSBkYW5nZXIgb2YgdXNpbmcgdGhlIGdsb2JhbFxuLy8gdW5ndWFyZGVkIGluIGFub3RoZXIgcGxhY2UsIGl0IHNlZW1zIHNhZmVyIHRvIGRlZmluZSBnbG9iYWwgb25seSBmb3IgdGhpcyBtb2R1bGVcblxuXG5cbnZhclxuXHR2ZXJzaW9uID0gXCIzLjMuMVwiLFxuXG5cdC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5XG5cdGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblxuXHRcdC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3RydWN0b3IgJ2VuaGFuY2VkJ1xuXHRcdC8vIE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBpZiBub3QgaW5jbHVkZWQpXG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQXG5cdHJ0cmltID0gL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nO1xuXG5qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0ge1xuXG5cdC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWRcblx0anF1ZXJ5OiB2ZXJzaW9uLFxuXG5cdGNvbnN0cnVjdG9yOiBqUXVlcnksXG5cblx0Ly8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwXG5cdGxlbmd0aDogMCxcblxuXHR0b0FycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIEdldCB0aGUgTnRoIGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1Jcblx0Ly8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXlcblx0Z2V0OiBmdW5jdGlvbiggbnVtICkge1xuXG5cdFx0Ly8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheVxuXHRcdGlmICggbnVtID09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXRcblx0XHRyZXR1cm4gbnVtIDwgMCA/IHRoaXNbIG51bSArIHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXTtcblx0fSxcblxuXHQvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrXG5cdC8vIChyZXR1cm5pbmcgdGhlIG5ldyBtYXRjaGVkIGVsZW1lbnQgc2V0KVxuXHRwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblxuXHRcdC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVkIGVsZW1lbnQgc2V0XG5cdFx0dmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApO1xuXG5cdFx0Ly8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5jZSlcblx0XHRyZXQucHJldk9iamVjdCA9IHRoaXM7XG5cblx0XHQvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNldFxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0Ly8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC5cblx0ZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2sgKTtcblx0fSxcblxuXHRtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tYXAoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTtcblx0XHR9ICkgKTtcblx0fSxcblxuXHRzbGljZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTtcblx0fSxcblxuXHRmaXJzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIDAgKTtcblx0fSxcblxuXHRsYXN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggLTEgKTtcblx0fSxcblxuXHRlcTogZnVuY3Rpb24oIGkgKSB7XG5cdFx0dmFyIGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0aiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVuID8gWyB0aGlzWyBqIF0gXSA6IFtdICk7XG5cdH0sXG5cblx0ZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTtcblx0fSxcblxuXHQvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuXG5cdC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLlxuXHRwdXNoOiBwdXNoLFxuXHRzb3J0OiBhcnIuc29ydCxcblx0c3BsaWNlOiBhcnIuc3BsaWNlXG59O1xuXG5qUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsXG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyAwIF0gfHwge30sXG5cdFx0aSA9IDEsXG5cdFx0bGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRkZWVwID0gZmFsc2U7XG5cblx0Ly8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvblxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGRlZXAgPSB0YXJnZXQ7XG5cblx0XHQvLyBTa2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307XG5cdFx0aSsrO1xuXHR9XG5cblx0Ly8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpXG5cdGlmICggdHlwZW9mIHRhcmdldCAhPT0gXCJvYmplY3RcIiAmJiAhaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHQvLyBFeHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWRcblx0aWYgKCBpID09PSBsZW5ndGggKSB7XG5cdFx0dGFyZ2V0ID0gdGhpcztcblx0XHRpLS07XG5cdH1cblxuXHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblxuXHRcdC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXNcblx0XHRpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHtcblxuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdFx0XHRzcmMgPSB0YXJnZXRbIG5hbWUgXTtcblx0XHRcdFx0Y29weSA9IG9wdGlvbnNbIG5hbWUgXTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICggdGFyZ2V0ID09PSBjb3B5ICkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzXG5cdFx0XHRcdGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fFxuXHRcdFx0XHRcdCggY29weUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCBjb3B5ICkgKSApICkge1xuXG5cdFx0XHRcdFx0aWYgKCBjb3B5SXNBcnJheSApIHtcblx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHNyYyAmJiBBcnJheS5pc0FycmF5KCBzcmMgKSA/IHNyYyA6IFtdO1xuXG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBzcmMgKSA/IHNyYyA6IHt9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTtcblxuXHRcdFx0XHQvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzXG5cdFx0XHRcdH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGNvcHk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdFxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZVxuXHRleHBhbmRvOiBcImpRdWVyeVwiICsgKCB2ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cXEQvZywgXCJcIiApLFxuXG5cdC8vIEFzc3VtZSBqUXVlcnkgaXMgcmVhZHkgd2l0aG91dCB0aGUgcmVhZHkgbW9kdWxlXG5cdGlzUmVhZHk6IHRydWUsXG5cblx0ZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCBtc2cgKTtcblx0fSxcblxuXHRub29wOiBmdW5jdGlvbigpIHt9LFxuXG5cdGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIHByb3RvLCBDdG9yO1xuXG5cdFx0Ly8gRGV0ZWN0IG9idmlvdXMgbmVnYXRpdmVzXG5cdFx0Ly8gVXNlIHRvU3RyaW5nIGluc3RlYWQgb2YgalF1ZXJ5LnR5cGUgdG8gY2F0Y2ggaG9zdCBvYmplY3RzXG5cdFx0aWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNhbGwoIG9iaiApICE9PSBcIltvYmplY3QgT2JqZWN0XVwiICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHByb3RvID0gZ2V0UHJvdG8oIG9iaiApO1xuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIG5vIHByb3RvdHlwZSAoZS5nLiwgYE9iamVjdC5jcmVhdGUoIG51bGwgKWApIGFyZSBwbGFpblxuXHRcdGlmICggIXByb3RvICkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkgd2VyZSBjb25zdHJ1Y3RlZCBieSBhIGdsb2JhbCBPYmplY3QgZnVuY3Rpb25cblx0XHRDdG9yID0gaGFzT3duLmNhbGwoIHByb3RvLCBcImNvbnN0cnVjdG9yXCIgKSAmJiBwcm90by5jb25zdHJ1Y3Rvcjtcblx0XHRyZXR1cm4gdHlwZW9mIEN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBmblRvU3RyaW5nLmNhbGwoIEN0b3IgKSA9PT0gT2JqZWN0RnVuY3Rpb25TdHJpbmc7XG5cdH0sXG5cblx0aXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHtcblxuXHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5cdFx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lzc3Vlcy82MTI1XG5cdFx0dmFyIG5hbWU7XG5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Ly8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEgZ2xvYmFsIGNvbnRleHRcblx0Z2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUgKSB7XG5cdFx0RE9NRXZhbCggY29kZSApO1xuXHR9LFxuXG5cdGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrICkge1xuXHRcdHZhciBsZW5ndGgsIGkgPSAwO1xuXG5cdFx0aWYgKCBpc0FycmF5TGlrZSggb2JqICkgKSB7XG5cdFx0XHRsZW5ndGggPSBvYmoubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gb2JqICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvYmo7XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5XG5cdHRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdHJldHVybiB0ZXh0ID09IG51bGwgP1xuXHRcdFx0XCJcIiA6XG5cdFx0XHQoIHRleHQgKyBcIlwiICkucmVwbGFjZSggcnRyaW0sIFwiXCIgKTtcblx0fSxcblxuXHQvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1ha2VBcnJheTogZnVuY3Rpb24oIGFyciwgcmVzdWx0cyApIHtcblx0XHR2YXIgcmV0ID0gcmVzdWx0cyB8fCBbXTtcblxuXHRcdGlmICggYXJyICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGlzQXJyYXlMaWtlKCBPYmplY3QoIGFyciApICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggcmV0LFxuXHRcdFx0XHRcdHR5cGVvZiBhcnIgPT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdFsgYXJyIF0gOiBhcnJcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guY2FsbCggcmV0LCBhcnIgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdGluQXJyYXk6IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7XG5cdFx0cmV0dXJuIGFyciA9PSBudWxsID8gLTEgOiBpbmRleE9mLmNhbGwoIGFyciwgZWxlbSwgaSApO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdG1lcmdlOiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHtcblx0XHR2YXIgbGVuID0gK3NlY29uZC5sZW5ndGgsXG5cdFx0XHRqID0gMCxcblx0XHRcdGkgPSBmaXJzdC5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGogPCBsZW47IGorKyApIHtcblx0XHRcdGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaiBdO1xuXHRcdH1cblxuXHRcdGZpcnN0Lmxlbmd0aCA9IGk7XG5cblx0XHRyZXR1cm4gZmlyc3Q7XG5cdH0sXG5cblx0Z3JlcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkge1xuXHRcdHZhciBjYWxsYmFja0ludmVyc2UsXG5cdFx0XHRtYXRjaGVzID0gW10sXG5cdFx0XHRpID0gMCxcblx0XHRcdGxlbmd0aCA9IGVsZW1zLmxlbmd0aCxcblx0XHRcdGNhbGxiYWNrRXhwZWN0ID0gIWludmVydDtcblxuXHRcdC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXNcblx0XHQvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvblxuXHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0Y2FsbGJhY2tJbnZlcnNlID0gIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICk7XG5cdFx0XHRpZiAoIGNhbGxiYWNrSW52ZXJzZSAhPT0gY2FsbGJhY2tFeHBlY3QgKSB7XG5cdFx0XHRcdG1hdGNoZXMucHVzaCggZWxlbXNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBtYXRjaGVzO1xuXHR9LFxuXG5cdC8vIGFyZyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGFyZyApIHtcblx0XHR2YXIgbGVuZ3RoLCB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0cmV0ID0gW107XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3IHZhbHVlc1xuXHRcdGlmICggaXNBcnJheUxpa2UoIGVsZW1zICkgKSB7XG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGg7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0aGUgb2JqZWN0LFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKCBpIGluIGVsZW1zICkge1xuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTtcblxuXHRcdFx0XHRpZiAoIHZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0LnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzXG5cdFx0cmV0dXJuIGNvbmNhdC5hcHBseSggW10sIHJldCApO1xuXHR9LFxuXG5cdC8vIEEgZ2xvYmFsIEdVSUQgY291bnRlciBmb3Igb2JqZWN0c1xuXHRndWlkOiAxLFxuXG5cdC8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVpclxuXHQvLyBwcm9wZXJ0aWVzIHRvIGl0IHNvIGl0IG5lZWRzIHRvIGV4aXN0LlxuXHRzdXBwb3J0OiBzdXBwb3J0XG59ICk7XG5cbmlmICggdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICkge1xuXHRqUXVlcnkuZm5bIFN5bWJvbC5pdGVyYXRvciBdID0gYXJyWyBTeW1ib2wuaXRlcmF0b3IgXTtcbn1cblxuLy8gUG9wdWxhdGUgdGhlIGNsYXNzMnR5cGUgbWFwXG5qUXVlcnkuZWFjaCggXCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbFwiLnNwbGl0KCBcIiBcIiApLFxuZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdGNsYXNzMnR5cGVbIFwiW29iamVjdCBcIiArIG5hbWUgKyBcIl1cIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xufSApO1xuXG5mdW5jdGlvbiBpc0FycmF5TGlrZSggb2JqICkge1xuXG5cdC8vIFN1cHBvcnQ6IHJlYWwgaU9TIDguMiBvbmx5IChub3QgcmVwcm9kdWNpYmxlIGluIHNpbXVsYXRvcilcblx0Ly8gYGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0yMTQ1KVxuXHQvLyBoYXNPd24gaXNuJ3QgdXNlZCBoZXJlIGR1ZSB0byBmYWxzZSBuZWdhdGl2ZXNcblx0Ly8gcmVnYXJkaW5nIE5vZGVsaXN0IGxlbmd0aCBpbiBJRVxuXHR2YXIgbGVuZ3RoID0gISFvYmogJiYgXCJsZW5ndGhcIiBpbiBvYmogJiYgb2JqLmxlbmd0aCxcblx0XHR0eXBlID0gdG9UeXBlKCBvYmogKTtcblxuXHRpZiAoIGlzRnVuY3Rpb24oIG9iaiApIHx8IGlzV2luZG93KCBvYmogKSApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRyZXR1cm4gdHlwZSA9PT0gXCJhcnJheVwiIHx8IGxlbmd0aCA9PT0gMCB8fFxuXHRcdHR5cGVvZiBsZW5ndGggPT09IFwibnVtYmVyXCIgJiYgbGVuZ3RoID4gMCAmJiAoIGxlbmd0aCAtIDEgKSBpbiBvYmo7XG59XG52YXIgU2l6emxlID1cbi8qIVxuICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUgdjIuMy4zXG4gKiBodHRwczovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKlxuICogRGF0ZTogMjAxNi0wOC0wOFxuICovXG4oZnVuY3Rpb24oIHdpbmRvdyApIHtcblxudmFyIGksXG5cdHN1cHBvcnQsXG5cdEV4cHIsXG5cdGdldFRleHQsXG5cdGlzWE1MLFxuXHR0b2tlbml6ZSxcblx0Y29tcGlsZSxcblx0c2VsZWN0LFxuXHRvdXRlcm1vc3RDb250ZXh0LFxuXHRzb3J0SW5wdXQsXG5cdGhhc0R1cGxpY2F0ZSxcblxuXHQvLyBMb2NhbCBkb2N1bWVudCB2YXJzXG5cdHNldERvY3VtZW50LFxuXHRkb2N1bWVudCxcblx0ZG9jRWxlbSxcblx0ZG9jdW1lbnRJc0hUTUwsXG5cdHJidWdneVFTQSxcblx0cmJ1Z2d5TWF0Y2hlcyxcblx0bWF0Y2hlcyxcblx0Y29udGFpbnMsXG5cblx0Ly8gSW5zdGFuY2Utc3BlY2lmaWMgZGF0YVxuXHRleHBhbmRvID0gXCJzaXp6bGVcIiArIDEgKiBuZXcgRGF0ZSgpLFxuXHRwcmVmZXJyZWREb2MgPSB3aW5kb3cuZG9jdW1lbnQsXG5cdGRpcnJ1bnMgPSAwLFxuXHRkb25lID0gMCxcblx0Y2xhc3NDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0c29ydE9yZGVyID0gZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIDA7XG5cdH0sXG5cblx0Ly8gSW5zdGFuY2UgbWV0aG9kc1xuXHRoYXNPd24gPSAoe30pLmhhc093blByb3BlcnR5LFxuXHRhcnIgPSBbXSxcblx0cG9wID0gYXJyLnBvcCxcblx0cHVzaF9uYXRpdmUgPSBhcnIucHVzaCxcblx0cHVzaCA9IGFyci5wdXNoLFxuXHRzbGljZSA9IGFyci5zbGljZSxcblx0Ly8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9mIGFzIGl0J3MgZmFzdGVyIHRoYW4gbmF0aXZlXG5cdC8vIGh0dHBzOi8vanNwZXJmLmNvbS90aG9yLWluZGV4b2YtdnMtZm9yLzVcblx0aW5kZXhPZiA9IGZ1bmN0aW9uKCBsaXN0LCBlbGVtICkge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdGxlbiA9IGxpc3QubGVuZ3RoO1xuXHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0aWYgKCBsaXN0W2ldID09PSBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIC0xO1xuXHR9LFxuXG5cdGJvb2xlYW5zID0gXCJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZFwiLFxuXG5cdC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnNcblxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZVxuXHR3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLFxuXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllclxuXHRpZGVudGlmaWVyID0gXCIoPzpcXFxcXFxcXC58W1xcXFx3LV18W15cXDAtXFxcXHhhMF0pK1wiLFxuXG5cdC8vIEF0dHJpYnV0ZSBzZWxlY3RvcnM6IGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9yc1xuXHRhdHRyaWJ1dGVzID0gXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKihcIiArIGlkZW50aWZpZXIgKyBcIikoPzpcIiArIHdoaXRlc3BhY2UgK1xuXHRcdC8vIE9wZXJhdG9yIChjYXB0dXJlIDIpXG5cdFx0XCIqKFsqXiR8IX5dPz0pXCIgKyB3aGl0ZXNwYWNlICtcblx0XHQvLyBcIkF0dHJpYnV0ZSB2YWx1ZXMgbXVzdCBiZSBDU1MgaWRlbnRpZmllcnMgW2NhcHR1cmUgNV0gb3Igc3RyaW5ncyBbY2FwdHVyZSAzIG9yIGNhcHR1cmUgNF1cIlxuXHRcdFwiKig/OicoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcInwoXCIgKyBpZGVudGlmaWVyICsgXCIpKXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcIipcXFxcXVwiLFxuXG5cdHBzZXVkb3MgPSBcIjooXCIgKyBpZGVudGlmaWVyICsgXCIpKD86XFxcXCgoXCIgK1xuXHRcdC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6XG5cdFx0Ly8gMS4gcXVvdGVkIChjYXB0dXJlIDM7IGNhcHR1cmUgNCBvciBjYXB0dXJlIDUpXG5cdFx0XCIoJygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwiKXxcIiArXG5cdFx0Ly8gMi4gc2ltcGxlIChjYXB0dXJlIDYpXG5cdFx0XCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKVtcXFxcXV18XCIgKyBhdHRyaWJ1dGVzICsgXCIpKil8XCIgK1xuXHRcdC8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMilcblx0XHRcIi4qXCIgK1xuXHRcdFwiKVxcXFwpfClcIixcblxuXHQvLyBMZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcgc29tZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyXG5cdHJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArIFwiK1wiLCBcImdcIiApLFxuXHRydHJpbSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIiArIHdoaXRlc3BhY2UgKyBcIiskXCIsIFwiZ1wiICksXG5cblx0cmNvbW1hID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqLFwiICsgd2hpdGVzcGFjZSArIFwiKlwiICksXG5cdHJjb21iaW5hdG9ycyA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKihbPit+XXxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXG5cdHJhdHRyaWJ1dGVRdW90ZXMgPSBuZXcgUmVnRXhwKCBcIj1cIiArIHdoaXRlc3BhY2UgKyBcIiooW15cXFxcXSdcXFwiXSo/KVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFxdXCIsIFwiZ1wiICksXG5cblx0cnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSxcblx0cmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCBcIl5cIiArIGlkZW50aWZpZXIgKyBcIiRcIiApLFxuXG5cdG1hdGNoRXhwciA9IHtcblx0XHRcIklEXCI6IG5ldyBSZWdFeHAoIFwiXiMoXCIgKyBpZGVudGlmaWVyICsgXCIpXCIgKSxcblx0XHRcIkNMQVNTXCI6IG5ldyBSZWdFeHAoIFwiXlxcXFwuKFwiICsgaWRlbnRpZmllciArIFwiKVwiICksXG5cdFx0XCJUQUdcIjogbmV3IFJlZ0V4cCggXCJeKFwiICsgaWRlbnRpZmllciArIFwifFsqXSlcIiApLFxuXHRcdFwiQVRUUlwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIGF0dHJpYnV0ZXMgKSxcblx0XHRcIlBTRVVET1wiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHBzZXVkb3MgKSxcblx0XHRcIkNISUxEXCI6IG5ldyBSZWdFeHAoIFwiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFxcXChcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKGV2ZW58b2RkfCgoWystXXwpKFxcXFxkKilufClcIiArIHdoaXRlc3BhY2UgKyBcIiooPzooWystXXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKihcXFxcZCspfCkpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KVwiLCBcImlcIiApLFxuXHRcdFwiYm9vbFwiOiBuZXcgUmVnRXhwKCBcIl4oPzpcIiArIGJvb2xlYW5zICsgXCIpJFwiLCBcImlcIiApLFxuXHRcdC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKVxuXHRcdC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGBcblx0XHRcIm5lZWRzQ29udGV4dFwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcXFwoXCIgK1xuXHRcdFx0d2hpdGVzcGFjZSArIFwiKigoPzotXFxcXGQpP1xcXFxkKilcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpKD89W14tXXwkKVwiLCBcImlcIiApXG5cdH0sXG5cblx0cmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksXG5cdHJoZWFkZXIgPSAvXmhcXGQkL2ksXG5cblx0cm5hdGl2ZSA9IC9eW157XStcXHtcXHMqXFxbbmF0aXZlIFxcdy8sXG5cblx0Ly8gRWFzaWx5LXBhcnNlYWJsZS9yZXRyaWV2YWJsZSBJRCBvciBUQUcgb3IgQ0xBU1Mgc2VsZWN0b3JzXG5cdHJxdWlja0V4cHIgPSAvXig/OiMoW1xcdy1dKyl8KFxcdyspfFxcLihbXFx3LV0rKSkkLyxcblxuXHRyc2libGluZyA9IC9bK35dLyxcblxuXHQvLyBDU1MgZXNjYXBlc1xuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0ZXJzXG5cdHJ1bmVzY2FwZSA9IG5ldyBSZWdFeHAoIFwiXFxcXFxcXFwoW1xcXFxkYS1mXXsxLDZ9XCIgKyB3aGl0ZXNwYWNlICsgXCI/fChcIiArIHdoaXRlc3BhY2UgKyBcIil8LilcIiwgXCJpZ1wiICksXG5cdGZ1bmVzY2FwZSA9IGZ1bmN0aW9uKCBfLCBlc2NhcGVkLCBlc2NhcGVkV2hpdGVzcGFjZSApIHtcblx0XHR2YXIgaGlnaCA9IFwiMHhcIiArIGVzY2FwZWQgLSAweDEwMDAwO1xuXHRcdC8vIE5hTiBtZWFucyBub24tY29kZXBvaW50XG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveDwyNFxuXHRcdC8vIFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50ZXJwcmV0YXRpb24gb2YgK1wiMHhcIlxuXHRcdHJldHVybiBoaWdoICE9PSBoaWdoIHx8IGVzY2FwZWRXaGl0ZXNwYWNlID9cblx0XHRcdGVzY2FwZWQgOlxuXHRcdFx0aGlnaCA8IDAgP1xuXHRcdFx0XHQvLyBCTVAgY29kZXBvaW50XG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOlxuXHRcdFx0XHQvLyBTdXBwbGVtZW50YWwgUGxhbmUgY29kZXBvaW50IChzdXJyb2dhdGUgcGFpcilcblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCA+PiAxMCB8IDB4RDgwMCwgaGlnaCAmIDB4M0ZGIHwgMHhEQzAwICk7XG5cdH0sXG5cblx0Ly8gQ1NTIHN0cmluZy9pZGVudGlmaWVyIHNlcmlhbGl6YXRpb25cblx0Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNjb21tb24tc2VyaWFsaXppbmctaWRpb21zXG5cdHJjc3Nlc2NhcGUgPSAvKFtcXDAtXFx4MWZcXHg3Zl18Xi0/XFxkKXxeLSR8W15cXDAtXFx4MWZcXHg3Zi1cXHVGRkZGXFx3LV0vZyxcblx0ZmNzc2VzY2FwZSA9IGZ1bmN0aW9uKCBjaCwgYXNDb2RlUG9pbnQgKSB7XG5cdFx0aWYgKCBhc0NvZGVQb2ludCApIHtcblxuXHRcdFx0Ly8gVSswMDAwIE5VTEwgYmVjb21lcyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSXG5cdFx0XHRpZiAoIGNoID09PSBcIlxcMFwiICkge1xuXHRcdFx0XHRyZXR1cm4gXCJcXHVGRkZEXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnRyb2wgY2hhcmFjdGVycyBhbmQgKGRlcGVuZGVudCB1cG9uIHBvc2l0aW9uKSBudW1iZXJzIGdldCBlc2NhcGVkIGFzIGNvZGUgcG9pbnRzXG5cdFx0XHRyZXR1cm4gY2guc2xpY2UoIDAsIC0xICkgKyBcIlxcXFxcIiArIGNoLmNoYXJDb2RlQXQoIGNoLmxlbmd0aCAtIDEgKS50b1N0cmluZyggMTYgKSArIFwiIFwiO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyIHBvdGVudGlhbGx5LXNwZWNpYWwgQVNDSUkgY2hhcmFjdGVycyBnZXQgYmFja3NsYXNoLWVzY2FwZWRcblx0XHRyZXR1cm4gXCJcXFxcXCIgKyBjaDtcblx0fSxcblxuXHQvLyBVc2VkIGZvciBpZnJhbWVzXG5cdC8vIFNlZSBzZXREb2N1bWVudCgpXG5cdC8vIFJlbW92aW5nIHRoZSBmdW5jdGlvbiB3cmFwcGVyIGNhdXNlcyBhIFwiUGVybWlzc2lvbiBEZW5pZWRcIlxuXHQvLyBlcnJvciBpbiBJRVxuXHR1bmxvYWRIYW5kbGVyID0gZnVuY3Rpb24oKSB7XG5cdFx0c2V0RG9jdW1lbnQoKTtcblx0fSxcblxuXHRkaXNhYmxlZEFuY2VzdG9yID0gYWRkQ29tYmluYXRvcihcblx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSB0cnVlICYmIChcImZvcm1cIiBpbiBlbGVtIHx8IFwibGFiZWxcIiBpbiBlbGVtKTtcblx0XHR9LFxuXHRcdHsgZGlyOiBcInBhcmVudE5vZGVcIiwgbmV4dDogXCJsZWdlbmRcIiB9XG5cdCk7XG5cbi8vIE9wdGltaXplIGZvciBwdXNoLmFwcGx5KCBfLCBOb2RlTGlzdCApXG50cnkge1xuXHRwdXNoLmFwcGx5KFxuXHRcdChhcnIgPSBzbGljZS5jYWxsKCBwcmVmZXJyZWREb2MuY2hpbGROb2RlcyApKSxcblx0XHRwcmVmZXJyZWREb2MuY2hpbGROb2Rlc1xuXHQpO1xuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMFxuXHQvLyBEZXRlY3Qgc2lsZW50bHkgZmFpbGluZyBwdXNoLmFwcGx5XG5cdGFyclsgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoIF0ubm9kZVR5cGU7XG59IGNhdGNoICggZSApIHtcblx0cHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggP1xuXG5cdFx0Ly8gTGV2ZXJhZ2Ugc2xpY2UgaWYgcG9zc2libGVcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHRwdXNoX25hdGl2ZS5hcHBseSggdGFyZ2V0LCBzbGljZS5jYWxsKGVscykgKTtcblx0XHR9IDpcblxuXHRcdC8vIFN1cHBvcnQ6IElFPDlcblx0XHQvLyBPdGhlcndpc2UgYXBwZW5kIGRpcmVjdGx5XG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0dmFyIGogPSB0YXJnZXQubGVuZ3RoLFxuXHRcdFx0XHRpID0gMDtcblx0XHRcdC8vIENhbid0IHRydXN0IE5vZGVMaXN0Lmxlbmd0aFxuXHRcdFx0d2hpbGUgKCAodGFyZ2V0W2orK10gPSBlbHNbaSsrXSkgKSB7fVxuXHRcdFx0dGFyZ2V0Lmxlbmd0aCA9IGogLSAxO1xuXHRcdH1cblx0fTtcbn1cblxuZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIG0sIGksIGVsZW0sIG5pZCwgbWF0Y2gsIGdyb3VwcywgbmV3U2VsZWN0b3IsXG5cdFx0bmV3Q29udGV4dCA9IGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50LFxuXG5cdFx0Ly8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2luY2UgY29udGV4dCBkZWZhdWx0cyB0byBkb2N1bWVudFxuXHRcdG5vZGVUeXBlID0gY29udGV4dCA/IGNvbnRleHQubm9kZVR5cGUgOiA5O1xuXG5cdHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuXG5cdC8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxzIHdpdGggaW52YWxpZCBzZWxlY3RvciBvciBjb250ZXh0XG5cdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiIHx8ICFzZWxlY3RvciB8fFxuXHRcdG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSApIHtcblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0Ly8gVHJ5IHRvIHNob3J0Y3V0IGZpbmQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0byBmaWx0ZXJzKSBpbiBIVE1MIGRvY3VtZW50c1xuXHRpZiAoICFzZWVkICkge1xuXG5cdFx0aWYgKCAoIGNvbnRleHQgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IHByZWZlcnJlZERvYyApICE9PSBkb2N1bWVudCApIHtcblx0XHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdFx0fVxuXHRcdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXG5cdFx0aWYgKCBkb2N1bWVudElzSFRNTCApIHtcblxuXHRcdFx0Ly8gSWYgdGhlIHNlbGVjdG9yIGlzIHN1ZmZpY2llbnRseSBzaW1wbGUsIHRyeSB1c2luZyBhIFwiZ2V0KkJ5KlwiIERPTSBtZXRob2Rcblx0XHRcdC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVudCBjb250ZXh0LCB3aGVyZSB0aGUgbWV0aG9kcyBkb24ndCBleGlzdClcblx0XHRcdGlmICggbm9kZVR5cGUgIT09IDExICYmIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7XG5cblx0XHRcdFx0Ly8gSUQgc2VsZWN0b3Jcblx0XHRcdFx0aWYgKCAobSA9IG1hdGNoWzFdKSApIHtcblxuXHRcdFx0XHRcdC8vIERvY3VtZW50IGNvbnRleHRcblx0XHRcdFx0XHRpZiAoIG5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnNcblx0XHRcdFx0XHRcdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0XHRpZiAoIGVsZW0uaWQgPT09IG0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRWxlbWVudCBjb250ZXh0XG5cdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zXG5cdFx0XHRcdFx0XHQvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElEXG5cdFx0XHRcdFx0XHRpZiAoIG5ld0NvbnRleHQgJiYgKGVsZW0gPSBuZXdDb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkpICYmXG5cdFx0XHRcdFx0XHRcdGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiZcblx0XHRcdFx0XHRcdFx0ZWxlbS5pZCA9PT0gbSApIHtcblxuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFR5cGUgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbMl0gKSB7XG5cdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0b3IgKSApO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHRcdC8vIENsYXNzIHNlbGVjdG9yXG5cdFx0XHRcdH0gZWxzZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJlxuXHRcdFx0XHRcdGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHtcblxuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVGFrZSBhZHZhbnRhZ2Ugb2YgcXVlcnlTZWxlY3RvckFsbFxuXHRcdFx0aWYgKCBzdXBwb3J0LnFzYSAmJlxuXHRcdFx0XHQhY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdICYmXG5cdFx0XHRcdCghcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lRU0EudGVzdCggc2VsZWN0b3IgKSkgKSB7XG5cblx0XHRcdFx0aWYgKCBub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gY29udGV4dDtcblx0XHRcdFx0XHRuZXdTZWxlY3RvciA9IHNlbGVjdG9yO1xuXG5cdFx0XHRcdC8vIHFTQSBsb29rcyBvdXRzaWRlIEVsZW1lbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudFxuXHRcdFx0XHQvLyBUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhpcyB3b3JrYXJvdW5kIHRlY2huaXF1ZVxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PThcblx0XHRcdFx0Ly8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHNcblx0XHRcdFx0fSBlbHNlIGlmICggY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcIm9iamVjdFwiICkge1xuXG5cdFx0XHRcdFx0Ly8gQ2FwdHVyZSB0aGUgY29udGV4dCBJRCwgc2V0dGluZyBpdCBmaXJzdCBpZiBuZWNlc3Nhcnlcblx0XHRcdFx0XHRpZiAoIChuaWQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggXCJpZFwiICkpICkge1xuXHRcdFx0XHRcdFx0bmlkID0gbmlkLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29udGV4dC5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgKG5pZCA9IGV4cGFuZG8pICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJlZml4IGV2ZXJ5IHNlbGVjdG9yIGluIHRoZSBsaXN0XG5cdFx0XHRcdFx0Z3JvdXBzID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0XHRcdFx0aSA9IGdyb3Vwcy5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRncm91cHNbaV0gPSBcIiNcIiArIG5pZCArIFwiIFwiICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG5ld1NlbGVjdG9yID0gZ3JvdXBzLmpvaW4oIFwiLFwiICk7XG5cblx0XHRcdFx0XHQvLyBFeHBhbmQgY29udGV4dCBmb3Igc2libGluZyBzZWxlY3RvcnNcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHxcblx0XHRcdFx0XHRcdGNvbnRleHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIG5ld1NlbGVjdG9yICkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLFxuXHRcdFx0XHRcdFx0XHRuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9yIClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9IGNhdGNoICggcXNhRXJyb3IgKSB7XG5cdFx0XHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0XHRcdGlmICggbmlkID09PSBleHBhbmRvICkge1xuXHRcdFx0XHRcdFx0XHRjb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSggXCJpZFwiICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWxsIG90aGVyc1xuXHRyZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemVcbiAqIEByZXR1cm5zIHtmdW5jdGlvbihzdHJpbmcsIG9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxmIHdpdGhcbiAqXHRwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3VmZml4ZWQpIHN0cmluZyBhbmQgKGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hlTGVuZ3RoKVxuICpcdGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7XG5cdHZhciBrZXlzID0gW107XG5cblx0ZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7XG5cdFx0Ly8gVXNlIChrZXkgKyBcIiBcIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1Nylcblx0XHRpZiAoIGtleXMucHVzaCgga2V5ICsgXCIgXCIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7XG5cdFx0XHQvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXNcblx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07XG5cdFx0fVxuXHRcdHJldHVybiAoY2FjaGVbIGtleSArIFwiIFwiIF0gPSB2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIGNhY2hlO1xufVxuXG4vKipcbiAqIE1hcmsgYSBmdW5jdGlvbiBmb3Igc3BlY2lhbCB1c2UgYnkgU2l6emxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gbWFya1xuICovXG5mdW5jdGlvbiBtYXJrRnVuY3Rpb24oIGZuICkge1xuXHRmblsgZXhwYW5kbyBdID0gdHJ1ZTtcblx0cmV0dXJuIGZuO1xufVxuXG4vKipcbiAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVudCBhbmQgcmV0dXJucyBhIGJvb2xlYW4gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIGFzc2VydCggZm4gKSB7XG5cdHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmaWVsZHNldFwiKTtcblxuXHR0cnkge1xuXHRcdHJldHVybiAhIWZuKCBlbCApO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9IGZpbmFsbHkge1xuXHRcdC8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQgYnkgZGVmYXVsdFxuXHRcdGlmICggZWwucGFyZW50Tm9kZSApIHtcblx0XHRcdGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGVsICk7XG5cdFx0fVxuXHRcdC8vIHJlbGVhc2UgbWVtb3J5IGluIElFXG5cdFx0ZWwgPSBudWxsO1xuXHR9XG59XG5cbi8qKlxuICogQWRkcyB0aGUgc2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRyc1xuICogQHBhcmFtIHtTdHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBsaWVkXG4gKi9cbmZ1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRsZXIgKSB7XG5cdHZhciBhcnIgPSBhdHRycy5zcGxpdChcInxcIiksXG5cdFx0aSA9IGFyci5sZW5ndGg7XG5cblx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0RXhwci5hdHRySGFuZGxlWyBhcnJbaV0gXSA9IGhhbmRsZXI7XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVja3MgZG9jdW1lbnQgb3JkZXIgb2YgdHdvIHNpYmxpbmdzXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGFcbiAqIEBwYXJhbSB7RWxlbWVudH0gYlxuICogQHJldHVybnMge051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBhIHByZWNlZGVzIGIsIGdyZWF0ZXIgdGhhbiAwIGlmIGEgZm9sbG93cyBiXG4gKi9cbmZ1bmN0aW9uIHNpYmxpbmdDaGVjayggYSwgYiApIHtcblx0dmFyIGN1ciA9IGIgJiYgYSxcblx0XHRkaWZmID0gY3VyICYmIGEubm9kZVR5cGUgPT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0YS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7XG5cblx0Ly8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzXG5cdGlmICggZGlmZiApIHtcblx0XHRyZXR1cm4gZGlmZjtcblx0fVxuXG5cdC8vIENoZWNrIGlmIGIgZm9sbG93cyBhXG5cdGlmICggY3VyICkge1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7XG5cdFx0XHRpZiAoIGN1ciA9PT0gYiApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBhID8gMSA6IC0xO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlwZXNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUlucHV0UHNldWRvKCB0eXBlICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBidXR0b25zXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gKG5hbWUgPT09IFwiaW5wdXRcIiB8fCBuYW1lID09PSBcImJ1dHRvblwiKSAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciA6ZW5hYmxlZC86ZGlzYWJsZWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gZGlzYWJsZWQgdHJ1ZSBmb3IgOmRpc2FibGVkOyBmYWxzZSBmb3IgOmVuYWJsZWRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGRpc2FibGVkICkge1xuXG5cdC8vIEtub3duIDpkaXNhYmxlZCBmYWxzZSBwb3NpdGl2ZXM6IGZpZWxkc2V0W2Rpc2FibGVkXSA+IGxlZ2VuZDpudGgtb2YtdHlwZShuKzIpIDpjYW4tZGlzYWJsZVxuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBPbmx5IGNlcnRhaW4gZWxlbWVudHMgY2FuIG1hdGNoIDplbmFibGVkIG9yIDpkaXNhYmxlZFxuXHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWVuYWJsZWRcblx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1kaXNhYmxlZFxuXHRcdGlmICggXCJmb3JtXCIgaW4gZWxlbSApIHtcblxuXHRcdFx0Ly8gQ2hlY2sgZm9yIGluaGVyaXRlZCBkaXNhYmxlZG5lc3Mgb24gcmVsZXZhbnQgbm9uLWRpc2FibGVkIGVsZW1lbnRzOlxuXHRcdFx0Ly8gKiBsaXN0ZWQgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgZmllbGRzZXRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjYXRlZ29yeS1saXN0ZWRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LWZlLWRpc2FibGVkXG5cdFx0XHQvLyAqIG9wdGlvbiBlbGVtZW50cyBpbiBhIGRpc2FibGVkIG9wdGdyb3VwXG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1vcHRpb24tZGlzYWJsZWRcblx0XHRcdC8vIEFsbCBzdWNoIGVsZW1lbnRzIGhhdmUgYSBcImZvcm1cIiBwcm9wZXJ0eS5cblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICYmIGVsZW0uZGlzYWJsZWQgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdC8vIE9wdGlvbiBlbGVtZW50cyBkZWZlciB0byBhIHBhcmVudCBvcHRncm91cCBpZiBwcmVzZW50XG5cdFx0XHRcdGlmICggXCJsYWJlbFwiIGluIGVsZW0gKSB7XG5cdFx0XHRcdFx0aWYgKCBcImxhYmVsXCIgaW4gZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0ucGFyZW50Tm9kZS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA2IC0gMTFcblx0XHRcdFx0Ly8gVXNlIHRoZSBpc0Rpc2FibGVkIHNob3J0Y3V0IHByb3BlcnR5IHRvIGNoZWNrIGZvciBkaXNhYmxlZCBmaWVsZHNldCBhbmNlc3RvcnNcblx0XHRcdFx0cmV0dXJuIGVsZW0uaXNEaXNhYmxlZCA9PT0gZGlzYWJsZWQgfHxcblxuXHRcdFx0XHRcdC8vIFdoZXJlIHRoZXJlIGlzIG5vIGlzRGlzYWJsZWQsIGNoZWNrIG1hbnVhbGx5XG5cdFx0XHRcdFx0LyoganNoaW50IC1XMDE4ICovXG5cdFx0XHRcdFx0ZWxlbS5pc0Rpc2FibGVkICE9PSAhZGlzYWJsZWQgJiZcblx0XHRcdFx0XHRcdGRpc2FibGVkQW5jZXN0b3IoIGVsZW0gKSA9PT0gZGlzYWJsZWQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblxuXHRcdC8vIFRyeSB0byB3aW5ub3cgb3V0IGVsZW1lbnRzIHRoYXQgY2FuJ3QgYmUgZGlzYWJsZWQgYmVmb3JlIHRydXN0aW5nIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eS5cblx0XHQvLyBTb21lIHZpY3RpbXMgZ2V0IGNhdWdodCBpbiBvdXIgbmV0IChsYWJlbCwgbGVnZW5kLCBtZW51LCB0cmFjayksIGJ1dCBpdCBzaG91bGRuJ3Rcblx0XHQvLyBldmVuIGV4aXN0IG9uIHRoZW0sIGxldCBhbG9uZSBoYXZlIGEgYm9vbGVhbiB2YWx1ZS5cblx0XHR9IGVsc2UgaWYgKCBcImxhYmVsXCIgaW4gZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHR9XG5cblx0XHQvLyBSZW1haW5pbmcgZWxlbWVudHMgYXJlIG5laXRoZXIgOmVuYWJsZWQgbm9yIDpkaXNhYmxlZFxuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIHBvc2l0aW9uYWxzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICovXG5mdW5jdGlvbiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmbiApIHtcblx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggYXJndW1lbnQgKSB7XG5cdFx0YXJndW1lbnQgPSArYXJndW1lbnQ7XG5cdFx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdHZhciBqLFxuXHRcdFx0XHRtYXRjaEluZGV4ZXMgPSBmbiggW10sIHNlZWQubGVuZ3RoLCBhcmd1bWVudCApLFxuXHRcdFx0XHRpID0gbWF0Y2hJbmRleGVzLmxlbmd0aDtcblxuXHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBpbmRleGVzXG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCBzZWVkWyAoaiA9IG1hdGNoSW5kZXhlc1tpXSkgXSApIHtcblx0XHRcdFx0XHRzZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtqXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGEgbm9kZSBmb3IgdmFsaWRpdHkgYXMgYSBTaXp6bGUgY29udGV4dFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdD19IGNvbnRleHRcbiAqIEByZXR1cm5zIHtFbGVtZW50fE9iamVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBhY2NlcHRhYmxlLCBvdGhlcndpc2UgYSBmYWxzeSB2YWx1ZVxuICovXG5mdW5jdGlvbiB0ZXN0Q29udGV4dCggY29udGV4dCApIHtcblx0cmV0dXJuIGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29udGV4dDtcbn1cblxuLy8gRXhwb3NlIHN1cHBvcnQgdmFycyBmb3IgY29udmVuaWVuY2VcbnN1cHBvcnQgPSBTaXp6bGUuc3VwcG9ydCA9IHt9O1xuXG4vKipcbiAqIERldGVjdHMgWE1MIG5vZGVzXG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBlbGVtIEFuIGVsZW1lbnQgb3IgYSBkb2N1bWVudFxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWZmIGVsZW0gaXMgYSBub24tSFRNTCBYTUwgbm9kZVxuICovXG5pc1hNTCA9IFNpenpsZS5pc1hNTCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHQvLyBkb2N1bWVudEVsZW1lbnQgaXMgdmVyaWZpZWQgZm9yIGNhc2VzIHdoZXJlIGl0IGRvZXNuJ3QgeWV0IGV4aXN0XG5cdC8vIChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0ODMzKVxuXHR2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxlbSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDtcblx0cmV0dXJuIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gXCJIVE1MXCIgOiBmYWxzZTtcbn07XG5cbi8qKlxuICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1bWVudFxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudFxuICovXG5zZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKCBub2RlICkge1xuXHR2YXIgaGFzQ29tcGFyZSwgc3ViV2luZG93LFxuXHRcdGRvYyA9IG5vZGUgPyBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6IHByZWZlcnJlZERvYztcblxuXHQvLyBSZXR1cm4gZWFybHkgaWYgZG9jIGlzIGludmFsaWQgb3IgYWxyZWFkeSBzZWxlY3RlZFxuXHRpZiAoIGRvYyA9PT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkge1xuXHRcdHJldHVybiBkb2N1bWVudDtcblx0fVxuXG5cdC8vIFVwZGF0ZSBnbG9iYWwgdmFyaWFibGVzXG5cdGRvY3VtZW50ID0gZG9jO1xuXHRkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXHRkb2N1bWVudElzSFRNTCA9ICFpc1hNTCggZG9jdW1lbnQgKTtcblxuXHQvLyBTdXBwb3J0OiBJRSA5LTExLCBFZGdlXG5cdC8vIEFjY2Vzc2luZyBpZnJhbWUgZG9jdW1lbnRzIGFmdGVyIHVubG9hZCB0aHJvd3MgXCJwZXJtaXNzaW9uIGRlbmllZFwiIGVycm9ycyAoalF1ZXJ5ICMxMzkzNilcblx0aWYgKCBwcmVmZXJyZWREb2MgIT09IGRvY3VtZW50ICYmXG5cdFx0KHN1YldpbmRvdyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3KSAmJiBzdWJXaW5kb3cudG9wICE9PSBzdWJXaW5kb3cgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSAxMSwgRWRnZVxuXHRcdGlmICggc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggXCJ1bmxvYWRcIiwgdW5sb2FkSGFuZGxlciwgZmFsc2UgKTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMCBvbmx5XG5cdFx0fSBlbHNlIGlmICggc3ViV2luZG93LmF0dGFjaEV2ZW50ICkge1xuXHRcdFx0c3ViV2luZG93LmF0dGFjaEV2ZW50KCBcIm9udW5sb2FkXCIsIHVubG9hZEhhbmRsZXIgKTtcblx0XHR9XG5cdH1cblxuXHQvKiBBdHRyaWJ1dGVzXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBTdXBwb3J0OiBJRTw4XG5cdC8vIFZlcmlmeSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBhdHRyaWJ1dGVzIGFuZCBub3QgcHJvcGVydGllc1xuXHQvLyAoZXhjZXB0aW5nIElFOCBib29sZWFucylcblx0c3VwcG9ydC5hdHRyaWJ1dGVzID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5jbGFzc05hbWUgPSBcImlcIjtcblx0XHRyZXR1cm4gIWVsLmdldEF0dHJpYnV0ZShcImNsYXNzTmFtZVwiKTtcblx0fSk7XG5cblx0LyogZ2V0RWxlbWVudChzKUJ5KlxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpIHJldHVybnMgb25seSBlbGVtZW50c1xuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudChcIlwiKSApO1xuXHRcdHJldHVybiAhZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpLmxlbmd0aDtcblx0fSk7XG5cblx0Ly8gU3VwcG9ydDogSUU8OVxuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTtcblxuXHQvLyBTdXBwb3J0OiBJRTwxMFxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWVcblx0Ly8gVGhlIGJyb2tlbiBnZXRFbGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbW1hdGljYWxseS1zZXQgbmFtZXMsXG5cdC8vIHNvIHVzZSBhIHJvdW5kYWJvdXQgZ2V0RWxlbWVudHNCeU5hbWUgdGVzdFxuXHRzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaWQgPSBleHBhbmRvO1xuXHRcdHJldHVybiAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBJRCBmaWx0ZXIgYW5kIGZpbmRcblx0aWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7XG5cdFx0RXhwci5maWx0ZXJbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJpZFwiKSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXHRcdEV4cHIuZmluZFtcIklEXCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXHRcdFx0XHRyZXR1cm4gZWxlbSA/IFsgZWxlbSBdIDogW107XG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gIGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09IFwidW5kZWZpbmVkXCIgJiZcblx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0cmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgNiAtIDcgb25seVxuXHRcdC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXRcblx0XHRFeHByLmZpbmRbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRcdHZhciBub2RlLCBpLCBlbGVtcyxcblx0XHRcdFx0XHRlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0gKSB7XG5cblx0XHRcdFx0XHQvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZVxuXHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0XHRpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gWyBlbGVtIF07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRmFsbCBiYWNrIG9uIGdldEVsZW1lbnRzQnlOYW1lXG5cdFx0XHRcdFx0ZWxlbXMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBpZCApO1xuXHRcdFx0XHRcdGkgPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtc1tpKytdKSApIHtcblx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0XHRcdGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIFsgZWxlbSBdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0Ly8gVGFnXG5cdEV4cHIuZmluZFtcIlRBR1wiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgP1xuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgZG9uJ3QgaGF2ZSBnRUJUTlxuXHRcdFx0fSBlbHNlIGlmICggc3VwcG9ydC5xc2EgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyApO1xuXHRcdFx0fVxuXHRcdH0gOlxuXG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHR0bXAgPSBbXSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdC8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBhIChicm9rZW4pIGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b29cblx0XHRcdFx0cmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBGaWx0ZXIgb3V0IHBvc3NpYmxlIGNvbW1lbnRzXG5cdFx0XHRpZiAoIHRhZyA9PT0gXCIqXCIgKSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdHRtcC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHRtcDtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdH07XG5cblx0Ly8gQ2xhc3Ncblx0RXhwci5maW5kW1wiQ0xBU1NcIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZnVuY3Rpb24oIGNsYXNzTmFtZSwgY29udGV4dCApIHtcblx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTtcblx0XHR9XG5cdH07XG5cblx0LyogUVNBL21hdGNoZXNTZWxlY3RvclxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydFxuXG5cdC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpXG5cdHJidWdneU1hdGNoZXMgPSBbXTtcblxuXHQvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKVxuXHQvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3Jcblx0Ly8gd2hlbmV2ZXIgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgIGlzIGFjY2Vzc2VkIG9uIGFuIGlmcmFtZVxuXHQvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBlcnJvclxuXHQvLyBTZWUgaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEzMzc4XG5cdHJidWdneVFTQSA9IFtdO1xuXG5cdGlmICggKHN1cHBvcnQucXNhID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsICkpICkge1xuXHRcdC8vIEJ1aWxkIFFTQSByZWdleFxuXHRcdC8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmlcblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0Ly8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZVxuXHRcdFx0Ly8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5XG5cdFx0XHQvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSxcblx0XHRcdC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoXG5cdFx0XHQvLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTlcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaW5uZXJIVE1MID0gXCI8YSBpZD0nXCIgKyBleHBhbmRvICsgXCInPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBpZD0nXCIgKyBleHBhbmRvICsgXCItXFxyXFxcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+XCIgK1xuXHRcdFx0XHRcIjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTZcblx0XHRcdC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj1cblx0XHRcdC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0IFwic2FmZVwiIGZvciBXaW5SVFxuXHRcdFx0Ly8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDQ2NTM4OC5hc3B4I2F0dHJpYnV0ZV9zZWN0aW9uXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbXNhbGxvd2NhcHR1cmVePScnXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlsqXiRdPVwiICsgd2hpdGVzcGFjZSArIFwiKig/OicnfFxcXCJcXFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCBcInZhbHVlXCIgYXJlIG5vdCB0cmVhdGVkIGNvcnJlY3RseVxuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbChcIltzZWxlY3RlZF1cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKig/OnZhbHVlfFwiICsgYm9vbGVhbnMgKyBcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWU8MjksIEFuZHJvaWQ8NC40LCBTYWZhcmk8Ny4wKywgaU9TPDcuMCssIFBoYW50b21KUzwxLjkuOCtcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW2lkfj1cIiArIGV4cGFuZG8gKyBcIi1dXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwifj1cIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCI6Y2hlY2tlZFwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwiOmNoZWNrZWRcIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA4KywgaU9TIDgrXG5cdFx0XHQvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODUxXG5cdFx0XHQvLyBJbi1wYWdlIGBzZWxlY3RvciNpZCBzaWJsaW5nLWNvbWJpbmF0b3Igc2VsZWN0b3JgIGZhaWxzXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcImEjXCIgKyBleHBhbmRvICsgXCIrKlwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIi4jLitbK35dXCIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRcdGVsLmlubmVySFRNTCA9IFwiPGEgaHJlZj0nJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PlwiO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHNcblx0XHRcdC8vIFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQgZHVyaW5nIC5pbm5lckhUTUwgYXNzaWdubWVudFxuXHRcdFx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuXHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJoaWRkZW5cIiApO1xuXHRcdFx0ZWwuYXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJEXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBFbmZvcmNlIGNhc2Utc2Vuc2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGVcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIltuYW1lPWRdXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwibmFtZVwiICsgd2hpdGVzcGFjZSArIFwiKlsqXiR8IX5dPz1cIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGRiAzLjUgLSA6ZW5hYmxlZC86ZGlzYWJsZWQgYW5kIGhpZGRlbiBlbGVtZW50cyAoaGlkZGVuIGVsZW1lbnRzIGFyZSBzdGlsbCBlbmFibGVkKVxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIjplbmFibGVkXCIpLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTktMTErXG5cdFx0XHQvLyBJRSdzIDpkaXNhYmxlZCBzZWxlY3RvciBkb2VzIG5vdCBwaWNrIHVwIHRoZSBjaGlsZHJlbiBvZiBkaXNhYmxlZCBmaWVsZHNldHNcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiOmRpc2FibGVkXCIpLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvc1xuXHRcdFx0ZWwucXVlcnlTZWxlY3RvckFsbChcIiosOnhcIik7XG5cdFx0XHRyYnVnZ3lRU0EucHVzaChcIiwuKjpcIik7XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKG1hdGNoZXMgPSBkb2NFbGVtLm1hdGNoZXMgfHxcblx0XHRkb2NFbGVtLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5vTWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tc01hdGNoZXNTZWxlY3RvcikgKSkgKSB7XG5cblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yXG5cdFx0XHQvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KVxuXHRcdFx0c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZWwsIFwiKlwiICk7XG5cblx0XHRcdC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb25cblx0XHRcdC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWRcblx0XHRcdG1hdGNoZXMuY2FsbCggZWwsIFwiW3MhPScnXTp4XCIgKTtcblx0XHRcdHJidWdneU1hdGNoZXMucHVzaCggXCIhPVwiLCBwc2V1ZG9zICk7XG5cdFx0fSk7XG5cdH1cblxuXHRyYnVnZ3lRU0EgPSByYnVnZ3lRU0EubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneVFTQS5qb2luKFwifFwiKSApO1xuXHRyYnVnZ3lNYXRjaGVzID0gcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKFwifFwiKSApO1xuXG5cdC8qIENvbnRhaW5zXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0aGFzQ29tcGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApO1xuXG5cdC8vIEVsZW1lbnQgY29udGFpbnMgYW5vdGhlclxuXHQvLyBQdXJwb3NlZnVsbHkgc2VsZi1leGNsdXNpdmVcblx0Ly8gQXMgaW4sIGFuIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBpdHNlbGZcblx0Y29udGFpbnMgPSBoYXNDb21wYXJlIHx8IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb250YWlucyApID9cblx0XHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdHZhciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBhLmRvY3VtZW50RWxlbWVudCA6IGEsXG5cdFx0XHRcdGJ1cCA9IGIgJiYgYi5wYXJlbnROb2RlO1xuXHRcdFx0cmV0dXJuIGEgPT09IGJ1cCB8fCAhISggYnVwICYmIGJ1cC5ub2RlVHlwZSA9PT0gMSAmJiAoXG5cdFx0XHRcdGFkb3duLmNvbnRhaW5zID9cblx0XHRcdFx0XHRhZG93bi5jb250YWlucyggYnVwICkgOlxuXHRcdFx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYnVwICkgJiAxNlxuXHRcdFx0KSk7XG5cdFx0fSA6XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHRpZiAoIGIgKSB7XG5cdFx0XHRcdHdoaWxlICggKGIgPSBiLnBhcmVudE5vZGUpICkge1xuXHRcdFx0XHRcdGlmICggYiA9PT0gYSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cblx0LyogU29ydGluZ1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gRG9jdW1lbnQgb3JkZXIgc29ydGluZ1xuXHRzb3J0T3JkZXIgPSBoYXNDb21wYXJlID9cblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cblx0XHQvLyBGbGFnIGZvciBkdXBsaWNhdGUgcmVtb3ZhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHQvLyBTb3J0IG9uIG1ldGhvZCBleGlzdGVuY2UgaWYgb25seSBvbmUgaW5wdXQgaGFzIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uXG5cdFx0dmFyIGNvbXBhcmUgPSAhYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO1xuXHRcdGlmICggY29tcGFyZSApIHtcblx0XHRcdHJldHVybiBjb21wYXJlO1xuXHRcdH1cblxuXHRcdC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBpZiBib3RoIGlucHV0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1lbnRcblx0XHRjb21wYXJlID0gKCBhLm93bmVyRG9jdW1lbnQgfHwgYSApID09PSAoIGIub3duZXJEb2N1bWVudCB8fCBiICkgP1xuXHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVjdGVkXG5cdFx0XHQxO1xuXG5cdFx0Ly8gRGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0aWYgKCBjb21wYXJlICYgMSB8fFxuXHRcdFx0KCFzdXBwb3J0LnNvcnREZXRhY2hlZCAmJiBiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBhICkgPT09IGNvbXBhcmUpICkge1xuXG5cdFx0XHQvLyBDaG9vc2UgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyByZWxhdGVkIHRvIG91ciBwcmVmZXJyZWQgZG9jdW1lbnRcblx0XHRcdGlmICggYSA9PT0gZG9jdW1lbnQgfHwgYS5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBhKSApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBiID09PSBkb2N1bWVudCB8fCBiLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGIpICkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXJcblx0XHRcdHJldHVybiBzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxO1xuXHR9IDpcblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0Ly8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRhdXAgPSBhLnBhcmVudE5vZGUsXG5cdFx0XHRidXAgPSBiLnBhcmVudE5vZGUsXG5cdFx0XHRhcCA9IFsgYSBdLFxuXHRcdFx0YnAgPSBbIGIgXTtcblxuXHRcdC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3IgZGlzY29ubmVjdGVkXG5cdFx0aWYgKCAhYXVwIHx8ICFidXAgKSB7XG5cdFx0XHRyZXR1cm4gYSA9PT0gZG9jdW1lbnQgPyAtMSA6XG5cdFx0XHRcdGIgPT09IGRvY3VtZW50ID8gMSA6XG5cdFx0XHRcdGF1cCA/IC0xIDpcblx0XHRcdFx0YnVwID8gMSA6XG5cdFx0XHRcdHNvcnRJbnB1dCA/XG5cdFx0XHRcdCggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDpcblx0XHRcdFx0MDtcblxuXHRcdC8vIElmIHRoZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrXG5cdFx0fSBlbHNlIGlmICggYXVwID09PSBidXAgKSB7XG5cdFx0XHRyZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb25cblx0XHRjdXIgPSBhO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGFwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblx0XHRjdXIgPSBiO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGJwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblxuXHRcdC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBhbmN5XG5cdFx0d2hpbGUgKCBhcFtpXSA9PT0gYnBbaV0gKSB7XG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGkgP1xuXHRcdFx0Ly8gRG8gYSBzaWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yXG5cdFx0XHRzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0XG5cdFx0XHRhcFtpXSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOlxuXHRcdFx0YnBbaV0gPT09IHByZWZlcnJlZERvYyA/IDEgOlxuXHRcdFx0MDtcblx0fTtcblxuXHRyZXR1cm4gZG9jdW1lbnQ7XG59O1xuXG5TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBleHByLCBlbGVtZW50cyApIHtcblx0cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTtcbn07XG5cblNpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwgZXhwciApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHR9XG5cblx0Ly8gTWFrZSBzdXJlIHRoYXQgYXR0cmlidXRlIHNlbGVjdG9ycyBhcmUgcXVvdGVkXG5cdGV4cHIgPSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1dGVRdW90ZXMsIFwiPSckMSddXCIgKTtcblxuXHRpZiAoIHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yICYmIGRvY3VtZW50SXNIVE1MICYmXG5cdFx0IWNvbXBpbGVyQ2FjaGVbIGV4cHIgKyBcIiBcIiBdICYmXG5cdFx0KCAhcmJ1Z2d5TWF0Y2hlcyB8fCAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBleHByICkgKSAmJlxuXHRcdCggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0KCBleHByICkgKSApIHtcblxuXHRcdHRyeSB7XG5cdFx0XHR2YXIgcmV0ID0gbWF0Y2hlcy5jYWxsKCBlbGVtLCBleHByICk7XG5cblx0XHRcdC8vIElFIDkncyBtYXRjaGVzU2VsZWN0b3IgcmV0dXJucyBmYWxzZSBvbiBkaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRcdGlmICggcmV0IHx8IHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggfHxcblx0XHRcdFx0XHQvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBkb2N1bWVudFxuXHRcdFx0XHRcdC8vIGZyYWdtZW50IGluIElFIDlcblx0XHRcdFx0XHRlbGVtLmRvY3VtZW50ICYmIGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDExICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHt9XG5cdH1cblxuXHRyZXR1cm4gU2l6emxlKCBleHByLCBkb2N1bWVudCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwO1xufTtcblxuU2l6emxlLmNvbnRhaW5zID0gZnVuY3Rpb24oIGNvbnRleHQsIGVsZW0gKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0fVxuXHRyZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTtcbn07XG5cblNpenpsZS5hdHRyID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdHZhciBmbiA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZS50b0xvd2VyQ2FzZSgpIF0sXG5cdFx0Ly8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpXG5cdFx0dmFsID0gZm4gJiYgaGFzT3duLmNhbGwoIEV4cHIuYXR0ckhhbmRsZSwgbmFtZS50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0Zm4oIGVsZW0sIG5hbWUsICFkb2N1bWVudElzSFRNTCApIDpcblx0XHRcdHVuZGVmaW5lZDtcblxuXHRyZXR1cm4gdmFsICE9PSB1bmRlZmluZWQgP1xuXHRcdHZhbCA6XG5cdFx0c3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApIDpcblx0XHRcdCh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xufTtcblxuU2l6emxlLmVzY2FwZSA9IGZ1bmN0aW9uKCBzZWwgKSB7XG5cdHJldHVybiAoc2VsICsgXCJcIikucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApO1xufTtcblxuU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHtcblx0dGhyb3cgbmV3IEVycm9yKCBcIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246IFwiICsgbXNnICk7XG59O1xuXG4vKipcbiAqIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqIEBwYXJhbSB7QXJyYXlMaWtlfSByZXN1bHRzXG4gKi9cblNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7XG5cdHZhciBlbGVtLFxuXHRcdGR1cGxpY2F0ZXMgPSBbXSxcblx0XHRqID0gMCxcblx0XHRpID0gMDtcblxuXHQvLyBVbmxlc3Mgd2UgKmtub3cqIHdlIGNhbiBkZXRlY3QgZHVwbGljYXRlcywgYXNzdW1lIHRoZWlyIHByZXNlbmNlXG5cdGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7XG5cdHNvcnRJbnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApO1xuXHRyZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApO1xuXG5cdGlmICggaGFzRHVwbGljYXRlICkge1xuXHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0aWYgKCBlbGVtID09PSByZXN1bHRzWyBpIF0gKSB7XG5cdFx0XHRcdGogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRyZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAxICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2xlYXIgaW5wdXQgYWZ0ZXIgc29ydGluZyB0byByZWxlYXNlIG9iamVjdHNcblx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxlL3B1bGwvMjI1XG5cdHNvcnRJbnB1dCA9IG51bGw7XG5cblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIHRleHQgdmFsdWUgb2YgYW4gYXJyYXkgb2YgRE9NIG5vZGVzXG4gKiBAcGFyYW0ge0FycmF5fEVsZW1lbnR9IGVsZW1cbiAqL1xuZ2V0VGV4dCA9IFNpenpsZS5nZXRUZXh0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHZhciBub2RlLFxuXHRcdHJldCA9IFwiXCIsXG5cdFx0aSA9IDAsXG5cdFx0bm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdGlmICggIW5vZGVUeXBlICkge1xuXHRcdC8vIElmIG5vIG5vZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5XG5cdFx0d2hpbGUgKCAobm9kZSA9IGVsZW1baSsrXSkgKSB7XG5cdFx0XHQvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2Rlc1xuXHRcdFx0cmV0ICs9IGdldFRleHQoIG5vZGUgKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHtcblx0XHQvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRzXG5cdFx0Ly8gaW5uZXJUZXh0IHVzYWdlIHJlbW92ZWQgZm9yIGNvbnNpc3RlbmN5IG9mIG5ldyBsaW5lcyAoalF1ZXJ5ICMxMTE1Mylcblx0XHRpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0udGV4dENvbnRlbnQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFRyYXZlcnNlIGl0cyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdHJldCArPSBnZXRUZXh0KCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVmFsdWU7XG5cdH1cblx0Ly8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzXG5cblx0cmV0dXJuIHJldDtcbn07XG5cbkV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzID0ge1xuXG5cdC8vIENhbiBiZSBhZGp1c3RlZCBieSB0aGUgdXNlclxuXHRjYWNoZUxlbmd0aDogNTAsXG5cblx0Y3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24sXG5cblx0bWF0Y2g6IG1hdGNoRXhwcixcblxuXHRhdHRySGFuZGxlOiB7fSxcblxuXHRmaW5kOiB7fSxcblxuXHRyZWxhdGl2ZToge1xuXHRcdFwiPlwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCIgXCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiB9LFxuXHRcdFwiK1wiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIn5cIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIgfVxuXHR9LFxuXG5cdHByZUZpbHRlcjoge1xuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdC8vIE1vdmUgdGhlIGdpdmVuIHZhbHVlIHRvIG1hdGNoWzNdIHdoZXRoZXIgcXVvdGVkIG9yIHVucXVvdGVkXG5cdFx0XHRtYXRjaFszXSA9ICggbWF0Y2hbM10gfHwgbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgXCJcIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdGlmICggbWF0Y2hbMl0gPT09IFwifj1cIiApIHtcblx0XHRcdFx0bWF0Y2hbM10gPSBcIiBcIiArIG1hdGNoWzNdICsgXCIgXCI7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgNCApO1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdC8qIG1hdGNoZXMgZnJvbSBtYXRjaEV4cHJbXCJDSElMRFwiXVxuXHRcdFx0XHQxIHR5cGUgKG9ubHl8bnRofC4uLilcblx0XHRcdFx0MiB3aGF0IChjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHQzIGFyZ3VtZW50IChldmVufG9kZHxcXGQqfFxcZCpuKFsrLV1cXGQrKT98Li4uKVxuXHRcdFx0XHQ0IHhuLWNvbXBvbmVudCBvZiB4bit5IGFyZ3VtZW50IChbKy1dP1xcZCpufClcblx0XHRcdFx0NSBzaWduIG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ2IHggb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDcgc2lnbiBvZiB5LWNvbXBvbmVudFxuXHRcdFx0XHQ4IHkgb2YgeS1jb21wb25lbnRcblx0XHRcdCovXG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRcdGlmICggbWF0Y2hbMV0uc2xpY2UoIDAsIDMgKSA9PT0gXCJudGhcIiApIHtcblx0XHRcdFx0Ly8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnRcblx0XHRcdFx0aWYgKCAhbWF0Y2hbM10gKSB7XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4cHIuZmlsdGVyLkNISUxEXG5cdFx0XHRcdC8vIHJlbWVtYmVyIHRoYXQgZmFsc2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzFcblx0XHRcdFx0bWF0Y2hbNF0gPSArKCBtYXRjaFs0XSA/IG1hdGNoWzVdICsgKG1hdGNoWzZdIHx8IDEpIDogMiAqICggbWF0Y2hbM10gPT09IFwiZXZlblwiIHx8IG1hdGNoWzNdID09PSBcIm9kZFwiICkgKTtcblx0XHRcdFx0bWF0Y2hbNV0gPSArKCAoIG1hdGNoWzddICsgbWF0Y2hbOF0gKSB8fCBtYXRjaFszXSA9PT0gXCJvZGRcIiApO1xuXG5cdFx0XHQvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaDtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0dmFyIGV4Y2Vzcyxcblx0XHRcdFx0dW5xdW90ZWQgPSAhbWF0Y2hbNl0gJiYgbWF0Y2hbMl07XG5cblx0XHRcdGlmICggbWF0Y2hFeHByW1wiQ0hJTERcIl0udGVzdCggbWF0Y2hbMF0gKSApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFjY2VwdCBxdW90ZWQgYXJndW1lbnRzIGFzLWlzXG5cdFx0XHRpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRtYXRjaFsyXSA9IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8IFwiXCI7XG5cblx0XHRcdC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJzIGZyb20gdW5xdW90ZWQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCB1bnF1b3RlZCAmJiBycHNldWRvLnRlc3QoIHVucXVvdGVkICkgJiZcblx0XHRcdFx0Ly8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSlcblx0XHRcdFx0KGV4Y2VzcyA9IHRva2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApKSAmJlxuXHRcdFx0XHQvLyBhZHZhbmNlIHRvIHRoZSBuZXh0IGNsb3NpbmcgcGFyZW50aGVzaXNcblx0XHRcdFx0KGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoIFwiKVwiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAtIHVucXVvdGVkLmxlbmd0aCkgKSB7XG5cblx0XHRcdFx0Ly8gZXhjZXNzIGlzIGEgbmVnYXRpdmUgaW5kZXhcblx0XHRcdFx0bWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCwgZXhjZXNzICk7XG5cdFx0XHRcdG1hdGNoWzJdID0gdW5xdW90ZWQuc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXR1cm4gb25seSBjYXB0dXJlcyBuZWVkZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBhcmd1bWVudClcblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgMyApO1xuXHRcdH1cblx0fSxcblxuXHRmaWx0ZXI6IHtcblxuXHRcdFwiVEFHXCI6IGZ1bmN0aW9uKCBub2RlTmFtZVNlbGVjdG9yICkge1xuXHRcdFx0dmFyIG5vZGVOYW1lID0gbm9kZU5hbWVTZWxlY3Rvci5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbm9kZU5hbWVTZWxlY3RvciA9PT0gXCIqXCIgP1xuXHRcdFx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0gOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lO1xuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNMQVNTXCI6IGZ1bmN0aW9uKCBjbGFzc05hbWUgKSB7XG5cdFx0XHR2YXIgcGF0dGVybiA9IGNsYXNzQ2FjaGVbIGNsYXNzTmFtZSArIFwiIFwiIF07XG5cblx0XHRcdHJldHVybiBwYXR0ZXJuIHx8XG5cdFx0XHRcdChwYXR0ZXJuID0gbmV3IFJlZ0V4cCggXCIoXnxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIGNsYXNzTmFtZSArIFwiKFwiICsgd2hpdGVzcGFjZSArIFwifCQpXCIgKSkgJiZcblx0XHRcdFx0Y2xhc3NDYWNoZSggY2xhc3NOYW1lLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gcGF0dGVybi50ZXN0KCB0eXBlb2YgZWxlbS5jbGFzc05hbWUgPT09IFwic3RyaW5nXCIgJiYgZWxlbS5jbGFzc05hbWUgfHwgdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSBcInVuZGVmaW5lZFwiICYmIGVsZW0uZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgfHwgXCJcIiApO1xuXHRcdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0XCJBVFRSXCI6IGZ1bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hlY2sgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciByZXN1bHQgPSBTaXp6bGUuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0XHRcdGlmICggcmVzdWx0ID09IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIiE9XCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCAhb3BlcmF0b3IgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXN1bHQgKz0gXCJcIjtcblxuXHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiPVwiID8gcmVzdWx0ID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiIT1cIiA/IHJlc3VsdCAhPT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIl49XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA9PT0gMCA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiKj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiQ9XCIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIn49XCIgPyAoIFwiIFwiICsgcmVzdWx0LnJlcGxhY2UoIHJ3aGl0ZXNwYWNlLCBcIiBcIiApICsgXCIgXCIgKS5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcInw9XCIgPyByZXN1bHQgPT09IGNoZWNrIHx8IHJlc3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArIFwiLVwiIDpcblx0XHRcdFx0XHRmYWxzZTtcblx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiQ0hJTERcIjogZnVuY3Rpb24oIHR5cGUsIHdoYXQsIGFyZ3VtZW50LCBmaXJzdCwgbGFzdCApIHtcblx0XHRcdHZhciBzaW1wbGUgPSB0eXBlLnNsaWNlKCAwLCAzICkgIT09IFwibnRoXCIsXG5cdFx0XHRcdGZvcndhcmQgPSB0eXBlLnNsaWNlKCAtNCApICE9PSBcImxhc3RcIixcblx0XHRcdFx0b2ZUeXBlID0gd2hhdCA9PT0gXCJvZi10eXBlXCI7XG5cblx0XHRcdHJldHVybiBmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID9cblxuXHRcdFx0XHQvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4pXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiAhIWVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdFx0fSA6XG5cblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgY2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLCBub2RlLCBub2RlSW5kZXgsIHN0YXJ0LFxuXHRcdFx0XHRcdFx0ZGlyID0gc2ltcGxlICE9PSBmb3J3YXJkID8gXCJuZXh0U2libGluZ1wiIDogXCJwcmV2aW91c1NpYmxpbmdcIixcblx0XHRcdFx0XHRcdHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSxcblx0XHRcdFx0XHRcdG5hbWUgPSBvZlR5cGUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLFxuXHRcdFx0XHRcdFx0dXNlQ2FjaGUgPSAheG1sICYmICFvZlR5cGUsXG5cdFx0XHRcdFx0XHRkaWZmID0gZmFsc2U7XG5cblx0XHRcdFx0XHRpZiAoIHBhcmVudCApIHtcblxuXHRcdFx0XHRcdFx0Ly8gOihmaXJzdHxsYXN0fG9ubHkpLShjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHRcdFx0aWYgKCBzaW1wbGUgKSB7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggZGlyICkge1xuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtO1xuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSBub2RlWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG9mVHlwZSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQvLyBSZXZlcnNlIGRpcmVjdGlvbiBmb3IgOm9ubHktKiAoaWYgd2UgaGF2ZW4ndCB5ZXQgZG9uZSBzbylcblx0XHRcdFx0XHRcdFx0XHRzdGFydCA9IGRpciA9IHR5cGUgPT09IFwib25seVwiICYmICFzdGFydCAmJiBcIm5leHRTaWJsaW5nXCI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHN0YXJ0ID0gWyBmb3J3YXJkID8gcGFyZW50LmZpcnN0Q2hpbGQgOiBwYXJlbnQubGFzdENoaWxkIF07XG5cblx0XHRcdFx0XHRcdC8vIG5vbi14bWwgOm50aC1jaGlsZCguLi4pIHN0b3JlcyBjYWNoZSBkYXRhIG9uIGBwYXJlbnRgXG5cdFx0XHRcdFx0XHRpZiAoIGZvcndhcmQgJiYgdXNlQ2FjaGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU2VlayBgZWxlbWAgZnJvbSBhIHByZXZpb3VzbHktY2FjaGVkIGluZGV4XG5cblx0XHRcdFx0XHRcdFx0Ly8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheVxuXHRcdFx0XHRcdFx0XHRub2RlID0gcGFyZW50O1xuXHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHQob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdGNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdO1xuXHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4ICYmIGNhY2hlWyAyIF07XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50LmNoaWxkTm9kZXNbIG5vZGVJbmRleCBdO1xuXG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBGYWxsYmFjayB0byBzZWVraW5nIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdChkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gV2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBvbiBgcGFyZW50YCBhbmQgYnJlYWtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKytkaWZmICYmIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBub2RlSW5kZXgsIGRpZmYgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBVc2UgcHJldmlvdXNseS1jYWNoZWQgZWxlbWVudCBpbmRleCBpZiBhdmFpbGFibGVcblx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW07XG5cdFx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0Y2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTtcblx0XHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4O1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8geG1sIDpudGgtY2hpbGQoLi4uKVxuXHRcdFx0XHRcdFx0XHQvLyBvciA6bnRoLWxhc3QtY2hpbGQoLi4uKSBvciA6bnRoKC1sYXN0KT8tb2YtdHlwZSguLi4pXG5cdFx0XHRcdFx0XHRcdGlmICggZGlmZiA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gVXNlIHRoZSBzYW1lIGxvb3AgYXMgYWJvdmUgdG8gc2VlayBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmICggKCBvZlR5cGUgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVUeXBlID09PSAxICkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0KytkaWZmICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIENhY2hlIHRoZSBpbmRleCBvZiBlYWNoIGVuY291bnRlcmVkIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gSW5jb3Jwb3JhdGUgdGhlIG9mZnNldCwgdGhlbiBjaGVjayBhZ2FpbnN0IGN5Y2xlIHNpemVcblx0XHRcdFx0XHRcdGRpZmYgLT0gbGFzdDtcblx0XHRcdFx0XHRcdHJldHVybiBkaWZmID09PSBmaXJzdCB8fCAoIGRpZmYgJSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3QgPj0gMCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIHBzZXVkbywgYXJndW1lbnQgKSB7XG5cdFx0XHQvLyBwc2V1ZG8tY2xhc3MgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmVcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jcHNldWRvLWNsYXNzZXNcblx0XHRcdC8vIFByaW9yaXRpemUgYnkgY2FzZSBzZW5zaXRpdml0eSBpbiBjYXNlIGN1c3RvbSBwc2V1ZG9zIGFyZSBhZGRlZCB3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzXG5cdFx0XHQvLyBSZW1lbWJlciB0aGF0IHNldEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBwc2V1ZG9zXG5cdFx0XHR2YXIgYXJncyxcblx0XHRcdFx0Zm4gPSBFeHByLnBzZXVkb3NbIHBzZXVkbyBdIHx8IEV4cHIuc2V0RmlsdGVyc1sgcHNldWRvLnRvTG93ZXJDYXNlKCkgXSB8fFxuXHRcdFx0XHRcdFNpenpsZS5lcnJvciggXCJ1bnN1cHBvcnRlZCBwc2V1ZG86IFwiICsgcHNldWRvICk7XG5cblx0XHRcdC8vIFRoZSB1c2VyIG1heSB1c2UgY3JlYXRlUHNldWRvIHRvIGluZGljYXRlIHRoYXRcblx0XHRcdC8vIGFyZ3VtZW50cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVyIGZ1bmN0aW9uXG5cdFx0XHQvLyBqdXN0IGFzIFNpenpsZSBkb2VzXG5cdFx0XHRpZiAoIGZuWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHJldHVybiBmbiggYXJndW1lbnQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQnV0IG1haW50YWluIHN1cHBvcnQgZm9yIG9sZCBzaWduYXR1cmVzXG5cdFx0XHRpZiAoIGZuLmxlbmd0aCA+IDEgKSB7XG5cdFx0XHRcdGFyZ3MgPSBbIHBzZXVkbywgcHNldWRvLCBcIlwiLCBhcmd1bWVudCBdO1xuXHRcdFx0XHRyZXR1cm4gRXhwci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KCBwc2V1ZG8udG9Mb3dlckNhc2UoKSApID9cblx0XHRcdFx0XHRtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7XG5cdFx0XHRcdFx0XHR2YXIgaWR4LFxuXHRcdFx0XHRcdFx0XHRtYXRjaGVkID0gZm4oIHNlZWQsIGFyZ3VtZW50ICksXG5cdFx0XHRcdFx0XHRcdGkgPSBtYXRjaGVkLmxlbmd0aDtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZHggPSBpbmRleE9mKCBzZWVkLCBtYXRjaGVkW2ldICk7XG5cdFx0XHRcdFx0XHRcdHNlZWRbIGlkeCBdID0gISggbWF0Y2hlc1sgaWR4IF0gPSBtYXRjaGVkW2ldICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkgOlxuXHRcdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZuKCBlbGVtLCAwLCBhcmdzICk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZuO1xuXHRcdH1cblx0fSxcblxuXHRwc2V1ZG9zOiB7XG5cdFx0Ly8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zXG5cdFx0XCJub3RcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRcdC8vIFRyaW0gdGhlIHNlbGVjdG9yIHBhc3NlZCB0byBjb21waWxlXG5cdFx0XHQvLyB0byBhdm9pZCB0cmVhdGluZyBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuXHRcdFx0Ly8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzXG5cdFx0XHR2YXIgaW5wdXQgPSBbXSxcblx0XHRcdFx0cmVzdWx0cyA9IFtdLFxuXHRcdFx0XHRtYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApICk7XG5cblx0XHRcdHJldHVybiBtYXRjaGVyWyBleHBhbmRvIF0gP1xuXHRcdFx0XHRtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMsIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgZWxlbSxcblx0XHRcdFx0XHRcdHVubWF0Y2hlZCA9IG1hdGNoZXIoIHNlZWQsIG51bGwsIHhtbCwgW10gKSxcblx0XHRcdFx0XHRcdGkgPSBzZWVkLmxlbmd0aDtcblxuXHRcdFx0XHRcdC8vIE1hdGNoIGVsZW1lbnRzIHVubWF0Y2hlZCBieSBgbWF0Y2hlcmBcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHRzZWVkW2ldID0gIShtYXRjaGVzW2ldID0gZWxlbSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0aW5wdXRbMF0gPSBlbGVtO1xuXHRcdFx0XHRcdG1hdGNoZXIoIGlucHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTtcblx0XHRcdFx0XHQvLyBEb24ndCBrZWVwIHRoZSBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0XHRcdGlucHV0WzBdID0gbnVsbDtcblx0XHRcdFx0XHRyZXR1cm4gIXJlc3VsdHMucG9wKCk7XG5cdFx0XHRcdH07XG5cdFx0fSksXG5cblx0XHRcImhhc1wiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gU2l6emxlKCBzZWxlY3RvciwgZWxlbSApLmxlbmd0aCA+IDA7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0XCJjb250YWluc1wiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0IHx8IGdldFRleHQoIGVsZW0gKSApLmluZGV4T2YoIHRleHQgKSA+IC0xO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdC8vIFwiV2hldGhlciBhbiBlbGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEgOmxhbmcoKSBzZWxlY3RvclxuXHRcdC8vIGlzIGJhc2VkIHNvbGVseSBvbiB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlXG5cdFx0Ly8gYmVpbmcgZXF1YWwgdG8gdGhlIGlkZW50aWZpZXIgQyxcblx0XHQvLyBvciBiZWdpbm5pbmcgd2l0aCB0aGUgaWRlbnRpZmllciBDIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IFwiLVwiLlxuXHRcdC8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWluc3QgdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LlxuXHRcdC8vIFRoZSBpZGVudGlmaWVyIEMgZG9lcyBub3QgaGF2ZSB0byBiZSBhIHZhbGlkIGxhbmd1YWdlIG5hbWUuXCJcblx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2xhbmctcHNldWRvXG5cdFx0XCJsYW5nXCI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIGxhbmcgKSB7XG5cdFx0XHQvLyBsYW5nIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBpZGVudGlmaWVyXG5cdFx0XHRpZiAoICFyaWRlbnRpZmllci50ZXN0KGxhbmcgfHwgXCJcIikgKSB7XG5cdFx0XHRcdFNpenpsZS5lcnJvciggXCJ1bnN1cHBvcnRlZCBsYW5nOiBcIiArIGxhbmcgKTtcblx0XHRcdH1cblx0XHRcdGxhbmcgPSBsYW5nLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIGVsZW1MYW5nO1xuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0aWYgKCAoZWxlbUxhbmcgPSBkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRcdFx0XHRlbGVtLmxhbmcgOlxuXHRcdFx0XHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoXCJ4bWw6bGFuZ1wiKSB8fCBlbGVtLmdldEF0dHJpYnV0ZShcImxhbmdcIikpICkge1xuXG5cdFx0XHRcdFx0XHRlbGVtTGFuZyA9IGVsZW1MYW5nLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbUxhbmcgPT09IGxhbmcgfHwgZWxlbUxhbmcuaW5kZXhPZiggbGFuZyArIFwiLVwiICkgPT09IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IHdoaWxlICggKGVsZW0gPSBlbGVtLnBhcmVudE5vZGUpICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdC8vIE1pc2NlbGxhbmVvdXNcblx0XHRcInRhcmdldFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHRcdFx0cmV0dXJuIGhhc2ggJiYgaGFzaC5zbGljZSggMSApID09PSBlbGVtLmlkO1xuXHRcdH0sXG5cblx0XHRcInJvb3RcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTtcblx0XHR9LFxuXG5cdFx0XCJmb2N1c1wiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICghZG9jdW1lbnQuaGFzRm9jdXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMoKSkgJiYgISEoZWxlbS50eXBlIHx8IGVsZW0uaHJlZiB8fCB+ZWxlbS50YWJJbmRleCk7XG5cdFx0fSxcblxuXHRcdC8vIEJvb2xlYW4gcHJvcGVydGllc1xuXHRcdFwiZW5hYmxlZFwiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZmFsc2UgKSxcblx0XHRcImRpc2FibGVkXCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCB0cnVlICksXG5cblx0XHRcImNoZWNrZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBJbiBDU1MzLCA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIGJvdGggY2hlY2tlZCBhbmQgc2VsZWN0ZWQgZWxlbWVudHNcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkXG5cdFx0XHR2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gKG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgISFlbGVtLmNoZWNrZWQpIHx8IChub2RlTmFtZSA9PT0gXCJvcHRpb25cIiAmJiAhIWVsZW0uc2VsZWN0ZWQpO1xuXHRcdH0sXG5cblx0XHRcInNlbGVjdGVkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gQWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgbWFrZXMgc2VsZWN0ZWQtYnktZGVmYXVsdFxuXHRcdFx0Ly8gb3B0aW9ucyBpbiBTYWZhcmkgd29yayBwcm9wZXJseVxuXHRcdFx0aWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0Ly8gQ29udGVudHNcblx0XHRcImVtcHR5XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNlbXB0eS1wc2V1ZG9cblx0XHRcdC8vIDplbXB0eSBpcyBuZWdhdGVkIGJ5IGVsZW1lbnQgKDEpIG9yIGNvbnRlbnQgbm9kZXMgKHRleHQ6IDM7IGNkYXRhOiA0OyBlbnRpdHkgcmVmOiA1KSxcblx0XHRcdC8vICAgYnV0IG5vdCBieSBvdGhlcnMgKGNvbW1lbnQ6IDg7IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb246IDc7IGV0Yy4pXG5cdFx0XHQvLyBub2RlVHlwZSA8IDYgd29ya3MgYmVjYXVzZSBhdHRyaWJ1dGVzICgyKSBkbyBub3QgYXBwZWFyIGFzIGNoaWxkcmVuXG5cdFx0XHRmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlIDwgNiApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cblx0XHRcInBhcmVudFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAhRXhwci5wc2V1ZG9zW1wiZW1wdHlcIl0oIGVsZW0gKTtcblx0XHR9LFxuXG5cdFx0Ly8gRWxlbWVudC9pbnB1dCB0eXBlc1xuXHRcdFwiaGVhZGVyXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIHJoZWFkZXIudGVzdCggZWxlbS5ub2RlTmFtZSApO1xuXHRcdH0sXG5cblx0XHRcImlucHV0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIHJpbnB1dHMudGVzdCggZWxlbS5ub2RlTmFtZSApO1xuXHRcdH0sXG5cblx0XHRcImJ1dHRvblwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IFwiYnV0dG9uXCIgfHwgbmFtZSA9PT0gXCJidXR0b25cIjtcblx0XHR9LFxuXG5cdFx0XCJ0ZXh0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGF0dHI7XG5cdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgJiZcblx0XHRcdFx0ZWxlbS50eXBlID09PSBcInRleHRcIiAmJlxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFPDhcblx0XHRcdFx0Ly8gTmV3IEhUTUw1IGF0dHJpYnV0ZSB2YWx1ZXMgKGUuZy4sIFwic2VhcmNoXCIpIGFwcGVhciB3aXRoIGVsZW0udHlwZSA9PT0gXCJ0ZXh0XCJcblx0XHRcdFx0KCAoYXR0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKSkgPT0gbnVsbCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkgPT09IFwidGV4dFwiICk7XG5cdFx0fSxcblxuXHRcdC8vIFBvc2l0aW9uLWluLWNvbGxlY3Rpb25cblx0XHRcImZpcnN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gWyAwIF07XG5cdFx0fSksXG5cblx0XHRcImxhc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gWyBsZW5ndGggLSAxIF07XG5cdFx0fSksXG5cblx0XHRcImVxXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHJldHVybiBbIGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQgXTtcblx0XHR9KSxcblxuXHRcdFwiZXZlblwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwib2RkXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAxO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJsdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7IC0taSA+PSAwOyApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcImd0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDtcblx0XHRcdGZvciAoIDsgKytpIDwgbGVuZ3RoOyApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSlcblx0fVxufTtcblxuRXhwci5wc2V1ZG9zW1wibnRoXCJdID0gRXhwci5wc2V1ZG9zW1wiZXFcIl07XG5cbi8vIEFkZCBidXR0b24vaW5wdXQgdHlwZSBwc2V1ZG9zXG5mb3IgKCBpIGluIHsgcmFkaW86IHRydWUsIGNoZWNrYm94OiB0cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDogdHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHtcblx0RXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVJbnB1dFBzZXVkbyggaSApO1xufVxuZm9yICggaSBpbiB7IHN1Ym1pdDogdHJ1ZSwgcmVzZXQ6IHRydWUgfSApIHtcblx0RXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVCdXR0b25Qc2V1ZG8oIGkgKTtcbn1cblxuLy8gRWFzeSBBUEkgZm9yIGNyZWF0aW5nIG5ldyBzZXRGaWx0ZXJzXG5mdW5jdGlvbiBzZXRGaWx0ZXJzKCkge31cbnNldEZpbHRlcnMucHJvdG90eXBlID0gRXhwci5maWx0ZXJzID0gRXhwci5wc2V1ZG9zO1xuRXhwci5zZXRGaWx0ZXJzID0gbmV3IHNldEZpbHRlcnMoKTtcblxudG9rZW5pemUgPSBTaXp6bGUudG9rZW5pemUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIHBhcnNlT25seSApIHtcblx0dmFyIG1hdGNoZWQsIG1hdGNoLCB0b2tlbnMsIHR5cGUsXG5cdFx0c29GYXIsIGdyb3VwcywgcHJlRmlsdGVycyxcblx0XHRjYWNoZWQgPSB0b2tlbkNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF07XG5cblx0aWYgKCBjYWNoZWQgKSB7XG5cdFx0cmV0dXJuIHBhcnNlT25seSA/IDAgOiBjYWNoZWQuc2xpY2UoIDAgKTtcblx0fVxuXG5cdHNvRmFyID0gc2VsZWN0b3I7XG5cdGdyb3VwcyA9IFtdO1xuXHRwcmVGaWx0ZXJzID0gRXhwci5wcmVGaWx0ZXI7XG5cblx0d2hpbGUgKCBzb0ZhciApIHtcblxuXHRcdC8vIENvbW1hIGFuZCBmaXJzdCBydW5cblx0XHRpZiAoICFtYXRjaGVkIHx8IChtYXRjaCA9IHJjb21tYS5leGVjKCBzb0ZhciApKSApIHtcblx0XHRcdGlmICggbWF0Y2ggKSB7XG5cdFx0XHRcdC8vIERvbid0IGNvbnN1bWUgdHJhaWxpbmcgY29tbWFzIGFzIHZhbGlkXG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoWzBdLmxlbmd0aCApIHx8IHNvRmFyO1xuXHRcdFx0fVxuXHRcdFx0Z3JvdXBzLnB1c2goICh0b2tlbnMgPSBbXSkgKTtcblx0XHR9XG5cblx0XHRtYXRjaGVkID0gZmFsc2U7XG5cblx0XHQvLyBDb21iaW5hdG9yc1xuXHRcdGlmICggKG1hdGNoID0gcmNvbWJpbmF0b3JzLmV4ZWMoIHNvRmFyICkpICkge1xuXHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXHRcdFx0XHQvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmluYXRvcnMgdG8gc3BhY2Vcblx0XHRcdFx0dHlwZTogbWF0Y2hbMF0ucmVwbGFjZSggcnRyaW0sIFwiIFwiIClcblx0XHRcdH0pO1xuXHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTtcblx0XHR9XG5cblx0XHQvLyBGaWx0ZXJzXG5cdFx0Zm9yICggdHlwZSBpbiBFeHByLmZpbHRlciApIHtcblx0XHRcdGlmICggKG1hdGNoID0gbWF0Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0ZXJzWyB0eXBlIF0gfHxcblx0XHRcdFx0KG1hdGNoID0gcHJlRmlsdGVyc1sgdHlwZSBdKCBtYXRjaCApKSkgKSB7XG5cdFx0XHRcdG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpO1xuXHRcdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cdFx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0XHRtYXRjaGVzOiBtYXRjaFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoICFtYXRjaGVkICkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGludmFsaWQgZXhjZXNzXG5cdC8vIGlmIHdlJ3JlIGp1c3QgcGFyc2luZ1xuXHQvLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9yIG9yIHJldHVybiB0b2tlbnNcblx0cmV0dXJuIHBhcnNlT25seSA/XG5cdFx0c29GYXIubGVuZ3RoIDpcblx0XHRzb0ZhciA/XG5cdFx0XHRTaXp6bGUuZXJyb3IoIHNlbGVjdG9yICkgOlxuXHRcdFx0Ly8gQ2FjaGUgdGhlIHRva2Vuc1xuXHRcdFx0dG9rZW5DYWNoZSggc2VsZWN0b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7XG59O1xuXG5mdW5jdGlvbiB0b1NlbGVjdG9yKCB0b2tlbnMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSB0b2tlbnMubGVuZ3RoLFxuXHRcdHNlbGVjdG9yID0gXCJcIjtcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0c2VsZWN0b3IgKz0gdG9rZW5zW2ldLnZhbHVlO1xuXHR9XG5cdHJldHVybiBzZWxlY3Rvcjtcbn1cblxuZnVuY3Rpb24gYWRkQ29tYmluYXRvciggbWF0Y2hlciwgY29tYmluYXRvciwgYmFzZSApIHtcblx0dmFyIGRpciA9IGNvbWJpbmF0b3IuZGlyLFxuXHRcdHNraXAgPSBjb21iaW5hdG9yLm5leHQsXG5cdFx0a2V5ID0gc2tpcCB8fCBkaXIsXG5cdFx0Y2hlY2tOb25FbGVtZW50cyA9IGJhc2UgJiYga2V5ID09PSBcInBhcmVudE5vZGVcIixcblx0XHRkb25lTmFtZSA9IGRvbmUrKztcblxuXHRyZXR1cm4gY29tYmluYXRvci5maXJzdCA/XG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBjbG9zZXN0IGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdHJldHVybiBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gOlxuXG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRzXG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBvbGRDYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsXG5cdFx0XHRcdG5ld0NhY2hlID0gWyBkaXJydW5zLCBkb25lTmFtZSBdO1xuXG5cdFx0XHQvLyBXZSBjYW4ndCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5vZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQgZnJvbSBjb21iaW5hdG9yIGNhY2hpbmdcblx0XHRcdGlmICggeG1sICkge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdIHx8IChvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdGlmICggc2tpcCAmJiBza2lwID09PSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgKSB7XG5cdFx0XHRcdFx0XHRcdGVsZW0gPSBlbGVtWyBkaXIgXSB8fCBlbGVtO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICggKG9sZENhY2hlID0gdW5pcXVlQ2FjaGVbIGtleSBdKSAmJlxuXHRcdFx0XHRcdFx0XHRvbGRDYWNoZVsgMCBdID09PSBkaXJydW5zICYmIG9sZENhY2hlWyAxIF0gPT09IGRvbmVOYW1lICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFzc2lnbiB0byBuZXdDYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdHJldHVybiAobmV3Q2FjaGVbIDIgXSA9IG9sZENhY2hlWyAyIF0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmV1c2UgbmV3Y2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50c1xuXHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsga2V5IF0gPSBuZXdDYWNoZTtcblxuXHRcdFx0XHRcdFx0XHQvLyBBIG1hdGNoIG1lYW5zIHdlJ3JlIGRvbmU7IGEgZmFpbCBtZWFucyB3ZSBoYXZlIHRvIGtlZXAgY2hlY2tpbmdcblx0XHRcdFx0XHRcdFx0aWYgKCAobmV3Q2FjaGVbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG59XG5cbmZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApIHtcblx0cmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgP1xuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgaSA9IG1hdGNoZXJzLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoICFtYXRjaGVyc1tpXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IDpcblx0XHRtYXRjaGVyc1swXTtcbn1cblxuZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gY29udGV4dHMubGVuZ3RoO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyApO1xuXHR9XG5cdHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBjb25kZW5zZSggdW5tYXRjaGVkLCBtYXAsIGZpbHRlciwgY29udGV4dCwgeG1sICkge1xuXHR2YXIgZWxlbSxcblx0XHRuZXdVbm1hdGNoZWQgPSBbXSxcblx0XHRpID0gMCxcblx0XHRsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLFxuXHRcdG1hcHBlZCA9IG1hcCAhPSBudWxsO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkge1xuXHRcdFx0aWYgKCAhZmlsdGVyIHx8IGZpbHRlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdG5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdGlmICggbWFwcGVkICkge1xuXHRcdFx0XHRcdG1hcC5wdXNoKCBpICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbmV3VW5tYXRjaGVkO1xufVxuXG5mdW5jdGlvbiBzZXRNYXRjaGVyKCBwcmVGaWx0ZXIsIHNlbGVjdG9yLCBtYXRjaGVyLCBwb3N0RmlsdGVyLCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKSB7XG5cdGlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaWx0ZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmlsdGVyICk7XG5cdH1cblx0aWYgKCBwb3N0RmluZGVyICYmICFwb3N0RmluZGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbmRlciA9IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApO1xuXHR9XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCApIHtcblx0XHR2YXIgdGVtcCwgaSwgZWxlbSxcblx0XHRcdHByZU1hcCA9IFtdLFxuXHRcdFx0cG9zdE1hcCA9IFtdLFxuXHRcdFx0cHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCxcblxuXHRcdFx0Ly8gR2V0IGluaXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHRcblx0XHRcdGVsZW1zID0gc2VlZCB8fCBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciB8fCBcIipcIiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4dCwgW10gKSxcblxuXHRcdFx0Ly8gUHJlZmlsdGVyIHRvIGdldCBtYXRjaGVyIGlucHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25pemF0aW9uXG5cdFx0XHRtYXRjaGVySW4gPSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFzZWxlY3RvciApID9cblx0XHRcdFx0Y29uZGVuc2UoIGVsZW1zLCBwcmVNYXAsIHByZUZpbHRlciwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRlbGVtcyxcblxuXHRcdFx0bWF0Y2hlck91dCA9IG1hdGNoZXIgP1xuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLFxuXHRcdFx0XHRwb3N0RmluZGVyIHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIgKSA/XG5cblx0XHRcdFx0XHQvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3Nhcnlcblx0XHRcdFx0XHRbXSA6XG5cblx0XHRcdFx0XHQvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHlcblx0XHRcdFx0XHRyZXN1bHRzIDpcblx0XHRcdFx0bWF0Y2hlckluO1xuXG5cdFx0Ly8gRmluZCBwcmltYXJ5IG1hdGNoZXNcblx0XHRpZiAoIG1hdGNoZXIgKSB7XG5cdFx0XHRtYXRjaGVyKCBtYXRjaGVySW4sIG1hdGNoZXJPdXQsIGNvbnRleHQsIHhtbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHBvc3RGaWx0ZXJcblx0XHRpZiAoIHBvc3RGaWx0ZXIgKSB7XG5cdFx0XHR0ZW1wID0gY29uZGVuc2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTtcblx0XHRcdHBvc3RGaWx0ZXIoIHRlbXAsIFtdLCBjb250ZXh0LCB4bWwgKTtcblxuXHRcdFx0Ly8gVW4tbWF0Y2ggZmFpbGluZyBlbGVtZW50cyBieSBtb3ZpbmcgdGhlbSBiYWNrIHRvIG1hdGNoZXJJblxuXHRcdFx0aSA9IHRlbXAubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyT3V0WyBwb3N0TWFwW2ldIF0gPSAhKG1hdGNoZXJJblsgcG9zdE1hcFtpXSBdID0gZWxlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgfHwgcHJlRmlsdGVyICkge1xuXHRcdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdFx0Ly8gR2V0IHRoZSBmaW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRleHRzXG5cdFx0XHRcdFx0dGVtcCA9IFtdO1xuXHRcdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSApIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0Y2hcblx0XHRcdFx0XHRcdFx0dGVtcC5wdXNoKCAobWF0Y2hlckluW2ldID0gZWxlbSkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgKG1hdGNoZXJPdXQgPSBbXSksIHRlbXAsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWRcblx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgJiZcblx0XHRcdFx0XHRcdCh0ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4T2YoIHNlZWQsIGVsZW0gKSA6IHByZU1hcFtpXSkgPiAtMSApIHtcblxuXHRcdFx0XHRcdFx0c2VlZFt0ZW1wXSA9ICEocmVzdWx0c1t0ZW1wXSA9IGVsZW0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gQWRkIGVsZW1lbnRzIHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkXG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXJPdXQgPSBjb25kZW5zZShcblx0XHRcdFx0bWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/XG5cdFx0XHRcdFx0bWF0Y2hlck91dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBtYXRjaGVyT3V0Lmxlbmd0aCApIDpcblx0XHRcdFx0XHRtYXRjaGVyT3V0XG5cdFx0XHQpO1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCByZXN1bHRzLCBtYXRjaGVyT3V0LCB4bWwgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zICkge1xuXHR2YXIgY2hlY2tDb250ZXh0LCBtYXRjaGVyLCBqLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0bGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUgXSxcblx0XHRpbXBsaWNpdFJlbGF0aXZlID0gbGVhZGluZ1JlbGF0aXZlIHx8IEV4cHIucmVsYXRpdmVbXCIgXCJdLFxuXHRcdGkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCxcblxuXHRcdC8vIFRoZSBmb3VuZGF0aW9uYWwgbWF0Y2hlciBlbnN1cmVzIHRoYXQgZWxlbWVudHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRvcC1sZXZlbCBjb250ZXh0KHMpXG5cdFx0bWF0Y2hDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gY2hlY2tDb250ZXh0O1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaEFueUNvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBpbmRleE9mKCBjaGVja0NvbnRleHQsIGVsZW0gKSA+IC0xO1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaGVycyA9IFsgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciByZXQgPSAoICFsZWFkaW5nUmVsYXRpdmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCApICkgfHwgKFxuXHRcdFx0XHQoY2hlY2tDb250ZXh0ID0gY29udGV4dCkubm9kZVR5cGUgP1xuXHRcdFx0XHRcdG1hdGNoQ29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRcdG1hdGNoQW55Q29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgKTtcblx0XHRcdC8vIEF2b2lkIGhhbmdpbmcgb250byBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0Y2hlY2tDb250ZXh0ID0gbnVsbDtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fSBdO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHtcblx0XHRcdG1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyKSBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyID0gRXhwci5maWx0ZXJbIHRva2Vuc1tpXS50eXBlIF0uYXBwbHkoIG51bGwsIHRva2Vuc1tpXS5tYXRjaGVzICk7XG5cblx0XHRcdC8vIFJldHVybiBzcGVjaWFsIHVwb24gc2VlaW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyXG5cdFx0XHRpZiAoIG1hdGNoZXJbIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0Ly8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nXG5cdFx0XHRcdGogPSArK2k7XG5cdFx0XHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2pdLnR5cGUgXSApIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc2V0TWF0Y2hlcihcblx0XHRcdFx0XHRpID4gMSAmJiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSxcblx0XHRcdFx0XHRpID4gMSAmJiB0b1NlbGVjdG9yKFxuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMgYSBkZXNjZW5kYW50IGNvbWJpbmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBgKmBcblx0XHRcdFx0XHRcdHRva2Vucy5zbGljZSggMCwgaSAtIDEgKS5jb25jYXQoeyB2YWx1ZTogdG9rZW5zWyBpIC0gMiBdLnR5cGUgPT09IFwiIFwiID8gXCIqXCIgOiBcIlwiIH0pXG5cdFx0XHRcdFx0KS5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksXG5cdFx0XHRcdFx0bWF0Y2hlcixcblx0XHRcdFx0XHRpIDwgaiAmJiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zLnNsaWNlKCBpLCBqICkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIG1hdGNoZXJGcm9tVG9rZW5zKCAodG9rZW5zID0gdG9rZW5zLnNsaWNlKCBqICkpICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlcnMucHVzaCggbWF0Y2hlciApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkge1xuXHR2YXIgYnlTZXQgPSBzZXRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdGJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdHN1cGVyTWF0Y2hlciA9IGZ1bmN0aW9uKCBzZWVkLCBjb250ZXh0LCB4bWwsIHJlc3VsdHMsIG91dGVybW9zdCApIHtcblx0XHRcdHZhciBlbGVtLCBqLCBtYXRjaGVyLFxuXHRcdFx0XHRtYXRjaGVkQ291bnQgPSAwLFxuXHRcdFx0XHRpID0gXCIwXCIsXG5cdFx0XHRcdHVubWF0Y2hlZCA9IHNlZWQgJiYgW10sXG5cdFx0XHRcdHNldE1hdGNoZWQgPSBbXSxcblx0XHRcdFx0Y29udGV4dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQsXG5cdFx0XHRcdC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNvbnRleHRcblx0XHRcdFx0ZWxlbXMgPSBzZWVkIHx8IGJ5RWxlbWVudCAmJiBFeHByLmZpbmRbXCJUQUdcIl0oIFwiKlwiLCBvdXRlcm1vc3QgKSxcblx0XHRcdFx0Ly8gVXNlIGludGVnZXIgZGlycnVucyBpZmYgdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IG1hdGNoZXJcblx0XHRcdFx0ZGlycnVuc1VuaXF1ZSA9IChkaXJydW5zICs9IGNvbnRleHRCYWNrdXAgPT0gbnVsbCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IDAuMSksXG5cdFx0XHRcdGxlbiA9IGVsZW1zLmxlbmd0aDtcblxuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0ID09PSBkb2N1bWVudCB8fCBjb250ZXh0IHx8IG91dGVybW9zdDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxlbWVudE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHNcblx0XHRcdC8vIFN1cHBvcnQ6IElFPDksIFNhZmFyaVxuXHRcdFx0Ly8gVG9sZXJhdGUgTm9kZUxpc3QgcHJvcGVydGllcyAoSUU6IFwibGVuZ3RoXCI7IFNhZmFyaTogPG51bWJlcj4pIG1hdGNoaW5nIGVsZW1lbnRzIGJ5IGlkXG5cdFx0XHRmb3IgKCA7IGkgIT09IGxlbiAmJiAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHRcdGlmICggYnlFbGVtZW50ICYmIGVsZW0gKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0aWYgKCAhY29udGV4dCAmJiBlbGVtLm93bmVyRG9jdW1lbnQgIT09IGRvY3VtZW50ICkge1xuXHRcdFx0XHRcdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0XHRcdFx0XHRcdHhtbCA9ICFkb2N1bWVudElzSFRNTDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0d2hpbGUgKCAobWF0Y2hlciA9IGVsZW1lbnRNYXRjaGVyc1tqKytdKSApIHtcblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCB8fCBkb2N1bWVudCwgeG1sKSApIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnNcblx0XHRcdFx0aWYgKCBieVNldCApIHtcblx0XHRcdFx0XHQvLyBUaGV5IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzXG5cdFx0XHRcdFx0aWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkge1xuXHRcdFx0XHRcdFx0bWF0Y2hlZENvdW50LS07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBldmVyeSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdFxuXHRcdFx0XHRcdGlmICggc2VlZCApIHtcblx0XHRcdFx0XHRcdHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIGBpYCBpcyBub3cgdGhlIGNvdW50IG9mIGVsZW1lbnRzIHZpc2l0ZWQgYWJvdmUsIGFuZCBhZGRpbmcgaXQgdG8gYG1hdGNoZWRDb3VudGBcblx0XHRcdC8vIG1ha2VzIHRoZSBsYXR0ZXIgbm9ubmVnYXRpdmUuXG5cdFx0XHRtYXRjaGVkQ291bnQgKz0gaTtcblxuXHRcdFx0Ly8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzXG5cdFx0XHQvLyBOT1RFOiBUaGlzIGNhbiBiZSBza2lwcGVkIGlmIHRoZXJlIGFyZSBubyB1bm1hdGNoZWQgZWxlbWVudHMgKGkuZS4sIGBtYXRjaGVkQ291bnRgXG5cdFx0XHQvLyBlcXVhbHMgYGlgKSwgdW5sZXNzIHdlIGRpZG4ndCB2aXNpdCBfYW55XyBlbGVtZW50cyBpbiB0aGUgYWJvdmUgbG9vcCBiZWNhdXNlIHdlIGhhdmVcblx0XHRcdC8vIG5vIGVsZW1lbnQgbWF0Y2hlcnMgYW5kIG5vIHNlZWQuXG5cdFx0XHQvLyBJbmNyZW1lbnRpbmcgYW4gaW5pdGlhbGx5LXN0cmluZyBcIjBcIiBgaWAgYWxsb3dzIGBpYCB0byByZW1haW4gYSBzdHJpbmcgb25seSBpbiB0aGF0XG5cdFx0XHQvLyBjYXNlLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBhIFwiMDBcIiBgbWF0Y2hlZENvdW50YCB0aGF0IGRpZmZlcnMgZnJvbSBgaWAgYnV0IGlzIGFsc29cblx0XHRcdC8vIG51bWVyaWNhbGx5IHplcm8uXG5cdFx0XHRpZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCApIHtcblx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdHdoaWxlICggKG1hdGNoZXIgPSBzZXRNYXRjaGVyc1tqKytdKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyKCB1bm1hdGNoZWQsIHNldE1hdGNoZWQsIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdC8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmdcblx0XHRcdFx0XHRpZiAoIG1hdGNoZWRDb3VudCA+IDAgKSB7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ldKSApIHtcblx0XHRcdFx0XHRcdFx0XHRzZXRNYXRjaGVkW2ldID0gcG9wLmNhbGwoIHJlc3VsdHMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRjaGVzXG5cdFx0XHRcdFx0c2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBZGQgbWF0Y2hlcyB0byByZXN1bHRzXG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTtcblxuXHRcdFx0XHQvLyBTZWVkbGVzcyBzZXQgbWF0Y2hlcyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwgbWF0Y2hlcnMgc3RpcHVsYXRlIHNvcnRpbmdcblx0XHRcdFx0aWYgKCBvdXRlcm1vc3QgJiYgIXNlZWQgJiYgc2V0TWF0Y2hlZC5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0KCBtYXRjaGVkQ291bnQgKyBzZXRNYXRjaGVycy5sZW5ndGggKSA+IDEgKSB7XG5cblx0XHRcdFx0XHRTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIE92ZXJyaWRlIG1hbmlwdWxhdGlvbiBvZiBnbG9iYWxzIGJ5IG5lc3RlZCBtYXRjaGVyc1xuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dEJhY2t1cDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHVubWF0Y2hlZDtcblx0XHR9O1xuXG5cdHJldHVybiBieVNldCA/XG5cdFx0bWFya0Z1bmN0aW9uKCBzdXBlck1hdGNoZXIgKSA6XG5cdFx0c3VwZXJNYXRjaGVyO1xufVxuXG5jb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIG1hdGNoIC8qIEludGVybmFsIFVzZSBPbmx5ICovICkge1xuXHR2YXIgaSxcblx0XHRzZXRNYXRjaGVycyA9IFtdLFxuXHRcdGVsZW1lbnRNYXRjaGVycyA9IFtdLFxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoICFjYWNoZWQgKSB7XG5cdFx0Ly8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1cnNpdmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50XG5cdFx0aWYgKCAhbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdH1cblx0XHRpID0gbWF0Y2gubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0Y2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoW2ldICk7XG5cdFx0XHRpZiAoIGNhY2hlZFsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1lbnRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb25cblx0XHRjYWNoZWQgPSBjb21waWxlckNhY2hlKCBzZWxlY3RvciwgbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkgKTtcblxuXHRcdC8vIFNhdmUgc2VsZWN0b3IgYW5kIHRva2VuaXphdGlvblxuXHRcdGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yO1xuXHR9XG5cdHJldHVybiBjYWNoZWQ7XG59O1xuXG4vKipcbiAqIEEgbG93LWxldmVsIHNlbGVjdGlvbiBmdW5jdGlvbiB0aGF0IHdvcmtzIHdpdGggU2l6emxlJ3MgY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBzZWxlY3RvciBBIHNlbGVjdG9yIG9yIGEgcHJlLWNvbXBpbGVkXG4gKiAgc2VsZWN0b3IgZnVuY3Rpb24gYnVpbHQgd2l0aCBTaXp6bGUuY29tcGlsZVxuICogQHBhcmFtIHtFbGVtZW50fSBjb250ZXh0XG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0c11cbiAqIEBwYXJhbSB7QXJyYXl9IFtzZWVkXSBBIHNldCBvZiBlbGVtZW50cyB0byBtYXRjaCBhZ2FpbnN0XG4gKi9cbnNlbGVjdCA9IFNpenpsZS5zZWxlY3QgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBpLCB0b2tlbnMsIHRva2VuLCB0eXBlLCBmaW5kLFxuXHRcdGNvbXBpbGVkID0gdHlwZW9mIHNlbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgc2VsZWN0b3IsXG5cdFx0bWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6ZSggKHNlbGVjdG9yID0gY29tcGlsZWQuc2VsZWN0b3IgfHwgc2VsZWN0b3IpICk7XG5cblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cblx0Ly8gVHJ5IHRvIG1pbmltaXplIG9wZXJhdGlvbnMgaWYgdGhlcmUgaXMgb25seSBvbmUgc2VsZWN0b3IgaW4gdGhlIGxpc3QgYW5kIG5vIHNlZWRcblx0Ly8gKHRoZSBsYXR0ZXIgb2Ygd2hpY2ggZ3VhcmFudGVlcyB1cyBjb250ZXh0KVxuXHRpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHtcblxuXHRcdC8vIFJlZHVjZSBjb250ZXh0IGlmIHRoZSBsZWFkaW5nIGNvbXBvdW5kIHNlbGVjdG9yIGlzIGFuIElEXG5cdFx0dG9rZW5zID0gbWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCApO1xuXHRcdGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5zWzBdKS50eXBlID09PSBcIklEXCIgJiZcblx0XHRcdFx0Y29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiBkb2N1bWVudElzSFRNTCAmJiBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkge1xuXG5cdFx0XHRjb250ZXh0ID0gKCBFeHByLmZpbmRbXCJJRFwiXSggdG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSwgZnVuZXNjYXBlKSwgY29udGV4dCApIHx8IFtdIClbMF07XG5cdFx0XHRpZiAoICFjb250ZXh0ICkge1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblxuXHRcdFx0Ly8gUHJlY29tcGlsZWQgbWF0Y2hlcnMgd2lsbCBzdGlsbCB2ZXJpZnkgYW5jZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbFxuXHRcdFx0fSBlbHNlIGlmICggY29tcGlsZWQgKSB7XG5cdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cblx0XHRcdHNlbGVjdG9yID0gc2VsZWN0b3Iuc2xpY2UoIHRva2Vucy5zaGlmdCgpLnZhbHVlLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZldGNoIGEgc2VlZCBzZXQgZm9yIHJpZ2h0LXRvLWxlZnQgbWF0Y2hpbmdcblx0XHRpID0gbWF0Y2hFeHByW1wibmVlZHNDb250ZXh0XCJdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9rZW5zLmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHRva2VuID0gdG9rZW5zW2ldO1xuXG5cdFx0XHQvLyBBYm9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yXG5cdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbICh0eXBlID0gdG9rZW4udHlwZSkgXSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIChmaW5kID0gRXhwci5maW5kWyB0eXBlIF0pICkge1xuXHRcdFx0XHQvLyBTZWFyY2gsIGV4cGFuZGluZyBjb250ZXh0IGZvciBsZWFkaW5nIHNpYmxpbmcgY29tYmluYXRvcnNcblx0XHRcdFx0aWYgKCAoc2VlZCA9IGZpbmQoXG5cdFx0XHRcdFx0dG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLFxuXHRcdFx0XHRcdHJzaWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBlICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHRcblx0XHRcdFx0KSkgKSB7XG5cblx0XHRcdFx0XHQvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHlcblx0XHRcdFx0XHR0b2tlbnMuc3BsaWNlKCBpLCAxICk7XG5cdFx0XHRcdFx0c2VsZWN0b3IgPSBzZWVkLmxlbmd0aCAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKTtcblx0XHRcdFx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNlZWQgKTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ29tcGlsZSBhbmQgZXhlY3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG5cdC8vIFByb3ZpZGUgYG1hdGNoYCB0byBhdm9pZCByZXRva2VuaXphdGlvbiBpZiB3ZSBtb2RpZmllZCB0aGUgc2VsZWN0b3IgYWJvdmVcblx0KCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3RvciwgbWF0Y2ggKSApKFxuXHRcdHNlZWQsXG5cdFx0Y29udGV4dCxcblx0XHQhZG9jdW1lbnRJc0hUTUwsXG5cdFx0cmVzdWx0cyxcblx0XHQhY29udGV4dCB8fCByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0XG5cdCk7XG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gT25lLXRpbWUgYXNzaWdubWVudHNcblxuLy8gU29ydCBzdGFiaWxpdHlcbnN1cHBvcnQuc29ydFN0YWJsZSA9IGV4cGFuZG8uc3BsaXQoXCJcIikuc29ydCggc29ydE9yZGVyICkuam9pbihcIlwiKSA9PT0gZXhwYW5kbztcblxuLy8gU3VwcG9ydDogQ2hyb21lIDE0LTM1K1xuLy8gQWx3YXlzIGFzc3VtZSBkdXBsaWNhdGVzIGlmIHRoZXkgYXJlbid0IHBhc3NlZCB0byB0aGUgY29tcGFyaXNvbiBmdW5jdGlvblxuc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzID0gISFoYXNEdXBsaWNhdGU7XG5cbi8vIEluaXRpYWxpemUgYWdhaW5zdCB0aGUgZGVmYXVsdCBkb2N1bWVudFxuc2V0RG9jdW1lbnQoKTtcblxuLy8gU3VwcG9ydDogV2Via2l0PDUzNy4zMiAtIFNhZmFyaSA2LjAuMy9DaHJvbWUgMjUgKGZpeGVkIGluIENocm9tZSAyNylcbi8vIERldGFjaGVkIG5vZGVzIGNvbmZvdW5kaW5nbHkgZm9sbG93ICplYWNoIG90aGVyKlxuc3VwcG9ydC5zb3J0RGV0YWNoZWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHQvLyBTaG91bGQgcmV0dXJuIDEsIGJ1dCByZXR1cm5zIDQgKGZvbGxvd2luZylcblx0cmV0dXJuIGVsLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmllbGRzZXRcIikgKSAmIDE7XG59KTtcblxuLy8gU3VwcG9ydDogSUU8OFxuLy8gUHJldmVudCBhdHRyaWJ1dGUvcHJvcGVydHkgXCJpbnRlcnBvbGF0aW9uXCJcbi8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5hc3B4XG5pZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRlbC5pbm5lckhUTUwgPSBcIjxhIGhyZWY9JyMnPjwvYT5cIjtcblx0cmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSA9PT0gXCIjXCIgO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggXCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoXCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwgbmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInR5cGVcIiA/IDEgOiAyICk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGRlZmF1bHRWYWx1ZSBpbiBwbGFjZSBvZiBnZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKVxuaWYgKCAhc3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRlbC5pbm5lckhUTUwgPSBcIjxpbnB1dC8+XCI7XG5cdGVsLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCBcInZhbHVlXCIsIFwiXCIgKTtcblx0cmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gXCJcIjtcbn0pICkge1xuXHRhZGRIYW5kbGUoIFwidmFsdWVcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGVmYXVsdFZhbHVlO1xuXHRcdH1cblx0fSk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBnZXRBdHRyaWJ1dGVOb2RlIHRvIGZldGNoIGJvb2xlYW5zIHdoZW4gZ2V0QXR0cmlidXRlIGxpZXNcbmlmICggIWFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSA9PSBudWxsO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggYm9vbGVhbnMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgdmFsO1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW1bIG5hbWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dlckNhc2UoKSA6XG5cdFx0XHRcdFx0KHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xuXHRcdH1cblx0fSk7XG59XG5cbnJldHVybiBTaXp6bGU7XG5cbn0pKCB3aW5kb3cgKTtcblxuXG5cbmpRdWVyeS5maW5kID0gU2l6emxlO1xualF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzO1xuXG4vLyBEZXByZWNhdGVkXG5qUXVlcnkuZXhwclsgXCI6XCIgXSA9IGpRdWVyeS5leHByLnBzZXVkb3M7XG5qUXVlcnkudW5pcXVlU29ydCA9IGpRdWVyeS51bmlxdWUgPSBTaXp6bGUudW5pcXVlU29ydDtcbmpRdWVyeS50ZXh0ID0gU2l6emxlLmdldFRleHQ7XG5qUXVlcnkuaXNYTUxEb2MgPSBTaXp6bGUuaXNYTUw7XG5qUXVlcnkuY29udGFpbnMgPSBTaXp6bGUuY29udGFpbnM7XG5qUXVlcnkuZXNjYXBlU2VsZWN0b3IgPSBTaXp6bGUuZXNjYXBlO1xuXG5cblxuXG52YXIgZGlyID0gZnVuY3Rpb24oIGVsZW0sIGRpciwgdW50aWwgKSB7XG5cdHZhciBtYXRjaGVkID0gW10sXG5cdFx0dHJ1bmNhdGUgPSB1bnRpbCAhPT0gdW5kZWZpbmVkO1xuXG5cdHdoaWxlICggKCBlbGVtID0gZWxlbVsgZGlyIF0gKSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkge1xuXHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdGlmICggdHJ1bmNhdGUgJiYgalF1ZXJ5KCBlbGVtICkuaXMoIHVudGlsICkgKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYXRjaGVkO1xufTtcblxuXG52YXIgc2libGluZ3MgPSBmdW5jdGlvbiggbiwgZWxlbSApIHtcblx0dmFyIG1hdGNoZWQgPSBbXTtcblxuXHRmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkge1xuXHRcdGlmICggbi5ub2RlVHlwZSA9PT0gMSAmJiBuICE9PSBlbGVtICkge1xuXHRcdFx0bWF0Y2hlZC5wdXNoKCBuICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1hdGNoZWQ7XG59O1xuXG5cbnZhciBybmVlZHNDb250ZXh0ID0galF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0O1xuXG5cblxuZnVuY3Rpb24gbm9kZU5hbWUoIGVsZW0sIG5hbWUgKSB7XG5cbiAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cbn07XG52YXIgcnNpbmdsZVRhZyA9ICggL148KFthLXpdW15cXC9cXDA+OlxceDIwXFx0XFxyXFxuXFxmXSopW1xceDIwXFx0XFxyXFxuXFxmXSpcXC8/Pig/OjxcXC9cXDE+fCkkL2kgKTtcblxuXG5cbi8vIEltcGxlbWVudCB0aGUgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgZm9yIGZpbHRlciBhbmQgbm90XG5mdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIG5vdCApIHtcblx0aWYgKCBpc0Z1bmN0aW9uKCBxdWFsaWZpZXIgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBTaW5nbGUgZWxlbWVudFxuXHRpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGVsZW0gPT09IHF1YWxpZmllciApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gQXJyYXlsaWtlIG9mIGVsZW1lbnRzIChqUXVlcnksIGFyZ3VtZW50cywgQXJyYXkpXG5cdGlmICggdHlwZW9mIHF1YWxpZmllciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBlbGVtICkgPiAtMSApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gRmlsdGVyZWQgZGlyZWN0bHkgZm9yIGJvdGggc2ltcGxlIGFuZCBjb21wbGV4IHNlbGVjdG9yc1xuXHRyZXR1cm4galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cywgbm90ICk7XG59XG5cbmpRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHtcblx0dmFyIGVsZW0gPSBlbGVtc1sgMCBdO1xuXG5cdGlmICggbm90ICkge1xuXHRcdGV4cHIgPSBcIjpub3QoXCIgKyBleHByICsgXCIpXCI7XG5cdH1cblxuXHRpZiAoIGVsZW1zLmxlbmd0aCA9PT0gMSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdHJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGVsZW0sIGV4cHIgKSA/IFsgZWxlbSBdIDogW107XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlcyggZXhwciwgalF1ZXJ5LmdyZXAoIGVsZW1zLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVHlwZSA9PT0gMTtcblx0fSApICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgaSwgcmV0LFxuXHRcdFx0bGVuID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRzZWxmID0gdGhpcztcblxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKSApO1xuXHRcdH1cblxuXHRcdHJldCA9IHRoaXMucHVzaFN0YWNrKCBbXSApO1xuXG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGpRdWVyeS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCByZXQgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbGVuID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCByZXQgKSA6IHJldDtcblx0fSxcblx0ZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3coIHRoaXMsIHNlbGVjdG9yIHx8IFtdLCBmYWxzZSApICk7XG5cdH0sXG5cdG5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgdHJ1ZSApICk7XG5cdH0sXG5cdGlzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuICEhd2lubm93KFxuXHRcdFx0dGhpcyxcblxuXHRcdFx0Ly8gSWYgdGhpcyBpcyBhIHBvc2l0aW9uYWwvcmVsYXRpdmUgc2VsZWN0b3IsIGNoZWNrIG1lbWJlcnNoaXAgaW4gdGhlIHJldHVybmVkIHNldFxuXHRcdFx0Ly8gc28gJChcInA6Zmlyc3RcIikuaXMoXCJwOmxhc3RcIikgd29uJ3QgcmV0dXJuIHRydWUgZm9yIGEgZG9jIHdpdGggdHdvIFwicFwiLlxuXHRcdFx0dHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICYmIHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSA/XG5cdFx0XHRcdGpRdWVyeSggc2VsZWN0b3IgKSA6XG5cdFx0XHRcdHNlbGVjdG9yIHx8IFtdLFxuXHRcdFx0ZmFsc2Vcblx0XHQpLmxlbmd0aDtcblx0fVxufSApO1xuXG5cbi8vIEluaXRpYWxpemUgYSBqUXVlcnkgb2JqZWN0XG5cblxuLy8gQSBjZW50cmFsIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBqUXVlcnkoZG9jdW1lbnQpXG52YXIgcm9vdGpRdWVyeSxcblxuXHQvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5nc1xuXHQvLyBQcmlvcml0aXplICNpZCBvdmVyIDx0YWc+IHRvIGF2b2lkIFhTUyB2aWEgbG9jYXRpb24uaGFzaCAoIzk1MjEpXG5cdC8vIFN0cmljdCBIVE1MIHJlY29nbml0aW9uICgjMTEyOTA6IG11c3Qgc3RhcnQgd2l0aCA8KVxuXHQvLyBTaG9ydGN1dCBzaW1wbGUgI2lkIGNhc2UgZm9yIHNwZWVkXG5cdHJxdWlja0V4cHIgPSAvXig/OlxccyooPFtcXHdcXFddKz4pW14+XSp8IyhbXFx3LV0rKSkkLyxcblxuXHRpbml0ID0galF1ZXJ5LmZuLmluaXQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7XG5cdFx0dmFyIG1hdGNoLCBlbGVtO1xuXG5cdFx0Ly8gSEFORExFOiAkKFwiXCIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpXG5cdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHQvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMgYW4gYWx0ZXJuYXRlIHJvb3RqUXVlcnlcblx0XHQvLyBzbyBtaWdyYXRlIGNhbiBzdXBwb3J0IGpRdWVyeS5zdWIgKGdoLTIxMDEpXG5cdFx0cm9vdCA9IHJvb3QgfHwgcm9vdGpRdWVyeTtcblxuXHRcdC8vIEhhbmRsZSBIVE1MIHN0cmluZ3Ncblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGlmICggc2VsZWN0b3JbIDAgXSA9PT0gXCI8XCIgJiZcblx0XHRcdFx0c2VsZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEgXSA9PT0gXCI+XCIgJiZcblx0XHRcdFx0c2VsZWN0b3IubGVuZ3RoID49IDMgKSB7XG5cblx0XHRcdFx0Ly8gQXNzdW1lIHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUgcmVnZXggY2hlY2tcblx0XHRcdFx0bWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYXRjaCBodG1sIG9yIG1ha2Ugc3VyZSBubyBjb250ZXh0IGlzIHNwZWNpZmllZCBmb3IgI2lkXG5cdFx0XHRpZiAoIG1hdGNoICYmICggbWF0Y2hbIDEgXSB8fCAhY29udGV4dCApICkge1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJChodG1sKSAtPiAkKGFycmF5KVxuXHRcdFx0XHRpZiAoIG1hdGNoWyAxIF0gKSB7XG5cdFx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WyAwIF0gOiBjb250ZXh0O1xuXG5cdFx0XHRcdFx0Ly8gT3B0aW9uIHRvIHJ1biBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdFx0Ly8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoXG5cdFx0XHRcdFx0XHRtYXRjaFsgMSBdLFxuXHRcdFx0XHRcdFx0Y29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpICk7XG5cblx0XHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpXG5cdFx0XHRcdFx0aWYgKCByc2luZ2xlVGFnLnRlc3QoIG1hdGNoWyAxIF0gKSAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29udGV4dCApICkge1xuXHRcdFx0XHRcdFx0Zm9yICggbWF0Y2ggaW4gY29udGV4dCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2ggXSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTtcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hdHRyKCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHRcdFx0Ly8gSEFORExFOiAkKCNpZClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTtcblxuXHRcdFx0XHRcdGlmICggZWxlbSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSW5qZWN0IHRoZSBlbGVtZW50IGRpcmVjdGx5IGludG8gdGhlIGpRdWVyeSBvYmplY3Rcblx0XHRcdFx0XHRcdHRoaXNbIDAgXSA9IGVsZW07XG5cdFx0XHRcdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCAkKC4uLikpXG5cdFx0XHR9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHtcblx0XHRcdFx0cmV0dXJuICggY29udGV4dCB8fCByb290ICkuZmluZCggc2VsZWN0b3IgKTtcblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpXG5cdFx0XHQvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcilcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdC8vIEhBTkRMRTogJChET01FbGVtZW50KVxuXHRcdH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkge1xuXHRcdFx0dGhpc1sgMCBdID0gc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdC8vIEhBTkRMRTogJChmdW5jdGlvbilcblx0XHQvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHlcblx0XHR9IGVsc2UgaWYgKCBpc0Z1bmN0aW9uKCBzZWxlY3RvciApICkge1xuXHRcdFx0cmV0dXJuIHJvb3QucmVhZHkgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHJvb3QucmVhZHkoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIEV4ZWN1dGUgaW1tZWRpYXRlbHkgaWYgcmVhZHkgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0c2VsZWN0b3IoIGpRdWVyeSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApO1xuXHR9O1xuXG4vLyBHaXZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkgcHJvdG90eXBlIGZvciBsYXRlciBpbnN0YW50aWF0aW9uXG5pbml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjtcblxuLy8gSW5pdGlhbGl6ZSBjZW50cmFsIHJlZmVyZW5jZVxucm9vdGpRdWVyeSA9IGpRdWVyeSggZG9jdW1lbnQgKTtcblxuXG52YXIgcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sXG5cblx0Ly8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXRcblx0Z3VhcmFudGVlZFVuaXF1ZSA9IHtcblx0XHRjaGlsZHJlbjogdHJ1ZSxcblx0XHRjb250ZW50czogdHJ1ZSxcblx0XHRuZXh0OiB0cnVlLFxuXHRcdHByZXY6IHRydWVcblx0fTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRoYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLFxuXHRcdFx0bCA9IHRhcmdldHMubGVuZ3RoO1xuXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNvbnRleHQgKSB7XG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0bWF0Y2hlZCA9IFtdLFxuXHRcdFx0dGFyZ2V0cyA9IHR5cGVvZiBzZWxlY3RvcnMgIT09IFwic3RyaW5nXCIgJiYgalF1ZXJ5KCBzZWxlY3RvcnMgKTtcblxuXHRcdC8vIFBvc2l0aW9uYWwgc2VsZWN0b3JzIG5ldmVyIG1hdGNoLCBzaW5jZSB0aGVyZSdzIG5vIF9zZWxlY3Rpb25fIGNvbnRleHRcblx0XHRpZiAoICFybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRmb3IgKCBjdXIgPSB0aGlzWyBpIF07IGN1ciAmJiBjdXIgIT09IGNvbnRleHQ7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXG5cdFx0XHRcdFx0Ly8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzXG5cdFx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAoIHRhcmdldHMgP1xuXHRcdFx0XHRcdFx0dGFyZ2V0cy5pbmRleCggY3VyICkgPiAtMSA6XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRzIHRvIFNpenpsZVxuXHRcdFx0XHRcdFx0Y3VyLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggY3VyLCBzZWxlY3RvcnMgKSApICkge1xuXG5cdFx0XHRcdFx0XHRtYXRjaGVkLnB1c2goIGN1ciApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApIDogbWF0Y2hlZCApO1xuXHR9LFxuXG5cdC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldFxuXHRpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudFxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7XG5cdFx0fVxuXG5cdFx0Ly8gSW5kZXggaW4gc2VsZWN0b3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNbIDAgXSApO1xuXHRcdH1cblxuXHRcdC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudFxuXHRcdHJldHVybiBpbmRleE9mLmNhbGwoIHRoaXMsXG5cblx0XHRcdC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZFxuXHRcdFx0ZWxlbS5qcXVlcnkgPyBlbGVtWyAwIF0gOiBlbGVtXG5cdFx0KTtcblx0fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soXG5cdFx0XHRqUXVlcnkudW5pcXVlU29ydChcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLmdldCgpLCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0sXG5cblx0YWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/XG5cdFx0XHR0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciApXG5cdFx0KTtcblx0fVxufSApO1xuXG5mdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciApIHtcblx0d2hpbGUgKCAoIGN1ciA9IGN1clsgZGlyIF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fVxuXHRyZXR1cm4gY3VyO1xufVxuXG5qUXVlcnkuZWFjaCgge1xuXHRwYXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDtcblx0fSxcblx0cGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIgKTtcblx0fSxcblx0cGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIsIHVudGlsICk7XG5cdH0sXG5cdG5leHQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dEFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dFVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRwcmV2VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmdzKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTtcblx0fSxcblx0Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7XG5cdH0sXG5cdGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcbiAgICAgICAgaWYgKCBub2RlTmFtZSggZWxlbSwgXCJpZnJhbWVcIiApICkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW0uY29udGVudERvY3VtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHksIGlPUyA3IG9ubHksIEFuZHJvaWQgQnJvd3NlciA8PTQuMyBvbmx5XG4gICAgICAgIC8vIFRyZWF0IHRoZSB0ZW1wbGF0ZSBlbGVtZW50IGFzIGEgcmVndWxhciBvbmUgaW4gYnJvd3NlcnMgdGhhdFxuICAgICAgICAvLyBkb24ndCBzdXBwb3J0IGl0LlxuICAgICAgICBpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRlbXBsYXRlXCIgKSApIHtcbiAgICAgICAgICAgIGVsZW0gPSBlbGVtLmNvbnRlbnQgfHwgZWxlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTtcblx0fVxufSwgZnVuY3Rpb24oIG5hbWUsIGZuICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7XG5cdFx0dmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKTtcblxuXHRcdGlmICggbmFtZS5zbGljZSggLTUgKSAhPT0gXCJVbnRpbFwiICkge1xuXHRcdFx0c2VsZWN0b3IgPSB1bnRpbDtcblx0XHR9XG5cblx0XHRpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG1hdGNoZWQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgbWF0Y2hlZCApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5sZW5ndGggPiAxICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgZHVwbGljYXRlc1xuXHRcdFx0aWYgKCAhZ3VhcmFudGVlZFVuaXF1ZVsgbmFtZSBdICkge1xuXHRcdFx0XHRqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlc1xuXHRcdFx0aWYgKCBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkge1xuXHRcdFx0XHRtYXRjaGVkLnJldmVyc2UoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQgKTtcblx0fTtcbn0gKTtcbnZhciBybm90aHRtbHdoaXRlID0gKCAvW15cXHgyMFxcdFxcclxcblxcZl0rL2cgKTtcblxuXG5cbi8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkge1xuXHR2YXIgb2JqZWN0ID0ge307XG5cdGpRdWVyeS5lYWNoKCBvcHRpb25zLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10sIGZ1bmN0aW9uKCBfLCBmbGFnICkge1xuXHRcdG9iamVjdFsgZmxhZyBdID0gdHJ1ZTtcblx0fSApO1xuXHRyZXR1cm4gb2JqZWN0O1xufVxuXG4vKlxuICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4gKlxuICpcdG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3dcbiAqXHRcdFx0dGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdFxuICpcbiAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlXG4gKiBcImZpcmVkXCIgbXVsdGlwbGUgdGltZXMuXG4gKlxuICogUG9zc2libGUgb3B0aW9uczpcbiAqXG4gKlx0b25jZTpcdFx0XHR3aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdG1lbW9yeTpcdFx0XHR3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMgdmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkXG4gKlx0XHRcdFx0XHRhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCBcIm1lbW9yaXplZFwiXG4gKlx0XHRcdFx0XHR2YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0dW5pcXVlOlx0XHRcdHdpbGwgZW5zdXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBsaXN0KVxuICpcbiAqXHRzdG9wT25GYWxzZTpcdGludGVycnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZVxuICpcbiAqL1xualF1ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWRcblx0Ly8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KVxuXHRvcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgP1xuXHRcdGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSA6XG5cdFx0alF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTtcblxuXHR2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZ1xuXHRcdGZpcmluZyxcblxuXHRcdC8vIExhc3QgZmlyZSB2YWx1ZSBmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzXG5cdFx0bWVtb3J5LFxuXG5cdFx0Ly8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFscmVhZHkgZmlyZWRcblx0XHRmaXJlZCxcblxuXHRcdC8vIEZsYWcgdG8gcHJldmVudCBmaXJpbmdcblx0XHRsb2NrZWQsXG5cblx0XHQvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdFxuXHRcdGxpc3QgPSBbXSxcblxuXHRcdC8vIFF1ZXVlIG9mIGV4ZWN1dGlvbiBkYXRhIGZvciByZXBlYXRhYmxlIGxpc3RzXG5cdFx0cXVldWUgPSBbXSxcblxuXHRcdC8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IGFkZC9yZW1vdmUgYXMgbmVlZGVkKVxuXHRcdGZpcmluZ0luZGV4ID0gLTEsXG5cblx0XHQvLyBGaXJlIGNhbGxiYWNrc1xuXHRcdGZpcmUgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRW5mb3JjZSBzaW5nbGUtZmlyaW5nXG5cdFx0XHRsb2NrZWQgPSBsb2NrZWQgfHwgb3B0aW9ucy5vbmNlO1xuXG5cdFx0XHQvLyBFeGVjdXRlIGNhbGxiYWNrcyBmb3IgYWxsIHBlbmRpbmcgZXhlY3V0aW9ucyxcblx0XHRcdC8vIHJlc3BlY3RpbmcgZmlyaW5nSW5kZXggb3ZlcnJpZGVzIGFuZCBydW50aW1lIGNoYW5nZXNcblx0XHRcdGZpcmVkID0gZmlyaW5nID0gdHJ1ZTtcblx0XHRcdGZvciAoIDsgcXVldWUubGVuZ3RoOyBmaXJpbmdJbmRleCA9IC0xICkge1xuXHRcdFx0XHRtZW1vcnkgPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0XHR3aGlsZSAoICsrZmlyaW5nSW5kZXggPCBsaXN0Lmxlbmd0aCApIHtcblxuXHRcdFx0XHRcdC8vIFJ1biBjYWxsYmFjayBhbmQgY2hlY2sgZm9yIGVhcmx5IHRlcm1pbmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBtZW1vcnlbIDAgXSwgbWVtb3J5WyAxIF0gKSA9PT0gZmFsc2UgJiZcblx0XHRcdFx0XHRcdG9wdGlvbnMuc3RvcE9uRmFsc2UgKSB7XG5cblx0XHRcdFx0XHRcdC8vIEp1bXAgdG8gZW5kIGFuZCBmb3JnZXQgdGhlIGRhdGEgc28gLmFkZCBkb2Vzbid0IHJlLWZpcmVcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGg7XG5cdFx0XHRcdFx0XHRtZW1vcnkgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gRm9yZ2V0IHRoZSBkYXRhIGlmIHdlJ3JlIGRvbmUgd2l0aCBpdFxuXHRcdFx0aWYgKCAhb3B0aW9ucy5tZW1vcnkgKSB7XG5cdFx0XHRcdG1lbW9yeSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRmaXJpbmcgPSBmYWxzZTtcblxuXHRcdFx0Ly8gQ2xlYW4gdXAgaWYgd2UncmUgZG9uZSBmaXJpbmcgZm9yIGdvb2Rcblx0XHRcdGlmICggbG9ja2VkICkge1xuXG5cdFx0XHRcdC8vIEtlZXAgYW4gZW1wdHkgbGlzdCBpZiB3ZSBoYXZlIGRhdGEgZm9yIGZ1dHVyZSBhZGQgY2FsbHNcblx0XHRcdFx0aWYgKCBtZW1vcnkgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgdGhpcyBvYmplY3QgaXMgc3BlbnRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsaXN0ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvLyBBY3R1YWwgQ2FsbGJhY2tzIG9iamVjdFxuXHRcdHNlbGYgPSB7XG5cblx0XHRcdC8vIEFkZCBhIGNhbGxiYWNrIG9yIGEgY29sbGVjdGlvbiBvZiBjYWxsYmFja3MgdG8gdGhlIGxpc3Rcblx0XHRcdGFkZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblxuXHRcdFx0XHRcdC8vIElmIHdlIGhhdmUgbWVtb3J5IGZyb20gYSBwYXN0IHJ1biwgd2Ugc2hvdWxkIGZpcmUgYWZ0ZXIgYWRkaW5nXG5cdFx0XHRcdFx0aWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGggLSAxO1xuXHRcdFx0XHRcdFx0cXVldWUucHVzaCggbWVtb3J5ICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0KCBmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoICFvcHRpb25zLnVuaXF1ZSB8fCAhc2VsZi5oYXMoIGFyZyApICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdC5wdXNoKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIGFyZyAmJiBhcmcubGVuZ3RoICYmIHRvVHlwZSggYXJnICkgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5XG5cdFx0XHRcdFx0XHRcdFx0YWRkKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdH0gKSggYXJndW1lbnRzICk7XG5cblx0XHRcdFx0XHRpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJlbW92ZSBhIGNhbGxiYWNrIGZyb20gdGhlIGxpc3Rcblx0XHRcdHJlbW92ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7XG5cdFx0XHRcdFx0dmFyIGluZGV4O1xuXHRcdFx0XHRcdHdoaWxlICggKCBpbmRleCA9IGpRdWVyeS5pbkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0bGlzdC5zcGxpY2UoIGluZGV4LCAxICk7XG5cblx0XHRcdFx0XHRcdC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlc1xuXHRcdFx0XHRcdFx0aWYgKCBpbmRleCA8PSBmaXJpbmdJbmRleCApIHtcblx0XHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXgtLTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0LlxuXHRcdFx0Ly8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVyIG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuXG5cdFx0XHRoYXM6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0cmV0dXJuIGZuID9cblx0XHRcdFx0XHRqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDpcblx0XHRcdFx0XHRsaXN0Lmxlbmd0aCA+IDA7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0XG5cdFx0XHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBEaXNhYmxlIC5maXJlIGFuZCAuYWRkXG5cdFx0XHQvLyBBYm9ydCBhbnkgY3VycmVudC9wZW5kaW5nIGV4ZWN1dGlvbnNcblx0XHRcdC8vIENsZWFyIGFsbCBjYWxsYmFja3MgYW5kIHZhbHVlc1xuXHRcdFx0ZGlzYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGxvY2tlZCA9IHF1ZXVlID0gW107XG5cdFx0XHRcdGxpc3QgPSBtZW1vcnkgPSBcIlwiO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRkaXNhYmxlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhbGlzdDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIERpc2FibGUgLmZpcmVcblx0XHRcdC8vIEFsc28gZGlzYWJsZSAuYWRkIHVubGVzcyB3ZSBoYXZlIG1lbW9yeSAoc2luY2UgaXQgd291bGQgaGF2ZSBubyBlZmZlY3QpXG5cdFx0XHQvLyBBYm9ydCBhbnkgcGVuZGluZyBleGVjdXRpb25zXG5cdFx0XHRsb2NrOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bG9ja2VkID0gcXVldWUgPSBbXTtcblx0XHRcdFx0aWYgKCAhbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0bG9ja2VkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICEhbG9ja2VkO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkge1xuXHRcdFx0XHRpZiAoICFsb2NrZWQgKSB7XG5cdFx0XHRcdFx0YXJncyA9IGFyZ3MgfHwgW107XG5cdFx0XHRcdFx0YXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBhcmdzICk7XG5cdFx0XHRcdFx0aWYgKCAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENhbGwgYWxsIHRoZSBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzXG5cdFx0XHRmaXJlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0c2VsZi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gVG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlXG5cdFx0XHRmaXJlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWZpcmVkO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0cmV0dXJuIHNlbGY7XG59O1xuXG5cbmZ1bmN0aW9uIElkZW50aXR5KCB2ICkge1xuXHRyZXR1cm4gdjtcbn1cbmZ1bmN0aW9uIFRocm93ZXIoIGV4ICkge1xuXHR0aHJvdyBleDtcbn1cblxuZnVuY3Rpb24gYWRvcHRWYWx1ZSggdmFsdWUsIHJlc29sdmUsIHJlamVjdCwgbm9WYWx1ZSApIHtcblx0dmFyIG1ldGhvZDtcblxuXHR0cnkge1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIHByb21pc2UgYXNwZWN0IGZpcnN0IHRvIHByaXZpbGVnZSBzeW5jaHJvbm91cyBiZWhhdmlvclxuXHRcdGlmICggdmFsdWUgJiYgaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS5wcm9taXNlICkgKSApIHtcblx0XHRcdG1ldGhvZC5jYWxsKCB2YWx1ZSApLmRvbmUoIHJlc29sdmUgKS5mYWlsKCByZWplY3QgKTtcblxuXHRcdC8vIE90aGVyIHRoZW5hYmxlc1xuXHRcdH0gZWxzZSBpZiAoIHZhbHVlICYmIGlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUudGhlbiApICkgKSB7XG5cdFx0XHRtZXRob2QuY2FsbCggdmFsdWUsIHJlc29sdmUsIHJlamVjdCApO1xuXG5cdFx0Ly8gT3RoZXIgbm9uLXRoZW5hYmxlc1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIENvbnRyb2wgYHJlc29sdmVgIGFyZ3VtZW50cyBieSBsZXR0aW5nIEFycmF5I3NsaWNlIGNhc3QgYm9vbGVhbiBgbm9WYWx1ZWAgdG8gaW50ZWdlcjpcblx0XHRcdC8vICogZmFsc2U6IFsgdmFsdWUgXS5zbGljZSggMCApID0+IHJlc29sdmUoIHZhbHVlIClcblx0XHRcdC8vICogdHJ1ZTogWyB2YWx1ZSBdLnNsaWNlKCAxICkgPT4gcmVzb2x2ZSgpXG5cdFx0XHRyZXNvbHZlLmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXS5zbGljZSggbm9WYWx1ZSApICk7XG5cdFx0fVxuXG5cdC8vIEZvciBQcm9taXNlcy9BKywgY29udmVydCBleGNlcHRpb25zIGludG8gcmVqZWN0aW9uc1xuXHQvLyBTaW5jZSBqUXVlcnkud2hlbiBkb2Vzbid0IHVud3JhcCB0aGVuYWJsZXMsIHdlIGNhbiBza2lwIHRoZSBleHRyYSBjaGVja3MgYXBwZWFyaW5nIGluXG5cdC8vIERlZmVycmVkI3RoZW4gdG8gY29uZGl0aW9uYWxseSBzdXBwcmVzcyByZWplY3Rpb24uXG5cdH0gY2F0Y2ggKCB2YWx1ZSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIG9ubHlcblx0XHQvLyBTdHJpY3QgbW9kZSBmdW5jdGlvbnMgaW52b2tlZCB3aXRob3V0IC5jYWxsLy5hcHBseSBnZXQgZ2xvYmFsLW9iamVjdCBjb250ZXh0XG5cdFx0cmVqZWN0LmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXSApO1xuXHR9XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHREZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7XG5cdFx0dmFyIHR1cGxlcyA9IFtcblxuXHRcdFx0XHQvLyBhY3Rpb24sIGFkZCBsaXN0ZW5lciwgY2FsbGJhY2tzLFxuXHRcdFx0XHQvLyAuLi4gLnRoZW4gaGFuZGxlcnMsIGFyZ3VtZW50IGluZGV4LCBbZmluYWwgc3RhdGVdXG5cdFx0XHRcdFsgXCJub3RpZnlcIiwgXCJwcm9ncmVzc1wiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJtZW1vcnlcIiApLCAyIF0sXG5cdFx0XHRcdFsgXCJyZXNvbHZlXCIsIFwiZG9uZVwiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSwgMCwgXCJyZXNvbHZlZFwiIF0sXG5cdFx0XHRcdFsgXCJyZWplY3RcIiwgXCJmYWlsXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLCAxLCBcInJlamVjdGVkXCIgXVxuXHRcdFx0XSxcblx0XHRcdHN0YXRlID0gXCJwZW5kaW5nXCIsXG5cdFx0XHRwcm9taXNlID0ge1xuXHRcdFx0XHRzdGF0ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHN0YXRlO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRhbHdheXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGRlZmVycmVkLmRvbmUoIGFyZ3VtZW50cyApLmZhaWwoIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRcImNhdGNoXCI6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJvbWlzZS50aGVuKCBudWxsLCBmbiApO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIEtlZXAgcGlwZSBmb3IgYmFjay1jb21wYXRcblx0XHRcdFx0cGlwZTogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkge1xuXHRcdFx0XHRcdHZhciBmbnMgPSBhcmd1bWVudHM7XG5cblx0XHRcdFx0XHRyZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gTWFwIHR1cGxlcyAocHJvZ3Jlc3MsIGRvbmUsIGZhaWwpIHRvIGFyZ3VtZW50cyAoZG9uZSwgZmFpbCwgcHJvZ3Jlc3MpXG5cdFx0XHRcdFx0XHRcdHZhciBmbiA9IGlzRnVuY3Rpb24oIGZuc1sgdHVwbGVbIDQgXSBdICkgJiYgZm5zWyB0dXBsZVsgNCBdIF07XG5cblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQucHJvZ3Jlc3MoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLmRvbmUoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVzb2x2ZSB9KVxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5mYWlsKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlamVjdCB9KVxuXHRcdFx0XHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQgPSBmbiAmJiBmbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCByZXR1cm5lZCAmJiBpc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC5wcm9taXNlKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LnByb2dyZXNzKCBuZXdEZWZlci5ub3RpZnkgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZG9uZSggbmV3RGVmZXIucmVzb2x2ZSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5mYWlsKCBuZXdEZWZlci5yZWplY3QgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXJbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50c1xuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdGZucyA9IG51bGw7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhlbjogZnVuY3Rpb24oIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBvblByb2dyZXNzICkge1xuXHRcdFx0XHRcdHZhciBtYXhEZXB0aCA9IDA7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcmVzb2x2ZSggZGVwdGgsIGRlZmVycmVkLCBoYW5kbGVyLCBzcGVjaWFsICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdGhhdCA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0YXJncyA9IGFyZ3VtZW50cyxcblx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQsIHRoZW47XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4zXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01OVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSWdub3JlIGRvdWJsZS1yZXNvbHV0aW9uIGF0dGVtcHRzXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoIDwgbWF4RGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQgPSBoYW5kbGVyLmFwcGx5KCB0aGF0LCBhcmdzICk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjFcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTQ4XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkID09PSBkZWZlcnJlZC5wcm9taXNlKCkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoIFwiVGhlbmFibGUgc2VsZi1yZXNvbHV0aW9uXCIgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbnMgMi4zLjMuMSwgMy41XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01NFxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNzVcblx0XHRcdFx0XHRcdFx0XHRcdC8vIFJldHJpZXZlIGB0aGVuYCBvbmx5IG9uY2Vcblx0XHRcdFx0XHRcdFx0XHRcdHRoZW4gPSByZXR1cm5lZCAmJlxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBjaGVjayBvYmplY3RzIGFuZCBmdW5jdGlvbnMgZm9yIHRoZW5hYmlsaXR5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCggdHlwZW9mIHJldHVybmVkID09PSBcIm9iamVjdFwiIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZW9mIHJldHVybmVkID09PSBcImZ1bmN0aW9uXCIgKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC50aGVuO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBIYW5kbGUgYSByZXR1cm5lZCB0aGVuYWJsZVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCB0aGVuICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3BlY2lhbCBwcm9jZXNzb3JzIChub3RpZnkpIGp1c3Qgd2FpdCBmb3IgcmVzb2x1dGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWwgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhlbi5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsIHByb2Nlc3NvcnMgKHJlc29sdmUpIGFsc28gaG9vayBpbnRvIHByb2dyZXNzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgZGlzcmVnYXJkIG9sZGVyIHJlc29sdXRpb24gdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWF4RGVwdGgrKztcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoZW4uY2FsbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBhbGwgb3RoZXIgcmV0dXJuZWQgdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggaGFuZGxlciAhPT0gSWRlbnRpdHkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzID0gWyByZXR1cm5lZCBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gUHJvY2VzcyB0aGUgdmFsdWUocylcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmYXVsdCBwcm9jZXNzIGlzIHJlc29sdmVcblx0XHRcdFx0XHRcdFx0XHRcdFx0KCBzcGVjaWFsIHx8IGRlZmVycmVkLnJlc29sdmVXaXRoICkoIHRoYXQsIGFyZ3MgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBub3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgY2F0Y2ggYW5kIHJlamVjdCBleGNlcHRpb25zXG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcyA9IHNwZWNpYWwgP1xuXHRcdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rKCBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzLnN0YWNrVHJhY2UgKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuNC4xXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBJZ25vcmUgcG9zdC1yZXNvbHV0aW9uIGV4Y2VwdGlvbnNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoICsgMSA+PSBtYXhEZXB0aCApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGhhbmRsZXIgIT09IFRocm93ZXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBbIGUgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggdGhhdCwgYXJncyApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuMVxuXHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01N1xuXHRcdFx0XHRcdFx0XHQvLyBSZS1yZXNvbHZlIHByb21pc2VzIGltbWVkaWF0ZWx5IHRvIGRvZGdlIGZhbHNlIHJlamVjdGlvbiBmcm9tXG5cdFx0XHRcdFx0XHRcdC8vIHN1YnNlcXVlbnQgZXJyb3JzXG5cdFx0XHRcdFx0XHRcdGlmICggZGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcygpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQ2FsbCBhbiBvcHRpb25hbCBob29rIHRvIHJlY29yZCB0aGUgc3RhY2ssIGluIGNhc2Ugb2YgZXhjZXB0aW9uXG5cdFx0XHRcdFx0XHRcdFx0Ly8gc2luY2UgaXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1dGlvbiBnb2VzIGFzeW5jXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvY2Vzcy5zdGFja1RyYWNlID0galF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dCggcHJvY2VzcyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHtcblxuXHRcdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblByb2dyZXNzICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25Qcm9ncmVzcyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRJZGVudGl0eSxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlci5ub3RpZnlXaXRoXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDEgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uRnVsZmlsbGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25GdWxmaWxsZWQgOlxuXHRcdFx0XHRcdFx0XHRcdFx0SWRlbnRpdHlcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAyIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblJlamVjdGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25SZWplY3RlZCA6XG5cdFx0XHRcdFx0XHRcdFx0XHRUaHJvd2VyXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkXG5cdFx0XHRcdC8vIElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3Rcblx0XHRcdFx0cHJvbWlzZTogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRcdFx0XHRyZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWZlcnJlZCA9IHt9O1xuXG5cdFx0Ly8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kc1xuXHRcdGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHtcblx0XHRcdHZhciBsaXN0ID0gdHVwbGVbIDIgXSxcblx0XHRcdFx0c3RhdGVTdHJpbmcgPSB0dXBsZVsgNSBdO1xuXG5cdFx0XHQvLyBwcm9taXNlLnByb2dyZXNzID0gbGlzdC5hZGRcblx0XHRcdC8vIHByb21pc2UuZG9uZSA9IGxpc3QuYWRkXG5cdFx0XHQvLyBwcm9taXNlLmZhaWwgPSBsaXN0LmFkZFxuXHRcdFx0cHJvbWlzZVsgdHVwbGVbIDEgXSBdID0gbGlzdC5hZGQ7XG5cblx0XHRcdC8vIEhhbmRsZSBzdGF0ZVxuXHRcdFx0aWYgKCBzdGF0ZVN0cmluZyApIHtcblx0XHRcdFx0bGlzdC5hZGQoXG5cdFx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdC8vIHN0YXRlID0gXCJyZXNvbHZlZFwiIChpLmUuLCBmdWxmaWxsZWQpXG5cdFx0XHRcdFx0XHQvLyBzdGF0ZSA9IFwicmVqZWN0ZWRcIlxuXHRcdFx0XHRcdFx0c3RhdGUgPSBzdGF0ZVN0cmluZztcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHR0dXBsZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxlLFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZGlzYWJsZVxuXHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5kaXNhYmxlXG5cdFx0XHRcdFx0dHVwbGVzWyAzIC0gaSBdWyAzIF0uZGlzYWJsZSxcblxuXHRcdFx0XHRcdC8vIHByb2dyZXNzX2NhbGxiYWNrcy5sb2NrXG5cdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDIgXS5sb2NrLFxuXG5cdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMubG9ja1xuXHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAzIF0ubG9ja1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5maXJlXG5cdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0bGlzdC5hZGQoIHR1cGxlWyAzIF0uZmlyZSApO1xuXG5cdFx0XHQvLyBkZWZlcnJlZC5ub3RpZnkgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQubm90aWZ5V2l0aCguLi4pIH1cblx0XHRcdC8vIGRlZmVycmVkLnJlc29sdmUgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVzb2x2ZVdpdGgoLi4uKSB9XG5cdFx0XHQvLyBkZWZlcnJlZC5yZWplY3QgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVqZWN0V2l0aCguLi4pIH1cblx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBkZWZlcnJlZCA/IHVuZGVmaW5lZCA6IHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH07XG5cblx0XHRcdC8vIGRlZmVycmVkLm5vdGlmeVdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHQvLyBkZWZlcnJlZC5yZXNvbHZlV2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdC8vIGRlZmVycmVkLnJlamVjdFdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0gPSBsaXN0LmZpcmVXaXRoO1xuXHRcdH0gKTtcblxuXHRcdC8vIE1ha2UgdGhlIGRlZmVycmVkIGEgcHJvbWlzZVxuXHRcdHByb21pc2UucHJvbWlzZSggZGVmZXJyZWQgKTtcblxuXHRcdC8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnlcblx0XHRpZiAoIGZ1bmMgKSB7XG5cdFx0XHRmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJlZCApO1xuXHRcdH1cblxuXHRcdC8vIEFsbCBkb25lIVxuXHRcdHJldHVybiBkZWZlcnJlZDtcblx0fSxcblxuXHQvLyBEZWZlcnJlZCBoZWxwZXJcblx0d2hlbjogZnVuY3Rpb24oIHNpbmdsZVZhbHVlICkge1xuXHRcdHZhclxuXG5cdFx0XHQvLyBjb3VudCBvZiB1bmNvbXBsZXRlZCBzdWJvcmRpbmF0ZXNcblx0XHRcdHJlbWFpbmluZyA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cblx0XHRcdC8vIGNvdW50IG9mIHVucHJvY2Vzc2VkIGFyZ3VtZW50c1xuXHRcdFx0aSA9IHJlbWFpbmluZyxcblxuXHRcdFx0Ly8gc3Vib3JkaW5hdGUgZnVsZmlsbG1lbnQgZGF0YVxuXHRcdFx0cmVzb2x2ZUNvbnRleHRzID0gQXJyYXkoIGkgKSxcblx0XHRcdHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSxcblxuXHRcdFx0Ly8gdGhlIG1hc3RlciBEZWZlcnJlZFxuXHRcdFx0bWFzdGVyID0galF1ZXJ5LkRlZmVycmVkKCksXG5cblx0XHRcdC8vIHN1Ym9yZGluYXRlIGNhbGxiYWNrIGZhY3Rvcnlcblx0XHRcdHVwZGF0ZUZ1bmMgPSBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXNvbHZlQ29udGV4dHNbIGkgXSA9IHRoaXM7XG5cdFx0XHRcdFx0cmVzb2x2ZVZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlO1xuXHRcdFx0XHRcdGlmICggISggLS1yZW1haW5pbmcgKSApIHtcblx0XHRcdFx0XHRcdG1hc3Rlci5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fTtcblxuXHRcdC8vIFNpbmdsZS0gYW5kIGVtcHR5IGFyZ3VtZW50cyBhcmUgYWRvcHRlZCBsaWtlIFByb21pc2UucmVzb2x2ZVxuXHRcdGlmICggcmVtYWluaW5nIDw9IDEgKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwgbWFzdGVyLmRvbmUoIHVwZGF0ZUZ1bmMoIGkgKSApLnJlc29sdmUsIG1hc3Rlci5yZWplY3QsXG5cdFx0XHRcdCFyZW1haW5pbmcgKTtcblxuXHRcdFx0Ly8gVXNlIC50aGVuKCkgdG8gdW53cmFwIHNlY29uZGFyeSB0aGVuYWJsZXMgKGNmLiBnaC0zMDAwKVxuXHRcdFx0aWYgKCBtYXN0ZXIuc3RhdGUoKSA9PT0gXCJwZW5kaW5nXCIgfHxcblx0XHRcdFx0aXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBdICYmIHJlc29sdmVWYWx1ZXNbIGkgXS50aGVuICkgKSB7XG5cblx0XHRcdFx0cmV0dXJuIG1hc3Rlci50aGVuKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gTXVsdGlwbGUgYXJndW1lbnRzIGFyZSBhZ2dyZWdhdGVkIGxpa2UgUHJvbWlzZS5hbGwgYXJyYXkgZWxlbWVudHNcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdGFkb3B0VmFsdWUoIHJlc29sdmVWYWx1ZXNbIGkgXSwgdXBkYXRlRnVuYyggaSApLCBtYXN0ZXIucmVqZWN0ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1hc3Rlci5wcm9taXNlKCk7XG5cdH1cbn0gKTtcblxuXG4vLyBUaGVzZSB1c3VhbGx5IGluZGljYXRlIGEgcHJvZ3JhbW1lciBtaXN0YWtlIGR1cmluZyBkZXZlbG9wbWVudCxcbi8vIHdhcm4gYWJvdXQgdGhlbSBBU0FQIHJhdGhlciB0aGFuIHN3YWxsb3dpbmcgdGhlbSBieSBkZWZhdWx0LlxudmFyIHJlcnJvck5hbWVzID0gL14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87XG5cbmpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0gZnVuY3Rpb24oIGVycm9yLCBzdGFjayApIHtcblxuXHQvLyBTdXBwb3J0OiBJRSA4IC0gOSBvbmx5XG5cdC8vIENvbnNvbGUgZXhpc3RzIHdoZW4gZGV2IHRvb2xzIGFyZSBvcGVuLCB3aGljaCBjYW4gaGFwcGVuIGF0IGFueSB0aW1lXG5cdGlmICggd2luZG93LmNvbnNvbGUgJiYgd2luZG93LmNvbnNvbGUud2FybiAmJiBlcnJvciAmJiByZXJyb3JOYW1lcy50ZXN0KCBlcnJvci5uYW1lICkgKSB7XG5cdFx0d2luZG93LmNvbnNvbGUud2FybiggXCJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0aW9uOiBcIiArIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBzdGFjayApO1xuXHR9XG59O1xuXG5cblxuXG5qUXVlcnkucmVhZHlFeGNlcHRpb24gPSBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHR0aHJvdyBlcnJvcjtcblx0fSApO1xufTtcblxuXG5cblxuLy8gVGhlIGRlZmVycmVkIHVzZWQgb24gRE9NIHJlYWR5XG52YXIgcmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7XG5cbmpRdWVyeS5mbi5yZWFkeSA9IGZ1bmN0aW9uKCBmbiApIHtcblxuXHRyZWFkeUxpc3Rcblx0XHQudGhlbiggZm4gKVxuXG5cdFx0Ly8gV3JhcCBqUXVlcnkucmVhZHlFeGNlcHRpb24gaW4gYSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBsb29rdXBcblx0XHQvLyBoYXBwZW5zIGF0IHRoZSB0aW1lIG9mIGVycm9yIGhhbmRsaW5nIGluc3RlYWQgb2YgY2FsbGJhY2tcblx0XHQvLyByZWdpc3RyYXRpb24uXG5cdFx0LmNhdGNoKCBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdFx0XHRqUXVlcnkucmVhZHlFeGNlcHRpb24oIGVycm9yICk7XG5cdFx0fSApO1xuXG5cdHJldHVybiB0aGlzO1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIElzIHRoZSBET00gcmVhZHkgdG8gYmUgdXNlZD8gU2V0IHRvIHRydWUgb25jZSBpdCBvY2N1cnMuXG5cdGlzUmVhZHk6IGZhbHNlLFxuXG5cdC8vIEEgY291bnRlciB0byB0cmFjayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmVcblx0Ly8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODFcblx0cmVhZHlXYWl0OiAxLFxuXG5cdC8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHlcblx0cmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkge1xuXG5cdFx0Ly8gQWJvcnQgaWYgdGhlcmUgYXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeVxuXHRcdGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFJlbWVtYmVyIHRoYXQgdGhlIERPTSBpcyByZWFkeVxuXHRcdGpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTtcblxuXHRcdC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQgd2FpdCBpZiBuZWVkIGJlXG5cdFx0aWYgKCB3YWl0ICE9PSB0cnVlICYmIC0talF1ZXJ5LnJlYWR5V2FpdCA+IDAgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZVxuXHRcdHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkucmVhZHkudGhlbiA9IHJlYWR5TGlzdC50aGVuO1xuXG4vLyBUaGUgcmVhZHkgZXZlbnQgaGFuZGxlciBhbmQgc2VsZiBjbGVhbnVwIG1ldGhvZFxuZnVuY3Rpb24gY29tcGxldGVkKCkge1xuXHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkICk7XG5cdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkICk7XG5cdGpRdWVyeS5yZWFkeSgpO1xufVxuXG4vLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlzIGNhbGxlZFxuLy8gYWZ0ZXIgdGhlIGJyb3dzZXIgZXZlbnQgaGFzIGFscmVhZHkgb2NjdXJyZWQuXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMCBvbmx5XG4vLyBPbGRlciBJRSBzb21ldGltZXMgc2lnbmFscyBcImludGVyYWN0aXZlXCIgdG9vIHNvb25cbmlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiIHx8XG5cdCggZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gXCJsb2FkaW5nXCIgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCApICkge1xuXG5cdC8vIEhhbmRsZSBpdCBhc3luY2hyb25vdXNseSB0byBhbGxvdyBzY3JpcHRzIHRoZSBvcHBvcnR1bml0eSB0byBkZWxheSByZWFkeVxuXHR3aW5kb3cuc2V0VGltZW91dCggalF1ZXJ5LnJlYWR5ICk7XG5cbn0gZWxzZSB7XG5cblx0Ly8gVXNlIHRoZSBoYW5keSBldmVudCBjYWxsYmFja1xuXHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkICk7XG5cblx0Ly8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmtcblx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIFwibG9hZFwiLCBjb21wbGV0ZWQgKTtcbn1cblxuXG5cblxuLy8gTXVsdGlmdW5jdGlvbmFsIG1ldGhvZCB0byBnZXQgYW5kIHNldCB2YWx1ZXMgb2YgYSBjb2xsZWN0aW9uXG4vLyBUaGUgdmFsdWUvcyBjYW4gb3B0aW9uYWxseSBiZSBleGVjdXRlZCBpZiBpdCdzIGEgZnVuY3Rpb25cbnZhciBhY2Nlc3MgPSBmdW5jdGlvbiggZWxlbXMsIGZuLCBrZXksIHZhbHVlLCBjaGFpbmFibGUsIGVtcHR5R2V0LCByYXcgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBlbGVtcy5sZW5ndGgsXG5cdFx0YnVsayA9IGtleSA9PSBudWxsO1xuXG5cdC8vIFNldHMgbWFueSB2YWx1ZXNcblx0aWYgKCB0b1R5cGUoIGtleSApID09PSBcIm9iamVjdFwiICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cdFx0Zm9yICggaSBpbiBrZXkgKSB7XG5cdFx0XHRhY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTtcblx0XHR9XG5cblx0Ly8gU2V0cyBvbmUgdmFsdWVcblx0fSBlbHNlIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRjaGFpbmFibGUgPSB0cnVlO1xuXG5cdFx0aWYgKCAhaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJhdyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKCBidWxrICkge1xuXG5cdFx0XHQvLyBCdWxrIG9wZXJhdGlvbnMgcnVuIGFnYWluc3QgdGhlIGVudGlyZSBzZXRcblx0XHRcdGlmICggcmF3ICkge1xuXHRcdFx0XHRmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTtcblx0XHRcdFx0Zm4gPSBudWxsO1xuXG5cdFx0XHQvLyAuLi5leGNlcHQgd2hlbiBleGVjdXRpbmcgZnVuY3Rpb24gdmFsdWVzXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRidWxrID0gZm47XG5cdFx0XHRcdGZuID0gZnVuY3Rpb24oIGVsZW0sIGtleSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGJ1bGsuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRmbihcblx0XHRcdFx0XHRlbGVtc1sgaSBdLCBrZXksIHJhdyA/XG5cdFx0XHRcdFx0dmFsdWUgOlxuXHRcdFx0XHRcdHZhbHVlLmNhbGwoIGVsZW1zWyBpIF0sIGksIGZuKCBlbGVtc1sgaSBdLCBrZXkgKSApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBjaGFpbmFibGUgKSB7XG5cdFx0cmV0dXJuIGVsZW1zO1xuXHR9XG5cblx0Ly8gR2V0c1xuXHRpZiAoIGJ1bGsgKSB7XG5cdFx0cmV0dXJuIGZuLmNhbGwoIGVsZW1zICk7XG5cdH1cblxuXHRyZXR1cm4gbGVuID8gZm4oIGVsZW1zWyAwIF0sIGtleSApIDogZW1wdHlHZXQ7XG59O1xuXG5cbi8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZ1xudmFyIHJtc1ByZWZpeCA9IC9eLW1zLS8sXG5cdHJkYXNoQWxwaGEgPSAvLShbYS16XSkvZztcblxuLy8gVXNlZCBieSBjYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpXG5mdW5jdGlvbiBmY2FtZWxDYXNlKCBhbGwsIGxldHRlciApIHtcblx0cmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xufVxuXG4vLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDE1XG4vLyBNaWNyb3NvZnQgZm9yZ290IHRvIGh1bXAgdGhlaXIgdmVuZG9yIHByZWZpeCAoIzk1NzIpXG5mdW5jdGlvbiBjYW1lbENhc2UoIHN0cmluZyApIHtcblx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKCBybXNQcmVmaXgsIFwibXMtXCIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7XG59XG52YXIgYWNjZXB0RGF0YSA9IGZ1bmN0aW9uKCBvd25lciApIHtcblxuXHQvLyBBY2NlcHRzIG9ubHk6XG5cdC8vICAtIE5vZGVcblx0Ly8gICAgLSBOb2RlLkVMRU1FTlRfTk9ERVxuXHQvLyAgICAtIE5vZGUuRE9DVU1FTlRfTk9ERVxuXHQvLyAgLSBPYmplY3Rcblx0Ly8gICAgLSBBbnlcblx0cmV0dXJuIG93bmVyLm5vZGVUeXBlID09PSAxIHx8IG93bmVyLm5vZGVUeXBlID09PSA5IHx8ICEoICtvd25lci5ub2RlVHlwZSApO1xufTtcblxuXG5cblxuZnVuY3Rpb24gRGF0YSgpIHtcblx0dGhpcy5leHBhbmRvID0galF1ZXJ5LmV4cGFuZG8gKyBEYXRhLnVpZCsrO1xufVxuXG5EYXRhLnVpZCA9IDE7XG5cbkRhdGEucHJvdG90eXBlID0ge1xuXG5cdGNhY2hlOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cblx0XHQvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkgaGFzIGEgY2FjaGVcblx0XHR2YXIgdmFsdWUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHQvLyBJZiBub3QsIGNyZWF0ZSBvbmVcblx0XHRpZiAoICF2YWx1ZSApIHtcblx0XHRcdHZhbHVlID0ge307XG5cblx0XHRcdC8vIFdlIGNhbiBhY2NlcHQgZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJuIGJyb3dzZXJzLFxuXHRcdFx0Ly8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS5cblx0XHRcdC8vIEFsd2F5cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LlxuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBvd25lciApICkge1xuXG5cdFx0XHRcdC8vIElmIGl0IGlzIGEgbm9kZSB1bmxpa2VseSB0byBiZSBzdHJpbmdpZnktZWQgb3IgbG9vcGVkIG92ZXJcblx0XHRcdFx0Ly8gdXNlIHBsYWluIGFzc2lnbm1lbnRcblx0XHRcdFx0aWYgKCBvd25lci5ub2RlVHlwZSApIHtcblx0XHRcdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gPSB2YWx1ZTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2Ugc2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUgcHJvcGVydHlcblx0XHRcdFx0Ly8gY29uZmlndXJhYmxlIG11c3QgYmUgdHJ1ZSB0byBhbGxvdyB0aGUgcHJvcGVydHkgdG8gYmVcblx0XHRcdFx0Ly8gZGVsZXRlZCB3aGVuIGRhdGEgaXMgcmVtb3ZlZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggb3duZXIsIHRoaXMuZXhwYW5kbywge1xuXHRcdFx0XHRcdFx0dmFsdWU6IHZhbHVlLFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlXG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9LFxuXHRzZXQ6IGZ1bmN0aW9uKCBvd25lciwgZGF0YSwgdmFsdWUgKSB7XG5cdFx0dmFyIHByb3AsXG5cdFx0XHRjYWNoZSA9IHRoaXMuY2FjaGUoIG93bmVyICk7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdzXG5cdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdGlmICggdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBkYXRhICkgXSA9IHZhbHVlO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCB7IHByb3BlcnRpZXMgfSBdIGFyZ3Ncblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdFxuXHRcdFx0Zm9yICggcHJvcCBpbiBkYXRhICkge1xuXHRcdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBwcm9wICkgXSA9IGRhdGFbIHByb3AgXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNhY2hlO1xuXHR9LFxuXHRnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHJldHVybiBrZXkgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHR0aGlzLmNhY2hlKCBvd25lciApIDpcblxuXHRcdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdICYmIG93bmVyWyB0aGlzLmV4cGFuZG8gXVsgY2FtZWxDYXNlKCBrZXkgKSBdO1xuXHR9LFxuXHRhY2Nlc3M6IGZ1bmN0aW9uKCBvd25lciwga2V5LCB2YWx1ZSApIHtcblxuXHRcdC8vIEluIGNhc2VzIHdoZXJlIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZpZWRcblx0XHQvLyAgIDIuIEEgc3RyaW5nIGtleSB3YXMgc3BlY2lmaWVkLCBidXQgbm8gdmFsdWUgcHJvdmlkZWRcblx0XHQvL1xuXHRcdC8vIFRha2UgdGhlIFwicmVhZFwiIHBhdGggYW5kIGFsbG93IHRoZSBnZXQgbWV0aG9kIHRvIGRldGVybWluZVxuXHRcdC8vIHdoaWNoIHZhbHVlIHRvIHJldHVybiwgcmVzcGVjdGl2ZWx5IGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gVGhlIGVudGlyZSBjYWNoZSBvYmplY3Rcblx0XHQvLyAgIDIuIFRoZSBkYXRhIHN0b3JlZCBhdCB0aGUga2V5XG5cdFx0Ly9cblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdCggKCBrZXkgJiYgdHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIiApICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSApIHtcblxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0KCBvd25lciwga2V5ICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtleSBhbmQgdmFsdWVcblx0XHQvLyBhcmUgc3BlY2lmaWVkLCBzZXQgb3IgZXh0ZW5kIChleGlzdGluZyBvYmplY3RzKSB3aXRoIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXNcblx0XHQvLyAgIDIuIEEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vXG5cdFx0dGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVlICk7XG5cblx0XHQvLyBTaW5jZSB0aGUgXCJzZXRcIiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHNcblx0XHQvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFzZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5O1xuXHR9LFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHZhciBpLFxuXHRcdFx0Y2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHRpZiAoIGNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXNcblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSgga2V5ICkgKSB7XG5cblx0XHRcdFx0Ly8gSWYga2V5IGlzIGFuIGFycmF5IG9mIGtleXMuLi5cblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHNldCBjYW1lbENhc2Uga2V5cywgc28gcmVtb3ZlIHRoYXQuXG5cdFx0XHRcdGtleSA9IGtleS5tYXAoIGNhbWVsQ2FzZSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0a2V5ID0gY2FtZWxDYXNlKCBrZXkgKTtcblxuXHRcdFx0XHQvLyBJZiBhIGtleSB3aXRoIHRoZSBzcGFjZXMgZXhpc3RzLCB1c2UgaXQuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgY3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlXG5cdFx0XHRcdGtleSA9IGtleSBpbiBjYWNoZSA/XG5cdFx0XHRcdFx0WyBrZXkgXSA6XG5cdFx0XHRcdFx0KCBrZXkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRpID0ga2V5Lmxlbmd0aDtcblxuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5WyBpIF0gXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgdGhlIGV4cGFuZG8gaWYgdGhlcmUncyBubyBtb3JlIGRhdGFcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApICkge1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1XG5cdFx0XHQvLyBXZWJraXQgJiBCbGluayBwZXJmb3JtYW5jZSBzdWZmZXJzIHdoZW4gZGVsZXRpbmcgcHJvcGVydGllc1xuXHRcdFx0Ly8gZnJvbSBET00gbm9kZXMsIHNvIHNldCB0byB1bmRlZmluZWQgaW5zdGVhZFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Mzc4NjA3IChidWcgcmVzdHJpY3RlZClcblx0XHRcdGlmICggb3duZXIubm9kZVR5cGUgKSB7XG5cdFx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlbGV0ZSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRoYXNEYXRhOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cdFx0dmFyIGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXHRcdHJldHVybiBjYWNoZSAhPT0gdW5kZWZpbmVkICYmICFqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKTtcblx0fVxufTtcbnZhciBkYXRhUHJpdiA9IG5ldyBEYXRhKCk7XG5cbnZhciBkYXRhVXNlciA9IG5ldyBEYXRhKCk7XG5cblxuXG4vL1x0SW1wbGVtZW50YXRpb24gU3VtbWFyeVxuLy9cbi8vXHQxLiBFbmZvcmNlIEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21wYXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNoXG4vL1x0Mi4gSW1wcm92ZSB0aGUgbW9kdWxlJ3MgbWFpbnRhaW5hYmlsaXR5IGJ5IHJlZHVjaW5nIHRoZSBzdG9yYWdlXG4vL1x0XHRwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uXG4vL1x0My4gVXNlIHRoZSBzYW1lIHNpbmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCBcInByaXZhdGVcIiBhbmQgXCJ1c2VyXCIgZGF0YS5cbi8vXHQ0LiBfTmV2ZXJfIGV4cG9zZSBcInByaXZhdGVcIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpXG4vL1x0NS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpXG4vL1x0Ni4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vha01hcCBpbiAyMDE0XG5cbnZhciByYnJhY2UgPSAvXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8sXG5cdHJtdWx0aURhc2ggPSAvW0EtWl0vZztcblxuZnVuY3Rpb24gZ2V0RGF0YSggZGF0YSApIHtcblx0aWYgKCBkYXRhID09PSBcInRydWVcIiApIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJmYWxzZVwiICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJudWxsXCIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvLyBPbmx5IGNvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZ1xuXHRpZiAoIGRhdGEgPT09ICtkYXRhICsgXCJcIiApIHtcblx0XHRyZXR1cm4gK2RhdGE7XG5cdH1cblxuXHRpZiAoIHJicmFjZS50ZXN0KCBkYXRhICkgKSB7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKTtcblx0fVxuXG5cdHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICkge1xuXHR2YXIgbmFtZTtcblxuXHQvLyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55XG5cdC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZVxuXHRpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdG5hbWUgPSBcImRhdGEtXCIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgXCItJCZcIiApLnRvTG93ZXJDYXNlKCk7XG5cdFx0ZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7XG5cblx0XHRpZiAoIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZGF0YSA9IGdldERhdGEoIGRhdGEgKTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge31cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRkYXRhVXNlci5zZXQoIGVsZW0sIGtleSwgZGF0YSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZGF0YTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRoYXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuaGFzRGF0YSggZWxlbSApIHx8IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKTtcblx0fSxcblxuXHRkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YVVzZXIucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH0sXG5cblx0Ly8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFjZWRcblx0Ly8gd2l0aCBkaXJlY3QgY2FsbHMgdG8gZGF0YVByaXYgbWV0aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0ZWQuXG5cdF9kYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0X3JlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0dmFyIGksIG5hbWUsIGRhdGEsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0YXR0cnMgPSBlbGVtICYmIGVsZW0uYXR0cmlidXRlcztcblxuXHRcdC8vIEdldHMgYWxsIHZhbHVlc1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIHRoaXMubGVuZ3RoICkge1xuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIgKSApIHtcblx0XHRcdFx0XHRpID0gYXR0cnMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBUaGUgYXR0cnMgZWxlbWVudHMgY2FuIGJlIG51bGwgKCMxNDg5NClcblx0XHRcdFx0XHRcdGlmICggYXR0cnNbIGkgXSApIHtcblx0XHRcdFx0XHRcdFx0bmFtZSA9IGF0dHJzWyBpIF0ubmFtZTtcblx0XHRcdFx0XHRcdFx0aWYgKCBuYW1lLmluZGV4T2YoIFwiZGF0YS1cIiApID09PSAwICkge1xuXHRcdFx0XHRcdFx0XHRcdG5hbWUgPSBjYW1lbENhc2UoIG5hbWUuc2xpY2UoIDUgKSApO1xuXHRcdFx0XHRcdFx0XHRcdGRhdGFBdHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZGF0YTtcblx0XHR9XG5cblx0XHQvLyBTZXRzIG11bHRpcGxlIHZhbHVlc1xuXHRcdGlmICggdHlwZW9mIGtleSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhVXNlci5zZXQoIHRoaXMsIGtleSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBkYXRhO1xuXG5cdFx0XHQvLyBUaGUgY2FsbGluZyBqUXVlcnkgb2JqZWN0IChlbGVtZW50IG1hdGNoZXMpIGlzIG5vdCBlbXB0eVxuXHRcdFx0Ly8gKGFuZCB0aGVyZWZvcmUgaGFzIGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGVcblx0XHRcdC8vIGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBlbXB0eSBqUXVlcnkgb2JqZWN0XG5cdFx0XHQvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBmb3IgZWxlbSA9IHRoaXNbIDAgXSB3aGljaCB3aWxsXG5cdFx0XHQvLyB0aHJvdyBhbiBleGNlcHRpb24gaWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRlLlxuXHRcdFx0aWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBnZXQgZGF0YSBmcm9tIHRoZSBjYWNoZVxuXHRcdFx0XHQvLyBUaGUga2V5IHdpbGwgYWx3YXlzIGJlIGNhbWVsQ2FzZWQgaW4gRGF0YVxuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtLCBrZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIFwiZGlzY292ZXJcIiB0aGUgZGF0YSBpblxuXHRcdFx0XHQvLyBIVE1MNSBjdXN0b20gZGF0YS0qIGF0dHJzXG5cdFx0XHRcdGRhdGEgPSBkYXRhQXR0ciggZWxlbSwga2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gV2UgdHJpZWQgcmVhbGx5IGhhcmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0LlxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCB0aGUgZGF0YS4uLlxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBXZSBhbHdheXMgc3RvcmUgdGhlIGNhbWVsQ2FzZWQga2V5XG5cdFx0XHRcdGRhdGFVc2VyLnNldCggdGhpcywga2V5LCB2YWx1ZSApO1xuXHRcdFx0fSApO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSwgbnVsbCwgdHJ1ZSApO1xuXHR9LFxuXG5cdHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBrZXkgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkYXRhVXNlci5yZW1vdmUoIHRoaXMsIGtleSApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBxdWV1ZTtcblxuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHR5cGUgPSAoIHR5cGUgfHwgXCJmeFwiICkgKyBcInF1ZXVlXCI7XG5cdFx0XHRxdWV1ZSA9IGRhdGFQcml2LmdldCggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHQvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwXG5cdFx0XHRpZiAoIGRhdGEgKSB7XG5cdFx0XHRcdGlmICggIXF1ZXVlIHx8IEFycmF5LmlzQXJyYXkoIGRhdGEgKSApIHtcblx0XHRcdFx0XHRxdWV1ZSA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgdHlwZSwgalF1ZXJ5Lm1ha2VBcnJheSggZGF0YSApICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cXVldWUucHVzaCggZGF0YSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcXVldWUgfHwgW107XG5cdFx0fVxuXHR9LFxuXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlwZSApLFxuXHRcdFx0c3RhcnRMZW5ndGggPSBxdWV1ZS5sZW5ndGgsXG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCksXG5cdFx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgdHlwZSApLFxuXHRcdFx0bmV4dCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlwZSApO1xuXHRcdFx0fTtcblxuXHRcdC8vIElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mgc2VudGluZWxcblx0XHRpZiAoIGZuID09PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKTtcblx0XHRcdHN0YXJ0TGVuZ3RoLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblxuXHRcdFx0Ly8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZ1xuXHRcdFx0Ly8gYXV0b21hdGljYWxseSBkZXF1ZXVlZFxuXHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgKSB7XG5cdFx0XHRcdHF1ZXVlLnVuc2hpZnQoIFwiaW5wcm9ncmVzc1wiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENsZWFyIHVwIHRoZSBsYXN0IHF1ZXVlIHN0b3AgZnVuY3Rpb25cblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0Zm4uY2FsbCggZWxlbSwgbmV4dCwgaG9va3MgKTtcblx0XHR9XG5cblx0XHRpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gTm90IHB1YmxpYyAtIGdlbmVyYXRlIGEgcXVldWVIb29rcyBvYmplY3QsIG9yIHJldHVybiB0aGUgY3VycmVudCBvbmVcblx0X3F1ZXVlSG9va3M6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHZhciBrZXkgPSB0eXBlICsgXCJxdWV1ZUhvb2tzXCI7XG5cdFx0cmV0dXJuIGRhdGFQcml2LmdldCggZWxlbSwga2V5ICkgfHwgZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBrZXksIHtcblx0XHRcdGVtcHR5OiBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKS5hZGQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFsgdHlwZSArIFwicXVldWVcIiwga2V5IF0gKTtcblx0XHRcdH0gKVxuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHF1ZXVlOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgc2V0dGVyID0gMjtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRkYXRhID0gdHlwZTtcblx0XHRcdHR5cGUgPSBcImZ4XCI7XG5cdFx0XHRzZXR0ZXItLTtcblx0XHR9XG5cblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggPCBzZXR0ZXIgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnF1ZXVlKCB0aGlzWyAwIF0sIHR5cGUgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdHRoaXMgOlxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBkYXRhICk7XG5cblx0XHRcdFx0Ly8gRW5zdXJlIGEgaG9va3MgZm9yIHRoaXMgcXVldWVcblx0XHRcdFx0alF1ZXJ5Ll9xdWV1ZUhvb2tzKCB0aGlzLCB0eXBlICk7XG5cblx0XHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgJiYgcXVldWVbIDAgXSAhPT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHR9LFxuXHRkZXF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0fSApO1xuXHR9LFxuXHRjbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdH0sXG5cblx0Ly8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZVxuXHQvLyBhcmUgZW1wdGllZCAoZnggaXMgdGhlIHR5cGUgYnkgZGVmYXVsdClcblx0cHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iaiApIHtcblx0XHR2YXIgdG1wLFxuXHRcdFx0Y291bnQgPSAxLFxuXHRcdFx0ZGVmZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGVsZW1lbnRzID0gdGhpcyxcblx0XHRcdGkgPSB0aGlzLmxlbmd0aCxcblx0XHRcdHJlc29sdmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhKCAtLWNvdW50ICkgKSB7XG5cdFx0XHRcdFx0ZGVmZXIucmVzb2x2ZVdpdGgoIGVsZW1lbnRzLCBbIGVsZW1lbnRzIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRvYmogPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0bXAgPSBkYXRhUHJpdi5nZXQoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyBcInF1ZXVlSG9va3NcIiApO1xuXHRcdFx0aWYgKCB0bXAgJiYgdG1wLmVtcHR5ICkge1xuXHRcdFx0XHRjb3VudCsrO1xuXHRcdFx0XHR0bXAuZW1wdHkuYWRkKCByZXNvbHZlICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJlc29sdmUoKTtcblx0XHRyZXR1cm4gZGVmZXIucHJvbWlzZSggb2JqICk7XG5cdH1cbn0gKTtcbnZhciBwbnVtID0gKCAvWystXT8oPzpcXGQqXFwufClcXGQrKD86W2VFXVsrLV0/XFxkK3wpLyApLnNvdXJjZTtcblxudmFyIHJjc3NOdW0gPSBuZXcgUmVnRXhwKCBcIl4oPzooWystXSk9fCkoXCIgKyBwbnVtICsgXCIpKFthLXolXSopJFwiLCBcImlcIiApO1xuXG5cbnZhciBjc3NFeHBhbmQgPSBbIFwiVG9wXCIsIFwiUmlnaHRcIiwgXCJCb3R0b21cIiwgXCJMZWZ0XCIgXTtcblxudmFyIGlzSGlkZGVuV2l0aGluVHJlZSA9IGZ1bmN0aW9uKCBlbGVtLCBlbCApIHtcblxuXHRcdC8vIGlzSGlkZGVuV2l0aGluVHJlZSBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uO1xuXHRcdC8vIGluIHRoYXQgY2FzZSwgZWxlbWVudCB3aWxsIGJlIHNlY29uZCBhcmd1bWVudFxuXHRcdGVsZW0gPSBlbCB8fCBlbGVtO1xuXG5cdFx0Ly8gSW5saW5lIHN0eWxlIHRydW1wcyBhbGxcblx0XHRyZXR1cm4gZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIm5vbmVcIiB8fFxuXHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmXG5cblx0XHRcdC8vIE90aGVyd2lzZSwgY2hlY2sgY29tcHV0ZWQgc3R5bGVcblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MyAtIDQ1XG5cdFx0XHQvLyBEaXNjb25uZWN0ZWQgZWxlbWVudHMgY2FuIGhhdmUgY29tcHV0ZWQgZGlzcGxheTogbm9uZSwgc28gZmlyc3QgY29uZmlybSB0aGF0IGVsZW0gaXNcblx0XHRcdC8vIGluIHRoZSBkb2N1bWVudC5cblx0XHRcdGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgJiZcblxuXHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSA9PT0gXCJub25lXCI7XG5cdH07XG5cbnZhciBzd2FwID0gZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrLCBhcmdzICkge1xuXHR2YXIgcmV0LCBuYW1lLFxuXHRcdG9sZCA9IHt9O1xuXG5cdC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0b2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0aW9uc1sgbmFtZSBdO1xuXHR9XG5cblx0cmV0ID0gY2FsbGJhY2suYXBwbHkoIGVsZW0sIGFyZ3MgfHwgW10gKTtcblxuXHQvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXNcblx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdO1xuXHR9XG5cblx0cmV0dXJuIHJldDtcbn07XG5cblxuXG5cbmZ1bmN0aW9uIGFkanVzdENTUyggZWxlbSwgcHJvcCwgdmFsdWVQYXJ0cywgdHdlZW4gKSB7XG5cdHZhciBhZGp1c3RlZCwgc2NhbGUsXG5cdFx0bWF4SXRlcmF0aW9ucyA9IDIwLFxuXHRcdGN1cnJlbnRWYWx1ZSA9IHR3ZWVuID9cblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uY3VyKCk7XG5cdFx0XHR9IDpcblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5LmNzcyggZWxlbSwgcHJvcCwgXCJcIiApO1xuXHRcdFx0fSxcblx0XHRpbml0aWFsID0gY3VycmVudFZhbHVlKCksXG5cdFx0dW5pdCA9IHZhbHVlUGFydHMgJiYgdmFsdWVQYXJ0c1sgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApLFxuXG5cdFx0Ly8gU3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQgZm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNoZXNcblx0XHRpbml0aWFsSW5Vbml0ID0gKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAhPT0gXCJweFwiICYmICtpbml0aWFsICkgJiZcblx0XHRcdHJjc3NOdW0uZXhlYyggalF1ZXJ5LmNzcyggZWxlbSwgcHJvcCApICk7XG5cblx0aWYgKCBpbml0aWFsSW5Vbml0ICYmIGluaXRpYWxJblVuaXRbIDMgXSAhPT0gdW5pdCApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD01NFxuXHRcdC8vIEhhbHZlIHRoZSBpdGVyYXRpb24gdGFyZ2V0IHZhbHVlIHRvIHByZXZlbnQgaW50ZXJmZXJlbmNlIGZyb20gQ1NTIHVwcGVyIGJvdW5kcyAoZ2gtMjE0NClcblx0XHRpbml0aWFsID0gaW5pdGlhbCAvIDI7XG5cblx0XHQvLyBUcnVzdCB1bml0cyByZXBvcnRlZCBieSBqUXVlcnkuY3NzXG5cdFx0dW5pdCA9IHVuaXQgfHwgaW5pdGlhbEluVW5pdFsgMyBdO1xuXG5cdFx0Ly8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5vbnplcm8gc3RhcnRpbmcgcG9pbnRcblx0XHRpbml0aWFsSW5Vbml0ID0gK2luaXRpYWwgfHwgMTtcblxuXHRcdHdoaWxlICggbWF4SXRlcmF0aW9ucy0tICkge1xuXG5cdFx0XHQvLyBFdmFsdWF0ZSBhbmQgdXBkYXRlIG91ciBiZXN0IGd1ZXNzIChkb3VibGluZyBndWVzc2VzIHRoYXQgemVybyBvdXQpLlxuXHRcdFx0Ly8gRmluaXNoIGlmIHRoZSBzY2FsZSBlcXVhbHMgb3IgY3Jvc3NlcyAxIChtYWtpbmcgdGhlIG9sZCpuZXcgcHJvZHVjdCBub24tcG9zaXRpdmUpLlxuXHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApO1xuXHRcdFx0aWYgKCAoIDEgLSBzY2FsZSApICogKCAxIC0gKCBzY2FsZSA9IGN1cnJlbnRWYWx1ZSgpIC8gaW5pdGlhbCB8fCAwLjUgKSApIDw9IDAgKSB7XG5cdFx0XHRcdG1heEl0ZXJhdGlvbnMgPSAwO1xuXHRcdFx0fVxuXHRcdFx0aW5pdGlhbEluVW5pdCA9IGluaXRpYWxJblVuaXQgLyBzY2FsZTtcblxuXHRcdH1cblxuXHRcdGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0ICogMjtcblx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7XG5cblx0XHQvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVzIGxhdGVyIG9uXG5cdFx0dmFsdWVQYXJ0cyA9IHZhbHVlUGFydHMgfHwgW107XG5cdH1cblxuXHRpZiAoIHZhbHVlUGFydHMgKSB7XG5cdFx0aW5pdGlhbEluVW5pdCA9ICtpbml0aWFsSW5Vbml0IHx8ICtpbml0aWFsIHx8IDA7XG5cblx0XHQvLyBBcHBseSByZWxhdGl2ZSBvZmZzZXQgKCs9Ly09KSBpZiBzcGVjaWZpZWRcblx0XHRhZGp1c3RlZCA9IHZhbHVlUGFydHNbIDEgXSA/XG5cdFx0XHRpbml0aWFsSW5Vbml0ICsgKCB2YWx1ZVBhcnRzWyAxIF0gKyAxICkgKiB2YWx1ZVBhcnRzWyAyIF0gOlxuXHRcdFx0K3ZhbHVlUGFydHNbIDIgXTtcblx0XHRpZiAoIHR3ZWVuICkge1xuXHRcdFx0dHdlZW4udW5pdCA9IHVuaXQ7XG5cdFx0XHR0d2Vlbi5zdGFydCA9IGluaXRpYWxJblVuaXQ7XG5cdFx0XHR0d2Vlbi5lbmQgPSBhZGp1c3RlZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGFkanVzdGVkO1xufVxuXG5cbnZhciBkZWZhdWx0RGlzcGxheU1hcCA9IHt9O1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApIHtcblx0dmFyIHRlbXAsXG5cdFx0ZG9jID0gZWxlbS5vd25lckRvY3VtZW50LFxuXHRcdG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSxcblx0XHRkaXNwbGF5ID0gZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF07XG5cblx0aWYgKCBkaXNwbGF5ICkge1xuXHRcdHJldHVybiBkaXNwbGF5O1xuXHR9XG5cblx0dGVtcCA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKCBkb2MuY3JlYXRlRWxlbWVudCggbm9kZU5hbWUgKSApO1xuXHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggdGVtcCwgXCJkaXNwbGF5XCIgKTtcblxuXHR0ZW1wLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRlbXAgKTtcblxuXHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdGRpc3BsYXkgPSBcImJsb2NrXCI7XG5cdH1cblx0ZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF0gPSBkaXNwbGF5O1xuXG5cdHJldHVybiBkaXNwbGF5O1xufVxuXG5mdW5jdGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7XG5cdHZhciBkaXNwbGF5LCBlbGVtLFxuXHRcdHZhbHVlcyA9IFtdLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cblx0Ly8gRGV0ZXJtaW5lIG5ldyBkaXNwbGF5IHZhbHVlIGZvciBlbGVtZW50cyB0aGF0IG5lZWQgdG8gY2hhbmdlXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdO1xuXHRcdGlmICggIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRkaXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5O1xuXHRcdGlmICggc2hvdyApIHtcblxuXHRcdFx0Ly8gU2luY2Ugd2UgZm9yY2UgdmlzaWJpbGl0eSB1cG9uIGNhc2NhZGUtaGlkZGVuIGVsZW1lbnRzLCBhbiBpbW1lZGlhdGUgKGFuZCBzbG93KVxuXHRcdFx0Ly8gY2hlY2sgaXMgcmVxdWlyZWQgaW4gdGhpcyBmaXJzdCBsb29wIHVubGVzcyB3ZSBoYXZlIGEgbm9uZW1wdHkgZGlzcGxheSB2YWx1ZSAoZWl0aGVyXG5cdFx0XHQvLyBpbmxpbmUgb3IgYWJvdXQtdG8tYmUtcmVzdG9yZWQpXG5cdFx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBkYXRhUHJpdi5nZXQoIGVsZW0sIFwiZGlzcGxheVwiICkgfHwgbnVsbDtcblx0XHRcdFx0aWYgKCAhdmFsdWVzWyBpbmRleCBdICkge1xuXHRcdFx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICggZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGRpc3BsYXkgIT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBcIm5vbmVcIjtcblxuXHRcdFx0XHQvLyBSZW1lbWJlciB3aGF0IHdlJ3JlIG92ZXJ3cml0aW5nXG5cdFx0XHRcdGRhdGFQcml2LnNldCggZWxlbSwgXCJkaXNwbGF5XCIsIGRpc3BsYXkgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBTZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQgY29uc3RhbnQgcmVmbG93XG5cdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHtcblx0XHRcdGVsZW1lbnRzWyBpbmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRzO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApO1xuXHR9LFxuXHRoaWRlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTtcblx0fSxcblx0dG9nZ2xlOiBmdW5jdGlvbiggc3RhdGUgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggaXNIaWRkZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnNob3coKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmhpZGUoKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcbnZhciByY2hlY2thYmxlVHlwZSA9ICggL14oPzpjaGVja2JveHxyYWRpbykkL2kgKTtcblxudmFyIHJ0YWdOYW1lID0gKCAvPChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSspL2kgKTtcblxudmFyIHJzY3JpcHRUeXBlID0gKCAvXiR8Xm1vZHVsZSR8XFwvKD86amF2YXxlY21hKXNjcmlwdC9pICk7XG5cblxuXG4vLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKVxudmFyIHdyYXBNYXAgPSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0b3B0aW9uOiBbIDEsIFwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPlwiLCBcIjwvc2VsZWN0PlwiIF0sXG5cblx0Ly8gWEhUTUwgcGFyc2VycyBkbyBub3QgbWFnaWNhbGx5IGluc2VydCBlbGVtZW50cyBpbiB0aGVcblx0Ly8gc2FtZSB3YXkgdGhhdCB0YWcgc291cCBwYXJzZXJzIGRvLiBTbyB3ZSBjYW5ub3Qgc2hvcnRlblxuXHQvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQgZWxlbWVudHMuXG5cdHRoZWFkOiBbIDEsIFwiPHRhYmxlPlwiLCBcIjwvdGFibGU+XCIgXSxcblx0Y29sOiBbIDIsIFwiPHRhYmxlPjxjb2xncm91cD5cIiwgXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIgXSxcblx0dHI6IFsgMiwgXCI8dGFibGU+PHRib2R5PlwiLCBcIjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXHR0ZDogWyAzLCBcIjx0YWJsZT48dGJvZHk+PHRyPlwiLCBcIjwvdHI+PC90Ym9keT48L3RhYmxlPlwiIF0sXG5cblx0X2RlZmF1bHQ6IFsgMCwgXCJcIiwgXCJcIiBdXG59O1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxud3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uO1xuXG53cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkO1xud3JhcE1hcC50aCA9IHdyYXBNYXAudGQ7XG5cblxuZnVuY3Rpb24gZ2V0QWxsKCBjb250ZXh0LCB0YWcgKSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHQvLyBVc2UgdHlwZW9mIHRvIGF2b2lkIHplcm8tYXJndW1lbnQgbWV0aG9kIGludm9jYXRpb24gb24gaG9zdCBvYmplY3RzICgjMTUxNTEpXG5cdHZhciByZXQ7XG5cblx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRyZXQgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgXCIqXCIgKTtcblxuXHR9IGVsc2UgaWYgKCB0eXBlb2YgY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdHJldCA9IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnIHx8IFwiKlwiICk7XG5cblx0fSBlbHNlIHtcblx0XHRyZXQgPSBbXTtcblx0fVxuXG5cdGlmICggdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYmIG5vZGVOYW1lKCBjb250ZXh0LCB0YWcgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgcmV0ICk7XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufVxuXG5cbi8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZFxuZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZGF0YVByaXYuc2V0KFxuXHRcdFx0ZWxlbXNbIGkgXSxcblx0XHRcdFwiZ2xvYmFsRXZhbFwiLFxuXHRcdFx0IXJlZkVsZW1lbnRzIHx8IGRhdGFQcml2LmdldCggcmVmRWxlbWVudHNbIGkgXSwgXCJnbG9iYWxFdmFsXCIgKVxuXHRcdCk7XG5cdH1cbn1cblxuXG52YXIgcmh0bWwgPSAvPHwmIz9cXHcrOy87XG5cbmZ1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoIGVsZW1zLCBjb250ZXh0LCBzY3JpcHRzLCBzZWxlY3Rpb24sIGlnbm9yZWQgKSB7XG5cdHZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgY29udGFpbnMsIGosXG5cdFx0ZnJhZ21lbnQgPSBjb250ZXh0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRub2RlcyA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGVsZW0gPSBlbGVtc1sgaSBdO1xuXG5cdFx0aWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7XG5cblx0XHRcdC8vIEFkZCBub2RlcyBkaXJlY3RseVxuXHRcdFx0aWYgKCB0b1R5cGUoIGVsZW0gKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7XG5cblx0XHRcdC8vIENvbnZlcnQgbm9uLWh0bWwgaW50byBhIHRleHQgbm9kZVxuXHRcdFx0fSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHtcblx0XHRcdFx0bm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSApICk7XG5cblx0XHRcdC8vIENvbnZlcnQgaHRtbCBpbnRvIERPTSBub2Rlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApO1xuXG5cdFx0XHRcdC8vIERlc2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb25cblx0XHRcdFx0dGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0O1xuXHRcdFx0XHR0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgalF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIGVsZW0gKSArIHdyYXBbIDIgXTtcblxuXHRcdFx0XHQvLyBEZXNjZW5kIHRocm91Z2ggd3JhcHBlcnMgdG8gdGhlIHJpZ2h0IGNvbnRlbnRcblx0XHRcdFx0aiA9IHdyYXBbIDAgXTtcblx0XHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdFx0dG1wID0gdG1wLmxhc3RDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXJcblx0XHRcdFx0dG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0XHQvLyBFbnN1cmUgdGhlIGNyZWF0ZWQgbm9kZXMgYXJlIG9ycGhhbmVkICgjMTIzOTIpXG5cdFx0XHRcdHRtcC50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudFxuXHRmcmFnbWVudC50ZXh0Q29udGVudCA9IFwiXCI7XG5cblx0aSA9IDA7XG5cdHdoaWxlICggKCBlbGVtID0gbm9kZXNbIGkrKyBdICkgKSB7XG5cblx0XHQvLyBTa2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJhYy00MDg3KVxuXHRcdGlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSA+IC0xICkge1xuXHRcdFx0aWYgKCBpZ25vcmVkICkge1xuXHRcdFx0XHRpZ25vcmVkLnB1c2goIGVsZW0gKTtcblx0XHRcdH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnRhaW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblxuXHRcdC8vIEFwcGVuZCB0byBmcmFnbWVudFxuXHRcdHRtcCA9IGdldEFsbCggZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGVsZW0gKSwgXCJzY3JpcHRcIiApO1xuXG5cdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdGlmICggY29udGFpbnMgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCB0bXAgKTtcblx0XHR9XG5cblx0XHQvLyBDYXB0dXJlIGV4ZWN1dGFibGVzXG5cdFx0aWYgKCBzY3JpcHRzICkge1xuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRtcFsgaisrIF0gKSApIHtcblx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgXCJcIiApICkge1xuXHRcdFx0XHRcdHNjcmlwdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZyYWdtZW50O1xufVxuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICksXG5cdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5XG5cdC8vIENoZWNrIHN0YXRlIGxvc3QgaWYgdGhlIG5hbWUgaXMgc2V0ICgjMTEyMTcpXG5cdC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSlcblx0Ly8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3IgV1dBICgjMTQ5MDEpXG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwicmFkaW9cIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwiY2hlY2tlZFwiLCBcImNoZWNrZWRcIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcInRcIiApO1xuXG5cdGRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIG9ubHlcblx0Ly8gT2xkZXIgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzXG5cdHN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBwcm9wZXJseSBjbG9uZWRcblx0ZGl2LmlubmVySFRNTCA9IFwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiO1xuXHRzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTtcbn0gKSgpO1xudmFyIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXG5cbnZhclxuXHRya2V5RXZlbnQgPSAvXmtleS8sXG5cdHJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLFxuXHRydHlwZW5hbWVzcGFjZSA9IC9eKFteLl0qKSg/OlxcLiguKyl8KS87XG5cbmZ1bmN0aW9uIHJldHVyblRydWUoKSB7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gU2VlICMxMzM5MyBmb3IgbW9yZSBpbmZvXG5mdW5jdGlvbiBzYWZlQWN0aXZlRWxlbWVudCgpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblx0fSBjYXRjaCAoIGVyciApIHsgfVxufVxuXG5mdW5jdGlvbiBvbiggZWxlbSwgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgb25lICkge1xuXHR2YXIgb3JpZ0ZuLCB0eXBlO1xuXG5cdC8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVyc1xuXHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vICggdHlwZXMtT2JqZWN0LCBzZWxlY3RvciwgZGF0YSApXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMtT2JqZWN0LCBkYXRhIClcblx0XHRcdGRhdGEgPSBkYXRhIHx8IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRvbiggZWxlbSwgdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gZWxlbTtcblx0fVxuXG5cdGlmICggZGF0YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7XG5cblx0XHQvLyAoIHR5cGVzLCBmbiApXG5cdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdH0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMsIHNlbGVjdG9yLCBmbiApXG5cdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vICggdHlwZXMsIGRhdGEsIGZuIClcblx0XHRcdGZuID0gZGF0YTtcblx0XHRcdGRhdGEgPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHR9IGVsc2UgaWYgKCAhZm4gKSB7XG5cdFx0cmV0dXJuIGVsZW07XG5cdH1cblxuXHRpZiAoIG9uZSA9PT0gMSApIHtcblx0XHRvcmlnRm4gPSBmbjtcblx0XHRmbiA9IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0Ly8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvXG5cdFx0XHRqUXVlcnkoKS5vZmYoIGV2ZW50ICk7XG5cdFx0XHRyZXR1cm4gb3JpZ0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9O1xuXG5cdFx0Ly8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBvcmlnRm5cblx0XHRmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTtcblx0fVxuXHRyZXR1cm4gZWxlbS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7XG5cdH0gKTtcbn1cblxuLypcbiAqIEhlbHBlciBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGV2ZW50cyAtLSBub3QgcGFydCBvZiB0aGUgcHVibGljIGludGVyZmFjZS5cbiAqIFByb3BzIHRvIERlYW4gRWR3YXJkcycgYWRkRXZlbnQgbGlicmFyeSBmb3IgbWFueSBvZiB0aGUgaWRlYXMuXG4gKi9cbmpRdWVyeS5ldmVudCA9IHtcblxuXHRnbG9iYWw6IHt9LFxuXG5cdGFkZDogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhLCBzZWxlY3RvciApIHtcblxuXHRcdHZhciBoYW5kbGVPYmpJbiwgZXZlbnRIYW5kbGUsIHRtcCxcblx0XHRcdGV2ZW50cywgdCwgaGFuZGxlT2JqLFxuXHRcdFx0c3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLFxuXHRcdFx0ZWxlbURhdGEgPSBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdC8vIERvbid0IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFsbG93IHBsYWluIG9iamVjdHMpXG5cdFx0aWYgKCAhZWxlbURhdGEgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyXG5cdFx0aWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7XG5cdFx0XHRoYW5kbGVPYmpJbiA9IGhhbmRsZXI7XG5cdFx0XHRoYW5kbGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjtcblx0XHRcdHNlbGVjdG9yID0gaGFuZGxlT2JqSW4uc2VsZWN0b3I7XG5cdFx0fVxuXG5cdFx0Ly8gRW5zdXJlIHRoYXQgaW52YWxpZCBzZWxlY3RvcnMgdGhyb3cgZXhjZXB0aW9ucyBhdCBhdHRhY2ggdGltZVxuXHRcdC8vIEV2YWx1YXRlIGFnYWluc3QgZG9jdW1lbnRFbGVtZW50IGluIGNhc2UgZWxlbSBpcyBhIG5vbi1lbGVtZW50IG5vZGUgKGUuZy4sIGRvY3VtZW50KVxuXHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGRvY3VtZW50RWxlbWVudCwgc2VsZWN0b3IgKTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB0aGUgaGFuZGxlciBoYXMgYSB1bmlxdWUgSUQsIHVzZWQgdG8gZmluZC9yZW1vdmUgaXQgbGF0ZXJcblx0XHRpZiAoICFoYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRoYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrO1xuXHRcdH1cblxuXHRcdC8vIEluaXQgdGhlIGVsZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUgZmlyc3Rcblx0XHRpZiAoICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0ZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzID0ge307XG5cdFx0fVxuXHRcdGlmICggISggZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgKSApIHtcblx0XHRcdGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7XG5cblx0XHRcdFx0Ly8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmRcblx0XHRcdFx0Ly8gd2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZFxuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIGpRdWVyeSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUgP1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2Vcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVGhlcmUgKm11c3QqIGJlIGEgdHlwZSwgbm8gYXR0YWNoaW5nIG5hbWVzcGFjZS1vbmx5IGhhbmRsZXJzXG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgZXZlbnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY2hhbmdlZCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gSWYgc2VsZWN0b3IgZGVmaW5lZCwgZGV0ZXJtaW5lIHNwZWNpYWwgZXZlbnQgYXBpIHR5cGUsIG90aGVyd2lzZSBnaXZlbiB0eXBlXG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cblx0XHRcdC8vIFVwZGF0ZSBzcGVjaWFsIGJhc2VkIG9uIG5ld2x5IHJlc2V0IHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBoYW5kbGVPYmogaXMgcGFzc2VkIHRvIGFsbCBldmVudCBoYW5kbGVyc1xuXHRcdFx0aGFuZGxlT2JqID0galF1ZXJ5LmV4dGVuZCgge1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRvcmlnVHlwZTogb3JpZ1R5cGUsXG5cdFx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRcdGhhbmRsZXI6IGhhbmRsZXIsXG5cdFx0XHRcdGd1aWQ6IGhhbmRsZXIuZ3VpZCxcblx0XHRcdFx0c2VsZWN0b3I6IHNlbGVjdG9yLFxuXHRcdFx0XHRuZWVkc0NvbnRleHQ6IHNlbGVjdG9yICYmIGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApLFxuXHRcdFx0XHRuYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKVxuXHRcdFx0fSwgaGFuZGxlT2JqSW4gKTtcblxuXHRcdFx0Ly8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZSBpZiB3ZSdyZSB0aGUgZmlyc3Rcblx0XHRcdGlmICggISggaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSApICkge1xuXHRcdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107XG5cdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAwO1xuXG5cdFx0XHRcdC8vIE9ubHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZVxuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnNldHVwIHx8XG5cdFx0XHRcdFx0c3BlY2lhbC5zZXR1cC5jYWxsKCBlbGVtLCBkYXRhLCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHRcdGlmICggZWxlbS5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBldmVudEhhbmRsZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHNwZWNpYWwuYWRkICkge1xuXHRcdFx0XHRzcGVjaWFsLmFkZC5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblxuXHRcdFx0XHRpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkge1xuXHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1aWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnRcblx0XHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0aW9uXG5cdFx0XHRqUXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVlO1xuXHRcdH1cblxuXHR9LFxuXG5cdC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBlZFR5cGVzICkge1xuXG5cdFx0dmFyIGosIG9yaWdDb3VudCwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKSAmJiBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdGlmICggIWVsZW1EYXRhIHx8ICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWRcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNwYWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50XG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwgaGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdIHx8IFtdO1xuXHRcdFx0dG1wID0gdG1wWyAyIF0gJiZcblx0XHRcdFx0bmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbiggXCJcXFxcLig/Oi4qXFxcXC58KVwiICkgKyBcIihcXFxcLnwkKVwiICk7XG5cblx0XHRcdC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHNcblx0XHRcdG9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTtcblxuXHRcdFx0XHRpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmXG5cdFx0XHRcdFx0KCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiZcblx0XHRcdFx0XHQoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmXG5cdFx0XHRcdFx0KCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fFxuXHRcdFx0XHRcdFx0c2VsZWN0b3IgPT09IFwiKipcIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHtcblx0XHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGosIDEgKTtcblxuXHRcdFx0XHRcdGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudC0tO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNwZWNpYWwucmVtb3ZlICkge1xuXHRcdFx0XHRcdFx0c3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3Rcblx0XHRcdC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKVxuXHRcdFx0aWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fFxuXHRcdFx0XHRcdHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRlbGV0ZSBldmVudHNbIHR5cGUgXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25nZXIgdXNlZFxuXHRcdGlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGV2ZW50cyApICkge1xuXHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBcImhhbmRsZSBldmVudHNcIiApO1xuXHRcdH1cblx0fSxcblxuXHRkaXNwYXRjaDogZnVuY3Rpb24oIG5hdGl2ZUV2ZW50ICkge1xuXG5cdFx0Ly8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0XG5cdFx0dmFyIGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggbmF0aXZlRXZlbnQgKTtcblxuXHRcdHZhciBpLCBqLCByZXQsIG1hdGNoZWQsIGhhbmRsZU9iaiwgaGFuZGxlclF1ZXVlLFxuXHRcdFx0YXJncyA9IG5ldyBBcnJheSggYXJndW1lbnRzLmxlbmd0aCApLFxuXHRcdFx0aGFuZGxlcnMgPSAoIGRhdGFQcml2LmdldCggdGhpcywgXCJldmVudHNcIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9O1xuXG5cdFx0Ly8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnRcblx0XHRhcmdzWyAwIF0gPSBldmVudDtcblxuXHRcdGZvciAoIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0YXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07XG5cdFx0fVxuXG5cdFx0ZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzO1xuXG5cdFx0Ly8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZFxuXHRcdGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBoYW5kbGVyc1xuXHRcdGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTtcblxuXHRcdC8vIFJ1biBkZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5lYXRoIHVzXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoIG1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5lbGVtO1xuXG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSApICYmXG5cdFx0XHRcdCFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXG5cdFx0XHRcdC8vIFRyaWdnZXJlZCBldmVudCBtdXN0IGVpdGhlciAxKSBoYXZlIG5vIG5hbWVzcGFjZSwgb3IgMikgaGF2ZSBuYW1lc3BhY2Uocylcblx0XHRcdFx0Ly8gYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSkuXG5cdFx0XHRcdGlmICggIWV2ZW50LnJuYW1lc3BhY2UgfHwgZXZlbnQucm5hbWVzcGFjZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7XG5cblx0XHRcdFx0XHRldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7XG5cdFx0XHRcdFx0ZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhO1xuXG5cdFx0XHRcdFx0cmV0ID0gKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSApLmhhbmRsZSB8fFxuXHRcdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIgKS5hcHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7XG5cblx0XHRcdFx0XHRpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoIGV2ZW50LnJlc3VsdCA9IHJldCApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZVxuXHRcdGlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7XG5cdFx0XHRzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0aGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlcnMgKSB7XG5cdFx0dmFyIGksIGhhbmRsZU9iaiwgc2VsLCBtYXRjaGVkSGFuZGxlcnMsIG1hdGNoZWRTZWxlY3RvcnMsXG5cdFx0XHRoYW5kbGVyUXVldWUgPSBbXSxcblx0XHRcdGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LFxuXHRcdFx0Y3VyID0gZXZlbnQudGFyZ2V0O1xuXG5cdFx0Ly8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVyc1xuXHRcdGlmICggZGVsZWdhdGVDb3VudCAmJlxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTlcblx0XHRcdC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICh0cmFjLTEzMTgwKVxuXHRcdFx0Y3VyLm5vZGVUeXBlICYmXG5cblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MlxuXHRcdFx0Ly8gU3VwcHJlc3Mgc3BlYy12aW9sYXRpbmcgY2xpY2tzIGluZGljYXRpbmcgYSBub24tcHJpbWFyeSBwb2ludGVyIGJ1dHRvbiAodHJhYy0zODYxKVxuXHRcdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnQtdHlwZS1jbGlja1xuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTEgb25seVxuXHRcdFx0Ly8gLi4uYnV0IG5vdCBhcnJvdyBrZXkgXCJjbGlja3NcIiBvZiByYWRpbyBpbnB1dHMsIHdoaWNoIGNhbiBoYXZlIGBidXR0b25gIC0xIChnaC0yMzQzKVxuXHRcdFx0ISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGV2ZW50LmJ1dHRvbiA+PSAxICkgKSB7XG5cblx0XHRcdGZvciAoIDsgY3VyICE9PSB0aGlzOyBjdXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkge1xuXG5cdFx0XHRcdC8vIERvbid0IGNoZWNrIG5vbi1lbGVtZW50cyAoIzEzMjA4KVxuXHRcdFx0XHQvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1LCAjMTEzODIsICMxMTc2NClcblx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYgISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGN1ci5kaXNhYmxlZCA9PT0gdHJ1ZSApICkge1xuXHRcdFx0XHRcdG1hdGNoZWRIYW5kbGVycyA9IFtdO1xuXHRcdFx0XHRcdG1hdGNoZWRTZWxlY3RvcnMgPSB7fTtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHtcblx0XHRcdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpXG5cdFx0XHRcdFx0XHRzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyBcIiBcIjtcblxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQgP1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID4gLTEgOlxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkSGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggbWF0Y2hlZEhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IG1hdGNoZWRIYW5kbGVycyB9ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVyc1xuXHRcdGN1ciA9IHRoaXM7XG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhbmRsZXJRdWV1ZTtcblx0fSxcblxuXHRhZGRQcm9wOiBmdW5jdGlvbiggbmFtZSwgaG9vayApIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIGpRdWVyeS5FdmVudC5wcm90b3R5cGUsIG5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cblx0XHRcdGdldDogaXNGdW5jdGlvbiggaG9vayApID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBob29rKCB0aGlzLm9yaWdpbmFsRXZlbnQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gOlxuXHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFsgbmFtZSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblxuXHRcdFx0c2V0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgbmFtZSwge1xuXHRcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGZpeDogZnVuY3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0cmV0dXJuIG9yaWdpbmFsRXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gP1xuXHRcdFx0b3JpZ2luYWxFdmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7XG5cdH0sXG5cblx0c3BlY2lhbDoge1xuXHRcdGxvYWQ6IHtcblxuXHRcdFx0Ly8gUHJldmVudCB0cmlnZ2VyZWQgaW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3aW5kb3cubG9hZFxuXHRcdFx0bm9CdWJibGU6IHRydWVcblx0XHR9LFxuXHRcdGZvY3VzOiB7XG5cblx0XHRcdC8vIEZpcmUgbmF0aXZlIGV2ZW50IGlmIHBvc3NpYmxlIHNvIGJsdXIvZm9jdXMgc2VxdWVuY2UgaXMgY29ycmVjdFxuXHRcdFx0dHJpZ2dlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdGhpcyAhPT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmZvY3VzICkge1xuXHRcdFx0XHRcdHRoaXMuZm9jdXMoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNpblwiXG5cdFx0fSxcblx0XHRibHVyOiB7XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzID09PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuYmx1ciApIHtcblx0XHRcdFx0XHR0aGlzLmJsdXIoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNvdXRcIlxuXHRcdH0sXG5cdFx0Y2xpY2s6IHtcblxuXHRcdFx0Ly8gRm9yIGNoZWNrYm94LCBmaXJlIG5hdGl2ZSBldmVudCBzbyBjaGVja2VkIHN0YXRlIHdpbGwgYmUgcmlnaHRcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMudHlwZSA9PT0gXCJjaGVja2JveFwiICYmIHRoaXMuY2xpY2sgJiYgbm9kZU5hbWUoIHRoaXMsIFwiaW5wdXRcIiApICkge1xuXHRcdFx0XHRcdHRoaXMuY2xpY2soKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8vIEZvciBjcm9zcy1icm93c2VyIGNvbnNpc3RlbmN5LCBkb24ndCBmaXJlIG5hdGl2ZSAuY2xpY2soKSBvbiBsaW5rc1xuXHRcdFx0X2RlZmF1bHQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0cmV0dXJuIG5vZGVOYW1lKCBldmVudC50YXJnZXQsIFwiYVwiICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGJlZm9yZXVubG9hZDoge1xuXHRcdFx0cG9zdERpc3BhdGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCAyMCtcblx0XHRcdFx0Ly8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBpcyBub3Qgc2V0LlxuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0ZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHtcblxuXHQvLyBUaGlzIFwiaWZcIiBpcyBuZWVkZWQgZm9yIHBsYWluIG9iamVjdHNcblx0aWYgKCBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0ZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUgKTtcblx0fVxufTtcblxualF1ZXJ5LkV2ZW50ID0gZnVuY3Rpb24oIHNyYywgcHJvcHMgKSB7XG5cblx0Ly8gQWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IHRoZSAnbmV3JyBrZXl3b3JkXG5cdGlmICggISggdGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCApICkge1xuXHRcdHJldHVybiBuZXcgalF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBFdmVudCBvYmplY3Rcblx0aWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7XG5cdFx0dGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjO1xuXHRcdHRoaXMudHlwZSA9IHNyYy50eXBlO1xuXG5cdFx0Ly8gRXZlbnRzIGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwcmV2ZW50ZWRcblx0XHQvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8XG5cdFx0XHRcdHNyYy5kZWZhdWx0UHJldmVudGVkID09PSB1bmRlZmluZWQgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHlcblx0XHRcdFx0c3JjLnJldHVyblZhbHVlID09PSBmYWxzZSA/XG5cdFx0XHRyZXR1cm5UcnVlIDpcblx0XHRcdHJldHVybkZhbHNlO1xuXG5cdFx0Ly8gQ3JlYXRlIHRhcmdldCBwcm9wZXJ0aWVzXG5cdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDw9NiAtIDcgb25seVxuXHRcdC8vIFRhcmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICgjNTA0LCAjMTMxNDMpXG5cdFx0dGhpcy50YXJnZXQgPSAoIHNyYy50YXJnZXQgJiYgc3JjLnRhcmdldC5ub2RlVHlwZSA9PT0gMyApID9cblx0XHRcdHNyYy50YXJnZXQucGFyZW50Tm9kZSA6XG5cdFx0XHRzcmMudGFyZ2V0O1xuXG5cdFx0dGhpcy5jdXJyZW50VGFyZ2V0ID0gc3JjLmN1cnJlbnRUYXJnZXQ7XG5cdFx0dGhpcy5yZWxhdGVkVGFyZ2V0ID0gc3JjLnJlbGF0ZWRUYXJnZXQ7XG5cblx0Ly8gRXZlbnQgdHlwZVxuXHR9IGVsc2Uge1xuXHRcdHRoaXMudHlwZSA9IHNyYztcblx0fVxuXG5cdC8vIFB1dCBleHBsaWNpdGx5IHByb3ZpZGVkIHByb3BlcnRpZXMgb250byB0aGUgZXZlbnQgb2JqZWN0XG5cdGlmICggcHJvcHMgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdGhpcywgcHJvcHMgKTtcblx0fVxuXG5cdC8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBpbmNvbWluZyBldmVudCBkb2Vzbid0IGhhdmUgb25lXG5cdHRoaXMudGltZVN0YW1wID0gc3JjICYmIHNyYy50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTtcblxuXHQvLyBNYXJrIGl0IGFzIGZpeGVkXG5cdHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlO1xufTtcblxuLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nXG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sXG5qUXVlcnkuRXZlbnQucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LkV2ZW50LFxuXHRpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLFxuXHRpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNTaW11bGF0ZWQ6IGZhbHNlLFxuXG5cdHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdH1cblxuXHRcdHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH1cbn07XG5cbi8vIEluY2x1ZGVzIGFsbCBjb21tb24gZXZlbnQgcHJvcHMgaW5jbHVkaW5nIEtleUV2ZW50IGFuZCBNb3VzZUV2ZW50IHNwZWNpZmljIHByb3BzXG5qUXVlcnkuZWFjaCgge1xuXHRhbHRLZXk6IHRydWUsXG5cdGJ1YmJsZXM6IHRydWUsXG5cdGNhbmNlbGFibGU6IHRydWUsXG5cdGNoYW5nZWRUb3VjaGVzOiB0cnVlLFxuXHRjdHJsS2V5OiB0cnVlLFxuXHRkZXRhaWw6IHRydWUsXG5cdGV2ZW50UGhhc2U6IHRydWUsXG5cdG1ldGFLZXk6IHRydWUsXG5cdHBhZ2VYOiB0cnVlLFxuXHRwYWdlWTogdHJ1ZSxcblx0c2hpZnRLZXk6IHRydWUsXG5cdHZpZXc6IHRydWUsXG5cdFwiY2hhclwiOiB0cnVlLFxuXHRjaGFyQ29kZTogdHJ1ZSxcblx0a2V5OiB0cnVlLFxuXHRrZXlDb2RlOiB0cnVlLFxuXHRidXR0b246IHRydWUsXG5cdGJ1dHRvbnM6IHRydWUsXG5cdGNsaWVudFg6IHRydWUsXG5cdGNsaWVudFk6IHRydWUsXG5cdG9mZnNldFg6IHRydWUsXG5cdG9mZnNldFk6IHRydWUsXG5cdHBvaW50ZXJJZDogdHJ1ZSxcblx0cG9pbnRlclR5cGU6IHRydWUsXG5cdHNjcmVlblg6IHRydWUsXG5cdHNjcmVlblk6IHRydWUsXG5cdHRhcmdldFRvdWNoZXM6IHRydWUsXG5cdHRvRWxlbWVudDogdHJ1ZSxcblx0dG91Y2hlczogdHJ1ZSxcblxuXHR3aGljaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBidXR0b24gPSBldmVudC5idXR0b247XG5cblx0XHQvLyBBZGQgd2hpY2ggZm9yIGtleSBldmVudHNcblx0XHRpZiAoIGV2ZW50LndoaWNoID09IG51bGwgJiYgcmtleUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHtcblx0XHRcdHJldHVybiBldmVudC5jaGFyQ29kZSAhPSBudWxsID8gZXZlbnQuY2hhckNvZGUgOiBldmVudC5rZXlDb2RlO1xuXHRcdH1cblxuXHRcdC8vIEFkZCB3aGljaCBmb3IgY2xpY2s6IDEgPT09IGxlZnQ7IDIgPT09IG1pZGRsZTsgMyA9PT0gcmlnaHRcblx0XHRpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCAmJiBybW91c2VFdmVudC50ZXN0KCBldmVudC50eXBlICkgKSB7XG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDEgKSB7XG5cdFx0XHRcdHJldHVybiAxO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDIgKSB7XG5cdFx0XHRcdHJldHVybiAzO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDQgKSB7XG5cdFx0XHRcdHJldHVybiAyO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXZlbnQud2hpY2g7XG5cdH1cbn0sIGpRdWVyeS5ldmVudC5hZGRQcm9wICk7XG5cbi8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrc1xuLy8gc28gdGhhdCBldmVudCBkZWxlZ2F0aW9uIHdvcmtzIGluIGpRdWVyeS5cbi8vIERvIHRoZSBzYW1lIGZvciBwb2ludGVyZW50ZXIvcG9pbnRlcmxlYXZlIGFuZCBwb2ludGVyb3Zlci9wb2ludGVyb3V0XG4vL1xuLy8gU3VwcG9ydDogU2FmYXJpIDcgb25seVxuLy8gU2FmYXJpIHNlbmRzIG1vdXNlZW50ZXIgdG9vIG9mdGVuOyBzZWU6XG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NzAyNThcbi8vIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyAoaXQgZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCkuXG5qUXVlcnkuZWFjaCgge1xuXHRtb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLFxuXHRtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCIsXG5cdHBvaW50ZXJlbnRlcjogXCJwb2ludGVyb3ZlclwiLFxuXHRwb2ludGVybGVhdmU6IFwicG9pbnRlcm91dFwiXG59LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0ge1xuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxuXHRcdGJpbmRUeXBlOiBmaXgsXG5cblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdHRhcmdldCA9IHRoaXMsXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxuXHRcdFx0XHRoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7XG5cblx0XHRcdC8vIEZvciBtb3VzZWVudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuXG5cdFx0XHQvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVkIHRoZSBicm93c2VyIHdpbmRvd1xuXHRcdFx0aWYgKCAhcmVsYXRlZCB8fCAoIHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSApICkge1xuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuXHRcdFx0XHRyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBmaXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdG9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0b25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTtcblx0fSxcblx0b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHtcblx0XHR2YXIgaGFuZGxlT2JqLCB0eXBlO1xuXHRcdGlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkge1xuXG5cdFx0XHQvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50XG5cdFx0XHRoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7XG5cdFx0XHRqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICkub2ZmKFxuXHRcdFx0XHRoYW5kbGVPYmoubmFtZXNwYWNlID9cblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUgKyBcIi5cIiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOlxuXHRcdFx0XHRcdGhhbmRsZU9iai5vcmlnVHlwZSxcblx0XHRcdFx0aGFuZGxlT2JqLnNlbGVjdG9yLFxuXHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlclxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdIClcblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzIFssIGZuXSApXG5cdFx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxudmFyXG5cblx0LyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvMzIyOVxuXHRyeGh0bWxUYWcgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSopW14+XSopXFwvPi9naSxcblxuXHQvKiBlc2xpbnQtZW5hYmxlICovXG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMCAtIDExLCBFZGdlIDEyIC0gMTMgb25seVxuXHQvLyBJbiBJRS9FZGdlIHVzaW5nIHJlZ2V4IGdyb3VwcyBoZXJlIGNhdXNlcyBzZXZlcmUgc2xvd2Rvd25zLlxuXHQvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyL1xuXHRybm9Jbm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxcblxuXHQvLyBjaGVja2VkPVwiY2hlY2tlZFwiIG9yIGNoZWNrZWRcblx0cmNoZWNrZWQgPSAvY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLFxuXHRyY2xlYW5TY3JpcHQgPSAvXlxccyo8ISg/OlxcW0NEQVRBXFxbfC0tKXwoPzpcXF1cXF18LS0pPlxccyokL2c7XG5cbi8vIFByZWZlciBhIHRib2R5IG92ZXIgaXRzIHBhcmVudCB0YWJsZSBmb3IgY29udGFpbmluZyBuZXcgcm93c1xuZnVuY3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkge1xuXHRpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRhYmxlXCIgKSAmJlxuXHRcdG5vZGVOYW1lKCBjb250ZW50Lm5vZGVUeXBlICE9PSAxMSA/IGNvbnRlbnQgOiBjb250ZW50LmZpcnN0Q2hpbGQsIFwidHJcIiApICkge1xuXG5cdFx0cmV0dXJuIGpRdWVyeSggZWxlbSApLmNoaWxkcmVuKCBcInRib2R5XCIgKVsgMCBdIHx8IGVsZW07XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxuLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvblxuZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHtcblx0ZWxlbS50eXBlID0gKCBlbGVtLmdldEF0dHJpYnV0ZSggXCJ0eXBlXCIgKSAhPT0gbnVsbCApICsgXCIvXCIgKyBlbGVtLnR5cGU7XG5cdHJldHVybiBlbGVtO1xufVxuZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHtcblx0aWYgKCAoIGVsZW0udHlwZSB8fCBcIlwiICkuc2xpY2UoIDAsIDUgKSA9PT0gXCJ0cnVlL1wiICkge1xuXHRcdGVsZW0udHlwZSA9IGVsZW0udHlwZS5zbGljZSggNSApO1xuXHR9IGVsc2Uge1xuXHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBcInR5cGVcIiApO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzO1xuXG5cdGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLlxuXHRpZiAoIGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHBkYXRhT2xkID0gZGF0YVByaXYuYWNjZXNzKCBzcmMgKTtcblx0XHRwZGF0YUN1ciA9IGRhdGFQcml2LnNldCggZGVzdCwgcGRhdGFPbGQgKTtcblx0XHRldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7XG5cblx0XHRpZiAoIGV2ZW50cyApIHtcblx0XHRcdGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7XG5cdFx0XHRwZGF0YUN1ci5ldmVudHMgPSB7fTtcblxuXHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIDIuIENvcHkgdXNlciBkYXRhXG5cdGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0dWRhdGFPbGQgPSBkYXRhVXNlci5hY2Nlc3MoIHNyYyApO1xuXHRcdHVkYXRhQ3VyID0galF1ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7XG5cblx0XHRkYXRhVXNlci5zZXQoIGRlc3QsIHVkYXRhQ3VyICk7XG5cdH1cbn1cblxuLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzXG5mdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkge1xuXHR2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0Ly8gRmFpbHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24uXG5cdGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMudHlwZSApICkge1xuXHRcdGRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkO1xuXG5cdC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zXG5cdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgfHwgbm9kZU5hbWUgPT09IFwidGV4dGFyZWFcIiApIHtcblx0XHRkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7XG5cdH1cbn1cblxuZnVuY3Rpb24gZG9tTWFuaXAoIGNvbGxlY3Rpb24sIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICkge1xuXG5cdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0YXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTtcblxuXHR2YXIgZnJhZ21lbnQsIGZpcnN0LCBzY3JpcHRzLCBoYXNTY3JpcHRzLCBub2RlLCBkb2MsXG5cdFx0aSA9IDAsXG5cdFx0bCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuXHRcdGlOb0Nsb25lID0gbCAtIDEsXG5cdFx0dmFsdWUgPSBhcmdzWyAwIF0sXG5cdFx0dmFsdWVJc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiggdmFsdWUgKTtcblxuXHQvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29udGFpbiBjaGVja2VkLCBpbiBXZWJLaXRcblx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gfHxcblx0XHRcdCggbCA+IDEgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCFzdXBwb3J0LmNoZWNrQ2xvbmUgJiYgcmNoZWNrZWQudGVzdCggdmFsdWUgKSApICkge1xuXHRcdHJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRleCApIHtcblx0XHRcdHZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXggKTtcblx0XHRcdGlmICggdmFsdWVJc0Z1bmN0aW9uICkge1xuXHRcdFx0XHRhcmdzWyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2VsZi5odG1sKCkgKTtcblx0XHRcdH1cblx0XHRcdGRvbU1hbmlwKCBzZWxmLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApO1xuXHRcdH0gKTtcblx0fVxuXG5cdGlmICggbCApIHtcblx0XHRmcmFnbWVudCA9IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rpb25bIDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgY29sbGVjdGlvbiwgaWdub3JlZCApO1xuXHRcdGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICggZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgKSB7XG5cdFx0XHRmcmFnbWVudCA9IGZpcnN0O1xuXHRcdH1cblxuXHRcdC8vIFJlcXVpcmUgZWl0aGVyIG5ldyBjb250ZW50IG9yIGFuIGludGVyZXN0IGluIGlnbm9yZWQgZWxlbWVudHMgdG8gaW52b2tlIHRoZSBjYWxsYmFja1xuXHRcdGlmICggZmlyc3QgfHwgaWdub3JlZCApIHtcblx0XHRcdHNjcmlwdHMgPSBqUXVlcnkubWFwKCBnZXRBbGwoIGZyYWdtZW50LCBcInNjcmlwdFwiICksIGRpc2FibGVTY3JpcHQgKTtcblx0XHRcdGhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0aDtcblxuXHRcdFx0Ly8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbVxuXHRcdFx0Ly8gaW5zdGVhZCBvZiB0aGUgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwXG5cdFx0XHQvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLlxuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRub2RlID0gZnJhZ21lbnQ7XG5cblx0XHRcdFx0aWYgKCBpICE9PSBpTm9DbG9uZSApIHtcblx0XHRcdFx0XHRub2RlID0galF1ZXJ5LmNsb25lKCBub2RlLCB0cnVlLCB0cnVlICk7XG5cblx0XHRcdFx0XHQvLyBLZWVwIHJlZmVyZW5jZXMgdG8gY2xvbmVkIHNjcmlwdHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggc2NyaXB0cywgZ2V0QWxsKCBub2RlLCBcInNjcmlwdFwiICkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYWxsYmFjay5jYWxsKCBjb2xsZWN0aW9uWyBpIF0sIG5vZGUsIGkgKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXHRcdFx0XHRkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50O1xuXG5cdFx0XHRcdC8vIFJlZW5hYmxlIHNjcmlwdHNcblx0XHRcdFx0alF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNjcmlwdCApO1xuXG5cdFx0XHRcdC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb25cblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBpKysgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IHNjcmlwdHNbIGkgXTtcblx0XHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUudHlwZSB8fCBcIlwiICkgJiZcblx0XHRcdFx0XHRcdCFkYXRhUHJpdi5hY2Nlc3MoIG5vZGUsIFwiZ2xvYmFsRXZhbFwiICkgJiZcblx0XHRcdFx0XHRcdGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7XG5cblx0XHRcdFx0XHRcdGlmICggbm9kZS5zcmMgJiYgKCBub2RlLnR5cGUgfHwgXCJcIiApLnRvTG93ZXJDYXNlKCkgICE9PSBcIm1vZHVsZVwiICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5Ll9ldmFsVXJsICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5fZXZhbFVybCggbm9kZS5zcmMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0RE9NRXZhbCggbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKCByY2xlYW5TY3JpcHQsIFwiXCIgKSwgZG9jLCBub2RlICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNvbGxlY3Rpb247XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSggZWxlbSwgc2VsZWN0b3IsIGtlZXBEYXRhICkge1xuXHR2YXIgbm9kZSxcblx0XHRub2RlcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIGVsZW0gKSA6IGVsZW0sXG5cdFx0aSA9IDA7XG5cblx0Zm9yICggOyAoIG5vZGUgPSBub2Rlc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5vZGUgKSApO1xuXHRcdH1cblxuXHRcdGlmICggbm9kZS5wYXJlbnROb2RlICkge1xuXHRcdFx0aWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFpbnMoIG5vZGUub3duZXJEb2N1bWVudCwgbm9kZSApICkge1xuXHRcdFx0XHRzZXRHbG9iYWxFdmFsKCBnZXRBbGwoIG5vZGUsIFwic2NyaXB0XCIgKSApO1xuXHRcdFx0fVxuXHRcdFx0bm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBub2RlICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0aHRtbFByZWZpbHRlcjogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0cmV0dXJuIGh0bWwucmVwbGFjZSggcnhodG1sVGFnLCBcIjwkMT48LyQyPlwiICk7XG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHR2YXIgaSwgbCwgc3JjRWxlbWVudHMsIGRlc3RFbGVtZW50cyxcblx0XHRcdGNsb25lID0gZWxlbS5jbG9uZU5vZGUoIHRydWUgKSxcblx0XHRcdGluUGFnZSA9IGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7XG5cblx0XHQvLyBGaXggSUUgY2xvbmluZyBpc3N1ZXNcblx0XHRpZiAoICFzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkICYmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBlID09PSAxMSApICYmXG5cdFx0XHRcdCFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblxuXHRcdFx0Ly8gV2UgZXNjaGV3IFNpenpsZSBoZXJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zOiBodHRwczovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8yXG5cdFx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7XG5cdFx0XHRzcmNFbGVtZW50cyA9IGdldEFsbCggZWxlbSApO1xuXG5cdFx0XHRmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0Zml4SW5wdXQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZVxuXHRcdGlmICggZGF0YUFuZEV2ZW50cyApIHtcblx0XHRcdGlmICggZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRcdHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7XG5cdFx0XHRcdGRlc3RFbGVtZW50cyA9IGRlc3RFbGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7XG5cblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCBcInNjcmlwdFwiICk7XG5cdFx0aWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sIFwic2NyaXB0XCIgKSApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB0aGUgY2xvbmVkIHNldFxuXHRcdHJldHVybiBjbG9uZTtcblx0fSxcblxuXHRjbGVhbkRhdGE6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblx0XHR2YXIgZGF0YSwgZWxlbSwgdHlwZSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoIGVsZW0gPSBlbGVtc1sgaSBdICkgIT09IHVuZGVmaW5lZDsgaSsrICkge1xuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cdFx0XHRcdGlmICggKCBkYXRhID0gZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhLmV2ZW50cyApIHtcblx0XHRcdFx0XHRcdGZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggc3BlY2lhbFsgdHlwZSBdICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKTtcblxuXHRcdFx0XHRcdFx0XHQvLyBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gYXZvaWQgalF1ZXJ5LmV2ZW50LnJlbW92ZSdzIG92ZXJoZWFkXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBkYXRhLmhhbmRsZSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NStcblx0XHRcdFx0XHQvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmVcblx0XHRcdFx0XHRlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gKSB7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1K1xuXHRcdFx0XHRcdC8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZVxuXHRcdFx0XHRcdGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGRldGFjaDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IgKTtcblx0fSxcblxuXHR0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkudGV4dCggdGhpcyApIDpcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0dGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0YXBwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0cHJlcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFyZ2V0LmZpcnN0Q2hpbGQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0YmVmb3JlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRhZnRlcjogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxpbmcgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7ICggZWxlbSA9IHRoaXNbIGkgXSApICE9IG51bGw7IGkrKyApIHtcblx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblxuXHRcdFx0XHQvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2Rlc1xuXHRcdFx0XHRlbGVtLnRleHRDb250ZW50ID0gXCJcIjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdGRhdGFBbmRFdmVudHMgPSBkYXRhQW5kRXZlbnRzID09IG51bGwgPyBmYWxzZSA6IGRhdGFBbmRFdmVudHM7XG5cdFx0ZGVlcERhdGFBbmRFdmVudHMgPSBkZWVwRGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBEYXRhQW5kRXZlbnRzO1xuXG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBqUXVlcnkuY2xvbmUoIHRoaXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdGh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZWxlbSA9IHRoaXNbIDAgXSB8fCB7fSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdGwgPSB0aGlzLmxlbmd0aDtcblxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmlubmVySFRNTDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTFxuXHRcdFx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmXG5cdFx0XHRcdCF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCkgXSApIHtcblxuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5odG1sUHJlZmlsdGVyKCB2YWx1ZSApO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdFx0ZWxlbSA9IHRoaXNbIGkgXSB8fCB7fTtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXHRcdFx0XHRcdFx0XHRlbGVtLmlubmVySFRNTCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGVsZW0gPSAwO1xuXG5cdFx0XHRcdC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZFxuXHRcdFx0XHR9IGNhdGNoICggZSApIHt9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTtcblx0XHRcdH1cblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdHJlcGxhY2VXaXRoOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaWdub3JlZCA9IFtdO1xuXG5cdFx0Ly8gTWFrZSB0aGUgY2hhbmdlcywgcmVwbGFjaW5nIGVhY2ggbm9uLWlnbm9yZWQgY29udGV4dCBlbGVtZW50IHdpdGggdGhlIG5ldyBjb250ZW50XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcblxuXHRcdFx0aWYgKCBqUXVlcnkuaW5BcnJheSggdGhpcywgaWdub3JlZCApIDwgMCApIHtcblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCB0aGlzICkgKTtcblx0XHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cdFx0XHRcdFx0cGFyZW50LnJlcGxhY2VDaGlsZCggZWxlbSwgdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBGb3JjZSBjYWxsYmFjayBpbnZvY2F0aW9uXG5cdFx0fSwgaWdub3JlZCApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCB7XG5cdGFwcGVuZFRvOiBcImFwcGVuZFwiLFxuXHRwcmVwZW5kVG86IFwicHJlcGVuZFwiLFxuXHRpbnNlcnRCZWZvcmU6IFwiYmVmb3JlXCIsXG5cdGluc2VydEFmdGVyOiBcImFmdGVyXCIsXG5cdHJlcGxhY2VBbGw6IFwicmVwbGFjZVdpdGhcIlxufSwgZnVuY3Rpb24oIG5hbWUsIG9yaWdpbmFsICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgZWxlbXMsXG5cdFx0XHRyZXQgPSBbXSxcblx0XHRcdGluc2VydCA9IGpRdWVyeSggc2VsZWN0b3IgKSxcblx0XHRcdGxhc3QgPSBpbnNlcnQubGVuZ3RoIC0gMSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHtcblx0XHRcdGVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKCB0cnVlICk7XG5cdFx0XHRqUXVlcnkoIGluc2VydFsgaSBdIClbIG9yaWdpbmFsIF0oIGVsZW1zICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0Ly8gLmdldCgpIGJlY2F1c2UgcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0cHVzaC5hcHBseSggcmV0LCBlbGVtcy5nZXQoKSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0ICk7XG5cdH07XG59ICk7XG52YXIgcm51bW5vbnB4ID0gbmV3IFJlZ0V4cCggXCJeKFwiICsgcG51bSArIFwiKSg/IXB4KVthLXolXSskXCIsIFwiaVwiICk7XG5cbnZhciBnZXRTdHlsZXMgPSBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seSwgRmlyZWZveCA8PTMwICgjMTUwOTgsICMxNDE1MClcblx0XHQvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBpbiBwb3B1cHNcblx0XHQvLyBGRiBtZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggXCJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlXCJcblx0XHR2YXIgdmlldyA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztcblxuXHRcdGlmICggIXZpZXcgfHwgIXZpZXcub3BlbmVyICkge1xuXHRcdFx0dmlldyA9IHdpbmRvdztcblx0XHR9XG5cblx0XHRyZXR1cm4gdmlldy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtICk7XG5cdH07XG5cbnZhciByYm94U3R5bGUgPSBuZXcgUmVnRXhwKCBjc3NFeHBhbmQuam9pbiggXCJ8XCIgKSwgXCJpXCIgKTtcblxuXG5cbiggZnVuY3Rpb24oKSB7XG5cblx0Ly8gRXhlY3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxlIHRlc3RzIHJlcXVpcmUgb25seSBvbmUgbGF5b3V0XG5cdC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHRoZSBzZWNvbmQgY29tcHV0YXRpb24uXG5cdGZ1bmN0aW9uIGNvbXB1dGVTdHlsZVRlc3RzKCkge1xuXG5cdFx0Ly8gVGhpcyBpcyBhIHNpbmdsZXRvbiwgd2UgbmVlZCB0byBleGVjdXRlIGl0IG9ubHkgb25jZVxuXHRcdGlmICggIWRpdiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O1wiICtcblx0XHRcdFwibWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowXCI7XG5cdFx0ZGl2LnN0eWxlLmNzc1RleHQgPVxuXHRcdFx0XCJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7XCIgK1xuXHRcdFx0XCJtYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O1wiICtcblx0XHRcdFwid2lkdGg6NjAlO3RvcDoxJVwiO1xuXHRcdGRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCggY29udGFpbmVyICkuYXBwZW5kQ2hpbGQoIGRpdiApO1xuXG5cdFx0dmFyIGRpdlN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiApO1xuXHRcdHBpeGVsUG9zaXRpb25WYWwgPSBkaXZTdHlsZS50b3AgIT09IFwiMSVcIjtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHksIEZpcmVmb3ggPD0zIC0gNDRcblx0XHRyZWxpYWJsZU1hcmdpbkxlZnRWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdlN0eWxlLm1hcmdpbkxlZnQgKSA9PT0gMTI7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBTYWZhcmkgPD05LjEgLSAxMC4xLCBpT1MgPD03LjAgLSA5LjNcblx0XHQvLyBTb21lIHN0eWxlcyBjb21lIGJhY2sgd2l0aCBwZXJjZW50YWdlIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhleSBzaG91bGRuJ3Rcblx0XHRkaXYuc3R5bGUucmlnaHQgPSBcIjYwJVwiO1xuXHRcdHBpeGVsQm94U3R5bGVzVmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS5yaWdodCApID09PSAzNjtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdFx0Ly8gRGV0ZWN0IG1pc3JlcG9ydGluZyBvZiBjb250ZW50IGRpbWVuc2lvbnMgZm9yIGJveC1zaXppbmc6Ym9yZGVyLWJveCBlbGVtZW50c1xuXHRcdGJveFNpemluZ1JlbGlhYmxlVmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS53aWR0aCApID09PSAzNjtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgb25seVxuXHRcdC8vIERldGVjdCBvdmVyZmxvdzpzY3JvbGwgc2NyZXdpbmVzcyAoZ2gtMzY5OSlcblx0XHRkaXYuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG5cdFx0c2Nyb2xsYm94U2l6ZVZhbCA9IGRpdi5vZmZzZXRXaWR0aCA9PT0gMzYgfHwgXCJhYnNvbHV0ZVwiO1xuXG5cdFx0ZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKCBjb250YWluZXIgKTtcblxuXHRcdC8vIE51bGxpZnkgdGhlIGRpdiBzbyBpdCB3b3VsZG4ndCBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeSBhbmRcblx0XHQvLyBpdCB3aWxsIGFsc28gYmUgYSBzaWduIHRoYXQgY2hlY2tzIGFscmVhZHkgcGVyZm9ybWVkXG5cdFx0ZGl2ID0gbnVsbDtcblx0fVxuXG5cdGZ1bmN0aW9uIHJvdW5kUGl4ZWxNZWFzdXJlcyggbWVhc3VyZSApIHtcblx0XHRyZXR1cm4gTWF0aC5yb3VuZCggcGFyc2VGbG9hdCggbWVhc3VyZSApICk7XG5cdH1cblxuXHR2YXIgcGl4ZWxQb3NpdGlvblZhbCwgYm94U2l6aW5nUmVsaWFibGVWYWwsIHNjcm9sbGJveFNpemVWYWwsIHBpeGVsQm94U3R5bGVzVmFsLFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdFZhbCxcblx0XHRjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICksXG5cdFx0ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApO1xuXG5cdC8vIEZpbmlzaCBlYXJseSBpbiBsaW1pdGVkIChub24tYnJvd3NlcikgZW52aXJvbm1lbnRzXG5cdGlmICggIWRpdi5zdHlsZSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdC8vIFN0eWxlIG9mIGNsb25lZCBlbGVtZW50IGFmZmVjdHMgc291cmNlIGVsZW1lbnQgY2xvbmVkICgjODkwOClcblx0ZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJjb250ZW50LWJveFwiO1xuXHRkaXYuY2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcIlwiO1xuXHRzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gXCJjb250ZW50LWJveFwiO1xuXG5cdGpRdWVyeS5leHRlbmQoIHN1cHBvcnQsIHtcblx0XHRib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsO1xuXHRcdH0sXG5cdFx0cGl4ZWxCb3hTdHlsZXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbEJveFN0eWxlc1ZhbDtcblx0XHR9LFxuXHRcdHBpeGVsUG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbFBvc2l0aW9uVmFsO1xuXHRcdH0sXG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcmVsaWFibGVNYXJnaW5MZWZ0VmFsO1xuXHRcdH0sXG5cdFx0c2Nyb2xsYm94U2l6ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHNjcm9sbGJveFNpemVWYWw7XG5cdFx0fVxuXHR9ICk7XG59ICkoKTtcblxuXG5mdW5jdGlvbiBjdXJDU1MoIGVsZW0sIG5hbWUsIGNvbXB1dGVkICkge1xuXHR2YXIgd2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LFxuXG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA1MStcblx0XHQvLyBSZXRyaWV2aW5nIHN0eWxlIGJlZm9yZSBjb21wdXRlZCBzb21laG93XG5cdFx0Ly8gZml4ZXMgYW4gaXNzdWUgd2l0aCBnZXR0aW5nIHdyb25nIHZhbHVlc1xuXHRcdC8vIG9uIGRldGFjaGVkIGVsZW1lbnRzXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdGNvbXB1dGVkID0gY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7XG5cblx0Ly8gZ2V0UHJvcGVydHlWYWx1ZSBpcyBuZWVkZWQgZm9yOlxuXHQvLyAgIC5jc3MoJ2ZpbHRlcicpIChJRSA5IG9ubHksICMxMjUzNylcblx0Ly8gICAuY3NzKCctLWN1c3RvbVByb3BlcnR5KSAoIzMxNDQpXG5cdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0cmV0ID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF07XG5cblx0XHRpZiAoIHJldCA9PT0gXCJcIiAmJiAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHtcblx0XHRcdHJldCA9IGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIEEgdHJpYnV0ZSB0byB0aGUgXCJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzXCJcblx0XHQvLyBBbmRyb2lkIEJyb3dzZXIgcmV0dXJucyBwZXJjZW50YWdlIGZvciBzb21lIHZhbHVlcyxcblx0XHQvLyBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzLlxuXHRcdC8vIFRoaXMgaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJhZnQgc3BlYzpcblx0XHQvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Jlc29sdmVkLXZhbHVlc1xuXHRcdGlmICggIXN1cHBvcnQucGl4ZWxCb3hTdHlsZXMoKSAmJiBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcmJveFN0eWxlLnRlc3QoIG5hbWUgKSApIHtcblxuXHRcdFx0Ly8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlc1xuXHRcdFx0d2lkdGggPSBzdHlsZS53aWR0aDtcblx0XHRcdG1pbldpZHRoID0gc3R5bGUubWluV2lkdGg7XG5cdFx0XHRtYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoO1xuXG5cdFx0XHQvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdpZHRoID0gc3R5bGUud2lkdGggPSByZXQ7XG5cdFx0XHRyZXQgPSBjb21wdXRlZC53aWR0aDtcblxuXHRcdFx0Ly8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlc1xuXHRcdFx0c3R5bGUud2lkdGggPSB3aWR0aDtcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7XG5cdFx0XHRzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXQgIT09IHVuZGVmaW5lZCA/XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdFx0Ly8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdlci5cblx0XHRyZXQgKyBcIlwiIDpcblx0XHRyZXQ7XG59XG5cblxuZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkge1xuXG5cdC8vIERlZmluZSB0aGUgaG9vaywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVkZWQuXG5cdHJldHVybiB7XG5cdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggY29uZGl0aW9uRm4oKSApIHtcblxuXHRcdFx0XHQvLyBIb29rIG5vdCBuZWVkZWQgKG9yIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBpdCBkdWVcblx0XHRcdFx0Ly8gdG8gbWlzc2luZyBkZXBlbmRlbmN5KSwgcmVtb3ZlIGl0LlxuXHRcdFx0XHRkZWxldGUgdGhpcy5nZXQ7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSG9vayBuZWVkZWQ7IHJlZGVmaW5lIGl0IHNvIHRoYXQgdGhlIHN1cHBvcnQgdGVzdCBpcyBub3QgZXhlY3V0ZWQgYWdhaW4uXG5cdFx0XHRyZXR1cm4gKCB0aGlzLmdldCA9IGhvb2tGbiApLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9XG5cdH07XG59XG5cblxudmFyXG5cblx0Ly8gU3dhcHBhYmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0aCB0YWJsZVxuXHQvLyBleGNlcHQgXCJ0YWJsZVwiLCBcInRhYmxlLWNlbGxcIiwgb3IgXCJ0YWJsZS1jYXB0aW9uXCJcblx0Ly8gU2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5XG5cdHJkaXNwbGF5c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxcblx0cmN1c3RvbVByb3AgPSAvXi0tLyxcblx0Y3NzU2hvdyA9IHsgcG9zaXRpb246IFwiYWJzb2x1dGVcIiwgdmlzaWJpbGl0eTogXCJoaWRkZW5cIiwgZGlzcGxheTogXCJibG9ja1wiIH0sXG5cdGNzc05vcm1hbFRyYW5zZm9ybSA9IHtcblx0XHRsZXR0ZXJTcGFjaW5nOiBcIjBcIixcblx0XHRmb250V2VpZ2h0OiBcIjQwMFwiXG5cdH0sXG5cblx0Y3NzUHJlZml4ZXMgPSBbIFwiV2Via2l0XCIsIFwiTW96XCIsIFwibXNcIiBdLFxuXHRlbXB0eVN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApLnN0eWxlO1xuXG4vLyBSZXR1cm4gYSBjc3MgcHJvcGVydHkgbWFwcGVkIHRvIGEgcG90ZW50aWFsbHkgdmVuZG9yIHByZWZpeGVkIHByb3BlcnR5XG5mdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHtcblxuXHQvLyBTaG9ydGN1dCBmb3IgbmFtZXMgdGhhdCBhcmUgbm90IHZlbmRvciBwcmVmaXhlZFxuXHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXG5cdC8vIENoZWNrIGZvciB2ZW5kb3IgcHJlZml4ZWQgbmFtZXNcblx0dmFyIGNhcE5hbWUgPSBuYW1lWyAwIF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoIDEgKSxcblx0XHRpID0gY3NzUHJlZml4ZXMubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTtcblx0XHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRcdHJldHVybiBuYW1lO1xuXHRcdH1cblx0fVxufVxuXG4vLyBSZXR1cm4gYSBwcm9wZXJ0eSBtYXBwZWQgYWxvbmcgd2hhdCBqUXVlcnkuY3NzUHJvcHMgc3VnZ2VzdHMgb3IgdG9cbi8vIGEgdmVuZG9yIHByZWZpeGVkIHByb3BlcnR5LlxuZnVuY3Rpb24gZmluYWxQcm9wTmFtZSggbmFtZSApIHtcblx0dmFyIHJldCA9IGpRdWVyeS5jc3NQcm9wc1sgbmFtZSBdO1xuXHRpZiAoICFyZXQgKSB7XG5cdFx0cmV0ID0galF1ZXJ5LmNzc1Byb3BzWyBuYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHx8IG5hbWU7XG5cdH1cblx0cmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApIHtcblxuXHQvLyBBbnkgcmVsYXRpdmUgKCsvLSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuXG5cdC8vIG5vcm1hbGl6ZWQgYXQgdGhpcyBwb2ludFxuXHR2YXIgbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKTtcblx0cmV0dXJuIG1hdGNoZXMgP1xuXG5cdFx0Ly8gR3VhcmQgYWdhaW5zdCB1bmRlZmluZWQgXCJzdWJ0cmFjdFwiLCBlLmcuLCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3Ncblx0XHRNYXRoLm1heCggMCwgbWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMyBdIHx8IFwicHhcIiApIDpcblx0XHR2YWx1ZTtcbn1cblxuZnVuY3Rpb24gYm94TW9kZWxBZGp1c3RtZW50KCBlbGVtLCBkaW1lbnNpb24sIGJveCwgaXNCb3JkZXJCb3gsIHN0eWxlcywgY29tcHV0ZWRWYWwgKSB7XG5cdHZhciBpID0gZGltZW5zaW9uID09PSBcIndpZHRoXCIgPyAxIDogMCxcblx0XHRleHRyYSA9IDAsXG5cdFx0ZGVsdGEgPSAwO1xuXG5cdC8vIEFkanVzdG1lbnQgbWF5IG5vdCBiZSBuZWNlc3Nhcnlcblx0aWYgKCBib3ggPT09ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSApIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGZvciAoIDsgaSA8IDQ7IGkgKz0gMiApIHtcblxuXHRcdC8vIEJvdGggYm94IG1vZGVscyBleGNsdWRlIG1hcmdpblxuXHRcdGlmICggYm94ID09PSBcIm1hcmdpblwiICkge1xuXHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgYm94ICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBjb250ZW50LWJveCwgd2UncmUgc2Vla2luZyBcInBhZGRpbmdcIiBvciBcImJvcmRlclwiIG9yIFwibWFyZ2luXCJcblx0XHRpZiAoICFpc0JvcmRlckJveCApIHtcblxuXHRcdFx0Ly8gQWRkIHBhZGRpbmdcblx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXG5cdFx0XHQvLyBGb3IgXCJib3JkZXJcIiBvciBcIm1hcmdpblwiLCBhZGQgYm9yZGVyXG5cdFx0XHRpZiAoIGJveCAhPT0gXCJwYWRkaW5nXCIgKSB7XG5cdFx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cblx0XHRcdC8vIEJ1dCBzdGlsbCBrZWVwIHRyYWNrIG9mIGl0IG90aGVyd2lzZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZXh0cmEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBib3JkZXItYm94IChjb250ZW50ICsgcGFkZGluZyArIGJvcmRlciksIHdlJ3JlIHNlZWtpbmcgXCJjb250ZW50XCIgb3Jcblx0XHQvLyBcInBhZGRpbmdcIiBvciBcIm1hcmdpblwiXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gRm9yIFwiY29udGVudFwiLCBzdWJ0cmFjdCBwYWRkaW5nXG5cdFx0XHRpZiAoIGJveCA9PT0gXCJjb250ZW50XCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGb3IgXCJjb250ZW50XCIgb3IgXCJwYWRkaW5nXCIsIHN1YnRyYWN0IGJvcmRlclxuXHRcdFx0aWYgKCBib3ggIT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWNjb3VudCBmb3IgcG9zaXRpdmUgY29udGVudC1ib3ggc2Nyb2xsIGd1dHRlciB3aGVuIHJlcXVlc3RlZCBieSBwcm92aWRpbmcgY29tcHV0ZWRWYWxcblx0aWYgKCAhaXNCb3JkZXJCb3ggJiYgY29tcHV0ZWRWYWwgPj0gMCApIHtcblxuXHRcdC8vIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBpcyBhIHJvdW5kZWQgc3VtIG9mIGNvbnRlbnQsIHBhZGRpbmcsIHNjcm9sbCBndXR0ZXIsIGFuZCBib3JkZXJcblx0XHQvLyBBc3N1bWluZyBpbnRlZ2VyIHNjcm9sbCBndXR0ZXIsIHN1YnRyYWN0IHRoZSByZXN0IGFuZCByb3VuZCBkb3duXG5cdFx0ZGVsdGEgKz0gTWF0aC5tYXgoIDAsIE1hdGguY2VpbChcblx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRjb21wdXRlZFZhbCAtXG5cdFx0XHRkZWx0YSAtXG5cdFx0XHRleHRyYSAtXG5cdFx0XHQwLjVcblx0XHQpICk7XG5cdH1cblxuXHRyZXR1cm4gZGVsdGE7XG59XG5cbmZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKSB7XG5cblx0Ly8gU3RhcnQgd2l0aCBjb21wdXRlZCBzdHlsZVxuXHR2YXIgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBkaW1lbnNpb24sIHN0eWxlcyApLFxuXHRcdGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHR2YWx1ZUlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3g7XG5cblx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTU0XG5cdC8vIFJldHVybiBhIGNvbmZvdW5kaW5nIG5vbi1waXhlbCB2YWx1ZSBvciBmZWlnbiBpZ25vcmFuY2UsIGFzIGFwcHJvcHJpYXRlLlxuXHRpZiAoIHJudW1ub25weC50ZXN0KCB2YWwgKSApIHtcblx0XHRpZiAoICFleHRyYSApIHtcblx0XHRcdHJldHVybiB2YWw7XG5cdFx0fVxuXHRcdHZhbCA9IFwiYXV0b1wiO1xuXHR9XG5cblx0Ly8gQ2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXNcblx0Ly8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZVxuXHR2YWx1ZUlzQm9yZGVyQm94ID0gdmFsdWVJc0JvcmRlckJveCAmJlxuXHRcdCggc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpIHx8IHZhbCA9PT0gZWxlbS5zdHlsZVsgZGltZW5zaW9uIF0gKTtcblxuXHQvLyBGYWxsIGJhY2sgdG8gb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IHdoZW4gdmFsdWUgaXMgXCJhdXRvXCJcblx0Ly8gVGhpcyBoYXBwZW5zIGZvciBpbmxpbmUgZWxlbWVudHMgd2l0aCBubyBleHBsaWNpdCBzZXR0aW5nIChnaC0zNTcxKVxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIC0gNC4zIG9ubHlcblx0Ly8gQWxzbyB1c2Ugb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGZvciBtaXNyZXBvcnRlZCBpbmxpbmUgZGltZW5zaW9ucyAoZ2gtMzYwMilcblx0aWYgKCB2YWwgPT09IFwiYXV0b1wiIHx8XG5cdFx0IXBhcnNlRmxvYXQoIHZhbCApICYmIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiaW5saW5lXCIgKSB7XG5cblx0XHR2YWwgPSBlbGVtWyBcIm9mZnNldFwiICsgZGltZW5zaW9uWyAwIF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSggMSApIF07XG5cblx0XHQvLyBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgcHJvdmlkZSBib3JkZXItYm94IHZhbHVlc1xuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSB0cnVlO1xuXHR9XG5cblx0Ly8gTm9ybWFsaXplIFwiXCIgYW5kIGF1dG9cblx0dmFsID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDtcblxuXHQvLyBBZGp1c3QgZm9yIHRoZSBlbGVtZW50J3MgYm94IG1vZGVsXG5cdHJldHVybiAoIHZhbCArXG5cdFx0Ym94TW9kZWxBZGp1c3RtZW50KFxuXHRcdFx0ZWxlbSxcblx0XHRcdGRpbWVuc2lvbixcblx0XHRcdGV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSxcblx0XHRcdHZhbHVlSXNCb3JkZXJCb3gsXG5cdFx0XHRzdHlsZXMsXG5cblx0XHRcdC8vIFByb3ZpZGUgdGhlIGN1cnJlbnQgY29tcHV0ZWQgc2l6ZSB0byByZXF1ZXN0IHNjcm9sbCBndXR0ZXIgY2FsY3VsYXRpb24gKGdoLTM1ODkpXG5cdFx0XHR2YWxcblx0XHQpXG5cdCkgKyBcInB4XCI7XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHRcblx0Ly8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3BlcnR5XG5cdGNzc0hvb2tzOiB7XG5cdFx0b3BhY2l0eToge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0XHQvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eVxuXHRcdFx0XHRcdHZhciByZXQgPSBjdXJDU1MoIGVsZW0sIFwib3BhY2l0eVwiICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJldCA9PT0gXCJcIiA/IFwiMVwiIDogcmV0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkIFwicHhcIiB0byB0aGVzZSBwb3NzaWJseS11bml0bGVzcyBwcm9wZXJ0aWVzXG5cdGNzc051bWJlcjoge1xuXHRcdFwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnRcIjogdHJ1ZSxcblx0XHRcImNvbHVtbkNvdW50XCI6IHRydWUsXG5cdFx0XCJmaWxsT3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwiZmxleEdyb3dcIjogdHJ1ZSxcblx0XHRcImZsZXhTaHJpbmtcIjogdHJ1ZSxcblx0XHRcImZvbnRXZWlnaHRcIjogdHJ1ZSxcblx0XHRcImxpbmVIZWlnaHRcIjogdHJ1ZSxcblx0XHRcIm9wYWNpdHlcIjogdHJ1ZSxcblx0XHRcIm9yZGVyXCI6IHRydWUsXG5cdFx0XCJvcnBoYW5zXCI6IHRydWUsXG5cdFx0XCJ3aWRvd3NcIjogdHJ1ZSxcblx0XHRcInpJbmRleFwiOiB0cnVlLFxuXHRcdFwiem9vbVwiOiB0cnVlXG5cdH0sXG5cblx0Ly8gQWRkIGluIHByb3BlcnRpZXMgd2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9yZVxuXHQvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlXG5cdGNzc1Byb3BzOiB7fSxcblxuXHQvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZVxuXHRzdHlsZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlLCBleHRyYSApIHtcblxuXHRcdC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZVxuXHRcdHZhciByZXQsIHR5cGUsIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBjYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKSxcblx0XHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3Rcblx0XHQvLyB3YW50IHRvIHF1ZXJ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0cyBob29rIGZvciB0aGUgcHJlZml4ZWQgdmVyc2lvbiwgdGhlbiB1bnByZWZpeGVkIHZlcnNpb25cblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIENoZWNrIGlmIHdlJ3JlIHNldHRpbmcgYSB2YWx1ZVxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cblx0XHRcdC8vIENvbnZlcnQgXCIrPVwiIG9yIFwiLT1cIiB0byByZWxhdGl2ZSBudW1iZXJzICgjNzM0NSlcblx0XHRcdGlmICggdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAoIHJldCA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmIHJldFsgMSBdICkge1xuXHRcdFx0XHR2YWx1ZSA9IGFkanVzdENTUyggZWxlbSwgbmFtZSwgcmV0ICk7XG5cblx0XHRcdFx0Ly8gRml4ZXMgYnVnICM5MjM3XG5cdFx0XHRcdHR5cGUgPSBcIm51bWJlclwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KVxuXHRcdFx0aWYgKCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQgdGhlIHVuaXQgKGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJvcGVydGllcylcblx0XHRcdGlmICggdHlwZSA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0dmFsdWUgKz0gcmV0ICYmIHJldFsgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgb3JpZ05hbWUgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZhbHVlc1xuXHRcdFx0aWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09IFwiXCIgJiYgbmFtZS5pbmRleE9mKCBcImJhY2tncm91bmRcIiApID09PSAwICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gXCJpbmhlcml0XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZVxuXHRcdFx0aWYgKCAhaG9va3MgfHwgISggXCJzZXRcIiBpbiBob29rcyApIHx8XG5cdFx0XHRcdCggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHRpZiAoIGlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdFx0XHRzdHlsZS5zZXRQcm9wZXJ0eSggbmFtZSwgdmFsdWUgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzdHlsZSBvYmplY3Rcblx0XHRcdHJldHVybiBzdHlsZVsgbmFtZSBdO1xuXHRcdH1cblx0fSxcblxuXHRjc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRyYSwgc3R5bGVzICkge1xuXHRcdHZhciB2YWwsIG51bSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGNhbWVsQ2FzZSggbmFtZSApLFxuXHRcdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lLiBXZSBkb24ndFxuXHRcdC8vIHdhbnQgdG8gbW9kaWZ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gVHJ5IHByZWZpeGVkIG5hbWUgZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgbmFtZVxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlLCBpZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXRcblx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTtcblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IFwibm9ybWFsXCIgdG8gY29tcHV0ZWQgdmFsdWVcblx0XHRpZiAoIHZhbCA9PT0gXCJub3JtYWxcIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHtcblx0XHRcdHZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdO1xuXHRcdH1cblxuXHRcdC8vIE1ha2UgbnVtZXJpYyBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpY1xuXHRcdGlmICggZXh0cmEgPT09IFwiXCIgfHwgZXh0cmEgKSB7XG5cdFx0XHRudW0gPSBwYXJzZUZsb2F0KCB2YWwgKTtcblx0XHRcdHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBpc0Zpbml0ZSggbnVtICkgPyBudW0gfHwgMCA6IHZhbDtcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiaGVpZ2h0XCIsIFwid2lkdGhcIiBdLCBmdW5jdGlvbiggaSwgZGltZW5zaW9uICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIGRpbWVuc2lvbiBdID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0Ly8gQ2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0aGVtXG5cdFx0XHRcdC8vIGJ1dCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkgc3R5bGUgdGhhdCB3b3VsZCBiZW5lZml0XG5cdFx0XHRcdHJldHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSApICYmXG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCtcblx0XHRcdFx0XHQvLyBUYWJsZSBjb2x1bW5zIGluIFNhZmFyaSBoYXZlIG5vbi16ZXJvIG9mZnNldFdpZHRoICYgemVyb1xuXHRcdFx0XHRcdC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHVubGVzcyBkaXNwbGF5IGlzIGNoYW5nZWQuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0XHRcdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0ZWQgbm9kZVxuXHRcdFx0XHRcdC8vIGluIElFIHRocm93cyBhbiBlcnJvci5cblx0XHRcdFx0XHQoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoIHx8ICFlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICkgP1xuXHRcdFx0XHRcdFx0c3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICk7XG5cdFx0XHRcdFx0XHR9ICkgOlxuXHRcdFx0XHRcdFx0Z2V0V2lkdGhPckhlaWdodCggZWxlbSwgZGltZW5zaW9uLCBleHRyYSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSB7XG5cdFx0XHR2YXIgbWF0Y2hlcyxcblx0XHRcdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cdFx0XHRcdGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHRcdFx0c3VidHJhY3QgPSBleHRyYSAmJiBib3hNb2RlbEFkanVzdG1lbnQoXG5cdFx0XHRcdFx0ZWxlbSxcblx0XHRcdFx0XHRkaW1lbnNpb24sXG5cdFx0XHRcdFx0ZXh0cmEsXG5cdFx0XHRcdFx0aXNCb3JkZXJCb3gsXG5cdFx0XHRcdFx0c3R5bGVzXG5cdFx0XHRcdCk7XG5cblx0XHRcdC8vIEFjY291bnQgZm9yIHVucmVsaWFibGUgYm9yZGVyLWJveCBkaW1lbnNpb25zIGJ5IGNvbXBhcmluZyBvZmZzZXQqIHRvIGNvbXB1dGVkIGFuZFxuXHRcdFx0Ly8gZmFraW5nIGEgY29udGVudC1ib3ggdG8gZ2V0IGJvcmRlciBhbmQgcGFkZGluZyAoZ2gtMzY5OSlcblx0XHRcdGlmICggaXNCb3JkZXJCb3ggJiYgc3VwcG9ydC5zY3JvbGxib3hTaXplKCkgPT09IHN0eWxlcy5wb3NpdGlvbiApIHtcblx0XHRcdFx0c3VidHJhY3QgLT0gTWF0aC5jZWlsKFxuXHRcdFx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRcdFx0cGFyc2VGbG9hdCggc3R5bGVzWyBkaW1lbnNpb24gXSApIC1cblx0XHRcdFx0XHRib3hNb2RlbEFkanVzdG1lbnQoIGVsZW0sIGRpbWVuc2lvbiwgXCJib3JkZXJcIiwgZmFsc2UsIHN0eWxlcyApIC1cblx0XHRcdFx0XHQwLjVcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCB0byBwaXhlbHMgaWYgdmFsdWUgYWRqdXN0bWVudCBpcyBuZWVkZWRcblx0XHRcdGlmICggc3VidHJhY3QgJiYgKCBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiZcblx0XHRcdFx0KCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgIT09IFwicHhcIiApIHtcblxuXHRcdFx0XHRlbGVtLnN0eWxlWyBkaW1lbnNpb24gXSA9IHZhbHVlO1xuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5jc3MoIGVsZW0sIGRpbWVuc2lvbiApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApO1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmNzc0hvb2tzLm1hcmdpbkxlZnQgPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucmVsaWFibGVNYXJnaW5MZWZ0LFxuXHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRcdHJldHVybiAoIHBhcnNlRmxvYXQoIGN1ckNTUyggZWxlbSwgXCJtYXJnaW5MZWZ0XCIgKSApIHx8XG5cdFx0XHRcdGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtXG5cdFx0XHRcdFx0c3dhcCggZWxlbSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcblx0XHRcdFx0XHR9IClcblx0XHRcdFx0KSArIFwicHhcIjtcblx0XHR9XG5cdH1cbik7XG5cbi8vIFRoZXNlIGhvb2tzIGFyZSB1c2VkIGJ5IGFuaW1hdGUgdG8gZXhwYW5kIHByb3BlcnRpZXNcbmpRdWVyeS5lYWNoKCB7XG5cdG1hcmdpbjogXCJcIixcblx0cGFkZGluZzogXCJcIixcblx0Ym9yZGVyOiBcIldpZHRoXCJcbn0sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHtcblx0XHRleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBpID0gMCxcblx0XHRcdFx0ZXhwYW5kZWQgPSB7fSxcblxuXHRcdFx0XHQvLyBBc3N1bWVzIGEgc2luZ2xlIG51bWJlciBpZiBub3QgYSBzdHJpbmdcblx0XHRcdFx0cGFydHMgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS5zcGxpdCggXCIgXCIgKSA6IFsgdmFsdWUgXTtcblxuXHRcdFx0Zm9yICggOyBpIDwgNDsgaSsrICkge1xuXHRcdFx0XHRleHBhbmRlZFsgcHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9XG5cdFx0XHRcdFx0cGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZXhwYW5kZWQ7XG5cdFx0fVxuXHR9O1xuXG5cdGlmICggcHJlZml4ICE9PSBcIm1hcmdpblwiICkge1xuXHRcdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgc3R5bGVzLCBsZW4sXG5cdFx0XHRcdG1hcCA9IHt9LFxuXHRcdFx0XHRpID0gMDtcblxuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBuYW1lICkgKSB7XG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApO1xuXHRcdFx0XHRsZW4gPSBuYW1lLmxlbmd0aDtcblxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRtYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gbWFwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6XG5cdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTtcblx0XHR9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fVxufSApO1xuXG5cbmZ1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApIHtcblx0cmV0dXJuIG5ldyBUd2Vlbi5wcm90b3R5cGUuaW5pdCggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKTtcbn1cbmpRdWVyeS5Ud2VlbiA9IFR3ZWVuO1xuXG5Ud2Vlbi5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBUd2Vlbixcblx0aW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkge1xuXHRcdHRoaXMuZWxlbSA9IGVsZW07XG5cdFx0dGhpcy5wcm9wID0gcHJvcDtcblx0XHR0aGlzLmVhc2luZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0O1xuXHRcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTtcblx0XHR0aGlzLmVuZCA9IGVuZDtcblx0XHR0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApO1xuXHR9LFxuXHRjdXI6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID9cblx0XHRcdGhvb2tzLmdldCggdGhpcyApIDpcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTtcblx0fSxcblx0cnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHtcblx0XHR2YXIgZWFzZWQsXG5cdFx0XHRob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKFxuXHRcdFx0XHRwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb25cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50O1xuXHRcdH1cblx0XHR0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgaG9va3Muc2V0ICkge1xuXHRcdFx0aG9va3Muc2V0KCB0aGlzICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn07XG5cblR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTtcblxuVHdlZW4ucHJvcEhvb2tzID0ge1xuXHRfZGVmYXVsdDoge1xuXHRcdGdldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0dmFyIHJlc3VsdDtcblxuXHRcdFx0Ly8gVXNlIGEgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgZGlyZWN0bHkgd2hlbiBpdCBpcyBub3QgYSBET00gZWxlbWVudCxcblx0XHRcdC8vIG9yIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlzdHMuXG5cdFx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgIT09IDEgfHxcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF07XG5cdFx0XHR9XG5cblx0XHRcdC8vIFBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFzIGEgM3JkIHBhcmFtZXRlciB0byAuY3NzIHdpbGwgYXV0b21hdGljYWxseVxuXHRcdFx0Ly8gYXR0ZW1wdCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWlscy5cblx0XHRcdC8vIFNpbXBsZSB2YWx1ZXMgc3VjaCBhcyBcIjEwcHhcIiBhcmUgcGFyc2VkIHRvIEZsb2F0O1xuXHRcdFx0Ly8gY29tcGxleCB2YWx1ZXMgc3VjaCBhcyBcInJvdGF0ZSgxcmFkKVwiIGFyZSByZXR1cm5lZCBhcy1pcy5cblx0XHRcdHJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIFwiXCIgKTtcblxuXHRcdFx0Ly8gRW1wdHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCBcImF1dG9cIiBhcmUgY29udmVydGVkIHRvIDAuXG5cdFx0XHRyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09IFwiYXV0b1wiID8gMCA6IHJlc3VsdDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXG5cdFx0XHQvLyBVc2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdC5cblx0XHRcdC8vIFVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZS5cblx0XHRcdC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuXG5cdFx0XHRpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7XG5cdFx0XHR9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNzc1Byb3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBudWxsIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LmNzc0hvb2tzWyB0d2Vlbi5wcm9wIF0gKSApIHtcblx0XHRcdFx0alF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0d2Vlbi51bml0ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gUGFuaWMgYmFzZWQgYXBwcm9hY2ggdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzXG5Ud2Vlbi5wcm9wSG9va3Muc2Nyb2xsVG9wID0gVHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7XG5cdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAmJiB0d2Vlbi5lbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZWFzaW5nID0ge1xuXHRsaW5lYXI6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiBwO1xuXHR9LFxuXHRzd2luZzogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIDAuNSAtIE1hdGguY29zKCBwICogTWF0aC5QSSApIC8gMjtcblx0fSxcblx0X2RlZmF1bHQ6IFwic3dpbmdcIlxufTtcblxualF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7XG5cbi8vIEJhY2sgY29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50XG5qUXVlcnkuZnguc3RlcCA9IHt9O1xuXG5cblxuXG52YXJcblx0ZnhOb3csIGluUHJvZ3Jlc3MsXG5cdHJmeHR5cGVzID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLFxuXHRycnVuID0gL3F1ZXVlSG9va3MkLztcblxuZnVuY3Rpb24gc2NoZWR1bGUoKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRpZiAoIGRvY3VtZW50LmhpZGRlbiA9PT0gZmFsc2UgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSApIHtcblx0XHRcdHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHNjaGVkdWxlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBzY2hlZHVsZSwgalF1ZXJ5LmZ4LmludGVydmFsICk7XG5cdFx0fVxuXG5cdFx0alF1ZXJ5LmZ4LnRpY2soKTtcblx0fVxufVxuXG4vLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hyb25vdXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5XG5mdW5jdGlvbiBjcmVhdGVGeE5vdygpIHtcblx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdGZ4Tm93ID0gdW5kZWZpbmVkO1xuXHR9ICk7XG5cdHJldHVybiAoIGZ4Tm93ID0gRGF0ZS5ub3coKSApO1xufVxuXG4vLyBHZW5lcmF0ZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIHN0YW5kYXJkIGFuaW1hdGlvblxuZnVuY3Rpb24gZ2VuRngoIHR5cGUsIGluY2x1ZGVXaWR0aCApIHtcblx0dmFyIHdoaWNoLFxuXHRcdGkgPSAwLFxuXHRcdGF0dHJzID0geyBoZWlnaHQ6IHR5cGUgfTtcblxuXHQvLyBJZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsXG5cdC8vIG90aGVyd2lzZSBzdGVwIHZhbHVlIGlzIDIgdG8gc2tpcCBvdmVyIExlZnQgYW5kIFJpZ2h0XG5cdGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVXaWR0aCA/IDEgOiAwO1xuXHRmb3IgKCA7IGkgPCA0OyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7XG5cdFx0d2hpY2ggPSBjc3NFeHBhbmRbIGkgXTtcblx0XHRhdHRyc1sgXCJtYXJnaW5cIiArIHdoaWNoIF0gPSBhdHRyc1sgXCJwYWRkaW5nXCIgKyB3aGljaCBdID0gdHlwZTtcblx0fVxuXG5cdGlmICggaW5jbHVkZVdpZHRoICkge1xuXHRcdGF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9IHR5cGU7XG5cdH1cblxuXHRyZXR1cm4gYXR0cnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5pbWF0aW9uICkge1xuXHR2YXIgdHdlZW4sXG5cdFx0Y29sbGVjdGlvbiA9ICggQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW10gKS5jb25jYXQoIEFuaW1hdGlvbi50d2VlbmVyc1sgXCIqXCIgXSApLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRpZiAoICggdHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSApICkge1xuXG5cdFx0XHQvLyBXZSdyZSBkb25lIHdpdGggdGhpcyBwcm9wZXJ0eVxuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0UHJlZmlsdGVyKCBlbGVtLCBwcm9wcywgb3B0cyApIHtcblx0dmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIGhvb2tzLCBvbGRmaXJlLCBwcm9wVHdlZW4sIHJlc3RvcmVEaXNwbGF5LCBkaXNwbGF5LFxuXHRcdGlzQm94ID0gXCJ3aWR0aFwiIGluIHByb3BzIHx8IFwiaGVpZ2h0XCIgaW4gcHJvcHMsXG5cdFx0YW5pbSA9IHRoaXMsXG5cdFx0b3JpZyA9IHt9LFxuXHRcdHN0eWxlID0gZWxlbS5zdHlsZSxcblx0XHRoaWRkZW4gPSBlbGVtLm5vZGVUeXBlICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApLFxuXHRcdGRhdGFTaG93ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cblx0Ly8gUXVldWUtc2tpcHBpbmcgYW5pbWF0aW9ucyBoaWphY2sgdGhlIGZ4IGhvb2tzXG5cdGlmICggIW9wdHMucXVldWUgKSB7XG5cdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIFwiZnhcIiApO1xuXHRcdGlmICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHtcblx0XHRcdGhvb2tzLnVucXVldWVkID0gMDtcblx0XHRcdG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlO1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICFob29rcy51bnF1ZXVlZCApIHtcblx0XHRcdFx0XHRvbGRmaXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHRcdGhvb2tzLnVucXVldWVkKys7XG5cblx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFuZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzXG5cdFx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGhvb2tzLnVucXVldWVkLS07XG5cdFx0XHRcdGlmICggIWpRdWVyeS5xdWV1ZSggZWxlbSwgXCJmeFwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIERldGVjdCBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRmb3IgKCBwcm9wIGluIHByb3BzICkge1xuXHRcdHZhbHVlID0gcHJvcHNbIHByb3AgXTtcblx0XHRpZiAoIHJmeHR5cGVzLnRlc3QoIHZhbHVlICkgKSB7XG5cdFx0XHRkZWxldGUgcHJvcHNbIHByb3AgXTtcblx0XHRcdHRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gXCJ0b2dnbGVcIjtcblx0XHRcdGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gXCJoaWRlXCIgOiBcInNob3dcIiApICkge1xuXG5cdFx0XHRcdC8vIFByZXRlbmQgdG8gYmUgaGlkZGVuIGlmIHRoaXMgaXMgYSBcInNob3dcIiBhbmRcblx0XHRcdFx0Ly8gdGhlcmUgaXMgc3RpbGwgZGF0YSBmcm9tIGEgc3RvcHBlZCBzaG93L2hpZGVcblx0XHRcdFx0aWYgKCB2YWx1ZSA9PT0gXCJzaG93XCIgJiYgZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdGhpZGRlbiA9IHRydWU7XG5cblx0XHRcdFx0Ly8gSWdub3JlIGFsbCBvdGhlciBuby1vcCBzaG93L2hpZGUgZGF0YVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIEJhaWwgb3V0IGlmIHRoaXMgaXMgYSBuby1vcCBsaWtlIC5oaWRlKCkuaGlkZSgpXG5cdHByb3BUd2VlbiA9ICFqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcHMgKTtcblx0aWYgKCAhcHJvcFR3ZWVuICYmIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gUmVzdHJpY3QgXCJvdmVyZmxvd1wiIGFuZCBcImRpc3BsYXlcIiBzdHlsZXMgZHVyaW5nIGJveCBhbmltYXRpb25zXG5cdGlmICggaXNCb3ggJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTVcblx0XHQvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFIGRvZXMgbm90IGluZmVyIHRoZSBzaG9ydGhhbmRcblx0XHQvLyBmcm9tIGlkZW50aWNhbGx5LXZhbHVlZCBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WSBhbmQgRWRnZSBqdXN0IG1pcnJvcnNcblx0XHQvLyB0aGUgb3ZlcmZsb3dYIHZhbHVlIHRoZXJlLlxuXHRcdG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdO1xuXG5cdFx0Ly8gSWRlbnRpZnkgYSBkaXNwbGF5IHR5cGUsIHByZWZlcnJpbmcgb2xkIHNob3cvaGlkZSBkYXRhIG92ZXIgdGhlIENTUyBjYXNjYWRlXG5cdFx0cmVzdG9yZURpc3BsYXkgPSBkYXRhU2hvdyAmJiBkYXRhU2hvdy5kaXNwbGF5O1xuXHRcdGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHtcblx0XHRcdHJlc3RvcmVEaXNwbGF5ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdH1cblx0XHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSApIHtcblx0XHRcdFx0ZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5O1xuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBHZXQgbm9uZW1wdHkgdmFsdWUocykgYnkgdGVtcG9yYXJpbHkgZm9yY2luZyB2aXNpYmlsaXR5XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApO1xuXHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheSB8fCByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFuaW1hdGUgaW5saW5lIGVsZW1lbnRzIGFzIGlubGluZS1ibG9ja1xuXHRcdGlmICggZGlzcGxheSA9PT0gXCJpbmxpbmVcIiB8fCBkaXNwbGF5ID09PSBcImlubGluZS1ibG9ja1wiICYmIHJlc3RvcmVEaXNwbGF5ICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZmxvYXRcIiApID09PSBcIm5vbmVcIiApIHtcblxuXHRcdFx0XHQvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBkaXNwbGF5IHZhbHVlIGF0IHRoZSBlbmQgb2YgcHVyZSBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRcdFx0XHRpZiAoICFwcm9wVHdlZW4gKSB7XG5cdFx0XHRcdFx0YW5pbS5kb25lKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0ZGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7XG5cdFx0XHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGRpc3BsYXkgPT09IFwibm9uZVwiID8gXCJcIiA6IGRpc3BsYXk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICggb3B0cy5vdmVyZmxvdyApIHtcblx0XHRzdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG5cdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXHRcdFx0c3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1ggPSBvcHRzLm92ZXJmbG93WyAxIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1kgPSBvcHRzLm92ZXJmbG93WyAyIF07XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gSW1wbGVtZW50IHNob3cvaGlkZSBhbmltYXRpb25zXG5cdHByb3BUd2VlbiA9IGZhbHNlO1xuXHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cblx0XHQvLyBHZW5lcmFsIHNob3cvaGlkZSBzZXR1cCBmb3IgdGhpcyBlbGVtZW50IGFuaW1hdGlvblxuXHRcdGlmICggIXByb3BUd2VlbiApIHtcblx0XHRcdGlmICggZGF0YVNob3cgKSB7XG5cdFx0XHRcdGlmICggXCJoaWRkZW5cIiBpbiBkYXRhU2hvdyApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSBkYXRhU2hvdy5oaWRkZW47XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGFTaG93ID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBcImZ4c2hvd1wiLCB7IGRpc3BsYXk6IHJlc3RvcmVEaXNwbGF5IH0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RvcmUgaGlkZGVuL3Zpc2libGUgZm9yIHRvZ2dsZSBzbyBgLnN0b3AoKS50b2dnbGUoKWAgXCJyZXZlcnNlc1wiXG5cdFx0XHRpZiAoIHRvZ2dsZSApIHtcblx0XHRcdFx0ZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2hvdyBlbGVtZW50cyBiZWZvcmUgYW5pbWF0aW5nIHRoZW1cblx0XHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdFx0Ly8gVGhlIGZpbmFsIHN0ZXAgb2YgYSBcImhpZGVcIiBhbmltYXRpb24gaXMgYWN0dWFsbHkgaGlkaW5nIHRoZSBlbGVtZW50XG5cdFx0XHRcdGlmICggIWhpZGRlbiApIHtcblx0XHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiZnhzaG93XCIgKTtcblx0XHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHQvLyBQZXItcHJvcGVydHkgc2V0dXBcblx0XHRwcm9wVHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTtcblx0XHRpZiAoICEoIHByb3AgaW4gZGF0YVNob3cgKSApIHtcblx0XHRcdGRhdGFTaG93WyBwcm9wIF0gPSBwcm9wVHdlZW4uc3RhcnQ7XG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0cHJvcFR3ZWVuLmVuZCA9IHByb3BUd2Vlbi5zdGFydDtcblx0XHRcdFx0cHJvcFR3ZWVuLnN0YXJ0ID0gMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7XG5cdHZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2YWx1ZSwgaG9va3M7XG5cblx0Ly8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzXG5cdGZvciAoIGluZGV4IGluIHByb3BzICkge1xuXHRcdG5hbWUgPSBjYW1lbENhc2UoIGluZGV4ICk7XG5cdFx0ZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdO1xuXHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF07XG5cdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0ZWFzaW5nID0gdmFsdWVbIDEgXTtcblx0XHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdO1xuXHRcdH1cblxuXHRcdGlmICggaW5kZXggIT09IG5hbWUgKSB7XG5cdFx0XHRwcm9wc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRkZWxldGUgcHJvcHNbIGluZGV4IF07XG5cdFx0fVxuXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTtcblx0XHRpZiAoIGhvb2tzICYmIFwiZXhwYW5kXCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgbmFtZSBdO1xuXG5cdFx0XHQvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuXG5cdFx0XHQvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0IFwibmFtZVwiXG5cdFx0XHRmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkge1xuXHRcdFx0XHRcdHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07XG5cdFx0XHRcdFx0c3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2luZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHtcblx0dmFyIHJlc3VsdCxcblx0XHRzdG9wcGVkLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBBbmltYXRpb24ucHJlZmlsdGVycy5sZW5ndGgsXG5cdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBEb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3Jcblx0XHRcdGRlbGV0ZSB0aWNrLmVsZW07XG5cdFx0fSApLFxuXHRcdHRpY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdFx0cmVtYWluaW5nID0gTWF0aC5tYXgoIDAsIGFuaW1hdGlvbi5zdGFydFRpbWUgKyBhbmltYXRpb24uZHVyYXRpb24gLSBjdXJyZW50VGltZSApLFxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zIG9ubHlcblx0XHRcdFx0Ly8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3KVxuXHRcdFx0XHR0ZW1wID0gcmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAsXG5cdFx0XHRcdHBlcmNlbnQgPSAxIC0gdGVtcCxcblx0XHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0XHRsZW5ndGggPSBhbmltYXRpb24udHdlZW5zLmxlbmd0aDtcblxuXHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIHBlcmNlbnQgKTtcblx0XHRcdH1cblxuXHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIHBlcmNlbnQsIHJlbWFpbmluZyBdICk7XG5cblx0XHRcdC8vIElmIHRoZXJlJ3MgbW9yZSB0byBkbywgeWllbGRcblx0XHRcdGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkge1xuXHRcdFx0XHRyZXR1cm4gcmVtYWluaW5nO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiB0aGlzIHdhcyBhbiBlbXB0eSBhbmltYXRpb24sIHN5bnRoZXNpemUgYSBmaW5hbCBwcm9ncmVzcyBub3RpZmljYXRpb25cblx0XHRcdGlmICggIWxlbmd0aCApIHtcblx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXNvbHZlIHRoZSBhbmltYXRpb24gYW5kIHJlcG9ydCBpdHMgY29uY2x1c2lvblxuXHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uIF0gKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9LFxuXHRcdGFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2UoIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRwcm9wczogalF1ZXJ5LmV4dGVuZCgge30sIHByb3BlcnRpZXMgKSxcblx0XHRcdG9wdHM6IGpRdWVyeS5leHRlbmQoIHRydWUsIHtcblx0XHRcdFx0c3BlY2lhbEVhc2luZzoge30sXG5cdFx0XHRcdGVhc2luZzogalF1ZXJ5LmVhc2luZy5fZGVmYXVsdFxuXHRcdFx0fSwgb3B0aW9ucyApLFxuXHRcdFx0b3JpZ2luYWxQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxuXHRcdFx0b3JpZ2luYWxPcHRpb25zOiBvcHRpb25zLFxuXHRcdFx0c3RhcnRUaW1lOiBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLFxuXHRcdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0XHR0d2VlbnM6IFtdLFxuXHRcdFx0Y3JlYXRlVHdlZW46IGZ1bmN0aW9uKCBwcm9wLCBlbmQgKSB7XG5cdFx0XHRcdHZhciB0d2VlbiA9IGpRdWVyeS5Ud2VlbiggZWxlbSwgYW5pbWF0aW9uLm9wdHMsIHByb3AsIGVuZCxcblx0XHRcdFx0XHRcdGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmdbIHByb3AgXSB8fCBhbmltYXRpb24ub3B0cy5lYXNpbmcgKTtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVucy5wdXNoKCB0d2VlbiApO1xuXHRcdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0XHR9LFxuXHRcdFx0c3RvcDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7XG5cdFx0XHRcdHZhciBpbmRleCA9IDAsXG5cblx0XHRcdFx0XHQvLyBJZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2VlbnNcblx0XHRcdFx0XHQvLyBvdGhlcndpc2Ugd2Ugc2tpcCB0aGlzIHBhcnRcblx0XHRcdFx0XHRsZW5ndGggPSBnb3RvRW5kID8gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGggOiAwO1xuXHRcdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3RvcHBlZCA9IHRydWU7XG5cdFx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIDEgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWU7IG90aGVyd2lzZSwgcmVqZWN0XG5cdFx0XHRcdGlmICggZ290b0VuZCApIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgMSwgMCBdICk7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9XG5cdFx0fSApLFxuXHRcdHByb3BzID0gYW5pbWF0aW9uLnByb3BzO1xuXG5cdHByb3BGaWx0ZXIoIHByb3BzLCBhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nICk7XG5cblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRyZXN1bHQgPSBBbmltYXRpb24ucHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVsZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApO1xuXHRcdGlmICggcmVzdWx0ICkge1xuXHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCByZXN1bHQuc3RvcCApICkge1xuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIGFuaW1hdGlvbi5lbGVtLCBhbmltYXRpb24ub3B0cy5xdWV1ZSApLnN0b3AgPVxuXHRcdFx0XHRcdHJlc3VsdC5zdG9wLmJpbmQoIHJlc3VsdCApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cdH1cblxuXHRqUXVlcnkubWFwKCBwcm9wcywgY3JlYXRlVHdlZW4sIGFuaW1hdGlvbiApO1xuXG5cdGlmICggaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9wdHMuc3RhcnQgKSApIHtcblx0XHRhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRpb24gKTtcblx0fVxuXG5cdC8vIEF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zXG5cdGFuaW1hdGlvblxuXHRcdC5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKVxuXHRcdC5kb25lKCBhbmltYXRpb24ub3B0cy5kb25lLCBhbmltYXRpb24ub3B0cy5jb21wbGV0ZSApXG5cdFx0LmZhaWwoIGFuaW1hdGlvbi5vcHRzLmZhaWwgKVxuXHRcdC5hbHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApO1xuXG5cdGpRdWVyeS5meC50aW1lcihcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aWNrLCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0YW5pbTogYW5pbWF0aW9uLFxuXHRcdFx0cXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlXG5cdFx0fSApXG5cdCk7XG5cblx0cmV0dXJuIGFuaW1hdGlvbjtcbn1cblxualF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwge1xuXG5cdHR3ZWVuZXJzOiB7XG5cdFx0XCIqXCI6IFsgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkge1xuXHRcdFx0dmFyIHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJvcCwgdmFsdWUgKTtcblx0XHRcdGFkanVzdENTUyggdHdlZW4uZWxlbSwgcHJvcCwgcmNzc051bS5leGVjKCB2YWx1ZSApLCB0d2VlbiApO1xuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH0gXVxuXHR9LFxuXG5cdHR3ZWVuZXI6IGZ1bmN0aW9uKCBwcm9wcywgY2FsbGJhY2sgKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBwcm9wcyApICkge1xuXHRcdFx0Y2FsbGJhY2sgPSBwcm9wcztcblx0XHRcdHByb3BzID0gWyBcIipcIiBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwcm9wcyA9IHByb3BzLm1hdGNoKCBybm90aHRtbHdoaXRlICk7XG5cdFx0fVxuXG5cdFx0dmFyIHByb3AsXG5cdFx0XHRpbmRleCA9IDAsXG5cdFx0XHRsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0cHJvcCA9IHByb3BzWyBpbmRleCBdO1xuXHRcdFx0QW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gPSBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXTtcblx0XHRcdEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9LFxuXG5cdHByZWZpbHRlcnM6IFsgZGVmYXVsdFByZWZpbHRlciBdLFxuXG5cdHByZWZpbHRlcjogZnVuY3Rpb24oIGNhbGxiYWNrLCBwcmVwZW5kICkge1xuXHRcdGlmICggcHJlcGVuZCApIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cbmpRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHtcblx0dmFyIG9wdCA9IHNwZWVkICYmIHR5cGVvZiBzcGVlZCA9PT0gXCJvYmplY3RcIiA/IGpRdWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDoge1xuXHRcdGNvbXBsZXRlOiBmbiB8fCAhZm4gJiYgZWFzaW5nIHx8XG5cdFx0XHRpc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLFxuXHRcdGR1cmF0aW9uOiBzcGVlZCxcblx0XHRlYXNpbmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZ1xuXHR9O1xuXG5cdC8vIEdvIHRvIHRoZSBlbmQgc3RhdGUgaWYgZnggYXJlIG9mZlxuXHRpZiAoIGpRdWVyeS5meC5vZmYgKSB7XG5cdFx0b3B0LmR1cmF0aW9uID0gMDtcblxuXHR9IGVsc2Uge1xuXHRcdGlmICggdHlwZW9mIG9wdC5kdXJhdGlvbiAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdGlmICggb3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgKSB7XG5cdFx0XHRcdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIE5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+IFwiZnhcIlxuXHRpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHtcblx0XHRvcHQucXVldWUgPSBcImZ4XCI7XG5cdH1cblxuXHQvLyBRdWV1ZWluZ1xuXHRvcHQub2xkID0gb3B0LmNvbXBsZXRlO1xuXG5cdG9wdC5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggb3B0Lm9sZCApICkge1xuXHRcdFx0b3B0Lm9sZC5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHQucXVldWUgKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiBvcHQ7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBjYWxsYmFjayApIHtcblxuXHRcdC8vIFNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMFxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW5XaXRoaW5UcmVlICkuY3NzKCBcIm9wYWNpdHlcIiwgMCApLnNob3coKVxuXG5cdFx0XHQvLyBBbmltYXRlIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWRcblx0XHRcdC5lbmQoKS5hbmltYXRlKCB7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH0sXG5cdGFuaW1hdGU6IGZ1bmN0aW9uKCBwcm9wLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHR2YXIgZW1wdHkgPSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLFxuXHRcdFx0b3B0YWxsID0galF1ZXJ5LnNwZWVkKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLFxuXHRcdFx0ZG9BbmltYXRpb24gPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBPcGVyYXRlIG9uIGEgY29weSBvZiBwcm9wIHNvIHBlci1wcm9wZXJ0eSBlYXNpbmcgd29uJ3QgYmUgbG9zdFxuXHRcdFx0XHR2YXIgYW5pbSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVuZCgge30sIHByb3AgKSwgb3B0YWxsICk7XG5cblx0XHRcdFx0Ly8gRW1wdHkgYW5pbWF0aW9ucywgb3IgZmluaXNoaW5nIHJlc29sdmVzIGltbWVkaWF0ZWx5XG5cdFx0XHRcdGlmICggZW1wdHkgfHwgZGF0YVByaXYuZ2V0KCB0aGlzLCBcImZpbmlzaFwiICkgKSB7XG5cdFx0XHRcdFx0YW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlvbjtcblxuXHRcdHJldHVybiBlbXB0eSB8fCBvcHRhbGwucXVldWUgPT09IGZhbHNlID9cblx0XHRcdHRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6XG5cdFx0XHR0aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7XG5cdH0sXG5cdHN0b3A6IGZ1bmN0aW9uKCB0eXBlLCBjbGVhclF1ZXVlLCBnb3RvRW5kICkge1xuXHRcdHZhciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7XG5cdFx0XHR2YXIgc3RvcCA9IGhvb2tzLnN0b3A7XG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdHN0b3AoIGdvdG9FbmQgKTtcblx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGdvdG9FbmQgPSBjbGVhclF1ZXVlO1xuXHRcdFx0Y2xlYXJRdWV1ZSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGNsZWFyUXVldWUgJiYgdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBkZXF1ZXVlID0gdHJ1ZSxcblx0XHRcdFx0aW5kZXggPSB0eXBlICE9IG51bGwgJiYgdHlwZSArIFwicXVldWVIb29rc1wiLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICk7XG5cblx0XHRcdGlmICggaW5kZXggKSB7XG5cdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgKSB7XG5cdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoIGluZGV4IGluIGRhdGEgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCAmJiBycnVuLnRlc3QoIGluZGV4ICkgKSB7XG5cdFx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJlxuXHRcdFx0XHRcdCggdHlwZSA9PSBudWxsIHx8IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApICkge1xuXG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApO1xuXHRcdFx0XHRcdGRlcXVldWUgPSBmYWxzZTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQuXG5cdFx0XHQvLyBUaW1lcnMgY3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFja3MsIHdoaWNoXG5cdFx0XHQvLyB3aWxsIGRlcXVldWUgYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9FbmQuXG5cdFx0XHRpZiAoIGRlcXVldWUgfHwgIWdvdG9FbmQgKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXHRmaW5pc2g6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdGlmICggdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGluZGV4LFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICksXG5cdFx0XHRcdHF1ZXVlID0gZGF0YVsgdHlwZSArIFwicXVldWVcIiBdLFxuXHRcdFx0XHRob29rcyA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlSG9va3NcIiBdLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRsZW5ndGggPSBxdWV1ZSA/IHF1ZXVlLmxlbmd0aCA6IDA7XG5cblx0XHRcdC8vIEVuYWJsZSBmaW5pc2hpbmcgZmxhZyBvbiBwcml2YXRlIGRhdGFcblx0XHRcdGRhdGEuZmluaXNoID0gdHJ1ZTtcblxuXHRcdFx0Ly8gRW1wdHkgdGhlIHF1ZXVlIGZpcnN0XG5cdFx0XHRqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIFtdICk7XG5cblx0XHRcdGlmICggaG9va3MgJiYgaG9va3Muc3RvcCApIHtcblx0XHRcdFx0aG9va3Muc3RvcC5jYWxsKCB0aGlzLCB0cnVlICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhY3RpdmUgYW5pbWF0aW9ucywgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmIHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApIHtcblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdFx0dGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYW5pbWF0aW9ucyBpbiB0aGUgb2xkIHF1ZXVlIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0aWYgKCBxdWV1ZVsgaW5kZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7XG5cdFx0XHRcdFx0cXVldWVbIGluZGV4IF0uZmluaXNoLmNhbGwoIHRoaXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBUdXJuIG9mZiBmaW5pc2hpbmcgZmxhZ1xuXHRcdFx0ZGVsZXRlIGRhdGEuZmluaXNoO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcInRvZ2dsZVwiLCBcInNob3dcIiwgXCJoaWRlXCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdHZhciBjc3NGbiA9IGpRdWVyeS5mblsgbmFtZSBdO1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gc3BlZWQgPT0gbnVsbCB8fCB0eXBlb2Ygc3BlZWQgPT09IFwiYm9vbGVhblwiID9cblx0XHRcdGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6XG5cdFx0XHR0aGlzLmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbi8vIEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnNcbmpRdWVyeS5lYWNoKCB7XG5cdHNsaWRlRG93bjogZ2VuRngoIFwic2hvd1wiICksXG5cdHNsaWRlVXA6IGdlbkZ4KCBcImhpZGVcIiApLFxuXHRzbGlkZVRvZ2dsZTogZ2VuRngoIFwidG9nZ2xlXCIgKSxcblx0ZmFkZUluOiB7IG9wYWNpdHk6IFwic2hvd1wiIH0sXG5cdGZhZGVPdXQ6IHsgb3BhY2l0eTogXCJoaWRlXCIgfSxcblx0ZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiBcInRvZ2dsZVwiIH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbmpRdWVyeS50aW1lcnMgPSBbXTtcbmpRdWVyeS5meC50aWNrID0gZnVuY3Rpb24oKSB7XG5cdHZhciB0aW1lcixcblx0XHRpID0gMCxcblx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzO1xuXG5cdGZ4Tm93ID0gRGF0ZS5ub3coKTtcblxuXHRmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7XG5cdFx0dGltZXIgPSB0aW1lcnNbIGkgXTtcblxuXHRcdC8vIFJ1biB0aGUgdGltZXIgYW5kIHNhZmVseSByZW1vdmUgaXQgd2hlbiBkb25lIChhbGxvd2luZyBmb3IgZXh0ZXJuYWwgcmVtb3ZhbClcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcblx0XHRcdHRpbWVycy5zcGxpY2UoIGktLSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIXRpbWVycy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcblx0fVxuXHRmeE5vdyA9IHVuZGVmaW5lZDtcbn07XG5cbmpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHtcblx0alF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApO1xuXHRqUXVlcnkuZnguc3RhcnQoKTtcbn07XG5cbmpRdWVyeS5meC5pbnRlcnZhbCA9IDEzO1xualF1ZXJ5LmZ4LnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpblByb2dyZXNzID0gdHJ1ZTtcblx0c2NoZWR1bGUoKTtcbn07XG5cbmpRdWVyeS5meC5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdGluUHJvZ3Jlc3MgPSBudWxsO1xufTtcblxualF1ZXJ5LmZ4LnNwZWVkcyA9IHtcblx0c2xvdzogNjAwLFxuXHRmYXN0OiAyMDAsXG5cblx0Ly8gRGVmYXVsdCBzcGVlZFxuXHRfZGVmYXVsdDogNDAwXG59O1xuXG5cbi8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi5cbi8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMDMyNDAxNDc0Ny9odHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvXG5qUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHtcblx0dGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUgXSB8fCB0aW1lIDogdGltZTtcblx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7XG5cdFx0dmFyIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCggbmV4dCwgdGltZSApO1xuXHRcdGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHtcblx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXQgKTtcblx0XHR9O1xuXHR9ICk7XG59O1xuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApLFxuXHRcdHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwic2VsZWN0XCIgKSxcblx0XHRvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib3B0aW9uXCIgKSApO1xuXG5cdGlucHV0LnR5cGUgPSBcImNoZWNrYm94XCI7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMyBvbmx5XG5cdC8vIERlZmF1bHQgdmFsdWUgZm9yIGEgY2hlY2tib3ggc2hvdWxkIGJlIFwib25cIlxuXHRzdXBwb3J0LmNoZWNrT24gPSBpbnB1dC52YWx1ZSAhPT0gXCJcIjtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBzZWxlY3Rcblx0c3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW9cblx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0aW5wdXQudmFsdWUgPSBcInRcIjtcblx0aW5wdXQudHlwZSA9IFwicmFkaW9cIjtcblx0c3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09IFwidFwiO1xufSApKCk7XG5cblxudmFyIGJvb2xIb29rLFxuXHRhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LmF0dHIsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXG5cdHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBuYW1lICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZFxuXHRcdGlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlID09PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdC8vIEF0dHJpYnV0ZSBob29rcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbG93ZXJjYXNlIHZlcnNpb25cblx0XHQvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29sSG9vayA6IHVuZGVmaW5lZCApO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgXCJcIiApO1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkXG5cdFx0cmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0O1xuXHR9LFxuXG5cdGF0dHJIb29rczoge1xuXHRcdHR5cGU6IHtcblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09IFwicmFkaW9cIiAmJlxuXHRcdFx0XHRcdG5vZGVOYW1lKCBlbGVtLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR2YXIgdmFsID0gZWxlbS52YWx1ZTtcblx0XHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIHZhbHVlICk7XG5cdFx0XHRcdFx0aWYgKCB2YWwgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLnZhbHVlID0gdmFsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdHZhciBuYW1lLFxuXHRcdFx0aSA9IDAsXG5cblx0XHRcdC8vIEF0dHJpYnV0ZSBuYW1lcyBjYW4gY29udGFpbiBub24tSFRNTCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcblx0XHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMlxuXHRcdFx0YXR0ck5hbWVzID0gdmFsdWUgJiYgdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKTtcblxuXHRcdGlmICggYXR0ck5hbWVzICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHR3aGlsZSAoICggbmFtZSA9IGF0dHJOYW1lc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSG9va3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlc1xuYm9vbEhvb2sgPSB7XG5cdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkge1xuXHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlXG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgbmFtZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxufTtcblxualF1ZXJ5LmVhY2goIGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXFx3Ky9nICksIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBdIHx8IGpRdWVyeS5maW5kLmF0dHI7XG5cblx0YXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciByZXQsIGhhbmRsZSxcblx0XHRcdGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRpZiAoICFpc1hNTCApIHtcblxuXHRcdFx0Ly8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3JhcmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlclxuXHRcdFx0aGFuZGxlID0gYXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdO1xuXHRcdFx0YXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdID0gcmV0O1xuXHRcdFx0cmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCApICE9IG51bGwgP1xuXHRcdFx0XHRsb3dlcmNhc2VOYW1lIDpcblx0XHRcdFx0bnVsbDtcblx0XHRcdGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhhbmRsZTtcblx0XHR9XG5cdFx0cmV0dXJuIHJldDtcblx0fTtcbn0gKTtcblxuXG5cblxudmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyY2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkZWxldGUgdGhpc1sgalF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lIF07XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3Ncblx0XHRcdG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldHVybiBlbGVtWyBuYW1lIF07XG5cdH0sXG5cblx0cHJvcEhvb2tzOiB7XG5cdFx0dGFiSW5kZXg6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHRcdFx0XHQvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGVcblx0XHRcdFx0Ly8gY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0XG5cdFx0XHRcdC8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MTExNjIzMzM0Ny9odHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2NyaXB0L1xuXHRcdFx0XHQvLyBVc2UgcHJvcGVyIGF0dHJpYnV0ZSByZXRyaWV2YWwoIzEyMDcyKVxuXHRcdFx0XHR2YXIgdGFiaW5kZXggPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBcInRhYmluZGV4XCIgKTtcblxuXHRcdFx0XHRpZiAoIHRhYmluZGV4ICkge1xuXHRcdFx0XHRcdHJldHVybiBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0cmZvY3VzYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgfHxcblx0XHRcdFx0XHRyY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJlxuXHRcdFx0XHRcdGVsZW0uaHJlZlxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cHJvcEZpeDoge1xuXHRcdFwiZm9yXCI6IFwiaHRtbEZvclwiLFxuXHRcdFwiY2xhc3NcIjogXCJjbGFzc05hbWVcIlxuXHR9XG59ICk7XG5cbi8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuLy8gQWNjZXNzaW5nIHRoZSBzZWxlY3RlZEluZGV4IHByb3BlcnR5XG4vLyBmb3JjZXMgdGhlIGJyb3dzZXIgdG8gcmVzcGVjdCBzZXR0aW5nIHNlbGVjdGVkXG4vLyBvbiB0aGUgb3B0aW9uXG4vLyBUaGUgZ2V0dGVyIGVuc3VyZXMgYSBkZWZhdWx0IG9wdGlvbiBpcyBzZWxlY3RlZFxuLy8gd2hlbiBpbiBhbiBvcHRncm91cFxuLy8gZXNsaW50IHJ1bGUgXCJuby11bnVzZWQtZXhwcmVzc2lvbnNcIiBpcyBkaXNhYmxlZCBmb3IgdGhpcyBjb2RlXG4vLyBzaW5jZSBpdCBjb25zaWRlcnMgc3VjaCBhY2Nlc3Npb25zIG5vb3BcbmlmICggIXN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7XG5cdGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0LyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogXCJvZmZcIiAqL1xuXG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6IFwib2ZmXCIgKi9cblxuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICkge1xuXHRcdFx0XHRwYXJlbnQuc2VsZWN0ZWRJbmRleDtcblxuXHRcdFx0XHRpZiAoIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbmpRdWVyeS5lYWNoKCBbXG5cdFwidGFiSW5kZXhcIixcblx0XCJyZWFkT25seVwiLFxuXHRcIm1heExlbmd0aFwiLFxuXHRcImNlbGxTcGFjaW5nXCIsXG5cdFwiY2VsbFBhZGRpbmdcIixcblx0XCJyb3dTcGFuXCIsXG5cdFwiY29sU3BhblwiLFxuXHRcInVzZU1hcFwiLFxuXHRcImZyYW1lQm9yZGVyXCIsXG5cdFwiY29udGVudEVkaXRhYmxlXCJcbl0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlzO1xufSApO1xuXG5cblxuXG5cdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29yZGluZyB0byBIVE1MIHNwZWNcblx0Ly8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS1hc2NpaS13aGl0ZXNwYWNlXG5cdGZ1bmN0aW9uIHN0cmlwQW5kQ29sbGFwc2UoIHZhbHVlICkge1xuXHRcdHZhciB0b2tlbnMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdO1xuXHRcdHJldHVybiB0b2tlbnMuam9pbiggXCIgXCIgKTtcblx0fVxuXG5cbmZ1bmN0aW9uIGdldENsYXNzKCBlbGVtICkge1xuXHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiApIHx8IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApIHtcblx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxuXHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblx0fVxuXHRyZXR1cm4gW107XG59XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0YWRkQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjdXJWYWx1ZSwgY2xhenosIGosIGZpbmFsVmFsdWUsXG5cdFx0XHRpID0gMDtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0Y2xhc3NlcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBjbGFzc2VzLmxlbmd0aCApIHtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0Y3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApO1xuXHRcdFx0XHRjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgXCIgXCIgKTtcblxuXHRcdFx0XHRpZiAoIGN1ciApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHR3aGlsZSAoICggY2xhenogPSBjbGFzc2VzWyBqKysgXSApICkge1xuXHRcdFx0XHRcdFx0aWYgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPCAwICkge1xuXHRcdFx0XHRcdFx0XHRjdXIgKz0gY2xhenogKyBcIiBcIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hdHRyKCBcImNsYXNzXCIsIFwiXCIgKTtcblx0XHR9XG5cblx0XHRjbGFzc2VzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRpZiAoIGNsYXNzZXMubGVuZ3RoICkge1xuXHRcdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0XHRjdXJWYWx1ZSA9IGdldENsYXNzKCBlbGVtICk7XG5cblx0XHRcdFx0Ly8gVGhpcyBleHByZXNzaW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRDbGFzcylcblx0XHRcdFx0Y3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArIFwiIFwiICk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlICphbGwqIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdFx0Y3VyID0gY3VyLnJlcGxhY2UoIFwiIFwiICsgY2xhenogKyBcIiBcIiwgXCIgXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUsIHN0YXRlVmFsICkge1xuXHRcdHZhciB0eXBlID0gdHlwZW9mIHZhbHVlLFxuXHRcdFx0aXNWYWxpZFZhbHVlID0gdHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGVWYWwgPT09IFwiYm9vbGVhblwiICYmIGlzVmFsaWRWYWx1ZSApIHtcblx0XHRcdHJldHVybiBzdGF0ZVZhbCA/IHRoaXMuYWRkQ2xhc3MoIHZhbHVlICkgOiB0aGlzLnJlbW92ZUNsYXNzKCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyhcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCB0aGlzLCBpLCBnZXRDbGFzcyggdGhpcyApLCBzdGF0ZVZhbCApLFxuXHRcdFx0XHRcdHN0YXRlVmFsXG5cdFx0XHRcdCk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgY2xhc3NOYW1lLCBpLCBzZWxmLCBjbGFzc05hbWVzO1xuXG5cdFx0XHRpZiAoIGlzVmFsaWRWYWx1ZSApIHtcblxuXHRcdFx0XHQvLyBUb2dnbGUgaW5kaXZpZHVhbCBjbGFzcyBuYW1lc1xuXHRcdFx0XHRpID0gMDtcblx0XHRcdFx0c2VsZiA9IGpRdWVyeSggdGhpcyApO1xuXHRcdFx0XHRjbGFzc05hbWVzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRcdFx0d2hpbGUgKCAoIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdICkgKSB7XG5cblx0XHRcdFx0XHQvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3Rcblx0XHRcdFx0XHRpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkge1xuXHRcdFx0XHRcdFx0c2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNlbGYuYWRkQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBUb2dnbGUgd2hvbGUgY2xhc3MgbmFtZVxuXHRcdFx0fSBlbHNlIGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdFx0Y2xhc3NOYW1lID0gZ2V0Q2xhc3MoIHRoaXMgKTtcblx0XHRcdFx0aWYgKCBjbGFzc05hbWUgKSB7XG5cblx0XHRcdFx0XHQvLyBTdG9yZSBjbGFzc05hbWUgaWYgc2V0XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiwgY2xhc3NOYW1lICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGUgZWxlbWVudCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCBgZmFsc2VgLFxuXHRcdFx0XHQvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLlxuXHRcdFx0XHQvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLFxuXHRcdFx0XHQvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG5cdFx0XHRcdGlmICggdGhpcy5zZXRBdHRyaWJ1dGUgKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIixcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0XHRcdFx0XCJcIiA6XG5cdFx0XHRcdFx0XHRkYXRhUHJpdi5nZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiICkgfHwgXCJcIlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0aGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgY2xhc3NOYW1lLCBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRjbGFzc05hbWUgPSBcIiBcIiArIHNlbGVjdG9yICsgXCIgXCI7XG5cdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBnZXRDbGFzcyggZWxlbSApICkgKyBcIiBcIiApLmluZGV4T2YoIGNsYXNzTmFtZSApID4gLTEgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBycmV0dXJuID0gL1xcci9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHZhbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LCB2YWx1ZUlzRnVuY3Rpb24sXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdO1xuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0XHRpZiAoIGhvb2tzICYmXG5cdFx0XHRcdFx0XCJnZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBcInZhbHVlXCIgKSApICE9PSB1bmRlZmluZWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldCA9IGVsZW0udmFsdWU7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlc1xuXHRcdFx0XHRpZiAoIHR5cGVvZiByZXQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldC5yZXBsYWNlKCBycmV0dXJuLCBcIlwiICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBIYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXJcblx0XHRcdFx0cmV0dXJuIHJldCA9PSBudWxsID8gXCJcIiA6IHJldDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhbHVlSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdHZhciB2YWw7XG5cblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbHVlSXNGdW5jdGlvbiApIHtcblx0XHRcdFx0dmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyBcIlwiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nXG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR2YWwgPSBcIlwiO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHR2YWwgKz0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHZhbCA9IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICsgXCJcIjtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0Ly8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmdcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgXCJ2YWx1ZVwiICkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0dGhpcy52YWx1ZSA9IHZhbDtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHR2YWxIb29rczoge1xuXHRcdG9wdGlvbjoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0XHR2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ2YWx1ZVwiICk7XG5cdFx0XHRcdHJldHVybiB2YWwgIT0gbnVsbCA/XG5cdFx0XHRcdFx0dmFsIDpcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSBvbmx5XG5cdFx0XHRcdFx0Ly8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKCMxNDY4NiwgIzE0ODU4KVxuXHRcdFx0XHRcdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlXG5cdFx0XHRcdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNlLXdoaXRlc3BhY2Vcblx0XHRcdFx0XHRzdHJpcEFuZENvbGxhcHNlKCBqUXVlcnkudGV4dCggZWxlbSApICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzZWxlY3Q6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciB2YWx1ZSwgb3B0aW9uLCBpLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0aW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsXG5cdFx0XHRcdFx0b25lID0gZWxlbS50eXBlID09PSBcInNlbGVjdC1vbmVcIixcblx0XHRcdFx0XHR2YWx1ZXMgPSBvbmUgPyBudWxsIDogW10sXG5cdFx0XHRcdFx0bWF4ID0gb25lID8gaW5kZXggKyAxIDogb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0aWYgKCBpbmRleCA8IDAgKSB7XG5cdFx0XHRcdFx0aSA9IG1heDtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGkgPSBvbmUgPyBpbmRleCA6IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0XHRcdGZvciAoIDsgaSA8IG1heDsgaSsrICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0Ly8gSUU4LTkgZG9lc24ndCB1cGRhdGUgc2VsZWN0ZWQgYWZ0ZXIgZm9ybSByZXNldCAoIzI1NTEpXG5cdFx0XHRcdFx0aWYgKCAoIG9wdGlvbi5zZWxlY3RlZCB8fCBpID09PSBpbmRleCApICYmXG5cblx0XHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0XHRcdFx0XHQhb3B0aW9uLmRpc2FibGVkICYmXG5cdFx0XHRcdFx0XHRcdCggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8XG5cdFx0XHRcdFx0XHRcdFx0IW5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgXCJvcHRncm91cFwiICkgKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvblxuXHRcdFx0XHRcdFx0dmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpO1xuXG5cdFx0XHRcdFx0XHQvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0c1xuXHRcdFx0XHRcdFx0aWYgKCBvbmUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gTXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXlcblx0XHRcdFx0XHRcdHZhbHVlcy5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIG9wdGlvblNldCwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0dmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSxcblx0XHRcdFx0XHRpID0gb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXG5cdFx0XHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tY29uZC1hc3NpZ24gKi9cblxuXHRcdFx0XHRcdGlmICggb3B0aW9uLnNlbGVjdGVkID1cblx0XHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBqUXVlcnkudmFsSG9va3Mub3B0aW9uLmdldCggb3B0aW9uICksIHZhbHVlcyApID4gLTFcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG9wdGlvblNldCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0LyogZXNsaW50LWVuYWJsZSBuby1jb25kLWFzc2lnbiAqL1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gRm9yY2UgYnJvd3NlcnMgdG8gYmVoYXZlIGNvbnNpc3RlbnRseSB3aGVuIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBzZXRcblx0XHRcdFx0aWYgKCAhb3B0aW9uU2V0ICkge1xuXHRcdFx0XHRcdGVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyXG5qUXVlcnkuZWFjaCggWyBcInJhZGlvXCIsIFwiY2hlY2tib3hcIiBdLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7XG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoIGVsZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRpZiAoICFzdXBwb3J0LmNoZWNrT24gKSB7XG5cdFx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBudWxsID8gXCJvblwiIDogZWxlbS52YWx1ZTtcblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFJldHVybiBqUXVlcnkgZm9yIGF0dHJpYnV0ZXMtb25seSBpbmNsdXNpb25cblxuXG5zdXBwb3J0LmZvY3VzaW4gPSBcIm9uZm9jdXNpblwiIGluIHdpbmRvdztcblxuXG52YXIgcmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sXG5cdHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrID0gZnVuY3Rpb24oIGUgKSB7XG5cdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0fTtcblxualF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmV2ZW50LCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7XG5cblx0XHR2YXIgaSwgY3VyLCB0bXAsIGJ1YmJsZVR5cGUsIG9udHlwZSwgaGFuZGxlLCBzcGVjaWFsLCBsYXN0RWxlbWVudCxcblx0XHRcdGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLFxuXHRcdFx0dHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgXCJ0eXBlXCIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCxcblx0XHRcdG5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwibmFtZXNwYWNlXCIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCggXCIuXCIgKSA6IFtdO1xuXG5cdFx0Y3VyID0gbGFzdEVsZW1lbnQgPSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1bWVudDtcblxuXHRcdC8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93XG5cdFx0aWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZS5pbmRleE9mKCBcIi5cIiApID4gLTEgKSB7XG5cblx0XHRcdC8vIE5hbWVzcGFjZWQgdHJpZ2dlcjsgY3JlYXRlIGEgcmVnZXhwIHRvIG1hdGNoIGV2ZW50IHR5cGUgaW4gaGFuZGxlKClcblx0XHRcdG5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0KCBcIi5cIiApO1xuXHRcdFx0dHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTtcblx0XHRcdG5hbWVzcGFjZXMuc29ydCgpO1xuXHRcdH1cblx0XHRvbnR5cGUgPSB0eXBlLmluZGV4T2YoIFwiOlwiICkgPCAwICYmIFwib25cIiArIHR5cGU7XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBqUXVlcnkuRXZlbnQgb2JqZWN0LCBPYmplY3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmdcblx0XHRldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdGV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVudCA9PT0gXCJvYmplY3RcIiAmJiBldmVudCApO1xuXG5cdFx0Ly8gVHJpZ2dlciBiaXRtYXNrOiAmIDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBqUXVlcnkgKGFsd2F5cyB0cnVlKVxuXHRcdGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzO1xuXHRcdGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKTtcblx0XHRldmVudC5ybmFtZXNwYWNlID0gZXZlbnQubmFtZXNwYWNlID9cblx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oIFwiXFxcXC4oPzouKlxcXFwufClcIiApICsgXCIoXFxcXC58JClcIiApIDpcblx0XHRcdG51bGw7XG5cblx0XHQvLyBDbGVhbiB1cCB0aGUgZXZlbnQgaW4gY2FzZSBpdCBpcyBiZWluZyByZXVzZWRcblx0XHRldmVudC5yZXN1bHQgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKCAhZXZlbnQudGFyZ2V0ICkge1xuXHRcdFx0ZXZlbnQudGFyZ2V0ID0gZWxlbTtcblx0XHR9XG5cblx0XHQvLyBDbG9uZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBoYW5kbGVyIGFyZyBsaXN0XG5cdFx0ZGF0YSA9IGRhdGEgPT0gbnVsbCA/XG5cdFx0XHRbIGV2ZW50IF0gOlxuXHRcdFx0alF1ZXJ5Lm1ha2VBcnJheSggZGF0YSwgWyBldmVudCBdICk7XG5cblx0XHQvLyBBbGxvdyBzcGVjaWFsIGV2ZW50cyB0byBkcmF3IG91dHNpZGUgdGhlIGxpbmVzXG5cdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmIHNwZWNpYWwudHJpZ2dlciAmJiBzcGVjaWFsLnRyaWdnZXIuYXBwbHkoIGVsZW0sIGRhdGEgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEpXG5cdFx0Ly8gQnViYmxlIHVwIHRvIGRvY3VtZW50LCB0aGVuIHRvIHdpbmRvdzsgd2F0Y2ggZm9yIGEgZ2xvYmFsIG93bmVyRG9jdW1lbnQgdmFyICgjOTcyNClcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIXNwZWNpYWwubm9CdWJibGUgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlO1xuXHRcdFx0aWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHtcblx0XHRcdFx0Y3VyID0gY3VyLnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0dG1wID0gY3VyO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSlcblx0XHRcdGlmICggdG1wID09PSAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCApICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQgcGF0aFxuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKCBjdXIgPSBldmVudFBhdGhbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRsYXN0RWxlbWVudCA9IGN1cjtcblx0XHRcdGV2ZW50LnR5cGUgPSBpID4gMSA/XG5cdFx0XHRcdGJ1YmJsZVR5cGUgOlxuXHRcdFx0XHRzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7XG5cblx0XHRcdC8vIGpRdWVyeSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSAoIGRhdGFQcml2LmdldCggY3VyLCBcImV2ZW50c1wiICkgfHwge30gKVsgZXZlbnQudHlwZSBdICYmXG5cdFx0XHRcdGRhdGFQcml2LmdldCggY3VyLCBcImhhbmRsZVwiICk7XG5cdFx0XHRpZiAoIGhhbmRsZSApIHtcblx0XHRcdFx0aGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmF0aXZlIGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBdO1xuXHRcdFx0aWYgKCBoYW5kbGUgJiYgaGFuZGxlLmFwcGx5ICYmIGFjY2VwdERhdGEoIGN1ciApICkge1xuXHRcdFx0XHRldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRldmVudC50eXBlID0gdHlwZTtcblxuXHRcdC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3dcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXG5cdFx0XHRpZiAoICggIXNwZWNpYWwuX2RlZmF1bHQgfHxcblx0XHRcdFx0c3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZXZlbnRQYXRoLnBvcCgpLCBkYXRhICkgPT09IGZhbHNlICkgJiZcblx0XHRcdFx0YWNjZXB0RGF0YSggZWxlbSApICkge1xuXG5cdFx0XHRcdC8vIENhbGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQuXG5cdFx0XHRcdC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MClcblx0XHRcdFx0aWYgKCBvbnR5cGUgJiYgaXNGdW5jdGlvbiggZWxlbVsgdHlwZSBdICkgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kXG5cdFx0XHRcdFx0dG1wID0gZWxlbVsgb250eXBlIF07XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZVxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlO1xuXG5cdFx0XHRcdFx0aWYgKCBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0XHRcdFx0bGFzdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgc3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2sgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtWyB0eXBlIF0oKTtcblxuXHRcdFx0XHRcdGlmICggZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdFx0XHRcdGxhc3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSB0bXA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHQvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVudCBvbmVcblx0Ly8gVXNlZCBvbmx5IGZvciBgZm9jdXMoaW4gfCBvdXQpYCBldmVudHNcblx0c2ltdWxhdGU6IGZ1bmN0aW9uKCB0eXBlLCBlbGVtLCBldmVudCApIHtcblx0XHR2YXIgZSA9IGpRdWVyeS5leHRlbmQoXG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCksXG5cdFx0XHRldmVudCxcblx0XHRcdHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0aXNTaW11bGF0ZWQ6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTtcblx0fVxuXG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7XG5cdFx0fSApO1xuXHR9LFxuXHR0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF07XG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cblxuLy8gU3VwcG9ydDogRmlyZWZveCA8PTQ0XG4vLyBGaXJlZm94IGRvZXNuJ3QgaGF2ZSBmb2N1cyhpbiB8IG91dCkgZXZlbnRzXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY4Nzc4N1xuLy9cbi8vIFN1cHBvcnQ6IENocm9tZSA8PTQ4IC0gNDksIFNhZmFyaSA8PTkuMCAtIDkuMVxuLy8gZm9jdXMoaW4gfCBvdXQpIGV2ZW50cyBmaXJlIGFmdGVyIGZvY3VzICYgYmx1ciBldmVudHMsXG4vLyB3aGljaCBpcyBzcGVjIHZpb2xhdGlvbiAtIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWZvY3VzZXZlbnQtZXZlbnQtb3JkZXJcbi8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDQ5ODU3XG5pZiAoICFzdXBwb3J0LmZvY3VzaW4gKSB7XG5cdGpRdWVyeS5lYWNoKCB7IGZvY3VzOiBcImZvY3VzaW5cIiwgYmx1cjogXCJmb2N1c291dFwiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XG5cblx0XHQvLyBBdHRhY2ggYSBzaW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgb24gdGhlIGRvY3VtZW50IHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dFxuXHRcdHZhciBoYW5kbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCBmaXgsIGV2ZW50LnRhcmdldCwgalF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKSApO1xuXHRcdH07XG5cblx0XHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7XG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsICggYXR0YWNoZXMgfHwgMCApICsgMSApO1xuXHRcdFx0fSxcblx0XHRcdHRlYXJkb3duOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApIC0gMTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXggKTtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9ICk7XG59XG52YXIgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG5cbnZhciBub25jZSA9IERhdGUubm93KCk7XG5cbnZhciBycXVlcnkgPSAoIC9cXD8vICk7XG5cblxuXG4vLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nXG5qUXVlcnkucGFyc2VYTUwgPSBmdW5jdGlvbiggZGF0YSApIHtcblx0dmFyIHhtbDtcblx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdC8vIElFIHRocm93cyBvbiBwYXJzZUZyb21TdHJpbmcgd2l0aCBpbnZhbGlkIGlucHV0LlxuXHR0cnkge1xuXHRcdHhtbCA9ICggbmV3IHdpbmRvdy5ET01QYXJzZXIoKSApLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgXCJ0ZXh0L3htbFwiICk7XG5cdH0gY2F0Y2ggKCBlICkge1xuXHRcdHhtbCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwicGFyc2VyZXJyb3JcIiApLmxlbmd0aCApIHtcblx0XHRqUXVlcnkuZXJyb3IoIFwiSW52YWxpZCBYTUw6IFwiICsgZGF0YSApO1xuXHR9XG5cdHJldHVybiB4bWw7XG59O1xuXG5cbnZhclxuXHRyYnJhY2tldCA9IC9cXFtcXF0kLyxcblx0ckNSTEYgPSAvXFxyP1xcbi9nLFxuXHRyc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksXG5cdHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtcblxuZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRkICkge1xuXHR2YXIgbmFtZTtcblxuXHRpZiAoIEFycmF5LmlzQXJyYXkoIG9iaiApICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIGFycmF5IGl0ZW0uXG5cdFx0alF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7XG5cdFx0XHRpZiAoIHRyYWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkge1xuXG5cdFx0XHRcdC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxhci5cblx0XHRcdFx0YWRkKCBwcmVmaXgsIHYgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29kZSBpdHMgbnVtZXJpYyBpbmRleC5cblx0XHRcdFx0YnVpbGRQYXJhbXMoXG5cdFx0XHRcdFx0cHJlZml4ICsgXCJbXCIgKyAoIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT0gbnVsbCA/IGkgOiBcIlwiICkgKyBcIl1cIixcblx0XHRcdFx0XHR2LFxuXHRcdFx0XHRcdHRyYWRpdGlvbmFsLFxuXHRcdFx0XHRcdGFkZFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHR9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgdG9UeXBlKCBvYmogKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArIG5hbWUgKyBcIl1cIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cblx0fSBlbHNlIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBzY2FsYXIgaXRlbS5cblx0XHRhZGQoIHByZWZpeCwgb2JqICk7XG5cdH1cbn1cblxuLy8gU2VyaWFsaXplIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBzZXQgb2Zcbi8vIGtleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZ1xualF1ZXJ5LnBhcmFtID0gZnVuY3Rpb24oIGEsIHRyYWRpdGlvbmFsICkge1xuXHR2YXIgcHJlZml4LFxuXHRcdHMgPSBbXSxcblx0XHRhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZU9yRnVuY3Rpb24gKSB7XG5cblx0XHRcdC8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGludm9rZSBpdCBhbmQgdXNlIGl0cyByZXR1cm4gdmFsdWVcblx0XHRcdHZhciB2YWx1ZSA9IGlzRnVuY3Rpb24oIHZhbHVlT3JGdW5jdGlvbiApID9cblx0XHRcdFx0dmFsdWVPckZ1bmN0aW9uKCkgOlxuXHRcdFx0XHR2YWx1ZU9yRnVuY3Rpb247XG5cblx0XHRcdHNbIHMubGVuZ3RoIF0gPSBlbmNvZGVVUklDb21wb25lbnQoIGtleSApICsgXCI9XCIgK1xuXHRcdFx0XHRlbmNvZGVVUklDb21wb25lbnQoIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKTtcblx0XHR9O1xuXG5cdC8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuXG5cdGlmICggQXJyYXkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSB0aGUgZm9ybSBlbGVtZW50c1xuXHRcdGpRdWVyeS5lYWNoKCBhLCBmdW5jdGlvbigpIHtcblx0XHRcdGFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7XG5cdFx0fSApO1xuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSBcIm9sZFwiIHdheSAodGhlIHdheSAxLjMuMiBvciBvbGRlclxuXHRcdC8vIGRpZCBpdCksIG90aGVyd2lzZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LlxuXHRcdGZvciAoIHByZWZpeCBpbiBhICkge1xuXHRcdFx0YnVpbGRQYXJhbXMoIHByZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIHJlc3VsdGluZyBzZXJpYWxpemF0aW9uXG5cdHJldHVybiBzLmpvaW4oIFwiJlwiICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNlcmlhbGl6ZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7XG5cdH0sXG5cdHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBDYW4gYWRkIHByb3BIb29rIGZvciBcImVsZW1lbnRzXCIgdG8gZmlsdGVyIG9yIGFkZCBmb3JtIGVsZW1lbnRzXG5cdFx0XHR2YXIgZWxlbWVudHMgPSBqUXVlcnkucHJvcCggdGhpcywgXCJlbGVtZW50c1wiICk7XG5cdFx0XHRyZXR1cm4gZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCBlbGVtZW50cyApIDogdGhpcztcblx0XHR9IClcblx0XHQuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciB0eXBlID0gdGhpcy50eXBlO1xuXG5cdFx0XHQvLyBVc2UgLmlzKCBcIjpkaXNhYmxlZFwiICkgc28gdGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3Ncblx0XHRcdHJldHVybiB0aGlzLm5hbWUgJiYgIWpRdWVyeSggdGhpcyApLmlzKCBcIjpkaXNhYmxlZFwiICkgJiZcblx0XHRcdFx0cnN1Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVzLnRlc3QoIHR5cGUgKSAmJlxuXHRcdFx0XHQoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7XG5cdFx0fSApXG5cdFx0Lm1hcCggZnVuY3Rpb24oIGksIGVsZW0gKSB7XG5cdFx0XHR2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFsKCk7XG5cblx0XHRcdGlmICggdmFsID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0XHRcdHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHR9ICkuZ2V0KCk7XG5cdH1cbn0gKTtcblxuXG52YXJcblx0cjIwID0gLyUyMC9nLFxuXHRyaGFzaCA9IC8jLiokLyxcblx0cmFudGlDYWNoZSA9IC8oWz8mXSlfPVteJl0qLyxcblx0cmhlYWRlcnMgPSAvXiguKj8pOlsgXFx0XSooW15cXHJcXG5dKikkL21nLFxuXG5cdC8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvblxuXHRybG9jYWxQcm90b2NvbCA9IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLFxuXHRybm9Db250ZW50ID0gL14oPzpHRVR8SEVBRCkkLyxcblx0cnByb3RvY29sID0gL15cXC9cXC8vLFxuXG5cdC8qIFByZWZpbHRlcnNcblx0ICogMSkgVGhleSBhcmUgdXNlZnVsIHRvIGludHJvZHVjZSBjdXN0b20gZGF0YVR5cGVzIChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4gZXhhbXBsZSlcblx0ICogMikgVGhlc2UgYXJlIGNhbGxlZDpcblx0ICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRyYW5zcG9ydFxuXHQgKiAgICAtIEFGVEVSIHBhcmFtIHNlcmlhbGl6YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBzLnByb2Nlc3NEYXRhIGlzIHRydWUpXG5cdCAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGVcblx0ICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCBcIipcIiBjYW4gYmUgdXNlZFxuXHQgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0cHJlZmlsdGVycyA9IHt9LFxuXG5cdC8qIFRyYW5zcG9ydHMgYmluZGluZ3Ncblx0ICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDMpIHNlbGVjdGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGdvIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0dHJhbnNwb3J0cyA9IHt9LFxuXG5cdC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvblxuXHRhbGxUeXBlcyA9IFwiKi9cIi5jb25jYXQoIFwiKlwiICksXG5cblx0Ly8gQW5jaG9yIHRhZyBmb3IgcGFyc2luZyB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9yaWdpbkFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiYVwiICk7XG5cdG9yaWdpbkFuY2hvci5ocmVmID0gbG9jYXRpb24uaHJlZjtcblxuLy8gQmFzZSBcImNvbnN0cnVjdG9yXCIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydFxuZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7XG5cblx0Ly8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBcIipcIlxuXHRyZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHtcblxuXHRcdGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247XG5cdFx0XHRkYXRhVHlwZUV4cHJlc3Npb24gPSBcIipcIjtcblx0XHR9XG5cblx0XHR2YXIgZGF0YVR5cGUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIGZ1bmMgKSApIHtcblxuXHRcdFx0Ly8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvblxuXHRcdFx0d2hpbGUgKCAoIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSApICkge1xuXG5cdFx0XHRcdC8vIFByZXBlbmQgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdGlmICggZGF0YVR5cGVbIDAgXSA9PT0gXCIrXCIgKSB7XG5cdFx0XHRcdFx0ZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8IFwiKlwiO1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkudW5zaGlmdCggZnVuYyApO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBhcHBlbmRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSApLnB1c2goIGZ1bmMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzXG5mdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkge1xuXG5cdHZhciBpbnNwZWN0ZWQgPSB7fSxcblx0XHRzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTtcblxuXHRmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHtcblx0XHR2YXIgc2VsZWN0ZWQ7XG5cdFx0aW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTtcblx0XHRqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkge1xuXHRcdFx0dmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTtcblx0XHRcdGlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0IXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkge1xuXG5cdFx0XHRcdG9wdGlvbnMuZGF0YVR5cGVzLnVuc2hpZnQoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0aW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKCBzZWVraW5nVHJhbnNwb3J0ICkge1xuXHRcdFx0XHRyZXR1cm4gISggc2VsZWN0ZWQgPSBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdHJldHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgXCIqXCIgXSAmJiBpbnNwZWN0KCBcIipcIiApO1xufVxuXG4vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnNcbi8vIHRoYXQgdGFrZXMgXCJmbGF0XCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpXG4vLyBGaXhlcyAjOTg4N1xuZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7XG5cdHZhciBrZXksIGRlZXAsXG5cdFx0ZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9O1xuXG5cdGZvciAoIGtleSBpbiBzcmMgKSB7XG5cdFx0aWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHQoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoIGRlZXAgPSB7fSApICkgKVsga2V5IF0gPSBzcmNbIGtleSBdO1xuXHRcdH1cblx0fVxuXHRpZiAoIGRlZXAgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdHJ1ZSwgdGFyZ2V0LCBkZWVwICk7XG5cdH1cblxuXHRyZXR1cm4gdGFyZ2V0O1xufVxuXG4vKiBIYW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4IHJlcXVlc3Q6XG4gKiAtIGZpbmRzIHRoZSByaWdodCBkYXRhVHlwZSAobWVkaWF0ZXMgYmV0d2VlbiBjb250ZW50LXR5cGUgYW5kIGV4cGVjdGVkIGRhdGFUeXBlKVxuICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKSB7XG5cblx0dmFyIGN0LCB0eXBlLCBmaW5hbERhdGFUeXBlLCBmaXJzdERhdGFUeXBlLFxuXHRcdGNvbnRlbnRzID0gcy5jb250ZW50cyxcblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcztcblxuXHQvLyBSZW1vdmUgYXV0byBkYXRhVHlwZSBhbmQgZ2V0IGNvbnRlbnQtdHlwZSBpbiB0aGUgcHJvY2Vzc1xuXHR3aGlsZSAoIGRhdGFUeXBlc1sgMCBdID09PSBcIipcIiApIHtcblx0XHRkYXRhVHlwZXMuc2hpZnQoKTtcblx0XHRpZiAoIGN0ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRjdCA9IHMubWltZVR5cGUgfHwganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGVcblx0aWYgKCBjdCApIHtcblx0XHRmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkge1xuXHRcdFx0aWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHtcblx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlXG5cdGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkge1xuXHRcdGZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTtcblx0fSBlbHNlIHtcblxuXHRcdC8vIFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXNcblx0XHRmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHtcblx0XHRcdGlmICggIWRhdGFUeXBlc1sgMCBdIHx8IHMuY29udmVydGVyc1sgdHlwZSArIFwiIFwiICsgZGF0YVR5cGVzWyAwIF0gXSApIHtcblx0XHRcdFx0ZmluYWxEYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAhZmlyc3REYXRhVHlwZSApIHtcblx0XHRcdFx0Zmlyc3REYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gT3IganVzdCB1c2UgZmlyc3Qgb25lXG5cdFx0ZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTtcblx0fVxuXG5cdC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGVcblx0Ly8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWRcblx0Ly8gYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuXHRpZiAoIGZpbmFsRGF0YVR5cGUgKSB7XG5cdFx0aWYgKCBmaW5hbERhdGFUeXBlICE9PSBkYXRhVHlwZXNbIDAgXSApIHtcblx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7XG5cdFx0fVxuXHRcdHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTtcblx0fVxufVxuXG4vKiBDaGFpbiBjb252ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlXG4gKiBBbHNvIHNldHMgdGhlIHJlc3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICkge1xuXHR2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldixcblx0XHRjb252ZXJ0ZXJzID0ge30sXG5cblx0XHQvLyBXb3JrIHdpdGggYSBjb3B5IG9mIGRhdGFUeXBlcyBpbiBjYXNlIHdlIG5lZWQgdG8gbW9kaWZ5IGl0IGZvciBjb252ZXJzaW9uXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMuc2xpY2UoKTtcblxuXHQvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXNcblx0aWYgKCBkYXRhVHlwZXNbIDEgXSApIHtcblx0XHRmb3IgKCBjb252IGluIHMuY29udmVydGVycyApIHtcblx0XHRcdGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07XG5cdFx0fVxuXHR9XG5cblx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlXG5cdHdoaWxlICggY3VycmVudCApIHtcblxuXHRcdGlmICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkge1xuXHRcdFx0anFYSFJbIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWRcblx0XHRpZiAoICFwcmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFGaWx0ZXIgKSB7XG5cdFx0XHRyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTtcblx0XHR9XG5cblx0XHRwcmV2ID0gY3VycmVudDtcblx0XHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0XHRpZiAoIGN1cnJlbnQgKSB7XG5cblx0XHRcdC8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUgaXMgbm9uLWF1dG9cblx0XHRcdGlmICggY3VycmVudCA9PT0gXCIqXCIgKSB7XG5cblx0XHRcdFx0Y3VycmVudCA9IHByZXY7XG5cblx0XHRcdC8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRhVHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnRcblx0XHRcdH0gZWxzZSBpZiAoIHByZXYgIT09IFwiKlwiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXJcblx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIGN1cnJlbnQgXSB8fCBjb252ZXJ0ZXJzWyBcIiogXCIgKyBjdXJyZW50IF07XG5cblx0XHRcdFx0Ly8gSWYgbm9uZSBmb3VuZCwgc2VlayBhIHBhaXJcblx0XHRcdFx0aWYgKCAhY29udiApIHtcblx0XHRcdFx0XHRmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnRcblx0XHRcdFx0XHRcdHRtcCA9IGNvbnYyLnNwbGl0KCBcIiBcIiApO1xuXHRcdFx0XHRcdFx0aWYgKCB0bXBbIDEgXSA9PT0gY3VycmVudCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXRcblx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIHRtcFsgMCBdIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJzWyBcIiogXCIgKyB0bXBbIDAgXSBdO1xuXHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjb252ID09PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGluc2VydCB0aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnQgPSB0bXBbIDAgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKVxuXHRcdFx0XHRpZiAoIGNvbnYgIT09IHRydWUgKSB7XG5cblx0XHRcdFx0XHQvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybiB0aGVtXG5cdFx0XHRcdFx0aWYgKCBjb252ICYmIHMudGhyb3dzICkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZTogXCJwYXJzZXJlcnJvclwiLFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yOiBjb252ID8gZSA6IFwiTm8gY29udmVyc2lvbiBmcm9tIFwiICsgcHJldiArIFwiIHRvIFwiICsgY3VycmVudFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHN0YXRlOiBcInN1Y2Nlc3NcIiwgZGF0YTogcmVzcG9uc2UgfTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllc1xuXHRhY3RpdmU6IDAsXG5cblx0Ly8gTGFzdC1Nb2RpZmllZCBoZWFkZXIgY2FjaGUgZm9yIG5leHQgcmVxdWVzdFxuXHRsYXN0TW9kaWZpZWQ6IHt9LFxuXHRldGFnOiB7fSxcblxuXHRhamF4U2V0dGluZ3M6IHtcblx0XHR1cmw6IGxvY2F0aW9uLmhyZWYsXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBsb2NhdGlvbi5wcm90b2NvbCApLFxuXHRcdGdsb2JhbDogdHJ1ZSxcblx0XHRwcm9jZXNzRGF0YTogdHJ1ZSxcblx0XHRhc3luYzogdHJ1ZSxcblx0XHRjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcblxuXHRcdC8qXG5cdFx0dGltZW91dDogMCxcblx0XHRkYXRhOiBudWxsLFxuXHRcdGRhdGFUeXBlOiBudWxsLFxuXHRcdHVzZXJuYW1lOiBudWxsLFxuXHRcdHBhc3N3b3JkOiBudWxsLFxuXHRcdGNhY2hlOiBudWxsLFxuXHRcdHRocm93czogZmFsc2UsXG5cdFx0dHJhZGl0aW9uYWw6IGZhbHNlLFxuXHRcdGhlYWRlcnM6IHt9LFxuXHRcdCovXG5cblx0XHRhY2NlcHRzOiB7XG5cdFx0XHRcIipcIjogYWxsVHlwZXMsXG5cdFx0XHR0ZXh0OiBcInRleHQvcGxhaW5cIixcblx0XHRcdGh0bWw6IFwidGV4dC9odG1sXCIsXG5cdFx0XHR4bWw6IFwiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbFwiLFxuXHRcdFx0anNvbjogXCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHRcIlxuXHRcdH0sXG5cblx0XHRjb250ZW50czoge1xuXHRcdFx0eG1sOiAvXFxieG1sXFxiLyxcblx0XHRcdGh0bWw6IC9cXGJodG1sLyxcblx0XHRcdGpzb246IC9cXGJqc29uXFxiL1xuXHRcdH0sXG5cblx0XHRyZXNwb25zZUZpZWxkczoge1xuXHRcdFx0eG1sOiBcInJlc3BvbnNlWE1MXCIsXG5cdFx0XHR0ZXh0OiBcInJlc3BvbnNlVGV4dFwiLFxuXHRcdFx0anNvbjogXCJyZXNwb25zZUpTT05cIlxuXHRcdH0sXG5cblx0XHQvLyBEYXRhIGNvbnZlcnRlcnNcblx0XHQvLyBLZXlzIHNlcGFyYXRlIHNvdXJjZSAob3IgY2F0Y2hhbGwgXCIqXCIpIGFuZCBkZXN0aW5hdGlvbiB0eXBlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG5cdFx0Y29udmVydGVyczoge1xuXG5cdFx0XHQvLyBDb252ZXJ0IGFueXRoaW5nIHRvIHRleHRcblx0XHRcdFwiKiB0ZXh0XCI6IFN0cmluZyxcblxuXHRcdFx0Ly8gVGV4dCB0byBodG1sICh0cnVlID0gbm8gdHJhbnNmb3JtYXRpb24pXG5cdFx0XHRcInRleHQgaHRtbFwiOiB0cnVlLFxuXG5cdFx0XHQvLyBFdmFsdWF0ZSB0ZXh0IGFzIGEganNvbiBleHByZXNzaW9uXG5cdFx0XHRcInRleHQganNvblwiOiBKU09OLnBhcnNlLFxuXG5cdFx0XHQvLyBQYXJzZSB0ZXh0IGFzIHhtbFxuXHRcdFx0XCJ0ZXh0IHhtbFwiOiBqUXVlcnkucGFyc2VYTUxcblx0XHR9LFxuXG5cdFx0Ly8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDpcblx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gb3B0aW9ucyBoZXJlIGlmXG5cdFx0Ly8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmVcblx0XHQvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZClcblx0XHRmbGF0T3B0aW9uczoge1xuXHRcdFx0dXJsOiB0cnVlLFxuXHRcdFx0Y29udGV4dDogdHJ1ZVxuXHRcdH1cblx0fSxcblxuXHQvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldFxuXHQvLyB3aXRoIGJvdGggYWpheFNldHRpbmdzIGFuZCBzZXR0aW5ncyBmaWVsZHMuXG5cdC8vIElmIHRhcmdldCBpcyBvbWl0dGVkLCB3cml0ZXMgaW50byBhamF4U2V0dGluZ3MuXG5cdGFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7XG5cdFx0cmV0dXJuIHNldHRpbmdzID9cblxuXHRcdFx0Ly8gQnVpbGRpbmcgYSBzZXR0aW5ncyBvYmplY3Rcblx0XHRcdGFqYXhFeHRlbmQoIGFqYXhFeHRlbmQoIHRhcmdldCwgalF1ZXJ5LmFqYXhTZXR0aW5ncyApLCBzZXR0aW5ncyApIDpcblxuXHRcdFx0Ly8gRXh0ZW5kaW5nIGFqYXhTZXR0aW5nc1xuXHRcdFx0YWpheEV4dGVuZCggalF1ZXJ5LmFqYXhTZXR0aW5ncywgdGFyZ2V0ICk7XG5cdH0sXG5cblx0YWpheFByZWZpbHRlcjogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksXG5cdGFqYXhUcmFuc3BvcnQ6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cyApLFxuXG5cdC8vIE1haW4gbWV0aG9kXG5cdGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41IHNpZ25hdHVyZVxuXHRcdGlmICggdHlwZW9mIHVybCA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdG9wdGlvbnMgPSB1cmw7XG5cdFx0XHR1cmwgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gRm9yY2Ugb3B0aW9ucyB0byBiZSBhbiBvYmplY3Rcblx0XHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuXHRcdHZhciB0cmFuc3BvcnQsXG5cblx0XHRcdC8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW1cblx0XHRcdGNhY2hlVVJMLFxuXG5cdFx0XHQvLyBSZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcsXG5cdFx0XHRyZXNwb25zZUhlYWRlcnMsXG5cblx0XHRcdC8vIHRpbWVvdXQgaGFuZGxlXG5cdFx0XHR0aW1lb3V0VGltZXIsXG5cblx0XHRcdC8vIFVybCBjbGVhbnVwIHZhclxuXHRcdFx0dXJsQW5jaG9yLFxuXG5cdFx0XHQvLyBSZXF1ZXN0IHN0YXRlIChiZWNvbWVzIGZhbHNlIHVwb24gc2VuZCBhbmQgdHJ1ZSB1cG9uIGNvbXBsZXRpb24pXG5cdFx0XHRjb21wbGV0ZWQsXG5cblx0XHRcdC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZFxuXHRcdFx0ZmlyZUdsb2JhbHMsXG5cblx0XHRcdC8vIExvb3AgdmFyaWFibGVcblx0XHRcdGksXG5cblx0XHRcdC8vIHVuY2FjaGVkIHBhcnQgb2YgdGhlIHVybFxuXHRcdFx0dW5jYWNoZWQsXG5cblx0XHRcdC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3Rcblx0XHRcdHMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLFxuXG5cdFx0XHQvLyBDYWxsYmFja3MgY29udGV4dFxuXHRcdFx0Y2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsXG5cblx0XHRcdC8vIENvbnRleHQgZm9yIGdsb2JhbCBldmVudHMgaXMgY2FsbGJhY2tDb250ZXh0IGlmIGl0IGlzIGEgRE9NIG5vZGUgb3IgalF1ZXJ5IGNvbGxlY3Rpb25cblx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dCA9IHMuY29udGV4dCAmJlxuXHRcdFx0XHQoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBjYWxsYmFja0NvbnRleHQuanF1ZXJ5ICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOlxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudCxcblxuXHRcdFx0Ly8gRGVmZXJyZWRzXG5cdFx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZCA9IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSxcblxuXHRcdFx0Ly8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSlcblx0XHRcdHJlcXVlc3RIZWFkZXJzID0ge30sXG5cdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzID0ge30sXG5cblx0XHRcdC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZVxuXHRcdFx0c3RyQWJvcnQgPSBcImNhbmNlbGVkXCIsXG5cblx0XHRcdC8vIEZha2UgeGhyXG5cdFx0XHRqcVhIUiA9IHtcblx0XHRcdFx0cmVhZHlTdGF0ZTogMCxcblxuXHRcdFx0XHQvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0XHRcdHZhciBtYXRjaDtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0XHRcdGlmICggIXJlc3BvbnNlSGVhZGVycyApIHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzID0ge307XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgXSA9IG1hdGNoWyAyIF07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdG1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBSYXcgc3RyaW5nXG5cdFx0XHRcdGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNvbXBsZXRlZCA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FjaGVzIHRoZSBoZWFkZXJcblx0XHRcdFx0c2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRuYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gPVxuXHRcdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBuYW1lO1xuXHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlclxuXHRcdFx0XHRvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0cy5taW1lVHlwZSA9IHR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRcdHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7XG5cdFx0XHRcdFx0dmFyIGNvZGU7XG5cdFx0XHRcdFx0aWYgKCBtYXAgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3Ncblx0XHRcdFx0XHRcdFx0anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2tzIGluIGEgd2F5IHRoYXQgcHJlc2VydmVzIG9sZCBvbmVzXG5cdFx0XHRcdFx0XHRcdGZvciAoIGNvZGUgaW4gbWFwICkge1xuXHRcdFx0XHRcdFx0XHRcdHN0YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBbIGNvZGUgXSBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhbmNlbCB0aGUgcmVxdWVzdFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XG5cdFx0XHRcdFx0aWYgKCB0cmFuc3BvcnQgKSB7XG5cdFx0XHRcdFx0XHR0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkb25lKCAwLCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBkZWZlcnJlZHNcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApO1xuXG5cdFx0Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpXG5cdFx0Ly8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVyZSlcblx0XHQvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGVcblx0XHRzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgbG9jYXRpb24uaHJlZiApICsgXCJcIiApXG5cdFx0XHQucmVwbGFjZSggcnByb3RvY29sLCBsb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiApO1xuXG5cdFx0Ly8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0eXBlIGFzIHBlciB0aWNrZXQgIzEyMDA0XG5cdFx0cy50eXBlID0gb3B0aW9ucy5tZXRob2QgfHwgb3B0aW9ucy50eXBlIHx8IHMubWV0aG9kIHx8IHMudHlwZTtcblxuXHRcdC8vIEV4dHJhY3QgZGF0YVR5cGVzIGxpc3Rcblx0XHRzLmRhdGFUeXBlcyA9ICggcy5kYXRhVHlwZSB8fCBcIipcIiApLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblxuXHRcdC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB0aGUgb3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgb3JpZ2luLlxuXHRcdGlmICggcy5jcm9zc0RvbWFpbiA9PSBudWxsICkge1xuXHRcdFx0dXJsQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEsIEVkZ2UgMTIgLSAxNVxuXHRcdFx0Ly8gSUUgdGhyb3dzIGV4Y2VwdGlvbiBvbiBhY2Nlc3NpbmcgdGhlIGhyZWYgcHJvcGVydHkgaWYgdXJsIGlzIG1hbGZvcm1lZCxcblx0XHRcdC8vIGUuZy4gaHR0cDovL2V4YW1wbGUuY29tOjgweC9cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHVybEFuY2hvci5ocmVmID0gcy51cmw7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEgb25seVxuXHRcdFx0XHQvLyBBbmNob3IncyBob3N0IHByb3BlcnR5IGlzbid0IGNvcnJlY3RseSBzZXQgd2hlbiBzLnVybCBpcyByZWxhdGl2ZVxuXHRcdFx0XHR1cmxBbmNob3IuaHJlZiA9IHVybEFuY2hvci5ocmVmO1xuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gb3JpZ2luQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgb3JpZ2luQW5jaG9yLmhvc3QgIT09XG5cdFx0XHRcdFx0dXJsQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgdXJsQW5jaG9yLmhvc3Q7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciBwYXJzaW5nIHRoZSBVUkwsIGFzc3VtZSBpdCBpcyBjcm9zc0RvbWFpbixcblx0XHRcdFx0Ly8gaXQgY2FuIGJlIHJlamVjdGVkIGJ5IHRoZSB0cmFuc3BvcnQgaWYgaXQgaXMgaW52YWxpZFxuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmdcblx0XHRpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRzLmRhdGEgPSBqUXVlcnkucGFyYW0oIHMuZGF0YSwgcy50cmFkaXRpb25hbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHByZWZpbHRlcnNcblx0XHRpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlXG5cdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0fVxuXG5cdFx0Ly8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG9cblx0XHQvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAoIzE1MTE4KVxuXHRcdGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsO1xuXG5cdFx0Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0c1xuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0YXJ0XCIgKTtcblx0XHR9XG5cblx0XHQvLyBVcHBlcmNhc2UgdGhlIHR5cGVcblx0XHRzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTtcblxuXHRcdC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50XG5cdFx0cy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7XG5cblx0XHQvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2Vcblx0XHQvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb25cblx0XHQvLyBSZW1vdmUgaGFzaCB0byBzaW1wbGlmeSB1cmwgbWFuaXB1bGF0aW9uXG5cdFx0Y2FjaGVVUkwgPSBzLnVybC5yZXBsYWNlKCByaGFzaCwgXCJcIiApO1xuXG5cdFx0Ly8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnRcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBoYXNoIHNvIHdlIGNhbiBwdXQgaXQgYmFja1xuXHRcdFx0dW5jYWNoZWQgPSBzLnVybC5zbGljZSggY2FjaGVVUkwubGVuZ3RoICk7XG5cblx0XHRcdC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkLCBhcHBlbmQgZGF0YSB0byB1cmxcblx0XHRcdGlmICggcy5kYXRhICYmICggcy5wcm9jZXNzRGF0YSB8fCB0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICkgKSB7XG5cdFx0XHRcdGNhY2hlVVJMICs9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmRhdGE7XG5cblx0XHRcdFx0Ly8gIzk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeVxuXHRcdFx0XHRkZWxldGUgcy5kYXRhO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgb3IgdXBkYXRlIGFudGktY2FjaGUgcGFyYW0gaWYgbmVlZGVkXG5cdFx0XHRpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRjYWNoZVVSTCA9IGNhY2hlVVJMLnJlcGxhY2UoIHJhbnRpQ2FjaGUsIFwiJDFcIiApO1xuXHRcdFx0XHR1bmNhY2hlZCA9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBcIl89XCIgKyAoIG5vbmNlKysgKSArIHVuY2FjaGVkO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQdXQgaGFzaCBhbmQgYW50aS1jYWNoZSBvbiB0aGUgVVJMIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgKGdoLTE3MzIpXG5cdFx0XHRzLnVybCA9IGNhY2hlVVJMICsgdW5jYWNoZWQ7XG5cblx0XHQvLyBDaGFuZ2UgJyUyMCcgdG8gJysnIGlmIHRoaXMgaXMgZW5jb2RlZCBmb3JtIGJvZHkgY29udGVudCAoZ2gtMjY1OClcblx0XHR9IGVsc2UgaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJlxuXHRcdFx0KCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKS5pbmRleE9mKCBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiICkgPT09IDAgKSB7XG5cdFx0XHRzLmRhdGEgPSBzLmRhdGEucmVwbGFjZSggcjIwLCBcIitcIiApO1xuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTW9kaWZpZWQtU2luY2VcIiwgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Ob25lLU1hdGNoXCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50XG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5oYXNDb250ZW50ICYmIHMuY29udGVudFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiLCBzLmNvbnRlbnRUeXBlICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZVxuXHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXG5cdFx0XHRcIkFjY2VwdFwiLFxuXHRcdFx0cy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSA/XG5cdFx0XHRcdHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdICtcblx0XHRcdFx0XHQoIHMuZGF0YVR5cGVzWyAwIF0gIT09IFwiKlwiID8gXCIsIFwiICsgYWxsVHlwZXMgKyBcIjsgcT0wLjAxXCIgOiBcIlwiICkgOlxuXHRcdFx0XHRzLmFjY2VwdHNbIFwiKlwiIF1cblx0XHQpO1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGhlYWRlcnMgb3B0aW9uXG5cdFx0Zm9yICggaSBpbiBzLmhlYWRlcnMgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApO1xuXHRcdH1cblxuXHRcdC8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0eXBlcyBhbmQgZWFybHkgYWJvcnRcblx0XHRpZiAoIHMuYmVmb3JlU2VuZCAmJlxuXHRcdFx0KCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBjb21wbGV0ZWQgKSApIHtcblxuXHRcdFx0Ly8gQWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0dXJuXG5cdFx0XHRyZXR1cm4ganFYSFIuYWJvcnQoKTtcblx0XHR9XG5cblx0XHQvLyBBYm9ydGluZyBpcyBubyBsb25nZXIgYSBjYW5jZWxsYXRpb25cblx0XHRzdHJBYm9ydCA9IFwiYWJvcnRcIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tzIG9uIGRlZmVycmVkc1xuXHRcdGNvbXBsZXRlRGVmZXJyZWQuYWRkKCBzLmNvbXBsZXRlICk7XG5cdFx0anFYSFIuZG9uZSggcy5zdWNjZXNzICk7XG5cdFx0anFYSFIuZmFpbCggcy5lcnJvciApO1xuXG5cdFx0Ly8gR2V0IHRyYW5zcG9ydFxuXHRcdHRyYW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgbm8gdHJhbnNwb3J0LCB3ZSBhdXRvLWFib3J0XG5cdFx0aWYgKCAhdHJhbnNwb3J0ICkge1xuXHRcdFx0ZG9uZSggLTEsIFwiTm8gVHJhbnNwb3J0XCIgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IDE7XG5cblx0XHRcdC8vIFNlbmQgZ2xvYmFsIGV2ZW50XG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4U2VuZFwiLCBbIGpxWEhSLCBzIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYWpheFNlbmQsIHN0b3AgdGhlcmVcblx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRpbWVvdXRcblx0XHRcdGlmICggcy5hc3luYyAmJiBzLnRpbWVvdXQgPiAwICkge1xuXHRcdFx0XHR0aW1lb3V0VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0anFYSFIuYWJvcnQoIFwidGltZW91dFwiICk7XG5cdFx0XHRcdH0sIHMudGltZW91dCApO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb21wbGV0ZWQgPSBmYWxzZTtcblx0XHRcdFx0dHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBSZXRocm93IHBvc3QtY29tcGxldGlvbiBleGNlcHRpb25zXG5cdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBQcm9wYWdhdGUgb3RoZXJzIGFzIHJlc3VsdHNcblx0XHRcdFx0ZG9uZSggLTEsIGUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWxsYmFjayBmb3Igd2hlbiBldmVyeXRoaW5nIGlzIGRvbmVcblx0XHRmdW5jdGlvbiBkb25lKCBzdGF0dXMsIG5hdGl2ZVN0YXR1c1RleHQsIHJlc3BvbnNlcywgaGVhZGVycyApIHtcblx0XHRcdHZhciBpc1N1Y2Nlc3MsIHN1Y2Nlc3MsIGVycm9yLCByZXNwb25zZSwgbW9kaWZpZWQsXG5cdFx0XHRcdHN0YXR1c1RleHQgPSBuYXRpdmVTdGF0dXNUZXh0O1xuXG5cdFx0XHQvLyBJZ25vcmUgcmVwZWF0IGludm9jYXRpb25zXG5cdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb21wbGV0ZWQgPSB0cnVlO1xuXG5cdFx0XHQvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0c1xuXHRcdFx0aWYgKCB0aW1lb3V0VGltZXIgKSB7XG5cdFx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXRUaW1lciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBEZXJlZmVyZW5jZSB0cmFuc3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29sbGVjdGlvblxuXHRcdFx0Ly8gKG5vIG1hdHRlciBob3cgbG9uZyB0aGUganFYSFIgb2JqZWN0IHdpbGwgYmUgdXNlZClcblx0XHRcdHRyYW5zcG9ydCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0Ly8gQ2FjaGUgcmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTZXQgcmVhZHlTdGF0ZVxuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IHN0YXR1cyA+IDAgPyA0IDogMDtcblxuXHRcdFx0Ly8gRGV0ZXJtaW5lIGlmIHN1Y2Nlc3NmdWxcblx0XHRcdGlzU3VjY2VzcyA9IHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwIHx8IHN0YXR1cyA9PT0gMzA0O1xuXG5cdFx0XHQvLyBHZXQgcmVzcG9uc2UgZGF0YVxuXHRcdFx0aWYgKCByZXNwb25zZXMgKSB7XG5cdFx0XHRcdHJlc3BvbnNlID0gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb252ZXJ0IG5vIG1hdHRlciB3aGF0ICh0aGF0IHdheSByZXNwb25zZVhYWCBmaWVsZHMgYXJlIGFsd2F5cyBzZXQpXG5cdFx0XHRyZXNwb25zZSA9IGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApO1xuXG5cdFx0XHQvLyBJZiBzdWNjZXNzZnVsLCBoYW5kbGUgdHlwZSBjaGFpbmluZ1xuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cblx0XHRcdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cblx0XHRcdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0bW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJMYXN0LU1vZGlmaWVkXCIgKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcImV0YWdcIiApO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGlmIG5vIGNvbnRlbnRcblx0XHRcdFx0aWYgKCBzdGF0dXMgPT09IDIwNCB8fCBzLnR5cGUgPT09IFwiSEVBRFwiICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vY29udGVudFwiO1xuXG5cdFx0XHRcdC8vIGlmIG5vdCBtb2RpZmllZFxuXHRcdFx0XHR9IGVsc2UgaWYgKCBzdGF0dXMgPT09IDMwNCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub3Rtb2RpZmllZFwiO1xuXG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgZGF0YSwgbGV0J3MgY29udmVydCBpdFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0ZTtcblx0XHRcdFx0XHRzdWNjZXNzID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRlcnJvciA9IHJlc3BvbnNlLmVycm9yO1xuXHRcdFx0XHRcdGlzU3VjY2VzcyA9ICFlcnJvcjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBFeHRyYWN0IGVycm9yIGZyb20gc3RhdHVzVGV4dCBhbmQgbm9ybWFsaXplIGZvciBub24tYWJvcnRzXG5cdFx0XHRcdGVycm9yID0gc3RhdHVzVGV4dDtcblx0XHRcdFx0aWYgKCBzdGF0dXMgfHwgIXN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwiZXJyb3JcIjtcblx0XHRcdFx0XHRpZiAoIHN0YXR1cyA8IDAgKSB7XG5cdFx0XHRcdFx0XHRzdGF0dXMgPSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgZGF0YSBmb3IgdGhlIGZha2UgeGhyIG9iamVjdFxuXHRcdFx0anFYSFIuc3RhdHVzID0gc3RhdHVzO1xuXHRcdFx0anFYSFIuc3RhdHVzVGV4dCA9ICggbmF0aXZlU3RhdHVzVGV4dCB8fCBzdGF0dXNUZXh0ICkgKyBcIlwiO1xuXG5cdFx0XHQvLyBTdWNjZXNzL0Vycm9yXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQsIGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdGpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTtcblx0XHRcdHN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBpc1N1Y2Nlc3MgPyBcImFqYXhTdWNjZXNzXCIgOiBcImFqYXhFcnJvclwiLFxuXHRcdFx0XHRcdFsganFYSFIsIHMsIGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbXBsZXRlXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSApO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4Q29tcGxldGVcIiwgWyBqcVhIUiwgcyBdICk7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBnbG9iYWwgQUpBWCBjb3VudGVyXG5cdFx0XHRcdGlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0b3BcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpxWEhSO1xuXHR9LFxuXG5cdGdldEpTT046IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCBcImpzb25cIiApO1xuXHR9LFxuXG5cdGdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgXCJzY3JpcHRcIiApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiZ2V0XCIsIFwicG9zdFwiIF0sIGZ1bmN0aW9uKCBpLCBtZXRob2QgKSB7XG5cdGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHtcblxuXHRcdC8vIFNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBkYXRhICkgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBjYWxsYmFjaztcblx0XHRcdGNhbGxiYWNrID0gZGF0YTtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gVGhlIHVybCBjYW4gYmUgYW4gb3B0aW9ucyBvYmplY3QgKHdoaWNoIHRoZW4gbXVzdCBoYXZlIC51cmwpXG5cdFx0cmV0dXJuIGpRdWVyeS5hamF4KCBqUXVlcnkuZXh0ZW5kKCB7XG5cdFx0XHR1cmw6IHVybCxcblx0XHRcdHR5cGU6IG1ldGhvZCxcblx0XHRcdGRhdGFUeXBlOiB0eXBlLFxuXHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdHN1Y2Nlc3M6IGNhbGxiYWNrXG5cdFx0fSwgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHVybCApICYmIHVybCApICk7XG5cdH07XG59ICk7XG5cblxualF1ZXJ5Ll9ldmFsVXJsID0gZnVuY3Rpb24oIHVybCApIHtcblx0cmV0dXJuIGpRdWVyeS5hamF4KCB7XG5cdFx0dXJsOiB1cmwsXG5cblx0XHQvLyBNYWtlIHRoaXMgZXhwbGljaXQsIHNpbmNlIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgdGhyb3VnaCBhamF4U2V0dXAgKCMxMTI2NClcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGRhdGFUeXBlOiBcInNjcmlwdFwiLFxuXHRcdGNhY2hlOiB0cnVlLFxuXHRcdGFzeW5jOiBmYWxzZSxcblx0XHRnbG9iYWw6IGZhbHNlLFxuXHRcdFwidGhyb3dzXCI6IHRydWVcblx0fSApO1xufTtcblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciB3cmFwO1xuXG5cdFx0aWYgKCB0aGlzWyAwIF0gKSB7XG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdFx0aHRtbCA9IGh0bWwuY2FsbCggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kXG5cdFx0XHR3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTtcblxuXHRcdFx0aWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0d3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBlbGVtID0gdGhpcztcblxuXHRcdFx0XHR3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZWxlbTtcblx0XHRcdH0gKS5hcHBlbmQoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR3cmFwSW5uZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKCB0aGlzLCBpICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBzZWxmID0galF1ZXJ5KCB0aGlzICksXG5cdFx0XHRcdGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpO1xuXG5cdFx0XHRpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHtcblx0XHRcdFx0Y29udGVudHMud3JhcEFsbCggaHRtbCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZWxmLmFwcGVuZCggaHRtbCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHR3cmFwOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHR2YXIgaHRtbElzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCBodG1sICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGh0bWxJc0Z1bmN0aW9uID8gaHRtbC5jYWxsKCB0aGlzLCBpICkgOiBodG1sICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdHVud3JhcDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHRoaXMucGFyZW50KCBzZWxlY3RvciApLm5vdCggXCJib2R5XCIgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTtcblx0XHR9ICk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gIWpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSggZWxlbSApO1xufTtcbmpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gISEoIGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApO1xufTtcblxuXG5cblxualF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSBmdW5jdGlvbigpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuXHR9IGNhdGNoICggZSApIHt9XG59O1xuXG52YXIgeGhyU3VjY2Vzc1N0YXR1cyA9IHtcblxuXHRcdC8vIEZpbGUgcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgY29kZSAwLCBhc3N1bWUgMjAwXG5cdFx0MDogMjAwLFxuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHQvLyAjMTQ1MDogc29tZXRpbWVzIElFIHJldHVybnMgMTIyMyB3aGVuIGl0IHNob3VsZCBiZSAyMDRcblx0XHQxMjIzOiAyMDRcblx0fSxcblx0eGhyU3VwcG9ydGVkID0galF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTtcblxuc3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCBcIndpdGhDcmVkZW50aWFsc1wiIGluIHhoclN1cHBvcnRlZCApO1xuc3VwcG9ydC5hamF4ID0geGhyU3VwcG9ydGVkID0gISF4aHJTdXBwb3J0ZWQ7XG5cbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0dmFyIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrO1xuXG5cdC8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3Rcblx0aWYgKCBzdXBwb3J0LmNvcnMgfHwgeGhyU3VwcG9ydGVkICYmICFvcHRpb25zLmNyb3NzRG9tYWluICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHZhciBpLFxuXHRcdFx0XHRcdHhociA9IG9wdGlvbnMueGhyKCk7XG5cblx0XHRcdFx0eGhyLm9wZW4oXG5cdFx0XHRcdFx0b3B0aW9ucy50eXBlLFxuXHRcdFx0XHRcdG9wdGlvbnMudXJsLFxuXHRcdFx0XHRcdG9wdGlvbnMuYXN5bmMsXG5cdFx0XHRcdFx0b3B0aW9ucy51c2VybmFtZSxcblx0XHRcdFx0XHRvcHRpb25zLnBhc3N3b3JkXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgY3VzdG9tIGZpZWxkcyBpZiBwcm92aWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdGZvciAoIGkgaW4gb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0XHR4aHJbIGkgXSA9IG9wdGlvbnMueGhyRmllbGRzWyBpIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7XG5cdFx0XHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyXG5cdFx0XHRcdC8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmVcblx0XHRcdFx0Ly8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS5cblx0XHRcdFx0Ly8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVyLXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1c2luZyBhamF4U2V0dXApXG5cdFx0XHRcdC8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLlxuXHRcdFx0XHRpZiAoICFvcHRpb25zLmNyb3NzRG9tYWluICYmICFoZWFkZXJzWyBcIlgtUmVxdWVzdGVkLVdpdGhcIiBdICkge1xuXHRcdFx0XHRcdGhlYWRlcnNbIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiIF0gPSBcIlhNTEh0dHBSZXF1ZXN0XCI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTZXQgaGVhZGVyc1xuXHRcdFx0XHRmb3IgKCBpIGluIGhlYWRlcnMgKSB7XG5cdFx0XHRcdFx0eGhyLnNldFJlcXVlc3RIZWFkZXIoIGksIGhlYWRlcnNbIGkgXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQ2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRjYWxsYmFjayA9IGVycm9yQ2FsbGJhY2sgPSB4aHIub25sb2FkID1cblx0XHRcdFx0XHRcdFx0XHR4aHIub25lcnJvciA9IHhoci5vbmFib3J0ID0geGhyLm9udGltZW91dCA9XG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiYWJvcnRcIiApIHtcblx0XHRcdFx0XHRcdFx0XHR4aHIuYWJvcnQoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggdHlwZSA9PT0gXCJlcnJvclwiICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHRcdFx0XHQvLyBPbiBhIG1hbnVhbCBuYXRpdmUgYWJvcnQsIElFOSB0aHJvd3Ncblx0XHRcdFx0XHRcdFx0XHQvLyBlcnJvcnMgb24gYW55IHByb3BlcnR5IGFjY2VzcyB0aGF0IGlzIG5vdCByZWFkeVN0YXRlXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlb2YgeGhyLnN0YXR1cyAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKCAwLCBcImVycm9yXCIgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRmlsZTogcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgMDsgc2VlICM4NjA1LCAjMTQyMDdcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHRcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyU3VjY2Vzc1N0YXR1c1sgeGhyLnN0YXR1cyBdIHx8IHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dCxcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIElFOSBoYXMgbm8gWEhSMiBidXQgdGhyb3dzIG9uIGJpbmFyeSAodHJhYy0xMTQyNilcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEZvciBYSFIyIG5vbi10ZXh0LCBsZXQgdGhlIGNhbGxlciBoYW5kbGUgaXQgKGdoLTI0OTgpXG5cdFx0XHRcdFx0XHRcdFx0XHQoIHhoci5yZXNwb25zZVR5cGUgfHwgXCJ0ZXh0XCIgKSAhPT0gXCJ0ZXh0XCIgIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCAhPT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgYmluYXJ5OiB4aHIucmVzcG9uc2UgfSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgdGV4dDogeGhyLnJlc3BvbnNlVGV4dCB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Ly8gTGlzdGVuIHRvIGV2ZW50c1xuXHRcdFx0XHR4aHIub25sb2FkID0gY2FsbGJhY2soKTtcblx0XHRcdFx0ZXJyb3JDYWxsYmFjayA9IHhoci5vbmVycm9yID0geGhyLm9udGltZW91dCA9IGNhbGxiYWNrKCBcImVycm9yXCIgKTtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0XHRcdFx0Ly8gVXNlIG9ucmVhZHlzdGF0ZWNoYW5nZSB0byByZXBsYWNlIG9uYWJvcnRcblx0XHRcdFx0Ly8gdG8gaGFuZGxlIHVuY2F1Z2h0IGFib3J0c1xuXHRcdFx0XHRpZiAoIHhoci5vbmFib3J0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0eGhyLm9uYWJvcnQgPSBlcnJvckNhbGxiYWNrO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0Ly8gQ2hlY2sgcmVhZHlTdGF0ZSBiZWZvcmUgdGltZW91dCBhcyBpdCBjaGFuZ2VzXG5cdFx0XHRcdFx0XHRpZiAoIHhoci5yZWFkeVN0YXRlID09PSA0ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2FsbGVkIGZpcnN0LFxuXHRcdFx0XHRcdFx0XHQvLyBidXQgdGhhdCB3aWxsIG5vdCBoYW5kbGUgYSBuYXRpdmUgYWJvcnRcblx0XHRcdFx0XHRcdFx0Ly8gQWxzbywgc2F2ZSBlcnJvckNhbGxiYWNrIHRvIGEgdmFyaWFibGVcblx0XHRcdFx0XHRcdFx0Ly8gYXMgeGhyLm9uZXJyb3IgY2Fubm90IGJlIGFjY2Vzc2VkXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3JDYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIGFib3J0IGNhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gY2FsbGJhY2soIFwiYWJvcnRcIiApO1xuXG5cdFx0XHRcdHRyeSB7XG5cblx0XHRcdFx0XHQvLyBEbyBzZW5kIHRoZSByZXF1ZXN0ICh0aGlzIG1heSByYWlzZSBhbiBleGNlcHRpb24pXG5cdFx0XHRcdFx0eGhyLnNlbmQoIG9wdGlvbnMuaGFzQ29udGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCApO1xuXHRcdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHRcdC8vICMxNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQgYXMgYW4gZXJyb3IgeWV0XG5cdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gUHJldmVudCBhdXRvLWV4ZWN1dGlvbiBvZiBzY3JpcHRzIHdoZW4gbm8gZXhwbGljaXQgZGF0YVR5cGUgd2FzIHByb3ZpZGVkIChTZWUgZ2gtMjQzMilcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMuY29udGVudHMuc2NyaXB0ID0gZmFsc2U7XG5cdH1cbn0gKTtcblxuLy8gSW5zdGFsbCBzY3JpcHQgZGF0YVR5cGVcbmpRdWVyeS5hamF4U2V0dXAoIHtcblx0YWNjZXB0czoge1xuXHRcdHNjcmlwdDogXCJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIFwiICtcblx0XHRcdFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0XCJcblx0fSxcblx0Y29udGVudHM6IHtcblx0XHRzY3JpcHQ6IC9cXGIoPzpqYXZhfGVjbWEpc2NyaXB0XFxiL1xuXHR9LFxuXHRjb252ZXJ0ZXJzOiB7XG5cdFx0XCJ0ZXh0IHNjcmlwdFwiOiBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdGpRdWVyeS5nbG9iYWxFdmFsKCB0ZXh0ICk7XG5cdFx0XHRyZXR1cm4gdGV4dDtcblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lhbCBjYXNlIGFuZCBjcm9zc0RvbWFpblxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXHRpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRzLmNhY2hlID0gZmFsc2U7XG5cdH1cblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMudHlwZSA9IFwiR0VUXCI7XG5cdH1cbn0gKTtcblxuLy8gQmluZCBzY3JpcHQgdGFnIGhhY2sgdHJhbnNwb3J0XG5qUXVlcnkuYWpheFRyYW5zcG9ydCggXCJzY3JpcHRcIiwgZnVuY3Rpb24oIHMgKSB7XG5cblx0Ly8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiByZXF1ZXN0c1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0dmFyIHNjcmlwdCwgY2FsbGJhY2s7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBfLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0c2NyaXB0ID0galF1ZXJ5KCBcIjxzY3JpcHQ+XCIgKS5wcm9wKCB7XG5cdFx0XHRcdFx0Y2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LFxuXHRcdFx0XHRcdHNyYzogcy51cmxcblx0XHRcdFx0fSApLm9uKFxuXHRcdFx0XHRcdFwibG9hZCBlcnJvclwiLFxuXHRcdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHtcblx0XHRcdFx0XHRcdHNjcmlwdC5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdGNhbGxiYWNrID0gbnVsbDtcblx0XHRcdFx0XHRcdGlmICggZXZ0ICkge1xuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggZXZ0LnR5cGUgPT09IFwiZXJyb3JcIiA/IDQwNCA6IDIwMCwgZXZ0LnR5cGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gVXNlIG5hdGl2ZSBET00gbWFuaXB1bGF0aW9uIHRvIGF2b2lkIG91ciBkb21NYW5pcCBBSkFYIHRyaWNrZXJ5XG5cdFx0XHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7XG5cdFx0XHR9LFxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBvbGRDYWxsYmFja3MgPSBbXSxcblx0cmpzb25wID0gLyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztcblxuLy8gRGVmYXVsdCBqc29ucCBzZXR0aW5nc1xualF1ZXJ5LmFqYXhTZXR1cCgge1xuXHRqc29ucDogXCJjYWxsYmFja1wiLFxuXHRqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArIFwiX1wiICsgKCBub25jZSsrICkgKTtcblx0XHR0aGlzWyBjYWxsYmFjayBdID0gdHJ1ZTtcblx0XHRyZXR1cm4gY2FsbGJhY2s7XG5cdH1cbn0gKTtcblxuLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25wIHJlcXVlc3RzXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJqc29uIGpzb25wXCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHtcblxuXHR2YXIgY2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9uc2VDb250YWluZXIsXG5cdFx0anNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID9cblx0XHRcdFwidXJsXCIgOlxuXHRcdFx0dHlwZW9mIHMuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQoIHMuY29udGVudFR5cGUgfHwgXCJcIiApXG5cdFx0XHRcdFx0LmluZGV4T2YoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKSA9PT0gMCAmJlxuXHRcdFx0XHRyanNvbnAudGVzdCggcy5kYXRhICkgJiYgXCJkYXRhXCJcblx0XHQpO1xuXG5cdC8vIEhhbmRsZSBpZmYgdGhlIGV4cGVjdGVkIGRhdGEgdHlwZSBpcyBcImpzb25wXCIgb3Igd2UgaGF2ZSBhIHBhcmFtZXRlciB0byBzZXRcblx0aWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sgMCBdID09PSBcImpzb25wXCIgKSB7XG5cblx0XHQvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0XG5cdFx0Y2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNrID0gaXNGdW5jdGlvbiggcy5qc29ucENhbGxiYWNrICkgP1xuXHRcdFx0cy5qc29ucENhbGxiYWNrKCkgOlxuXHRcdFx0cy5qc29ucENhbGxiYWNrO1xuXG5cdFx0Ly8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YVxuXHRcdGlmICgganNvblByb3AgKSB7XG5cdFx0XHRzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsIFwiJDFcIiArIGNhbGxiYWNrTmFtZSApO1xuXHRcdH0gZWxzZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkge1xuXHRcdFx0cy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuanNvbnAgKyBcIj1cIiArIGNhbGxiYWNrTmFtZTtcblx0XHR9XG5cblx0XHQvLyBVc2UgZGF0YSBjb252ZXJ0ZXIgdG8gcmV0cmlldmUganNvbiBhZnRlciBzY3JpcHQgZXhlY3V0aW9uXG5cdFx0cy5jb252ZXJ0ZXJzWyBcInNjcmlwdCBqc29uXCIgXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7XG5cdFx0XHRcdGpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgXCIgd2FzIG5vdCBjYWxsZWRcIiApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07XG5cdFx0fTtcblxuXHRcdC8vIEZvcmNlIGpzb24gZGF0YVR5cGVcblx0XHRzLmRhdGFUeXBlc1sgMCBdID0gXCJqc29uXCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrXG5cdFx0b3ZlcndyaXR0ZW4gPSB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdO1xuXHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gYXJndW1lbnRzO1xuXHRcdH07XG5cblx0XHQvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycylcblx0XHRqcVhIUi5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBJZiBwcmV2aW91cyB2YWx1ZSBkaWRuJ3QgZXhpc3QgLSByZW1vdmUgaXRcblx0XHRcdGlmICggb3ZlcndyaXR0ZW4gPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0alF1ZXJ5KCB3aW5kb3cgKS5yZW1vdmVQcm9wKCBjYWxsYmFja05hbWUgKTtcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHJlc3RvcmUgcHJlZXhpc3RpbmcgdmFsdWVcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBvdmVyd3JpdHRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2F2ZSBiYWNrIGFzIGZyZWVcblx0XHRcdGlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7XG5cblx0XHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgcmUtdXNpbmcgdGhlIG9wdGlvbnMgZG9lc24ndCBzY3JldyB0aGluZ3MgYXJvdW5kXG5cdFx0XHRcdHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjaztcblxuXHRcdFx0XHQvLyBTYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlXG5cdFx0XHRcdG9sZENhbGxiYWNrcy5wdXNoKCBjYWxsYmFja05hbWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2FsbCBpZiBpdCB3YXMgYSBmdW5jdGlvbiBhbmQgd2UgaGF2ZSBhIHJlc3BvbnNlXG5cdFx0XHRpZiAoIHJlc3BvbnNlQ29udGFpbmVyICYmIGlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7XG5cdFx0XHRcdG92ZXJ3cml0dGVuKCByZXNwb25zZUNvbnRhaW5lclsgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gb3ZlcndyaXR0ZW4gPSB1bmRlZmluZWQ7XG5cdFx0fSApO1xuXG5cdFx0Ly8gRGVsZWdhdGUgdG8gc2NyaXB0XG5cdFx0cmV0dXJuIFwic2NyaXB0XCI7XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gU3VwcG9ydDogU2FmYXJpIDggb25seVxuLy8gSW4gU2FmYXJpIDggZG9jdW1lbnRzIGNyZWF0ZWQgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudFxuLy8gY29sbGFwc2Ugc2libGluZyBmb3JtczogdGhlIHNlY29uZCBvbmUgYmVjb21lcyBhIGNoaWxkIG9mIHRoZSBmaXJzdCBvbmUuXG4vLyBCZWNhdXNlIG9mIHRoYXQsIHRoaXMgc2VjdXJpdHkgbWVhc3VyZSBoYXMgdG8gYmUgZGlzYWJsZWQgaW4gU2FmYXJpIDguXG4vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzM3XG5zdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCA9ICggZnVuY3Rpb24oKSB7XG5cdHZhciBib2R5ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCBcIlwiICkuYm9keTtcblx0Ym9keS5pbm5lckhUTUwgPSBcIjxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+XCI7XG5cdHJldHVybiBib2R5LmNoaWxkTm9kZXMubGVuZ3RoID09PSAyO1xufSApKCk7XG5cblxuLy8gQXJndW1lbnQgXCJkYXRhXCIgc2hvdWxkIGJlIHN0cmluZyBvZiBodG1sXG4vLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhlIGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsXG4vLyBkZWZhdWx0cyB0byBkb2N1bWVudFxuLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZ1xualF1ZXJ5LnBhcnNlSFRNTCA9IGZ1bmN0aW9uKCBkYXRhLCBjb250ZXh0LCBrZWVwU2NyaXB0cyApIHtcblx0aWYgKCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gW107XG5cdH1cblx0aWYgKCB0eXBlb2YgY29udGV4dCA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0a2VlcFNjcmlwdHMgPSBjb250ZXh0O1xuXHRcdGNvbnRleHQgPSBmYWxzZTtcblx0fVxuXG5cdHZhciBiYXNlLCBwYXJzZWQsIHNjcmlwdHM7XG5cblx0aWYgKCAhY29udGV4dCApIHtcblxuXHRcdC8vIFN0b3Agc2NyaXB0cyBvciBpbmxpbmUgZXZlbnQgaGFuZGxlcnMgZnJvbSBiZWluZyBleGVjdXRlZCBpbW1lZGlhdGVseVxuXHRcdC8vIGJ5IHVzaW5nIGRvY3VtZW50LmltcGxlbWVudGF0aW9uXG5cdFx0aWYgKCBzdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCApIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIFwiXCIgKTtcblxuXHRcdFx0Ly8gU2V0IHRoZSBiYXNlIGhyZWYgZm9yIHRoZSBjcmVhdGVkIGRvY3VtZW50XG5cdFx0XHQvLyBzbyBhbnkgcGFyc2VkIGVsZW1lbnRzIHdpdGggVVJMc1xuXHRcdFx0Ly8gYXJlIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIFVSTCAoZ2gtMjk2NSlcblx0XHRcdGJhc2UgPSBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiYmFzZVwiICk7XG5cdFx0XHRiYXNlLmhyZWYgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmO1xuXHRcdFx0Y29udGV4dC5oZWFkLmFwcGVuZENoaWxkKCBiYXNlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudDtcblx0XHR9XG5cdH1cblxuXHRwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKTtcblx0c2NyaXB0cyA9ICFrZWVwU2NyaXB0cyAmJiBbXTtcblxuXHQvLyBTaW5nbGUgdGFnXG5cdGlmICggcGFyc2VkICkge1xuXHRcdHJldHVybiBbIGNvbnRleHQuY3JlYXRlRWxlbWVudCggcGFyc2VkWyAxIF0gKSBdO1xuXHR9XG5cblx0cGFyc2VkID0gYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMgKTtcblxuXHRpZiAoIHNjcmlwdHMgJiYgc2NyaXB0cy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgcGFyc2VkLmNoaWxkTm9kZXMgKTtcbn07XG5cblxuLyoqXG4gKiBMb2FkIGEgdXJsIGludG8gYSBwYWdlXG4gKi9cbmpRdWVyeS5mbi5sb2FkID0gZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHtcblx0dmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25zZSxcblx0XHRzZWxmID0gdGhpcyxcblx0XHRvZmYgPSB1cmwuaW5kZXhPZiggXCIgXCIgKTtcblxuXHRpZiAoIG9mZiA+IC0xICkge1xuXHRcdHNlbGVjdG9yID0gc3RyaXBBbmRDb2xsYXBzZSggdXJsLnNsaWNlKCBvZmYgKSApO1xuXHRcdHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7XG5cdH1cblxuXHQvLyBJZiBpdCdzIGEgZnVuY3Rpb25cblx0aWYgKCBpc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHtcblxuXHRcdC8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrXG5cdFx0Y2FsbGJhY2sgPSBwYXJhbXM7XG5cdFx0cGFyYW1zID0gdW5kZWZpbmVkO1xuXG5cdC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmdcblx0fSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0dHlwZSA9IFwiUE9TVFwiO1xuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVlc3Rcblx0aWYgKCBzZWxmLmxlbmd0aCA+IDAgKSB7XG5cdFx0alF1ZXJ5LmFqYXgoIHtcblx0XHRcdHVybDogdXJsLFxuXG5cdFx0XHQvLyBJZiBcInR5cGVcIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gXCJHRVRcIiBtZXRob2Qgd2lsbCBiZSB1c2VkLlxuXHRcdFx0Ly8gTWFrZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGV4cGxpY2l0IHNpbmNlXG5cdFx0XHQvLyB1c2VyIGNhbiBvdmVycmlkZSBpdCB0aHJvdWdoIGFqYXhTZXR1cCBtZXRob2Rcblx0XHRcdHR5cGU6IHR5cGUgfHwgXCJHRVRcIixcblx0XHRcdGRhdGFUeXBlOiBcImh0bWxcIixcblx0XHRcdGRhdGE6IHBhcmFtc1xuXHRcdH0gKS5kb25lKCBmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkge1xuXG5cdFx0XHQvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2tcblx0XHRcdHJlc3BvbnNlID0gYXJndW1lbnRzO1xuXG5cdFx0XHRzZWxmLmh0bWwoIHNlbGVjdG9yID9cblxuXHRcdFx0XHQvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXZcblx0XHRcdFx0Ly8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzXG5cdFx0XHRcdGpRdWVyeSggXCI8ZGl2PlwiICkuYXBwZW5kKCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0XG5cdFx0XHRcdHJlc3BvbnNlVGV4dCApO1xuXG5cdFx0Ly8gSWYgdGhlIHJlcXVlc3Qgc3VjY2VlZHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyBcImRhdGFcIiwgXCJzdGF0dXNcIiwgXCJqcVhIUlwiXG5cdFx0Ly8gYnV0IHRoZXkgYXJlIGlnbm9yZWQgYmVjYXVzZSByZXNwb25zZSB3YXMgc2V0IGFib3ZlLlxuXHRcdC8vIElmIGl0IGZhaWxzLCB0aGlzIGZ1bmN0aW9uIGdldHMgXCJqcVhIUlwiLCBcInN0YXR1c1wiLCBcImVycm9yXCJcblx0XHR9ICkuYWx3YXlzKCBjYWxsYmFjayAmJiBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHtcblx0XHRcdHNlbGYuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGNhbGxiYWNrLmFwcGx5KCB0aGlzLCByZXNwb25zZSB8fCBbIGpxWEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5cblxuXG4vLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50c1xualF1ZXJ5LmVhY2goIFtcblx0XCJhamF4U3RhcnRcIixcblx0XCJhamF4U3RvcFwiLFxuXHRcImFqYXhDb21wbGV0ZVwiLFxuXHRcImFqYXhFcnJvclwiLFxuXHRcImFqYXhTdWNjZXNzXCIsXG5cdFwiYWpheFNlbmRcIlxuXSwgZnVuY3Rpb24oIGksIHR5cGUgKSB7XG5cdGpRdWVyeS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApO1xuXHR9O1xufSApO1xuXG5cblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmFuaW1hdGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiBqUXVlcnkuZ3JlcCggalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiBlbGVtID09PSBmbi5lbGVtO1xuXHR9ICkubGVuZ3RoO1xufTtcblxuXG5cblxualF1ZXJ5Lm9mZnNldCA9IHtcblx0c2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHtcblx0XHR2YXIgY3VyUG9zaXRpb24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xlZnQsIGNhbGN1bGF0ZVBvc2l0aW9uLFxuXHRcdFx0cG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSxcblx0XHRcdGN1ckVsZW0gPSBqUXVlcnkoIGVsZW0gKSxcblx0XHRcdHByb3BzID0ge307XG5cblx0XHQvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtXG5cdFx0aWYgKCBwb3NpdGlvbiA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG5cdFx0fVxuXG5cdFx0Y3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTtcblx0XHRjdXJDU1NUb3AgPSBqUXVlcnkuY3NzKCBlbGVtLCBcInRvcFwiICk7XG5cdFx0Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwibGVmdFwiICk7XG5cdFx0Y2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSBcImFic29sdXRlXCIgfHwgcG9zaXRpb24gPT09IFwiZml4ZWRcIiApICYmXG5cdFx0XHQoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5pbmRleE9mKCBcImF1dG9cIiApID4gLTE7XG5cblx0XHQvLyBOZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlclxuXHRcdC8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZFxuXHRcdGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7XG5cdFx0XHRjdXJQb3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTtcblx0XHRcdGN1clRvcCA9IGN1clBvc2l0aW9uLnRvcDtcblx0XHRcdGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7XG5cdFx0XHRjdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7XG5cdFx0fVxuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7XG5cblx0XHRcdC8vIFVzZSBqUXVlcnkuZXh0ZW5kIGhlcmUgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIGNvb3JkaW5hdGVzIGFyZ3VtZW50IChnaC0xODQ4KVxuXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgalF1ZXJ5LmV4dGVuZCgge30sIGN1ck9mZnNldCApICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3AgKSArIGN1clRvcDtcblx0XHR9XG5cdFx0aWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0O1xuXHRcdH1cblxuXHRcdGlmICggXCJ1c2luZ1wiIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyRWxlbS5jc3MoIHByb3BzICk7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0Ly8gb2Zmc2V0KCkgcmVsYXRlcyBhbiBlbGVtZW50J3MgYm9yZGVyIGJveCB0byB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9mZnNldDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBQcmVzZXJ2ZSBjaGFpbmluZyBmb3Igc2V0dGVyXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHRoaXMgOlxuXHRcdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRcdGpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBpICk7XG5cdFx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHR2YXIgcmVjdCwgd2luLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXTtcblxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIHplcm9zIGZvciBkaXNjb25uZWN0ZWQgYW5kIGhpZGRlbiAoZGlzcGxheTogbm9uZSkgZWxlbWVudHMgKGdoLTIzMTApXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYVxuXHRcdC8vIGRpc2Nvbm5lY3RlZCBub2RlIGluIElFIHRocm93cyBhbiBlcnJvclxuXHRcdGlmICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblx0XHR9XG5cblx0XHQvLyBHZXQgZG9jdW1lbnQtcmVsYXRpdmUgcG9zaXRpb24gYnkgYWRkaW5nIHZpZXdwb3J0IHNjcm9sbCB0byB2aWV3cG9ydC1yZWxhdGl2ZSBnQkNSXG5cdFx0cmVjdCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0d2luID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IHJlY3QudG9wICsgd2luLnBhZ2VZT2Zmc2V0LFxuXHRcdFx0bGVmdDogcmVjdC5sZWZ0ICsgd2luLnBhZ2VYT2Zmc2V0XG5cdFx0fTtcblx0fSxcblxuXHQvLyBwb3NpdGlvbigpIHJlbGF0ZXMgYW4gZWxlbWVudCdzIG1hcmdpbiBib3ggdG8gaXRzIG9mZnNldCBwYXJlbnQncyBwYWRkaW5nIGJveFxuXHQvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBiZWhhdmlvciBvZiBDU1MgYWJzb2x1dGUgcG9zaXRpb25pbmdcblx0cG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggIXRoaXNbIDAgXSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsIGRvYyxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRwYXJlbnRPZmZzZXQgPSB7IHRvcDogMCwgbGVmdDogMCB9O1xuXG5cdFx0Ly8gcG9zaXRpb246Zml4ZWQgZWxlbWVudHMgYXJlIG9mZnNldCBmcm9tIHRoZSB2aWV3cG9ydCwgd2hpY2ggaXRzZWxmIGFsd2F5cyBoYXMgemVybyBvZmZzZXRcblx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApID09PSBcImZpeGVkXCIgKSB7XG5cblx0XHRcdC8vIEFzc3VtZSBwb3NpdGlvbjpmaXhlZCBpbXBsaWVzIGF2YWlsYWJpbGl0eSBvZiBnZXRCb3VuZGluZ0NsaWVudFJlY3Rcblx0XHRcdG9mZnNldCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0b2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuXHRcdFx0Ly8gQWNjb3VudCBmb3IgdGhlICpyZWFsKiBvZmZzZXQgcGFyZW50LCB3aGljaCBjYW4gYmUgdGhlIGRvY3VtZW50IG9yIGl0cyByb290IGVsZW1lbnRcblx0XHRcdC8vIHdoZW4gYSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudCBpcyBpZGVudGlmaWVkXG5cdFx0XHRkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQ7XG5cdFx0XHRvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudCB8fCBkb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRcdFx0d2hpbGUgKCBvZmZzZXRQYXJlbnQgJiZcblx0XHRcdFx0KCBvZmZzZXRQYXJlbnQgPT09IGRvYy5ib2R5IHx8IG9mZnNldFBhcmVudCA9PT0gZG9jLmRvY3VtZW50RWxlbWVudCApICYmXG5cdFx0XHRcdGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSB7XG5cblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIG9mZnNldFBhcmVudCAmJiBvZmZzZXRQYXJlbnQgIT09IGVsZW0gJiYgb2Zmc2V0UGFyZW50Lm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIEluY29ycG9yYXRlIGJvcmRlcnMgaW50byBpdHMgb2Zmc2V0LCBzaW5jZSB0aGV5IGFyZSBvdXRzaWRlIGl0cyBjb250ZW50IG9yaWdpblxuXHRcdFx0XHRwYXJlbnRPZmZzZXQgPSBqUXVlcnkoIG9mZnNldFBhcmVudCApLm9mZnNldCgpO1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQudG9wICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJUb3BXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHRcdHBhcmVudE9mZnNldC5sZWZ0ICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJMZWZ0V2lkdGhcIiwgdHJ1ZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFN1YnRyYWN0IHBhcmVudCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnNcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBvZmZzZXQudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luVG9wXCIsIHRydWUgKSxcblx0XHRcdGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiwgdHJ1ZSApXG5cdFx0fTtcblx0fSxcblxuXHQvLyBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkb2N1bWVudEVsZW1lbnQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcblx0Ly8gMSkgRm9yIHRoZSBlbGVtZW50IGluc2lkZSB0aGUgaWZyYW1lIHdpdGhvdXQgb2Zmc2V0UGFyZW50LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVyblxuXHQvLyAgICBkb2N1bWVudEVsZW1lbnQgb2YgdGhlIHBhcmVudCB3aW5kb3dcblx0Ly8gMikgRm9yIHRoZSBoaWRkZW4gb3IgZGV0YWNoZWQgZWxlbWVudFxuXHQvLyAzKSBGb3IgYm9keSBvciBodG1sIGVsZW1lbnQsIGkuZS4gaW4gY2FzZSBvZiB0aGUgaHRtbCBub2RlIC0gaXQgd2lsbCByZXR1cm4gaXRzZWxmXG5cdC8vXG5cdC8vIGJ1dCB0aG9zZSBleGNlcHRpb25zIHdlcmUgbmV2ZXIgcHJlc2VudGVkIGFzIGEgcmVhbCBsaWZlIHVzZS1jYXNlc1xuXHQvLyBhbmQgbWlnaHQgYmUgY29uc2lkZXJlZCBhcyBtb3JlIHByZWZlcmFibGUgcmVzdWx0cy5cblx0Ly9cblx0Ly8gVGhpcyBsb2dpYywgaG93ZXZlciwgaXMgbm90IGd1YXJhbnRlZWQgYW5kIGNhbiBjaGFuZ2UgYXQgYW55IHBvaW50IGluIHRoZSBmdXR1cmVcblx0b2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50O1xuXG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0XHRvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50RWxlbWVudDtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiBcInBhZ2VYT2Zmc2V0XCIsIHNjcm9sbFRvcDogXCJwYWdlWU9mZnNldFwiIH0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7XG5cdHZhciB0b3AgPSBcInBhZ2VZT2Zmc2V0XCIgPT09IHByb3A7XG5cblx0alF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkge1xuXG5cdFx0XHQvLyBDb2FsZXNjZSBkb2N1bWVudHMgYW5kIHdpbmRvd3Ncblx0XHRcdHZhciB3aW47XG5cdFx0XHRpZiAoIGlzV2luZG93KCBlbGVtICkgKSB7XG5cdFx0XHRcdHdpbiA9IGVsZW07XG5cdFx0XHR9IGVsc2UgaWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR3aW4gPSBlbGVtLmRlZmF1bHRWaWV3O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB3aW4gKSB7XG5cdFx0XHRcdHdpbi5zY3JvbGxUbyhcblx0XHRcdFx0XHQhdG9wID8gdmFsIDogd2luLnBhZ2VYT2Zmc2V0LFxuXHRcdFx0XHRcdHRvcCA/IHZhbCA6IHdpbi5wYWdlWU9mZnNldFxuXHRcdFx0XHQpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtWyBtZXRob2QgXSA9IHZhbDtcblx0XHRcdH1cblx0XHR9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9O1xufSApO1xuXG4vLyBTdXBwb3J0OiBTYWZhcmkgPD03IC0gOS4xLCBDaHJvbWUgPD0zNyAtIDQ5XG4vLyBBZGQgdGhlIHRvcC9sZWZ0IGNzc0hvb2tzIHVzaW5nIGpRdWVyeS5mbi5wb3NpdGlvblxuLy8gV2Via2l0IGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MDg0XG4vLyBCbGluayBidWc6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU4OTM0N1xuLy8gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHBlcmNlbnQgd2hlbiBzcGVjaWZpZWQgZm9yIHRvcC9sZWZ0L2JvdHRvbS9yaWdodDtcbi8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUgZGVwZW5kIG9uIHRoZSBvZmZzZXQgbW9kdWxlLCBqdXN0IGNoZWNrIGZvciBpdCBoZXJlXG5qUXVlcnkuZWFjaCggWyBcInRvcFwiLCBcImxlZnRcIiBdLCBmdW5jdGlvbiggaSwgcHJvcCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbixcblx0XHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0XHRjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApO1xuXG5cdFx0XHRcdC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRhZ2UsIGZhbGxiYWNrIHRvIG9mZnNldFxuXHRcdFx0XHRyZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArIFwicHhcIiA6XG5cdFx0XHRcdFx0Y29tcHV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xufSApO1xuXG5cbi8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgSGVpZ2h0OiBcImhlaWdodFwiLCBXaWR0aDogXCJ3aWR0aFwiIH0sIGZ1bmN0aW9uKCBuYW1lLCB0eXBlICkge1xuXHRqUXVlcnkuZWFjaCggeyBwYWRkaW5nOiBcImlubmVyXCIgKyBuYW1lLCBjb250ZW50OiB0eXBlLCBcIlwiOiBcIm91dGVyXCIgKyBuYW1lIH0sXG5cdFx0ZnVuY3Rpb24oIGRlZmF1bHRFeHRyYSwgZnVuY05hbWUgKSB7XG5cblx0XHQvLyBNYXJnaW4gaXMgb25seSBmb3Igb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGhcblx0XHRqUXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHtcblx0XHRcdHZhciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVsdEV4dHJhIHx8IHR5cGVvZiBtYXJnaW4gIT09IFwiYm9vbGVhblwiICksXG5cdFx0XHRcdGV4dHJhID0gZGVmYXVsdEV4dHJhIHx8ICggbWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0cnVlID8gXCJtYXJnaW5cIiA6IFwiYm9yZGVyXCIgKTtcblxuXHRcdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkge1xuXHRcdFx0XHR2YXIgZG9jO1xuXG5cdFx0XHRcdGlmICggaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vICQoIHdpbmRvdyApLm91dGVyV2lkdGgvSGVpZ2h0IHJldHVybiB3L2ggaW5jbHVkaW5nIHNjcm9sbGJhcnMgKGdoLTE3MjkpXG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmNOYW1lLmluZGV4T2YoIFwib3V0ZXJcIiApID09PSAwID9cblx0XHRcdFx0XHRcdGVsZW1bIFwiaW5uZXJcIiArIG5hbWUgXSA6XG5cdFx0XHRcdFx0XHRlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgXCJjbGllbnRcIiArIG5hbWUgXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEdldCBkb2N1bWVudCB3aWR0aCBvciBoZWlnaHRcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdGRvYyA9IGVsZW0uZG9jdW1lbnRFbGVtZW50O1xuXG5cdFx0XHRcdFx0Ly8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLFxuXHRcdFx0XHRcdC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdFxuXHRcdFx0XHRcdHJldHVybiBNYXRoLm1heChcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJzY3JvbGxcIiArIG5hbWUgXSwgZG9jWyBcInNjcm9sbFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcIm9mZnNldFwiICsgbmFtZSBdLCBkb2NbIFwib2Zmc2V0XCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRkb2NbIFwiY2xpZW50XCIgKyBuYW1lIF1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXG5cdFx0XHRcdFx0Ly8gR2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcgcGFyc2VGbG9hdFxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOlxuXG5cdFx0XHRcdFx0Ly8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudFxuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwgdmFsdWUsIGV4dHJhICk7XG5cdFx0XHR9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJnaW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSApO1xuXHRcdH07XG5cdH0gKTtcbn0gKTtcblxuXG5qUXVlcnkuZWFjaCggKCBcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIFwiICtcblx0XCJtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBcIiArXG5cdFwiY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudVwiICkuc3BsaXQoIFwiIFwiICksXG5cdGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXG5cdC8vIEhhbmRsZSBldmVudCBiaW5kaW5nXG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMCA/XG5cdFx0XHR0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDpcblx0XHRcdHRoaXMudHJpZ2dlciggbmFtZSApO1xuXHR9O1xufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGhvdmVyOiBmdW5jdGlvbiggZm5PdmVyLCBmbk91dCApIHtcblx0XHRyZXR1cm4gdGhpcy5tb3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxlYXZlKCBmbk91dCB8fCBmbk92ZXIgKTtcblx0fVxufSApO1xuXG5cblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0YmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuYmluZDogZnVuY3Rpb24oIHR5cGVzLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApO1xuXHR9LFxuXG5cdGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHtcblxuXHRcdC8vICggbmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dIClcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/XG5cdFx0XHR0aGlzLm9mZiggc2VsZWN0b3IsIFwiKipcIiApIDpcblx0XHRcdHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgXCIqKlwiLCBmbiApO1xuXHR9XG59ICk7XG5cbi8vIEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5IGFwcGx5aW5nIGFueVxuLy8gYXJndW1lbnRzLlxuLy8galF1ZXJ5LnByb3h5IGlzIGRlcHJlY2F0ZWQgdG8gcHJvbW90ZSBzdGFuZGFyZHMgKHNwZWNpZmljYWxseSBGdW5jdGlvbiNiaW5kKVxuLy8gSG93ZXZlciwgaXQgaXMgbm90IHNsYXRlZCBmb3IgcmVtb3ZhbCBhbnkgdGltZSBzb29uXG5qUXVlcnkucHJveHkgPSBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7XG5cdHZhciB0bXAsIGFyZ3MsIHByb3h5O1xuXG5cdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0dG1wID0gZm5bIGNvbnRleHQgXTtcblx0XHRjb250ZXh0ID0gZm47XG5cdFx0Zm4gPSB0bXA7XG5cdH1cblxuXHQvLyBRdWljayBjaGVjayB0byBkZXRlcm1pbmUgaWYgdGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlY1xuXHQvLyB0aGlzIHRocm93cyBhIFR5cGVFcnJvciwgYnV0IHdlIHdpbGwganVzdCByZXR1cm4gdW5kZWZpbmVkLlxuXHRpZiAoICFpc0Z1bmN0aW9uKCBmbiApICkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBTaW11bGF0ZWQgYmluZFxuXHRhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICk7XG5cdHByb3h5ID0gZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7XG5cdH07XG5cblx0Ly8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkXG5cdHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrO1xuXG5cdHJldHVybiBwcm94eTtcbn07XG5cbmpRdWVyeS5ob2xkUmVhZHkgPSBmdW5jdGlvbiggaG9sZCApIHtcblx0aWYgKCBob2xkICkge1xuXHRcdGpRdWVyeS5yZWFkeVdhaXQrKztcblx0fSBlbHNlIHtcblx0XHRqUXVlcnkucmVhZHkoIHRydWUgKTtcblx0fVxufTtcbmpRdWVyeS5pc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcbmpRdWVyeS5wYXJzZUpTT04gPSBKU09OLnBhcnNlO1xualF1ZXJ5Lm5vZGVOYW1lID0gbm9kZU5hbWU7XG5qUXVlcnkuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5qUXVlcnkuaXNXaW5kb3cgPSBpc1dpbmRvdztcbmpRdWVyeS5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG5qUXVlcnkudHlwZSA9IHRvVHlwZTtcblxualF1ZXJ5Lm5vdyA9IERhdGUubm93O1xuXG5qUXVlcnkuaXNOdW1lcmljID0gZnVuY3Rpb24oIG9iaiApIHtcblxuXHQvLyBBcyBvZiBqUXVlcnkgMy4wLCBpc051bWVyaWMgaXMgbGltaXRlZCB0b1xuXHQvLyBzdHJpbmdzIGFuZCBudW1iZXJzIChwcmltaXRpdmVzIG9yIG9iamVjdHMpXG5cdC8vIHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpXG5cdHZhciB0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApO1xuXHRyZXR1cm4gKCB0eXBlID09PSBcIm51bWJlclwiIHx8IHR5cGUgPT09IFwic3RyaW5nXCIgKSAmJlxuXG5cdFx0Ly8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKFwiXCIpXG5cdFx0Ly8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIgc3RyaW5ncywgcGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoXCIweC4uLlwiKVxuXHRcdC8vIHN1YnRyYWN0aW9uIGZvcmNlcyBpbmZpbml0aWVzIHRvIE5hTlxuXHRcdCFpc05hTiggb2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKTtcbn07XG5cblxuXG5cbi8vIFJlZ2lzdGVyIGFzIGEgbmFtZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlclxuLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3JpcHQgdGhhdFxuLy8gdW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0XG4vLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlXG4vLyBkZXJpdmVkIGZyb20gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2Vcbi8vIGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50c1xuLy8gdG8gY2FsbCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLlxuXG4vLyBOb3RlIHRoYXQgZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgalF1ZXJ5IHNob3VsZFxuLy8gZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGluZyBhIGdsb2JhbCBpZiBhblxuLy8gQU1EIGxvYWRlciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBzcGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub25cblxuaWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblx0ZGVmaW5lKCBcImpxdWVyeVwiLCBbXSwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeTtcblx0fSApO1xufVxuXG5cblxuXG52YXJcblxuXHQvLyBNYXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksXG5cblx0Ly8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0XyQgPSB3aW5kb3cuJDtcblxualF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHtcblx0aWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy4kID0gXyQ7XG5cdH1cblxuXHRpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5O1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeTtcbn07XG5cbi8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1EXG4vLyAoIzcxMDIjY29tbWVudDoxMCwgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC81NTcpXG4vLyBhbmQgQ29tbW9uSlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICgjMTM1NjYpXG5pZiAoICFub0dsb2JhbCApIHtcblx0d2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5O1xufVxuXG5cblxuXG5yZXR1cm4galF1ZXJ5O1xufSApO1xuIiwiLypcbiAqIFRpdGxlOiBUeXBld3JpdGVyIEpTXG4gKiBEZXNjcmlwdGlvbjogQSBuYXRpdmUgamF2YXNjcmlwdCBwbHVnaW4gdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYW4gZWxlZ2VudCBhdXRvbWF0aWMgdHlwZXdyaXRlciBhbmltYXRpb24gZWZmZWN0IG9uIHdlYnNpdGVzLlxuICogQXV0aG9yOiBUYW1lZW0gU2FmaVxuICogV2Vic2l0ZTogaHR0cHM6Ly9zYWZpLm1lLnVrXG4gKiBWZXJzaW9uOiAxLjAuMFxuICovXG5cbihmdW5jdGlvbigpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHQvLyBodHRwOi8vcGF1bGlyaXNoLmNvbS8yMDExL3JlcXVlc3RhbmltYXRpb25mcmFtZS1mb3Itc21hcnQtYW5pbWF0aW5nL1xuXHQvLyBodHRwOi8vbXkub3BlcmEuY29tL2Vtb2xsZXIvYmxvZy8yMDExLzEyLzIwL3JlcXVlc3RhbmltYXRpb25mcmFtZS1mb3Itc21hcnQtZXItYW5pbWF0aW5nXG5cdC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSBwb2x5ZmlsbCBieSBFcmlrIE3DtmxsZXIuIGZpeGVzIGZyb20gUGF1bCBJcmlzaCBhbmQgVGlubyBaaWpkZWxcblx0Ly8gTUlUIGxpY2Vuc2Vcblx0KGZ1bmN0aW9uKCkge1xuXHQgICAgdmFyIGxhc3RUaW1lID0gMDtcblx0ICAgIHZhciB2ZW5kb3JzID0gWydtcycsICdtb3onLCAnd2Via2l0JywgJ28nXTtcblx0ICAgIGZvcih2YXIgeCA9IDA7IHggPCB2ZW5kb3JzLmxlbmd0aCAmJiAhd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTsgKyt4KSB7XG5cdCAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IHdpbmRvd1t2ZW5kb3JzW3hdKydSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXTtcblx0ICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSB3aW5kb3dbdmVuZG9yc1t4XSsnQ2FuY2VsQW5pbWF0aW9uRnJhbWUnXVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHdpbmRvd1t2ZW5kb3JzW3hdKydDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXTtcblx0ICAgIH1cblxuXHQgICAgaWYgKCF3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKVxuXHQgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihjYWxsYmFjaywgZWxlbWVudCkge1xuXHQgICAgICAgICAgICB2YXIgY3VyclRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblx0ICAgICAgICAgICAgdmFyIHRpbWVUb0NhbGwgPSBNYXRoLm1heCgwLCAxNiAtIChjdXJyVGltZSAtIGxhc3RUaW1lKSk7XG5cdCAgICAgICAgICAgIHZhciBpZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayhjdXJyVGltZSArIHRpbWVUb0NhbGwpOyB9LFxuXHQgICAgICAgICAgICAgIHRpbWVUb0NhbGwpO1xuXHQgICAgICAgICAgICBsYXN0VGltZSA9IGN1cnJUaW1lICsgdGltZVRvQ2FsbDtcblx0ICAgICAgICAgICAgcmV0dXJuIGlkO1xuXHQgICAgICAgIH07XG5cblx0ICAgIGlmICghd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKVxuXHQgICAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKGlkKSB7XG5cdCAgICAgICAgICAgIGNsZWFyVGltZW91dChpZCk7XG5cdCAgICAgICAgfTtcblx0fSgpKTtcblxuXHR3aW5kb3cuVHlwZXdyaXRlciA9IGZ1bmN0aW9uIFR5cGV3cml0ZXIoZWxlbWVudCwgb3B0aW9ucykge1xuXHRcdHRoaXMuX3NldHRpbmdzID0ge1xuXHRcdFx0Y3Vyc29yQW5pbWF0aW9uUGF1c2VkOiBmYWxzZSxcblx0XHRcdG9wYWNpdHlJbmNyZWFzaW5nOiBmYWxzZSxcblx0XHRcdGN1cnJlbnRPcGFjaXR5OiAxLFxuXHRcdFx0ZGVsYXllZFF1ZTogW10sXG5cdFx0XHRkZWxheUl0ZW1zQ291bnQ6IDAsXG5cdFx0XHRldmVudFF1ZTogW10sXG5cdFx0XHRjYWxsZWRFdmVudHM6IFtdLFxuXHRcdFx0ZXZlbnRSdW5uaW5nOiBmYWxzZSxcblx0XHRcdHRpbWVvdXQ6IGZhbHNlLFxuXHRcdFx0ZGVsYXlFeGVjdXRpb246IGZhbHNlLFxuXHRcdFx0ZnBzOiAoNjAvMTAwMCksXG5cdFx0XHR0eXBpbmdGcmFtZUNvdW50OiAwLFxuXHRcdFx0c3RyaW5nVG9UeXBlSFRNTEFycmF5OiBbXSxcblx0XHRcdGN1cnJlbnRUeXBlZENoYXJhY3RlcnM6IFtdLFxuXHRcdFx0dHlwaW5nOiBmYWxzZSxcblx0XHRcdHVzZWRJRHM6IFtdLFxuXHRcdFx0Y2hhckFtb3VudFRvRGVsZXRlOiBmYWxzZSxcblx0XHRcdHVzZXJPcHRpb25zOiB7fSxcblx0XHRcdGV2ZW50TG9vcFJlcnVuOiAwXG5cdFx0fTtcblxuXHRcdGlmKCFlbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGNob29zZSBhbiBET00gZWxlbWVudCBzbyB0aGF0IHR5cGUgd3JpdGVyIGNhbiBkaXNwbGF5IGl0c2VsZi4nKTtcblx0XHR9XG5cblx0XHQvLyBpZighb3B0aW9ucy5zdHJpbmdzICYmICEob3B0aW9ucy5zdHJpbmdzIGluc3RhbmNlb2YgQXJyYXkgfHwgdHlwZW9mIG9wdGlvbnMuc3RyaW5ncyA9PT0gJ3N0cmluZycpKSB7XG5cdFx0Ly8gXHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGVudGVyIGFuIGFycmF5IG9mIHN0cmluZ3MgZm9yIHRoZSB0eXBld3JpdGVyIGFuaW1hdGlvbiB0byB3b3JrLicpO1xuXHRcdC8vIH1cblxuXHRcdGlmKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgb25seSBhY2NlcHRzIHRoZSBvcHRpb25zIGFzIGFuIG9iamVjdC4nKTtcblx0XHR9XG5cblx0XHR0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucyA9IG9wdGlvbnM7XG5cblx0XHR0aGlzLmRlZmF1bHRfb3B0aW9ucyA9IHtcblx0XHRcdHN0cmluZ3M6IGZhbHNlLFxuXHRcdFx0Y3Vyc29yQ2xhc3NOYW1lOiAndHlwZXdyaXRlci1jdXJzb3InLFxuXHRcdFx0Y3Vyc29yOiAnfCcsXG5cdFx0XHRhbmltYXRlQ3Vyc29yOiB0cnVlLFxuXHRcdFx0YmxpbmtTcGVlZDogNTAsXG5cdFx0XHR0eXBpbmdTcGVlZDogJ25hdHVyYWwnLFxuXHRcdFx0ZGVsZXRlU3BlZWQ6ICduYXR1cmFsJyxcblx0XHRcdGNoYXJTcGFuQ2xhc3NOYW1lOiAndHlwZXdyaXRlci1jaGFyJyxcblx0XHRcdHdyYXBwZXJDbGFzc05hbWU6ICd0eXBld3JpdGVyLXdyYXBwZXInLFxuXHRcdFx0bG9vcDogZmFsc2UsXG5cdFx0XHRhdXRvU3RhcnQ6IGZhbHNlLFxuXHRcdFx0ZGV2TW9kZTogZmFsc2Vcblx0XHR9O1xuXG5cdFx0dGhpcy5vcHRpb25zID0gdGhpcy5fc2V0dXBPcHRpb25zKG9wdGlvbnMpO1xuXG5cdFx0dGhpcy5lbCA9IGVsZW1lbnQ7XG5cblx0XHR0aGlzLl9zZXR1cFR5cHdyaXRlcldyYXBwZXIoKTtcblxuXHRcdHRoaXMuX3N0YXJ0Q3Vyc29yQW5pbWF0aW9uKCk7XG5cblx0XHRpZih0aGlzLm9wdGlvbnMuYXV0b1N0YXJ0ID09PSB0cnVlICYmIHRoaXMub3B0aW9ucy5zdHJpbmdzKSB7XG5cdFx0XHR0aGlzLnR5cGVPdXRBbGxTdHJpbmdzKCk7XG5cdFx0fVxuXG5cdH07XG5cblx0dmFyIFR5cGV3cml0ZXJQcm90b3R5cGUgPSB3aW5kb3cuVHlwZXdyaXRlci5wcm90b3R5cGU7XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZSh0aGlzLl9zdG9wRXZlbnRMb29wKVxuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUucmVydW4gPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKHRoaXMuX3JlcnVuQ2FsbGVkRXZlbnRzKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnR5cGVTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRpZighc3RyaW5nIHx8IHR5cGVvZiBzdHJpbmcgIT0gJ3N0cmluZycpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBzdHJpbmcgYXMgdGhlIHBhcmFtYXRlci4nKTtcblx0XHR9XG5cblx0XHR2YXIgc3RyaW5nX2NoYXJzID0gdGhpcy5fZ2V0Q2hhcmFjdGVycyhzdHJpbmcpO1xuXG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fdHlwZUNoYXJhY3RlcnMsIFtzdHJpbmdfY2hhcnNdXSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5kZWxldGVBbGwgPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9kZWxldGVDaGFycywgWydhbGwnXV0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuZGVsZXRlQ2hhcnMgPSBmdW5jdGlvbihhbW91bnQpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9kZWxldGVDaGFycywgW2Ftb3VudF1dKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnBhdXNlRm9yID0gZnVuY3Rpb24obXMpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9wYXVzZUZvciwgW21zXV0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUudHlwZU91dEFsbFN0cmluZ3MgPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2hhcmFjdGVyc19hcnJheSA9IHRoaXMuX2dldFN0cmluZ3NBc0NoYXJzQXJyYXkoKTtcblxuXHRcdGlmKGNoYXJhY3RlcnNfYXJyYXkubGVuZ3RoID09PSAxKSB7XG5cdFx0XHR0aGlzLl90eXBlQ2hhcmFjdGVycyhjaGFyYWN0ZXJzX2FycmF5WzBdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yKHZhciBpID0gMCwgbGVuZ3RoID0gY2hhcmFjdGVyc19hcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl90eXBlQ2hhcmFjdGVycywgW2NoYXJhY3RlcnNfYXJyYXlbaV1dXSk7XG5cdFx0XHRcdHRoaXMucGF1c2VGb3IodGhpcy5fcmFuZG9tSW50ZWdlcigxNTAwLCAyNTAwKSk7XG5cdFx0XHRcdHRoaXMuZGVsZXRlQWxsKCk7XG5cdFx0XHRcdHRoaXMucGF1c2VGb3IodGhpcy5fcmFuZG9tSW50ZWdlcigxNTAwLCAyNTAwKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLmNoYW5nZVNldHRpbmdzID0gZnVuY3Rpb24obmV3X3NldHRpbmdzKSB7XG5cdFx0aWYoIW5ld19zZXR0aW5ncyAmJiB0eXBlb2YgbmV3X3NldHRpbmdzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgd2lsbCBvbmx5IGFjY2VwdCBhbiBvYmplY3QgYXMgdGhlIHNldHRpbmdzLicpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2FkZFRvRXZlbnRRdWUoW3RoaXMuX2NoYW5nZVNldHRpbmdzLCBbSlNPTi5zdHJpbmdpZnkobmV3X3NldHRpbmdzKV1dKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VCbGlua1NwZWVkID0gZnVuY3Rpb24obmV3X3NwZWVkKSB7XG5cdFx0aWYoIW5ld19zcGVlZCAmJiB0eXBlb2YgbmV3X3NwZWVkICE9PSAnbnVtYmVyJykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBlbnRlciBhIG51bWJlciBmb3IgdGhlIG5ldyBibGluayBzcGVlZC4nKTtcblx0XHR9XG5cblx0XHR0aGlzLmNoYW5nZVNldHRpbmdzKHtcblx0XHRcdGJsaW5rU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VUeXBpbmdTcGVlZCA9IGZ1bmN0aW9uKG5ld19zcGVlZCkge1xuXHRcdGlmKCFuZXdfc3BlZWQgJiYgdHlwZW9mIG5ld19zcGVlZCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBudW1iZXIgZm9yIHRoZSBuZXcgdHlwaW5nIHNwZWVkLicpO1xuXHRcdH1cblxuXHRcdHZhciBuZXdfc2V0dGluZ3MgPSB7XG5cdFx0XHR0eXBpbmdTcGVlZDogbmV3X3NwZWVkXG5cdFx0fTtcblxuXHRcdHRoaXMuY2hhbmdlU2V0dGluZ3Moe1xuXHRcdFx0dHlwaW5nU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VEZWxldGVTcGVlZCA9IGZ1bmN0aW9uKG5ld19zcGVlZCkge1xuXHRcdGlmKCFuZXdfc3BlZWQgJiYgdHlwZW9mIG5ld19zcGVlZCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBudW1iZXIgZm9yIHRoZSBuZXcgZGVsZXRlIHNwZWVkLicpO1xuXHRcdH1cblxuXHRcdHRoaXMuY2hhbmdlU2V0dGluZ3Moe1xuXHRcdFx0Y2hhbmdlRGVsZXRlU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcmVydW5DYWxsZWRFdmVudHMgPSBmdW5jdGlvbigpIHtcblx0XHRpZih0aGlzLl9zZXR0aW5ncy5jdXJyZW50VHlwZWRDaGFyYWN0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMuZGVsZXRlQWxsKCk7XG5cdFx0XHR0aGlzLl9yZXNldEV2ZW50TG9vcCgncmVydW5DYWxsZWRFdmVudHMnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUgPSB0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHM7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHMgPSBbXTtcblx0XHRcdHRoaXMub3B0aW9ucyA9IHRoaXMuX3NldHVwT3B0aW9ucyh0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucyk7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy51c2VkSURzID0gW107XG5cdFx0XHR0aGlzLmNoYXJBbW91bnRUb0RlbGV0ZSA9IGZhbHNlO1xuXHRcdFx0dGhpcy5fc3RhcnRFdmVudExvb3AoKTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZGVsZXRlQ2hhcnMgPSBmdW5jdGlvbihhbW91bnQpIHtcblxuXG5cdFx0aWYoYW1vdW50KSB7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBhbW91bnQ7XG5cdFx0fVxuXHRcdHRoaXMuX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcGF1c2VGb3IgPSBmdW5jdGlvbihtcykge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblx0XHRzZWxmLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSB0cnVlO1xuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRzZWxmLl9yZXNldEV2ZW50TG9vcCgncGF1c2VGb3InKTtcblx0XHR9LCBtcyk7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fY2hhbmdlU2V0dGluZ3MgPSBmdW5jdGlvbihuZXdfc2V0dGluZ3MpIHtcblx0XHR0aGlzLm9wdGlvbnMgPSB0aGlzLl9zZXR1cE9wdGlvbnMoSlNPTi5wYXJzZShuZXdfc2V0dGluZ3NbMF0pKTtcblx0XHR0aGlzLl9yZXNldEV2ZW50TG9vcCgnY2hhbmdlU2V0dGluZ3MnKTtcblxuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnTmV3IHNldHRpbmdzJywgdGhpcy5vcHRpb25zKTtcblx0XHR9XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9kZWxldGluZ0NoYXJBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblx0XHR2YXIgZGVsZXRlX3NwZWVkID0gdGhpcy5vcHRpb25zLmRlbGV0ZVNwZWVkO1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSA9IHNlbGYub3B0aW9ucy53cmFwcGVyQ2xhc3NOYW1lO1xuXHRcdHZhciBjdXJyZW50X3R5cGVkX2NoYXJfaWRzID0gc2VsZi5fc2V0dGluZ3MuY3VycmVudFR5cGVkQ2hhcmFjdGVycztcblx0XHR2YXIgY2hhcl9hbW91bnRfdG9fZGVsZXRlID0gc2VsZi5fc2V0dGluZ3MuY2hhckFtb3VudFRvRGVsZXRlO1xuXG5cdFx0aWYoIXNlbGYuX3NldHRpbmdzLmNoYXJBbW91bnRUb0RlbGV0ZSB8fCBzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPT09IDAgfHwgY3VycmVudF90eXBlZF9jaGFyX2lkcyA9PT0gMCkge1xuXHRcdFx0c2VsZi5fcmVzZXRFdmVudExvb3AoJ2RlbGV0aW5nQ2hhckFuaW1hdGlvbkZyYW1lJyk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZihkZWxldGVfc3BlZWQgPT0gJ25hdHVyYWwnKSB7XG5cdFx0XHRkZWxldGVfc3BlZWQgPSBzZWxmLl9yYW5kb21JbnRlZ2VyKDUwLCAxNTApO1xuXHRcdH1cblxuXHRcdGlmKGNoYXJfYW1vdW50X3RvX2RlbGV0ZSA9PSAnYWxsJykge1xuXHRcdFx0Y2hhcl9hbW91bnRfdG9fZGVsZXRlID0gY3VycmVudF90eXBlZF9jaGFyX2lkcy5sZW5ndGg7XG5cdFx0XHRzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBjaGFyX2Ftb3VudF90b19kZWxldGU7XG5cdFx0fVxuXG5cdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdGlmKHNlbGYuX3NldHRpbmdzLmNoYXJBbW91bnRUb0RlbGV0ZSkge1xuXHRcdFx0XHR2YXIgbGFzdF90eXBlZF9jaGFyX2luZGV4ID0gY3VycmVudF90eXBlZF9jaGFyX2lkcy5sZW5ndGggLSAxO1xuXHRcdFx0XHR2YXIgZ2V0X2xhc3RfdHlwZWRfY2hhciA9IGN1cnJlbnRfdHlwZWRfY2hhcl9pZHNbbGFzdF90eXBlZF9jaGFyX2luZGV4XTtcblxuXHRcdFx0XHRzZWxmLl9zZXR0aW5ncy5jdXJyZW50VHlwZWRDaGFyYWN0ZXJzLnNwbGljZShsYXN0X3R5cGVkX2NoYXJfaW5kZXgsIDEpO1xuXG5cdFx0XHRcdHZhciBjaGFyX3RvX2RlbGV0ZV9lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGdldF9sYXN0X3R5cGVkX2NoYXIpO1xuXG5cdFx0XHRcdGlmKGNoYXJfdG9fZGVsZXRlX2VsKSB7XG5cdFx0XHRcdFx0dmFyIHR5cGV3cml0ZXJfd3JhcHBlcl9lbCA9IHNlbGYuZWwucXVlcnlTZWxlY3RvcignLicgKyB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSk7XG5cdFx0XHRcdFx0dHlwZXdyaXRlcl93cmFwcGVyX2VsLnJlbW92ZUNoaWxkKGNoYXJfdG9fZGVsZXRlX2VsKTtcblx0XHRcdFx0XHRzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBjaGFyX2Ftb3VudF90b19kZWxldGUgLSAxO1xuXG5cdFx0XHRcdFx0aWYoc2VsZi5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdEZWxldGVkIGNoYXIgd2l0aCBJRCcsIGdldF9sYXN0X3R5cGVkX2NoYXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cblx0XHRcdHNlbGYuX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2VsZi5fZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUuYmluZChzZWxmKSk7XG5cblx0XHR9LCBkZWxldGVfc3BlZWQpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3NldHVwT3B0aW9ucyA9IGZ1bmN0aW9uKG5ld19vcHRpb25zKSB7XG5cdCAgICB2YXIgbWVyZ2VkX29wdGlvbnMgPSB7fTtcblxuXHQgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gdGhpcy5kZWZhdWx0X29wdGlvbnMpIHtcblx0ICAgIFx0bWVyZ2VkX29wdGlvbnNbYXR0cm5hbWVdID0gdGhpcy5kZWZhdWx0X29wdGlvbnNbYXR0cm5hbWVdO1xuXHQgICAgfVxuXG5cdCAgICBpZih0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucykge1xuXHQgICAgXHRmb3IgKHZhciBhdHRybmFtZSBpbiB0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucykge1xuXHRcdCAgICBcdG1lcmdlZF9vcHRpb25zW2F0dHJuYW1lXSA9IHRoaXMuX3NldHRpbmdzLnVzZXJPcHRpb25zW2F0dHJuYW1lXTtcblx0XHQgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBuZXdfb3B0aW9ucykge1xuXHQgICAgXHRtZXJnZWRfb3B0aW9uc1thdHRybmFtZV0gPSBuZXdfb3B0aW9uc1thdHRybmFtZV07XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiBtZXJnZWRfb3B0aW9ucztcblx0fVxuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2FkZFRvRXZlbnRRdWUgPSBmdW5jdGlvbihldmVudCkge1xuXHRcdHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLnB1c2goZXZlbnQpO1xuXHRcdGlmKHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLmxlbmd0aCA+IDAgJiYgIXRoaXMuX3NldHRpbmdzLmV2ZW50UnVubmluZyAmJiB0aGlzLm9wdGlvbnMuYXV0b1N0YXJ0KSB7XG5cdFx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zdGFydEV2ZW50TG9vcCA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgbG9vcCBzdGFydGVkLicpO1xuXHRcdH1cblxuXHRcdGlmKCF0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcpIHtcblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0aGlzLmV2ZW50TG9vcFJlcnVuID0gMDtcblx0XHRcdFx0dmFyIGZpcnN0X2V2ZW50ID0gdGhpcy5fc2V0dGluZ3MuZXZlbnRRdWVbMF07XG5cdFx0XHRcdGlmKHR5cGVvZiBmaXJzdF9ldmVudCA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHMucHVzaChmaXJzdF9ldmVudCk7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUuc3BsaWNlKDAsIDEpO1xuXHRcdFx0XHRcdGZpcnN0X2V2ZW50LmNhbGwodGhpcyk7XG5cdFx0XHRcdFx0aWYodGhpcy5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdFdmVudCBzdGFydGVkLicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmKGZpcnN0X2V2ZW50IGluc3RhbmNlb2YgQXJyYXkpIHtcblx0XHRcdFx0XHRpZih0eXBlb2YgZmlyc3RfZXZlbnRbMF0gPT0gJ2Z1bmN0aW9uJyAmJiBmaXJzdF9ldmVudFsxXSBpbnN0YW5jZW9mIEFycmF5KSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSB0cnVlO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuY2FsbGVkRXZlbnRzLnB1c2goZmlyc3RfZXZlbnQpO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUuc3BsaWNlKDAsIDEpO1xuXHRcdFx0XHRcdFx0Zmlyc3RfZXZlbnRbMF0uY2FsbCh0aGlzLCBmaXJzdF9ldmVudFsxXSk7XG5cdFx0XHRcdFx0XHRpZih0aGlzLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgc3RhcnRlZC4nKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuX2V2ZW50UXVlQW5pbWF0aW9uID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9zdGFydEV2ZW50TG9vcC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cblx0XHRpZighdGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nICYmIHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLmxlbmd0aCA8PSAwKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cdFx0XHRzZWxmLl9zdG9wRXZlbnRMb29wKCk7XG5cdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZihzZWxmLm9wdGlvbnMubG9vcCkge1xuXHRcdFx0XHRcdHNlbGYuZXZlbnRMb29wUmVydW4rKztcblx0XHRcdFx0XHRpZihzZWxmLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0JlZm9yZSBMb29wIFN0YXRlJywgc2VsZi5fc2V0dGluZ3MpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihzZWxmLmV2ZW50TG9vcFJlcnVuID4gNCkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignTWF4aW11bSBhbW91bnQgb2YgbG9vcCByZXRyaWVzIHJlYWNoZWQuJyk7XG5cdFx0XHRcdFx0XHRzZWxmLl9zdG9wRXZlbnRMb29wKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmKHNlbGYub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdMb29waW5nIGV2ZW50cy4nKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHNlbGYuX3JlcnVuQ2FsbGVkRXZlbnRzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LCAxMDAwKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yZXNldEV2ZW50TG9vcCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0XHR2YXIgZXZlbnRfbmFtZSA9IG5hbWUgfHwgJ0V2ZW50Jztcblx0XHR0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSBmYWxzZTtcblx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhldmVudF9uYW1lLCAnRmluaXNoZWQnKTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fc3RvcEV2ZW50TG9vcCA9IGZ1bmN0aW9uKCkge1xuXHRcdHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9ldmVudFF1ZUFuaW1hdGlvbik7XG5cdFx0aWYodGhpcy5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdGNvbnNvbGUubG9nKCdFdmVudCBsb29wIHN0b3BwZWQuJyk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3NldHVwVHlwd3JpdGVyV3JhcHBlciA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy53cmFwcGVyQ2xhc3NOYW1lO1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0dHlwZXdyaXRlcl93cmFwcGVyLmNsYXNzTmFtZSA9IHR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lO1xuXHRcdHRoaXMuZWwuaW5uZXJIVE1MID0gJyc7XG5cdFx0dGhpcy5lbC5hcHBlbmRDaGlsZCh0eXBld3JpdGVyX3dyYXBwZXIpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3R5cGVDaGFyYWN0ZXJzID0gZnVuY3Rpb24oY2hhcmFjdGVyc19hcnJheSkge1xuXHRcdHRoaXMuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheSA9IHRoaXMuX2NvbnZlcnRDaGFyc1RvSFRNTChjaGFyYWN0ZXJzX2FycmF5KTtcblx0XHR0aGlzLl90eXBpbmdBbmltYXRpb24gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3R5cGluZ0FuaW1hdGlvbkZyYW1lLmJpbmQodGhpcywgY2hhcmFjdGVyc19hcnJheS5sZW5ndGgpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl90eXBpbmdBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKHRvdGFsX2l0ZW1zKSB7XG5cdFx0dmFyIHNlbGYgPSB0aGlzO1xuXHRcdHZhciB0eXBpbmdfc3BlZWQgPSB0aGlzLm9wdGlvbnMudHlwaW5nU3BlZWQ7XG5cdFx0dmFyIHR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lID0gc2VsZi5vcHRpb25zLndyYXBwZXJDbGFzc05hbWU7XG5cblx0XHRpZihzZWxmLl9zZXR0aW5ncy5zdHJpbmdUb1R5cGVIVE1MQXJyYXkubGVuZ3RoID09IDApIHtcblx0XHRcdHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShzZWxmLl90eXBpbmdBbmltYXRpb24pO1xuXHRcdFx0dGhpcy5fcmVzZXRFdmVudExvb3AoJ3R5cGluZ0FuaW1hdGlvbkZyYW1lJyk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZih0eXBpbmdfc3BlZWQgPT0gJ25hdHVyYWwnKSB7XG5cdFx0XHR0eXBpbmdfc3BlZWQgPSB0aGlzLl9yYW5kb21JbnRlZ2VyKDUwLCAxNTApO1xuXHRcdH1cblxuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZWxfaW5uZXJfaHRtbCA9IHNlbGYuZWwuaW5uZXJIVE1MO1xuXHRcdFx0dmFyIGl0ZW1fdG9fdHlwZSA9IHNlbGYuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheVswXTtcblx0XHRcdHNlbGYuZWwucXVlcnlTZWxlY3RvcignLicgKyB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSkuYXBwZW5kQ2hpbGQoaXRlbV90b190eXBlLmVsKTtcblx0XHRcdHNlbGYuX3NldHRpbmdzLmN1cnJlbnRUeXBlZENoYXJhY3RlcnMucHVzaChpdGVtX3RvX3R5cGUuaWQpO1xuXHRcdFx0c2VsZi5fc2V0dGluZ3Muc3RyaW5nVG9UeXBlSFRNTEFycmF5LnNwbGljZSgwLCAxKTtcblx0XHRcdHNlbGYuX3R5cGluZ0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2VsZi5fdHlwaW5nQW5pbWF0aW9uRnJhbWUuYmluZChzZWxmLCB0b3RhbF9pdGVtcykpO1xuXHRcdFx0aWYoc2VsZi5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ1R5cGVkJywgaXRlbV90b190eXBlKTtcblx0XHRcdH1cblx0XHR9LCB0eXBpbmdfc3BlZWQpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2NvbnZlcnRDaGFyc1RvSFRNTCA9IGZ1bmN0aW9uKGNoYXJzKSB7XG5cdFx0dmFyIGNoYXJzX2h0bWxfd3JhcF9hcnJheSA9IFtdO1xuXHRcdHZhciBjaGFyX2NsYXNzX25hbWUgPSB0aGlzLm9wdGlvbnMuY2hhclNwYW5DbGFzc05hbWU7XG5cdFx0dmFyIGNoYXJzX2FycmF5ID0gY2hhcnNbMF07XG5cblx0XHRmb3IodmFyIGkgPSAwLCBsZW5ndGggPSBjaGFyc19hcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGNoYXJfZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdHZhciBjaGFyX2lkID0gdGhpcy5fZ2VuZXJhdGVVbmlxdWVJRCgpO1xuXHRcdFx0Y2hhcl9lbGVtZW50LmlkID0gY2hhcl9pZDtcblx0XHRcdGNoYXJfZWxlbWVudC5jbGFzc05hbWUgPSBjaGFyX2NsYXNzX25hbWUgKyAnIHR5cGV3cml0ZXItaXRlbS0nICsgaTtcblx0XHRcdGNoYXJfZWxlbWVudC5pbm5lckhUTUwgPSBjaGFyc19hcnJheVtpXTtcblx0XHRcdGNoYXJzX2h0bWxfd3JhcF9hcnJheS5wdXNoKHtcblx0XHRcdFx0aWQ6IGNoYXJfaWQsXG5cdFx0XHRcdGVsOiBjaGFyX2VsZW1lbnRcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBjaGFyc19odG1sX3dyYXBfYXJyYXk7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2V0Q2hhcmFjdGVycyA9IGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdGlmKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBzdHJpbmcuc3BsaXQoXCJcIik7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2V0U3RyaW5nc0FzQ2hhcnNBcnJheSA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzdHJpbmdzX2FycmF5X2NoZWNrID0gdGhpcy5vcHRpb25zLnN0cmluZ3MgaW5zdGFuY2VvZiBBcnJheTtcblx0XHR2YXIgc3RyaW5nc19zdHJpbmdfY2hlY2sgPSB0eXBlb2YgdGhpcy5vcHRpb25zLnN0cmluZ3MgPT09ICdzdHJpbmcnO1xuXHRcdGlmKCFzdHJpbmdzX2FycmF5X2NoZWNrKSB7XG5cdFx0XHRpZighc3RyaW5nc19zdHJpbmdfY2hlY2spIHtcblx0XHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgb25seSBhY2NlcHRzIHN0cmluZ3Mgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhcyB0aGUgaW5wdXQuJyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gW3RoaXMub3B0aW9ucy5zdHJpbmdzLnNwbGl0KFwiXCIpXTtcblx0XHR9XG5cblx0XHR2YXIgc3RyaW5nc19jaGFyc19hcnJheSA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMub3B0aW9ucy5zdHJpbmdzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgc3RyaW5nX2NoYXJzID0gdGhpcy5fZ2V0Q2hhcmFjdGVycyh0aGlzLm9wdGlvbnMuc3RyaW5nc1tpXSk7XG5cdFx0XHRpZighc3RyaW5nX2NoYXJzKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBlbnRlciBvbmx5IHN0cmluZ3MuJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0c3RyaW5nc19jaGFyc19hcnJheS5wdXNoKHN0cmluZ19jaGFycyk7XG4gICAgXHR9XG5cbiAgICBcdHJldHVybiBzdHJpbmdzX2NoYXJzX2FycmF5O1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2N1cnNvckFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0dmFyIGJsaW5rX3NwZWVkID0gdGhpcy5vcHRpb25zLmJsaW5rU3BlZWQ7XG5cdFx0XHR2YXIgb3BhY2l0eV9hbW91bnQgPSAoMS8xMDAwKSAqIGJsaW5rX3NwZWVkO1xuXG5cdFx0XHR2YXIgY3Vyc29yX2VsID0gdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCcudHlwZXdyaXRlci1jdXJzb3InKTtcblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPT0gdHJ1ZSkge1xuXHRcdFx0XHRpZih0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA+PSAxKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA9IDE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSArPSBvcGFjaXR5X2Ftb3VudDtcblx0XHRcdH1cblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPT0gZmFsc2UpIHtcblx0XHRcdFx0aWYodGhpcy5fc2V0dGluZ3MuY3VycmVudE9wYWNpdHkgPD0gMCkge1xuXHRcdFx0XHRcdHRoaXMuX3NldHRpbmdzLm9wYWNpdHlJbmNyZWFzaW5nID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA9IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSAtPSBvcGFjaXR5X2Ftb3VudDtcblx0XHRcdH1cblxuXHRcdFx0Y3Vyc29yX2VsLnN0eWxlLm9wYWNpdHkgPSB0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eTtcblx0XHRcdHRoaXMuX2N1cnNvckFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fY3Vyc29yQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuYXBwZW5kVGV4dCA9IGZ1bmN0aW9uKHRleHQpe1xuXHQgICAgdGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fYXBwZW5kVGV4dCwgW3RleHRdXSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fYXBwZW5kVGV4dCA9IGZ1bmN0aW9uKHRleHQpe1xuICAgICAgICAgICAgdmFyIGNoYXJfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy5jaGFyU3BhbkNsYXNzTmFtZTtcbiAgICAgICAgICAgIHZhciBjaGFyX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICB2YXIgY2hhcl9pZCA9IHRoaXMuX2dlbmVyYXRlVW5pcXVlSUQoKTtcbiAgICAgICAgICAgIGNoYXJfZWxlbWVudC5pZCA9IGNoYXJfaWQ7XG4gICAgICAgICAgICBjaGFyX2VsZW1lbnQuY2xhc3NOYW1lID0gY2hhcl9jbGFzc19uYW1lICsgJyBkb20tYXBwZW5kZWQnXG4gICAgICAgICAgICBjaGFyX2VsZW1lbnQuaW5uZXJIVE1MID0gdGV4dFxuICAgICAgICAgICAgdmFyIGl0ZW1zID0gIFtdXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogY2hhcl9pZCxcbiAgICAgICAgICAgICAgICBlbDogY2hhcl9lbGVtZW50XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3Muc3RyaW5nVG9UeXBlSFRNTEFycmF5ID0gaXRlbXNcblxuICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl90eXBpbmdBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMsIDEpKTtcblxuICAgIH1cblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zdGFydEN1cnNvckFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBjdXJzb3IgPSB0aGlzLm9wdGlvbnMuY3Vyc29yO1xuXHRcdHZhciBjdXJzb3JfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy5jdXJzb3JDbGFzc05hbWU7XG5cblx0XHR2YXIgY3Vyc29yX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0Y3Vyc29yX2VsZW1lbnQuY2xhc3NOYW1lID0gY3Vyc29yX2NsYXNzX25hbWU7XG5cdFx0Y3Vyc29yX2VsZW1lbnQuaW5uZXJIVE1MID0gY3Vyc29yO1xuXG5cdFx0dGhpcy5lbC5hcHBlbmRDaGlsZChjdXJzb3JfZWxlbWVudCk7XG5cdFx0aWYodGhpcy5vcHRpb25zLmFuaW1hdGVDdXJzb3IpIHtcblx0XHRcdHRoaXMuX2N1cnNvckFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fY3Vyc29yQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3BhdXNlQ3Vyc29yQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2N1cnNvckFuaW1hdGlvbik7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJzb3JBbmltYXRpb25QYXVzZWQgPSB0cnVlO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yZXN0YXJ0Q3Vyc29yQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ0N1cnNvciBhbmltYXRpb24gaXMgYWxyZWFkeSBydW5uaW5nLicpXG5cdFx0fVxuXG5cdFx0dGhpcy5fc2V0dGluZ3MuY3Vyc29yQW5pbWF0aW9uUGF1c2VkID0gZmFsc2U7XG5cdFx0dGhpcy5fY3Vyc29yQW5pbWF0aW9uID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9jdXJzb3JBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMpKTtcblx0fTtcblxuXHQvKiBVdGlscyAqL1xuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yYW5kb21JbnRlZ2VyID0gZnVuY3Rpb24obWluLCBtYXgpIHtcblx0XHRyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjtcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yYW5kb21JRCA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0ZXh0ID0gXCJcIjtcbiAgICBcdHZhciBwb3NzaWJsZSA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIjtcblxuICAgIFx0Zm9yKCB2YXIgaT0wOyBpIDwgdGhpcy5fcmFuZG9tSW50ZWdlcig1LCAxNSk7IGkrKyApIHtcbiAgICBcdFx0dGV4dCArPSBwb3NzaWJsZS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcG9zc2libGUubGVuZ3RoKSk7XG5cdFx0fVxuICAgIFx0cmV0dXJuIHRleHQ7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2VuZXJhdGVVbmlxdWVJRCA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0ZW1wX2lkID0gdGhpcy5fcmFuZG9tSUQoKTtcblx0XHRpZih0aGlzLl9zZXR0aW5ncy51c2VkSURzLmluZGV4T2YodGVtcF9pZCkgPT0gLTEpIHtcblx0XHRcdHRoaXMuX3NldHRpbmdzLnVzZWRJRHMucHVzaCh0ZW1wX2lkKTtcblx0XHRcdHJldHVybiB0ZW1wX2lkO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fZ2VuZXJhdGVVbmlxdWVJRC5jYWxsKHRoaXMpO1xuXHR9O1xuXG5cbn0pKCk7IiwiLyohIFVJa2l0IDMuMC4wLXJjLjUgfCBodHRwOi8vd3d3LmdldHVpa2l0LmNvbSB8IChjKSAyMDE0IC0gMjAxNyBZT090aGVtZSB8IE1JVCBMaWNlbnNlICovXG5cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSgndWlraXQnLCBmYWN0b3J5KSA6XG4gICAgKGdsb2JhbC5VSWtpdCA9IGZhY3RvcnkoKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIGZ1bmN0aW9uIGJpbmQoZm4sIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgICAgICByZXR1cm4gbCA/IGwgPiAxID8gZm4uYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKSA6IGZuLmNhbGwoY29udGV4dCwgYSkgOiBmbi5jYWxsKGNvbnRleHQpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciByZWYgPSBPYmplY3QucHJvdG90eXBlO1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IHJlZi5oYXNPd25Qcm9wZXJ0eTtcblxuICAgIGZ1bmN0aW9uIGhhc093bihvYmosIGtleSkge1xuICAgICAgICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSk7XG4gICAgfVxuXG4gICAgdmFyIGh5cGhlbmF0ZUNhY2hlID0ge307XG4gICAgdmFyIGh5cGhlbmF0ZVJlID0gLyhbYS16XFxkXSkoW0EtWl0pL2c7XG5cbiAgICBmdW5jdGlvbiBoeXBoZW5hdGUoc3RyKSB7XG5cbiAgICAgICAgaWYgKCEoc3RyIGluIGh5cGhlbmF0ZUNhY2hlKSkge1xuICAgICAgICAgICAgaHlwaGVuYXRlQ2FjaGVbc3RyXSA9IHN0clxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKGh5cGhlbmF0ZVJlLCAnJDEtJDInKVxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGh5cGhlbmF0ZUNhY2hlW3N0cl07XG4gICAgfVxuXG4gICAgdmFyIGNhbWVsaXplUmUgPSAvLShcXHcpL2c7XG5cbiAgICBmdW5jdGlvbiBjYW1lbGl6ZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUmUsIHRvVXBwZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvVXBwZXIoXywgYykge1xuICAgICAgICByZXR1cm4gYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVjZmlyc3Qoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIubGVuZ3RoID8gdG9VcHBlcihudWxsLCBzdHIuY2hhckF0KDApKSArIHN0ci5zbGljZSgxKSA6ICcnO1xuICAgIH1cblxuICAgIHZhciBzdHJQcm90b3R5cGUgPSBTdHJpbmcucHJvdG90eXBlO1xuICAgIHZhciBzdGFydHNXaXRoRm4gPSBzdHJQcm90b3R5cGUuc3RhcnRzV2l0aCB8fCBmdW5jdGlvbiAoc2VhcmNoKSB7IHJldHVybiB0aGlzLmxhc3RJbmRleE9mKHNlYXJjaCwgMCkgPT09IDA7IH07XG5cbiAgICBmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgc2VhcmNoKSB7XG4gICAgICAgIHJldHVybiBzdGFydHNXaXRoRm4uY2FsbChzdHIsIHNlYXJjaCk7XG4gICAgfVxuXG4gICAgdmFyIGVuZHNXaXRoRm4gPSBzdHJQcm90b3R5cGUuZW5kc1dpdGggfHwgZnVuY3Rpb24gKHNlYXJjaCkgeyByZXR1cm4gdGhpcy5zdWJzdHIoLXNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7IH07XG5cbiAgICBmdW5jdGlvbiBlbmRzV2l0aChzdHIsIHNlYXJjaCkge1xuICAgICAgICByZXR1cm4gZW5kc1dpdGhGbi5jYWxsKHN0ciwgc2VhcmNoKTtcbiAgICB9XG5cbiAgICB2YXIgaW5jbHVkZXNGbiA9IGZ1bmN0aW9uIChzZWFyY2gpIHsgcmV0dXJuIH50aGlzLmluZGV4T2Yoc2VhcmNoKTsgfTtcbiAgICB2YXIgaW5jbHVkZXNTdHIgPSBzdHJQcm90b3R5cGUuaW5jbHVkZXMgfHwgaW5jbHVkZXNGbjtcbiAgICB2YXIgaW5jbHVkZXNBcnJheSA9IEFycmF5LnByb3RvdHlwZS5pbmNsdWRlcyB8fCBpbmNsdWRlc0ZuO1xuXG4gICAgZnVuY3Rpb24gaW5jbHVkZXMob2JqLCBzZWFyY2gpIHtcbiAgICAgICAgcmV0dXJuIG9iaiAmJiAoaXNTdHJpbmcob2JqKSA/IGluY2x1ZGVzU3RyIDogaW5jbHVkZXNBcnJheSkuY2FsbChvYmosIHNlYXJjaCk7XG4gICAgfVxuXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihvYmopIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHtcbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KG9iaikgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikgPT09IE9iamVjdC5wcm90b3R5cGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNXaW5kb3cob2JqKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmIG9iaiA9PT0gb2JqLndpbmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RvY3VtZW50KG9iaikge1xuICAgICAgICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiBvYmoubm9kZVR5cGUgPT09IDk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNKUXVlcnkob2JqKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmICEhb2JqLmpxdWVyeTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc05vZGUoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIE5vZGUgfHwgaXNPYmplY3QoZWxlbWVudCkgJiYgZWxlbWVudC5ub2RlVHlwZSA9PT0gMTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc05vZGVDb2xsZWN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgaW5zdGFuY2VvZiBOb2RlTGlzdCB8fCBlbGVtZW50IGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc051bWVyaWModmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSB8fCBpc1N0cmluZyh2YWx1ZSkgJiYgIWlzTmFOKHZhbHVlIC0gcGFyc2VGbG9hdCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdm9pZCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQm9vbGVhbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaXNCb29sZWFuKHZhbHVlKVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiB2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSAnMScgfHwgdmFsdWUgPT09ICcnXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB2YWx1ZSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gJzAnXG4gICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICAgICAgICB2YXIgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuICFpc05hTihudW1iZXIpID8gbnVtYmVyIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9GbG9hdCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSkgfHwgMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b05vZGUoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpIHx8IGlzV2luZG93KGVsZW1lbnQpIHx8IGlzRG9jdW1lbnQoZWxlbWVudClcbiAgICAgICAgICAgID8gZWxlbWVudFxuICAgICAgICAgICAgOiBpc05vZGVDb2xsZWN0aW9uKGVsZW1lbnQpIHx8IGlzSlF1ZXJ5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgPyBlbGVtZW50WzBdXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgID8gdG9Ob2RlKGVsZW1lbnRbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbiAgICBmdW5jdGlvbiB0b05vZGVzKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KVxuICAgICAgICAgICAgPyBbZWxlbWVudF1cbiAgICAgICAgICAgIDogaXNOb2RlQ29sbGVjdGlvbihlbGVtZW50KVxuICAgICAgICAgICAgICAgID8gYXJyYXlQcm90by5zbGljZS5jYWxsKGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgID8gZWxlbWVudC5tYXAodG9Ob2RlKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgOiBpc0pRdWVyeShlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBlbGVtZW50LnRvQXJyYXkoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0xpc3QodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IGlzU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgICAgID8gdmFsdWUuc3BsaXQoLywoPyFbXihdKlxcKSkvKS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBpc051bWVyaWModmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gdG9OdW1iZXIodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDogdG9Cb29sZWFuKHZhbHVlLnRyaW0oKSk7IH0pXG4gICAgICAgICAgICAgICAgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTXModGltZSkge1xuICAgICAgICByZXR1cm4gIXRpbWVcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBlbmRzV2l0aCh0aW1lLCAnbXMnKVxuICAgICAgICAgICAgICAgID8gdG9GbG9hdCh0aW1lKVxuICAgICAgICAgICAgICAgIDogdG9GbG9hdCh0aW1lKSAqIDEwMDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3dhcCh2YWx1ZSwgYSwgYikge1xuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKChhICsgXCJ8XCIgKyBiKSwgJ21nJyksIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoID09PSBhID8gYiA6IGE7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuICAgICAgICB0YXJnZXQgPSBPYmplY3QodGFyZ2V0KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJnc1tpXTtcbiAgICAgICAgICAgIGlmIChzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24oc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVhY2gob2JqLCBjYikge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICBjYi5jYWxsKG9ialtrZXldLCBvYmpba2V5XSwga2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNvcnRCeShjb2xsZWN0aW9uLCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGFbcHJvcF0gPiBiW3Byb3BdXG4gICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgOiBiW3Byb3BdID4gYVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgIDogMDsgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsYW1wKG51bWJlciwgbWluLCBtYXgpIHtcbiAgICAgICAgaWYgKCBtaW4gPT09IHZvaWQgMCApIG1pbiA9IDA7XG4gICAgICAgIGlmICggbWF4ID09PSB2b2lkIDAgKSBtYXggPSAxO1xuXG4gICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChudW1iZXIsIG1pbiksIG1heCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9vcCgpIHt9XG5cbiAgICBmdW5jdGlvbiBpbnRlcnNlY3RSZWN0KHIxLCByMikge1xuICAgICAgICByZXR1cm4gcjEubGVmdCA8PSByMi5yaWdodCAmJlxuICAgICAgICAgICAgcjIubGVmdCA8PSByMS5yaWdodCAmJlxuICAgICAgICAgICAgcjEudG9wIDw9IHIyLmJvdHRvbSAmJlxuICAgICAgICAgICAgcjIudG9wIDw9IHIxLmJvdHRvbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb2ludEluUmVjdChwb2ludCwgcmVjdCkge1xuICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdCh7dG9wOiBwb2ludC55LCBib3R0b206IHBvaW50LnksIGxlZnQ6IHBvaW50LngsIHJpZ2h0OiBwb2ludC54fSwgcmVjdCk7XG4gICAgfVxuXG4gICAgdmFyIERpbWVuc2lvbnMgPSB7XG5cbiAgICAgICAgcmF0aW86IGZ1bmN0aW9uKGRpbWVuc2lvbnMsIHByb3AsIHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgb2JqO1xuXG5cbiAgICAgICAgICAgIHZhciBhUHJvcCA9IHByb3AgPT09ICd3aWR0aCcgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICAgICAgICAgIHJldHVybiAoIG9iaiA9IHt9LCBvYmpbYVByb3BdID0gTWF0aC5yb3VuZCh2YWx1ZSAqIGRpbWVuc2lvbnNbYVByb3BdIC8gZGltZW5zaW9uc1twcm9wXSksIG9ialtwcm9wXSA9IHZhbHVlLCBvYmogKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjb250YWluOiBmdW5jdGlvbihkaW1lbnNpb25zLCBtYXhEaW1lbnNpb25zKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgZGltZW5zaW9ucyA9IGFzc2lnbih7fSwgZGltZW5zaW9ucyk7XG5cbiAgICAgICAgICAgIGVhY2goZGltZW5zaW9ucywgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGRpbWVuc2lvbnMgPSBkaW1lbnNpb25zW3Byb3BdID4gbWF4RGltZW5zaW9uc1twcm9wXVxuICAgICAgICAgICAgICAgID8gdGhpcyQxLnJhdGlvKGRpbWVuc2lvbnMsIHByb3AsIG1heERpbWVuc2lvbnNbcHJvcF0pXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb25zOyB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gZGltZW5zaW9ucztcbiAgICAgICAgfSxcblxuICAgICAgICBjb3ZlcjogZnVuY3Rpb24oZGltZW5zaW9ucywgbWF4RGltZW5zaW9ucykge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIGRpbWVuc2lvbnMgPSB0aGlzLmNvbnRhaW4oZGltZW5zaW9ucywgbWF4RGltZW5zaW9ucyk7XG5cbiAgICAgICAgICAgIGVhY2goZGltZW5zaW9ucywgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGRpbWVuc2lvbnMgPSBkaW1lbnNpb25zW3Byb3BdIDwgbWF4RGltZW5zaW9uc1twcm9wXVxuICAgICAgICAgICAgICAgID8gdGhpcyQxLnJhdGlvKGRpbWVuc2lvbnMsIHByb3AsIG1heERpbWVuc2lvbnNbcHJvcF0pXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb25zOyB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gZGltZW5zaW9ucztcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGF0dHIoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcblxuICAgICAgICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBuYW1lKSB7XG4gICAgICAgICAgICAgICAgYXR0cihlbGVtZW50LCBrZXksIG5hbWVba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b05vZGVzKGVsZW1lbnQpLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNhbGwoZWxlbWVudCwgYXR0cihlbGVtZW50LCBuYW1lKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUF0dHIoZWxlbWVudCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNBdHRyKGVsZW1lbnQsIG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUobmFtZSk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUF0dHIoZWxlbWVudCwgbmFtZSkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlcyhlbGVtZW50KTtcbiAgICAgICAgbmFtZS5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIGVsZW1lbnQuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7IH1cbiAgICAgICAgICAgICk7IH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaWx0ZXJBdHRyKGVsZW1lbnQsIGF0dHJpYnV0ZSwgcGF0dGVybiwgcmVwbGFjZW1lbnQpIHtcbiAgICAgICAgYXR0cihlbGVtZW50LCBhdHRyaWJ1dGUsIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPyB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KSA6IHZhbHVlOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXRhKGVsZW1lbnQsIGF0dHJpYnV0ZSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgYXR0cnMgPSBbYXR0cmlidXRlLCAoXCJkYXRhLVwiICsgYXR0cmlidXRlKV07IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGhhc0F0dHIoZWxlbWVudCwgYXR0cnNbaV0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0dHIoZWxlbWVudCwgYXR0cnNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShzZWxlY3RvcikgfHwgZmluZChzZWxlY3RvciwgaXNDb250ZXh0U2VsZWN0b3Ioc2VsZWN0b3IpID8gY29udGV4dCA6IGRvY3VtZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBxdWVyeUFsbChzZWxlY3RvciwgY29udGV4dCkge1xuICAgICAgICB2YXIgbm9kZXMgPSB0b05vZGVzKHNlbGVjdG9yKTtcbiAgICAgICAgcmV0dXJuIG5vZGVzLmxlbmd0aCAmJiBub2RlcyB8fCBmaW5kQWxsKHNlbGVjdG9yLCBpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikgPyBjb250ZXh0IDogZG9jdW1lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbmQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShfcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQsICdxdWVyeVNlbGVjdG9yJykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbmRBbGwoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoX3F1ZXJ5KHNlbGVjdG9yLCBjb250ZXh0LCAncXVlcnlTZWxlY3RvckFsbCcpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQsIHF1ZXJ5Rm4pIHtcbiAgICAgICAgaWYgKCBjb250ZXh0ID09PSB2b2lkIDAgKSBjb250ZXh0ID0gZG9jdW1lbnQ7XG5cblxuICAgICAgICBpZiAoIXNlbGVjdG9yIHx8ICFpc1N0cmluZyhzZWxlY3RvcikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5yZXBsYWNlKGNvbnRleHRTYW5pdGl6ZVJlLCAnJDEgKicpO1xuXG4gICAgICAgIHZhciByZW1vdmVzO1xuXG4gICAgICAgIGlmIChpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikpIHtcblxuICAgICAgICAgICAgcmVtb3ZlcyA9IFtdO1xuXG4gICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChzZWxlY3RvciwgaSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGN0eCA9IGNvbnRleHQ7XG5cbiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnRyaW0oKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RvclswXSA9PT0gJyEnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9ycyA9IHNlbGVjdG9yLnN1YnN0cigxKS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gY2xvc2VzdChjb250ZXh0LnBhcmVudE5vZGUsIHNlbGVjdG9yc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3JzLnNsaWNlKDEpLmpvaW4oJyAnKS50cmltKCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JbMF0gPT09ICctJykge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvcnMkMSA9IHNlbGVjdG9yLnN1YnN0cigxKS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXYgPSAoY3R4IHx8IGNvbnRleHQpLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IG1hdGNoZXMocHJldiwgc2VsZWN0b3Iuc3Vic3RyKDEpKSA/IHByZXYgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycyQxLnNsaWNlKDEpLmpvaW4oJyAnKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghY3R4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghY3R4LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eC5pZCA9IFwidWstXCIgKyAoRGF0ZS5ub3coKSkgKyBpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2goZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlQXR0cihjdHgsICdpZCcpOyB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFwiI1wiICsgKGVzY2FwZShjdHguaWQpKSArIFwiIFwiICsgc2VsZWN0b3IpO1xuXG4gICAgICAgICAgICB9KS5maWx0ZXIoQm9vbGVhbikuam9pbignLCcpO1xuXG4gICAgICAgICAgICBjb250ZXh0ID0gZG9jdW1lbnQ7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0W3F1ZXJ5Rm5dKHNlbGVjdG9yKTtcblxuICAgICAgICB9IGNhdGNoIChlKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIH0gZmluYWxseSB7XG5cbiAgICAgICAgICAgIHJlbW92ZXMgJiYgcmVtb3Zlcy5mb3JFYWNoKGZ1bmN0aW9uIChyZW1vdmUpIHsgcmV0dXJuIHJlbW92ZSgpOyB9KTtcblxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICB2YXIgY29udGV4dFNlbGVjdG9yUmUgPSAvKF58LClcXHMqWyE+K34tXS87XG4gICAgdmFyIGNvbnRleHRTYW5pdGl6ZVJlID0gLyhbIT4rfi1dKSg/PVxccytbIT4rfi1dfFxccyokKS9nO1xuXG4gICAgZnVuY3Rpb24gaXNDb250ZXh0U2VsZWN0b3Ioc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKHNlbGVjdG9yKSAmJiBzZWxlY3Rvci5tYXRjaChjb250ZXh0U2VsZWN0b3JSZSk7XG4gICAgfVxuXG4gICAgdmFyIGVsUHJvdG8gPSBFbGVtZW50LnByb3RvdHlwZTtcbiAgICB2YXIgbWF0Y2hlc0ZuID0gZWxQcm90by5tYXRjaGVzIHx8IGVsUHJvdG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IGVsUHJvdG8ubXNNYXRjaGVzU2VsZWN0b3I7XG5cbiAgICBmdW5jdGlvbiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoZXNGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSk7XG4gICAgfVxuXG4gICAgdmFyIGNsb3Nlc3RGbiA9IGVsUHJvdG8uY2xvc2VzdCB8fCBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICAgICAgdmFyIGFuY2VzdG9yID0gdGhpcztcblxuICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGVzKGFuY2VzdG9yLCBzZWxlY3RvcikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW5jZXN0b3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50Tm9kZTtcblxuICAgICAgICB9IHdoaWxlIChhbmNlc3RvciAmJiBhbmNlc3Rvci5ub2RlVHlwZSA9PT0gMSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNsb3Nlc3QoZWxlbWVudCwgc2VsZWN0b3IpIHtcblxuICAgICAgICBpZiAoc3RhcnRzV2l0aChzZWxlY3RvciwgJz4nKSkge1xuICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc05vZGUoZWxlbWVudClcbiAgICAgICAgICAgID8gZWxlbWVudC5wYXJlbnROb2RlICYmIGNsb3Nlc3RGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKVxuICAgICAgICAgICAgOiB0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlICYmIGNsb3Nlc3RGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcmVudHMoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gW107XG4gICAgICAgIHZhciBwYXJlbnQgPSB0b05vZGUoZWxlbWVudCkucGFyZW50Tm9kZTtcblxuICAgICAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSA9PT0gMSkge1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcyhwYXJlbnQsIHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocGFyZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWxlbWVudHM7XG4gICAgfVxuXG4gICAgdmFyIGVzY2FwZUZuID0gd2luZG93LkNTUyAmJiBDU1MuZXNjYXBlIHx8IGZ1bmN0aW9uIChjc3MpIHsgcmV0dXJuIGNzcy5yZXBsYWNlKC8oW15cXHg3Zi1cXHVGRkZGXFx3LV0pL2csIGZ1bmN0aW9uIChtYXRjaCkgeyByZXR1cm4gKFwiXFxcXFwiICsgbWF0Y2gpOyB9KTsgfTtcbiAgICBmdW5jdGlvbiBlc2NhcGUoY3NzKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyhjc3MpID8gZXNjYXBlRm4uY2FsbChudWxsLCBjc3MpIDogJyc7XG4gICAgfVxuXG4gICAgdmFyIHZvaWRFbGVtZW50cyA9IHtcbiAgICAgICAgYXJlYTogdHJ1ZSxcbiAgICAgICAgYmFzZTogdHJ1ZSxcbiAgICAgICAgYnI6IHRydWUsXG4gICAgICAgIGNvbDogdHJ1ZSxcbiAgICAgICAgZW1iZWQ6IHRydWUsXG4gICAgICAgIGhyOiB0cnVlLFxuICAgICAgICBpbWc6IHRydWUsXG4gICAgICAgIGlucHV0OiB0cnVlLFxuICAgICAgICBrZXlnZW46IHRydWUsXG4gICAgICAgIGxpbms6IHRydWUsXG4gICAgICAgIG1lbnVpdGVtOiB0cnVlLFxuICAgICAgICBtZXRhOiB0cnVlLFxuICAgICAgICBwYXJhbTogdHJ1ZSxcbiAgICAgICAgc291cmNlOiB0cnVlLFxuICAgICAgICB0cmFjazogdHJ1ZSxcbiAgICAgICAgd2JyOiB0cnVlXG4gICAgfTtcbiAgICBmdW5jdGlvbiBpc1ZvaWRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gdm9pZEVsZW1lbnRzW2VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpXTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWaXNpYmxlKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCBlbGVtZW50LmdldENsaWVudFJlY3RzKCkubGVuZ3RoOyB9KTtcbiAgICB9XG5cbiAgICB2YXIgc2VsSW5wdXQgPSAnaW5wdXQsc2VsZWN0LHRleHRhcmVhLGJ1dHRvbic7XG4gICAgZnVuY3Rpb24gaXNJbnB1dChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCwgc2VsSW5wdXQpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaWx0ZXIoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2l0aGluKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiAhaXNTdHJpbmcoc2VsZWN0b3IpXG4gICAgICAgICAgICA/IGVsZW1lbnQgPT09IHNlbGVjdG9yIHx8IChpc0RvY3VtZW50KHNlbGVjdG9yKVxuICAgICAgICAgICAgICAgID8gc2VsZWN0b3IuZG9jdW1lbnRFbGVtZW50XG4gICAgICAgICAgICAgICAgOiB0b05vZGUoc2VsZWN0b3IpKS5jb250YWlucyh0b05vZGUoZWxlbWVudCkpIC8vIElFIDExIGRvY3VtZW50IGRvZXMgbm90IGltcGxlbWVudCBjb250YWluc1xuICAgICAgICAgICAgOiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSB8fCBjbG9zZXN0KGVsZW1lbnQsIHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuXG4gICAgICAgIHZhciByZWYgPSBnZXRBcmdzKGFyZ3MpO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmWzBdO1xuICAgICAgICB2YXIgdHlwZSA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gcmVmWzJdO1xuICAgICAgICB2YXIgbGlzdGVuZXIgPSByZWZbM107XG4gICAgICAgIHZhciB1c2VDYXB0dXJlID0gcmVmWzRdO1xuXG4gICAgICAgIHRhcmdldCA9IHRvRXZlbnRUYXJnZXQodGFyZ2V0KTtcblxuICAgICAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyID0gZGVsZWdhdGUodGFyZ2V0LCBzZWxlY3RvciwgbGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpc3RlbmVyLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyID0gZGV0YWlsKGxpc3RlbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOyB9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9mZih0YXJnZXQsIHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvZmYodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkge1xuICAgICAgICBpZiAoIHVzZUNhcHR1cmUgPT09IHZvaWQgMCApIHVzZUNhcHR1cmUgPSBmYWxzZTtcblxuICAgICAgICB0YXJnZXQgPSB0b0V2ZW50VGFyZ2V0KHRhcmdldCk7XG4gICAgICAgIHRhcmdldCAmJiB0eXBlLnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbmNlKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG5cbiAgICAgICAgdmFyIHJlZiA9IGdldEFyZ3MoYXJncyk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gcmVmWzBdO1xuICAgICAgICB2YXIgdHlwZSA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gcmVmWzJdO1xuICAgICAgICB2YXIgbGlzdGVuZXIgPSByZWZbM107XG4gICAgICAgIHZhciB1c2VDYXB0dXJlID0gcmVmWzRdO1xuICAgICAgICB2YXIgY29uZGl0aW9uID0gcmVmWzVdO1xuICAgICAgICB2YXIgb2ZmID0gb24oZWxlbWVudCwgdHlwZSwgc2VsZWN0b3IsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gIWNvbmRpdGlvbiB8fCBjb25kaXRpb24oZSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgb2ZmKCk7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZSwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgdXNlQ2FwdHVyZSk7XG5cbiAgICAgICAgcmV0dXJuIG9mZjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmlnZ2VyKHRhcmdldCwgZXZlbnQsIGRldGFpbCkge1xuICAgICAgICByZXR1cm4gdG9FdmVudFRhcmdldHModGFyZ2V0KS5yZWR1Y2UoZnVuY3Rpb24gKG5vdENhbmNlbGVkLCB0YXJnZXQpIHsgcmV0dXJuIG5vdENhbmNlbGVkICYmIHRhcmdldC5kaXNwYXRjaEV2ZW50KGNyZWF0ZUV2ZW50KGV2ZW50LCB0cnVlLCB0cnVlLCBkZXRhaWwpKTsgfVxuICAgICAgICAgICAgLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVFdmVudChlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXRhaWwpIHtcbiAgICAgICAgaWYgKCBidWJibGVzID09PSB2b2lkIDAgKSBidWJibGVzID0gdHJ1ZTtcbiAgICAgICAgaWYgKCBjYW5jZWxhYmxlID09PSB2b2lkIDAgKSBjYW5jZWxhYmxlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKGUpKSB7XG4gICAgICAgICAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTsgLy8gSUUgMTFcbiAgICAgICAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudChlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXRhaWwpO1xuICAgICAgICAgICAgZSA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0QXJncyhhcmdzKSB7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKGFyZ3NbMF0pKSB7XG4gICAgICAgICAgICBhcmdzWzBdID0gZmluZChhcmdzWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGFyZ3NbMl0pKSB7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgyLCAwLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVsZWdhdGUoZWxlbWVudCwgc2VsZWN0b3IsIGxpc3RlbmVyKSB7XG4gICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICB2YXIgY3VycmVudCA9IHNlbGVjdG9yWzBdID09PSAnPidcbiAgICAgICAgICAgICAgICA/IGZpbmRBbGwoc2VsZWN0b3IsIGVsZW1lbnQpLnJldmVyc2UoKS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsZW1lbnQpOyB9KVswXVxuICAgICAgICAgICAgICAgIDogY2xvc2VzdCh0YXJnZXQsIHNlbGVjdG9yKTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBlLmRlbGVnYXRlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBlLmN1cnJlbnQgPSBjdXJyZW50O1xuXG4gICAgICAgICAgICAgICAgbGlzdGVuZXIuY2FsbCh0aGlzJDEsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRldGFpbChsaXN0ZW5lcikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGlzQXJyYXkoZS5kZXRhaWwpID8gbGlzdGVuZXIuYXBwbHkodm9pZCAwLCBbZV0uY29uY2F0KGUuZGV0YWlsKSkgOiBsaXN0ZW5lcihlKTsgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0V2ZW50VGFyZ2V0KHRhcmdldCkge1xuICAgICAgICByZXR1cm4gJ0V2ZW50VGFyZ2V0JyBpbiB3aW5kb3dcbiAgICAgICAgICAgID8gdGFyZ2V0IGluc3RhbmNlb2YgRXZlbnRUYXJnZXRcbiAgICAgICAgICAgIDogdGFyZ2V0ICYmICdhZGRFdmVudExpc3RlbmVyJyBpbiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9FdmVudFRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIGlzRXZlbnRUYXJnZXQodGFyZ2V0KSA/IHRhcmdldCA6IHRvTm9kZSh0YXJnZXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvRXZlbnRUYXJnZXRzKHRhcmdldCkge1xuICAgICAgICByZXR1cm4gaXNFdmVudFRhcmdldCh0YXJnZXQpXG4gICAgICAgICAgICA/IFt0YXJnZXRdXG4gICAgICAgICAgICA6IGlzQXJyYXkodGFyZ2V0KVxuICAgICAgICAgICAgICAgID8gdGFyZ2V0Lm1hcCh0b0V2ZW50VGFyZ2V0KS5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICA6IHRvTm9kZXModGFyZ2V0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmV2ZW50Q2xpY2soKSB7XG5cbiAgICAgICAgdmFyIHRpbWVyID0gc2V0VGltZW91dChvbmNlKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuXG4gICAgICAgIH0sIHRydWUpKTtcblxuICAgICAgICB0cmlnZ2VyKGRvY3VtZW50LCAndG91Y2hjYW5jZWwnKTtcblxuICAgIH1cblxuICAgIC8qIGdsb2JhbCBzZXRJbW1lZGlhdGUgKi9cblxuICAgIHZhciBQcm9taXNlJDEgPSAnUHJvbWlzZScgaW4gd2luZG93ID8gd2luZG93LlByb21pc2UgOiBQcm9taXNlRm47XG5cbiAgICB2YXIgRGVmZXJyZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB0aGlzJDEucmVqZWN0ID0gcmVqZWN0O1xuICAgICAgICAgICAgdGhpcyQxLnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUHJvbWlzZXMvQSsgcG9seWZpbGwgdjEuMS40IChodHRwczovL2dpdGh1Yi5jb20vYnJhbXN0ZWluL3Byb21pcylcbiAgICAgKi9cblxuICAgIHZhciBSRVNPTFZFRCA9IDA7XG4gICAgdmFyIFJFSkVDVEVEID0gMTtcbiAgICB2YXIgUEVORElORyA9IDI7XG5cbiAgICB2YXIgYXN5bmMgPSAnc2V0SW1tZWRpYXRlJyBpbiB3aW5kb3cgPyBzZXRJbW1lZGlhdGUgOiBzZXRUaW1lb3V0O1xuXG4gICAgZnVuY3Rpb24gUHJvbWlzZUZuKGV4ZWN1dG9yKSB7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IFBFTkRJTkc7XG4gICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZGVmZXJyZWQgPSBbXTtcblxuICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXM7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGV4ZWN1dG9yKFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSh4KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgUHJvbWlzZUZuLnJlamVjdCA9IGZ1bmN0aW9uIChyKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHJlamVjdChyKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFByb21pc2VGbi5yZXNvbHZlID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgcmVzb2x2ZSh4KTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFByb21pc2VGbi5hbGwgPSBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcblxuICAgICAgICAgICAgaWYgKGl0ZXJhYmxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gcmVzb2x2ZXIoaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSB4O1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PT0gaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZXJhYmxlLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZUZuLnJlc29sdmUoaXRlcmFibGVbaV0pLnRoZW4ocmVzb2x2ZXIoaSksIHJlamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBQcm9taXNlRm4ucmFjZSA9IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyYWJsZS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIFByb21pc2VGbi5yZXNvbHZlKGl0ZXJhYmxlW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICB2YXIgcCA9IFByb21pc2VGbi5wcm90b3R5cGU7XG5cbiAgICBwLnJlc29sdmUgPSBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgICAgIGlmIChwcm9taXNlLnN0YXRlID09PSBQRU5ESU5HKSB7XG4gICAgICAgICAgICBpZiAoeCA9PT0gcHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2Ugc2V0dGxlZCB3aXRoIGl0c2VsZi4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciB0aGVuID0geCAmJiB4LnRoZW47XG5cbiAgICAgICAgICAgICAgICBpZiAoeCAhPT0gbnVsbCAmJiBpc09iamVjdCh4KSAmJiBpc0Z1bmN0aW9uKHRoZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoZW4uY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSh4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb21pc2Uuc3RhdGUgPSBSRVNPTFZFRDtcbiAgICAgICAgICAgIHByb21pc2UudmFsdWUgPSB4O1xuICAgICAgICAgICAgcHJvbWlzZS5ub3RpZnkoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwLnJlamVjdCA9IGZ1bmN0aW9uIHJlamVjdChyZWFzb24pIHtcbiAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgICAgIGlmIChwcm9taXNlLnN0YXRlID09PSBQRU5ESU5HKSB7XG4gICAgICAgICAgICBpZiAocmVhc29uID09PSBwcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZSBzZXR0bGVkIHdpdGggaXRzZWxmLicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcm9taXNlLnN0YXRlID0gUkVKRUNURUQ7XG4gICAgICAgICAgICBwcm9taXNlLnZhbHVlID0gcmVhc29uO1xuICAgICAgICAgICAgcHJvbWlzZS5ub3RpZnkoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwLm5vdGlmeSA9IGZ1bmN0aW9uIG5vdGlmeSgpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgYXN5bmMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMkMS5zdGF0ZSAhPT0gUEVORElORykge1xuICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzJDEuZGVmZXJyZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzJDEuZGVmZXJyZWQuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9uUmVzb2x2ZWQgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBvblJlamVjdGVkID0gcmVmWzFdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZSA9IHJlZlsyXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlamVjdCA9IHJlZlszXTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5zdGF0ZSA9PT0gUkVTT0xWRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvblJlc29sdmVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uUmVzb2x2ZWQuY2FsbCh1bmRlZmluZWQsIHRoaXMkMS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcyQxLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMkMS5zdGF0ZSA9PT0gUkVKRUNURUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvblJlamVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uUmVqZWN0ZWQuY2FsbCh1bmRlZmluZWQsIHRoaXMkMS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCh0aGlzJDEudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcC50aGVuID0gZnVuY3Rpb24gdGhlbihvblJlc29sdmVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHRoaXMkMS5kZWZlcnJlZC5wdXNoKFtvblJlc29sdmVkLCBvblJlamVjdGVkLCByZXNvbHZlLCByZWplY3RdKTtcbiAgICAgICAgICAgIHRoaXMkMS5ub3RpZnkoKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHAuY2F0Y2ggPSBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGFqYXgodXJsLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgdmFyIGVudiA9IGFzc2lnbih7XG4gICAgICAgICAgICAgICAgZGF0YTogbnVsbCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICAgICAgICAgIHhocjogbmV3IFhNTEh0dHBSZXF1ZXN0KCksXG4gICAgICAgICAgICAgICAgYmVmb3JlU2VuZDogbm9vcCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICcnXG4gICAgICAgICAgICB9LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgZW52LmJlZm9yZVNlbmQoZW52KTtcblxuICAgICAgICAgICAgdmFyIHhociA9IGVudi54aHI7XG5cbiAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gZW52KSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3AgaW4geGhyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHhocltwcm9wXSA9IGVudltwcm9wXTtcblxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeGhyLm9wZW4oZW52Lm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB1cmwpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gZW52LmhlYWRlcnMpIHtcbiAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihoZWFkZXIsIGVudi5oZWFkZXJzW2hlYWRlcl0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvbih4aHIsICdsb2FkJywgZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDAgfHwgeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCB8fCB4aHIuc3RhdHVzID09PSAzMDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh4aHIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChhc3NpZ24oRXJyb3IoeGhyLnN0YXR1c1RleHQpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4aHI6IHhocixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogeGhyLnN0YXR1c1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgb24oeGhyLCAnZXJyb3InLCBmdW5jdGlvbiAoKSB7IHJldHVybiByZWplY3QoYXNzaWduKEVycm9yKCdOZXR3b3JrIEVycm9yJyksIHt4aHI6IHhocn0pKTsgfSk7XG4gICAgICAgICAgICBvbih4aHIsICd0aW1lb3V0JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVqZWN0KGFzc2lnbihFcnJvcignTmV0d29yayBUaW1lb3V0JyksIHt4aHI6IHhocn0pKTsgfSk7XG5cbiAgICAgICAgICAgIHhoci5zZW5kKGVudi5kYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SW1hZ2Uoc3JjLCBzcmNzZXQsIHNpemVzKSB7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xuXG4gICAgICAgICAgICBpbWcub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlKGltZyk7IH07XG5cbiAgICAgICAgICAgIGltZy5zcmMgPSBzcmM7XG4gICAgICAgICAgICBzcmNzZXQgJiYgKGltZy5zcmNzZXQgPSBzcmNzZXQpO1xuICAgICAgICAgICAgc2l6ZXMgJiYgKGltZy5zaXplcyA9IHNpemVzKTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1JlYWR5KCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJyB8fCBkb2N1bWVudC5yZWFkeVN0YXRlICE9PSAnbG9hZGluZycgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWFkeShmbikge1xuXG4gICAgICAgIGlmIChpc1JlYWR5KCkpIHtcbiAgICAgICAgICAgIGZuKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaGFuZGxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdW5iaW5kMSgpO1xuICAgICAgICAgICAgdW5iaW5kMigpO1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVuYmluZDEgPSBvbihkb2N1bWVudCwgJ0RPTUNvbnRlbnRMb2FkZWQnLCBoYW5kbGUpO1xuICAgICAgICB2YXIgdW5iaW5kMiA9IG9uKHdpbmRvdywgJ2xvYWQnLCBoYW5kbGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluZGV4KGVsZW1lbnQsIHJlZikge1xuICAgICAgICByZXR1cm4gcmVmXG4gICAgICAgICAgICA/IHRvTm9kZXMoZWxlbWVudCkuaW5kZXhPZih0b05vZGUocmVmKSlcbiAgICAgICAgICAgIDogdG9Ob2RlcygoZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KSkgJiYgZWxlbWVudC5wYXJlbnROb2RlLmNoaWxkcmVuKS5pbmRleE9mKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEluZGV4KGksIGVsZW1lbnRzLCBjdXJyZW50LCBmaW5pdGUpIHtcbiAgICAgICAgaWYgKCBjdXJyZW50ID09PSB2b2lkIDAgKSBjdXJyZW50ID0gMDtcbiAgICAgICAgaWYgKCBmaW5pdGUgPT09IHZvaWQgMCApIGZpbml0ZSA9IGZhbHNlO1xuXG5cbiAgICAgICAgZWxlbWVudHMgPSB0b05vZGVzKGVsZW1lbnRzKTtcblxuICAgICAgICB2YXIgbGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuXG4gICAgICAgIGkgPSBpc051bWVyaWMoaSlcbiAgICAgICAgICAgID8gdG9OdW1iZXIoaSlcbiAgICAgICAgICAgIDogaSA9PT0gJ25leHQnXG4gICAgICAgICAgICAgICAgPyBjdXJyZW50ICsgMVxuICAgICAgICAgICAgICAgIDogaSA9PT0gJ3ByZXZpb3VzJ1xuICAgICAgICAgICAgICAgICAgICA/IGN1cnJlbnQgLSAxXG4gICAgICAgICAgICAgICAgICAgIDogaW5kZXgoZWxlbWVudHMsIGkpO1xuXG4gICAgICAgIGlmIChmaW5pdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjbGFtcChpLCAwLCBsZW5ndGggLSAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGkgJT0gbGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBpIDwgMCA/IGkgKyBsZW5ndGggOiBpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtcHR5KGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaHRtbChwYXJlbnQsIGh0bWwpIHtcbiAgICAgICAgcGFyZW50ID0gdG9Ob2RlKHBhcmVudCk7XG4gICAgICAgIHJldHVybiBpc1VuZGVmaW5lZChodG1sKVxuICAgICAgICAgICAgPyBwYXJlbnQuaW5uZXJIVE1MXG4gICAgICAgICAgICA6IGFwcGVuZChwYXJlbnQuaGFzQ2hpbGROb2RlcygpID8gZW1wdHkocGFyZW50KSA6IHBhcmVudCwgaHRtbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcGVuZChwYXJlbnQsIGVsZW1lbnQpIHtcblxuICAgICAgICBwYXJlbnQgPSB0b05vZGUocGFyZW50KTtcblxuICAgICAgICBpZiAoIXBhcmVudC5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBlbmQocGFyZW50LCBlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlcyhlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCBwYXJlbnQuZmlyc3RDaGlsZCk7IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwZW5kKHBhcmVudCwgZWxlbWVudCkge1xuICAgICAgICBwYXJlbnQgPSB0b05vZGUocGFyZW50KTtcbiAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJlZm9yZShyZWYsIGVsZW1lbnQpIHtcbiAgICAgICAgcmVmID0gdG9Ob2RlKHJlZik7XG4gICAgICAgIHJldHVybiBpbnNlcnROb2RlcyhlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gcmVmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHJlZik7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFmdGVyKHJlZiwgZWxlbWVudCkge1xuICAgICAgICByZWYgPSB0b05vZGUocmVmKTtcbiAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiByZWYubmV4dFNpYmxpbmdcbiAgICAgICAgICAgID8gYmVmb3JlKHJlZi5uZXh0U2libGluZywgZWxlbWVudClcbiAgICAgICAgICAgIDogYXBwZW5kKHJlZi5wYXJlbnROb2RlLCBlbGVtZW50KTsgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc2VydE5vZGVzKGVsZW1lbnQsIGZuKSB7XG4gICAgICAgIGVsZW1lbnQgPSBpc1N0cmluZyhlbGVtZW50KSA/IGZyYWdtZW50KGVsZW1lbnQpIDogZWxlbWVudDtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRcbiAgICAgICAgICAgID8gJ2xlbmd0aCcgaW4gZWxlbWVudFxuICAgICAgICAgICAgICAgID8gdG9Ob2RlcyhlbGVtZW50KS5tYXAoZm4pXG4gICAgICAgICAgICAgICAgOiBmbihlbGVtZW50KVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZShlbGVtZW50KSB7XG4gICAgICAgIHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnBhcmVudE5vZGUgJiYgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3cmFwQWxsKGVsZW1lbnQsIHN0cnVjdHVyZSkge1xuXG4gICAgICAgIHN0cnVjdHVyZSA9IHRvTm9kZShiZWZvcmUoZWxlbWVudCwgc3RydWN0dXJlKSk7XG5cbiAgICAgICAgd2hpbGUgKHN0cnVjdHVyZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUuZmlyc3RDaGlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGVuZChzdHJ1Y3R1cmUsIGVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd3JhcElubmVyKGVsZW1lbnQsIHN0cnVjdHVyZSkge1xuICAgICAgICByZXR1cm4gdG9Ob2Rlcyh0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNDaGlsZE5vZGVzID8gd3JhcEFsbCh0b05vZGVzKGVsZW1lbnQuY2hpbGROb2RlcyksIHN0cnVjdHVyZSkgOiBhcHBlbmQoZWxlbWVudCwgc3RydWN0dXJlKTsgfVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bndyYXAoZWxlbWVudCkge1xuICAgICAgICB0b05vZGVzKGVsZW1lbnQpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnBhcmVudE5vZGU7IH0pXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIHNlbGYpIHsgcmV0dXJuIHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4OyB9KVxuICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIGJlZm9yZShwYXJlbnQsIHBhcmVudC5jaGlsZE5vZGVzKTtcbiAgICAgICAgICAgICAgICByZW1vdmUocGFyZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBmcmFnbWVudFJlID0gL15cXHMqPChcXHcrfCEpW14+XSo+LztcbiAgICB2YXIgc2luZ2xlVGFnUmUgPSAvXjwoXFx3KylcXHMqXFwvPz4oPzo8XFwvXFwxPik/JC87XG5cbiAgICBmdW5jdGlvbiBmcmFnbWVudChodG1sKSB7XG5cbiAgICAgICAgdmFyIG1hdGNoZXMgPSBzaW5nbGVUYWdSZS5leGVjKGh0bWwpO1xuICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobWF0Y2hlc1sxXSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGlmIChmcmFnbWVudFJlLnRlc3QoaHRtbCkpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIGh0bWwudHJpbSgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci50ZXh0Q29udGVudCA9IGh0bWw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGFpbmVyLmNoaWxkTm9kZXMubGVuZ3RoID4gMSA/IHRvTm9kZXMoY29udGFpbmVyLmNoaWxkTm9kZXMpIDogY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseShub2RlLCBmbikge1xuXG4gICAgICAgIGlmICghbm9kZSB8fCBub2RlLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmbihub2RlKTtcbiAgICAgICAgbm9kZSA9IG5vZGUuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICBhcHBseShub2RlLCBmbik7XG4gICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRDbGFzcyhlbGVtZW50KSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cbiAgICAgICAgYXBwbHkkMShlbGVtZW50LCBhcmdzLCAnYWRkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoZWxlbWVudCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG4gICAgICAgIGFwcGx5JDEoZWxlbWVudCwgYXJncywgJ3JlbW92ZScpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUNsYXNzZXMoZWxlbWVudCwgY2xzKSB7XG4gICAgICAgIGZpbHRlckF0dHIoZWxlbWVudCwgJ2NsYXNzJywgbmV3IFJlZ0V4cCgoXCIoXnxcXFxccylcIiArIGNscyArIFwiKD8hXFxcXFMpXCIpLCAnZycpLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZUNsYXNzKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuICAgICAgICBhcmdzWzBdICYmIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGFyZ3NbMF0pO1xuICAgICAgICBhcmdzWzFdICYmIGFkZENsYXNzKGVsZW1lbnQsIGFyZ3NbMV0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNscykge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbHMpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b2dnbGVDbGFzcyhlbGVtZW50KSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cblxuICAgICAgICBpZiAoIWFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhcmdzID0gZ2V0QXJncyQxKGFyZ3MpO1xuXG4gICAgICAgIHZhciBmb3JjZSA9ICFpc1N0cmluZyhhcmdzW2FyZ3MubGVuZ3RoIC0gMV0pID8gYXJncy5wb3AoKSA6IFtdOyAvLyBpbiBpT1MgOS4zIGZvcmNlID09PSB1bmRlZmluZWQgZXZhbHVhdGVzIHRvIGZhbHNlXG5cbiAgICAgICAgYXJncyA9IGFyZ3MuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgIHRvTm9kZXMoZWxlbWVudCkuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgY2xhc3NMaXN0ID0gcmVmLmNsYXNzTGlzdDtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydHMuRm9yY2VcbiAgICAgICAgICAgICAgICAgICAgPyBjbGFzc0xpc3QudG9nZ2xlLmFwcGx5KGNsYXNzTGlzdCwgW2FyZ3NbaV1dLmNvbmNhdChmb3JjZSkpXG4gICAgICAgICAgICAgICAgICAgIDogKGNsYXNzTGlzdFsoIWlzVW5kZWZpbmVkKGZvcmNlKSA/IGZvcmNlIDogIWNsYXNzTGlzdC5jb250YWlucyhhcmdzW2ldKSkgPyAnYWRkJyA6ICdyZW1vdmUnXShhcmdzW2ldKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHkkMShlbGVtZW50LCBhcmdzLCBmbikge1xuICAgICAgICBhcmdzID0gZ2V0QXJncyQxKGFyZ3MpLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgICBhcmdzLmxlbmd0aCAmJiB0b05vZGVzKGVsZW1lbnQpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGNsYXNzTGlzdCA9IHJlZi5jbGFzc0xpc3Q7XG5cbiAgICAgICAgICAgIHN1cHBvcnRzLk11bHRpcGxlXG4gICAgICAgICAgICAgICAgPyBjbGFzc0xpc3RbZm5dLmFwcGx5KGNsYXNzTGlzdCwgYXJncylcbiAgICAgICAgICAgICAgICA6IGFyZ3MuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7IHJldHVybiBjbGFzc0xpc3RbZm5dKGNscyk7IH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRBcmdzJDEoYXJncykge1xuICAgICAgICByZXR1cm4gYXJncy5yZWR1Y2UoZnVuY3Rpb24gKGFyZ3MsIGFyZykgeyByZXR1cm4gYXJncy5jb25jYXQuY2FsbChhcmdzLCBpc1N0cmluZyhhcmcpICYmIGluY2x1ZGVzKGFyZywgJyAnKSA/IGFyZy50cmltKCkuc3BsaXQoJyAnKSA6IGFyZyk7IH1cbiAgICAgICAgICAgICwgW10pO1xuICAgIH1cblxuICAgIHZhciBzdXBwb3J0cyA9IHt9O1xuXG4gICAgLy8gSUUgMTFcbiAgICAoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnXycpLmNsYXNzTGlzdDtcbiAgICAgICAgaWYgKGxpc3QpIHtcbiAgICAgICAgICAgIGxpc3QuYWRkKCdhJywgJ2InKTtcbiAgICAgICAgICAgIGxpc3QudG9nZ2xlKCdjJywgZmFsc2UpO1xuICAgICAgICAgICAgc3VwcG9ydHMuTXVsdGlwbGUgPSBsaXN0LmNvbnRhaW5zKCdiJyk7XG4gICAgICAgICAgICBzdXBwb3J0cy5Gb3JjZSA9ICFsaXN0LmNvbnRhaW5zKCdjJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGlzdCA9IG51bGw7XG5cbiAgICB9KSgpO1xuXG4gICAgdmFyIGNzc051bWJlciA9IHtcbiAgICAgICAgJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnOiB0cnVlLFxuICAgICAgICAnY29sdW1uLWNvdW50JzogdHJ1ZSxcbiAgICAgICAgJ2ZpbGwtb3BhY2l0eSc6IHRydWUsXG4gICAgICAgICdmbGV4LWdyb3cnOiB0cnVlLFxuICAgICAgICAnZmxleC1zaHJpbmsnOiB0cnVlLFxuICAgICAgICAnZm9udC13ZWlnaHQnOiB0cnVlLFxuICAgICAgICAnbGluZS1oZWlnaHQnOiB0cnVlLFxuICAgICAgICAnb3BhY2l0eSc6IHRydWUsXG4gICAgICAgICdvcmRlcic6IHRydWUsXG4gICAgICAgICdvcnBoYW5zJzogdHJ1ZSxcbiAgICAgICAgJ3dpZG93cyc6IHRydWUsXG4gICAgICAgICd6LWluZGV4JzogdHJ1ZSxcbiAgICAgICAgJ3pvb20nOiB0cnVlXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNzcyhlbGVtZW50LCBwcm9wZXJ0eSwgdmFsdWUpIHtcblxuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHByb3BlcnR5KSkge1xuXG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwcm9wTmFtZShwcm9wZXJ0eSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdHlsZShlbGVtZW50LCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBpc051bWVyaWModmFsdWUpICYmICFjc3NOdW1iZXJbcHJvcGVydHldID8gKHZhbHVlICsgXCJweFwiKSA6IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KHByb3BlcnR5KSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHN0eWxlcyA9IGdldFN0eWxlcyhlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1twcm9wZXJ0eV0gPSBzdHlsZXNbcHJvcE5hbWUocHJvcGVydHkpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc09iamVjdChwcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICBlYWNoKHByb3BlcnR5LCBmdW5jdGlvbiAodmFsdWUsIHByb3BlcnR5KSB7IHJldHVybiBjc3MoZWxlbWVudCwgcHJvcGVydHksIHZhbHVlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuXG4gICAgICAgIH0pWzBdO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U3R5bGVzKGVsZW1lbnQsIHBzZXVkb0VsdCkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgcHNldWRvRWx0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTdHlsZShlbGVtZW50LCBwcm9wZXJ0eSwgcHNldWRvRWx0KSB7XG4gICAgICAgIHJldHVybiBnZXRTdHlsZXMoZWxlbWVudCwgcHNldWRvRWx0KVtwcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgdmFyIHZhcnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGdldENzc1ZhcihuYW1lKSB7XG5cbiAgICAgICAgaWYgKCEobmFtZSBpbiB2YXJzKSkge1xuXG4gICAgICAgICAgICAvKiB1c2FnZSBpbiBjc3M6IC52YXItbmFtZTpiZWZvcmUgeyBjb250ZW50OlwieHl6XCIgfSAqL1xuXG4gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGFwcGVuZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcblxuICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgKFwidmFyLVwiICsgbmFtZSkpO1xuXG4gICAgICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICAgICAgdmFyc1tuYW1lXSA9IGdldFN0eWxlKGVsZW1lbnQsICdjb250ZW50JywgJzpiZWZvcmUnKS5yZXBsYWNlKC9eW1wiJ10oLiopW1wiJ10kLywgJyQxJyk7XG4gICAgICAgICAgICAgICAgdmFyc1tuYW1lXSA9IEpTT04ucGFyc2UodmFyc1tuYW1lXSk7XG5cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZChlbGVtZW50KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhcnNbbmFtZV07XG5cbiAgICB9XG5cbiAgICB2YXIgY3NzUHJvcHMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIHByb3BOYW1lKG5hbWUpIHtcblxuICAgICAgICB2YXIgcmV0ID0gY3NzUHJvcHNbbmFtZV07XG4gICAgICAgIGlmICghcmV0KSB7XG4gICAgICAgICAgICByZXQgPSBjc3NQcm9wc1tuYW1lXSA9IHZlbmRvclByb3BOYW1lKG5hbWUpIHx8IG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICB2YXIgY3NzUHJlZml4ZXMgPSBbJ3dlYmtpdCcsICdtb3onLCAnbXMnXTtcbiAgICB2YXIgcmVmJDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdfJyk7XG4gICAgdmFyIHN0eWxlID0gcmVmJDEuc3R5bGU7XG5cbiAgICBmdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZShuYW1lKSB7XG5cbiAgICAgICAgbmFtZSA9IGh5cGhlbmF0ZShuYW1lKTtcblxuICAgICAgICBpZiAobmFtZSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSA9IGNzc1ByZWZpeGVzLmxlbmd0aCwgcHJlZml4ZWROYW1lO1xuXG4gICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgIHByZWZpeGVkTmFtZSA9IFwiLVwiICsgKGNzc1ByZWZpeGVzW2ldKSArIFwiLVwiICsgbmFtZTtcbiAgICAgICAgICAgIGlmIChwcmVmaXhlZE5hbWUgaW4gc3R5bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ZWROYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNpdGlvbihlbGVtZW50LCBwcm9wcywgZHVyYXRpb24sIHRpbWluZykge1xuICAgICAgICBpZiAoIGR1cmF0aW9uID09PSB2b2lkIDAgKSBkdXJhdGlvbiA9IDQwMDtcbiAgICAgICAgaWYgKCB0aW1pbmcgPT09IHZvaWQgMCApIHRpbWluZyA9ICdsaW5lYXInO1xuXG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UkMS5hbGwodG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBwcm9wcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBjc3MoZWxlbWVudCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRyaWdnZXIoZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnKTsgfSwgZHVyYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgb25jZShlbGVtZW50LCAndHJhbnNpdGlvbmVuZCB0cmFuc2l0aW9uY2FuY2VsZWQnLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG5cbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXByb3BlcnR5JzogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJzogJydcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICd0cmFuc2l0aW9uY2FuY2VsZWQnID8gcmVqZWN0KCkgOiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSwgZmFsc2UsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT09IHRhcmdldDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKGVsZW1lbnQsICd1ay10cmFuc2l0aW9uJyk7XG4gICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIGFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXByb3BlcnR5JzogT2JqZWN0LmtleXMocHJvcHMpLm1hcChwcm9wTmFtZSkuam9pbignLCcpLFxuICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6IChkdXJhdGlvbiArIFwibXNcIiksXG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbic6IHRpbWluZ1xuICAgICAgICAgICAgICAgIH0sIHByb3BzKSk7XG5cbiAgICAgICAgICAgIH0pOyB9XG4gICAgICAgICkpO1xuXG4gICAgfVxuXG4gICAgdmFyIFRyYW5zaXRpb24gPSB7XG5cbiAgICAgICAgc3RhcnQ6IHRyYW5zaXRpb24sXG5cbiAgICAgICAgc3RvcDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgdHJpZ2dlcihlbGVtZW50LCAndHJhbnNpdGlvbmVuZCcpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyKGVsZW1lbnQsICd0cmFuc2l0aW9uY2FuY2VsZWQnKTtcbiAgICAgICAgfSxcblxuICAgICAgICBpblByb2dyZXNzOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFzQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBhbmltYXRpb25QcmVmaXggPSAndWstYW5pbWF0aW9uLSc7XG4gICAgdmFyIGNsc0NhbmNlbEFuaW1hdGlvbiA9ICd1ay1jYW5jZWwtYW5pbWF0aW9uJztcblxuICAgIGZ1bmN0aW9uIGFuaW1hdGUoZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luLCBvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuICAgICAgICBpZiAoIGR1cmF0aW9uID09PSB2b2lkIDAgKSBkdXJhdGlvbiA9IDIwMDtcblxuXG4gICAgICAgIHJldHVybiBQcm9taXNlJDEuYWxsKHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgICAgIGlmIChoYXNDbGFzcyhlbGVtZW50LCBjbHNDYW5jZWxBbmltYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gYW5pbWF0ZS5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyQxKS50aGVuKHJlc29sdmUsIHJlamVjdCk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBjbHMgPSBhbmltYXRpb24gKyBcIiBcIiArIGFuaW1hdGlvblByZWZpeCArIChvdXQgPyAnbGVhdmUnIDogJ2VudGVyJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aChhbmltYXRpb24sIGFuaW1hdGlvblByZWZpeCkpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHMgKz0gXCIgdWstdHJhbnNmb3JtLW9yaWdpbi1cIiArIG9yaWdpbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNscyArPSBcIiBcIiArIGFuaW1hdGlvblByZWZpeCArIFwicmV2ZXJzZVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgICAgICAgb25jZShlbGVtZW50LCAnYW5pbWF0aW9uZW5kIGFuaW1hdGlvbmNhbmNlbCcsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBoYXNSZXNldCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnYW5pbWF0aW9uY2FuY2VsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgUHJvbWlzZSQxLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNSZXNldCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFzUmVzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhlbGVtZW50LCBjbHNDYW5jZWxBbmltYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsc0NhbmNlbEFuaW1hdGlvbik7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0sIGZhbHNlLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ID09PSB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgJ2FuaW1hdGlvbkR1cmF0aW9uJywgKGR1cmF0aW9uICsgXCJtc1wiKSk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgY2xzKTtcblxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJycpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzc2VzKGVsZW1lbnQsIChhbmltYXRpb25QcmVmaXggKyBcIlxcXFxTKlwiKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTsgfVxuICAgICAgICApKTtcblxuICAgIH1cblxuICAgIHZhciBpblByb2dyZXNzID0gbmV3IFJlZ0V4cCgoYW5pbWF0aW9uUHJlZml4ICsgXCIoZW50ZXJ8bGVhdmUpXCIpKTtcbiAgICB2YXIgQW5pbWF0aW9uID0ge1xuXG4gICAgICAgIGluOiBmdW5jdGlvbihlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBhbmltYXRlKGVsZW1lbnQsIGFuaW1hdGlvbiwgZHVyYXRpb24sIG9yaWdpbiwgZmFsc2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dDogZnVuY3Rpb24oZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gYW5pbWF0ZShlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4sIHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGluUHJvZ3Jlc3M6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBpblByb2dyZXNzLnRlc3QoYXR0cihlbGVtZW50LCAnY2xhc3MnKSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyKGVsZW1lbnQsICdhbmltYXRpb25jYW5jZWwnKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uICQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuICFpc1N0cmluZyhzZWxlY3RvcilcbiAgICAgICAgICAgID8gdG9Ob2RlKHNlbGVjdG9yKVxuICAgICAgICAgICAgOiBpc0h0bWwoc2VsZWN0b3IpXG4gICAgICAgICAgICAgICAgPyB0b05vZGUoZnJhZ21lbnQoc2VsZWN0b3IpKVxuICAgICAgICAgICAgICAgIDogZmluZChzZWxlY3RvciwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gJCQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuICFpc1N0cmluZyhzZWxlY3RvcilcbiAgICAgICAgICAgID8gdG9Ob2RlcyhzZWxlY3RvcilcbiAgICAgICAgICAgIDogaXNIdG1sKHNlbGVjdG9yKVxuICAgICAgICAgICAgICAgID8gdG9Ob2RlcyhmcmFnbWVudChzZWxlY3RvcikpXG4gICAgICAgICAgICAgICAgOiBmaW5kQWxsKHNlbGVjdG9yLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0h0bWwoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHJbMF0gPT09ICc8JyB8fCBzdHIubWF0Y2goL15cXHMqPC8pO1xuICAgIH1cblxuICAgIHZhciBkaXJzID0ge1xuICAgICAgICB3aWR0aDogWyd4JywgJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgaGVpZ2h0OiBbJ3knLCAndG9wJywgJ2JvdHRvbSddXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHBvc2l0aW9uQXQoZWxlbWVudCwgdGFyZ2V0LCBlbEF0dGFjaCwgdGFyZ2V0QXR0YWNoLCBlbE9mZnNldCwgdGFyZ2V0T2Zmc2V0LCBmbGlwLCBib3VuZGFyeSkge1xuXG4gICAgICAgIGVsQXR0YWNoID0gZ2V0UG9zKGVsQXR0YWNoKTtcbiAgICAgICAgdGFyZ2V0QXR0YWNoID0gZ2V0UG9zKHRhcmdldEF0dGFjaCk7XG5cbiAgICAgICAgdmFyIGZsaXBwZWQgPSB7ZWxlbWVudDogZWxBdHRhY2gsIHRhcmdldDogdGFyZ2V0QXR0YWNofTtcblxuICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIXRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuIGZsaXBwZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGltID0gZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICAgICAgdmFyIHRhcmdldERpbSA9IGdldERpbWVuc2lvbnModGFyZ2V0KTtcbiAgICAgICAgdmFyIHBvc2l0aW9uID0gdGFyZ2V0RGltO1xuXG4gICAgICAgIG1vdmVUbyhwb3NpdGlvbiwgZWxBdHRhY2gsIGRpbSwgLTEpO1xuICAgICAgICBtb3ZlVG8ocG9zaXRpb24sIHRhcmdldEF0dGFjaCwgdGFyZ2V0RGltLCAxKTtcblxuICAgICAgICBlbE9mZnNldCA9IGdldE9mZnNldHMoZWxPZmZzZXQsIGRpbS53aWR0aCwgZGltLmhlaWdodCk7XG4gICAgICAgIHRhcmdldE9mZnNldCA9IGdldE9mZnNldHModGFyZ2V0T2Zmc2V0LCB0YXJnZXREaW0ud2lkdGgsIHRhcmdldERpbS5oZWlnaHQpO1xuXG4gICAgICAgIGVsT2Zmc2V0Wyd4J10gKz0gdGFyZ2V0T2Zmc2V0Wyd4J107XG4gICAgICAgIGVsT2Zmc2V0Wyd5J10gKz0gdGFyZ2V0T2Zmc2V0Wyd5J107XG5cbiAgICAgICAgcG9zaXRpb24ubGVmdCArPSBlbE9mZnNldFsneCddO1xuICAgICAgICBwb3NpdGlvbi50b3AgKz0gZWxPZmZzZXRbJ3knXTtcblxuICAgICAgICBib3VuZGFyeSA9IGdldERpbWVuc2lvbnMoYm91bmRhcnkgfHwgd2luZG93JDEoZWxlbWVudCkpO1xuXG4gICAgICAgIGlmIChmbGlwKSB7XG4gICAgICAgICAgICBlYWNoKGRpcnMsIGZ1bmN0aW9uIChyZWYsIHByb3ApIHtcbiAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHZhciBhbGlnbiA9IHJlZlsxXTtcbiAgICAgICAgICAgICAgICB2YXIgYWxpZ25GbGlwID0gcmVmWzJdO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIShmbGlwID09PSB0cnVlIHx8IGluY2x1ZGVzKGZsaXAsIGRpcikpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgZWxlbU9mZnNldCA9IGVsQXR0YWNoW2Rpcl0gPT09IGFsaWduXG4gICAgICAgICAgICAgICAgICAgID8gLWRpbVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICA6IGVsQXR0YWNoW2Rpcl0gPT09IGFsaWduRmxpcFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBkaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXRPZmZzZXQgPSB0YXJnZXRBdHRhY2hbZGlyXSA9PT0gYWxpZ25cbiAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXREaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgOiB0YXJnZXRBdHRhY2hbZGlyXSA9PT0gYWxpZ25GbGlwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IC10YXJnZXREaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvblthbGlnbl0gPCBib3VuZGFyeVthbGlnbl0gfHwgcG9zaXRpb25bYWxpZ25dICsgZGltW3Byb3BdID4gYm91bmRhcnlbYWxpZ25GbGlwXSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjZW50ZXJPZmZzZXQgPSBkaW1bcHJvcF0gLyAyO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2VudGVyVGFyZ2V0T2Zmc2V0ID0gdGFyZ2V0QXR0YWNoW2Rpcl0gPT09ICdjZW50ZXInID8gLXRhcmdldERpbVtwcm9wXSAvIDIgOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgIGVsQXR0YWNoW2Rpcl0gPT09ICdjZW50ZXInICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5KGNlbnRlck9mZnNldCwgY2VudGVyVGFyZ2V0T2Zmc2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgYXBwbHkoLWNlbnRlck9mZnNldCwgLWNlbnRlclRhcmdldE9mZnNldClcbiAgICAgICAgICAgICAgICAgICAgKSB8fCBhcHBseShlbGVtT2Zmc2V0LCB0YXJnZXRPZmZzZXQpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gYXBwbHkoZWxlbU9mZnNldCwgdGFyZ2V0T2Zmc2V0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1ZhbCA9IHBvc2l0aW9uW2FsaWduXSArIGVsZW1PZmZzZXQgKyB0YXJnZXRPZmZzZXQgLSBlbE9mZnNldFtkaXJdICogMjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsID49IGJvdW5kYXJ5W2FsaWduXSAmJiBuZXdWYWwgKyBkaW1bcHJvcF0gPD0gYm91bmRhcnlbYWxpZ25GbGlwXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25bYWxpZ25dID0gbmV3VmFsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBbJ2VsZW1lbnQnLCAndGFyZ2V0J10uZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGlwcGVkW2VsXVtkaXJdID0gIWVsZW1PZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmbGlwcGVkW2VsXVtkaXJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmxpcHBlZFtlbF1bZGlyXSA9PT0gZGlyc1twcm9wXVsxXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkaXJzW3Byb3BdWzJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRpcnNbcHJvcF1bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBvZmZzZXQoZWxlbWVudCwgcG9zaXRpb24pO1xuXG4gICAgICAgIHJldHVybiBmbGlwcGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9mZnNldChlbGVtZW50LCBjb29yZGluYXRlcykge1xuXG4gICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzKSB7XG5cbiAgICAgICAgICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0KGVsZW1lbnQpO1xuICAgICAgICAgICAgdmFyIHBvcyA9IGNzcyhlbGVtZW50LCAncG9zaXRpb24nKTtcblxuICAgICAgICAgICAgWydsZWZ0JywgJ3RvcCddLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiBjb29yZGluYXRlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBjc3MoZWxlbWVudCwgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCBwcm9wLCBjb29yZGluYXRlc1twcm9wXSAtIGN1cnJlbnRPZmZzZXRbcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgICsgdG9GbG9hdChwb3MgPT09ICdhYnNvbHV0ZScgJiYgdmFsdWUgPT09ICdhdXRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcG9zaXRpb24oZWxlbWVudClbcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREaW1lbnNpb25zKGVsZW1lbnQpIHtcblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciByZWYgPSB3aW5kb3ckMShlbGVtZW50KTtcbiAgICAgICAgdmFyIHRvcCA9IHJlZi5wYWdlWU9mZnNldDtcbiAgICAgICAgdmFyIGxlZnQgPSByZWYucGFnZVhPZmZzZXQ7XG5cbiAgICAgICAgaWYgKGlzV2luZG93KGVsZW1lbnQpKSB7XG5cbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBlbGVtZW50LmlubmVySGVpZ2h0O1xuICAgICAgICAgICAgdmFyIHdpZHRoID0gZWxlbWVudC5pbm5lcldpZHRoO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRvcDogdG9wLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogdG9wICsgaGVpZ2h0LFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBsZWZ0ICsgd2lkdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0eWxlLCBoaWRkZW47XG5cbiAgICAgICAgaWYgKCFpc1Zpc2libGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHN0eWxlID0gYXR0cihlbGVtZW50LCAnc3R5bGUnKTtcbiAgICAgICAgICAgIGhpZGRlbiA9IGF0dHIoZWxlbWVudCwgJ2hpZGRlbicpO1xuXG4gICAgICAgICAgICBhdHRyKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBzdHlsZTogKChzdHlsZSB8fCAnJykgKyBcIjtkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7XCIpLFxuICAgICAgICAgICAgICAgIGhpZGRlbjogbnVsbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChzdHlsZSkpIHtcbiAgICAgICAgICAgIGF0dHIoZWxlbWVudCwge3N0eWxlOiBzdHlsZSwgaGlkZGVuOiBoaWRkZW59KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgICAgICAgICB0b3A6IHJlY3QudG9wICsgdG9wLFxuICAgICAgICAgICAgbGVmdDogcmVjdC5sZWZ0ICsgbGVmdCxcbiAgICAgICAgICAgIGJvdHRvbTogcmVjdC5ib3R0b20gKyB0b3AsXG4gICAgICAgICAgICByaWdodDogcmVjdC5yaWdodCArIGxlZnQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9zaXRpb24oZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciBwYXJlbnQgPSBvZmZzZXRQYXJlbnQoZWxlbWVudCk7XG4gICAgICAgIHZhciBwYXJlbnRPZmZzZXQgPSBwYXJlbnQgPT09IGRvY0VsKGVsZW1lbnQpID8ge3RvcDogMCwgbGVmdDogMH0gOiBvZmZzZXQocGFyZW50KTtcbiAgICAgICAgdmFyIHJlZiA9IFsndG9wJywgJ2xlZnQnXS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wKSB7XG4gICAgICAgICAgICB2YXIgcHJvcE5hbWUkJDEgPSB1Y2ZpcnN0KHByb3ApO1xuICAgICAgICAgICAgcHJvcHNbcHJvcF0gLT0gcGFyZW50T2Zmc2V0W3Byb3BdXG4gICAgICAgICAgICAgICAgKyAodG9GbG9hdChjc3MoZWxlbWVudCwgKFwibWFyZ2luXCIgKyBwcm9wTmFtZSQkMSkpKSB8fCAwKVxuICAgICAgICAgICAgICAgICsgKHRvRmxvYXQoY3NzKHBhcmVudCwgKFwiYm9yZGVyXCIgKyBwcm9wTmFtZSQkMSArIFwiV2lkdGhcIikpKSB8fCAwKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcztcbiAgICAgICAgfSwgb2Zmc2V0KGVsZW1lbnQpKTtcbiAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG4gICAgICAgIHZhciBsZWZ0ID0gcmVmLmxlZnQ7XG5cbiAgICAgICAgcmV0dXJuIHt0b3A6IHRvcCwgbGVmdDogbGVmdH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcblxuICAgICAgICB2YXIgcGFyZW50ID0gdG9Ob2RlKGVsZW1lbnQpLm9mZnNldFBhcmVudDtcblxuICAgICAgICB3aGlsZSAocGFyZW50ICYmIGNzcyhwYXJlbnQsICdwb3NpdGlvbicpID09PSAnc3RhdGljJykge1xuICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50Lm9mZnNldFBhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJlbnQgfHwgZG9jRWwoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgdmFyIGhlaWdodCA9IGRpbWVuc2lvbignaGVpZ2h0Jyk7XG4gICAgdmFyIHdpZHRoID0gZGltZW5zaW9uKCd3aWR0aCcpO1xuXG4gICAgZnVuY3Rpb24gZGltZW5zaW9uKHByb3ApIHtcbiAgICAgICAgdmFyIHByb3BOYW1lJCQxID0gdWNmaXJzdChwcm9wKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCB2YWx1ZSkge1xuXG4gICAgICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNXaW5kb3coZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRbKFwiaW5uZXJcIiArIHByb3BOYW1lJCQxKV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzRG9jdW1lbnQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRvYyA9IGVsZW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoZG9jWyhcIm9mZnNldFwiICsgcHJvcE5hbWUkJDEpXSwgZG9jWyhcInNjcm9sbFwiICsgcHJvcE5hbWUkJDEpXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBjc3MoZWxlbWVudCwgcHJvcCk7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gJ2F1dG8nID8gZWxlbWVudFsoXCJvZmZzZXRcIiArIHByb3BOYW1lJCQxKV0gOiB0b0Zsb2F0KHZhbHVlKSB8fCAwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlIC0gYm94TW9kZWxBZGp1c3QocHJvcCwgZWxlbWVudCk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgcHJvcCwgIXZhbHVlICYmIHZhbHVlICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgOiArdmFsdWUgKyBib3hNb2RlbEFkanVzdChwcm9wLCBlbGVtZW50KSArICdweCdcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBib3hNb2RlbEFkanVzdChwcm9wLCBlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBjc3MoZWxlbWVudCwgJ2JveFNpemluZycpID09PSAnYm9yZGVyLWJveCdcbiAgICAgICAgICAgID8gZGlyc1twcm9wXS5zbGljZSgxKS5tYXAodWNmaXJzdCkucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgeyByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgICAgICArIHRvRmxvYXQoY3NzKGVsZW1lbnQsIChcInBhZGRpbmdcIiArIHByb3ApKSlcbiAgICAgICAgICAgICAgICArIHRvRmxvYXQoY3NzKGVsZW1lbnQsIChcImJvcmRlclwiICsgcHJvcCArIFwiV2lkdGhcIikpKTsgfVxuICAgICAgICAgICAgICAgICwgMClcbiAgICAgICAgICAgIDogMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb3ZlVG8ocG9zaXRpb24sIGF0dGFjaCwgZGltLCBmYWN0b3IpIHtcbiAgICAgICAgZWFjaChkaXJzLCBmdW5jdGlvbiAocmVmLCBwcm9wKSB7XG4gICAgICAgICAgICB2YXIgZGlyID0gcmVmWzBdO1xuICAgICAgICAgICAgdmFyIGFsaWduID0gcmVmWzFdO1xuICAgICAgICAgICAgdmFyIGFsaWduRmxpcCA9IHJlZlsyXTtcblxuICAgICAgICAgICAgaWYgKGF0dGFjaFtkaXJdID09PSBhbGlnbkZsaXApIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblthbGlnbl0gKz0gZGltW3Byb3BdICogZmFjdG9yO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRhY2hbZGlyXSA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblthbGlnbl0gKz0gZGltW3Byb3BdICogZmFjdG9yIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UG9zKHBvcykge1xuXG4gICAgICAgIHZhciB4ID0gL2xlZnR8Y2VudGVyfHJpZ2h0LztcbiAgICAgICAgdmFyIHkgPSAvdG9wfGNlbnRlcnxib3R0b20vO1xuXG4gICAgICAgIHBvcyA9IChwb3MgfHwgJycpLnNwbGl0KCcgJyk7XG5cbiAgICAgICAgaWYgKHBvcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHBvcyA9IHgudGVzdChwb3NbMF0pXG4gICAgICAgICAgICAgICAgPyBwb3MuY29uY2F0KFsnY2VudGVyJ10pXG4gICAgICAgICAgICAgICAgOiB5LnRlc3QocG9zWzBdKVxuICAgICAgICAgICAgICAgICAgICA/IFsnY2VudGVyJ10uY29uY2F0KHBvcylcbiAgICAgICAgICAgICAgICAgICAgOiBbJ2NlbnRlcicsICdjZW50ZXInXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4LnRlc3QocG9zWzBdKSA/IHBvc1swXSA6ICdjZW50ZXInLFxuICAgICAgICAgICAgeTogeS50ZXN0KHBvc1sxXSkgPyBwb3NbMV0gOiAnY2VudGVyJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE9mZnNldHMob2Zmc2V0cywgd2lkdGgsIGhlaWdodCkge1xuXG4gICAgICAgIHZhciByZWYgPSAob2Zmc2V0cyB8fCAnJykuc3BsaXQoJyAnKTtcbiAgICAgICAgdmFyIHggPSByZWZbMF07XG4gICAgICAgIHZhciB5ID0gcmVmWzFdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4ID8gdG9GbG9hdCh4KSAqIChlbmRzV2l0aCh4LCAnJScpID8gd2lkdGggLyAxMDAgOiAxKSA6IDAsXG4gICAgICAgICAgICB5OiB5ID8gdG9GbG9hdCh5KSAqIChlbmRzV2l0aCh5LCAnJScpID8gaGVpZ2h0IC8gMTAwIDogMSkgOiAwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZmxpcFBvc2l0aW9uKHBvcykge1xuICAgICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvcCc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBwb3M7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0luVmlldyhlbGVtZW50LCB0b3BPZmZzZXQsIGxlZnRPZmZzZXQsIHJlbGF0aXZlVG9WaWV3cG9ydCkge1xuICAgICAgICBpZiAoIHRvcE9mZnNldCA9PT0gdm9pZCAwICkgdG9wT2Zmc2V0ID0gMDtcbiAgICAgICAgaWYgKCBsZWZ0T2Zmc2V0ID09PSB2b2lkIDAgKSBsZWZ0T2Zmc2V0ID0gMDtcblxuXG4gICAgICAgIGlmICghaXNWaXNpYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICB2YXIgd2luID0gd2luZG93JDEoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHJlbGF0aXZlVG9WaWV3cG9ydCkge1xuXG4gICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB7XG4gICAgICAgICAgICAgICAgdG9wOiAtdG9wT2Zmc2V0LFxuICAgICAgICAgICAgICAgIGxlZnQ6IC1sZWZ0T2Zmc2V0LFxuICAgICAgICAgICAgICAgIGJvdHRvbTogdG9wT2Zmc2V0ICsgaGVpZ2h0KHdpbiksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IGxlZnRPZmZzZXQgKyB3aWR0aCh3aW4pXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCk7XG4gICAgICAgICAgICB2YXIgZWxUb3AgPSByZWZbMF07XG4gICAgICAgICAgICB2YXIgZWxMZWZ0ID0gcmVmWzFdO1xuICAgICAgICAgICAgdmFyIHRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0O1xuXG4gICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogZWxUb3AsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGVsTGVmdCxcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBlbFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICByaWdodDogZWxUb3AgKyBlbGVtZW50Lm9mZnNldFdpZHRoXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogdG9wIC0gdG9wT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0IC0gbGVmdE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiB0b3AgKyB0b3BPZmZzZXQgKyBoZWlnaHQod2luKSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGxlZnQgKyBsZWZ0T2Zmc2V0ICsgd2lkdGgod2luKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjcm9sbGVkT3ZlcihlbGVtZW50LCBoZWlnaHRPZmZzZXQpIHtcbiAgICAgICAgaWYgKCBoZWlnaHRPZmZzZXQgPT09IHZvaWQgMCApIGhlaWdodE9mZnNldCA9IDA7XG5cblxuICAgICAgICBpZiAoIWlzVmlzaWJsZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciB3aW4gPSB3aW5kb3ckMShlbGVtZW50KTtcbiAgICAgICAgdmFyIGRvYyA9IGRvY3VtZW50JDEoZWxlbWVudCk7XG4gICAgICAgIHZhciBlbEhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgaGVpZ2h0T2Zmc2V0O1xuICAgICAgICB2YXIgcmVmID0gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCk7XG4gICAgICAgIHZhciB0b3AgPSByZWZbMF07XG4gICAgICAgIHZhciB2cCA9IGhlaWdodCh3aW4pO1xuICAgICAgICB2YXIgdmggPSB2cCArIE1hdGgubWluKDAsIHRvcCAtIHZwKTtcbiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLm1heCgwLCB2cCAtIChoZWlnaHQoZG9jKSArIGhlaWdodE9mZnNldCAtICh0b3AgKyBlbEhlaWdodCkpKTtcblxuICAgICAgICByZXR1cm4gY2xhbXAoKCh2aCArIHdpbi5wYWdlWU9mZnNldCAtIHRvcCkgLyAoKHZoICsgKGVsSGVpZ2h0IC0gKGRpZmYgPCB2cCA/IGRpZmYgOiAwKSkpIC8gMTAwKSkgLyAxMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9mZnNldFBvc2l0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIG9mZnNldCA9IFswLCAwXTtcblxuICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgIG9mZnNldFswXSArPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgICAgIG9mZnNldFsxXSArPSBlbGVtZW50Lm9mZnNldExlZnQ7XG5cbiAgICAgICAgICAgIGlmIChjc3MoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCcpIHtcbiAgICAgICAgICAgICAgICB2YXIgd2luID0gd2luZG93JDEoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WzBdICs9IHdpbi5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgICAgICBvZmZzZXRbMV0gKz0gd2luLnBhZ2VYT2Zmc2V0O1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSB3aGlsZSAoKGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudCkpO1xuXG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2luZG93JDEoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gaXNXaW5kb3coZWxlbWVudCkgPyBlbGVtZW50IDogZG9jdW1lbnQkMShlbGVtZW50KS5kZWZhdWx0VmlldztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkb2N1bWVudCQxKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShlbGVtZW50KS5vd25lckRvY3VtZW50O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvY0VsKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50JDEoZWxlbWVudCkuZG9jdW1lbnRFbGVtZW50O1xuICAgIH1cblxuICAgIC8qIGdsb2JhbCBEb2N1bWVudFRvdWNoICovXG5cbiAgICB2YXIgaXNSdGwgPSBhdHRyKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RpcicpID09PSAncnRsJztcblxuICAgIHZhciBoYXNUb3VjaEV2ZW50cyA9ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdztcbiAgICB2YXIgaGFzUG9pbnRlckV2ZW50cyA9IHdpbmRvdy5Qb2ludGVyRXZlbnQ7XG4gICAgdmFyIGhhc1RvdWNoID0gaGFzVG91Y2hFdmVudHNcbiAgICAgICAgfHwgd2luZG93LkRvY3VtZW50VG91Y2ggJiYgZG9jdW1lbnQgaW5zdGFuY2VvZiBEb2N1bWVudFRvdWNoXG4gICAgICAgIHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50czsgLy8gSUUgPj0xMVxuXG4gICAgdmFyIHBvaW50ZXJEb3duID0gIWhhc1RvdWNoID8gJ21vdXNlZG93bicgOiAoXCJtb3VzZWRvd24gXCIgKyAoaGFzVG91Y2hFdmVudHMgPyAndG91Y2hzdGFydCcgOiAncG9pbnRlcmRvd24nKSk7XG4gICAgdmFyIHBvaW50ZXJNb3ZlID0gIWhhc1RvdWNoID8gJ21vdXNlbW92ZScgOiAoXCJtb3VzZW1vdmUgXCIgKyAoaGFzVG91Y2hFdmVudHMgPyAndG91Y2htb3ZlJyA6ICdwb2ludGVybW92ZScpKTtcbiAgICB2YXIgcG9pbnRlclVwID0gIWhhc1RvdWNoID8gJ21vdXNldXAnIDogKFwibW91c2V1cCBcIiArIChoYXNUb3VjaEV2ZW50cyA/ICd0b3VjaGVuZCcgOiAncG9pbnRlcnVwJykpO1xuICAgIHZhciBwb2ludGVyRW50ZXIgPSBoYXNUb3VjaCAmJiBoYXNQb2ludGVyRXZlbnRzID8gJ3BvaW50ZXJlbnRlcicgOiAnbW91c2VlbnRlcic7XG4gICAgdmFyIHBvaW50ZXJMZWF2ZSA9IGhhc1RvdWNoICYmIGhhc1BvaW50ZXJFdmVudHMgPyAncG9pbnRlcmxlYXZlJyA6ICdtb3VzZWxlYXZlJztcblxuICAgIC8qXG4gICAgICAgIEJhc2VkIG9uOlxuICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTYgV2lsc29uIFBhZ2Ugd2lsc29ucGFnZUBtZS5jb21cbiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3dpbHNvbnBhZ2UvZmFzdGRvbVxuICAgICovXG5cbiAgICB2YXIgZmFzdGRvbSA9IHtcblxuICAgICAgICByZWFkczogW10sXG4gICAgICAgIHdyaXRlczogW10sXG5cbiAgICAgICAgcmVhZDogZnVuY3Rpb24odGFzaykge1xuICAgICAgICAgICAgdGhpcy5yZWFkcy5wdXNoKHRhc2spO1xuICAgICAgICAgICAgc2NoZWR1bGVGbHVzaCgpO1xuICAgICAgICAgICAgcmV0dXJuIHRhc2s7XG4gICAgICAgIH0sXG5cbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHRhc2spIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGVzLnB1c2godGFzayk7XG4gICAgICAgICAgICBzY2hlZHVsZUZsdXNoKCk7XG4gICAgICAgICAgICByZXR1cm4gdGFzaztcbiAgICAgICAgfSxcblxuICAgICAgICBjbGVhcjogZnVuY3Rpb24odGFzaykge1xuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZSQxKHRoaXMucmVhZHMsIHRhc2spIHx8IHJlbW92ZSQxKHRoaXMud3JpdGVzLCB0YXNrKTtcbiAgICAgICAgfSxcblxuICAgICAgICBmbHVzaDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHJ1blRhc2tzKHRoaXMucmVhZHMpO1xuICAgICAgICAgICAgcnVuVGFza3ModGhpcy53cml0ZXMuc3BsaWNlKDAsIHRoaXMud3JpdGVzLmxlbmd0aCkpO1xuXG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkcy5sZW5ndGggfHwgdGhpcy53cml0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc2NoZWR1bGVGbHVzaCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBzY2hlZHVsZUZsdXNoKCkge1xuICAgICAgICBpZiAoIWZhc3Rkb20uc2NoZWR1bGVkKSB7XG4gICAgICAgICAgICBmYXN0ZG9tLnNjaGVkdWxlZCA9IHRydWU7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZmFzdGRvbS5mbHVzaC5iaW5kKGZhc3Rkb20pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJ1blRhc2tzKHRhc2tzKSB7XG4gICAgICAgIHZhciB0YXNrO1xuICAgICAgICB3aGlsZSAoKHRhc2sgPSB0YXNrcy5zaGlmdCgpKSkge1xuICAgICAgICAgICAgdGFzaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlJDEoYXJyYXksIGl0ZW0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYXJyYXkuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgcmV0dXJuICEhfmluZGV4ICYmICEhYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBNb3VzZVRyYWNrZXIoKSB7fVxuXG4gICAgTW91c2VUcmFja2VyLnByb3RvdHlwZSA9IHtcblxuICAgICAgICBwb3NpdGlvbnM6IFtdLFxuICAgICAgICBwb3NpdGlvbjogbnVsbCxcblxuICAgICAgICBpbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gbnVsbDtcblxuICAgICAgICAgICAgdmFyIHRpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudW5iaW5kID0gb24oZG9jdW1lbnQsICdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRpY2tpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMkMS5wb3NpdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggJiYgKHRpbWUgLSB0aGlzJDEucG9zaXRpb25zW2xlbmd0aCAtIDFdLnRpbWUgPiAxMDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zaXRpb25zLnNwbGljZSgwLCBsZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvc2l0aW9ucy5wdXNoKHt0aW1lOiB0aW1lLCB4OiBlLnBhZ2VYLCB5OiBlLnBhZ2VZfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5wb3NpdGlvbnMubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvc2l0aW9ucy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGlja2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUpO1xuXG4gICAgICAgICAgICAgICAgdGlja2luZyA9IHRydWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAodGhpcy51bmJpbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1vdmVzVG86IGZ1bmN0aW9uKHRhcmdldCkge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHAgPSBvZmZzZXQodGFyZ2V0KTtcbiAgICAgICAgICAgIHZhciBwb3NpdGlvbiQkMSA9IHRoaXMucG9zaXRpb25zW3RoaXMucG9zaXRpb25zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMucG9zaXRpb25zO1xuICAgICAgICAgICAgdmFyIHByZXZQb3MgPSByZWZbMF07XG5cbiAgICAgICAgICAgIGlmIChwLmxlZnQgPD0gcG9zaXRpb24kJDEueCAmJiBwb3NpdGlvbiQkMS54IDw9IHAucmlnaHQgJiYgcC50b3AgPD0gcG9zaXRpb24kJDEueSAmJiBwb3NpdGlvbiQkMS55IDw9IHAuYm90dG9tKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgcG9pbnRzID0gW1xuICAgICAgICAgICAgICAgIFt7eDogcC5sZWZ0LCB5OiBwLnRvcH0sIHt4OiBwLnJpZ2h0LCB5OiBwLmJvdHRvbX1dLFxuICAgICAgICAgICAgICAgIFt7eDogcC5yaWdodCwgeTogcC50b3B9LCB7eDogcC5sZWZ0LCB5OiBwLmJvdHRvbX1dXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBpZiAocC5yaWdodCA8PSBwb3NpdGlvbiQkMS54KSA7IGVsc2UgaWYgKHAubGVmdCA+PSBwb3NpdGlvbiQkMS54KSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzWzBdLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICBwb2ludHNbMV0ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwLmJvdHRvbSA8PSBwb3NpdGlvbiQkMS55KSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzWzBdLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocC50b3AgPj0gcG9zaXRpb24kJDEueSkge1xuICAgICAgICAgICAgICAgIHBvaW50c1sxXS5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAhIXBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgcG9pbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNsb3BlKHByZXZQb3MsIHBvaW50WzBdKSA8IHNsb3BlKHBvc2l0aW9uJCQxLCBwb2ludFswXSkgJiYgc2xvcGUocHJldlBvcywgcG9pbnRbMV0pID4gc2xvcGUocG9zaXRpb24kJDEsIHBvaW50WzFdKSk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHNsb3BlKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChiLnkgLSBhLnkpIC8gKGIueCAtIGEueCk7XG4gICAgfVxuXG4gICAgdmFyIHN0cmF0cyA9IHt9O1xuXG4gICAgLy8gY29uY2F0IHN0cmF0ZWd5XG4gICAgc3RyYXRzLmFyZ3MgPVxuICAgIHN0cmF0cy5ldmVudHMgPVxuICAgIHN0cmF0cy5pbml0ID1cbiAgICBzdHJhdHMuY3JlYXRlZCA9XG4gICAgc3RyYXRzLmJlZm9yZUNvbm5lY3QgPVxuICAgIHN0cmF0cy5jb25uZWN0ZWQgPVxuICAgIHN0cmF0cy5yZWFkeSA9XG4gICAgc3RyYXRzLmJlZm9yZURpc2Nvbm5lY3QgPVxuICAgIHN0cmF0cy5kaXNjb25uZWN0ZWQgPVxuICAgIHN0cmF0cy5kZXN0cm95ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcblxuICAgICAgICBwYXJlbnRWYWwgPSBwYXJlbnRWYWwgJiYgIWlzQXJyYXkocGFyZW50VmFsKSA/IFtwYXJlbnRWYWxdIDogcGFyZW50VmFsO1xuXG4gICAgICAgIHJldHVybiBjaGlsZFZhbFxuICAgICAgICAgICAgPyBwYXJlbnRWYWxcbiAgICAgICAgICAgICAgICA/IHBhcmVudFZhbC5jb25jYXQoY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGNoaWxkVmFsKVxuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkVmFsXG4gICAgICAgICAgICAgICAgICAgIDogW2NoaWxkVmFsXVxuICAgICAgICAgICAgOiBwYXJlbnRWYWw7XG4gICAgfTtcblxuICAgIC8vIHVwZGF0ZSBzdHJhdGVneVxuICAgIHN0cmF0cy51cGRhdGUgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gc3RyYXRzLmFyZ3MocGFyZW50VmFsLCBpc0Z1bmN0aW9uKGNoaWxkVmFsKSA/IHtyZWFkOiBjaGlsZFZhbH0gOiBjaGlsZFZhbCk7XG4gICAgfTtcblxuICAgIC8vIHByb3BlcnR5IHN0cmF0ZWd5XG4gICAgc3RyYXRzLnByb3BzID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcblxuICAgICAgICBpZiAoaXNBcnJheShjaGlsZFZhbCkpIHtcbiAgICAgICAgICAgIGNoaWxkVmFsID0gY2hpbGRWYWwucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICAgICAgICAgICAgdmFsdWVba2V5XSA9IFN0cmluZztcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3RyYXRzLm1ldGhvZHMocGFyZW50VmFsLCBjaGlsZFZhbCk7XG4gICAgfTtcblxuICAgIC8vIGV4dGVuZCBzdHJhdGVneVxuICAgIHN0cmF0cy5jb21wdXRlZCA9XG4gICAgc3RyYXRzLm1ldGhvZHMgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gY2hpbGRWYWxcbiAgICAgICAgICAgID8gcGFyZW50VmFsXG4gICAgICAgICAgICAgICAgPyBhc3NpZ24oe30sIHBhcmVudFZhbCwgY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgOiBjaGlsZFZhbFxuICAgICAgICAgICAgOiBwYXJlbnRWYWw7XG4gICAgfTtcblxuICAgIC8vIGRhdGEgc3RyYXRlZ3lcbiAgICBzdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSkge1xuXG4gICAgICAgIGlmICghdm0pIHtcblxuICAgICAgICAgICAgaWYgKCFjaGlsZFZhbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRWYWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFyZW50VmFsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkVmFsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlRm5EYXRhKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZXJnZUZuRGF0YShwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlRm5EYXRhKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKSB7XG4gICAgICAgIHJldHVybiBzdHJhdHMuY29tcHV0ZWQoXG4gICAgICAgICAgICBpc0Z1bmN0aW9uKHBhcmVudFZhbClcbiAgICAgICAgICAgICAgICA/IHBhcmVudFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgICAgICAgICA6IHBhcmVudFZhbCxcbiAgICAgICAgICAgIGlzRnVuY3Rpb24oY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgPyBjaGlsZFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgICAgICAgICA6IGNoaWxkVmFsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZGVmYXVsdCBzdHJhdGVneVxuICAgIHZhciBkZWZhdWx0U3RyYXQgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gaXNVbmRlZmluZWQoY2hpbGRWYWwpID8gcGFyZW50VmFsIDogY2hpbGRWYWw7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLCB2bSkge1xuXG4gICAgICAgIHZhciBvcHRpb25zID0ge307XG5cbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2hpbGQpKSB7XG4gICAgICAgICAgICBjaGlsZCA9IGNoaWxkLm9wdGlvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hpbGQuZXh0ZW5kcykge1xuICAgICAgICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQuZXh0ZW5kcywgdm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoaWxkLm1peGlucykge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQubWl4aW5zW2ldLCB2bSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGFyZW50KSB7XG4gICAgICAgICAgICBtZXJnZUtleShrZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIga2V5JDEgaW4gY2hpbGQpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duKHBhcmVudCwga2V5JDEpKSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VLZXkoa2V5JDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbWVyZ2VLZXkoa2V5KSB7XG4gICAgICAgICAgICBvcHRpb25zW2tleV0gPSAoc3RyYXRzW2tleV0gfHwgZGVmYXVsdFN0cmF0KShwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwgdm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VPcHRpb25zKG9wdGlvbnMsIGFyZ3MpIHtcbiAgICAgICAgdmFyIG9iajtcblxuICAgICAgICBpZiAoIGFyZ3MgPT09IHZvaWQgMCApIGFyZ3MgPSBbXTtcblxuICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICByZXR1cm4gIW9wdGlvbnNcbiAgICAgICAgICAgICAgICA/IHt9XG4gICAgICAgICAgICAgICAgOiBzdGFydHNXaXRoKG9wdGlvbnMsICd7JylcbiAgICAgICAgICAgICAgICAgICAgPyBKU09OLnBhcnNlKG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgIDogYXJncy5sZW5ndGggJiYgIWluY2x1ZGVzKG9wdGlvbnMsICc6JylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKCggb2JqID0ge30sIG9ialthcmdzWzBdXSA9IG9wdGlvbnMsIG9iaiApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBvcHRpb25zLnNwbGl0KCc7JykucmVkdWNlKGZ1bmN0aW9uIChvcHRpb25zLCBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb3B0aW9uLnNwbGl0KC86KC4qKS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcmVmWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgJiYgIWlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zW2tleS50cmltKCldID0gdmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHZhciBpZCA9IDA7XG5cbiAgICB2YXIgUGxheWVyID0gZnVuY3Rpb24oZWwpIHtcbiAgICAgICAgdGhpcy5pZCA9ICsraWQ7XG4gICAgICAgIHRoaXMuZWwgPSB0b05vZGUoZWwpO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzVmlkZW8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzWW91dHViZSgpIHx8IHRoaXMuaXNWaW1lbygpIHx8IHRoaXMuaXNIVE1MNSgpO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzSFRNTDUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLnRhZ05hbWUgPT09ICdWSURFTyc7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuaXNJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLnRhZ05hbWUgPT09ICdJRlJBTUUnO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzWW91dHViZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJRnJhbWUoKSAmJiAhIXRoaXMuZWwuc3JjLm1hdGNoKC9cXC9cXC8uKj95b3V0dWJlKC1ub2Nvb2tpZSk/XFwuW2Etel0rXFwvKHdhdGNoXFw/dj1bXiZcXHNdK3xlbWJlZCl8eW91dHVcXC5iZVxcLy4qLyk7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuaXNWaW1lbyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJRnJhbWUoKSAmJiAhIXRoaXMuZWwuc3JjLm1hdGNoKC92aW1lb1xcLmNvbVxcL3ZpZGVvXFwvLiovKTtcbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5lbmFibGVBcGkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICh0aGlzLnJlYWR5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB5b3V0dWJlID0gdGhpcy5pc1lvdXR1YmUoKTtcbiAgICAgICAgdmFyIHZpbWVvID0gdGhpcy5pc1ZpbWVvKCk7XG5cbiAgICAgICAgdmFyIHBvbGxlcjtcblxuICAgICAgICBpZiAoeW91dHViZSB8fCB2aW1lbykge1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcblxuICAgICAgICAgICAgICAgIG9uY2UodGhpcyQxLmVsLCAnbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHlvdXR1YmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBvc3QodGhpcyQxLmVsLCB7ZXZlbnQ6ICdsaXN0ZW5pbmcnLCBpZDogdGhpcyQxLmlkfSk7IH07XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xsZXIgPSBzZXRJbnRlcnZhbChsaXN0ZW5lciwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGxpc3RlbihmdW5jdGlvbiAoZGF0YSQkMSkgeyByZXR1cm4geW91dHViZSAmJiBkYXRhJCQxLmlkID09PSB0aGlzJDEuaWQgJiYgZGF0YSQkMS5ldmVudCA9PT0gJ29uUmVhZHknIHx8IHZpbWVvICYmIE51bWJlcihkYXRhJCQxLnBsYXllcl9pZCkgPT09IHRoaXMkMS5pZDsgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGVyICYmIGNsZWFySW50ZXJ2YWwocG9sbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMkMS5lbCwgJ3NyYycsIChcIlwiICsgKHRoaXMkMS5lbC5zcmMpICsgKGluY2x1ZGVzKHRoaXMkMS5lbC5zcmMsICc/JykgPyAnJicgOiAnPycpICsgKHlvdXR1YmUgPyAnZW5hYmxlanNhcGk9MScgOiAoXCJhcGk9MSZwbGF5ZXJfaWQ9XCIgKyAodGhpcyQxLmlkKSkpKSk7XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoKTtcblxuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLnBsYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZpZGVvKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSUZyYW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2Z1bmM6ICdwbGF5VmlkZW8nLCBtZXRob2Q6ICdwbGF5J30pOyB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzSFRNTDUoKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXMuZWwucGxheSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5jYXRjaChub29wKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZpZGVvKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSUZyYW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2Z1bmM6ICdwYXVzZVZpZGVvJywgbWV0aG9kOiAncGF1c2UnfSk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNIVE1MNSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5tdXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICBpZiAoIXRoaXMuaXNWaWRlbygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0lGcmFtZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUFwaSgpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gcG9zdCh0aGlzJDEuZWwsIHtmdW5jOiAnbXV0ZScsIG1ldGhvZDogJ3NldFZvbHVtZScsIHZhbHVlOiAwfSk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNIVE1MNSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm11dGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGF0dHIodGhpcy5lbCwgJ211dGVkJywgJycpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcG9zdChlbCwgY21kKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBlbC5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGFzc2lnbih7ZXZlbnQ6ICdjb21tYW5kJ30sIGNtZCkpLCAnKicpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RlbihjYikge1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgICAgIG9uY2Uod2luZG93LCAnbWVzc2FnZScsIGZ1bmN0aW9uIChfLCBkYXRhJCQxKSB7IHJldHVybiByZXNvbHZlKGRhdGEkJDEpOyB9LCBmYWxzZSwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhJCQxID0gcmVmLmRhdGE7XG5cblxuICAgICAgICAgICAgICAgIGlmICghZGF0YSQkMSB8fCAhaXNTdHJpbmcoZGF0YSQkMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDEgPSBKU09OLnBhcnNlKGRhdGEkJDEpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxICYmIGNiKGRhdGEkJDEpO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIC8qXG4gICAgICAgIEJhc2VkIG9uOlxuICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNiBUaG9tYXMgRnVjaHNcbiAgICAgICAgaHR0cDovL3plcHRvanMuY29tL1xuICAgICovXG5cbiAgICB2YXIgdG91Y2ggPSB7fSwgY2xpY2tUaW1lb3V0LCBzd2lwZVRpbWVvdXQsIHRhcFRpbWVvdXQsIGNsaWNrZWQ7XG5cbiAgICBmdW5jdGlvbiBzd2lwZURpcmVjdGlvbihyZWYpIHtcbiAgICAgICAgdmFyIHgxID0gcmVmLngxO1xuICAgICAgICB2YXIgeDIgPSByZWYueDI7XG4gICAgICAgIHZhciB5MSA9IHJlZi55MTtcbiAgICAgICAgdmFyIHkyID0gcmVmLnkyO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmFicyh4MSAtIHgyKSA+PSBNYXRoLmFicyh5MSAtIHkyKSA/ICh4MSAtIHgyID4gMCA/ICdMZWZ0JyA6ICdSaWdodCcpIDogKHkxIC0geTIgPiAwID8gJ1VwJyA6ICdEb3duJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FuY2VsQWxsKCkge1xuICAgICAgICBjbGlja1RpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KGNsaWNrVGltZW91dCk7XG4gICAgICAgIHN3aXBlVGltZW91dCAmJiBjbGVhclRpbWVvdXQoc3dpcGVUaW1lb3V0KTtcbiAgICAgICAgdGFwVGltZW91dCAmJiBjbGVhclRpbWVvdXQodGFwVGltZW91dCk7XG4gICAgICAgIGNsaWNrVGltZW91dCA9IHN3aXBlVGltZW91dCA9IHRhcFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB0b3VjaCA9IHt9O1xuICAgIH1cblxuICAgIHJlYWR5KGZ1bmN0aW9uICgpIHtcblxuICAgICAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gY2xpY2tlZCA9IHRydWU7IH0sIHRydWUpO1xuXG4gICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyRG93biwgZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHJlZiA9IGdldFBvcyQxKGUpO1xuICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgIHZhciB5ID0gcmVmLnk7XG4gICAgICAgICAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIHZhciB0eXBlID0gZ2V0VHlwZShlLnR5cGUpO1xuXG4gICAgICAgICAgICBpZiAodG91Y2gudHlwZSAmJiB0b3VjaC50eXBlICE9PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b3VjaC5lbCA9ICd0YWdOYW1lJyBpbiB0YXJnZXQgPyB0YXJnZXQgOiB0YXJnZXQucGFyZW50Tm9kZTtcblxuICAgICAgICAgICAgY2xpY2tUaW1lb3V0ICYmIGNsZWFyVGltZW91dChjbGlja1RpbWVvdXQpO1xuXG4gICAgICAgICAgICB0b3VjaC54MSA9IHg7XG4gICAgICAgICAgICB0b3VjaC55MSA9IHk7XG5cbiAgICAgICAgICAgIGlmICh0b3VjaC5sYXN0ICYmIG5vdyAtIHRvdWNoLmxhc3QgPD0gMjUwKSB7XG4gICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdG91Y2gudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICB0b3VjaC5sYXN0ID0gbm93O1xuXG4gICAgICAgICAgICBjbGlja2VkID0gZS5idXR0b24gPiAwO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHJlZiA9IGdldFBvcyQxKGUpO1xuICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgIHZhciB5ID0gcmVmLnk7XG5cbiAgICAgICAgICAgIHRvdWNoLngyID0geDtcbiAgICAgICAgICAgIHRvdWNoLnkyID0geTtcblxuICAgICAgICB9KTtcblxuICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlclVwLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cblxuICAgICAgICAgICAgaWYgKHRvdWNoLnR5cGUgIT09IGdldFR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHN3aXBlXG4gICAgICAgICAgICBpZiAodG91Y2gueDIgJiYgTWF0aC5hYnModG91Y2gueDEgLSB0b3VjaC54MikgPiAzMCB8fCB0b3VjaC55MiAmJiBNYXRoLmFicyh0b3VjaC55MSAtIHRvdWNoLnkyKSA+IDMwKSB7XG5cbiAgICAgICAgICAgICAgICBzd2lwZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvdWNoLmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRvdWNoLmVsLCAnc3dpcGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodG91Y2guZWwsIChcInN3aXBlXCIgKyAoc3dpcGVEaXJlY3Rpb24odG91Y2gpKSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRvdWNoID0ge307XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIG5vcm1hbCB0YXBcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2xhc3QnIGluIHRvdWNoKSB7XG5cbiAgICAgICAgICAgICAgICB0YXBUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiB0cmlnZ2VyKHRvdWNoLmVsLCAndGFwJyk7IH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBzaW5nbGUgY2xpY2sgYWZ0ZXIgMzUwbXMgb2YgaW5hY3Rpdml0eVxuICAgICAgICAgICAgICAgIGlmICh0b3VjaC5lbCAmJiB0eXBlICE9PSAnbW91c2V1cCcgJiYgd2l0aGluKHRhcmdldCwgdG91Y2guZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b3VjaC5lbCAmJiAhY2xpY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodG91Y2guZWwsICdjbGljaycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMzUwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgICAgICBvbihkb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgY2FuY2VsQWxsKTtcbiAgICAgICAgb24od2luZG93LCAnc2Nyb2xsJywgY2FuY2VsQWxsKTtcblxuICAgIH0pO1xuXG4gICAgdmFyIHRvdWNoaW5nID0gZmFsc2U7XG4gICAgb24oZG9jdW1lbnQsICd0b3VjaHN0YXJ0JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gdG91Y2hpbmcgPSB0cnVlOyB9LCB0cnVlKTtcbiAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkge3RvdWNoaW5nID0gZmFsc2U7fSk7XG4gICAgb24oZG9jdW1lbnQsICd0b3VjaGNhbmNlbCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvdWNoaW5nID0gZmFsc2U7IH0sIHRydWUpO1xuXG4gICAgZnVuY3Rpb24gaXNUb3VjaChlKSB7XG4gICAgICAgIHJldHVybiB0b3VjaGluZyB8fCBlLnBvaW50ZXJUeXBlID09PSAndG91Y2gnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBvcyQxKGUpIHtcbiAgICAgICAgdmFyIHRvdWNoZXMgPSBlLnRvdWNoZXM7XG4gICAgICAgIHZhciBjaGFuZ2VkVG91Y2hlcyA9IGUuY2hhbmdlZFRvdWNoZXM7XG4gICAgICAgIHZhciByZWYgPSB0b3VjaGVzICYmIHRvdWNoZXNbMF0gfHwgY2hhbmdlZFRvdWNoZXMgJiYgY2hhbmdlZFRvdWNoZXNbMF0gfHwgZTtcbiAgICAgICAgdmFyIHggPSByZWYucGFnZVg7XG4gICAgICAgIHZhciB5ID0gcmVmLnBhZ2VZO1xuXG4gICAgICAgIHJldHVybiB7eDogeCwgeTogeX07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VHlwZSh0eXBlKSB7XG4gICAgICAgIHJldHVybiB0eXBlLnNsaWNlKDAsIDUpO1xuICAgIH1cblxuXG5cbiAgICB2YXIgdXRpbCA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcbiAgICAgICAgYWpheDogYWpheCxcbiAgICAgICAgZ2V0SW1hZ2U6IGdldEltYWdlLFxuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLFxuICAgICAgICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9uLFxuICAgICAgICBhbmltYXRlOiBhbmltYXRlLFxuICAgICAgICBBbmltYXRpb246IEFuaW1hdGlvbixcbiAgICAgICAgYXR0cjogYXR0cixcbiAgICAgICAgaGFzQXR0cjogaGFzQXR0cixcbiAgICAgICAgcmVtb3ZlQXR0cjogcmVtb3ZlQXR0cixcbiAgICAgICAgZmlsdGVyQXR0cjogZmlsdGVyQXR0cixcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgYWRkQ2xhc3M6IGFkZENsYXNzLFxuICAgICAgICByZW1vdmVDbGFzczogcmVtb3ZlQ2xhc3MsXG4gICAgICAgIHJlbW92ZUNsYXNzZXM6IHJlbW92ZUNsYXNzZXMsXG4gICAgICAgIHJlcGxhY2VDbGFzczogcmVwbGFjZUNsYXNzLFxuICAgICAgICBoYXNDbGFzczogaGFzQ2xhc3MsXG4gICAgICAgIHRvZ2dsZUNsYXNzOiB0b2dnbGVDbGFzcyxcbiAgICAgICAgJDogJCxcbiAgICAgICAgJCQ6ICQkLFxuICAgICAgICBwb3NpdGlvbkF0OiBwb3NpdGlvbkF0LFxuICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBmbGlwUG9zaXRpb246IGZsaXBQb3NpdGlvbixcbiAgICAgICAgaXNJblZpZXc6IGlzSW5WaWV3LFxuICAgICAgICBzY3JvbGxlZE92ZXI6IHNjcm9sbGVkT3ZlcixcbiAgICAgICAgaXNSZWFkeTogaXNSZWFkeSxcbiAgICAgICAgcmVhZHk6IHJlYWR5LFxuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGdldEluZGV4OiBnZXRJbmRleCxcbiAgICAgICAgZW1wdHk6IGVtcHR5LFxuICAgICAgICBodG1sOiBodG1sLFxuICAgICAgICBwcmVwZW5kOiBwcmVwZW5kLFxuICAgICAgICBhcHBlbmQ6IGFwcGVuZCxcbiAgICAgICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgICAgIGFmdGVyOiBhZnRlcixcbiAgICAgICAgcmVtb3ZlOiByZW1vdmUsXG4gICAgICAgIHdyYXBBbGw6IHdyYXBBbGwsXG4gICAgICAgIHdyYXBJbm5lcjogd3JhcElubmVyLFxuICAgICAgICB1bndyYXA6IHVud3JhcCxcbiAgICAgICAgZnJhZ21lbnQ6IGZyYWdtZW50LFxuICAgICAgICBhcHBseTogYXBwbHksXG4gICAgICAgIGlzUnRsOiBpc1J0bCxcbiAgICAgICAgaGFzVG91Y2g6IGhhc1RvdWNoLFxuICAgICAgICBwb2ludGVyRG93bjogcG9pbnRlckRvd24sXG4gICAgICAgIHBvaW50ZXJNb3ZlOiBwb2ludGVyTW92ZSxcbiAgICAgICAgcG9pbnRlclVwOiBwb2ludGVyVXAsXG4gICAgICAgIHBvaW50ZXJFbnRlcjogcG9pbnRlckVudGVyLFxuICAgICAgICBwb2ludGVyTGVhdmU6IHBvaW50ZXJMZWF2ZSxcbiAgICAgICAgb246IG9uLFxuICAgICAgICBvZmY6IG9mZixcbiAgICAgICAgb25jZTogb25jZSxcbiAgICAgICAgdHJpZ2dlcjogdHJpZ2dlcixcbiAgICAgICAgY3JlYXRlRXZlbnQ6IGNyZWF0ZUV2ZW50LFxuICAgICAgICB0b0V2ZW50VGFyZ2V0czogdG9FdmVudFRhcmdldHMsXG4gICAgICAgIHByZXZlbnRDbGljazogcHJldmVudENsaWNrLFxuICAgICAgICBmYXN0ZG9tOiBmYXN0ZG9tLFxuICAgICAgICBpc1ZvaWRFbGVtZW50OiBpc1ZvaWRFbGVtZW50LFxuICAgICAgICBpc1Zpc2libGU6IGlzVmlzaWJsZSxcbiAgICAgICAgc2VsSW5wdXQ6IHNlbElucHV0LFxuICAgICAgICBpc0lucHV0OiBpc0lucHV0LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgd2l0aGluOiB3aXRoaW4sXG4gICAgICAgIGJpbmQ6IGJpbmQsXG4gICAgICAgIGhhc093bjogaGFzT3duLFxuICAgICAgICBoeXBoZW5hdGU6IGh5cGhlbmF0ZSxcbiAgICAgICAgY2FtZWxpemU6IGNhbWVsaXplLFxuICAgICAgICB1Y2ZpcnN0OiB1Y2ZpcnN0LFxuICAgICAgICBzdGFydHNXaXRoOiBzdGFydHNXaXRoLFxuICAgICAgICBlbmRzV2l0aDogZW5kc1dpdGgsXG4gICAgICAgIGluY2x1ZGVzOiBpbmNsdWRlcyxcbiAgICAgICAgaXNBcnJheTogaXNBcnJheSxcbiAgICAgICAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcbiAgICAgICAgaXNPYmplY3Q6IGlzT2JqZWN0LFxuICAgICAgICBpc1BsYWluT2JqZWN0OiBpc1BsYWluT2JqZWN0LFxuICAgICAgICBpc1dpbmRvdzogaXNXaW5kb3csXG4gICAgICAgIGlzRG9jdW1lbnQ6IGlzRG9jdW1lbnQsXG4gICAgICAgIGlzSlF1ZXJ5OiBpc0pRdWVyeSxcbiAgICAgICAgaXNOb2RlOiBpc05vZGUsXG4gICAgICAgIGlzTm9kZUNvbGxlY3Rpb246IGlzTm9kZUNvbGxlY3Rpb24sXG4gICAgICAgIGlzQm9vbGVhbjogaXNCb29sZWFuLFxuICAgICAgICBpc1N0cmluZzogaXNTdHJpbmcsXG4gICAgICAgIGlzTnVtYmVyOiBpc051bWJlcixcbiAgICAgICAgaXNOdW1lcmljOiBpc051bWVyaWMsXG4gICAgICAgIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgICAgICAgdG9Cb29sZWFuOiB0b0Jvb2xlYW4sXG4gICAgICAgIHRvTnVtYmVyOiB0b051bWJlcixcbiAgICAgICAgdG9GbG9hdDogdG9GbG9hdCxcbiAgICAgICAgdG9Ob2RlOiB0b05vZGUsXG4gICAgICAgIHRvTm9kZXM6IHRvTm9kZXMsXG4gICAgICAgIHRvTGlzdDogdG9MaXN0LFxuICAgICAgICB0b01zOiB0b01zLFxuICAgICAgICBzd2FwOiBzd2FwLFxuICAgICAgICBhc3NpZ246IGFzc2lnbixcbiAgICAgICAgZWFjaDogZWFjaCxcbiAgICAgICAgc29ydEJ5OiBzb3J0QnksXG4gICAgICAgIGNsYW1wOiBjbGFtcCxcbiAgICAgICAgbm9vcDogbm9vcCxcbiAgICAgICAgaW50ZXJzZWN0UmVjdDogaW50ZXJzZWN0UmVjdCxcbiAgICAgICAgcG9pbnRJblJlY3Q6IHBvaW50SW5SZWN0LFxuICAgICAgICBEaW1lbnNpb25zOiBEaW1lbnNpb25zLFxuICAgICAgICBNb3VzZVRyYWNrZXI6IE1vdXNlVHJhY2tlcixcbiAgICAgICAgbWVyZ2VPcHRpb25zOiBtZXJnZU9wdGlvbnMsXG4gICAgICAgIHBhcnNlT3B0aW9uczogcGFyc2VPcHRpb25zLFxuICAgICAgICBQbGF5ZXI6IFBsYXllcixcbiAgICAgICAgUHJvbWlzZTogUHJvbWlzZSQxLFxuICAgICAgICBEZWZlcnJlZDogRGVmZXJyZWQsXG4gICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgcXVlcnlBbGw6IHF1ZXJ5QWxsLFxuICAgICAgICBmaW5kOiBmaW5kLFxuICAgICAgICBmaW5kQWxsOiBmaW5kQWxsLFxuICAgICAgICBtYXRjaGVzOiBtYXRjaGVzLFxuICAgICAgICBjbG9zZXN0OiBjbG9zZXN0LFxuICAgICAgICBwYXJlbnRzOiBwYXJlbnRzLFxuICAgICAgICBlc2NhcGU6IGVzY2FwZSxcbiAgICAgICAgY3NzOiBjc3MsXG4gICAgICAgIGdldFN0eWxlczogZ2V0U3R5bGVzLFxuICAgICAgICBnZXRTdHlsZTogZ2V0U3R5bGUsXG4gICAgICAgIGdldENzc1ZhcjogZ2V0Q3NzVmFyLFxuICAgICAgICBwcm9wTmFtZTogcHJvcE5hbWUsXG4gICAgICAgIGlzVG91Y2g6IGlzVG91Y2gsXG4gICAgICAgIGdldFBvczogZ2V0UG9zJDFcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNvbXBvbmVudEFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgREFUQSA9IFVJa2l0LmRhdGE7XG5cbiAgICAgICAgdmFyIGNvbXBvbmVudHMgPSB7fTtcblxuICAgICAgICBVSWtpdC5jb21wb25lbnQgPSBmdW5jdGlvbiAobmFtZSwgb3B0aW9ucykge1xuXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGNvbXBvbmVudHNbbmFtZV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHNbbmFtZV0gPSBVSWtpdC5leHRlbmQoY29tcG9uZW50c1tuYW1lXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNbbmFtZV07XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgVUlraXRbbmFtZV0gPSBmdW5jdGlvbiAoZWxlbWVudCwgZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCwgYXJnc0FycmF5ID0gQXJyYXkoaSk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSBhcmdzQXJyYXlbaV0gPSBhcmd1bWVudHNbaV07XG5cblxuICAgICAgICAgICAgICAgIHZhciBjb21wb25lbnQgPSBVSWtpdC5jb21wb25lbnQobmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGNvbXBvbmVudCh7ZGF0YTogZWxlbWVudH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQub3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgY29tcG9uZW50KHtkYXRhOiBbXS5jb25jYXQoIGFyZ3NBcnJheSApfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSA/IGluaXQoZWxlbWVudCkgOiAkJChlbGVtZW50KS5tYXAoaW5pdClbMF07XG5cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbml0KGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBVSWtpdC5nZXRDb21wb25lbnQoZWxlbWVudCwgbmFtZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLiRkZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGNvbXBvbmVudCh7ZWw6IGVsZW1lbnQsIGRhdGE6IGRhdGEkJDF9KTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFyIG9wdCA9IGlzUGxhaW5PYmplY3Qob3B0aW9ucykgPyBhc3NpZ24oe30sIG9wdGlvbnMpIDogb3B0aW9ucy5vcHRpb25zO1xuXG4gICAgICAgICAgICBvcHQubmFtZSA9IG5hbWU7XG5cbiAgICAgICAgICAgIGlmIChvcHQuaW5zdGFsbCkge1xuICAgICAgICAgICAgICAgIG9wdC5pbnN0YWxsKFVJa2l0LCBvcHQsIG5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoVUlraXQuX2luaXRpYWxpemVkICYmICFvcHQuZnVuY3Rpb25hbCkge1xuICAgICAgICAgICAgICAgIHZhciBpZCA9IGh5cGhlbmF0ZShuYW1lKTtcbiAgICAgICAgICAgICAgICBmYXN0ZG9tLnJlYWQoZnVuY3Rpb24gKCkgeyByZXR1cm4gVUlraXRbbmFtZV0oKFwiW3VrLVwiICsgaWQgKyBcIl0sW2RhdGEtdWstXCIgKyBpZCArIFwiXVwiKSk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50c1tuYW1lXSA9IGlzUGxhaW5PYmplY3Qob3B0aW9ucykgPyBvcHQgOiBvcHRpb25zO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LmdldENvbXBvbmVudHMgPSBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50W0RBVEFdIHx8IHt9OyB9O1xuICAgICAgICBVSWtpdC5nZXRDb21wb25lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSkgeyByZXR1cm4gVUlraXQuZ2V0Q29tcG9uZW50cyhlbGVtZW50KVtuYW1lXTsgfTtcblxuICAgICAgICBVSWtpdC5jb25uZWN0ID0gZnVuY3Rpb24gKG5vZGUpIHtcblxuICAgICAgICAgICAgaWYgKG5vZGVbREFUQV0pIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIG5vZGVbREFUQV0pIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZVtEQVRBXVtuYW1lXS5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIHZhciBuYW1lJDEgPSBnZXRDb21wb25lbnROYW1lKG5vZGUuYXR0cmlidXRlc1tpXS5uYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmIChuYW1lJDEgJiYgbmFtZSQxIGluIGNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgVUlraXRbbmFtZSQxXShub2RlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LmRpc2Nvbm5lY3QgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBub2RlW0RBVEFdKSB7XG4gICAgICAgICAgICAgICAgbm9kZVtEQVRBXVtuYW1lXS5fY2FsbERpc2Nvbm5lY3RlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZShhdHRyaWJ1dGUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0c1dpdGgoYXR0cmlidXRlLCAndWstJykgfHwgc3RhcnRzV2l0aChhdHRyaWJ1dGUsICdkYXRhLXVrLScpXG4gICAgICAgICAgICA/IGNhbWVsaXplKGF0dHJpYnV0ZS5yZXBsYWNlKCdkYXRhLXVrLScsICcnKS5yZXBsYWNlKCd1ay0nLCAnJykpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJvb3QgKFVJa2l0KSB7XG5cbiAgICAgICAgdmFyIGNvbm5lY3QgPSBVSWtpdC5jb25uZWN0O1xuICAgICAgICB2YXIgZGlzY29ubmVjdCA9IFVJa2l0LmRpc2Nvbm5lY3Q7XG5cbiAgICAgICAgaWYgKCEoJ011dGF0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkb2N1bWVudC5ib2R5KSB7XG5cbiAgICAgICAgICAgIGluaXQoKTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAobmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGluaXQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pKS5vYnNlcnZlKGRvY3VtZW50LCB7Y2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG5cbiAgICAgICAgICAgIGFwcGx5JCQxKGRvY3VtZW50LmJvZHksIGNvbm5lY3QpO1xuXG4gICAgICAgICAgICBmYXN0ZG9tLmZsdXNoKCk7XG5cbiAgICAgICAgICAgIChuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25zKSB7IHJldHVybiBtdXRhdGlvbnMuZm9yRWFjaChhcHBseU11dGF0aW9uKTsgfSkpLm9ic2VydmUoZG9jdW1lbnQsIHtcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBVSWtpdC5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYXBwbHlNdXRhdGlvbihtdXRhdGlvbikge1xuXG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gbXV0YXRpb24udGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHR5cGUgPSBtdXRhdGlvbi50eXBlO1xuXG4gICAgICAgICAgICB2YXIgdXBkYXRlID0gdHlwZSAhPT0gJ2F0dHJpYnV0ZXMnXG4gICAgICAgICAgICAgICAgPyBhcHBseUNoaWxkTGlzdChtdXRhdGlvbilcbiAgICAgICAgICAgICAgICA6IGFwcGx5QXR0cmlidXRlKG11dGF0aW9uKTtcblxuICAgICAgICAgICAgdXBkYXRlICYmIFVJa2l0LnVwZGF0ZSh0YXJnZXQpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhcHBseUF0dHJpYnV0ZShyZWYpIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSByZWYuYXR0cmlidXRlTmFtZTtcblxuXG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PT0gJ2hyZWYnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShhdHRyaWJ1dGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKCFuYW1lIHx8ICEobmFtZSBpbiBVSWtpdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChoYXNBdHRyKHRhcmdldCwgYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICBVSWtpdFtuYW1lXSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gVUlraXQuZ2V0Q29tcG9uZW50KHRhcmdldCwgbmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuJGRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYXBwbHlDaGlsZExpc3QocmVmKSB7XG4gICAgICAgICAgICB2YXIgYWRkZWROb2RlcyA9IHJlZi5hZGRlZE5vZGVzO1xuICAgICAgICAgICAgdmFyIHJlbW92ZWROb2RlcyA9IHJlZi5yZW1vdmVkTm9kZXM7XG5cblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZGRlZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkkJDEoYWRkZWROb2Rlc1tpXSwgY29ubmVjdCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHJlbW92ZWROb2Rlcy5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkkJDEocmVtb3ZlZE5vZGVzW2kkMV0sIGRpc2Nvbm5lY3QpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFwcGx5JCQxKG5vZGUsIGZuKSB7XG5cbiAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSAxIHx8IGhhc0F0dHIobm9kZSwgJ3VrLW5vLWJvb3QnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm4obm9kZSk7XG4gICAgICAgICAgICBub2RlID0gbm9kZS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSBub2RlLm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBhcHBseSQkMShub2RlLCBmbik7XG4gICAgICAgICAgICAgICAgbm9kZSA9IG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdsb2JhbEFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgREFUQSA9IFVJa2l0LmRhdGE7XG5cbiAgICAgICAgVUlraXQudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuXG4gICAgICAgICAgICBpZiAocGx1Z2luLmluc3RhbGxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGx1Z2luLmNhbGwobnVsbCwgdGhpcyk7XG4gICAgICAgICAgICBwbHVnaW4uaW5zdGFsbGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4sIGNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29tcG9uZW50ID0gKGlzU3RyaW5nKGNvbXBvbmVudCkgPyBVSWtpdC5jb21wb25lbnQoY29tcG9uZW50KSA6IGNvbXBvbmVudCkgfHwgdGhpcztcbiAgICAgICAgICAgIG1peGluID0gbWVyZ2VPcHRpb25zKHt9LCBtaXhpbik7XG4gICAgICAgICAgICBtaXhpbi5taXhpbnMgPSBjb21wb25lbnQub3B0aW9ucy5taXhpbnM7XG4gICAgICAgICAgICBkZWxldGUgY29tcG9uZW50Lm9wdGlvbnMubWl4aW5zO1xuICAgICAgICAgICAgY29tcG9uZW50Lm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMobWl4aW4sIGNvbXBvbmVudC5vcHRpb25zKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5leHRlbmQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICAgICAgdmFyIFN1cGVyID0gdGhpcztcbiAgICAgICAgICAgIHZhciBTdWIgPSBmdW5jdGlvbiBVSWtpdENvbXBvbmVudCAob3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgICAgICAgICAgU3ViLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1YjtcbiAgICAgICAgICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFN1cGVyLm9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBTdWJbJ3N1cGVyJ10gPSBTdXBlcjtcbiAgICAgICAgICAgIFN1Yi5leHRlbmQgPSBTdXBlci5leHRlbmQ7XG5cbiAgICAgICAgICAgIHJldHVybiBTdWI7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQudXBkYXRlID0gZnVuY3Rpb24gKGVsZW1lbnQsIGUpIHtcblxuICAgICAgICAgICAgZSA9IGNyZWF0ZUV2ZW50KGUgfHwgJ3VwZGF0ZScpO1xuICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQgPyB0b05vZGUoZWxlbWVudCkgOiBkb2N1bWVudC5ib2R5O1xuXG4gICAgICAgICAgICBwYXRoKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gdXBkYXRlKGVsZW1lbnRbREFUQV0sIGUpOyB9KTtcbiAgICAgICAgICAgIGFwcGx5KGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiB1cGRhdGUoZWxlbWVudFtEQVRBXSwgZSk7IH0pO1xuXG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGNvbnRhaW5lcjtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFVJa2l0LCAnY29udGFpbmVyJywge1xuXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9ICQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlKGRhdGEkJDEsIGUpIHtcblxuICAgICAgICAgICAgaWYgKCFkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSQkMVtuYW1lXS5faXNSZWFkeSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW25hbWVdLl9jYWxsVXBkYXRlKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcGF0aChlbGVtZW50KSB7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IFtdO1xuXG4gICAgICAgICAgICB3aGlsZSAoZWxlbWVudCAmJiBlbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5ICYmIGVsZW1lbnQucGFyZW50Tm9kZSkge1xuXG4gICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICBwYXRoLnVuc2hpZnQoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhvb2tzQVBJIChVSWtpdCkge1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbEhvb2sgPSBmdW5jdGlvbiAoaG9vaykge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdmFyIGhhbmRsZXJzID0gdGhpcy4kb3B0aW9uc1tob29rXTtcblxuICAgICAgICAgICAgaWYgKGhhbmRsZXJzKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gaGFuZGxlci5jYWxsKHRoaXMkMSk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbENvbm5lY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9jb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSB7fTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRQcm9wcygpO1xuXG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnYmVmb3JlQ29ubmVjdCcpO1xuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5faW5pdEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5faW5pdE9ic2VydmVyKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdjb25uZWN0ZWQnKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmVhZHkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLl9jYWxsUmVhZHkoKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxVcGRhdGUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxEaXNjb25uZWN0ZWQgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnYmVmb3JlRGlzY29ubmVjdCcpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fb2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl91bmJpbmRFdmVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdkaXNjb25uZWN0ZWQnKTtcblxuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gZmFsc2U7XG5cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxSZWFkeSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzUmVhZHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2lzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ3JlYWR5Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZXNldENvbXB1dGVkcygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsbFVwZGF0ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbFVwZGF0ZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICBlID0gY3JlYXRlRXZlbnQoZSB8fCAndXBkYXRlJyk7XG5cbiAgICAgICAgICAgIHZhciB0eXBlID0gZS50eXBlO1xuXG4gICAgICAgICAgICBpZiAoaW5jbHVkZXMoWyd1cGRhdGUnLCAnbG9hZCcsICdyZXNpemUnXSwgdHlwZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNldENvbXB1dGVkcygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgdXBkYXRlcyA9IHRoaXMuJG9wdGlvbnMudXBkYXRlO1xuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuX2ZyYW1lcztcbiAgICAgICAgICAgIHZhciByZWFkcyA9IHJlZi5yZWFkcztcbiAgICAgICAgICAgIHZhciB3cml0ZXMgPSByZWYud3JpdGVzO1xuXG4gICAgICAgICAgICBpZiAoIXVwZGF0ZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHVwZGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAocmVmLCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlYWQgPSByZWYucmVhZDtcbiAgICAgICAgICAgICAgICB2YXIgd3JpdGUgPSByZWYud3JpdGU7XG4gICAgICAgICAgICAgICAgdmFyIGV2ZW50cyA9IHJlZi5ldmVudHM7XG5cblxuICAgICAgICAgICAgICAgIGlmICh0eXBlICE9PSAndXBkYXRlJyAmJiAhaW5jbHVkZXMoZXZlbnRzLCB0eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHJlYWQgJiYgIWluY2x1ZGVzKGZhc3Rkb20ucmVhZHMsIHJlYWRzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICByZWFkc1tpXSA9IGZhc3Rkb20ucmVhZChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzJDEuX2Nvbm5lY3RlZCAmJiByZWFkLmNhbGwodGhpcyQxLCB0aGlzJDEuX2RhdGEsIGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSAmJiB3cml0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rkb20uY2xlYXIod3JpdGVzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgd3JpdGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ24odGhpcyQxLl9kYXRhLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlYWRzW2ldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAod3JpdGUgJiYgIWluY2x1ZGVzKGZhc3Rkb20ud3JpdGVzLCB3cml0ZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlc1tpXSA9IGZhc3Rkb20ud3JpdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl9jb25uZWN0ZWQgJiYgd3JpdGUuY2FsbCh0aGlzJDEsIHRoaXMkMS5fZGF0YSwgZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgd3JpdGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGF0ZUFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgdWlkID0gMDtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICAgICAgICAgIG9wdGlvbnMuZGF0YSA9IG5vcm1hbGl6ZURhdGEob3B0aW9ucywgdGhpcy5jb25zdHJ1Y3Rvci5vcHRpb25zKTtcblxuICAgICAgICAgICAgdGhpcy4kb3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh0aGlzLmNvbnN0cnVjdG9yLm9wdGlvbnMsIG9wdGlvbnMsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy4kZWwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy4kcHJvcHMgPSB7fTtcblxuICAgICAgICAgICAgdGhpcy5fZnJhbWVzID0ge3JlYWRzOiB7fSwgd3JpdGVzOiB7fX07XG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5fdWlkID0gdWlkKys7XG4gICAgICAgICAgICB0aGlzLl9pbml0RGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5faW5pdE1ldGhvZHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRDb21wdXRlZHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdjcmVhdGVkJyk7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kbW91bnQob3B0aW9ucy5lbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0RGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSByZWYuZGF0YTsgaWYgKCBkYXRhJCQxID09PSB2b2lkIDAgKSBkYXRhJCQxID0ge307XG5cbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgdGhpcyQxLiRwcm9wc1trZXldID0gdGhpcyQxW2tleV0gPSBkYXRhJCQxW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0TWV0aG9kcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIG1ldGhvZHMgPSByZWYubWV0aG9kcztcblxuICAgICAgICAgICAgaWYgKG1ldGhvZHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IGJpbmQobWV0aG9kc1trZXldLCB0aGlzJDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXRDb21wdXRlZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBjb21wdXRlZCA9IHJlZi5jb21wdXRlZDtcblxuICAgICAgICAgICAgdGhpcy5fcmVzZXRDb21wdXRlZHMoKTtcblxuICAgICAgICAgICAgaWYgKGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyQ29tcHV0ZWQodGhpcyQxLCBrZXksIGNvbXB1dGVkW2tleV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX3Jlc2V0Q29tcHV0ZWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY29tcHV0ZWRzID0ge307XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0UHJvcHMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciBrZXk7XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29tcHV0ZWRzKCk7XG5cbiAgICAgICAgICAgIHByb3BzID0gcHJvcHMgfHwgZ2V0UHJvcHModGhpcy4kb3B0aW9ucywgdGhpcy4kbmFtZSk7XG5cbiAgICAgICAgICAgIGZvciAoa2V5IGluIHByb3BzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChwcm9wc1trZXldKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHByb3BzW2tleV0gPSBwcm9wc1trZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGV4Y2x1ZGUgPSBbdGhpcy4kb3B0aW9ucy5jb21wdXRlZCwgdGhpcy4kb3B0aW9ucy5tZXRob2RzXTtcbiAgICAgICAgICAgIGZvciAoa2V5IGluIHRoaXMkMS4kcHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5IGluIHByb3BzICYmIG5vdEluKGV4Y2x1ZGUsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxW2tleV0gPSB0aGlzJDEuJHByb3BzW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIGV2ZW50cyA9IHJlZi5ldmVudHM7XG5cbiAgICAgICAgICAgIGlmIChldmVudHMpIHtcblxuICAgICAgICAgICAgICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzT3duKGV2ZW50LCAnaGFuZGxlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50KHRoaXMkMSwgZXZlbnRba2V5XSwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRXZlbnQodGhpcyQxLCBldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fdW5iaW5kRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKHVuYmluZCkgeyByZXR1cm4gdW5iaW5kKCk7IH0pO1xuICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gW107XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0T2JzZXJ2ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBhdHRycyA9IHJlZi5hdHRycztcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZi5wcm9wcztcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIGlmICh0aGlzLl9vYnNlcnZlciB8fCAhcHJvcHMgfHwgIWF0dHJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhdHRycyA9IGlzQXJyYXkoYXR0cnMpID8gYXR0cnMgOiBPYmplY3Qua2V5cyhwcm9wcykubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGh5cGhlbmF0ZShrZXkpOyB9KTtcblxuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZGF0YSQkMSA9IGdldFByb3BzKHRoaXMkMS4kb3B0aW9ucywgdGhpcyQxLiRuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoYXR0cnMuc29tZShmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAhaXNVbmRlZmluZWQoZGF0YSQkMVtrZXldKSAmJiBkYXRhJCQxW2tleV0gIT09IHRoaXMkMS4kcHJvcHNba2V5XTsgfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiRyZXNldCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUoZWwsIHthdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IGF0dHJzLmNvbmNhdChbdGhpcy4kbmFtZSwgKFwiZGF0YS1cIiArICh0aGlzLiRuYW1lKSldKX0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldFByb3BzKG9wdHMsIG5hbWUpIHtcblxuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSB7fTtcbiAgICAgICAgICAgIHZhciBhcmdzID0gb3B0cy5hcmdzOyBpZiAoIGFyZ3MgPT09IHZvaWQgMCApIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IG9wdHMucHJvcHM7IGlmICggcHJvcHMgPT09IHZvaWQgMCApIHByb3BzID0ge307XG4gICAgICAgICAgICB2YXIgZWwgPSBvcHRzLmVsO1xuXG4gICAgICAgICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0F0dHIoZWwsIHByb3ApKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gY29lcmNlKHByb3BzW2tleV0sIGF0dHIoZWwsIHByb3ApKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gJ3RhcmdldCcgJiYgKCF2YWx1ZSB8fCBzdGFydHNXaXRoKHZhbHVlLCAnXycpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBvcHRpb25zID0gcGFyc2VPcHRpb25zKGRhdGEoZWwsIG5hbWUpLCBhcmdzKTtcblxuICAgICAgICAgICAgZm9yICh2YXIga2V5JDEgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wJDEgPSBjYW1lbGl6ZShrZXkkMSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzW3Byb3AkMV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW3Byb3AkMV0gPSBjb2VyY2UocHJvcHNbcHJvcCQxXSwgb3B0aW9uc1trZXkkMV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZWdpc3RlckNvbXB1dGVkKGNvbXBvbmVudCwga2V5LCBjYikge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbXBvbmVudCwga2V5LCB7XG5cbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgX2NvbXB1dGVkcyA9IGNvbXBvbmVudC5fY29tcHV0ZWRzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHByb3BzID0gY29tcG9uZW50LiRwcm9wcztcbiAgICAgICAgICAgICAgICAgICAgdmFyICRlbCA9IGNvbXBvbmVudC4kZWw7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNPd24oX2NvbXB1dGVkcywga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2NvbXB1dGVkc1trZXldID0gY2IuY2FsbChjb21wb25lbnQsICRwcm9wcywgJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcHV0ZWRzW2tleV07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Ll9jb21wdXRlZHNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50KGNvbXBvbmVudCwgZXZlbnQsIGtleSkge1xuXG4gICAgICAgICAgICBpZiAoIWlzUGxhaW5PYmplY3QoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQgPSAoe25hbWU6IGtleSwgaGFuZGxlcjogZXZlbnR9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG5hbWUgPSBldmVudC5uYW1lO1xuICAgICAgICAgICAgdmFyIGVsID0gZXZlbnQuZWw7XG4gICAgICAgICAgICB2YXIgaGFuZGxlciA9IGV2ZW50LmhhbmRsZXI7XG4gICAgICAgICAgICB2YXIgY2FwdHVyZSA9IGV2ZW50LmNhcHR1cmU7XG4gICAgICAgICAgICB2YXIgZGVsZWdhdGUgPSBldmVudC5kZWxlZ2F0ZTtcbiAgICAgICAgICAgIHZhciBmaWx0ZXIkJDEgPSBldmVudC5maWx0ZXI7XG4gICAgICAgICAgICB2YXIgc2VsZiA9IGV2ZW50LnNlbGY7XG4gICAgICAgICAgICBlbCA9IGlzRnVuY3Rpb24oZWwpXG4gICAgICAgICAgICAgICAgPyBlbC5jYWxsKGNvbXBvbmVudClcbiAgICAgICAgICAgICAgICA6IGVsIHx8IGNvbXBvbmVudC4kZWw7XG5cbiAgICAgICAgICAgIGlmIChpc0FycmF5KGVsKSkge1xuICAgICAgICAgICAgICAgIGVsLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZWdpc3RlckV2ZW50KGNvbXBvbmVudCwgYXNzaWduKHt9LCBldmVudCwge2VsOiBlbH0pLCBrZXkpOyB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZWwgfHwgZmlsdGVyJCQxICYmICFmaWx0ZXIkJDEuY2FsbChjb21wb25lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoYW5kbGVyID0gZGV0YWlsKGlzU3RyaW5nKGhhbmRsZXIpID8gY29tcG9uZW50W2hhbmRsZXJdIDogYmluZChoYW5kbGVyLCBjb21wb25lbnQpKTtcblxuICAgICAgICAgICAgaWYgKHNlbGYpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVyID0gc2VsZkZpbHRlcihoYW5kbGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29tcG9uZW50Ll9ldmVudHMucHVzaChcbiAgICAgICAgICAgICAgICBvbihcbiAgICAgICAgICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICFkZWxlZ2F0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzU3RyaW5nKGRlbGVnYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZGVsZWdhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRlbGVnYXRlLmNhbGwoY29tcG9uZW50KSxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNlbGZGaWx0ZXIoaGFuZGxlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNlbGZIYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgPT09IGUuY3VycmVudFRhcmdldCB8fCBlLnRhcmdldCA9PT0gZS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLmNhbGwobnVsbCwgZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG5vdEluKG9wdGlvbnMsIGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZXZlcnkoZnVuY3Rpb24gKGFycikgeyByZXR1cm4gIWFyciB8fCAhaGFzT3duKGFyciwga2V5KTsgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBkZXRhaWwobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gaXNBcnJheShlLmRldGFpbCkgPyBsaXN0ZW5lci5hcHBseSh2b2lkIDAsIFtlXS5jb25jYXQoZS5kZXRhaWwpKSA6IGxpc3RlbmVyKGUpOyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY29lcmNlKHR5cGUsIHZhbHVlKSB7XG5cbiAgICAgICAgICAgIGlmICh0eXBlID09PSBCb29sZWFuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvQm9vbGVhbih2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IE51bWJlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdsaXN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b0xpc3QodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbWVkaWEnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTWVkaWEodmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHlwZSA/IHR5cGUodmFsdWUpIDogdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiB0b01lZGlhKHZhbHVlKSB7XG5cbiAgICAgICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVbMF0gPT09ICdAJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IFwibWVkaWEtXCIgKyAodmFsdWUuc3Vic3RyKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0b0Zsb2F0KGdldENzc1ZhcihuYW1lKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmICFpc05hTih2YWx1ZSkgPyAoXCIobWluLXdpZHRoOiBcIiArIHZhbHVlICsgXCJweClcIikgOiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZURhdGEocmVmLCByZWYkMSkge1xuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSByZWYuZGF0YTtcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIHZhciBhcmdzID0gcmVmJDEuYXJncztcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZiQxLnByb3BzOyBpZiAoIHByb3BzID09PSB2b2lkIDAgKSBwcm9wcyA9IHt9O1xuXG4gICAgICAgICAgICBkYXRhJCQxID0gaXNBcnJheShkYXRhJCQxKVxuICAgICAgICAgICAgICAgID8gYXJncyAmJiBhcmdzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGRhdGEkJDEuc2xpY2UoMCwgYXJncy5sZW5ndGgpLnJlZHVjZShmdW5jdGlvbiAoZGF0YSQkMSwgdmFsdWUsIGluZGV4JCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ24oZGF0YSQkMSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW2FyZ3NbaW5kZXgkJDFdXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgICAgICAgICAgICAgIH0sIHt9KVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIDogZGF0YSQkMTtcblxuICAgICAgICAgICAgaWYgKGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQoZGF0YSQkMVtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGEkJDFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDFba2V5XSA9IHByb3BzW2tleV0gPyBjb2VyY2UocHJvcHNba2V5XSwgZGF0YSQkMVtrZXldLCBlbCkgOiBkYXRhJCQxW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFuY2VBUEkgKFVJa2l0KSB7XG5cbiAgICAgICAgdmFyIERBVEEgPSBVSWtpdC5kYXRhO1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoZWwpIHtcblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IHJlZi5uYW1lO1xuXG4gICAgICAgICAgICBpZiAoIWVsW0RBVEFdKSB7XG4gICAgICAgICAgICAgICAgZWxbREFUQV0gPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVsW0RBVEFdW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbFtEQVRBXVtuYW1lXSA9IHRoaXM7XG5cbiAgICAgICAgICAgIHRoaXMuJGVsID0gdGhpcy4kb3B0aW9ucy5lbCA9IHRoaXMuJG9wdGlvbnMuZWwgfHwgZWw7XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdpbml0Jyk7XG5cbiAgICAgICAgICAgIGlmICh3aXRoaW4oZWwsIGRvY3VtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxDb25uZWN0ZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJGVtaXQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdGhpcy5fY2FsbFVwZGF0ZShlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJHJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY2FsbERpc2Nvbm5lY3RlZCgpO1xuICAgICAgICAgICAgdGhpcy5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kZGVzdHJveSA9IGZ1bmN0aW9uIChyZW1vdmVFbCkge1xuICAgICAgICAgICAgaWYgKCByZW1vdmVFbCA9PT0gdm9pZCAwICkgcmVtb3ZlRWwgPSBmYWxzZTtcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIHZhciBuYW1lID0gcmVmLm5hbWU7XG5cbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxEaXNjb25uZWN0ZWQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2Rlc3Ryb3knKTtcblxuICAgICAgICAgICAgaWYgKCFlbCB8fCAhZWxbREFUQV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlbGV0ZSBlbFtEQVRBXVtuYW1lXTtcblxuICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlbFtEQVRBXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGVsW0RBVEFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVtb3ZlRWwpIHtcbiAgICAgICAgICAgICAgICByZW1vdmUodGhpcy4kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kY3JlYXRlID0gZnVuY3Rpb24gKGNvbXBvbmVudCwgZWxlbWVudCwgZGF0YSQkMSkge1xuICAgICAgICAgICAgcmV0dXJuIFVJa2l0W2NvbXBvbmVudF0oZWxlbWVudCwgZGF0YSQkMSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLiR1cGRhdGUgPSBVSWtpdC51cGRhdGU7XG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kZ2V0Q29tcG9uZW50ID0gVUlraXQuZ2V0Q29tcG9uZW50O1xuXG4gICAgICAgIHZhciBuYW1lcyA9IHt9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhVSWtpdC5wcm90b3R5cGUsIHtcblxuICAgICAgICAgICAgJGNvbnRhaW5lcjogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihVSWtpdCwgJ2NvbnRhaW5lcicpLFxuXG4gICAgICAgICAgICAkbmFtZToge1xuXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gcmVmLm5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFuYW1lc1tuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNbbmFtZV0gPSBVSWtpdC5wcmVmaXggKyBoeXBoZW5hdGUobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZXNbbmFtZV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICB2YXIgVUlraXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICB0aGlzLl9pbml0KG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICBVSWtpdC51dGlsID0gdXRpbDtcbiAgICBVSWtpdC5kYXRhID0gJ19fdWlraXRfXyc7XG4gICAgVUlraXQucHJlZml4ID0gJ3VrLSc7XG4gICAgVUlraXQub3B0aW9ucyA9IHt9O1xuXG4gICAgZ2xvYmFsQVBJKFVJa2l0KTtcbiAgICBob29rc0FQSShVSWtpdCk7XG4gICAgc3RhdGVBUEkoVUlraXQpO1xuICAgIGNvbXBvbmVudEFQSShVSWtpdCk7XG4gICAgaW5zdGFuY2VBUEkoVUlraXQpO1xuXG4gICAgdmFyIENsYXNzID0ge1xuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy4kbmFtZSk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgVG9nZ2xhYmxlID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjbHM6IEJvb2xlYW4sXG4gICAgICAgICAgICBhbmltYXRpb246ICdsaXN0JyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBOdW1iZXIsXG4gICAgICAgICAgICBvcmlnaW46IFN0cmluZyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246IFN0cmluZyxcbiAgICAgICAgICAgIHF1ZXVlZDogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNsczogZmFsc2UsXG4gICAgICAgICAgICBhbmltYXRpb246IFtmYWxzZV0sXG4gICAgICAgICAgICBkdXJhdGlvbjogMjAwLFxuICAgICAgICAgICAgb3JpZ2luOiBmYWxzZSxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICdsaW5lYXInLFxuICAgICAgICAgICAgcXVldWVkOiBmYWxzZSxcblxuICAgICAgICAgICAgaW5pdFByb3BzOiB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICcnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogJycsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnJyxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206ICcnXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlUHJvcHM6IHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A6IDAsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IDAsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAwXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBoYXNBbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICEhYW5pbWF0aW9uWzBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFzVHJhbnNpdGlvbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFuaW1hdGlvbiA9IHJlZi5hbmltYXRpb247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNBbmltYXRpb24gJiYgYW5pbWF0aW9uWzBdID09PSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB0b2dnbGVFbGVtZW50OiBmdW5jdGlvbih0YXJnZXRzLCBzaG93LCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHMgPSB0b05vZGVzKHRhcmdldHMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhbGwgPSBmdW5jdGlvbiAodGFyZ2V0cykgeyByZXR1cm4gUHJvbWlzZSQxLmFsbCh0YXJnZXRzLm1hcChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5fdG9nZ2xlRWxlbWVudChlbCwgc2hvdywgYW5pbWF0ZSQkMSk7IH0pKTsgfTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRvZ2dsZWQgPSB0YXJnZXRzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5pc1RvZ2dsZWQoZWwpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVudG9nZ2xlZCA9IHRhcmdldHMuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIWluY2x1ZGVzKHRvZ2dsZWQsIGVsKTsgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEucXVldWVkIHx8ICFpc1VuZGVmaW5lZChhbmltYXRlJCQxKSB8fCAhaXNVbmRlZmluZWQoc2hvdykgfHwgIXRoaXMkMS5oYXNBbmltYXRpb24gfHwgdGFyZ2V0cy5sZW5ndGggPCAyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhbGwodW50b2dnbGVkLmNvbmNhdCh0b2dnbGVkKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbCA9IGJvZHkuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsID0gdG9nZ2xlZFswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpblByb2dyZXNzID0gQW5pbWF0aW9uLmluUHJvZ3Jlc3MoZWwpICYmIGhhc0NsYXNzKGVsLCAndWstYW5pbWF0aW9uLWxlYXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgVHJhbnNpdGlvbi5pblByb2dyZXNzKGVsKSAmJiBlbC5zdHlsZS5oZWlnaHQgPT09ICcwcHgnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBwID0gYWxsKHRvZ2dsZWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBhbGwodW50b2dnbGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keS5zY3JvbGxUb3AgPSBzY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwLnRoZW4ocmVzb2x2ZSwgbm9vcCk7XG5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRvZ2dsZU5vdzogZnVuY3Rpb24odGFyZ2V0cywgc2hvdykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIFByb21pc2UkMS5hbGwodG9Ob2Rlcyh0YXJnZXRzKS5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZUVsZW1lbnQoZWwsIHNob3csIGZhbHNlKTsgfSkpLnRoZW4ocmVzb2x2ZSwgbm9vcCk7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXNUb2dnbGVkOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IHRvTm9kZXMoZWwgfHwgdGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsc1xuICAgICAgICAgICAgICAgICAgICA/IGhhc0NsYXNzKG5vZGVzLCB0aGlzLmNscy5zcGxpdCgnICcpWzBdKVxuICAgICAgICAgICAgICAgICAgICA6ICFoYXNBdHRyKG5vZGVzLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGVBcmlhOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNscyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cihlbCwgJ2FyaWEtaGlkZGVuJywgIXRoaXMuaXNUb2dnbGVkKGVsKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUVsZW1lbnQ6IGZ1bmN0aW9uKGVsLCBzaG93LCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHNob3cgPSBpc0Jvb2xlYW4oc2hvdylcbiAgICAgICAgICAgICAgICAgICAgPyBzaG93XG4gICAgICAgICAgICAgICAgICAgIDogQW5pbWF0aW9uLmluUHJvZ3Jlc3MoZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhc0NsYXNzKGVsLCAndWstYW5pbWF0aW9uLWxlYXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogVHJhbnNpdGlvbi5pblByb2dyZXNzKGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZWwuc3R5bGUuaGVpZ2h0ID09PSAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIXRoaXMuaXNUb2dnbGVkKGVsKTtcblxuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcihlbCwgKFwiYmVmb3JlXCIgKyAoc2hvdyA/ICdzaG93JyA6ICdoaWRlJykpLCBbdGhpc10pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHByb21pc2UgPSAoYW5pbWF0ZSQkMSA9PT0gZmFsc2UgfHwgIXRoaXMuaGFzQW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5fdG9nZ2xlSW1tZWRpYXRlXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5oYXNUcmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX3RvZ2dsZUhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl90b2dnbGVBbmltYXRpb25cbiAgICAgICAgICAgICAgICApKGVsLCBzaG93KTtcblxuICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsIHNob3cgPyAnc2hvdycgOiAnaGlkZScsIFt0aGlzXSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihlbCwgc2hvdyA/ICdzaG93bicgOiAnaGlkZGVuJywgW3RoaXMkMV0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZShlbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlOiBmdW5jdGlvbihlbCwgdG9nZ2xlZCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCFlbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGNoYW5nZWQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBpbmNsdWRlcyh0aGlzLmNscywgJyAnKSB8fCBCb29sZWFuKHRvZ2dsZWQpICE9PSBoYXNDbGFzcyhlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIHRvZ2dsZUNsYXNzKGVsLCB0aGlzLmNscywgaW5jbHVkZXModGhpcy5jbHMsICcgJykgPyB1bmRlZmluZWQgOiB0b2dnbGVkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gQm9vbGVhbih0b2dnbGVkKSA9PT0gaGFzQXR0cihlbCwgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIGF0dHIoZWwsICdoaWRkZW4nLCAhdG9nZ2xlZCA/ICcnIDogbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJCQoJ1thdXRvZm9jdXNdJywgZWwpLnNvbWUoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBpc1Zpc2libGUoZWwpICYmIChlbC5mb2N1cygpIHx8IHRydWUpOyB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYShlbCk7XG4gICAgICAgICAgICAgICAgY2hhbmdlZCAmJiB0aGlzLiR1cGRhdGUoZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUltbWVkaWF0ZTogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGUoZWwsIHNob3cpO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUhlaWdodDogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIGluUHJvZ3Jlc3MgPSBUcmFuc2l0aW9uLmluUHJvZ3Jlc3MoZWwpO1xuICAgICAgICAgICAgICAgIHZhciBpbm5lciA9IGVsLmhhc0NoaWxkTm9kZXMgPyB0b0Zsb2F0KGNzcyhlbC5maXJzdEVsZW1lbnRDaGlsZCwgJ21hcmdpblRvcCcpKSArIHRvRmxvYXQoY3NzKGVsLmxhc3RFbGVtZW50Q2hpbGQsICdtYXJnaW5Cb3R0b20nKSkgOiAwO1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50SGVpZ2h0ID0gaXNWaXNpYmxlKGVsKSA/IGhlaWdodChlbCkgKyAoaW5Qcm9ncmVzcyA/IDAgOiBpbm5lcikgOiAwO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwoZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzVG9nZ2xlZChlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlKGVsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQoZWwsICcnKTtcblxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjaGlsZCBjb21wb25lbnRzIGZpcnN0XG4gICAgICAgICAgICAgICAgZmFzdGRvbS5mbHVzaCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGVuZEhlaWdodCA9IGhlaWdodChlbCkgKyAoaW5Qcm9ncmVzcyA/IDAgOiBpbm5lcik7XG4gICAgICAgICAgICAgICAgaGVpZ2h0KGVsLCBjdXJyZW50SGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoc2hvd1xuICAgICAgICAgICAgICAgICAgICA/IFRyYW5zaXRpb24uc3RhcnQoZWwsIGFzc2lnbih7fSwgdGhpcy5pbml0UHJvcHMsIHtvdmVyZmxvdzogJ2hpZGRlbicsIGhlaWdodDogZW5kSGVpZ2h0fSksIE1hdGgucm91bmQodGhpcy5kdXJhdGlvbiAqICgxIC0gY3VycmVudEhlaWdodCAvIGVuZEhlaWdodCkpLCB0aGlzLnRyYW5zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgIDogVHJhbnNpdGlvbi5zdGFydChlbCwgdGhpcy5oaWRlUHJvcHMsIE1hdGgucm91bmQodGhpcy5kdXJhdGlvbiAqIChjdXJyZW50SGVpZ2h0IC8gZW5kSGVpZ2h0KSksIHRoaXMudHJhbnNpdGlvbikudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZShlbCwgZmFsc2UpOyB9KVxuICAgICAgICAgICAgICAgICkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBjc3MoZWwsIHRoaXMkMS5pbml0UHJvcHMpOyB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUFuaW1hdGlvbjogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbChlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2hvdykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGUoZWwsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQW5pbWF0aW9uLmluKGVsLCB0aGlzLmFuaW1hdGlvblswXSwgdGhpcy5kdXJhdGlvbiwgdGhpcy5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBBbmltYXRpb24ub3V0KGVsLCB0aGlzLmFuaW1hdGlvblsxXSB8fCB0aGlzLmFuaW1hdGlvblswXSwgdGhpcy5kdXJhdGlvbiwgdGhpcy5vcmlnaW4pLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLl90b2dnbGUoZWwsIGZhbHNlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBBY2NvcmRpb24gPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFRvZ2dsYWJsZV0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRhcmdldHM6IFN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2ZTogbnVsbCxcbiAgICAgICAgICAgIGNvbGxhcHNpYmxlOiBCb29sZWFuLFxuICAgICAgICAgICAgbXVsdGlwbGU6IEJvb2xlYW4sXG4gICAgICAgICAgICB0b2dnbGU6IFN0cmluZyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldHM6ICc+IConLFxuICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogW3RydWVdLFxuICAgICAgICAgICAgY29sbGFwc2libGU6IHRydWUsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBjbHNPcGVuOiAndWstb3BlbicsXG4gICAgICAgICAgICB0b2dnbGU6ICc+IC51ay1hY2NvcmRpb24tdGl0bGUnLFxuICAgICAgICAgICAgY29udGVudDogJz4gLnVrLWFjY29yZGlvbi1jb250ZW50JyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICdlYXNlJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGl0ZW1zOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXRzID0gcmVmLnRhcmdldHM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGFyZ2V0cywgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh0aGlzLnRhcmdldHMpICsgXCIgXCIgKyAodGhpcy4kcHJvcHMudG9nZ2xlKSk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShpbmRleCgkJCgoKHRoaXMudGFyZ2V0cykgKyBcIiBcIiArICh0aGlzLiRwcm9wcy50b2dnbGUpKSwgdGhpcy4kZWwpLCBlLmN1cnJlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLml0ZW1zW051bWJlcih0aGlzLmFjdGl2ZSldO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiAhaGFzQ2xhc3MoYWN0aXZlLCB0aGlzLmNsc09wZW4pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoYWN0aXZlLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5fdG9nZ2xlSW1tZWRpYXRlKCQodGhpcyQxLmNvbnRlbnQsIGVsKSwgaGFzQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuKSk7IH0pO1xuXG4gICAgICAgICAgICB2YXIgYWN0aXZlID0gIXRoaXMuY29sbGFwc2libGUgJiYgIWhhc0NsYXNzKHRoaXMuaXRlbXMsIHRoaXMuY2xzT3BlbikgJiYgdGhpcy5pdGVtc1swXTtcbiAgICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShhY3RpdmUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZTogZnVuY3Rpb24oaXRlbSwgYW5pbWF0ZSQkMSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSBnZXRJbmRleChpdGVtLCB0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gZmlsdGVyKHRoaXMuaXRlbXMsIChcIi5cIiArICh0aGlzLmNsc09wZW4pKSk7XG5cbiAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtc1tpbmRleCQkMV07XG5cbiAgICAgICAgICAgICAgICBpdGVtICYmIFtpdGVtXVxuICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCF0aGlzLm11bHRpcGxlICYmICFpbmNsdWRlcyhhY3RpdmUsIGl0ZW0pICYmIGFjdGl2ZSB8fCBbXSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc0l0ZW0gPSBlbCA9PT0gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9IGlzSXRlbSAmJiAhaGFzQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSAmJiBpc0l0ZW0gJiYgIXRoaXMkMS5jb2xsYXBzaWJsZSAmJiBhY3RpdmUubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuLCBzdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gZWwuX3dyYXBwZXIgPyBlbC5fd3JhcHBlci5maXJzdEVsZW1lbnRDaGlsZCA6ICQodGhpcyQxLmNvbnRlbnQsIGVsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbC5fd3JhcHBlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLl93cmFwcGVyID0gd3JhcEFsbChjb250ZW50LCAnPGRpdj4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyKGVsLl93cmFwcGVyLCAnaGlkZGVuJywgc3RhdGUgPyAnJyA6IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RvZ2dsZUltbWVkaWF0ZShjb250ZW50LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGVFbGVtZW50KGVsLl93cmFwcGVyLCBzdGF0ZSwgYW5pbWF0ZSQkMSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsYXNzKGVsLCB0aGlzJDEuY2xzT3BlbikgPT09IHN0YXRlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl90b2dnbGVJbW1lZGlhdGUoY29udGVudCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwuX3dyYXBwZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXAoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBBbGVydCA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgVG9nZ2xhYmxlXSxcblxuICAgICAgICBhcmdzOiAnYW5pbWF0aW9uJyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2xvc2U6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogW3RydWVdLFxuICAgICAgICAgICAgc2VsQ2xvc2U6ICcudWstYWxlcnQtY2xvc2UnLFxuICAgICAgICAgICAgZHVyYXRpb246IDE1MCxcbiAgICAgICAgICAgIGhpZGVQcm9wczogYXNzaWduKHtvcGFjaXR5OiAwfSwgVG9nZ2xhYmxlLmRhdGEuaGlkZVByb3BzKVxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxDbG9zZTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMuJGVsKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS4kZGVzdHJveSh0cnVlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIENvcmUgKFVJa2l0KSB7XG5cbiAgICAgICAgcmVhZHkoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICB2YXIgc2Nyb2xsID0gMDtcbiAgICAgICAgICAgIHZhciBzdGFydGVkID0gMDtcblxuICAgICAgICAgICAgb24od2luZG93LCAnbG9hZCByZXNpemUnLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gVUlraXQudXBkYXRlKG51bGwsIGUpOyB9KTtcbiAgICAgICAgICAgIG9uKHdpbmRvdywgJ3Njcm9sbCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgZS5kaXIgPSBzY3JvbGwgPD0gd2luZG93LnBhZ2VZT2Zmc2V0ID8gJ2Rvd24nIDogJ3VwJztcbiAgICAgICAgICAgICAgICBlLnBhZ2VZT2Zmc2V0ID0gc2Nyb2xsID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgICAgIFVJa2l0LnVwZGF0ZShudWxsLCBlKTtcbiAgICAgICAgICAgIH0sIHtjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZX0pO1xuXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2FuaW1hdGlvbnN0YXJ0JywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgaWYgKChjc3ModGFyZ2V0LCAnYW5pbWF0aW9uTmFtZScpIHx8ICcnKS5tYXRjaCgvXnVrLS4qKGxlZnR8cmlnaHQpLykpIHtcblxuICAgICAgICAgICAgICAgICAgICBzdGFydGVkKys7XG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3dYJywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghLS1zdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICdvdmVyZmxvd1gnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHRvTXMoY3NzKHRhcmdldCwgJ2FuaW1hdGlvbkR1cmF0aW9uJykpICsgMTAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKCFoYXNUb3VjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNscyA9ICd1ay1ob3Zlcic7XG5cbiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAndGFwJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCQoKFwiLlwiICsgY2xzKSkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuICF3aXRoaW4odGFyZ2V0LCBlbCkgJiYgcmVtb3ZlQ2xhc3MoZWwsIGNscyk7IH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFVJa2l0LCAnaG92ZXJTZWxlY3RvcicsIHtcblxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgb24oZG9jdW1lbnQsICd0YXAnLCBzZWxlY3RvciwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZENsYXNzKGN1cnJlbnQsIGNscyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFVJa2l0LmhvdmVyU2VsZWN0b3IgPSAnLnVrLWFuaW1hdGlvbi10b2dnbGUsIC51ay10cmFuc2l0aW9uLXRvZ2dsZSwgW3VrLWhvdmVyXSc7XG5cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICB2YXIgVmlkZW8gPSB7XG5cbiAgICAgICAgYXJnczogJ2F1dG9wbGF5JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgYXV0b211dGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBhdXRvcGxheTogQm9vbGVhbixcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhdXRvbXV0ZTogZmFsc2UsXG4gICAgICAgICAgICBhdXRvcGxheTogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGluVmlldzogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGF1dG9wbGF5ID0gcmVmLmF1dG9wbGF5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF1dG9wbGF5ID09PSAnaW52aWV3JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmluVmlldyAmJiAhaGFzQXR0cih0aGlzLiRlbCwgJ3ByZWxvYWQnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsLnByZWxvYWQgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICByZWFkeTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHRoaXMucGxheWVyID0gbmV3IFBsYXllcih0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9tdXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIubXV0ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKF8sIHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLnBsYXllciB8fCAodHlwZSA9PT0gJ3Njcm9sbCcgfHwgdHlwZSA9PT0gJ3Jlc2l6ZScpICYmICF0aGlzLmluVmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogaXNWaXNpYmxlKHRoaXMuJGVsKSAmJiBjc3ModGhpcy4kZWwsICd2aXNpYmlsaXR5JykgIT09ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluVmlldzogdGhpcy5pblZpZXcgJiYgaXNJblZpZXcodGhpcy4kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aXNpYmxlID0gcmVmLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpblZpZXcgPSByZWYuaW5WaWV3O1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2aXNpYmxlIHx8IHRoaXMuaW5WaWV3ICYmICFpblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hdXRvcGxheSA9PT0gdHJ1ZSB8fCB0aGlzLmluVmlldyAmJiBpblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLnBsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZScsICdzY3JvbGwnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIHZhciBDb3ZlciA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgVmlkZW9dLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB3aWR0aDogTnVtYmVyLFxuICAgICAgICAgICAgaGVpZ2h0OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhdXRvbXV0ZTogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZWwgPSB0aGlzLiRlbDtcblxuICAgICAgICAgICAgICAgIGlmICghaXNWaXNpYmxlKGVsKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IGVsLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgY3NzKFxuICAgICAgICAgICAgICAgICAgICBjc3MoZWwsIHt3aWR0aDogJycsIGhlaWdodDogJyd9KSxcbiAgICAgICAgICAgICAgICAgICAgRGltZW5zaW9ucy5jb3ZlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy53aWR0aCB8fCBlbC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0IHx8IGVsLmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgkJDEgKyAod2lkdGgkJDEgJSAyID8gMSA6IDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0JCQxICsgKGhlaWdodCQkMSAlIDIgPyAxIDogMClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgbG9hZGVkbWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFBvc2l0aW9uID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBwb3M6IFN0cmluZyxcbiAgICAgICAgICAgIG9mZnNldDogbnVsbCxcbiAgICAgICAgICAgIGZsaXA6IEJvb2xlYW4sXG4gICAgICAgICAgICBjbHNQb3M6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHBvczogKFwiYm90dG9tLVwiICsgKCFpc1J0bCA/ICdsZWZ0JyA6ICdyaWdodCcpKSxcbiAgICAgICAgICAgIGZsaXA6IHRydWUsXG4gICAgICAgICAgICBvZmZzZXQ6IGZhbHNlLFxuICAgICAgICAgICAgY2xzUG9zOiAnJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHBvczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlZi5wb3M7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKHBvcyArICghaW5jbHVkZXMocG9zLCAnLScpID8gJy1jZW50ZXInIDogJycpKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZGlyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb3NbMF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBhbGlnbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zWzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBwb3NpdGlvbkF0OiBmdW5jdGlvbihlbGVtZW50LCB0YXJnZXQsIGJvdW5kYXJ5KSB7XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzc2VzKGVsZW1lbnQsICgodGhpcy5jbHNQb3MpICsgXCItKHRvcHxib3R0b218bGVmdHxyaWdodCkoLVthLXpdKyk/XCIpKTtcbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwge3RvcDogJycsIGxlZnQ6ICcnfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgbm9kZTtcbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0JCQxID0gcmVmLm9mZnNldDtcblxuICAgICAgICAgICAgICAgIG9mZnNldCQkMSA9IGlzTnVtZXJpYyhvZmZzZXQkJDEpXG4gICAgICAgICAgICAgICAgICAgID8gb2Zmc2V0JCQxXG4gICAgICAgICAgICAgICAgICAgIDogKG5vZGUgPSAkKG9mZnNldCQkMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9mZnNldChub2RlKVtheGlzID09PSAneCcgPyAnbGVmdCcgOiAndG9wJ10gLSBvZmZzZXQodGFyZ2V0KVtheGlzID09PSAneCcgPyAncmlnaHQnIDogJ2JvdHRvbSddXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgICAgICAgICB2YXIgYXhpcyA9IHRoaXMuZ2V0QXhpcygpO1xuICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IHBvc2l0aW9uQXQoXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgYXhpcyA9PT0gJ3gnID8gKChmbGlwUG9zaXRpb24odGhpcy5kaXIpKSArIFwiIFwiICsgKHRoaXMuYWxpZ24pKSA6ICgodGhpcy5hbGlnbikgKyBcIiBcIiArIChmbGlwUG9zaXRpb24odGhpcy5kaXIpKSksXG4gICAgICAgICAgICAgICAgICAgIGF4aXMgPT09ICd4JyA/ICgodGhpcy5kaXIpICsgXCIgXCIgKyAodGhpcy5hbGlnbikpIDogKCh0aGlzLmFsaWduKSArIFwiIFwiICsgKHRoaXMuZGlyKSksXG4gICAgICAgICAgICAgICAgICAgIGF4aXMgPT09ICd4JyA/IChcIlwiICsgKHRoaXMuZGlyID09PSAnbGVmdCcgPyAtb2Zmc2V0JCQxIDogb2Zmc2V0JCQxKSkgOiAoXCIgXCIgKyAodGhpcy5kaXIgPT09ICd0b3AnID8gLW9mZnNldCQkMSA6IG9mZnNldCQkMSkpLFxuICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZsaXAsXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5XG4gICAgICAgICAgICAgICAgKS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgdmFyIHggPSByZWYkMS54O1xuICAgICAgICAgICAgICAgIHZhciB5ID0gcmVmJDEueTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZGlyID0gYXhpcyA9PT0gJ3gnID8geCA6IHk7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbiA9IGF4aXMgPT09ICd4JyA/IHkgOiB4O1xuXG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWxlbWVudCwgKCh0aGlzLmNsc1BvcykgKyBcIi1cIiArICh0aGlzLmRpcikgKyBcIi1cIiArICh0aGlzLmFsaWduKSksIHRoaXMub2Zmc2V0ID09PSBmYWxzZSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEF4aXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpciA9PT0gJ3RvcCcgfHwgdGhpcy5kaXIgPT09ICdib3R0b20nID8gJ3knIDogJ3gnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgYWN0aXZlO1xuXG4gICAgdmFyIERyb3AgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbUG9zaXRpb24sIFRvZ2dsYWJsZV0sXG5cbiAgICAgICAgYXJnczogJ3BvcycsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIG1vZGU6ICdsaXN0JyxcbiAgICAgICAgICAgIHRvZ2dsZTogQm9vbGVhbixcbiAgICAgICAgICAgIGJvdW5kYXJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgYm91bmRhcnlBbGlnbjogQm9vbGVhbixcbiAgICAgICAgICAgIGRlbGF5U2hvdzogTnVtYmVyLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiBOdW1iZXIsXG4gICAgICAgICAgICBjbHNEcm9wOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBtb2RlOiBbJ2NsaWNrJywgJ2hvdmVyJ10sXG4gICAgICAgICAgICB0b2dnbGU6ICctIConLFxuICAgICAgICAgICAgYm91bmRhcnk6IHdpbmRvdyxcbiAgICAgICAgICAgIGJvdW5kYXJ5QWxpZ246IGZhbHNlLFxuICAgICAgICAgICAgZGVsYXlTaG93OiAwLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiA4MDAsXG4gICAgICAgICAgICBjbHNEcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIGhvdmVySWRsZTogMjAwLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBbJ3VrLWFuaW1hdGlvbi1mYWRlJ10sXG4gICAgICAgICAgICBjbHM6ICd1ay1vcGVuJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGJvdW5kYXJ5OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeSA9IHJlZi5ib3VuZGFyeTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeShib3VuZGFyeSwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0Ryb3A6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBjbHNEcm9wID0gcmVmLmNsc0Ryb3A7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2xzRHJvcCB8fCAoXCJ1ay1cIiArICh0aGlzLiRvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc1BvczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xzRHJvcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy50cmFja2VyID0gbmV3IE1vdXNlVHJhY2tlcigpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0Ryb3ApO1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kcHJvcHM7XG4gICAgICAgICAgICB2YXIgdG9nZ2xlID0gcmVmLnRvZ2dsZTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlID0gdG9nZ2xlICYmIHRoaXMuJGNyZWF0ZSgndG9nZ2xlJywgcXVlcnkodG9nZ2xlLCB0aGlzLiRlbCksIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRoaXMuJGVsLFxuICAgICAgICAgICAgICAgIG1vZGU6IHRoaXMubW9kZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYSh0aGlzLiRlbCk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFwiLlwiICsgKHRoaXMuY2xzRHJvcCkgKyBcIi1jbG9zZVwiKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2FbaHJlZl49XCIjXCJdJztcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IGUudGFyZ2V0Lmhhc2g7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZCB8fCAhd2l0aGluKGlkLCB0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzY3JvbGwnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAndG9nZ2xlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0b2dnbGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3codG9nZ2xlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJFbnRlcixcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh0aGlzLm1vZGUsICdob3ZlcicpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIGFjdGl2ZSAhPT0gdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgJiYgYWN0aXZlLnRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgaW5jbHVkZXMoYWN0aXZlLnRvZ2dsZS5tb2RlLCAnaG92ZXInKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXdpdGhpbihlLnRhcmdldCwgYWN0aXZlLnRvZ2dsZS4kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhcG9pbnRJblJlY3Qoe3g6IGUucGFnZVgsIHk6IGUucGFnZVl9LCBvZmZzZXQoYWN0aXZlLiRlbCkpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3codGhpcy50b2dnbGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3RvZ2dsZXNob3cnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgdG9nZ2xlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvZ2dsZSAmJiAhaW5jbHVkZXModG9nZ2xlLnRhcmdldCwgdGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0b2dnbGUgfHwgdGhpcy50b2dnbGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogKFwidG9nZ2xlaGlkZSBcIiArIHBvaW50ZXJMZWF2ZSksXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0b2dnbGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNUb3VjaChlKSB8fCB0b2dnbGUgJiYgIWluY2x1ZGVzKHRvZ2dsZS50YXJnZXQsIHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZSAmJiBpbmNsdWRlcyh0aGlzLnRvZ2dsZS5tb2RlLCAnaG92ZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3Nob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYWNrZXIuaW5pdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMudG9nZ2xlLiRlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLnRvZ2dsZS4kZWwsICdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3JlaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcnMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiRlbCAhPT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSBhY3RpdmUgPT09IG51bGwgJiYgd2l0aGluKHRhcmdldCwgdGhpcy4kZWwpICYmIHRoaXMuaXNUb2dnbGVkKCkgPyB0aGlzIDogYWN0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSgpID8gbnVsbCA6IGFjdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMudG9nZ2xlLiRlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLnRvZ2dsZS4kZWwsICdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZS4kZWwuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJCQoJ2EsIGJ1dHRvbicsIHRoaXMudG9nZ2xlLiRlbCkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmJsdXIoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYWNrZXIuY2FuY2VsKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkgJiYgIUFuaW1hdGlvbi5pblByb2dyZXNzKHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24odG9nZ2xlLCBkZWxheSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmICggZGVsYXkgPT09IHZvaWQgMCApIGRlbGF5ID0gdHJ1ZTtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHNob3cgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAhdGhpcyQxLmlzVG9nZ2xlZCgpICYmIHRoaXMkMS50b2dnbGVFbGVtZW50KHRoaXMkMS4kZWwsIHRydWUpOyB9O1xuICAgICAgICAgICAgICAgIHZhciB0cnlTaG93ID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGUgPSB0b2dnbGUgfHwgdGhpcyQxLnRvZ2dsZTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuY2xlYXJUaW1lcnMoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWxheSAmJiBhY3RpdmUgJiYgYWN0aXZlICE9PSB0aGlzJDEgJiYgYWN0aXZlLmlzRGVsYXlpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zaG93VGltZXIgPSBzZXRUaW1lb3V0KHRoaXMkMS5zaG93LCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcyQxLmlzUGFyZW50T2YoYWN0aXZlKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlLmhpZGVUaW1lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aXZlICYmICF0aGlzJDEuaXNDaGlsZE9mKGFjdGl2ZSkgJiYgIXRoaXMkMS5pc1BhcmVudE9mKGFjdGl2ZSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXY7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYWN0aXZlICYmIGFjdGl2ZSAhPT0gcHJldiAmJiAhdGhpcyQxLmlzQ2hpbGRPZihhY3RpdmUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWxheSAmJiB0aGlzJDEuZGVsYXlTaG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvd1RpbWVyID0gc2V0VGltZW91dChzaG93LCB0aGlzJDEuZGVsYXlTaG93KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9IHRoaXMkMTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRvZ2dsZSAmJiB0aGlzLnRvZ2dsZSAmJiB0b2dnbGUuJGVsICE9PSB0aGlzLnRvZ2dsZS4kZWwpIHtcblxuICAgICAgICAgICAgICAgICAgICBvbmNlKHRoaXMuJGVsLCAnaGlkZScsIHRyeVNob3cpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5U2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKGRlbGF5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBkZWxheSA9PT0gdm9pZCAwICkgZGVsYXkgPSB0cnVlO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaGlkZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS50b2dnbGVOb3codGhpcyQxLiRlbCwgZmFsc2UpOyB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RlbGF5aW5nID0gdGhpcy50cmFja2VyLm1vdmVzVG8odGhpcy4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRlbGF5ICYmIHRoaXMuaXNEZWxheWluZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IHNldFRpbWVvdXQodGhpcy5oaWRlLCB0aGlzLmhvdmVySWRsZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWxheSAmJiB0aGlzLmRlbGF5SGlkZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IHNldFRpbWVvdXQoaGlkZSwgdGhpcy5kZWxheUhpZGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbGVhclRpbWVyczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVyKTtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0RlbGF5aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpc0FjdGl2ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZSA9PT0gdGhpcztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzQ2hpbGRPZjogZnVuY3Rpb24oZHJvcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkcm9wICYmIGRyb3AgIT09IHRoaXMgJiYgd2l0aGluKHRoaXMuJGVsLCBkcm9wLiRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpc1BhcmVudE9mOiBmdW5jdGlvbihkcm9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyb3AgJiYgZHJvcCAhPT0gdGhpcyAmJiB3aXRoaW4oZHJvcC4kZWwsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzZXModGhpcy4kZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLShzdGFja3xib3VuZGFyeSlcIikpO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge3RvcDogJycsIGxlZnQ6ICcnLCBkaXNwbGF5OiAnYmxvY2snfSk7XG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLWJvdW5kYXJ5XCIpLCB0aGlzLmJvdW5kYXJ5QWxpZ24pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gb2Zmc2V0KHRoaXMuYm91bmRhcnkpO1xuICAgICAgICAgICAgICAgIHZhciBhbGlnblRvID0gdGhpcy5ib3VuZGFyeUFsaWduID8gYm91bmRhcnkgOiBvZmZzZXQodGhpcy50b2dnbGUuJGVsKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsaWduID09PSAnanVzdGlmeScpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb3AgPSB0aGlzLmdldEF4aXMoKSA9PT0gJ3knID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHByb3AsIGFsaWduVG9bcHJvcF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy4kZWwub2Zmc2V0V2lkdGggPiBNYXRoLm1heChib3VuZGFyeS5yaWdodCAtIGFsaWduVG8ubGVmdCwgYWxpZ25Uby5yaWdodCAtIGJvdW5kYXJ5LmxlZnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAoKHRoaXMuY2xzRHJvcCkgKyBcIi1zdGFja1wiKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkF0KHRoaXMuJGVsLCB0aGlzLmJvdW5kYXJ5QWxpZ24gPyB0aGlzLmJvdW5kYXJ5IDogdGhpcy50b2dnbGUuJGVsLCB0aGlzLmJvdW5kYXJ5KTtcblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnJyk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIHJlZ2lzdGVyZWQ7XG5cbiAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50KCkge1xuXG4gICAgICAgIGlmIChyZWdpc3RlcmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZWdpc3RlcmVkID0gdHJ1ZTtcbiAgICAgICAgb24oZG9jdW1lbnQsICdjbGljaycsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSByZWYuZGVmYXVsdFByZXZlbnRlZDtcblxuICAgICAgICAgICAgdmFyIHByZXY7XG5cbiAgICAgICAgICAgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aGlsZSAoYWN0aXZlICYmIGFjdGl2ZSAhPT0gcHJldiAmJiAhd2l0aGluKHRhcmdldCwgYWN0aXZlLiRlbCkgJiYgIShhY3RpdmUudG9nZ2xlICYmIHdpdGhpbih0YXJnZXQsIGFjdGl2ZS50b2dnbGUuJGVsKSkpIHtcbiAgICAgICAgICAgICAgICBwcmV2ID0gYWN0aXZlO1xuICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIERyb3Bkb3duID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IERyb3BcblxuICAgIH07XG5cbiAgICB2YXIgRm9ybUN1c3RvbSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXJnczogJ3RhcmdldCcsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRhcmdldDogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldDogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsSW5wdXQsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCAmJiAodGFyZ2V0ID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuaW5wdXQucGFyZW50Tm9kZSA9PT0gJGVsXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuaW5wdXQubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgICAgICAgICAgICAgICAgIHx8IHF1ZXJ5KHRhcmdldCwgJGVsKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGlucHV0ID0gcmVmLmlucHV0O1xuXG4gICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG9wdGlvbjtcbiAgICAgICAgICAgIHZhciBwcm9wID0gaXNJbnB1dCh0YXJnZXQpID8gJ3ZhbHVlJyA6ICd0ZXh0Q29udGVudCc7XG4gICAgICAgICAgICB2YXIgcHJldiA9IHRhcmdldFtwcm9wXTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzWzBdXG4gICAgICAgICAgICAgICAgPyBpbnB1dC5maWxlc1swXS5uYW1lXG4gICAgICAgICAgICAgICAgOiBtYXRjaGVzKGlucHV0LCAnc2VsZWN0JykgJiYgKG9wdGlvbiA9ICQkKCdvcHRpb24nLCBpbnB1dCkuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuc2VsZWN0ZWQ7IH0pWzBdKVxuICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbi50ZXh0Q29udGVudFxuICAgICAgICAgICAgICAgICAgICA6IGlucHV0LnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAocHJldiAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnZm9jdXNpbiBmb2N1c291dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUnLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IHNlbElucHV0LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gcmVmLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT09IHRoaXMuaW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwidWstXCIgKyAoaW5jbHVkZXModHlwZSwgJ2ZvY3VzJykgPyAnZm9jdXMnIDogJ2hvdmVyJykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzKFsnZm9jdXNpbicsICdtb3VzZWVudGVyJ10sIHR5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2hhbmdlJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIC8vIERlcHJlY2F0ZWRcbiAgICB2YXIgR2lmID0ge1xuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhJCQxKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgaW52aWV3ID0gaXNJblZpZXcodGhpcy4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpbnZpZXcgfHwgZGF0YSQkMS5pc0luVmlldyA9PT0gaW52aWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkYXRhJCQxLmlzSW5WaWV3ID0gaW52aWV3O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsLnNyYyA9IHRoaXMuJGVsLnNyYztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIE1hcmdpbiA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbWFyZ2luOiBTdHJpbmcsXG4gICAgICAgICAgICBmaXJzdENvbHVtbjogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1hcmdpbjogJ3VrLW1hcmdpbi1zbWFsbC10b3AnLFxuICAgICAgICAgICAgZmlyc3RDb2x1bW46ICd1ay1maXJzdC1jb2x1bW4nXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKGRhdGEkJDEpIHtcblxuICAgICAgICAgICAgICAgIHZhciBpdGVtcyA9IHRoaXMuJGVsLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gW1tdXTtcblxuICAgICAgICAgICAgICAgIGlmICghaXRlbXMubGVuZ3RoIHx8ICFpc1Zpc2libGUodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxLnJvd3MgPSByb3dzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRhdGEkJDEucm93cyA9IGdldFJvd3MoaXRlbXMpO1xuICAgICAgICAgICAgICAgIGRhdGEkJDEuc3RhY2tzID0gIWRhdGEkJDEucm93cy5zb21lKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuIHJvdy5sZW5ndGggPiAxOyB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG5cblxuICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7IHJldHVybiByb3cuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEubWFyZ2luLCBpICE9PSAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuZmlyc3RDb2x1bW4sIGogPT09IDApO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFJvd3MoaXRlbXMpIHtcbiAgICAgICAgdmFyIHJvd3MgPSBbW11dO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgdmFyIGVsID0gaXRlbXNbaV07XG4gICAgICAgICAgICB2YXIgZGltID0gZ2V0T2Zmc2V0KGVsKTtcblxuICAgICAgICAgICAgaWYgKCFkaW0uaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGogPSByb3dzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcm93ID0gcm93c1tqXTtcblxuICAgICAgICAgICAgICAgIGlmICghcm93WzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGxlZnREaW0gPSBnZXRPZmZzZXQocm93WzBdKTtcblxuICAgICAgICAgICAgICAgIGlmIChkaW0udG9wID49IGxlZnREaW0uYm90dG9tIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICByb3dzLnB1c2goW2VsXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChkaW0uYm90dG9tID4gbGVmdERpbS50b3ApIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGltLmxlZnQgPCBsZWZ0RGltLmxlZnQgJiYgIWlzUnRsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3cudW5zaGlmdChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy51bnNoaWZ0KFtlbF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJvd3M7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRPZmZzZXQoZWxlbWVudCkge1xuXG4gICAgICAgIHZhciBvZmZzZXRUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgdmFyIG9mZnNldExlZnQgPSBlbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICAgIHZhciBvZmZzZXRIZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiBvZmZzZXRUb3AsXG4gICAgICAgICAgICBsZWZ0OiBvZmZzZXRMZWZ0LFxuICAgICAgICAgICAgaGVpZ2h0OiBvZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICBib3R0b206IG9mZnNldFRvcCArIG9mZnNldEhlaWdodFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBHcmlkID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IE1hcmdpbixcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgbmFtZTogJ2dyaWQnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtYXNvbnJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgcGFyYWxsYXg6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1hcmdpbjogJ3VrLWdyaWQtbWFyZ2luJyxcbiAgICAgICAgICAgIGNsc1N0YWNrOiAndWstZ3JpZC1zdGFjaycsXG4gICAgICAgICAgICBtYXNvbnJ5OiBmYWxzZSxcbiAgICAgICAgICAgIHBhcmFsbGF4OiAwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgcGFyYWxsYXg6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBwYXJhbGxheCA9IHJlZi5wYXJhbGxheDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhwYXJhbGxheCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5tYXNvbnJ5ICYmIGFkZENsYXNzKHRoaXMuJGVsLCAndWstZmxleC10b3AgdWstZmxleC13cmFwLXRvcCcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hc29ucnkgfHwgdGhpcy5wYXJhbGxheCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93cyA9IHJvd3MubWFwKGZ1bmN0aW9uIChlbGVtZW50cykgeyByZXR1cm4gc29ydEJ5KGVsZW1lbnRzLCAnb2Zmc2V0TGVmdCcpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cmFuc2xhdGVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hc29ucnkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZXMgPSByb3dzLnJlZHVjZShmdW5jdGlvbiAodHJhbnNsYXRlcywgcm93LCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVzW2ldID0gcm93Lm1hcChmdW5jdGlvbiAoXywgaikgeyByZXR1cm4gaSA9PT0gMCA/IDAgOiB0b0Zsb2F0KHRyYW5zbGF0ZXNbaSAtIDFdW2pdKSArIChoZWlnaHQkJDEgLSB0b0Zsb2F0KHJvd3NbaSAtIDFdW2pdICYmIHJvd3NbaSAtIDFdW2pdLm9mZnNldEhlaWdodCkpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSByb3cucmVkdWNlKGZ1bmN0aW9uIChoZWlnaHQkJDEsIGVsKSB7IHJldHVybiBNYXRoLm1heChoZWlnaHQkJDEsIGVsLm9mZnNldEhlaWdodCk7IH0sIDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZXM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxIZWlnaHQgPSBtYXhDb2x1bW5IZWlnaHQocm93cykgKyBnZXRNYXJnaW5Ub3AodGhpcy4kZWwsIHRoaXMubWFyZ2luKSAqIChyb3dzLmxlbmd0aCAtIDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Jvd3M6IHJvd3MsIHRyYW5zbGF0ZXM6IHRyYW5zbGF0ZXMsIGhlaWdodDogZWxIZWlnaHR9O1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YWNrcyA9IHJlZi5zdGFja3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzU3RhY2ssIHN0YWNrcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAncGFkZGluZ0JvdHRvbScsIHRoaXMucGFyYWxsYXggJiYgcm93cy5zb21lKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuIHJvdy5sZW5ndGggPiAxOyB9KSA/IHRoaXMucGFyYWxsYXggOiAnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0JCQxICYmIGNzcyh0aGlzLiRlbCwgJ21pbkhlaWdodCcsIGhlaWdodCQkMSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxlZDogdGhpcy5wYXJhbGxheCAmJiByb3dzLnNvbWUoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gcm93Lmxlbmd0aCA+IDE7IH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzY3JvbGxlZE92ZXIodGhpcy4kZWwsIGhlaWdodCQkMSA/IGhlaWdodCQkMSAtIGhlaWdodCh0aGlzLiRlbCkgOiAwKSAqIHRoaXMucGFyYWxsYXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbGVkID0gcmVmLnNjcm9sbGVkO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHJhbnNsYXRlcyA9IHJlZi50cmFuc2xhdGVzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbGVkID09PSBmYWxzZSAmJiAhdHJhbnNsYXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uIChyb3csIGkpIHsgcmV0dXJuIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaikgeyByZXR1cm4gY3NzKGVsLCAndHJhbnNmb3JtJywgIXNjcm9sbGVkICYmICF0cmFuc2xhdGVzID8gJycgOiAoXCJ0cmFuc2xhdGVZKFwiICsgKCh0cmFuc2xhdGVzICYmIC10cmFuc2xhdGVzW2ldW2pdKSArIChzY3JvbGxlZCA/IGogJSAyID8gc2Nyb2xsZWQgOiBzY3JvbGxlZCAvIDggOiAwKSkgKyBcInB4KVwiKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRNYXJnaW5Ub3Aocm9vdCwgY2xzKSB7XG5cbiAgICAgICAgdmFyIG5vZGVzID0gdG9Ob2Rlcyhyb290LmNoaWxkcmVuKTtcbiAgICAgICAgdmFyIHJlZiA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGhhc0NsYXNzKGVsLCBjbHMpOyB9KTtcbiAgICAgICAgdmFyIG5vZGUgPSByZWZbMF07XG5cbiAgICAgICAgcmV0dXJuIHRvRmxvYXQobm9kZVxuICAgICAgICAgICAgPyBjc3Mobm9kZSwgJ21hcmdpblRvcCcpXG4gICAgICAgICAgICA6IGNzcyhub2Rlc1swXSwgJ3BhZGRpbmdMZWZ0JykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1heENvbHVtbkhlaWdodChyb3dzKSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLCByb3dzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCByb3cpIHtcbiAgICAgICAgICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gc3VtW2ldID0gKHN1bVtpXSB8fCAwKSArIGVsLm9mZnNldEhlaWdodDsgfSk7XG4gICAgICAgICAgICByZXR1cm4gc3VtO1xuICAgICAgICB9LCBbXSkpO1xuICAgIH1cblxuICAgIHZhciBIZWlnaHRNYXRjaCA9IHtcblxuICAgICAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBTdHJpbmcsXG4gICAgICAgICAgICByb3c6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0YXJnZXQ6ICc+IConLFxuICAgICAgICAgICAgcm93OiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGFyZ2V0LCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy5lbGVtZW50cywge1xuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICcnXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByb3dzOiAhdGhpcy5yb3dcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW3RoaXMubWF0Y2godGhpcy5lbGVtZW50cyldXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGdldFJvd3ModGhpcy5lbGVtZW50cykubWFwKGZ1bmN0aW9uIChlbGVtZW50cykgeyByZXR1cm4gdGhpcyQxLm1hdGNoKGVsZW1lbnRzKTsgfSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG5cblxuICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHMgPSByZWYuZWxlbWVudHM7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNzcyhlbGVtZW50cywge1xuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IGhlaWdodCQkMSxcbiAgICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgbWF0Y2g6IGZ1bmN0aW9uKGVsZW1lbnRzKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodHMgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gMDtcblxuICAgICAgICAgICAgICAgIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heCA9IE1hdGgubWF4KG1heCwgaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodHMucHVzaChoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gaGVpZ2h0c1tpXSA8IG1heDsgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge2hlaWdodDogbWF4LCBlbGVtZW50czogZWxlbWVudHN9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIEhlaWdodFZpZXdwb3J0ID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBleHBhbmQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBvZmZzZXRUb3A6IEJvb2xlYW4sXG4gICAgICAgICAgICBvZmZzZXRCb3R0b206IEJvb2xlYW4sXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGV4cGFuZDogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXRUb3A6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0Qm90dG9tOiBmYWxzZSxcbiAgICAgICAgICAgIG1pbkhlaWdodDogMFxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdib3hTaXppbmcnLCAnYm9yZGVyLWJveCcpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHZpZXdwb3J0ID0gaGVpZ2h0KHdpbmRvdyk7XG4gICAgICAgICAgICAgICAgdmFyIG1pbkhlaWdodCwgb2Zmc2V0VG9wID0gMDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge2hlaWdodDogJycsIG1pbkhlaWdodDogJyd9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IHZpZXdwb3J0IC0gb2Zmc2V0SGVpZ2h0KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRpZmYgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQgPSBvZmZzZXRIZWlnaHQodGhpcy4kZWwpICsgZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcCA8IHZpZXdwb3J0IC8gMiAmJiB0aGlzLm9mZnNldFRvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IHRvcDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9mZnNldEJvdHRvbSA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3AgKz0gb2Zmc2V0SGVpZ2h0KHRoaXMuJGVsLm5leHRFbGVtZW50U2libGluZyk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc051bWVyaWModGhpcy5vZmZzZXRCb3R0b20pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSAodmlld3BvcnQgLyAxMDApICogdGhpcy5vZmZzZXRCb3R0b207XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9mZnNldEJvdHRvbSAmJiBlbmRzV2l0aCh0aGlzLm9mZnNldEJvdHRvbSwgJ3B4JykpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IHRvRmxvYXQodGhpcy5vZmZzZXRCb3R0b20pO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcodGhpcy5vZmZzZXRCb3R0b20pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSBvZmZzZXRIZWlnaHQocXVlcnkodGhpcy5vZmZzZXRCb3R0b20sIHRoaXMuJGVsKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIG1vYmlsZSBkZXZpY2VzIChpT1MgYW5kIEFuZHJvaWQpIHdpbmRvdy5pbm5lckhlaWdodCAhPT0gMTAwdmhcbiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0ID0gb2Zmc2V0VG9wID8gKFwiY2FsYygxMDB2aCAtIFwiICsgb2Zmc2V0VG9wICsgXCJweClcIikgOiAnMTAwdmgnO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFtaW5IZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge2hlaWdodDogJycsIG1pbkhlaWdodDogbWluSGVpZ2h0fSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSB0aGlzLiRlbC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluSGVpZ2h0ICYmIHRoaXMubWluSGVpZ2h0ID4gZWxIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnbWluSGVpZ2h0JywgdGhpcy5taW5IZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIElFIDExIGZpeCAobWluLWhlaWdodCBvbiBhIGZsZXggY29udGFpbmVyIHdvbid0IGFwcGx5IHRvIGl0cyBmbGV4IGl0ZW1zKVxuICAgICAgICAgICAgICAgIGlmICh2aWV3cG9ydCAtIG9mZnNldFRvcCA+PSBlbEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdoZWlnaHQnLCBtaW5IZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0SGVpZ2h0KGVsKSB7XG4gICAgICAgIHJldHVybiBlbCAmJiBlbC5vZmZzZXRIZWlnaHQgfHwgMDtcbiAgICB9XG5cbiAgICB2YXIgc3ZncyA9IHt9O1xuXG4gICAgdmFyIFNWRyA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgaWQ6IFN0cmluZyxcbiAgICAgICAgICAgIGljb246IFN0cmluZyxcbiAgICAgICAgICAgIHNyYzogU3RyaW5nLFxuICAgICAgICAgICAgc3R5bGU6IFN0cmluZyxcbiAgICAgICAgICAgIHdpZHRoOiBOdW1iZXIsXG4gICAgICAgICAgICBoZWlnaHQ6IE51bWJlcixcbiAgICAgICAgICAgIHJhdGlvOiBOdW1iZXIsXG4gICAgICAgICAgICAnY2xhc3MnOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICByYXRpbzogMSxcbiAgICAgICAgICAgIGlkOiBmYWxzZSxcbiAgICAgICAgICAgIGV4Y2x1ZGU6IFsncmF0aW8nLCAnc3JjJywgJ2ljb24nXSxcbiAgICAgICAgICAgICdjbGFzcyc6ICcnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIGFzc2lnbiQkMTtcblxuXG4gICAgICAgICAgICB0aGlzLmNsYXNzICs9ICcgdWstc3ZnJztcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmljb24gJiYgaW5jbHVkZXModGhpcy5zcmMsICcjJykpIHtcblxuICAgICAgICAgICAgICAgIHZhciBwYXJ0cyA9IHRoaXMuc3JjLnNwbGl0KCcjJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAoYXNzaWduJCQxID0gcGFydHMsIHRoaXMuc3JjID0gYXNzaWduJCQxWzBdLCB0aGlzLmljb24gPSBhc3NpZ24kJDFbMV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdmcgPSB0aGlzLmdldFN2ZygpLnRoZW4oZnVuY3Rpb24gKHN2Zykge1xuXG4gICAgICAgICAgICAgICAgdmFyIGVsO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHN2ZykpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmljb24gJiYgaW5jbHVkZXMoc3ZnLCAnPHN5bWJvbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdmcgPSBwYXJzZVN5bWJvbHMoc3ZnLCB0aGlzJDEuaWNvbikgfHwgc3ZnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZWwgPSAkKHN2Zy5zdWJzdHIoc3ZnLmluZGV4T2YoJzxzdmcnKSkpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwgPSBzdmcuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoJ1NWRyBub3QgZm91bmQuJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSBhdHRyKGVsLCAndmlld0JveCcpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRpbWVuc2lvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9ucyA9IGRpbWVuc2lvbnMuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLndpZHRoID0gdGhpcyQxLiRwcm9wcy53aWR0aCB8fCBkaW1lbnNpb25zWzJdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuaGVpZ2h0ID0gdGhpcyQxLiRwcm9wcy5oZWlnaHQgfHwgZGltZW5zaW9uc1szXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzJDEud2lkdGggKj0gdGhpcyQxLnJhdGlvO1xuICAgICAgICAgICAgICAgIHRoaXMkMS5oZWlnaHQgKj0gdGhpcyQxLnJhdGlvO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiB0aGlzJDEuJG9wdGlvbnMucHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMVtwcm9wXSAmJiAhaW5jbHVkZXModGhpcyQxLmV4Y2x1ZGUsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKGVsLCBwcm9wLCB0aGlzJDFbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQXR0cihlbCwgJ2lkJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS53aWR0aCAmJiAhdGhpcyQxLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyKGVsLCAnaGVpZ2h0Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5oZWlnaHQgJiYgIXRoaXMkMS53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyKGVsLCAnd2lkdGgnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcm9vdCA9IHRoaXMkMS4kZWw7XG4gICAgICAgICAgICAgICAgaWYgKGlzVm9pZEVsZW1lbnQocm9vdCkgfHwgcm9vdC50YWdOYW1lID09PSAnQ0FOVkFTJykge1xuXG4gICAgICAgICAgICAgICAgICAgIGF0dHIocm9vdCwge2hpZGRlbjogdHJ1ZSwgaWQ6IG51bGx9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHJvb3QubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCAmJiBlbC5pc0VxdWFsTm9kZShuZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwgPSBuZXh0O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIocm9vdCwgZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBsYXN0ID0gcm9vdC5sYXN0RWxlbWVudENoaWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdCAmJiBlbC5pc0VxdWFsTm9kZShsYXN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwgPSBsYXN0O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJvb3QsIGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcyQxLnN2Z0VsID0gZWw7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZWw7XG5cbiAgICAgICAgICAgIH0sIG5vb3ApO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmIChpc1ZvaWRFbGVtZW50KHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsIHtoaWRkZW46IG51bGwsIGlkOiB0aGlzLmlkIHx8IG51bGx9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc3ZnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdmcudGhlbihmdW5jdGlvbiAoc3ZnKSB7IHJldHVybiAoIXRoaXMkMS5fY29ubmVjdGVkIHx8IHN2ZyAhPT0gdGhpcyQxLnN2Z0VsKSAmJiByZW1vdmUoc3ZnKTsgfSwgbm9vcCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3ZnID0gdGhpcy5zdmdFbCA9IG51bGw7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGdldFN2ZzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3Znc1t0aGlzLnNyY10pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN2Z3NbdGhpcy5zcmNdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN2Z3NbdGhpcy5zcmNdID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgodGhpcyQxLnNyYywgJ2RhdGE6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMkMS5zcmMuc3BsaXQoJywnKVsxXSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhamF4KHRoaXMkMS5zcmMpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHhocikgeyByZXR1cm4gcmVzb2x2ZSh4aHIucmVzcG9uc2UpOyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlamVjdCgnU1ZHIG5vdCBmb3VuZC4nKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBzdmdzW3RoaXMuc3JjXTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgc3ltYm9sUmUgPSAvPHN5bWJvbCguKj9pZD0oWydcIl0pKC4qPylcXDJbXl0qPzxcXC8pc3ltYm9sPi9nO1xuICAgIHZhciBzeW1ib2xzID0ge307XG5cbiAgICBmdW5jdGlvbiBwYXJzZVN5bWJvbHMoc3ZnLCBpY29uKSB7XG5cbiAgICAgICAgaWYgKCFzeW1ib2xzW3N2Z10pIHtcblxuICAgICAgICAgICAgc3ltYm9sc1tzdmddID0ge307XG5cbiAgICAgICAgICAgIHZhciBtYXRjaDtcbiAgICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBzeW1ib2xSZS5leGVjKHN2ZykpKSB7XG4gICAgICAgICAgICAgICAgc3ltYm9sc1tzdmddW21hdGNoWzNdXSA9IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiXCIgKyAobWF0Y2hbMV0pICsgXCJzdmc+XCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN5bWJvbFJlLmxhc3RJbmRleCA9IDA7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzeW1ib2xzW3N2Z11baWNvbl07XG4gICAgfVxuXG4gICAgdmFyIGNsb3NlSWNvbiA9IFwiPHN2ZyB3aWR0aD1cXFwiMTRcXFwiIGhlaWdodD1cXFwiMTRcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiB4MT1cXFwiMVxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxM1xcXCIgeTI9XFxcIjEzXFxcIi8+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMVxcXCIgeDE9XFxcIjEzXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjFcXFwiIHkyPVxcXCIxM1xcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIGNsb3NlTGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNFxcXCIgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMTlcXFwiIHkyPVxcXCIxOVxcXCIvPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjRcXFwiIHgxPVxcXCIxOVxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxXFxcIiB5Mj1cXFwiMTlcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBtYXJrZXIgPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3QgeD1cXFwiOVxcXCIgeT1cXFwiNFxcXCIgd2lkdGg9XFxcIjFcXFwiIGhlaWdodD1cXFwiMTFcXFwiLz48cmVjdCB4PVxcXCI0XFxcIiB5PVxcXCI5XFxcIiB3aWR0aD1cXFwiMTFcXFwiIGhlaWdodD1cXFwiMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIG5hdmJhclRvZ2dsZUljb24gPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3QgeT1cXFwiOVxcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjJcXFwiLz48cmVjdCB5PVxcXCIzXFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMlxcXCIvPjxyZWN0IHk9XFxcIjE1XFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMlxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIG92ZXJsYXlJY29uID0gXCI8c3ZnIHdpZHRoPVxcXCI0MFxcXCIgaGVpZ2h0PVxcXCI0MFxcXCIgdmlld0JveD1cXFwiMCAwIDQwIDQwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxyZWN0IHg9XFxcIjE5XFxcIiB5PVxcXCIwXFxcIiB3aWR0aD1cXFwiMVxcXCIgaGVpZ2h0PVxcXCI0MFxcXCIvPjxyZWN0IHg9XFxcIjBcXFwiIHk9XFxcIjE5XFxcIiB3aWR0aD1cXFwiNDBcXFwiIGhlaWdodD1cXFwiMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHBhZ2luYXRpb25OZXh0ID0gXCI8c3ZnIHdpZHRoPVxcXCI3XFxcIiBoZWlnaHQ9XFxcIjEyXFxcIiB2aWV3Qm94PVxcXCIwIDAgNyAxMlxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMlxcXCIgcG9pbnRzPVxcXCIxIDEgNiA2IDEgMTFcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBwYWdpbmF0aW9uUHJldmlvdXMgPSBcIjxzdmcgd2lkdGg9XFxcIjdcXFwiIGhlaWdodD1cXFwiMTJcXFwiIHZpZXdCb3g9XFxcIjAgMCA3IDEyXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4yXFxcIiBwb2ludHM9XFxcIjYgMSAxIDYgNiAxMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNlYXJjaEljb24gPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBjeD1cXFwiOVxcXCIgY3k9XFxcIjlcXFwiIHI9XFxcIjdcXFwiLz48cGF0aCBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBkPVxcXCJNMTQsMTQgTDE4LDE4IEwxNCwxNCBaXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2VhcmNoTGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjQwXFxcIiBoZWlnaHQ9XFxcIjQwXFxcIiB2aWV3Qm94PVxcXCIwIDAgNDAgNDBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS44XFxcIiBjeD1cXFwiMTcuNVxcXCIgY3k9XFxcIjE3LjVcXFwiIHI9XFxcIjE2LjVcXFwiLz48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS44XFxcIiB4MT1cXFwiMzhcXFwiIHkxPVxcXCIzOVxcXCIgeDI9XFxcIjI5XFxcIiB5Mj1cXFwiMzBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzZWFyY2hOYXZiYXIgPSBcIjxzdmcgd2lkdGg9XFxcIjI0XFxcIiBoZWlnaHQ9XFxcIjI0XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBjeD1cXFwiMTAuNVxcXCIgY3k9XFxcIjEwLjVcXFwiIHI9XFxcIjkuNVxcXCIvPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjFcXFwiIHgxPVxcXCIyM1xcXCIgeTE9XFxcIjIzXFxcIiB4Mj1cXFwiMTdcXFwiIHkyPVxcXCIxN1xcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNsaWRlbmF2TmV4dCA9IFwiPHN2ZyB3aWR0aD1cXFwiMTRweFxcXCIgaGVpZ2h0PVxcXCIyNHB4XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMjRcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBvbHlsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjRcXFwiIHBvaW50cz1cXFwiMS4yMjUsMjMgMTIuNzc1LDEyIDEuMjI1LDEgXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2xpZGVuYXZOZXh0TGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjI1cHhcXFwiIGhlaWdodD1cXFwiNDBweFxcXCIgdmlld0JveD1cXFwiMCAwIDI1IDQwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIgcG9pbnRzPVxcXCI0LjAwMiwzOC41NDcgMjIuNTI3LDIwLjAyNCA0LDEuNSBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzbGlkZW5hdlByZXZpb3VzID0gXCI8c3ZnIHdpZHRoPVxcXCIxNHB4XFxcIiBoZWlnaHQ9XFxcIjI0cHhcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAyNFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNFxcXCIgcG9pbnRzPVxcXCIxMi43NzUsMSAxLjIyNSwxMiAxMi43NzUsMjMgXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2xpZGVuYXZQcmV2aW91c0xhcmdlID0gXCI8c3ZnIHdpZHRoPVxcXCIyNXB4XFxcIiBoZWlnaHQ9XFxcIjQwcHhcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNSA0MFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiIHBvaW50cz1cXFwiMjAuNTI3LDEuNSAyLDIwLjAyNCAyMC41MjUsMzguNTQ3IFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNwaW5uZXIgPSBcIjxzdmcgd2lkdGg9XFxcIjMwXFxcIiBoZWlnaHQ9XFxcIjMwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMzAgMzBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIGN4PVxcXCIxNVxcXCIgY3k9XFxcIjE1XFxcIiByPVxcXCIxNFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHRvdG9wID0gXCI8c3ZnIHdpZHRoPVxcXCIxOFxcXCIgaGVpZ2h0PVxcXCIxMFxcXCIgdmlld0JveD1cXFwiMCAwIDE4IDEwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4yXFxcIiBwb2ludHM9XFxcIjEgOSA5IDEgMTcgOSBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBwYXJzZWQgPSB7fTtcbiAgICB2YXIgaWNvbnMgPSB7XG4gICAgICAgIHNwaW5uZXI6IHNwaW5uZXIsXG4gICAgICAgIHRvdG9wOiB0b3RvcCxcbiAgICAgICAgbWFya2VyOiBtYXJrZXIsXG4gICAgICAgICdjbG9zZS1pY29uJzogY2xvc2VJY29uLFxuICAgICAgICAnY2xvc2UtbGFyZ2UnOiBjbG9zZUxhcmdlLFxuICAgICAgICAnbmF2YmFyLXRvZ2dsZS1pY29uJzogbmF2YmFyVG9nZ2xlSWNvbixcbiAgICAgICAgJ292ZXJsYXktaWNvbic6IG92ZXJsYXlJY29uLFxuICAgICAgICAncGFnaW5hdGlvbi1uZXh0JzogcGFnaW5hdGlvbk5leHQsXG4gICAgICAgICdwYWdpbmF0aW9uLXByZXZpb3VzJzogcGFnaW5hdGlvblByZXZpb3VzLFxuICAgICAgICAnc2VhcmNoLWljb24nOiBzZWFyY2hJY29uLFxuICAgICAgICAnc2VhcmNoLWxhcmdlJzogc2VhcmNoTGFyZ2UsXG4gICAgICAgICdzZWFyY2gtbmF2YmFyJzogc2VhcmNoTmF2YmFyLFxuICAgICAgICAnc2xpZGVuYXYtbmV4dCc6IHNsaWRlbmF2TmV4dCxcbiAgICAgICAgJ3NsaWRlbmF2LW5leHQtbGFyZ2UnOiBzbGlkZW5hdk5leHRMYXJnZSxcbiAgICAgICAgJ3NsaWRlbmF2LXByZXZpb3VzJzogc2xpZGVuYXZQcmV2aW91cyxcbiAgICAgICAgJ3NsaWRlbmF2LXByZXZpb3VzLWxhcmdlJzogc2xpZGVuYXZQcmV2aW91c0xhcmdlXG4gICAgfTtcblxuICAgIHZhciBJY29uID0ge1xuXG4gICAgICAgIGluc3RhbGw6IGluc3RhbGwsXG5cbiAgICAgICAgYXR0cnM6IFsnaWNvbicsICdyYXRpbyddLFxuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBTVkddLFxuXG4gICAgICAgIGFyZ3M6ICdpY29uJyxcblxuICAgICAgICBwcm9wczogWydpY29uJ10sXG5cbiAgICAgICAgZGF0YToge2V4Y2x1ZGU6IFsnaWQnLCAnc3R5bGUnLCAnY2xhc3MnLCAnc3JjJywgJ2ljb24nLCAncmF0aW8nXX0sXG5cbiAgICAgICAgaXNJY29uOiB0cnVlLFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWljb24nKTtcbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGdldFN2ZzogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgaWNvbiA9IGdldEljb24oYXBwbHlSdGwodGhpcy5pY29uKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoJ0ljb24gbm90IGZvdW5kLicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZShpY29uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIEljb25Db21wb25lbnQgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogSWNvbixcblxuICAgICAgICBkYXRhOiBmdW5jdGlvbiAodm0pIHsgcmV0dXJuICh7XG4gICAgICAgICAgICBpY29uOiBoeXBoZW5hdGUodm0uY29uc3RydWN0b3Iub3B0aW9ucy5uYW1lKVxuICAgICAgICB9KTsgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZW5hdiA9IHtcblxuICAgICAgICBleHRlbmRzOiBJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLXNsaWRlbmF2Jyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaWNvbjogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWNvbiA9IHJlZi5pY29uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NsYXNzKCRlbCwgJ3VrLXNsaWRlbmF2LWxhcmdlJylcbiAgICAgICAgICAgICAgICAgICAgPyAoaWNvbiArIFwiLWxhcmdlXCIpXG4gICAgICAgICAgICAgICAgICAgIDogaWNvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNlYXJjaCA9IHtcblxuICAgICAgICBleHRlbmRzOiBJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGljb246IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGljb24gPSByZWYuaWNvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBoYXNDbGFzcygkZWwsICd1ay1zZWFyY2gtaWNvbicpICYmIHBhcmVudHMoJGVsLCAnLnVrLXNlYXJjaC1sYXJnZScpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/ICdzZWFyY2gtbGFyZ2UnXG4gICAgICAgICAgICAgICAgICAgIDogcGFyZW50cygkZWwsICcudWstc2VhcmNoLW5hdmJhcicpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc2VhcmNoLW5hdmJhcidcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaWNvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIENsb3NlID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaWNvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcImNsb3NlLVwiICsgKGhhc0NsYXNzKHRoaXMuJGVsLCAndWstY2xvc2UtbGFyZ2UnKSA/ICdsYXJnZScgOiAnaWNvbicpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNwaW5uZXIgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogSWNvbkNvbXBvbmVudCxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIHRoaXMuc3ZnLnRoZW4oZnVuY3Rpb24gKHN2ZykgeyByZXR1cm4gdGhpcyQxLnJhdGlvICE9PSAxICYmIGNzcygkKCdjaXJjbGUnLCBzdmcpLCAnc3Ryb2tlV2lkdGgnLCAxIC8gdGhpcyQxLnJhdGlvKTsgfSwgbm9vcCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsKFVJa2l0KSB7XG4gICAgICAgIFVJa2l0Lmljb24uYWRkID0gZnVuY3Rpb24gKG5hbWUsIHN2Zykge1xuICAgICAgICAgICAgdmFyIG9iajtcblxuXG4gICAgICAgICAgICB2YXIgYWRkZWQgPSBpc1N0cmluZyhuYW1lKSA/ICgoIG9iaiA9IHt9LCBvYmpbbmFtZV0gPSBzdmcsIG9iaiApKSA6IG5hbWU7XG4gICAgICAgICAgICBlYWNoKGFkZGVkLCBmdW5jdGlvbiAoc3ZnLCBuYW1lKSB7XG4gICAgICAgICAgICAgICAgaWNvbnNbbmFtZV0gPSBzdmc7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZFtuYW1lXTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoVUlraXQuX2luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkoZG9jdW1lbnQuYm9keSwgZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlYWNoKFVJa2l0LmdldENvbXBvbmVudHMoZWwpLCBmdW5jdGlvbiAoY21wKSB7IHJldHVybiBjbXAuJG9wdGlvbnMuaXNJY29uICYmIGNtcC5pY29uIGluIGFkZGVkICYmIGNtcC4kcmVzZXQoKTsgfVxuICAgICAgICAgICAgICAgICAgICApOyB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRJY29uKGljb24pIHtcblxuICAgICAgICBpZiAoIWljb25zW2ljb25dKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcGFyc2VkW2ljb25dKSB7XG4gICAgICAgICAgICBwYXJzZWRbaWNvbl0gPSAkKGljb25zW2ljb25dLnRyaW0oKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyc2VkW2ljb25dO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFwcGx5UnRsKGljb24pIHtcbiAgICAgICAgcmV0dXJuIGlzUnRsID8gc3dhcChzd2FwKGljb24sICdsZWZ0JywgJ3JpZ2h0JyksICdwcmV2aW91cycsICduZXh0JykgOiBpY29uO1xuICAgIH1cblxuICAgIHZhciBJbWcgPSB7XG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRhdGFTcmM6IFN0cmluZyxcbiAgICAgICAgICAgIGRhdGFTcmNzZXQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBkYXRhU2l6ZXM6IEJvb2xlYW4sXG4gICAgICAgICAgICBzaXplczogU3RyaW5nLFxuICAgICAgICAgICAgd2lkdGg6IE51bWJlcixcbiAgICAgICAgICAgIGhlaWdodDogTnVtYmVyLFxuICAgICAgICAgICAgZGF0YVdpZHRoOiBOdW1iZXIsXG4gICAgICAgICAgICBkYXRhSGVpZ2h0OiBOdW1iZXIsXG4gICAgICAgICAgICBvZmZzZXRUb3A6IFN0cmluZyxcbiAgICAgICAgICAgIG9mZnNldExlZnQ6IFN0cmluZyxcbiAgICAgICAgICAgIHRhcmdldDogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZGF0YVNyYzogJycsXG4gICAgICAgICAgICBkYXRhU3Jjc2V0OiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGFTaXplczogZmFsc2UsXG4gICAgICAgICAgICBzaXplczogZmFsc2UsXG4gICAgICAgICAgICB3aWR0aDogZmFsc2UsXG4gICAgICAgICAgICBoZWlnaHQ6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiAnNTB2aCcsXG4gICAgICAgICAgICBvZmZzZXRMZWZ0OiAwLFxuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGNhY2hlS2V5OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YVNyYyA9IHJlZi5kYXRhU3JjO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy4kbmFtZSkgKyBcIi5cIiArIGRhdGFTcmMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd2lkdGg6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZi53aWR0aDtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YVdpZHRoID0gcmVmLmRhdGFXaWR0aDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB3aWR0aCQkMSB8fCBkYXRhV2lkdGg7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoZWlnaHQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciBkYXRhSGVpZ2h0ID0gcmVmLmRhdGFIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0JCQxIHx8IGRhdGFIZWlnaHQ7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaXplczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNpemVzID0gcmVmLnNpemVzO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhU2l6ZXMgPSByZWYuZGF0YVNpemVzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemVzIHx8IGRhdGFTaXplcztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzSW1nOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNJbWcoJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMuJGVsXS5jb25jYXQocXVlcnlBbGwodGFyZ2V0LCB0aGlzLiRlbCkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0VG9wID0gcmVmLm9mZnNldFRvcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0b1B4KG9mZnNldFRvcCwgJ2hlaWdodCcpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgb2Zmc2V0TGVmdDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG9mZnNldExlZnQgPSByZWYub2Zmc2V0TGVmdDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0b1B4KG9mZnNldExlZnQsICd3aWR0aCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgaWYgKHN0b3JhZ2VbdGhpcy5jYWNoZUtleV0pIHtcbiAgICAgICAgICAgICAgICBzZXRTcmNBdHRycyh0aGlzLiRlbCwgc3RvcmFnZVt0aGlzLmNhY2hlS2V5XSB8fCB0aGlzLmRhdGFTcmMsIHRoaXMuZGF0YVNyY3NldCwgdGhpcy5zaXplcyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNJbWcgJiYgdGhpcy53aWR0aCAmJiB0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHNldFNyY0F0dHJzKHRoaXMuJGVsLCBnZXRQbGFjZWhvbGRlckltYWdlKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LCB0aGlzLnNpemVzKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGVsYXkgPSByZWYuZGVsYXk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9IHJlZi5pbWFnZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZSB8fCAhdGhpcy50YXJnZXQuc29tZShmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGlzSW5WaWV3KGVsLCB0aGlzJDEub2Zmc2V0VG9wLCB0aGlzJDEub2Zmc2V0TGVmdCwgdHJ1ZSk7IH0pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0ltZyAmJiBpbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLnRoZW4oZnVuY3Rpb24gKGltZykgeyByZXR1cm4gaW1nICYmIHNldFNyY0F0dHJzKHRoaXMkMS4kZWwsIGN1cnJlbnRTcmMoaW1nKSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGdldEltYWdlKHRoaXMuZGF0YVNyYywgdGhpcy5kYXRhU3Jjc2V0LCB0aGlzLnNpemVzKS50aGVuKGZ1bmN0aW9uIChpbWcpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNyY0F0dHJzKHRoaXMkMS4kZWwsIGN1cnJlbnRTcmMoaW1nKSwgaW1nLnNyY3NldCwgaW1nLnNpemVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlW3RoaXMkMS5jYWNoZUtleV0gPSBjdXJyZW50U3JjKGltZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgbm9vcClcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEdpdmUgcGxhY2Vob2xkZXIgaW1hZ2VzIHRpbWUgdG8gYXBwbHkgdGhlaXIgZGltZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEkJDEuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxLmRlbGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHNldFNyY0F0dHJzKGVsLCBzcmMsIHNyY3NldCwgc2l6ZXMpIHtcblxuICAgICAgICBpZiAoaXNJbWcoZWwpKSB7XG4gICAgICAgICAgICBzcmMgJiYgKGVsLnNyYyA9IHNyYyk7XG4gICAgICAgICAgICBzcmNzZXQgJiYgKGVsLnNyY3NldCA9IHNyY3NldCk7XG4gICAgICAgICAgICBzaXplcyAmJiAoZWwuc2l6ZXMgPSBzaXplcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzcmMgJiYgY3NzKGVsLCAnYmFja2dyb3VuZEltYWdlJywgKFwidXJsKFwiICsgc3JjICsgXCIpXCIpKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgdmFyIHVybENhY2hlID0ge307XG4gICAgdmFyIHNpemVzUmUgPSAvXFxzKiguKj8pXFxzKihcXHcrfGNhbGNcXCguKj9cXCkpXFxzKig/Oix8JCkvZztcbiAgICBmdW5jdGlvbiBnZXRQbGFjZWhvbGRlckltYWdlKHdpZHRoJCQxLCBoZWlnaHQkJDEsIHNpemVzLCBjb2xvcikge1xuICAgICAgICB2YXIgYXNzaWduJCQxO1xuXG4gICAgICAgIGlmICggY29sb3IgPT09IHZvaWQgMCApIGNvbG9yID0gJ3RyYW5zcGFyZW50JztcblxuICAgICAgICBpZiAoc2l6ZXMpIHtcbiAgICAgICAgICAgIHZhciBtYXRjaGVzJCQxO1xuXG4gICAgICAgICAgICB3aGlsZSAoKG1hdGNoZXMkJDEgPSBzaXplc1JlLmV4ZWMoc2l6ZXMpKSkge1xuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcyQkMVsxXSB8fCB3aW5kb3cubWF0Y2hNZWRpYShtYXRjaGVzJCQxWzFdKS5tYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMkJDEgPSBldmFsdWF0ZVNpemUobWF0Y2hlcyQkMVsyXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2l6ZXNSZS5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgICAgICAoKGFzc2lnbiQkMSA9IERpbWVuc2lvbnMucmF0aW8oe3dpZHRoOiB3aWR0aCQkMSwgaGVpZ2h0OiBoZWlnaHQkJDF9LCAnd2lkdGgnLCB0b1B4KG1hdGNoZXMkJDEgfHwgJzEwMHZ3JykpLCB3aWR0aCQkMSA9IGFzc2lnbiQkMS53aWR0aCwgaGVpZ2h0JCQxID0gYXNzaWduJCQxLmhlaWdodCkpO1xuXG4gICAgICAgIH1cblxuICAgICAgICB2YXIga2V5ID0gd2lkdGgkJDEgKyBcIi5cIiArIGhlaWdodCQkMSArIFwiLlwiICsgY29sb3I7XG4gICAgICAgIGlmICh1cmxDYWNoZVtrZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gdXJsQ2FjaGVba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjYW52YXMgPSBmcmFnbWVudCgnPGNhbnZhcz4nKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGgkJDE7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQkJDE7XG5cbiAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBjb2xvcjtcbiAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCB3aWR0aCQkMSwgaGVpZ2h0JCQxKTtcblxuICAgICAgICByZXR1cm4gdXJsQ2FjaGVba2V5XSA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgIH1cblxuICAgIHZhciBzaXplUmUgPSAvXFxkKyg/Olxcdyt8JSkvZztcbiAgICB2YXIgYWRkaXRpb25SZSA9IC9bKy1dPyhcXGQrKS9nO1xuICAgIGZ1bmN0aW9uIGV2YWx1YXRlU2l6ZShzaXplKSB7XG4gICAgICAgIHJldHVybiBzdGFydHNXaXRoKHNpemUsICdjYWxjJylcbiAgICAgICAgICAgID8gc2l6ZVxuICAgICAgICAgICAgICAgIC5zdWJzdHJpbmcoNSwgc2l6ZS5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKHNpemVSZSwgZnVuY3Rpb24gKHNpemUpIHsgcmV0dXJuIHRvUHgoc2l6ZSk7IH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLyAvZywgJycpXG4gICAgICAgICAgICAgICAgLm1hdGNoKGFkZGl0aW9uUmUpXG4gICAgICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArICtiOyB9LCAwKVxuICAgICAgICAgICAgOiBzaXplO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvUHgodmFsdWUsIHByb3BlcnR5LCBlbGVtZW50KSB7XG4gICAgICAgIGlmICggcHJvcGVydHkgPT09IHZvaWQgMCApIHByb3BlcnR5ID0gJ3dpZHRoJztcbiAgICAgICAgaWYgKCBlbGVtZW50ID09PSB2b2lkIDAgKSBlbGVtZW50ID0gd2luZG93O1xuXG4gICAgICAgIHJldHVybiBpc051bWVyaWModmFsdWUpXG4gICAgICAgICAgICA/ICt2YWx1ZVxuICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJ3Z3JylcbiAgICAgICAgICAgICAgICA/IHBlcmNlbnQoZWxlbWVudCwgJ3dpZHRoJywgdmFsdWUpXG4gICAgICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJ3ZoJylcbiAgICAgICAgICAgICAgICAgICAgPyBwZXJjZW50KGVsZW1lbnQsICdoZWlnaHQnLCB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJyUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwZXJjZW50KGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdG9GbG9hdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdmFyIGRpbWVuc2lvbnMgPSB7aGVpZ2h0OiBoZWlnaHQsIHdpZHRoOiB3aWR0aH07XG4gICAgZnVuY3Rpb24gcGVyY2VudChlbGVtZW50LCBwcm9wZXJ0eSwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGRpbWVuc2lvbnNbcHJvcGVydHldKGVsZW1lbnQpICogdG9GbG9hdCh2YWx1ZSkgLyAxMDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJbWcoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsLnRhZ05hbWUgPT09ICdJTUcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGN1cnJlbnRTcmMoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsLmN1cnJlbnRTcmMgfHwgZWwuc3JjO1xuICAgIH1cblxuICAgIHZhciBrZXkgPSAnX190ZXN0X18nO1xuICAgIHZhciBzdG9yYWdlO1xuXG4gICAgLy8gd29ya2Fyb3VuZCBmb3IgU2FmYXJpJ3MgcHJpdmF0ZSBicm93c2luZyBtb2RlIGFuZCBhY2Nlc3Npbmcgc2Vzc2lvblN0b3JhZ2UgaW4gQmxpbmtcbiAgICB0cnkge1xuICAgICAgICBzdG9yYWdlID0gd2luZG93LnNlc3Npb25TdG9yYWdlIHx8IHt9O1xuICAgICAgICBzdG9yYWdlW2tleV0gPSAxO1xuICAgICAgICBkZWxldGUgc3RvcmFnZVtrZXldO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc3RvcmFnZSA9IHt9O1xuICAgIH1cblxuICAgIHZhciBMZWFkZXIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBmaWxsOiBTdHJpbmcsXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGZpbGw6ICcnLFxuICAgICAgICAgICAgbWVkaWE6IGZhbHNlLFxuICAgICAgICAgICAgY2xzV3JhcHBlcjogJ3VrLWxlYWRlci1maWxsJyxcbiAgICAgICAgICAgIGNsc0hpZGU6ICd1ay1sZWFkZXItaGlkZScsXG4gICAgICAgICAgICBhdHRyRmlsbDogJ2RhdGEtZmlsbCdcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBmaWxsOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmlsbCA9IHJlZi5maWxsO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGwgfHwgZ2V0Q3NzVmFyKCdsZWFkZXItZmlsbCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBhc3NpZ24kJDE7XG5cbiAgICAgICAgICAgIChhc3NpZ24kJDEgPSB3cmFwSW5uZXIodGhpcy4kZWwsIChcIjxzcGFuIGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc1dyYXBwZXIpICsgXCJcXFwiPlwiKSksIHRoaXMud3JhcHBlciA9IGFzc2lnbiQkMVswXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHVud3JhcCh0aGlzLndyYXBwZXIuY2hpbGROb2Rlcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2hhbmdlZCA9IHJlZi5jaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSByZWYud2lkdGg7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHdpZHRoJCQxO1xuXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoJCQxID0gTWF0aC5mbG9vcih0aGlzLiRlbC5vZmZzZXRXaWR0aCAvIDIpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgkJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkOiBjaGFuZ2VkIHx8IHByZXYgIT09IHdpZHRoJCQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZTogdGhpcy5tZWRpYSAmJiAhd2luZG93Lm1hdGNoTWVkaWEodGhpcy5tZWRpYSkubWF0Y2hlc1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMud3JhcHBlciwgdGhpcy5jbHNIaWRlLCBkYXRhJCQxLmhpZGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhJCQxLmNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLndyYXBwZXIsIHRoaXMuYXR0ckZpbGwsIG5ldyBBcnJheShkYXRhJCQxLndpZHRoKS5qb2luKHRoaXMuZmlsbCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIENvbnRhaW5lciA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY29udGFpbmVyOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgY29udGFpbmVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gcmVmLmNvbnRhaW5lcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIgPT09IHRydWUgJiYgdGhpcy4kY29udGFpbmVyIHx8IGNvbnRhaW5lciAmJiAkKGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBhY3RpdmUkMTtcblxuICAgIHZhciBNb2RhbCA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgQ29udGFpbmVyLCBUb2dnbGFibGVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBzZWxQYW5lbDogU3RyaW5nLFxuICAgICAgICAgICAgc2VsQ2xvc2U6IFN0cmluZyxcbiAgICAgICAgICAgIGVzY0Nsb3NlOiBCb29sZWFuLFxuICAgICAgICAgICAgYmdDbG9zZTogQm9vbGVhbixcbiAgICAgICAgICAgIHN0YWNrOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2xzOiAndWstb3BlbicsXG4gICAgICAgICAgICBlc2NDbG9zZTogdHJ1ZSxcbiAgICAgICAgICAgIGJnQ2xvc2U6IHRydWUsXG4gICAgICAgICAgICBvdmVybGF5OiB0cnVlLFxuICAgICAgICAgICAgc3RhY2s6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgcGFuZWw6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbFBhbmVsID0gcmVmLnNlbFBhbmVsO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsUGFuZWwsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRWxlbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b01zKGNzcyh0aGlzLnRyYW5zaXRpb25FbGVtZW50LCAndHJhbnNpdGlvbkR1cmF0aW9uJykpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYmdDbG9zZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJnQ2xvc2UgPSByZWYuYmdDbG9zZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBiZ0Nsb3NlICYmIHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsQ2xvc2U7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICd0b2dnbGUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZXNob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IGFjdGl2ZSQxICYmIGFjdGl2ZSQxICE9PSB0aGlzICYmIGFjdGl2ZSQxO1xuXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LmhpZGUoKS50aGVuKHRoaXMuc2hvdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRXZlbnRzKCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3JlaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlJDEgPSBhY3RpdmUkMSAmJiBhY3RpdmUkMSAhPT0gdGhpcyAmJiBhY3RpdmUkMSB8fCB0aGlzLnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUkMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVyZWdpc3RlckV2ZW50cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNQYWdlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxiYXJXaWR0aCA9IHdpZHRoKHdpbmRvdykgLSB3aWR0aChkb2N1bWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93WScsIHRoaXMuc2Nyb2xsYmFyV2lkdGggJiYgdGhpcy5vdmVybGF5ID8gJ3Njcm9sbCcgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHRoaXMuY2xzUGFnZSk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBmb3VuZDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gcmVmLnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHByZXYpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYuY2xzUGFnZSA9PT0gdGhpcyQxLmNsc1BhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXYgPSBwcmV2LnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNQYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgIXRoaXMucHJldiAmJiBjc3MoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93WScsICcnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZWQoKSA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLiRlbC5wYXJlbnROb2RlICE9PSB0aGlzLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBhcHBlbmQodGhpcy5jb250YWluZXIsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZU5vdyh0aGlzLiRlbCwgdHJ1ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZWQoKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMudG9nZ2xlTm93KHRoaXMuJGVsLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgOiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0QWN0aXZlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWN0aXZlJDE7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlSW1tZWRpYXRlOiBmdW5jdGlvbihlbCwgc2hvdykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RvZ2dsZShlbCwgc2hvdyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEudHJhbnNpdGlvbkR1cmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZSh0aGlzJDEudHJhbnNpdGlvbkVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgcmVzb2x2ZSwgZmFsc2UsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnRhcmdldCA9PT0gdGhpcyQxLnRyYW5zaXRpb25FbGVtZW50OyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTsgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBldmVudHM7XG5cbiAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50cygpIHtcblxuICAgICAgICBpZiAoZXZlbnRzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudHMgPSBbXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0UHJldmVudGVkID0gcmVmLmRlZmF1bHRQcmV2ZW50ZWQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlJDEgJiYgYWN0aXZlJDEuYmdDbG9zZSAmJiAhZGVmYXVsdFByZXZlbnRlZCAmJiAoIWFjdGl2ZSQxLm92ZXJsYXkgfHwgd2l0aGluKHRhcmdldCwgYWN0aXZlJDEuJGVsKSkgJiYgIXdpdGhpbih0YXJnZXQsIGFjdGl2ZSQxLnBhbmVsKSkge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmUkMS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChlLmtleUNvZGUgPT09IDI3ICYmIGFjdGl2ZSQxICYmIGFjdGl2ZSQxLmVzY0Nsb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlJDEuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVyZWdpc3RlckV2ZW50cygpIHtcbiAgICAgICAgZXZlbnRzICYmIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uICh1bmJpbmQpIHsgcmV0dXJuIHVuYmluZCgpOyB9KTtcbiAgICAgICAgZXZlbnRzID0gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgTW9kYWwkMSA9IHtcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDEsXG5cbiAgICAgICAgbWl4aW5zOiBbTW9kYWxdLFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNsc1BhZ2U6ICd1ay1tb2RhbC1wYWdlJyxcbiAgICAgICAgICAgIHNlbFBhbmVsOiAnLnVrLW1vZGFsLWRpYWxvZycsXG4gICAgICAgICAgICBzZWxDbG9zZTogJy51ay1tb2RhbC1jbG9zZSwgLnVrLW1vZGFsLWNsb3NlLWRlZmF1bHQsIC51ay1tb2RhbC1jbG9zZS1vdXRzaWRlLCAudWstbW9kYWwtY2xvc2UtZnVsbCdcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2xhc3ModGhpcy5wYW5lbCwgJ3VrLW1hcmdpbi1hdXRvLXZlcnRpY2FsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstZmxleCcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICdibG9jaycpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuJGVsKTsgLy8gZm9yY2UgcmVmbG93XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCAndWstZmxleCcpO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsJDEgKFVJa2l0KSB7XG5cbiAgICAgICAgVUlraXQubW9kYWwuZGlhbG9nID0gZnVuY3Rpb24gKGNvbnRlbnQsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgdmFyIGRpYWxvZyA9IFVJa2l0Lm1vZGFsKChcIiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbFxcXCI+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWRpYWxvZ1xcXCI+XCIgKyBjb250ZW50ICsgXCI8L2Rpdj4gPC9kaXY+IFwiKSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGRpYWxvZy5zaG93KCk7XG5cbiAgICAgICAgICAgIG9uKGRpYWxvZy4kZWwsICdoaWRkZW4nLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSByZWYuY3VycmVudFRhcmdldDtcblxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nLiRkZXN0cm95KHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZGlhbG9nO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLmFsZXJ0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IGFzc2lnbih7YmdDbG9zZTogZmFsc2UsIGVzY0Nsb3NlOiBmYWxzZSwgbGFiZWxzOiBVSWtpdC5tb2RhbC5sYWJlbHN9LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIG9uKFVJa2l0Lm1vZGFsLmRpYWxvZygoXCIgPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtYm9keVxcXCI+XCIgKyAoaXNTdHJpbmcobWVzc2FnZSkgPyBtZXNzYWdlIDogaHRtbChtZXNzYWdlKSkgKyBcIjwvZGl2PiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbC1mb290ZXIgdWstdGV4dC1yaWdodFxcXCI+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSB1ay1tb2RhbC1jbG9zZVxcXCIgYXV0b2ZvY3VzPlwiICsgKG9wdGlvbnMubGFiZWxzLm9rKSArIFwiPC9idXR0b24+IDwvZGl2PiBcIiksIG9wdGlvbnMpLiRlbCwgJ2hpZGUnLCByZXNvbHZlKTsgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5tb2RhbC5jb25maXJtID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IGFzc2lnbih7YmdDbG9zZTogZmFsc2UsIGVzY0Nsb3NlOiB0cnVlLCBsYWJlbHM6IFVJa2l0Lm1vZGFsLmxhYmVsc30sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgY29uZmlybSA9IFVJa2l0Lm1vZGFsLmRpYWxvZygoXCIgPGZvcm0+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWJvZHlcXFwiPlwiICsgKGlzU3RyaW5nKG1lc3NhZ2UpID8gbWVzc2FnZSA6IGh0bWwobWVzc2FnZSkpICsgXCI8L2Rpdj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHRcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstbW9kYWwtY2xvc2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMuY2FuY2VsKSArIFwiPC9idXR0b24+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeVxcXCIgYXV0b2ZvY3VzPlwiICsgKG9wdGlvbnMubGFiZWxzLm9rKSArIFwiPC9idXR0b24+IDwvZGl2PiA8L2Zvcm0+IFwiKSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIG9uKGNvbmZpcm0uJGVsLCAnc3VibWl0JywgJ2Zvcm0nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25maXJtLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBvbihjb25maXJtLiRlbCwgJ2hpZGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLnByb21wdCA9IGZ1bmN0aW9uIChtZXNzYWdlLCB2YWx1ZSwgb3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gYXNzaWduKHtiZ0Nsb3NlOiBmYWxzZSwgZXNjQ2xvc2U6IHRydWUsIGxhYmVsczogVUlraXQubW9kYWwubGFiZWxzfSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcHJvbXB0ID0gVUlraXQubW9kYWwuZGlhbG9nKChcIiA8Zm9ybSBjbGFzcz1cXFwidWstZm9ybS1zdGFja2VkXFxcIj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtYm9keVxcXCI+IDxsYWJlbD5cIiArIChpc1N0cmluZyhtZXNzYWdlKSA/IG1lc3NhZ2UgOiBodG1sKG1lc3NhZ2UpKSArIFwiPC9sYWJlbD4gPGlucHV0IGNsYXNzPVxcXCJ1ay1pbnB1dFxcXCIgYXV0b2ZvY3VzPiA8L2Rpdj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHRcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstbW9kYWwtY2xvc2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMuY2FuY2VsKSArIFwiPC9idXR0b24+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeVxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMub2spICsgXCI8L2J1dHRvbj4gPC9kaXY+IDwvZm9ybT4gXCIpLCBvcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSAkKCdpbnB1dCcsIHByb21wdC4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgb24ocHJvbXB0LiRlbCwgJ3N1Ym1pdCcsICdmb3JtJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGlucHV0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwcm9tcHQuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9uKHByb21wdC4kZWwsICdoaWRlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLmxhYmVscyA9IHtcbiAgICAgICAgICAgIG9rOiAnT2snLFxuICAgICAgICAgICAgY2FuY2VsOiAnQ2FuY2VsJ1xuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgdmFyIE5hdiA9IHtcblxuICAgICAgICBleHRlbmRzOiBBY2NvcmRpb24sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0czogJz4gLnVrLXBhcmVudCcsXG4gICAgICAgICAgICB0b2dnbGU6ICc+IGEnLFxuICAgICAgICAgICAgY29udGVudDogJz4gdWwnXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgTmF2YmFyID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZHJvcGRvd246IFN0cmluZyxcbiAgICAgICAgICAgIG1vZGU6ICdsaXN0JyxcbiAgICAgICAgICAgIGFsaWduOiBTdHJpbmcsXG4gICAgICAgICAgICBvZmZzZXQ6IE51bWJlcixcbiAgICAgICAgICAgIGJvdW5kYXJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgYm91bmRhcnlBbGlnbjogQm9vbGVhbixcbiAgICAgICAgICAgIGNsc0Ryb3A6IFN0cmluZyxcbiAgICAgICAgICAgIGRlbGF5U2hvdzogTnVtYmVyLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiBOdW1iZXIsXG4gICAgICAgICAgICBkcm9wYmFyOiBCb29sZWFuLFxuICAgICAgICAgICAgZHJvcGJhck1vZGU6IFN0cmluZyxcbiAgICAgICAgICAgIGRyb3BiYXJBbmNob3I6IEJvb2xlYW4sXG4gICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZHJvcGRvd246ICcudWstbmF2YmFyLW5hdiA+IGxpJyxcbiAgICAgICAgICAgIGFsaWduOiAhaXNSdGwgPyAnbGVmdCcgOiAncmlnaHQnLFxuICAgICAgICAgICAgY2xzRHJvcDogJ3VrLW5hdmJhci1kcm9wZG93bicsXG4gICAgICAgICAgICBtb2RlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBvZmZzZXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlbGF5U2hvdzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBib3VuZGFyeUFsaWduOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBmbGlwOiAneCcsXG4gICAgICAgICAgICBib3VuZGFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGRyb3BiYXI6IGZhbHNlLFxuICAgICAgICAgICAgZHJvcGJhck1vZGU6ICdzbGlkZScsXG4gICAgICAgICAgICBkcm9wYmFyQW5jaG9yOiBmYWxzZSxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAsXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgYm91bmRhcnk6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gcmVmLmJvdW5kYXJ5O1xuICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeUFsaWduID0gcmVmLmJvdW5kYXJ5QWxpZ247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGJvdW5kYXJ5ID09PSB0cnVlIHx8IGJvdW5kYXJ5QWxpZ24pID8gJGVsIDogYm91bmRhcnk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcm9wYmFyQW5jaG9yOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBkcm9wYmFyQW5jaG9yID0gcmVmLmRyb3BiYXJBbmNob3I7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkoZHJvcGJhckFuY2hvciwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBvczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFsaWduID0gcmVmLmFsaWduO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcImJvdHRvbS1cIiArIGFsaWduKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyb3Bkb3duczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgZHJvcGRvd24gPSByZWYuZHJvcGRvd247XG4gICAgICAgICAgICAgICAgdmFyIGNsc0Ryb3AgPSByZWYuY2xzRHJvcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkJCgoZHJvcGRvd24gKyBcIiAuXCIgKyBjbHNEcm9wKSwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGJlZm9yZUNvbm5lY3Q6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kcHJvcHM7XG4gICAgICAgICAgICB2YXIgZHJvcGJhciA9IHJlZi5kcm9wYmFyO1xuXG4gICAgICAgICAgICB0aGlzLmRyb3BiYXIgPSBkcm9wYmFyICYmIChxdWVyeShkcm9wYmFyLCB0aGlzLiRlbCkgfHwgJCgnKyAudWstbmF2YmFyLWRyb3BiYXInLCB0aGlzLiRlbCkgfHwgJCgnPGRpdj48L2Rpdj4nKSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyb3BiYXIpIHtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZHJvcGJhciwgJ3VrLW5hdmJhci1kcm9wYmFyJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcm9wYmFyTW9kZSA9PT0gJ3NsaWRlJykge1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLmRyb3BiYXIsICd1ay1uYXZiYXItZHJvcGJhci1zbGlkZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3BiYXIgJiYgcmVtb3ZlKHRoaXMuZHJvcGJhcik7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMuJGNyZWF0ZShcbiAgICAgICAgICAgICAgICAnZHJvcCcsXG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bnMuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIXRoaXMkMS5nZXREcm9wZG93bihlbCk7IH0pLFxuICAgICAgICAgICAgICAgIGFzc2lnbih7fSwgdGhpcy4kcHJvcHMsIHtib3VuZGFyeTogdGhpcy5ib3VuZGFyeSwgcG9zOiB0aGlzLnBvcywgb2Zmc2V0OiB0aGlzLmRyb3BiYXIgfHwgdGhpcy5vZmZzZXR9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlb3ZlcicsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiBhY3RpdmUudG9nZ2xlICYmICF3aXRoaW4oYWN0aXZlLnRvZ2dsZS4kZWwsIGN1cnJlbnQpICYmICFhY3RpdmUudHJhY2tlci5tb3Zlc1RvKGFjdGl2ZS4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbW91c2VsZWF2ZScsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlICYmICFtYXRjaGVzKHRoaXMuZHJvcGJhciwgJzpob3ZlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzaG93JyxcblxuICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJvcGJhci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlcih0aGlzLmRyb3BiYXJBbmNob3IgfHwgdGhpcy4kZWwsIHRoaXMuZHJvcGJhcik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsXG5cbiAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oXywgZHJvcCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciAkZWwgPSBkcm9wLiRlbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IGRyb3AuZGlyO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xzRHJvcCAmJiBhZGRDbGFzcygkZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLWRyb3BiYXJcIikpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkaXIgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbygkZWwub2Zmc2V0SGVpZ2h0ICsgdG9GbG9hdChjc3MoJGVsLCAnbWFyZ2luVG9wJykpICsgdG9GbG9hdChjc3MoJGVsLCAnbWFyZ2luQm90dG9tJykpLCAkZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVoaWRlJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gcmVmLiRlbDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzKHRoaXMuZHJvcGJhciwgJzpob3ZlcicpICYmIGFjdGl2ZSAmJiBhY3RpdmUuJGVsID09PSAkZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihfLCByZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRlbCA9IHJlZi4kZWw7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSB8fCBhY3RpdmUgJiYgYWN0aXZlLiRlbCA9PT0gJGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbygwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgZ2V0QWN0aXZlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy5kcm9wZG93bnMubWFwKHRoaXMuZ2V0RHJvcGRvd24pLmZpbHRlcihmdW5jdGlvbiAoZHJvcCkgeyByZXR1cm4gZHJvcC5pc0FjdGl2ZSgpOyB9KTtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3RpdmUgJiYgaW5jbHVkZXMoYWN0aXZlLm1vZGUsICdob3ZlcicpICYmIHdpdGhpbihhY3RpdmUudG9nZ2xlLiRlbCwgdGhpcy4kZWwpICYmIGFjdGl2ZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zaXRpb25UbzogZnVuY3Rpb24obmV3SGVpZ2h0LCBlbCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIGRyb3BiYXIgPSByZWYuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gaXNWaXNpYmxlKGRyb3BiYXIpID8gaGVpZ2h0KGRyb3BiYXIpIDogMDtcblxuICAgICAgICAgICAgICAgIGVsID0gb2xkSGVpZ2h0IDwgbmV3SGVpZ2h0ICYmIGVsO1xuXG4gICAgICAgICAgICAgICAgY3NzKGVsLCAnY2xpcCcsIChcInJlY3QoMCxcIiArIChlbC5vZmZzZXRXaWR0aCkgKyBcInB4LFwiICsgb2xkSGVpZ2h0ICsgXCJweCwwKVwiKSk7XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQoZHJvcGJhciwgb2xkSGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtlbCwgZHJvcGJhcl0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoZHJvcGJhciwge2hlaWdodDogbmV3SGVpZ2h0fSwgdGhpcy5kdXJhdGlvbiksXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoZWwsIHtjbGlwOiAoXCJyZWN0KDAsXCIgKyAoZWwub2Zmc2V0V2lkdGgpICsgXCJweCxcIiArIG5ld0hlaWdodCArIFwicHgsMClcIil9LCB0aGlzLmR1cmF0aW9uKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChub29wKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBjc3MoZWwsIHtjbGlwOiAnJ30pOyB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldERyb3Bkb3duOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRnZXRDb21wb25lbnQoZWwsICdkcm9wJykgfHwgdGhpcy4kZ2V0Q29tcG9uZW50KGVsLCAnZHJvcGRvd24nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIHNjcm9sbDtcblxuICAgIHZhciBPZmZjYW52YXMgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbTW9kYWxdLFxuXG4gICAgICAgIGFyZ3M6ICdtb2RlJyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY29udGVudDogU3RyaW5nLFxuICAgICAgICAgICAgbW9kZTogU3RyaW5nLFxuICAgICAgICAgICAgZmxpcDogQm9vbGVhbixcbiAgICAgICAgICAgIG92ZXJsYXk6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnLnVrLW9mZmNhbnZhcy1jb250ZW50JyxcbiAgICAgICAgICAgIG1vZGU6ICdzbGlkZScsXG4gICAgICAgICAgICBmbGlwOiBmYWxzZSxcbiAgICAgICAgICAgIG92ZXJsYXk6IGZhbHNlLFxuICAgICAgICAgICAgY2xzUGFnZTogJ3VrLW9mZmNhbnZhcy1wYWdlJyxcbiAgICAgICAgICAgIGNsc0NvbnRhaW5lcjogJ3VrLW9mZmNhbnZhcy1jb250YWluZXInLFxuICAgICAgICAgICAgc2VsUGFuZWw6ICcudWstb2ZmY2FudmFzLWJhcicsXG4gICAgICAgICAgICBjbHNGbGlwOiAndWstb2ZmY2FudmFzLWZsaXAnLFxuICAgICAgICAgICAgY2xzQ29udGVudDogJ3VrLW9mZmNhbnZhcy1jb250ZW50JyxcbiAgICAgICAgICAgIGNsc0NvbnRlbnRBbmltYXRpb246ICd1ay1vZmZjYW52YXMtY29udGVudC1hbmltYXRpb24nLFxuICAgICAgICAgICAgY2xzU2lkZWJhckFuaW1hdGlvbjogJ3VrLW9mZmNhbnZhcy1iYXItYW5pbWF0aW9uJyxcbiAgICAgICAgICAgIGNsc01vZGU6ICd1ay1vZmZjYW52YXMnLFxuICAgICAgICAgICAgY2xzT3ZlcmxheTogJ3VrLW9mZmNhbnZhcy1vdmVybGF5JyxcbiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLW9mZmNhbnZhcy1jbG9zZSdcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBjb250ZW50OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IHJlZi5jb250ZW50O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoY29udGVudCkgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0ZsaXA6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBmbGlwID0gcmVmLmZsaXA7XG4gICAgICAgICAgICAgICAgdmFyIGNsc0ZsaXAgPSByZWYuY2xzRmxpcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBmbGlwID8gY2xzRmxpcCA6ICcnO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzT3ZlcmxheTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG92ZXJsYXkgPSByZWYub3ZlcmxheTtcbiAgICAgICAgICAgICAgICB2YXIgY2xzT3ZlcmxheSA9IHJlZi5jbHNPdmVybGF5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJsYXkgPyBjbHNPdmVybGF5IDogJyc7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbHNNb2RlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgbW9kZSA9IHJlZi5tb2RlO1xuICAgICAgICAgICAgICAgIHZhciBjbHNNb2RlID0gcmVmLmNsc01vZGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGNsc01vZGUgKyBcIi1cIiArIG1vZGUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzU2lkZWJhckFuaW1hdGlvbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTtcbiAgICAgICAgICAgICAgICB2YXIgY2xzU2lkZWJhckFuaW1hdGlvbiA9IHJlZi5jbHNTaWRlYmFyQW5pbWF0aW9uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGUgPT09ICdub25lJyB8fCBtb2RlID09PSAncmV2ZWFsJyA/ICcnIDogY2xzU2lkZWJhckFuaW1hdGlvbjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0NvbnRlbnRBbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBtb2RlID0gcmVmLm1vZGU7XG4gICAgICAgICAgICAgICAgdmFyIGNsc0NvbnRlbnRBbmltYXRpb24gPSByZWYuY2xzQ29udGVudEFuaW1hdGlvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlICE9PSAncHVzaCcgJiYgbW9kZSAhPT0gJ3JldmVhbCcgPyAnJyA6IGNsc0NvbnRlbnRBbmltYXRpb247XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRWxlbWVudDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlID09PSAncmV2ZWFsJyA/IHRoaXMucGFuZWwucGFyZW50Tm9kZSA6IHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0QWN0aXZlKCkgPT09IHRoaXMpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5IHx8IHRoaXMuY2xzQ29udGVudEFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgodGhpcy5jb250ZW50LCB3aWR0aCh3aW5kb3cpIC0gdGhpcy5zY3JvbGxiYXJXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy5jb250ZW50LCBoZWlnaHQod2luZG93KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LnNjcm9sbFRvcCA9IHNjcm9sbC55O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnYVtocmVmXj1cIiNcIl0nO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5oYXNoICYmICQoY3VycmVudC5oYXNoLCB0aGlzLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzY3JvbGwnLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgc2Nyb2xsLCB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCAmJiB0YXJnZXQgJiYgdGhpcy5pc1RvZ2dsZWQoKSAmJiAkKHRhcmdldCwgdGhpcy5jb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZSh0aGlzLiRlbCwgJ2hpZGRlbicsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNjcm9sbC5zY3JvbGxUbyh0YXJnZXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSBzY3JvbGwgfHwge3g6IHdpbmRvdy5wYWdlWE9mZnNldCwgeTogd2luZG93LnBhZ2VZT2Zmc2V0fTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAncmV2ZWFsJyAmJiAhaGFzQ2xhc3ModGhpcy5wYW5lbCwgdGhpcy5jbHNNb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd3JhcEFsbCh0aGlzLnBhbmVsLCAnPGRpdj4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMucGFuZWwucGFyZW50Tm9kZSwgdGhpcy5jbHNNb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCAoIXRoaXMuY2xzQ29udGVudEFuaW1hdGlvbiB8fCB0aGlzLmZsaXApICYmIHRoaXMuc2Nyb2xsYmFyV2lkdGggJiYgdGhpcy5vdmVybGF5ID8gJ3Njcm9sbCcgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKGRvY3VtZW50LmJvZHksIHRoaXMuY2xzQ29udGFpbmVyLCB0aGlzLmNsc0ZsaXAsIHRoaXMuY2xzT3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodChkb2N1bWVudC5ib2R5KTsgLy8gZm9yY2UgcmVmbG93XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuY29udGVudCwgdGhpcy5jbHNDb250ZW50QW5pbWF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5wYW5lbCwgdGhpcy5jbHNTaWRlYmFyQW5pbWF0aW9uLCB0aGlzLm1vZGUgIT09ICdyZXZlYWwnID8gdGhpcy5jbHNNb2RlIDogJycpO1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNPdmVybGF5KTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICdibG9jaycpO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy4kZWwpOyAvLyBmb3JjZSByZWZsb3dcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuY29udGVudCwgdGhpcy5jbHNDb250ZW50QW5pbWF0aW9uKTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ25vbmUnIHx8IGFjdGl2ZSAmJiBhY3RpdmUgIT09IHRoaXMgJiYgYWN0aXZlICE9PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy5wYW5lbCwgJ3RyYW5zaXRpb25lbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZGVuJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAncmV2ZWFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwKHRoaXMucGFuZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCA9IHt4OiB3aW5kb3cucGFnZVhPZmZzZXQsIHk6IHdpbmRvdy5wYWdlWU9mZnNldH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gcmVmLnNjcm9sbExlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHJlZi5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSB7eDogeCwgeTogeX07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnBhbmVsLCB0aGlzLmNsc1NpZGViYXJBbmltYXRpb24sIHRoaXMuY2xzTW9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc092ZXJsYXkpO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJycpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCB0aGlzLmNsc0NvbnRhaW5lciwgdGhpcy5jbHNGbGlwLCB0aGlzLmNsc092ZXJsYXkpO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IHNjcm9sbC55O1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCAnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgd2lkdGgodGhpcy5jb250ZW50LCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLmNvbnRlbnQsICcnKTtcblxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsKHNjcm9sbC54LCBzY3JvbGwueSk7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc3dpcGVMZWZ0IHN3aXBlUmlnaHQnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpICYmIGlzVG91Y2goZSkgJiYgKGUudHlwZSA9PT0gJ3N3aXBlTGVmdCcgJiYgIXRoaXMuZmxpcCB8fCBlLnR5cGUgPT09ICdzd2lwZVJpZ2h0JyAmJiB0aGlzLmZsaXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICB2YXIgT3ZlcmZsb3dBdXRvID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBtb2RhbDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3QoJGVsLCAnLnVrLW1vZGFsJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwYW5lbDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3QoJGVsLCAnLnVrLW1vZGFsLWRpYWxvZycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ21pbkhlaWdodCcsIDE1MCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYW5lbCB8fCAhdGhpcy5tb2RhbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnKTtcblxuICAgICAgICAgICAgICAgIGNzcyhjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnLCAxNTApLCAnbWF4SGVpZ2h0JywgTWF0aC5tYXgoMTUwLCAxNTAgKyBoZWlnaHQodGhpcy5tb2RhbCkgLSB0aGlzLnBhbmVsLm9mZnNldEhlaWdodCkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50ICE9PSBjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnKSkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAncmVzaXplJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFJlc3BvbnNpdmUgPSB7XG5cbiAgICAgICAgcHJvcHM6IFsnd2lkdGgnLCAnaGVpZ2h0J10sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstcmVzcG9uc2l2ZS13aWR0aCcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNWaXNpYmxlKHRoaXMuJGVsKSAmJiB0aGlzLndpZHRoICYmIHRoaXMuaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgID8ge3dpZHRoOiB3aWR0aCh0aGlzLiRlbC5wYXJlbnROb2RlKSwgaGVpZ2h0OiB0aGlzLmhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihkaW0pIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy4kZWwsIERpbWVuc2lvbnMuY29udGFpbih7aGVpZ2h0OiB0aGlzLmhlaWdodCwgd2lkdGg6IHRoaXMud2lkdGh9LCBkaW0pLmhlaWdodCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU2Nyb2xsID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyLFxuICAgICAgICAgICAgb2Zmc2V0OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMTAwMCxcbiAgICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2Nyb2xsVG86IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGVsID0gZWwgJiYgJChlbCkgfHwgZG9jdW1lbnQuYm9keTtcblxuICAgICAgICAgICAgICAgIHZhciBkb2NIZWlnaHQgPSBoZWlnaHQoZG9jdW1lbnQpO1xuICAgICAgICAgICAgICAgIHZhciB3aW5IZWlnaHQgPSBoZWlnaHQod2luZG93KTtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBvZmZzZXQoZWwpLnRvcCAtIHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgKyB3aW5IZWlnaHQgPiBkb2NIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gZG9jSGVpZ2h0IC0gd2luSGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcih0aGlzLiRlbCwgJ2JlZm9yZXNjcm9sbCcsIFt0aGlzLCBlbF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIHZhciBzdGFydFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgdmFyIHN0ZXAgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRZID0gc3RhcnRZICsgKHRhcmdldCAtIHN0YXJ0WSkgKiBlYXNlKGNsYW1wKChEYXRlLm5vdygpIC0gc3RhcnQpIC8gdGhpcyQxLmR1cmF0aW9uKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCh3aW5kb3cucGFnZVhPZmZzZXQsIGN1cnJlbnRZKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBzY3JvbGwgbW9yZSBpZiB3ZSBoYXZlIG5vdCByZWFjaGVkIG91ciBkZXN0aW5hdGlvblxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFkgIT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzJDEuJGVsLCAnc2Nyb2xsZWQnLCBbdGhpcyQxLCBlbF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc3RlcCgpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvKGVzY2FwZSh0aGlzLiRlbC5oYXNoKS5zdWJzdHIoMSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBlYXNlKGspIHtcbiAgICAgICAgcmV0dXJuIDAuNSAqICgxIC0gTWF0aC5jb3MoTWF0aC5QSSAqIGspKTtcbiAgICB9XG5cbiAgICB2YXIgU2Nyb2xsc3B5ID0ge1xuXG4gICAgICAgIGFyZ3M6ICdjbHMnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjbHM6ICdsaXN0JyxcbiAgICAgICAgICAgIHRhcmdldDogU3RyaW5nLFxuICAgICAgICAgICAgaGlkZGVuOiBCb29sZWFuLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBOdW1iZXIsXG4gICAgICAgICAgICBvZmZzZXRMZWZ0OiBOdW1iZXIsXG4gICAgICAgICAgICByZXBlYXQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWxheTogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGNsczogW10sXG4gICAgICAgICAgICB0YXJnZXQ6IGZhbHNlLFxuICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiAwLFxuICAgICAgICAgICAgb2Zmc2V0TGVmdDogMCxcbiAgICAgICAgICAgIHJlcGVhdDogZmFsc2UsXG4gICAgICAgICAgICBkZWxheTogMCxcbiAgICAgICAgICAgIGluVmlld0NsYXNzOiAndWstc2Nyb2xsc3B5LWludmlldydcbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0ID8gJCQodGFyZ2V0LCAkZWwpIDogWyRlbF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhmaWx0ZXIodGhpcy5lbGVtZW50cywgKFwiOm5vdCguXCIgKyAodGhpcy5pblZpZXdDbGFzcykgKyBcIilcIikpLCAndmlzaWJpbGl0eScsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbHMuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsRGF0YSA9IGVsc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbERhdGEgfHwgZWxEYXRhLmVsICE9PSBlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbHMgPSBkYXRhKGVsLCAndWstc2Nyb2xsc3B5LWNsYXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhID0ge2VsOiBlbCwgdG9nZ2xlczogY2xzICYmIGNscy5zcGxpdCgnLCcpIHx8IHRoaXMkMS5jbHN9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbERhdGEuc2hvdyA9IGlzSW5WaWV3KGVsLCB0aGlzJDEub2Zmc2V0VG9wLCB0aGlzJDEub2Zmc2V0TGVmdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNbaV0gPSBlbERhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihlbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICAvLyBMZXQgY2hpbGQgY29tcG9uZW50cyBiZSBhcHBsaWVkIGF0IGxlYXN0IG9uY2UgZmlyc3RcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbHMuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbHMuZGVsYXkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gdGhpcy5lbGVtZW50cy5sZW5ndGggPT09IDEgPyAxIDogMDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsLCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbERhdGEgPSBlbHNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xzID0gZWxEYXRhLnRvZ2dsZXNbaV0gfHwgZWxEYXRhLnRvZ2dsZXNbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbERhdGEuc2hvdyAmJiAhZWxEYXRhLmludmlldyAmJiAhZWxEYXRhLnRpbWVyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGVsLCAndmlzaWJpbGl0eScsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWwsIHRoaXMkMS5pblZpZXdDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCBjbHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsICdpbnZpZXcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZShlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhLmludmlldyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlbERhdGEudGltZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuZGVsYXkgJiYgaW5kZXgkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhLnRpbWVyID0gc2V0VGltZW91dChzaG93LCB0aGlzJDEuZGVsYXkgKiBpbmRleCQkMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4JCQxKys7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVsRGF0YS5zaG93ICYmIGVsRGF0YS5pbnZpZXcgJiYgdGhpcyQxLnJlcGVhdCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsRGF0YS50aW1lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoZWxEYXRhLnRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVsRGF0YS50aW1lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MoZWwsICd2aXNpYmlsaXR5JywgdGhpcyQxLmhpZGRlbiA/ICdoaWRkZW4nIDogJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGVsLCB0aGlzJDEuaW5WaWV3Q2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCBjbHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihlbCwgJ291dHZpZXcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS4kdXBkYXRlKGVsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsRGF0YS5pbnZpZXcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIFNjcm9sbHNweU5hdiA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2xzOiBTdHJpbmcsXG4gICAgICAgICAgICBjbG9zZXN0OiBTdHJpbmcsXG4gICAgICAgICAgICBzY3JvbGw6IEJvb2xlYW4sXG4gICAgICAgICAgICBvdmVyZmxvdzogQm9vbGVhbixcbiAgICAgICAgICAgIG9mZnNldDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGNsb3Nlc3Q6IGZhbHNlLFxuICAgICAgICAgICAgc2Nyb2xsOiBmYWxzZSxcbiAgICAgICAgICAgIG92ZXJmbG93OiB0cnVlLFxuICAgICAgICAgICAgb2Zmc2V0OiAwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgbGlua3M6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAkJCgnYVtocmVmXj1cIiNcIl0nLCAkZWwpLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmhhc2g7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb3Nlc3QgPyBjbG9zZXN0KHRoaXMubGlua3MsIHRoaXMuY2xvc2VzdCkgOiB0aGlzLmxpbmtzO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0czogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRoaXMubGlua3MubWFwKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuaGFzaDsgfSkuam9pbignLCcpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRjcmVhdGUoJ3Njcm9sbCcsIHRoaXMubGlua3MsIHtvZmZzZXQ6IHRoaXMub2Zmc2V0IHx8IDB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSB3aW5kb3cucGFnZVlPZmZzZXQgKyB0aGlzLm9mZnNldCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXggPSBoZWlnaHQoZG9jdW1lbnQpIC0gaGVpZ2h0KHdpbmRvdykgKyB0aGlzLm9mZnNldDtcblxuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0cy5ldmVyeShmdW5jdGlvbiAoZWwsIGkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG9wID0gcmVmLnRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYXN0ID0gaSArIDEgPT09IHRoaXMkMS50YXJnZXRzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEub3ZlcmZsb3cgJiYgKGkgPT09IDAgJiYgdG9wID4gc2Nyb2xsIHx8IGxhc3QgJiYgdG9wICsgZWwub2Zmc2V0VG9wIDwgc2Nyb2xsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0ICYmIG9mZnNldCh0aGlzJDEudGFyZ2V0c1tpICsgMV0pLnRvcCA8PSBzY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCA+PSBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gdGhpcyQxLnRhcmdldHMubGVuZ3RoIC0gMTsgaiA+IGk7IGotLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJblZpZXcodGhpcyQxLnRhcmdldHNbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbCA9IHRoaXMkMS50YXJnZXRzW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKGRhdGEkJDEuYWN0aXZlID0gJChmaWx0ZXIodGhpcyQxLmxpbmtzLCAoXCJbaHJlZj1cXFwiI1wiICsgKGVsLmlkKSArIFwiXFxcIl1cIikpKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmJsdXIoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudHMsIHRoaXMuY2xzKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnYWN0aXZlJywgW2FjdGl2ZSwgYWRkQ2xhc3ModGhpcy5jbG9zZXN0ID8gY2xvc2VzdChhY3RpdmUsIHRoaXMuY2xvc2VzdCkgOiBhY3RpdmUsIHRoaXMuY2xzKV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIFN0aWNreSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRvcDogbnVsbCxcbiAgICAgICAgICAgIGJvdHRvbTogQm9vbGVhbixcbiAgICAgICAgICAgIG9mZnNldDogTnVtYmVyLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNBY3RpdmU6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0luYWN0aXZlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNGaXhlZDogU3RyaW5nLFxuICAgICAgICAgICAgY2xzQmVsb3c6IFN0cmluZyxcbiAgICAgICAgICAgIHNlbFRhcmdldDogU3RyaW5nLFxuICAgICAgICAgICAgd2lkdGhFbGVtZW50OiBCb29sZWFuLFxuICAgICAgICAgICAgc2hvd09uVXA6IEJvb2xlYW4sXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJyxcbiAgICAgICAgICAgIHRhcmdldE9mZnNldDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgYm90dG9tOiBmYWxzZSxcbiAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogJycsXG4gICAgICAgICAgICBjbHNBY3RpdmU6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgY2xzSW5hY3RpdmU6ICcnLFxuICAgICAgICAgICAgY2xzRml4ZWQ6ICd1ay1zdGlja3ktZml4ZWQnLFxuICAgICAgICAgICAgY2xzQmVsb3c6ICd1ay1zdGlja3ktYmVsb3cnLFxuICAgICAgICAgICAgc2VsVGFyZ2V0OiAnJyxcbiAgICAgICAgICAgIHdpZHRoRWxlbWVudDogZmFsc2UsXG4gICAgICAgICAgICBzaG93T25VcDogZmFsc2UsXG4gICAgICAgICAgICBtZWRpYTogZmFsc2UsXG4gICAgICAgICAgICB0YXJnZXRPZmZzZXQ6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgc2VsVGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBzZWxUYXJnZXQgPSByZWYuc2VsVGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbFRhcmdldCAmJiAkKHNlbFRhcmdldCwgJGVsKSB8fCAkZWw7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3aWR0aEVsZW1lbnQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoRWxlbWVudCA9IHJlZi53aWR0aEVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkod2lkdGhFbGVtZW50LCAkZWwpIHx8IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gJCgnKyAudWstc3RpY2t5LXBsYWNlaG9sZGVyJywgdGhpcy4kZWwpIHx8ICQoJzxkaXYgY2xhc3M9XCJ1ay1zdGlja3ktcGxhY2Vob2xkZXJcIj48L2Rpdj4nKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzSW5hY3RpdmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZW1vdmUodGhpcy5wbGFjZWhvbGRlcik7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMud2lkdGhFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdhY3RpdmUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXBsYWNlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzSW5hY3RpdmUsIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaW5hY3RpdmUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXBsYWNlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzQWN0aXZlLCB0aGlzLmNsc0luYWN0aXZlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdsb2FkIGhhc2hjaGFuZ2UgcG9wc3RhdGUnLFxuXG4gICAgICAgICAgICAgICAgZWw6IHdpbmRvdyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHRoaXMudGFyZ2V0T2Zmc2V0ICE9PSBmYWxzZSAmJiBsb2NhdGlvbi5oYXNoICYmIHdpbmRvdy5wYWdlWU9mZnNldCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gJChsb2NhdGlvbi5oYXNoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYXN0ZG9tLnJlYWQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbFRvcCA9IG9mZnNldCh0aGlzJDEuJGVsKS50b3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gdGhpcyQxLiRlbC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmlzQWN0aXZlICYmIGVsVG9wICsgZWxIZWlnaHQgPj0gdG9wICYmIGVsVG9wIDw9IHRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCgwLCB0b3AgLSBlbEhlaWdodCAtIChpc051bWVyaWModGhpcyQxLnRhcmdldE9mZnNldCkgPyB0aGlzJDEudGFyZ2V0T2Zmc2V0IDogMCkgLSB0aGlzJDEub2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IHJlZi5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9mZnNldEhlaWdodCA9IHJlZi4kZWwub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhwbGFjZWhvbGRlciwgYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICAgICAge2hlaWdodDogY3NzKHRoaXMuJGVsLCAncG9zaXRpb24nKSAhPT0gJ2Fic29sdXRlJyA/IG9mZnNldEhlaWdodCA6ICcnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgWydtYXJnaW5Ub3AnLCAnbWFyZ2luQm90dG9tJywgJ21hcmdpbkxlZnQnLCAnbWFyZ2luUmlnaHQnXSlcbiAgICAgICAgICAgICAgICAgICAgKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aXRoaW4ocGxhY2Vob2xkZXIsIGRvY3VtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIodGhpcy4kZWwsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIocGxhY2Vob2xkZXIsICdoaWRkZW4nLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvcE9mZnNldCA9IG9mZnNldCh0aGlzLmlzQWN0aXZlID8gcGxhY2Vob2xkZXIgOiB0aGlzLiRlbCkudG9wO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJvdHRvbU9mZnNldCA9IHRoaXMudG9wT2Zmc2V0ICsgb2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBib3R0b20gPSBwYXJzZVByb3AoJ2JvdHRvbScsIHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9wID0gTWF0aC5tYXgodG9GbG9hdChwYXJzZVByb3AoJ3RvcCcsIHRoaXMpKSwgdGhpcy50b3BPZmZzZXQpIC0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tID0gYm90dG9tICYmIGJvdHRvbSAtIG9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmFjdGl2ZSA9IHRoaXMubWVkaWEgJiYgIXdpbmRvdy5tYXRjaE1lZGlhKHRoaXMubWVkaWEpLm1hdGNoZXM7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oXywgcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGxZID0gcmVmLnNjcm9sbFk7IGlmICggc2Nyb2xsWSA9PT0gdm9pZCAwICkgc2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSAoaXNWaXNpYmxlKHRoaXMud2lkdGhFbGVtZW50KSA/IHRoaXMud2lkdGhFbGVtZW50IDogdGhpcy4kZWwpLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGw6IHRoaXMuc2Nyb2xsID0gc2Nyb2xsWSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGlzVmlzaWJsZSh0aGlzLiRlbClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZiwgcmVmJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aXNpYmxlID0gcmVmLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSByZWYuc2Nyb2xsO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiQxID09PSB2b2lkIDAgKSByZWYkMSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmJDEuZGlyO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCA8IDAgfHwgIXZpc2libGUgfHwgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnNob3dPblVwICYmICFkaXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmluYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBzY3JvbGwgPCB0aGlzLnRvcFxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5zaG93T25VcCAmJiAoc2Nyb2xsIDw9IHRoaXMudG9wIHx8IGRpciA9PT0gJ2Rvd24nIHx8IGRpciA9PT0gJ3VwJyAmJiAhdGhpcy5pc0FjdGl2ZSAmJiBzY3JvbGwgPD0gdGhpcy5ib3R0b21PZmZzZXQpXG4gICAgICAgICAgICAgICAgICAgICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uICYmIHNjcm9sbCA+IHRoaXMudG9wT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLm91dCh0aGlzLiRlbCwgdGhpcy5hbmltYXRpb24pLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLmhpZGUoKTsgfSwgbm9vcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0FjdGl2ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hbmltYXRpb24pIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5pbih0aGlzLiRlbCwgdGhpcy5hbmltYXRpb24pLmNhdGNoKG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZScsICdzY3JvbGwnXVxuXG4gICAgICAgICAgICB9IF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLnBsYWNlaG9sZGVyLCAnaGlkZGVuJywgbnVsbCk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlIHx8IGhhc0NsYXNzKHRoaXMuc2VsVGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2luYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRml4ZWQsIHRoaXMuY2xzQmVsb3cpO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge3Bvc2l0aW9uOiAnJywgdG9wOiAnJywgd2lkdGg6ICcnfSk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLnBsYWNlaG9sZGVyLCAnaGlkZGVuJywgJycpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMudG9wICE9PSAwIHx8IHRoaXMuc2Nyb2xsID4gdGhpcy50b3A7XG4gICAgICAgICAgICAgICAgdmFyIHRvcCA9IE1hdGgubWF4KDAsIHRoaXMub2Zmc2V0KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJvdHRvbSAmJiB0aGlzLnNjcm9sbCA+IHRoaXMuYm90dG9tIC0gdGhpcy5vZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wID0gdGhpcy5ib3R0b20gLSB0aGlzLnNjcm9sbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogKHRvcCArIFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaGFzQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzQWN0aXZlKSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaW5hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0JlbG93LCB0aGlzLnNjcm9sbCA+IHRoaXMuYm90dG9tT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNGaXhlZCk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcGFyc2VQcm9wKHByb3AsIHJlZikge1xuICAgICAgICB2YXIgJHByb3BzID0gcmVmLiRwcm9wcztcbiAgICAgICAgdmFyICRlbCA9IHJlZi4kZWw7XG4gICAgICAgIHZhciBwcm9wT2Zmc2V0ID0gcmVmWyhwcm9wICsgXCJPZmZzZXRcIildO1xuXG5cbiAgICAgICAgdmFyIHZhbHVlID0gJHByb3BzW3Byb3BdO1xuXG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc051bWVyaWModmFsdWUpKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBwcm9wT2Zmc2V0ICsgdG9GbG9hdCh2YWx1ZSk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChpc1N0cmluZyh2YWx1ZSkgJiYgdmFsdWUubWF0Y2goL14tP1xcZCt2aCQvKSkge1xuXG4gICAgICAgICAgICByZXR1cm4gaGVpZ2h0KHdpbmRvdykgKiB0b0Zsb2F0KHZhbHVlKSAvIDEwMDtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICB2YXIgZWwgPSB2YWx1ZSA9PT0gdHJ1ZSA/ICRlbC5wYXJlbnROb2RlIDogcXVlcnkodmFsdWUsICRlbCk7XG5cbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQoZWwpLnRvcCArIGVsLm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFN3aXRjaGVyID0ge1xuXG4gICAgICAgIG1peGluczogW1RvZ2dsYWJsZV0sXG5cbiAgICAgICAgYXJnczogJ2Nvbm5lY3QnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjb25uZWN0OiBTdHJpbmcsXG4gICAgICAgICAgICB0b2dnbGU6IFN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2ZTogTnVtYmVyLFxuICAgICAgICAgICAgc3dpcGluZzogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbm5lY3Q6ICd+LnVrLXN3aXRjaGVyJyxcbiAgICAgICAgICAgIHRvZ2dsZTogJz4gKicsXG4gICAgICAgICAgICBhY3RpdmU6IDAsXG4gICAgICAgICAgICBzd2lwaW5nOiB0cnVlLFxuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGNsc0NvbnRhaW5lcjogJ3VrLXN3aXRjaGVyJyxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstc3dpdGNoZXItaXRlbScsXG4gICAgICAgICAgICBxdWV1ZWQ6IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBjb25uZWN0czogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29ubmVjdCA9IHJlZi5jb25uZWN0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5QWxsKGNvbm5lY3QsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0b2dnbGVzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0b2dnbGUgPSByZWYudG9nZ2xlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRvZ2dsZSwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh0aGlzLnRvZ2dsZSkgKyBcIjpub3QoLnVrLWRpc2FibGVkKVwiKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhlLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RzO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZGF0YShlLmN1cnJlbnQsIHRoaXMuYXR0ckl0ZW0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3N3aXBlUmlnaHQgc3dpcGVMZWZ0JyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN3aXBpbmc7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdHM7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhlLnR5cGUgPT09ICdzd2lwZUxlZnQnID8gJ25leHQnIDogJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdGhpcy5jb25uZWN0cy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0KSB7IHJldHVybiB0aGlzJDEudXBkYXRlQXJpYShsaXN0LmNoaWxkcmVuKTsgfSk7XG4gICAgICAgICAgICB0aGlzLnNob3coZmlsdGVyKHRoaXMudG9nZ2xlcywgKFwiLlwiICsgKHRoaXMuY2xzKSkpWzBdIHx8IHRoaXMudG9nZ2xlc1t0aGlzLmFjdGl2ZV0gfHwgdGhpcy50b2dnbGVzWzBdKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy50b2dnbGVzO1xuICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gISF0aGlzLmNvbm5lY3RzLmxlbmd0aCAmJiBpbmRleChmaWx0ZXIodGhpcy5jb25uZWN0c1swXS5jaGlsZHJlbiwgKFwiLlwiICsgKHRoaXMuY2xzKSkpWzBdKTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzUHJldiA9IHByZXYgPj0gMDtcbiAgICAgICAgICAgICAgICB2YXIgZGlyID0gaXRlbSA9PT0gJ3ByZXZpb3VzJyA/IC0xIDogMTtcblxuICAgICAgICAgICAgICAgIHZhciB0b2dnbGUsIG5leHQgPSBnZXRJbmRleChpdGVtLCB0aGlzLnRvZ2dsZXMsIHByZXYpO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKywgbmV4dCA9IChuZXh0ICsgZGlyICsgbGVuZ3RoKSAlIGxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXModGhpcyQxLnRvZ2dsZXNbbmV4dF0sICcudWstZGlzYWJsZWQsIFtkaXNhYmxlZF0nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlID0gdGhpcyQxLnRvZ2dsZXNbbmV4dF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdG9nZ2xlIHx8IHByZXYgPj0gMCAmJiBoYXNDbGFzcyh0b2dnbGUsIHRoaXMuY2xzKSB8fCBwcmV2ID09PSBuZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnRvZ2dsZXMsIHRoaXMuY2xzKTtcbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMudG9nZ2xlcywgJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModG9nZ2xlLCB0aGlzLmNscyk7XG4gICAgICAgICAgICAgICAgYXR0cih0b2dnbGUsICdhcmlhLWV4cGFuZGVkJywgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RzLmZvckVhY2goZnVuY3Rpb24gKGxpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlTm93KGxpc3QuY2hpbGRyZW5bbmV4dF0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnRvZ2dsZUVsZW1lbnQoW2xpc3QuY2hpbGRyZW5bcHJldl0sIGxpc3QuY2hpbGRyZW5bbmV4dF1dKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBUYWIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIGV4dGVuZHM6IFN3aXRjaGVyLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1lZGlhOiA5NjAsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLXRhYi1pdGVtJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHZhciBjbHMgPSBoYXNDbGFzcyh0aGlzLiRlbCwgJ3VrLXRhYi1sZWZ0JylcbiAgICAgICAgICAgICAgICA/ICd1ay10YWItbGVmdCdcbiAgICAgICAgICAgICAgICA6IGhhc0NsYXNzKHRoaXMuJGVsLCAndWstdGFiLXJpZ2h0JylcbiAgICAgICAgICAgICAgICAgICAgPyAndWstdGFiLXJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoY2xzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kY3JlYXRlKCd0b2dnbGUnLCB0aGlzLiRlbCwge2NsczogY2xzLCBtb2RlOiAnbWVkaWEnLCBtZWRpYTogdGhpcy5tZWRpYX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFRvZ2dsZSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtUb2dnbGFibGVdLFxuXG4gICAgICAgIGFyZ3M6ICd0YXJnZXQnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBocmVmOiBTdHJpbmcsXG4gICAgICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgICAgICBtb2RlOiAnbGlzdCcsXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGhyZWY6IGZhbHNlLFxuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgICAgIG1vZGU6ICdjbGljaycsXG4gICAgICAgICAgICBxdWV1ZWQ6IHRydWUsXG4gICAgICAgICAgICBtZWRpYTogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGhyZWYgPSByZWYuaHJlZjtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHRhcmdldCA9IHF1ZXJ5QWxsKHRhcmdldCB8fCBocmVmLCAkZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQubGVuZ3RoICYmIHRhcmdldCB8fCBbJGVsXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAocG9pbnRlckVudGVyICsgXCIgXCIgKyBwb2ludGVyTGVhdmUpLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgoXCJ0b2dnbGVcIiArIChlLnR5cGUgPT09IHBvaW50ZXJFbnRlciA/ICdzaG93JyA6ICdoaWRlJykpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh0aGlzLm1vZGUsICdjbGljaycpIHx8IGhhc1RvdWNoICYmIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkgJiYgIWluY2x1ZGVzKHRoaXMubW9kZSwgJ2NsaWNrJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gYmV0dGVyIGlzVG9nZ2xlZCBoYW5kbGluZ1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGluaztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3QoZS50YXJnZXQsICdhW2hyZWY9XCIjXCJdLCBidXR0b24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGxpbmsgPSBjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmXScpKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhaXNWaXNpYmxlKHRoaXMudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxpbmsuaGFzaCAmJiBtYXRjaGVzKHRoaXMudGFyZ2V0LCBsaW5rLmhhc2gpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZShkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUucHJldmVudERlZmF1bHQoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWluY2x1ZGVzKHRoaXMubW9kZSwgJ21lZGlhJykgfHwgIXRoaXMubWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciB0b2dnbGVkID0gdGhpcy5pc1RvZ2dsZWQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYSh0aGlzLm1lZGlhKS5tYXRjaGVzID8gIXRvZ2dsZWQgOiB0b2dnbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHJpZ2dlcih0aGlzLnRhcmdldCwgdHlwZSB8fCAndG9nZ2xlJywgW3RoaXNdKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gY29yZSAoVUlraXQpIHtcblxuICAgICAgICAvLyBjb3JlIGNvbXBvbmVudHNcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdhY2NvcmRpb24nLCBBY2NvcmRpb24pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2FsZXJ0JywgQWxlcnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2NvdmVyJywgQ292ZXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2Ryb3AnLCBEcm9wKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdkcm9wZG93bicsIERyb3Bkb3duKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdmb3JtQ3VzdG9tJywgRm9ybUN1c3RvbSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnZ2lmJywgR2lmKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdncmlkJywgR3JpZCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaGVpZ2h0TWF0Y2gnLCBIZWlnaHRNYXRjaCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaGVpZ2h0Vmlld3BvcnQnLCBIZWlnaHRWaWV3cG9ydCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaWNvbicsIEljb24pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2ltZycsIEltZyk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbGVhZGVyJywgTGVhZGVyKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdtYXJnaW4nLCBNYXJnaW4pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ21vZGFsJywgTW9kYWwkMSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbmF2JywgTmF2KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCduYXZiYXInLCBOYXZiYXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ29mZmNhbnZhcycsIE9mZmNhbnZhcyk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnb3ZlcmZsb3dBdXRvJywgT3ZlcmZsb3dBdXRvKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdyZXNwb25zaXZlJywgUmVzcG9uc2l2ZSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc2Nyb2xsJywgU2Nyb2xsKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzY3JvbGxzcHknLCBTY3JvbGxzcHkpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3Njcm9sbHNweU5hdicsIFNjcm9sbHNweU5hdik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc3RpY2t5JywgU3RpY2t5KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzdmcnLCBTVkcpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3N3aXRjaGVyJywgU3dpdGNoZXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3RhYicsIFRhYik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgndG9nZ2xlJywgVG9nZ2xlKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCd2aWRlbycsIFZpZGVvKTtcblxuICAgICAgICAvLyBJY29uIGNvbXBvbmVudHNcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdjbG9zZScsIENsb3NlKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdtYXJrZXInLCBJY29uQ29tcG9uZW50KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCduYXZiYXJUb2dnbGVJY29uJywgSWNvbkNvbXBvbmVudCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnb3ZlcmxheUljb24nLCBJY29uQ29tcG9uZW50KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdwYWdpbmF0aW9uTmV4dCcsIEljb25Db21wb25lbnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3BhZ2luYXRpb25QcmV2aW91cycsIEljb25Db21wb25lbnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NlYXJjaEljb24nLCBTZWFyY2gpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlbmF2TmV4dCcsIFNsaWRlbmF2KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzbGlkZW5hdlByZXZpb3VzJywgU2xpZGVuYXYpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NwaW5uZXInLCBTcGlubmVyKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCd0b3RvcCcsIEljb25Db21wb25lbnQpO1xuXG4gICAgICAgIC8vIGNvcmUgZnVuY3Rpb25hbGl0eVxuICAgICAgICBVSWtpdC51c2UoQ29yZSk7XG5cbiAgICB9XG5cbiAgICBVSWtpdC52ZXJzaW9uID0gJzMuMC4wLXJjLjUnO1xuXG4gICAgY29yZShVSWtpdCk7XG5cbiAgICB2YXIgQ291bnRkb3duID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZGF0ZTogU3RyaW5nLFxuICAgICAgICAgICAgY2xzV3JhcHBlcjogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZGF0ZTogJycsXG4gICAgICAgICAgICBjbHNXcmFwcGVyOiAnLnVrLWNvdW50ZG93bi0ldW5pdCUnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZGF0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGUgPSByZWYuZGF0ZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBEYXRlLnBhcnNlKGRhdGUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZGF5czogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2xzV3JhcHBlciA9IHJlZi5jbHNXcmFwcGVyO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoY2xzV3JhcHBlci5yZXBsYWNlKCcldW5pdCUnLCAnZGF5cycpLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaG91cnM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNsc1dyYXBwZXIgPSByZWYuY2xzV3JhcHBlcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKGNsc1dyYXBwZXIucmVwbGFjZSgnJXVuaXQlJywgJ2hvdXJzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBtaW51dGVzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChjbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsICdtaW51dGVzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZWNvbmRzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChjbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsICdzZWNvbmRzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1bml0czogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWydkYXlzJywgJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcyddLmZpbHRlcihmdW5jdGlvbiAodW5pdCkgeyByZXR1cm4gdGhpcyQxW3VuaXRdOyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgICAgIHRoaXMudW5pdHMuZm9yRWFjaChmdW5jdGlvbiAodW5pdCkgeyByZXR1cm4gZW1wdHkodGhpcyQxW3VuaXRdKTsgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICd2aXNpYmlsaXR5Y2hhbmdlJyxcblxuICAgICAgICAgICAgICAgIGVsOiBkb2N1bWVudCxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWVzcGFuID0gZ2V0VGltZVNwYW4odGhpcy5kYXRlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aW1lc3Bhbi50b3RhbCA8PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGltZXNwYW4uZGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgPSB0aW1lc3Bhbi5ob3Vyc1xuICAgICAgICAgICAgICAgICAgICAgICAgPSB0aW1lc3Bhbi5taW51dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICA9IHRpbWVzcGFuLnNlY29uZHNcbiAgICAgICAgICAgICAgICAgICAgICAgID0gMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVuaXRzLmZvckVhY2goZnVuY3Rpb24gKHVuaXQpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGlnaXRzID0gU3RyaW5nKE1hdGguZmxvb3IodGltZXNwYW5bdW5pdF0pKTtcblxuICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSBkaWdpdHMubGVuZ3RoIDwgMiA/IChcIjBcIiArIGRpZ2l0cykgOiBkaWdpdHM7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsID0gdGhpcyQxW3VuaXRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwudGV4dENvbnRlbnQgIT09IGRpZ2l0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzID0gZGlnaXRzLnNwbGl0KCcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0cy5sZW5ndGggIT09IGVsLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwoZWwsIGRpZ2l0cy5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gJzxzcGFuPjwvc3Bhbj4nOyB9KS5qb2luKCcnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cy5mb3JFYWNoKGZ1bmN0aW9uIChkaWdpdCwgaSkgeyByZXR1cm4gZWwuY2hpbGRyZW5baV0udGV4dENvbnRlbnQgPSBkaWdpdDsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlICYmIHRoaXMudW5pdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS4kZW1pdCgpOyB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFRpbWVTcGFuKGRhdGUpIHtcblxuICAgICAgICB2YXIgdG90YWwgPSBkYXRlIC0gRGF0ZS5ub3coKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG90YWw6IHRvdGFsLFxuICAgICAgICAgICAgc2Vjb25kczogdG90YWwgLyAxMDAwICUgNjAsXG4gICAgICAgICAgICBtaW51dGVzOiB0b3RhbCAvIDEwMDAgLyA2MCAlIDYwLFxuICAgICAgICAgICAgaG91cnM6IHRvdGFsIC8gMTAwMCAvIDYwIC8gNjAgJSAyNCxcbiAgICAgICAgICAgIGRheXM6IHRvdGFsIC8gMTAwMCAvIDYwIC8gNjAgLyAyNFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciB0YXJnZXRDbGFzcyA9ICd1ay1hbmltYXRpb24tdGFyZ2V0JztcblxuICAgIHZhciBBbmltYXRlID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBhbmltYXRpb246IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogMTUwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGFuaW1hdGU6IGZ1bmN0aW9uKGFjdGlvbikge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBhZGRTdHlsZSgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdG9Ob2Rlcyh0aGlzLnRhcmdldC5jaGlsZHJlbik7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzRnJvbSA9IGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGdldFByb3BzKGVsLCB0cnVlKTsgfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gaGVpZ2h0KHRoaXMudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB2YXIgb2xkU2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcblxuICAgICAgICAgICAgICAgIGFjdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goVHJhbnNpdGlvbi5jYW5jZWwpO1xuXG4gICAgICAgICAgICAgICAgcmVzZXQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIHRoaXMuJHVwZGF0ZSh0aGlzLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgZmFzdGRvbS5mbHVzaCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIG5ld0hlaWdodCA9IGhlaWdodCh0aGlzLnRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdCh0b05vZGVzKHRoaXMudGFyZ2V0LmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiAhaW5jbHVkZXMoY2hpbGRyZW4sIGVsKTsgfSkpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHByb3BzVG8gPSBjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBlbC5wYXJlbnROb2RlICYmIGkgaW4gcHJvcHNGcm9tXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzRnJvbVtpXVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpc1Zpc2libGUoZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRQb3NpdGlvbldpdGhNYXJnaW4oZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7b3BhY2l0eTogMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDoge29wYWNpdHk6IGlzVmlzaWJsZShlbCkgPyAxIDogMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2U7IH1cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgcHJvcHNGcm9tID0gcHJvcHNUby5tYXAoZnVuY3Rpb24gKHByb3BzLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmcm9tID0gY2hpbGRyZW5baV0ucGFyZW50Tm9kZSA9PT0gdGhpcyQxLnRhcmdldFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wc0Zyb21baV0gfHwgZ2V0UHJvcHMoY2hpbGRyZW5baV0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb20ub3BhY2l0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoISgnb3BhY2l0eScgaW4gcHJvcHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9wYWNpdHkgPSBmcm9tLm9wYWNpdHk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BhY2l0eSAlIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMub3BhY2l0eSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb20ub3BhY2l0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMudGFyZ2V0LCB0YXJnZXRDbGFzcyk7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIHByb3BzRnJvbVtpXSAmJiBjc3MoZWwsIHByb3BzRnJvbVtpXSk7IH0pO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLnRhcmdldCwgJ21pbkhlaWdodCcsIG9sZEhlaWdodCk7XG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCh3aW5kb3cucGFnZVhPZmZzZXQsIG9sZFNjcm9sbFkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5hbGwoY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gcHJvcHNGcm9tW2ldICYmIHByb3BzVG9baV1cbiAgICAgICAgICAgICAgICAgICAgICAgID8gVHJhbnNpdGlvbi5zdGFydChlbCwgcHJvcHNUb1tpXSwgdGhpcyQxLmFuaW1hdGlvbiwgJ2Vhc2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBQcm9taXNlJDEucmVzb2x2ZSgpOyB9XG4gICAgICAgICAgICAgICAgKS5jb25jYXQoVHJhbnNpdGlvbi5zdGFydCh0aGlzLnRhcmdldCwge21pbkhlaWdodDogbmV3SGVpZ2h0fSwgdGhpcy5hbmltYXRpb24sICdlYXNlJykpKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIGNzcyhlbCwge2Rpc3BsYXk6IHByb3BzVG9baV0ub3BhY2l0eSA9PT0gMCA/ICdub25lJyA6ICcnLCB6SW5kZXg6ICcnfSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICByZXNldCh0aGlzJDEudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiR1cGRhdGUodGhpcyQxLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgfSwgbm9vcCk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRQcm9wcyhlbCwgb3BhY2l0eSkge1xuXG4gICAgICAgIHZhciB6SW5kZXggPSBjc3MoZWwsICd6SW5kZXgnKTtcblxuICAgICAgICByZXR1cm4gaXNWaXNpYmxlKGVsKVxuICAgICAgICAgICAgPyBhc3NpZ24oe1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICcnLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IG9wYWNpdHkgPyBjc3MoZWwsICdvcGFjaXR5JykgOiAnMCcsXG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHpJbmRleDogekluZGV4ID09PSAnYXV0bycgPyBpbmRleChlbCkgOiB6SW5kZXhcbiAgICAgICAgICAgIH0sIGdldFBvc2l0aW9uV2l0aE1hcmdpbihlbCkpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc2V0KGVsKSB7XG4gICAgICAgIGNzcyhlbC5jaGlsZHJlbiwge1xuICAgICAgICAgICAgaGVpZ2h0OiAnJyxcbiAgICAgICAgICAgIGxlZnQ6ICcnLFxuICAgICAgICAgICAgb3BhY2l0eTogJycsXG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnJyxcbiAgICAgICAgICAgIHRvcDogJycsXG4gICAgICAgICAgICB3aWR0aDogJydcbiAgICAgICAgfSk7XG4gICAgICAgIHJlbW92ZUNsYXNzKGVsLCB0YXJnZXRDbGFzcyk7XG4gICAgICAgIGNzcyhlbCwgJ21pbkhlaWdodCcsICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQb3NpdGlvbldpdGhNYXJnaW4oZWwpIHtcbiAgICAgICAgdmFyIHJlZiA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcbiAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICB2YXIgcmVmJDEgPSBwb3NpdGlvbihlbCk7XG4gICAgICAgIHZhciB0b3AgPSByZWYkMS50b3A7XG4gICAgICAgIHZhciBsZWZ0ID0gcmVmJDEubGVmdDtcbiAgICAgICAgdG9wICs9IHRvRmxvYXQoY3NzKGVsLCAnbWFyZ2luVG9wJykpO1xuXG4gICAgICAgIHJldHVybiB7dG9wOiB0b3AsIGxlZnQ6IGxlZnQsIGhlaWdodDogaGVpZ2h0JCQxLCB3aWR0aDogd2lkdGgkJDF9O1xuICAgIH1cblxuICAgIHZhciBzdHlsZSQxO1xuXG4gICAgZnVuY3Rpb24gYWRkU3R5bGUoKSB7XG4gICAgICAgIGlmICghc3R5bGUkMSkge1xuICAgICAgICAgICAgc3R5bGUkMSA9IGFwcGVuZChkb2N1bWVudC5oZWFkLCAnPHN0eWxlPicpLnNoZWV0O1xuICAgICAgICAgICAgc3R5bGUkMS5pbnNlcnRSdWxlKFxuICAgICAgICAgICAgICAgIChcIi5cIiArIHRhcmdldENsYXNzICsgXCIgPiAqIHtcXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgICAgICB9XCIpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIEZpbHRlciA9IHtcblxuICAgICAgICBtaXhpbnM6IFtBbmltYXRlXSxcblxuICAgICAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBCb29sZWFuLFxuICAgICAgICAgICAgc2VsQWN0aXZlOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICAgICAgc2VsQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstZmlsdGVyLWNvbnRyb2wnLFxuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogMjUwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgdG9nZ2xlczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXR0ckl0ZW0gPSByZWYuYXR0ckl0ZW07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQoKFwiW1wiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdLFtkYXRhLVwiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdXCIpLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQodGFyZ2V0LCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHkoZS5jdXJyZW50KTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbEFjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBhY3RpdmVzID0gJCQodGhpcy5zZWxBY3RpdmUsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbHMsIGluY2x1ZGVzKGFjdGl2ZXMsIGVsKSk7IH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICB2YXIgdG9nZ2xlcyA9IGRhdGEkJDEudG9nZ2xlcztcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGRhdGEkJDEuY2hpbGRyZW47XG4gICAgICAgICAgICBpZiAoaXNFcXVhbExpc3QodG9nZ2xlcywgdGhpcy50b2dnbGVzLCBmYWxzZSkgJiYgaXNFcXVhbExpc3QoY2hpbGRyZW4sIHRoaXMudGFyZ2V0LmNoaWxkcmVuLCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGEkJDEudG9nZ2xlcyA9IHRoaXMudG9nZ2xlcztcbiAgICAgICAgICAgIGRhdGEkJDEuY2hpbGRyZW4gPSB0aGlzLnRhcmdldC5jaGlsZHJlbjtcblxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh0aGlzLmdldFN0YXRlKCksIGZhbHNlKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShtZXJnZVN0YXRlKGVsLCB0aGlzLmF0dHJJdGVtLCB0aGlzLmdldFN0YXRlKCkpKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFN0YXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZXNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaGFzQ2xhc3MoaXRlbSwgdGhpcyQxLmNscyk7IH0pXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKHN0YXRlLCBlbCkgeyByZXR1cm4gbWVyZ2VTdGF0ZShlbCwgdGhpcyQxLmF0dHJJdGVtLCBzdGF0ZSk7IH0sIHtmaWx0ZXI6IHsnJzogJyd9LCBzb3J0OiBbXX0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2V0U3RhdGU6IGZ1bmN0aW9uKHN0YXRlLCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBhbmltYXRlJCQxID09PSB2b2lkIDAgKSBhbmltYXRlJCQxID0gdHJ1ZTtcblxuXG4gICAgICAgICAgICAgICAgc3RhdGUgPSBhc3NpZ24oe2ZpbHRlcjogeycnOiAnJ30sIHNvcnQ6IFtdfSwgc3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2JlZm9yZUZpbHRlcicsIFt0aGlzLCBzdGF0ZV0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdG9Ob2Rlcyh0aGlzLnRhcmdldC5jaGlsZHJlbik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xzLCBtYXRjaEZpbHRlcihlbCwgdGhpcyQxLmF0dHJJdGVtLCBzdGF0ZSkpOyB9KTtcblxuICAgICAgICAgICAgICAgIHZhciBhcHBseSQkMSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3IgPSBnZXRTZWxlY3RvcihzdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGNzcyhlbCwgJ2Rpc3BsYXknLCBzZWxlY3RvciAmJiAhbWF0Y2hlcyhlbCwgc2VsZWN0b3IpID8gJ25vbmUnIDogJycpOyB9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gc3RhdGUuc29ydDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNvcnQgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcmRlciA9IHJlZlsxXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc29ydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvcnRlZCA9IHNvcnRJdGVtcyhjaGlsZHJlbiwgc29ydCwgb3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VxdWFsTGlzdChzb3J0ZWQsIGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gYXBwZW5kKHRoaXMkMS50YXJnZXQsIGVsKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoYW5pbWF0ZSQkMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGUoYXBwbHkkJDEpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJpZ2dlcih0aGlzJDEuJGVsLCAnYWZ0ZXJGaWx0ZXInLCBbdGhpcyQxXSk7IH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGx5JCQxKCk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdhZnRlckZpbHRlcicsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldEZpbHRlcihlbCwgYXR0ciQkMSkge1xuICAgICAgICByZXR1cm4gcGFyc2VPcHRpb25zKGRhdGEoZWwsIGF0dHIkJDEpLCBbJ2ZpbHRlciddKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZVN0YXRlKGVsLCBhdHRyJCQxLCBzdGF0ZSkge1xuXG4gICAgICAgIHRvTm9kZXMoZWwpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyQnkgPSBnZXRGaWx0ZXIoZWwsIGF0dHIkJDEpO1xuICAgICAgICAgICAgdmFyIGZpbHRlciQkMSA9IGZpbHRlckJ5LmZpbHRlcjtcbiAgICAgICAgICAgIHZhciBncm91cCA9IGZpbHRlckJ5Lmdyb3VwO1xuICAgICAgICAgICAgdmFyIHNvcnQgPSBmaWx0ZXJCeS5zb3J0O1xuICAgICAgICAgICAgdmFyIG9yZGVyID0gZmlsdGVyQnkub3JkZXI7IGlmICggb3JkZXIgPT09IHZvaWQgMCApIG9yZGVyID0gJ2FzYyc7XG5cbiAgICAgICAgICAgIGlmIChmaWx0ZXIkJDEgfHwgaXNVbmRlZmluZWQoc29ydCkpIHtcblxuICAgICAgICAgICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3RhdGUuZmlsdGVyWycnXTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZmlsdGVyW2dyb3VwXSA9IGZpbHRlciQkMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maWx0ZXIgPSB7Jyc6IGZpbHRlciQkMX07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoc29ydCkpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5zb3J0ID0gW3NvcnQsIG9yZGVyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoRmlsdGVyKGVsLCBhdHRyJCQxLCByZWYpIHtcbiAgICAgICAgdmFyIHN0YXRlRmlsdGVyID0gcmVmLmZpbHRlcjtcbiAgICAgICAgdmFyIHJlZl9zb3J0ID0gcmVmLnNvcnQ7XG4gICAgICAgIHZhciBzdGF0ZVNvcnQgPSByZWZfc29ydFswXTtcbiAgICAgICAgdmFyIHN0YXRlT3JkZXIgPSByZWZfc29ydFsxXTtcblxuICAgICAgICB2YXIgcmVmJDEgPSBnZXRGaWx0ZXIoZWwsIGF0dHIkJDEpO1xuICAgICAgICB2YXIgZmlsdGVyJCQxID0gcmVmJDEuZmlsdGVyO1xuICAgICAgICB2YXIgZ3JvdXAgPSByZWYkMS5ncm91cDsgaWYgKCBncm91cCA9PT0gdm9pZCAwICkgZ3JvdXAgPSAnJztcbiAgICAgICAgdmFyIHNvcnQgPSByZWYkMS5zb3J0O1xuICAgICAgICB2YXIgb3JkZXIgPSByZWYkMS5vcmRlcjsgaWYgKCBvcmRlciA9PT0gdm9pZCAwICkgb3JkZXIgPSAnYXNjJztcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICAoZmlsdGVyJCQxIHx8IGlzVW5kZWZpbmVkKHNvcnQpKSAmJiBncm91cCBpbiBzdGF0ZUZpbHRlciAmJiAoZmlsdGVyJCQxID09PSBzdGF0ZUZpbHRlcltncm91cF0gfHwgaXNVbmRlZmluZWQoZmlsdGVyJCQxKSAmJiAhc3RhdGVGaWx0ZXJbZ3JvdXBdKVxuICAgICAgICAgICAgfHwgc3RhdGVTb3J0ICYmIHNvcnQgJiYgc3RhdGVTb3J0ID09PSBzb3J0ICYmIHN0YXRlT3JkZXIgPT09IG9yZGVyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNFcXVhbExpc3QobGlzdEEsIGxpc3RCLCBzdHJpY3QpIHtcbiAgICAgICAgaWYgKCBzdHJpY3QgPT09IHZvaWQgMCApIHN0cmljdCA9IHRydWU7XG5cblxuICAgICAgICBsaXN0QSA9IHRvTm9kZXMobGlzdEEpO1xuICAgICAgICBsaXN0QiA9IHRvTm9kZXMobGlzdEIpO1xuXG4gICAgICAgIHJldHVybiBsaXN0QS5sZW5ndGggPT09IGxpc3RCLmxlbmd0aFxuICAgICAgICAgICAgJiYgbGlzdEEuZXZlcnkoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBzdHJpY3QgPyBlbCA9PT0gbGlzdEJbaV0gOiB+bGlzdEIuaW5kZXhPZihlbCk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdG9yKHJlZikge1xuICAgICAgICB2YXIgZmlsdGVyJCQxID0gcmVmLmZpbHRlcjtcblxuICAgICAgICB2YXIgc2VsZWN0b3IgPSAnJztcbiAgICAgICAgZWFjaChmaWx0ZXIkJDEsIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gc2VsZWN0b3IgKz0gdmFsdWUgfHwgJyc7IH0pO1xuICAgICAgICByZXR1cm4gc2VsZWN0b3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc29ydEl0ZW1zKG5vZGVzLCBzb3J0LCBvcmRlcikge1xuICAgICAgICByZXR1cm4gdG9Ob2Rlcyhub2Rlcykuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gZGF0YShhLCBzb3J0KS5sb2NhbGVDb21wYXJlKGRhdGEoYiwgc29ydCkpICogKG9yZGVyID09PSAnYXNjJyB8fCAtMSk7IH0pO1xuICAgIH1cblxuICAgIHZhciBBbmltYXRpb25zID0ge1xuXG4gICAgICAgIHNsaWRlOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZShkaXIgKiAtMTAwKX0sXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZShkaXIgKiAtMTAwICogcGVyY2VudCl9LFxuICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoZGlyICogMTAwICogKDEgLSBwZXJjZW50KSl9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlZChlbCkge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnMoY3NzKGVsLCAndHJhbnNmb3JtJykuc3BsaXQoJywnKVs0XSAvIGVsLm9mZnNldFdpZHRoKSB8fCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZSh2YWx1ZSwgdW5pdCkge1xuICAgICAgICBpZiAoIHZhbHVlID09PSB2b2lkIDAgKSB2YWx1ZSA9IDA7XG4gICAgICAgIGlmICggdW5pdCA9PT0gdm9pZCAwICkgdW5pdCA9ICclJztcblxuICAgICAgICByZXR1cm4gKFwidHJhbnNsYXRlWChcIiArIHZhbHVlICsgKHZhbHVlID8gdW5pdCA6ICcnKSArIFwiKVwiKTsgLy8gY3VycmVudGx5IG5vdCB0cmFuc2xhdGUzZCB0byBzdXBwb3J0IElFLCB0cmFuc2xhdGUzZCB3aXRoaW4gdHJhbnNsYXRlM2QgZG9lcyBub3Qgd29yayB3aGlsZSB0cmFuc2l0aW9uaW5nXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhbGUzZCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gKFwic2NhbGUzZChcIiArIHZhbHVlICsgXCIsIFwiICsgdmFsdWUgKyBcIiwgMSlcIik7XG4gICAgfVxuXG4gICAgdmFyIEFuaW1hdGlvbnMkMSA9IGFzc2lnbih7fSwgQW5pbWF0aW9ucywge1xuXG4gICAgICAgIGZhZGU6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnR9LFxuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogcGVyY2VudH1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2NhbGU6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDAsIHRyYW5zZm9ybTogc2NhbGUzZCgxIC0gLjIpfSxcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDEsIHRyYW5zZm9ybTogc2NhbGUzZCgxKX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnQsIHRyYW5zZm9ybTogc2NhbGUzZCgxIC0gLjIgKiBwZXJjZW50KX0sXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiBwZXJjZW50LCB0cmFuc2Zvcm06IHNjYWxlM2QoMSAtIC4yICsgLjIgKiBwZXJjZW50KX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gVHJhbnNpdGlvbmVyKHByZXYsIG5leHQsIGRpciwgcmVmKSB7XG4gICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuICAgICAgICB2YXIgZWFzaW5nID0gcmVmLmVhc2luZztcblxuXG4gICAgICAgIHZhciBwZXJjZW50ID0gYW5pbWF0aW9uLnBlcmNlbnQ7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBhbmltYXRpb24udHJhbnNsYXRlO1xuICAgICAgICB2YXIgc2hvdyA9IGFuaW1hdGlvbi5zaG93OyBpZiAoIHNob3cgPT09IHZvaWQgMCApIHNob3cgPSBub29wO1xuICAgICAgICB2YXIgcHJvcHMgPSBzaG93KGRpcik7XG4gICAgICAgIHZhciBkZWZlcnJlZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIHJldHVybiB7XG5cbiAgICAgICAgICAgIGRpcjogZGlyLFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCwgbGluZWFyKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBwZXJjZW50ID09PSB2b2lkIDAgKSBwZXJjZW50ID0gMDtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IGxpbmVhciA/ICdsaW5lYXInIDogZWFzaW5nO1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IE1hdGgucm91bmQoZHVyYXRpb24gKiBjbGFtcChwZXJjZW50LCAtMSwgMSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUocGVyY2VudCk7XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKG5leHQsICdpdGVtaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZHVyYXRpb246IGR1cmF0aW9uLCB0aW1pbmc6IHRpbWluZywgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKHByZXYsICdpdGVtb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkdXJhdGlvbjogZHVyYXRpb24sIHRpbWluZzogdGltaW5nLCBkaXI6IGRpcn0pO1xuXG4gICAgICAgICAgICAgICAgUHJvbWlzZSQxLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQobmV4dCwgcHJvcHNbMV0sIGR1cmF0aW9uLCB0aW1pbmcpLFxuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KHByZXYsIHByb3BzWzBdLCBkdXJhdGlvbiwgdGltaW5nKVxuICAgICAgICAgICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sIG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVHJhbnNpdGlvbi5zdG9wKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBwcm9wc1swXSkge1xuICAgICAgICAgICAgICAgICAgICBjc3MoW25leHQsIHByZXZdLCBwcm9wLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZm9yd2FyZDogZnVuY3Rpb24oZHVyYXRpb24sIHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHBlcmNlbnQgPT09IHZvaWQgMCApIHBlcmNlbnQgPSB0aGlzLnBlcmNlbnQoKTtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhkdXJhdGlvbiwgcGVyY2VudCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHByb3BzID0gdHJhbnNsYXRlKHBlcmNlbnQsIGRpcik7XG4gICAgICAgICAgICAgICAgY3NzKG5leHQsIHByb3BzWzFdKTtcbiAgICAgICAgICAgICAgICBjc3MocHJldiwgcHJvcHNbMF0pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUobmV4dCwgJ2l0ZW10cmFuc2xhdGVpbicsIHtwZXJjZW50OiBwZXJjZW50LCBkaXI6IGRpcn0pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUocHJldiwgJ2l0ZW10cmFuc2xhdGVvdXQnLCB7cGVyY2VudDogMSAtIHBlcmNlbnQsIGRpcjogZGlyfSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwZXJjZW50KHByZXYgfHwgbmV4dCwgbmV4dCwgZGlyKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldERpc3RhbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldi5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJpZ2dlclVwZGF0ZShlbCwgdHlwZSwgZGF0YSQkMSkge1xuICAgICAgICB0cmlnZ2VyKGVsLCBjcmVhdGVFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UsIGRhdGEkJDEpKTtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyQXV0b3BsYXkgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiBCb29sZWFuLFxuICAgICAgICAgICAgYXV0b3BsYXlJbnRlcnZhbDogTnVtYmVyLFxuICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgYXV0b3BsYXlJbnRlcnZhbDogNzAwMCxcbiAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0QXV0b3BsYXkoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5zdG9wQXV0b3BsYXkoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3Zpc2liaWxpdHljaGFuZ2UnLFxuXG4gICAgICAgICAgICAgICAgZWw6IGRvY3VtZW50LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0QXV0b3BsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogcG9pbnRlckRvd24sXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogJ3N0b3BBdXRvcGxheSdcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlZW50ZXInLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0b3BsYXk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSG92ZXJpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlbGVhdmUnLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0b3BsYXk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSG92ZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc3RhcnRBdXRvcGxheTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvcGxheSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiAhKHRoaXMkMS5pc0hvdmVyaW5nICYmIHRoaXMkMS5wYXVzZU9uSG92ZXIpICYmICF0aGlzJDEuc3RhY2subGVuZ3RoICYmIHRoaXMkMS5zaG93KCduZXh0Jyk7IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9wbGF5SW50ZXJ2YWxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0b3BBdXRvcGxheTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZXJEcmFnID0ge1xuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRocmVzaG9sZDogMTAsXG4gICAgICAgICAgICBwcmV2ZW50Q2F0Y2g6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICBbJ3N0YXJ0JywgJ21vdmUnLCAnZW5kJ10uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZm4gPSB0aGlzJDFba2V5XTtcbiAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IGZ1bmN0aW9uIChlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IGdldFBvcyQxKGUpLnggKiAoaXNSdGwgPyAtMSA6IDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wcmV2UG9zID0gcG9zICE9PSB0aGlzJDEucG9zID8gdGhpcyQxLnBvcyA6IHRoaXMkMS5wcmV2UG9zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zID0gcG9zO1xuXG4gICAgICAgICAgICAgICAgICAgIGZuKGUpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJEb3duLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXNTZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNUb3VjaChlKSAmJiBoYXNUZXh0Tm9kZXNPbmx5KGUudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZS5idXR0b24gPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmxlbmd0aCA8IDJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMucHJldmVudENhdGNoXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydChlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnZHJhZ3N0YXJ0JyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gdGhpcy5wb3M7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhbnNpdGlvbmVyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJjZW50ID0gdGhpcy5fdHJhbnNpdGlvbmVyLnBlcmNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnICs9IHRoaXMuX3RyYW5zaXRpb25lci5nZXREaXN0YW5jZSgpICogdGhpcy5wZXJjZW50ICogdGhpcy5kaXI7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyLnRyYW5zbGF0ZSh0aGlzLnBlcmNlbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIuY2FuY2VsKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjayA9IFtdO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kTW92ZSA9IG9uKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgdGhpcy5tb3ZlLCB7Y2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2V9KTtcbiAgICAgICAgICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnVuYmluZE1vdmUpO1xuICAgICAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kLCB0cnVlKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbW92ZTogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSB0aGlzLnBvcyAtIHRoaXMuZHJhZztcblxuICAgICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA9PT0gMCB8fCB0aGlzLnByZXZQb3MgPT09IHRoaXMucG9zIHx8ICF0aGlzLmRyYWdnaW5nICYmIE1hdGguYWJzKGRpc3RhbmNlKSA8IHRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLmNhbmNlbGFibGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXIgPSAoZGlzdGFuY2UgPCAwID8gMSA6IC0xKTtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBzbGlkZXMgPSByZWYuc2xpZGVzO1xuICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHByZXZJbmRleCA9IHJlZiQxLnByZXZJbmRleDtcbiAgICAgICAgICAgICAgICB2YXIgZGlzID0gTWF0aC5hYnMoZGlzdGFuY2UpO1xuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSB0aGlzLmdldEluZGV4KHByZXZJbmRleCArIHRoaXMuZGlyLCBwcmV2SW5kZXgpO1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHRoaXMuX2dldERpc3RhbmNlKHByZXZJbmRleCwgbmV4dEluZGV4KSB8fCBzbGlkZXNbcHJldkluZGV4XS5vZmZzZXRXaWR0aDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0SW5kZXggIT09IHByZXZJbmRleCAmJiBkaXMgPiB3aWR0aCQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5kcmFnIC09IHdpZHRoJCQxICogdGhpcyQxLmRpcjtcblxuICAgICAgICAgICAgICAgICAgICBwcmV2SW5kZXggPSBuZXh0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGRpcyAtPSB3aWR0aCQkMTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEluZGV4ID0gdGhpcyQxLmdldEluZGV4KHByZXZJbmRleCArIHRoaXMkMS5kaXIsIHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoJCQxID0gdGhpcyQxLl9nZXREaXN0YW5jZShwcmV2SW5kZXgsIG5leHRJbmRleCkgfHwgc2xpZGVzW3ByZXZJbmRleF0ub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcmNlbnQgPSBkaXMgLyB3aWR0aCQkMTtcblxuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gc2xpZGVzW3ByZXZJbmRleF07XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSBzbGlkZXNbbmV4dEluZGV4XTtcbiAgICAgICAgICAgICAgICB2YXIgY2hhbmdlZCA9IHRoaXMuaW5kZXggIT09IG5leHRJbmRleDtcbiAgICAgICAgICAgICAgICB2YXIgZWRnZSA9IHByZXZJbmRleCA9PT0gbmV4dEluZGV4O1xuXG4gICAgICAgICAgICAgICAgdmFyIGl0ZW1TaG93bjtcblxuICAgICAgICAgICAgICAgIFt0aGlzLmluZGV4LCB0aGlzLnByZXZJbmRleF0uZmlsdGVyKGZ1bmN0aW9uIChpKSB7IHJldHVybiAhaW5jbHVkZXMoW25leHRJbmRleCwgcHJldkluZGV4XSwgaSk7IH0pLmZvckVhY2goZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihzbGlkZXNbaV0sICdpdGVtaGlkZGVuJywgW3RoaXMkMV0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlZGdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2hvd24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnByZXZJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRleCA9PT0gcHJldkluZGV4ICYmIHRoaXMucHJldkluZGV4ICE9PSBwcmV2SW5kZXggfHwgaXRlbVNob3duKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoc2xpZGVzW3RoaXMuaW5kZXhdLCAnaXRlbXNob3duJywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IG5leHRJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAhZWRnZSAmJiB0cmlnZ2VyKHByZXYsICdiZWZvcmVpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2JlZm9yZWl0ZW1zaG93JywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIgPSB0aGlzLl90cmFuc2xhdGUoTWF0aC5hYnModGhpcy5wZXJjZW50KSwgcHJldiwgIWVkZ2UgJiYgbmV4dCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAhZWRnZSAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2l0ZW1zaG93JywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGVuZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBvZmYod2luZG93LCAnc2Nyb2xsJywgdGhpcy51bmJpbmRNb3ZlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZE1vdmUoKTtcbiAgICAgICAgICAgICAgICBvZmYoZG9jdW1lbnQsIHBvaW50ZXJVcCwgdGhpcy5lbmQsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRleCA9PT0gdGhpcy5wcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IDEgLSB0aGlzLnBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciAqPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3coZmFsc2UsIHRoaXMuaW5kZXgsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpckNoYW5nZSA9IChpc1J0bCA/IHRoaXMuZGlyICogKGlzUnRsID8gMSA6IC0xKSA6IHRoaXMuZGlyKSA8IDAgPT09IHRoaXMucHJldlBvcyA+IHRoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IGRpckNoYW5nZSA/IHRoaXMuaW5kZXggOiB0aGlzLnByZXZJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpckNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IDEgLSB0aGlzLnBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0aGlzLmRpciA+IDAgJiYgIWRpckNoYW5nZSB8fCB0aGlzLmRpciA8IDAgJiYgZGlyQ2hhbmdlID8gJ25leHQnIDogJ3ByZXZpb3VzJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwcmV2ZW50Q2xpY2soKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1xuICAgICAgICAgICAgICAgICAgICA9IHRoaXMucGVyY2VudFxuICAgICAgICAgICAgICAgICAgICA9IG51bGw7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFzVGV4dE5vZGVzT25seShlbCkge1xuICAgICAgICByZXR1cm4gIWVsLmNoaWxkcmVuLmxlbmd0aCAmJiBlbC5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyTmF2ID0ge1xuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHNlbE5hdjogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBuYXY6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbE5hdiA9IHJlZi5zZWxOYXY7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChzZWxOYXYsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBuYXZJdGVtU2VsZWN0b3I6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhdHRySXRlbSA9IHJlZi5hdHRySXRlbTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyBhdHRySXRlbSArIFwiXSxbZGF0YS1cIiArIGF0dHJJdGVtICsgXCJdXCIpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbmF2SXRlbXM6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAkJCh0aGlzLm5hdkl0ZW1TZWxlY3RvciwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmF2ICYmIHRoaXMubGVuZ3RoICE9PSB0aGlzLm5hdi5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwodGhpcy5uYXYsIHRoaXMuc2xpZGVzLm1hcChmdW5jdGlvbiAoXywgaSkgeyByZXR1cm4gKFwiPGxpIFwiICsgKHRoaXMkMS5hdHRySXRlbSkgKyBcIj1cXFwiXCIgKyBpICsgXCJcXFwiPjxhIGhyZWY9XFxcIiNcXFwiPjwvYT48L2xpPlwiKTsgfSkuam9pbignJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoJCQodGhpcy5uYXZJdGVtU2VsZWN0b3IsIHRoaXMuJGVsKS5jb25jYXQodGhpcy5uYXYpLCAndWstaGlkZGVuJywgIXRoaXMubWF4SW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTmF2KCk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5hdkl0ZW1TZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGUuY3VycmVudC5ibHVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhkYXRhKGUuY3VycmVudCwgdGhpcy5hdHRySXRlbSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93JyxcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiAndXBkYXRlTmF2J1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHVwZGF0ZU5hdjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5nZXRWYWxpZEluZGV4KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXZJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjbWQgPSBkYXRhKGVsLCB0aGlzJDEuYXR0ckl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xzQWN0aXZlLCB0b051bWJlcihjbWQpID09PSBpKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsICd1ay1pbnZpc2libGUnLCB0aGlzJDEuZmluaXRlICYmIChjbWQgPT09ICdwcmV2aW91cycgJiYgaSA9PT0gMCB8fCBjbWQgPT09ICduZXh0JyAmJiBpID49IHRoaXMkMS5tYXhJbmRleCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZXIgPSB7XG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgbWl4aW5zOiBbU2xpZGVyQXV0b3BsYXksIFNsaWRlckRyYWcsIFNsaWRlck5hdl0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNsc0FjdGl2YXRlZDogQm9vbGVhbixcbiAgICAgICAgICAgIGVhc2luZzogU3RyaW5nLFxuICAgICAgICAgICAgaW5kZXg6IE51bWJlcixcbiAgICAgICAgICAgIGZpbml0ZTogQm9vbGVhbixcbiAgICAgICAgICAgIHZlbG9jaXR5OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgZWFzaW5nOiAnZWFzZScsXG4gICAgICAgICAgICBmaW5pdGU6IGZhbHNlLFxuICAgICAgICAgICAgdmVsb2NpdHk6IDEsXG4gICAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICAgIHN0YWNrOiBbXSxcbiAgICAgICAgICAgIHBlcmNlbnQ6IDAsXG4gICAgICAgICAgICBjbHNBY3RpdmU6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgY2xzQWN0aXZhdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIFRyYW5zaXRpb25lcjogZmFsc2UsXG4gICAgICAgICAgICB0cmFuc2l0aW9uT3B0aW9uczoge31cbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZHVyYXRpb246IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZlbG9jaXR5ID0gcmVmLnZlbG9jaXR5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNwZWVkVXAoJGVsLm9mZnNldFdpZHRoIC8gdmVsb2NpdHkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbGVuZ3RoOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbGlzdDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsTGlzdCA9IHJlZi5zZWxMaXN0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsTGlzdCwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1heEluZGV4OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2xpZGVzU2VsZWN0b3I6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBzZWxMaXN0ID0gcmVmLnNlbExpc3Q7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKHNlbExpc3QgKyBcIiA+ICpcIik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzbGlkZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b05vZGVzKHRoaXMubGlzdC5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgaXRlbXNob3duOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiR1cGRhdGUodGhpcy5saXN0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oaW5kZXgkJDEsIGZvcmNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBmb3JjZSA9PT0gdm9pZCAwICkgZm9yY2UgPSBmYWxzZTtcblxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcgfHwgIXRoaXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgc3RhY2sgPSByZWYuc3RhY2s7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXVlSW5kZXggPSBmb3JjZSA/IDAgOiBzdGFjay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdmFyIHJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzdGFjay5zcGxpY2UocXVldWVJbmRleCwgMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNob3coc3RhY2suc2hpZnQoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc3RhY2tbZm9yY2UgPyAndW5zaGlmdCcgOiAncHVzaCddKGluZGV4JCQxKTtcblxuICAgICAgICAgICAgICAgIGlmICghZm9yY2UgJiYgc3RhY2subGVuZ3RoID4gMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lci5mb3J3YXJkKE1hdGgubWluKHRoaXMuZHVyYXRpb24sIDIwMCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBwcmV2SW5kZXggPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gaGFzQ2xhc3ModGhpcy5zbGlkZXMsIHRoaXMuY2xzQWN0aXZlKSAmJiB0aGlzLnNsaWRlc1twcmV2SW5kZXhdO1xuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSB0aGlzLmdldEluZGV4KGluZGV4JCQxLCB0aGlzLmluZGV4KTtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHRoaXMuc2xpZGVzW25leHRJbmRleF07XG5cbiAgICAgICAgICAgICAgICBpZiAocHJldiA9PT0gbmV4dCkge1xuICAgICAgICAgICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5kaXIgPSBnZXREaXJlY3Rpb24oaW5kZXgkJDEsIHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IG5leHRJbmRleDtcblxuICAgICAgICAgICAgICAgIHByZXYgJiYgdHJpZ2dlcihwcmV2LCAnYmVmb3JlaXRlbWhpZGUnLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcihuZXh0LCAnYmVmb3JlaXRlbXNob3cnLCBbdGhpcywgcHJldl0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLnByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBwcm9taXNlID0gdGhpcy5fc2hvdyhwcmV2LCBuZXh0LCBmb3JjZSkudGhlbihmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZGVuJywgW3RoaXMkMV0pO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKG5leHQsICdpdGVtc2hvd24nLCBbdGhpcyQxXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rkb20ud3JpdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvdyhzdGFjay5zaGlmdCgpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RyYW5zaXRpb25lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlcihuZXh0LCAnaXRlbXNob3cnLCBbdGhpc10pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEluZGV4OiBmdW5jdGlvbihpbmRleCQkMSwgcHJldikge1xuICAgICAgICAgICAgICAgIGlmICggaW5kZXgkJDEgPT09IHZvaWQgMCApIGluZGV4JCQxID0gdGhpcy5pbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoIHByZXYgPT09IHZvaWQgMCApIHByZXYgPSB0aGlzLmluZGV4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsYW1wKGdldEluZGV4KGluZGV4JCQxLCB0aGlzLnNsaWRlcywgcHJldiwgdGhpcy5maW5pdGUpLCAwLCB0aGlzLm1heEluZGV4KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFZhbGlkSW5kZXg6IGZ1bmN0aW9uKGluZGV4JCQxLCBwcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2SW5kZXggPT09IHZvaWQgMCApIHByZXZJbmRleCA9IHRoaXMucHJldkluZGV4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW5kZXgoaW5kZXgkJDEsIHByZXZJbmRleCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfc2hvdzogZnVuY3Rpb24ocHJldiwgbmV4dCwgZm9yY2UpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lciA9IHRoaXMuX2dldFRyYW5zaXRpb25lcihcbiAgICAgICAgICAgICAgICAgICAgcHJldixcbiAgICAgICAgICAgICAgICAgICAgbmV4dCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXIsXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IGZvcmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXh0Lm9mZnNldFdpZHRoIDwgNjAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2N1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KScgLyogZWFzZU91dFF1YWQgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnY3ViaWMtYmV6aWVyKDAuMTY1LCAwLjg0LCAwLjQ0LCAxKScgLyogZWFzZU91dFF1YXJ0ICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmVhc2luZ1xuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnRyYW5zaXRpb25PcHRpb25zKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWZvcmNlICYmICFwcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lci50cmFuc2xhdGUoMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLnN0YWNrO1xuICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc2l0aW9uZXJbbGVuZ3RoID4gMSA/ICdmb3J3YXJkJyA6ICdzaG93J10obGVuZ3RoID4gMSA/IE1hdGgubWluKHRoaXMuZHVyYXRpb24sIDc1ICsgNzUgLyAobGVuZ3RoIC0gMSkpIDogdGhpcy5kdXJhdGlvbiwgdGhpcy5wZXJjZW50KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2dldERpc3RhbmNlOiBmdW5jdGlvbihwcmV2LCBuZXh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzLl9nZXRUcmFuc2l0aW9uZXIocHJldiwgcHJldiAhPT0gbmV4dCAmJiBuZXh0KS5nZXREaXN0YW5jZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCwgcHJldiwgbmV4dCkge1xuICAgICAgICAgICAgICAgIGlmICggcHJldiA9PT0gdm9pZCAwICkgcHJldiA9IHRoaXMucHJldkluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gdm9pZCAwICkgbmV4dCA9IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICB2YXIgdHJhbnNpdGlvbmVyID0gdGhpcy5fZ2V0VHJhbnNpdGlvbmVyKHByZXYgIT09IG5leHQgPyBwcmV2IDogZmFsc2UsIG5leHQpO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb25lci50cmFuc2xhdGUocGVyY2VudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb25lcjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9nZXRUcmFuc2l0aW9uZXI6IGZ1bmN0aW9uKHByZXYsIG5leHQsIGRpciwgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmICggcHJldiA9PT0gdm9pZCAwICkgcHJldiA9IHRoaXMucHJldkluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gdm9pZCAwICkgbmV4dCA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBkaXIgPT09IHZvaWQgMCApIGRpciA9IHRoaXMuZGlyIHx8IDE7XG4gICAgICAgICAgICAgICAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0gdGhpcy50cmFuc2l0aW9uT3B0aW9ucztcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdGhpcy5UcmFuc2l0aW9uZXIoXG4gICAgICAgICAgICAgICAgICAgIGlzTnVtYmVyKHByZXYpID8gdGhpcy5zbGlkZXNbcHJldl0gOiBwcmV2LFxuICAgICAgICAgICAgICAgICAgICBpc051bWJlcihuZXh0KSA/IHRoaXMuc2xpZGVzW25leHRdIDogbmV4dCxcbiAgICAgICAgICAgICAgICAgICAgZGlyICogKGlzUnRsID8gLTEgOiAxKSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldERpcmVjdGlvbihpbmRleCQkMSwgcHJldkluZGV4KSB7XG4gICAgICAgIHJldHVybiBpbmRleCQkMSA9PT0gJ25leHQnXG4gICAgICAgICAgICA/IDFcbiAgICAgICAgICAgIDogaW5kZXgkJDEgPT09ICdwcmV2aW91cydcbiAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgOiBpbmRleCQkMSA8IHByZXZJbmRleFxuICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgIDogMTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzcGVlZFVwKHgpIHtcbiAgICAgICAgcmV0dXJuIC41ICogeCArIDMwMDsgLy8gcGFyYWJvbGEgdGhyb3VnaCAoNDAwLDUwMDsgNjAwLDYwMDsgMTgwMCwxMjAwKVxuICAgIH1cblxuICAgIHZhciBTbGlkZXNob3cgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbU2xpZGVyXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhbmltYXRpb246ICdzbGlkZScsXG4gICAgICAgICAgICBjbHNBY3RpdmF0ZWQ6ICd1ay10cmFuc2l0aW9uLWFjdGl2ZScsXG4gICAgICAgICAgICBBbmltYXRpb25zOiBBbmltYXRpb25zLFxuICAgICAgICAgICAgVHJhbnNpdGlvbmVyOiBUcmFuc2l0aW9uZXJcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBhbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuICAgICAgICAgICAgICAgIHZhciBBbmltYXRpb25zJCQxID0gcmVmLkFuaW1hdGlvbnM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYXNzaWduKGFuaW1hdGlvbiBpbiBBbmltYXRpb25zJCQxID8gQW5pbWF0aW9ucyQkMVthbmltYXRpb25dIDogQW5pbWF0aW9ucyQkMS5zbGlkZSwge25hbWU6IGFuaW1hdGlvbn0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbk9wdGlvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7YW5pbWF0aW9uOiB0aGlzLmFuaW1hdGlvbn07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgJ2l0ZW1zaG93IGl0ZW1oaWRlIGl0ZW1zaG93biBpdGVtaGlkZGVuJzogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLiR1cGRhdGUodGFyZ2V0KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpc051bWJlcih0aGlzLnByZXZJbmRleCkgJiYgZmFzdGRvbS5mbHVzaCgpOyAvLyBpT1MgMTArIHdpbGwgaG9ub3IgdGhlIHZpZGVvLnBsYXkgb25seSBpZiBjYWxsZWQgZnJvbSBhIGdlc3R1cmUgaGFuZGxlclxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYmVmb3JlaXRlbXNob3c6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtc2hvd246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGFyZ2V0LCB0aGlzLmNsc0FjdGl2YXRlZCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtaGlkZGVuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRhcmdldCwgdGhpcy5jbHNBY3RpdmUsIHRoaXMuY2xzQWN0aXZhdGVkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIExpZ2h0Ym94UGFuZWwgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ29udGFpbmVyLCBNb2RhbCwgVG9nZ2xhYmxlLCBTbGlkZXNob3ddLFxuXG4gICAgICAgIGZ1bmN0aW9uYWw6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRlbGF5Q29udHJvbHM6IE51bWJlcixcbiAgICAgICAgICAgIHByZWxvYWQ6IE51bWJlcixcbiAgICAgICAgICAgIHZpZGVvQXV0b3BsYXk6IEJvb2xlYW4sXG4gICAgICAgICAgICB0ZW1wbGF0ZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIHByZWxvYWQ6IDEsXG4gICAgICAgICAgICB2aWRlb0F1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgICAgIGRlbGF5Q29udHJvbHM6IDMwMDAsXG4gICAgICAgICAgICBpdGVtczogW10sXG4gICAgICAgICAgICBjbHM6ICd1ay1vcGVuJyxcbiAgICAgICAgICAgIGNsc1BhZ2U6ICd1ay1saWdodGJveC1wYWdlJyxcbiAgICAgICAgICAgIHNlbExpc3Q6ICcudWstbGlnaHRib3gtaXRlbXMnLFxuICAgICAgICAgICAgYXR0ckl0ZW06ICd1ay1saWdodGJveC1pdGVtJyxcbiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLWNsb3NlLWxhcmdlJyxcbiAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICAgICAgICB2ZWxvY2l0eTogMixcbiAgICAgICAgICAgIEFuaW1hdGlvbnM6IEFuaW1hdGlvbnMkMSxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBcIjxkaXYgY2xhc3M9XFxcInVrLWxpZ2h0Ym94IHVrLW92ZXJmbG93LWhpZGRlblxcXCI+IDx1bCBjbGFzcz1cXFwidWstbGlnaHRib3gtaXRlbXNcXFwiPjwvdWw+IDxkaXYgY2xhc3M9XFxcInVrLWxpZ2h0Ym94LXRvb2xiYXIgdWstcG9zaXRpb24tdG9wIHVrLXRleHQtcmlnaHQgdWstdHJhbnNpdGlvbi1zbGlkZS10b3AgdWstdHJhbnNpdGlvbi1vcGFxdWVcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1saWdodGJveC10b29sYmFyLWljb24gdWstY2xvc2UtbGFyZ2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCIgdWstY2xvc2U+PC9idXR0b24+IDwvZGl2PiA8YSBjbGFzcz1cXFwidWstbGlnaHRib3gtYnV0dG9uIHVrLXBvc2l0aW9uLWNlbnRlci1sZWZ0IHVrLXBvc2l0aW9uLW1lZGl1bSB1ay10cmFuc2l0aW9uLWZhZGVcXFwiIGhyZWY9XFxcIiNcXFwiIHVrLXNsaWRlbmF2LXByZXZpb3VzIHVrLWxpZ2h0Ym94LWl0ZW09XFxcInByZXZpb3VzXFxcIj48L2E+IDxhIGNsYXNzPVxcXCJ1ay1saWdodGJveC1idXR0b24gdWstcG9zaXRpb24tY2VudGVyLXJpZ2h0IHVrLXBvc2l0aW9uLW1lZGl1bSB1ay10cmFuc2l0aW9uLWZhZGVcXFwiIGhyZWY9XFxcIiNcXFwiIHVrLXNsaWRlbmF2LW5leHQgdWstbGlnaHRib3gtaXRlbT1cXFwibmV4dFxcXCI+PC9hPiA8ZGl2IGNsYXNzPVxcXCJ1ay1saWdodGJveC10b29sYmFyIHVrLWxpZ2h0Ym94LWNhcHRpb24gdWstcG9zaXRpb24tYm90dG9tIHVrLXRleHQtY2VudGVyIHVrLXRyYW5zaXRpb24tc2xpZGUtYm90dG9tIHVrLXRyYW5zaXRpb24tb3BhcXVlXFxcIj48L2Rpdj4gPC9kaXY+XCJcbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB0aGlzLiRtb3VudChhcHBlbmQodGhpcy5jb250YWluZXIsIHRoaXMudGVtcGxhdGUpKTtcblxuICAgICAgICAgICAgdGhpcy5jYXB0aW9uID0gJCgnLnVrLWxpZ2h0Ym94LWNhcHRpb24nLCB0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoKSB7IHJldHVybiBhcHBlbmQodGhpcyQxLmxpc3QsICc8bGk+PC9saT4nKTsgfSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogKHBvaW50ZXJNb3ZlICsgXCIgXCIgKyBwb2ludGVyRG93biArIFwiIGtleWRvd25cIiksXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiAnc2hvd0NvbnRyb2xzJ1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVzU2VsZWN0b3I7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93bicsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogJ3Nob3dDb250cm9scydcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVDb250cm9scygpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RvcCh0aGlzLnNsaWRlcyk7XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAna2V5dXAnLFxuXG4gICAgICAgICAgICAgICAgZWw6IGRvY3VtZW50LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1RvZ2dsZWQodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUua2V5Q29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygnbmV4dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZWl0ZW1zaG93JyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50Q2F0Y2ggPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZU5vdyh0aGlzLiRlbCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRpb24gPSBBbmltYXRpb25zJDFbJ3NjYWxlJ107XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGUudGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2suc3BsaWNlKDEsIDAsIHRoaXMuaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXNob3cnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpID0gaW5kZXgodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiQxID0gdGhpcy5nZXRJdGVtKGkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2FwdGlvbiA9IHJlZiQxLmNhcHRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuY2FwdGlvbiwgJ2Rpc3BsYXknLCBjYXB0aW9uID8gJycgOiAnbm9uZScpO1xuICAgICAgICAgICAgICAgICAgICBodG1sKHRoaXMuY2FwdGlvbiwgY2FwdGlvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPD0gdGhpcy5wcmVsb2FkOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5sb2FkSXRlbSh0aGlzJDEuZ2V0SW5kZXgoaSArIGopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5sb2FkSXRlbSh0aGlzJDEuZ2V0SW5kZXgoaSAtIGopKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXNob3duJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZlbnRDYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1sb2FkJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKF8sIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgc291cmNlID0gaXRlbS5zb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gaXRlbS50eXBlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWx0ID0gaXRlbS5hbHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtKGl0ZW0sICc8c3BhbiB1ay1zcGlubmVyPjwvc3Bhbj4nKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoZXMkJDE7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdpbWFnZScgfHwgc291cmNlLm1hdGNoKC9cXC4oanAoZSk/Z3xwbmd8Z2lmfHN2ZykoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEltYWdlKHNvdXJjZSkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoaW1nKSB7IHJldHVybiB0aGlzJDEuc2V0SXRlbShpdGVtLCAoXCI8aW1nIHdpZHRoPVxcXCJcIiArIChpbWcud2lkdGgpICsgXCJcXFwiIGhlaWdodD1cXFwiXCIgKyAoaW1nLmhlaWdodCkgKyBcIlxcXCIgc3JjPVxcXCJcIiArIHNvdXJjZSArIFwiXFxcIiBhbHQ9XFxcIlwiICsgKGFsdCA/IGFsdCA6ICcnKSArIFwiXFxcIj5cIikpOyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5zZXRFcnJvcihpdGVtKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmlkZW9cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndmlkZW8nIHx8IHNvdXJjZS5tYXRjaCgvXFwuKG1wNHx3ZWJtfG9ndikoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlbyA9ICQoKFwiPHZpZGVvIGNvbnRyb2xzIHBsYXlzaW5saW5lXCIgKyAoaXRlbS5wb3N0ZXIgPyAoXCIgcG9zdGVyPVxcXCJcIiArIChpdGVtLnBvc3RlcikgKyBcIlxcXCJcIikgOiAnJykgKyBcIiB1ay12aWRlbz1cXFwiXCIgKyAodGhpcy52aWRlb0F1dG9wbGF5KSArIFwiXFxcIj48L3ZpZGVvPlwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKHZpZGVvLCAnc3JjJywgc291cmNlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb24odmlkZW8sICdlcnJvcicsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5zZXRFcnJvcihpdGVtKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbih2aWRlbywgJ2xvYWRlZG1ldGFkYXRhJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIodmlkZW8sIHt3aWR0aDogdmlkZW8udmlkZW9XaWR0aCwgaGVpZ2h0OiB2aWRlby52aWRlb0hlaWdodH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIHZpZGVvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnaWZyYW1lJyB8fCBzb3VyY2UubWF0Y2goL1xcLihodG1sfHBocCkoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SXRlbShpdGVtLCAoXCI8aWZyYW1lIGNsYXNzPVxcXCJ1ay1saWdodGJveC1pZnJhbWVcXFwiIHNyYz1cXFwiXCIgKyBzb3VyY2UgKyBcIlxcXCIgZnJhbWVib3JkZXI9XFxcIjBcXFwiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT5cIikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBZb3VUdWJlXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKG1hdGNoZXMkJDEgPSBzb3VyY2UubWF0Y2goL1xcL1xcLy4qP3lvdXR1YmUoLW5vY29va2llKT9cXC5bYS16XStcXC93YXRjaFxcP3Y9KFteJlxcc10rKS8pIHx8IHNvdXJjZS5tYXRjaCgvKCl5b3V0dVxcLmJlXFwvKC4qKS8pKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBtYXRjaGVzJCQxWzJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNldElmcmFtZSA9IGZ1bmN0aW9uICh3aWR0aCQkMSwgaGVpZ2h0JCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB3aWR0aCQkMSA9PT0gdm9pZCAwICkgd2lkdGgkJDEgPSA2NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBoZWlnaHQkJDEgPT09IHZvaWQgMCApIGhlaWdodCQkMSA9IDQ1MDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzJDEuc2V0SXRlbShpdGVtLCBnZXRJZnJhbWUoKFwiaHR0cHM6Ly93d3cueW91dHViZVwiICsgKG1hdGNoZXMkJDFbMV0gfHwgJycpICsgXCIuY29tL2VtYmVkL1wiICsgaWQpLCB3aWR0aCQkMSwgaGVpZ2h0JCQxLCB0aGlzJDEudmlkZW9BdXRvcGxheSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2UoKFwiaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvXCIgKyBpZCArIFwiL21heHJlc2RlZmF1bHQuanBnXCIpKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBZb3VUdWJlIGRlZmF1bHQgNDA0IHRodW1iLCBmYWxsIGJhY2sgdG8gbG93IHJlc29sdXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoJCQxID09PSAxMjAgJiYgaGVpZ2h0JCQxID09PSA5MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2UoKFwiaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvXCIgKyBpZCArIFwiLzAuanBnXCIpKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0SWZyYW1lKHdpZHRoJCQxLCBoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJZnJhbWUod2lkdGgkJDEsIGhlaWdodCQkMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElmcmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmltZW9cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobWF0Y2hlcyQkMSA9IHNvdXJjZS5tYXRjaCgvKFxcL1xcLy4qPyl2aW1lb1xcLlthLXpdK1xcLyhbMC05XSspLio/LykpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFqYXgoKFwiaHR0cHM6Ly92aW1lby5jb20vYXBpL29lbWJlZC5qc29uP21heHdpZHRoPTE5MjAmdXJsPVwiICsgKGVuY29kZVVSSShzb3VyY2UpKSksIHtyZXNwb25zZVR5cGU6ICdqc29uJywgd2l0aENyZWRlbnRpYWxzOiBmYWxzZX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWZfcmVzcG9uc2UgPSByZWYucmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmX3Jlc3BvbnNlLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZl9yZXNwb25zZS53aWR0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIGdldElmcmFtZSgoXCJodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vXCIgKyAobWF0Y2hlcyQkMVsyXSkpLCB3aWR0aCQkMSwgaGVpZ2h0JCQxLCB0aGlzJDEudmlkZW9BdXRvcGxheSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLnNldEVycm9yKGl0ZW0pOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgbG9hZEl0ZW06IGZ1bmN0aW9uKGluZGV4JCQxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBpbmRleCQkMSA9PT0gdm9pZCAwICkgaW5kZXgkJDEgPSB0aGlzLmluZGV4O1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0SXRlbShpbmRleCQkMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaXRlbWxvYWQnLCBbaXRlbV0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0SXRlbTogZnVuY3Rpb24oaW5kZXgkJDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtc1tpbmRleCQkMV0gfHwge307XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZXRJdGVtOiBmdW5jdGlvbihpdGVtLCBjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgYXNzaWduKGl0ZW0sIHtjb250ZW50OiBjb250ZW50fSk7XG4gICAgICAgICAgICAgICAgdmFyIGVsID0gaHRtbCh0aGlzLnNsaWRlc1t0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSldLCBjb250ZW50KTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaXRlbWxvYWRlZCcsIFt0aGlzLCBlbF0pO1xuICAgICAgICAgICAgICAgIHRoaXMuJHVwZGF0ZShlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZXRFcnJvcjogZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SXRlbShpdGVtLCAnPHNwYW4gdWstaWNvbj1cImljb246IGJvbHQ7IHJhdGlvOiAyXCI+PC9zcGFuPicpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2hvd0NvbnRyb2xzOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNvbnRyb2xzVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHNUaW1lciA9IHNldFRpbWVvdXQodGhpcy5oaWRlQ29udHJvbHMsIHRoaXMuZGVsYXlDb250cm9scyk7XG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWFjdGl2ZScsICd1ay10cmFuc2l0aW9uLWFjdGl2ZScpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlQ29udHJvbHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCAndWstYWN0aXZlJywgJ3VrLXRyYW5zaXRpb24tYWN0aXZlJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldElmcmFtZShzcmMsIHdpZHRoJCQxLCBoZWlnaHQkJDEsIGF1dG9wbGF5KSB7XG4gICAgICAgIHJldHVybiAoXCI8aWZyYW1lIHNyYz1cXFwiXCIgKyBzcmMgKyBcIlxcXCIgd2lkdGg9XFxcIlwiICsgd2lkdGgkJDEgKyBcIlxcXCIgaGVpZ2h0PVxcXCJcIiArIGhlaWdodCQkMSArIFwiXFxcIiBzdHlsZT1cXFwibWF4LXdpZHRoOiAxMDAlOyBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcXCIgZnJhbWVib3JkZXI9XFxcIjBcXFwiIGFsbG93ZnVsbHNjcmVlbiB1ay12aWRlbz1cXFwiYXV0b3BsYXk6IFwiICsgYXV0b3BsYXkgKyBcIlxcXCIgdWstcmVzcG9uc2l2ZT48L2lmcmFtZT5cIik7XG4gICAgfVxuXG4gICAgdmFyIHByb3BzID0gbWVyZ2UoTGlnaHRib3hQYW5lbCwgJ3Byb3BzJyk7XG4gICAgdmFyIGRlZmF1bHRzID0gbWVyZ2UoTGlnaHRib3hQYW5lbCwgJ2RhdGEnKTtcblxuICAgIHZhciBMaWdodGJveCA9IHtcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDIsXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IGFzc2lnbih7dG9nZ2xlOiBTdHJpbmd9LCBwcm9wcyksXG5cbiAgICAgICAgZGF0YTogYXNzaWduKHt0b2dnbGU6ICdhJ30sIE9iamVjdC5rZXlzKHByb3BzKS5yZWR1Y2UoZnVuY3Rpb24gKGRhdGEkJDEsIGtleSkge1xuICAgICAgICAgICAgZGF0YSQkMVtrZXldID0gZGVmYXVsdHNba2V5XTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICB9LCB7fSkpLFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZXM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvZ2dsZSA9IHJlZi50b2dnbGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodG9nZ2xlLCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3koKTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy50b2dnbGUpICsgXCI6bm90KC51ay1kaXNhYmxlZClcIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnQuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coaW5kZXgodGhpcy50b2dnbGVzLCBlLmN1cnJlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICBkYXRhJCQxLnRvZ2dsZXMgPSBkYXRhJCQxLnRvZ2dsZXMgfHwgdGhpcy50b2dnbGVzO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wYW5lbCAmJiB0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJHByb3BzLmFuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uO1xuICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJGVtaXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLnBhbmVsIHx8IGlzRXF1YWxMaXN0JDEoZGF0YSQkMS50b2dnbGVzLCB0aGlzLnRvZ2dsZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRhJCQxLnRvZ2dsZXMgPSB0aGlzLnRvZ2dsZXM7XG4gICAgICAgICAgICB0aGlzLl9kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLl9pbml0KCk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIF9pbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbCA9IHRoaXMucGFuZWwgfHwgdGhpcy4kY3JlYXRlKCdsaWdodGJveFBhbmVsJywgYXNzaWduKHt9LCB0aGlzLiRwcm9wcywge1xuICAgICAgICAgICAgICAgICAgICBpdGVtczogdGhpcy50b2dnbGVzLnJlZHVjZShmdW5jdGlvbiAoaXRlbXMsIGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKFsnaHJlZicsICdjYXB0aW9uJywgJ3R5cGUnLCAncG9zdGVyJywgJ2FsdCddLnJlZHVjZShmdW5jdGlvbiAob2JqLCBhdHRyJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2F0dHIkJDEgPT09ICdocmVmJyA/ICdzb3VyY2UnIDogYXR0ciQkMV0gPSBkYXRhKGVsLCBhdHRyJCQxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwge30pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJGRlc3Ryb3kodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWwgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGluZGV4JCQxKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGFuZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5pdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsLnNob3coaW5kZXgkJDEpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsICYmIHRoaXMucGFuZWwuaGlkZSgpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGlzRXF1YWxMaXN0JDEobGlzdEEsIGxpc3RCKSB7XG4gICAgICAgIHJldHVybiBsaXN0QS5sZW5ndGggPT09IGxpc3RCLmxlbmd0aFxuICAgICAgICAgICAgJiYgbGlzdEEuZXZlcnkoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBlbCA9PT0gbGlzdEJbaV07IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlKG9wdGlvbnMsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGFzc2lnbi5hcHBseShcbiAgICAgICAgICAgIHZvaWQgMCwgWyB7fSBdLmNvbmNhdCggKG9wdGlvbnMubWl4aW5zID8gb3B0aW9ucy5taXhpbnMubWFwKGZ1bmN0aW9uIChtaXhpbikgeyByZXR1cm4gbWVyZ2UobWl4aW4sIHByb3ApOyB9KSA6IFtdKSxcbiAgICAgICAgICAgIFtpc0Z1bmN0aW9uKG9wdGlvbnNbcHJvcF0pID8gb3B0aW9uc1twcm9wXSgpIDogb3B0aW9uc1twcm9wXV0gKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbCQyKFVJa2l0KSB7XG4gICAgICAgIGlmICghVUlraXQubGlnaHRib3hQYW5lbCkge1xuICAgICAgICAgICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveFBhbmVsJywgTGlnaHRib3hQYW5lbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgb2JqO1xuXG4gICAgdmFyIGNvbnRhaW5lcnMgPSB7fTtcblxuICAgIHZhciBOb3RpZmljYXRpb24gPSB7XG5cbiAgICAgICAgZnVuY3Rpb25hbDogdHJ1ZSxcblxuICAgICAgICBhcmdzOiBbJ21lc3NhZ2UnLCAnc3RhdHVzJ10sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgdGltZW91dDogNTAwMCxcbiAgICAgICAgICAgIGdyb3VwOiBudWxsLFxuICAgICAgICAgICAgcG9zOiAndG9wLWNlbnRlcicsXG4gICAgICAgICAgICBjbHNDbG9zZTogJ3VrLW5vdGlmaWNhdGlvbi1jbG9zZScsXG4gICAgICAgICAgICBjbHNNc2c6ICd1ay1ub3RpZmljYXRpb24tbWVzc2FnZSdcbiAgICAgICAgfSxcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDMsXG5cbiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICghY29udGFpbmVyc1t0aGlzLnBvc10pIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXJzW3RoaXMucG9zXSA9IGFwcGVuZCh0aGlzLiRjb250YWluZXIsIChcIjxkaXYgY2xhc3M9XFxcInVrLW5vdGlmaWNhdGlvbiB1ay1ub3RpZmljYXRpb24tXCIgKyAodGhpcy5wb3MpICsgXCJcXFwiPjwvZGl2PlwiKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBjc3MoY29udGFpbmVyc1t0aGlzLnBvc10sICdkaXNwbGF5JywgJ2Jsb2NrJyk7XG5cbiAgICAgICAgICAgIHRoaXMuJG1vdW50KGFwcGVuZChjb250YWluZXIsXG4gICAgICAgICAgICAgICAgKFwiPGRpdiBjbGFzcz1cXFwiXCIgKyAodGhpcy5jbHNNc2cpICsgKHRoaXMuc3RhdHVzID8gKFwiIFwiICsgKHRoaXMuY2xzTXNnKSArIFwiLVwiICsgKHRoaXMuc3RhdHVzKSkgOiAnJykgKyBcIlxcXCI+IDxhIGhyZWY9XFxcIiNcXFwiIGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc0Nsb3NlKSArIFwiXFxcIiBkYXRhLXVrLWNsb3NlPjwvYT4gPGRpdj5cIiArICh0aGlzLm1lc3NhZ2UpICsgXCI8L2Rpdj4gPC9kaXY+XCIpXG4gICAgICAgICAgICApKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIHJlYWR5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciBtYXJnaW5Cb3R0b20gPSB0b0Zsb2F0KGNzcyh0aGlzLiRlbCwgJ21hcmdpbkJvdHRvbScpKTtcbiAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7b3BhY2l0eTogMCwgbWFyZ2luVG9wOiAtdGhpcy4kZWwub2Zmc2V0SGVpZ2h0LCBtYXJnaW5Cb3R0b206IDB9KSxcbiAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSwgbWFyZ2luVG9wOiAwLCBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS50aW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS50aW1lciA9IHNldFRpbWVvdXQodGhpcyQxLmNsb3NlLCB0aGlzJDEudGltZW91dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6ICggb2JqID0ge1xuXG4gICAgICAgICAgICBjbGljazogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmPVwiI1wiXScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sIG9ialtwb2ludGVyRW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvYmpbcG9pbnRlckxlYXZlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuY2xvc2UsIHRoaXMudGltZW91dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgb2JqICksXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oaW1tZWRpYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciByZW1vdmVGbiA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMkMS4kZWwsICdjbG9zZScsIFt0aGlzJDFdKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKHRoaXMkMS4kZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29udGFpbmVyc1t0aGlzJDEucG9zXS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhjb250YWluZXJzW3RoaXMkMS5wb3NdLCAnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGltbWVkaWF0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVGbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQodGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IC10aGlzLiRlbC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IDBcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbihyZW1vdmVGbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsJDMoVUlraXQpIHtcbiAgICAgICAgVUlraXQubm90aWZpY2F0aW9uLmNsb3NlQWxsID0gZnVuY3Rpb24gKGdyb3VwLCBpbW1lZGlhdGUpIHtcbiAgICAgICAgICAgIGFwcGx5KGRvY3VtZW50LmJvZHksIGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIHZhciBub3RpZmljYXRpb24gPSBVSWtpdC5nZXRDb21wb25lbnQoZWwsICdub3RpZmljYXRpb24nKTtcbiAgICAgICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uICYmICghZ3JvdXAgfHwgZ3JvdXAgPT09IG5vdGlmaWNhdGlvbi5ncm91cCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmNsb3NlKGltbWVkaWF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHByb3BzJDEgPSBbJ3gnLCAneScsICdiZ3gnLCAnYmd5JywgJ3JvdGF0ZScsICdzY2FsZScsICdjb2xvcicsICdiYWNrZ3JvdW5kQ29sb3InLCAnYm9yZGVyQ29sb3InLCAnb3BhY2l0eScsICdibHVyJywgJ2h1ZScsICdncmF5c2NhbGUnLCAnaW52ZXJ0JywgJ3NhdHVyYXRlJywgJ3NlcGlhJywgJ2ZvcGFjaXR5J107XG5cbiAgICB2YXIgUGFyYWxsYXggPSB7XG5cbiAgICAgICAgcHJvcHM6IHByb3BzJDEucmVkdWNlKGZ1bmN0aW9uIChwcm9wcywgcHJvcCkge1xuICAgICAgICAgICAgcHJvcHNbcHJvcF0gPSAnbGlzdCc7XG4gICAgICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG1lZGlhOiAnbWVkaWEnXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGRhdGE6IHByb3BzJDEucmVkdWNlKGZ1bmN0aW9uIChkYXRhJCQxLCBwcm9wKSB7XG4gICAgICAgICAgICBkYXRhJCQxW3Byb3BdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG1lZGlhOiBmYWxzZVxuICAgICAgICB9KSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBwcm9wczogZnVuY3Rpb24ocHJvcGVydGllcywgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcyQxLnJlZHVjZShmdW5jdGlvbiAocHJvcHMsIHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQocHJvcGVydGllc1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0NvbG9yID0gcHJvcC5tYXRjaCgvY29sb3IvaSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0Nzc1Byb3AgPSBpc0NvbG9yIHx8IHByb3AgPT09ICdvcGFjaXR5JztcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcG9zLCBiZ1BvcywgZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXBzID0gcHJvcGVydGllc1twcm9wXS5zbGljZSgwKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDc3NQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoJGVsLCBwcm9wLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RlcHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMudW5zaGlmdCgocHJvcCA9PT0gJ3NjYWxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNDc3NQcm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY3NzKCRlbCwgcHJvcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwKSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciB1bml0ID0gaW5jbHVkZXMoc3RlcHMuam9pbignJyksICclJykgPyAnJScgOiAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbG9yKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSAkZWwuc3R5bGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSByZWYuY29sb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gcGFyc2VDb2xvcigkZWwsIHN0ZXApOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRlbC5zdHlsZS5jb2xvciA9IGNvbG9yO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzID0gc3RlcHMubWFwKHRvRmxvYXQpO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcC5tYXRjaCgvXmJnLykpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKCRlbCwgKFwiYmFja2dyb3VuZC1wb3NpdGlvbi1cIiArIChwcm9wWzJdKSksICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJnUG9zID0gY3NzKCRlbCwgJ2JhY2tncm91bmRQb3NpdGlvbicpLnNwbGl0KCcgJylbcHJvcFsyXSA9PT0gJ3gnID8gMCA6IDFdOyAvLyBJRSAxMSBjYW4ndCByZWFkIGJhY2tncm91bmQtcG9zaXRpb24tW3h8eV1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5jb3ZlcnMpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaW4gPSBNYXRoLm1pbi5hcHBseShNYXRoLCBzdGVwcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1heCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIHN0ZXBzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZG93biA9IHN0ZXBzLmluZGV4T2YobWluKSA8IHN0ZXBzLmluZGV4T2YobWF4KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBtYXggLSBtaW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gc3RlcCAtIChkb3duID8gbWluIDogbWF4KTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gKGRvd24gPyAtZGlmZiA6IDApICsgXCJweFwiO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gYmdQb3M7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHByb3BzW3Byb3BdID0ge3N0ZXBzOiBzdGVwcywgdW5pdDogdW5pdCwgcG9zOiBwb3MsIGJnUG9zOiBiZ1BvcywgZGlmZjogZGlmZn07XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuXG4gICAgICAgICAgICAgICAgfSwge30pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBiZ1Byb3BzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiBbJ2JneCcsICdiZ3knXS5maWx0ZXIoZnVuY3Rpb24gKGJnKSB7IHJldHVybiBiZyBpbiB0aGlzJDEucHJvcHM7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY292ZXJzOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY292ZXJzKCRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ltYWdlO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5hY3RpdmUgPSAhdGhpcy5tZWRpYSB8fCB3aW5kb3cubWF0Y2hNZWRpYSh0aGlzLm1lZGlhKS5tYXRjaGVzO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhJCQxLmltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmltYWdlLmRpbUVsID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLiRlbC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuJGVsLm9mZnNldEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICgnaW1hZ2UnIGluIGRhdGEkJDEgfHwgIXRoaXMuY292ZXJzIHx8ICF0aGlzLmJnUHJvcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgc3JjID0gY3NzKHRoaXMuJGVsLCAnYmFja2dyb3VuZEltYWdlJykucmVwbGFjZSgvXm5vbmV8dXJsXFwoW1wiJ10/KC4rPylbXCInXT9cXCkkLywgJyQxJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuaW1hZ2UgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBnZXRJbWFnZShzcmMpLnRoZW4oZnVuY3Rpb24gKGltZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5pbWFnZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaW1nLm5hdHVyYWxXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGltZy5uYXR1cmFsSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGltYWdlID0gcmVmLmltYWdlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaW1hZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtiYWNrZ3JvdW5kU2l6ZTogJycsIGJhY2tncm91bmRSZXBlYXQ6ICcnfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGltRWwgPSBpbWFnZS5kaW1FbDtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGltID0gRGltZW5zaW9ucy5jb3ZlcihpbWFnZSwgZGltRWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmdQcm9wcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzJDEucHJvcHNbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IHJlZi5kaWZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJnUG9zID0gcmVmLmJnUG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXBzID0gcmVmLnN0ZXBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHIkJDEgPSBwcm9wID09PSAnYmd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcGFuID0gZGltW2F0dHIkJDFdIC0gZGltRWxbYXR0ciQkMV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYmdQb3MubWF0Y2goLyUkfDBweC8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BhbiA8IGRpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaW1FbFthdHRyJCQxXSA9IGRpbVthdHRyJCQxXSArIGRpZmYgLSBzcGFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzcGFuID4gZGlmZikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJnUG9zRmxvYXQgPSBwYXJzZUZsb2F0KGJnUG9zKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiZ1Bvc0Zsb2F0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wcm9wc1twcm9wXS5zdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gc3RlcCAtIChzcGFuIC0gZGlmZikgLyAoMTAwIC8gYmdQb3NGbG9hdCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZGltID0gRGltZW5zaW9ucy5jb3ZlcihpbWFnZSwgZGltRWwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRTaXplOiAoKGRpbS53aWR0aCkgKyBcInB4IFwiICsgKGRpbS5oZWlnaHQpICsgXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRSZXBlYXQ6ICduby1yZXBlYXQnXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgZWFjaCh0aGlzLmdldENzcygwKSwgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGNzcyh0aGlzJDEuJGVsLCBwcm9wLCAnJyk7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0Q3NzOiBmdW5jdGlvbihwZXJjZW50KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHMgPSByZWYucHJvcHM7XG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wcykucmVkdWNlKGZ1bmN0aW9uIChjc3MkJDEsIHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gcHJvcHNbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGVwcyA9IHJlZi5zdGVwcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVuaXQgPSByZWYudW5pdDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlZi5wb3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGdldFZhbHVlKHN0ZXBzLCBwZXJjZW50KTtcblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhbnNmb3Jtc1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd5JzpcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IFsneCcsICd5J10ubWFwKGZ1bmN0aW9uIChkaXIpIHsgcmV0dXJuIHByb3AgPT09IGRpclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHZhbHVlICsgdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzW2Rpcl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0VmFsdWUocHJvcHNbZGlyXS5zdGVwcywgcGVyY2VudCkgKyBwcm9wc1tkaXJdLnVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMDsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB4ID0gcmVmJDFbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciB5ID0gcmVmJDFbMV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gY3NzJCQxLnRyYW5zZm9ybSArPSBcIiB0cmFuc2xhdGUzZChcIiArIHggKyBcIiwgXCIgKyB5ICsgXCIsIDApXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb3RhdGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS50cmFuc2Zvcm0gKz0gXCIgcm90YXRlKFwiICsgdmFsdWUgKyBcImRlZylcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NjYWxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEudHJhbnNmb3JtICs9IFwiIHNjYWxlKFwiICsgdmFsdWUgKyBcIilcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmcgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JneSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiZ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMVsoXCJiYWNrZ3JvdW5kLXBvc2l0aW9uLVwiICsgKHByb3BbMl0pKV0gPSBcImNhbGMoXCIgKyBwb3MgKyBcIiArIFwiICsgKHZhbHVlICsgdW5pdCkgKyBcIilcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbG9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JhY2tncm91bmRDb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdib3JkZXJDb2xvcic6XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmJDIgPSBnZXRTdGVwKHN0ZXBzLCBwZXJjZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gcmVmJDJbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbmQgPSByZWYkMlsxXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSByZWYkMlsyXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMVtwcm9wXSA9IFwicmdiYShcIiArIChzdGFydC5tYXAoZnVuY3Rpb24gKHZhbHVlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICsgcCAqIChlbmRbaV0gLSB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gMyA/IHRvRmxvYXQodmFsdWUpIDogcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuam9pbignLCcpKSArIFwiKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDU1MgRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibHVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEuZmlsdGVyICs9IFwiIGJsdXIoXCIgKyB2YWx1ZSArIFwicHgpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdodWUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS5maWx0ZXIgKz0gXCIgaHVlLXJvdGF0ZShcIiArIHZhbHVlICsgXCJkZWcpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb3BhY2l0eSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxLmZpbHRlciArPSBcIiBvcGFjaXR5KFwiICsgdmFsdWUgKyBcIiUpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmF5c2NhbGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW52ZXJ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NhdHVyYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlcGlhJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEuZmlsdGVyICs9IFwiIFwiICsgcHJvcCArIFwiKFwiICsgdmFsdWUgKyBcIiUpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3NzJCQxO1xuXG4gICAgICAgICAgICAgICAgfSwge3RyYW5zZm9ybTogJycsIGZpbHRlcjogJyd9KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwYXJzZUNvbG9yKGVsLCBjb2xvcikge1xuICAgICAgICByZXR1cm4gY3NzKGNzcyhlbCwgJ2NvbG9yJywgY29sb3IpLCAnY29sb3InKS5zcGxpdCgvWygpLF0vZykuc2xpY2UoMSwgLTEpLmNvbmNhdCgxKS5zbGljZSgwLCA0KS5tYXAoZnVuY3Rpb24gKG4pIHsgcmV0dXJuIHRvRmxvYXQobik7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFN0ZXAoc3RlcHMsIHBlcmNlbnQpIHtcbiAgICAgICAgdmFyIGNvdW50ID0gc3RlcHMubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIGluZGV4JCQxID0gTWF0aC5taW4oTWF0aC5mbG9vcihjb3VudCAqIHBlcmNlbnQpLCBjb3VudCAtIDEpO1xuICAgICAgICB2YXIgc3RlcCA9IHN0ZXBzLnNsaWNlKGluZGV4JCQxLCBpbmRleCQkMSArIDIpO1xuXG4gICAgICAgIHN0ZXAucHVzaChwZXJjZW50ID09PSAxID8gMSA6IHBlcmNlbnQgJSAoMSAvIGNvdW50KSAqIGNvdW50KTtcblxuICAgICAgICByZXR1cm4gc3RlcDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRWYWx1ZShzdGVwcywgcGVyY2VudCkge1xuICAgICAgICB2YXIgcmVmID0gZ2V0U3RlcChzdGVwcywgcGVyY2VudCk7XG4gICAgICAgIHZhciBzdGFydCA9IHJlZlswXTtcbiAgICAgICAgdmFyIGVuZCA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHAgPSByZWZbMl07XG4gICAgICAgIHJldHVybiAoaXNOdW1iZXIoc3RhcnQpXG4gICAgICAgICAgICAgICAgPyBzdGFydCArIE1hdGguYWJzKHN0YXJ0IC0gZW5kKSAqIHAgKiAoc3RhcnQgPCBlbmQgPyAxIDogLTEpXG4gICAgICAgICAgICAgICAgOiArZW5kXG4gICAgICAgICkudG9GaXhlZCgyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb3ZlcnMoZWwpIHtcbiAgICAgICAgdmFyIHJlZiA9IGVsLnN0eWxlO1xuICAgICAgICB2YXIgYmFja2dyb3VuZFNpemUgPSByZWYuYmFja2dyb3VuZFNpemU7XG4gICAgICAgIHZhciBjb3ZlcnMgPSBjc3MoY3NzKGVsLCAnYmFja2dyb3VuZFNpemUnLCAnJyksICdiYWNrZ3JvdW5kU2l6ZScpID09PSAnY292ZXInO1xuICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9IGJhY2tncm91bmRTaXplO1xuICAgICAgICByZXR1cm4gY292ZXJzO1xuICAgIH1cblxuICAgIHZhciBQYXJhbGxheCQxID0ge1xuXG4gICAgICAgIG1peGluczogW1BhcmFsbGF4XSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBTdHJpbmcsXG4gICAgICAgICAgICB2aWV3cG9ydDogTnVtYmVyLFxuICAgICAgICAgICAgZWFzaW5nOiBOdW1iZXIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgICAgIHZpZXdwb3J0OiAxLFxuICAgICAgICAgICAgZWFzaW5nOiAxLFxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQgJiYgcXVlcnkodGFyZ2V0LCAkZWwpIHx8ICRlbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcmNlbnQgPSByZWYucGVyY2VudDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldjogcGVyY2VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IGVhc2UkMShzY3JvbGxlZE92ZXIodGhpcy50YXJnZXQpIC8gKHRoaXMudmlld3BvcnQgfHwgMSksIHRoaXMuZWFzaW5nKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmLCByZWYkMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHJlZi5wcmV2O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZi5wZXJjZW50O1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYkMS50eXBlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgIT09ICdzY3JvbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYgIT09IHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5nZXRDc3MocGVyY2VudCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVhc2UkMShwZXJjZW50LCBlYXNpbmcpIHtcbiAgICAgICAgcmV0dXJuIGNsYW1wKHBlcmNlbnQgKiAoMSAtIChlYXNpbmcgLSBlYXNpbmcgKiBwZXJjZW50KSkpO1xuICAgIH1cblxuICAgIHZhciBTbGlkZXJSZWFjdGl2ZSA9IHtcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCB8fCB0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSB0aGlzLmdldFZhbGlkSW5kZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSwgdGhpcy5jbHNBY3RpdmF0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coaW5kZXgkJDEpO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gVHJhbnNpdGlvbmVyJDEgKHByZXYsIG5leHQsIGRpciwgcmVmKSB7XG4gICAgICAgIHZhciBjZW50ZXIgPSByZWYuY2VudGVyO1xuICAgICAgICB2YXIgZWFzaW5nID0gcmVmLmVhc2luZztcbiAgICAgICAgdmFyIGxpc3QgPSByZWYubGlzdDtcblxuXG4gICAgICAgIHZhciBkZWZlcnJlZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIHZhciBmcm9tID0gcHJldlxuICAgICAgICAgICAgPyBnZXRMZWZ0KHByZXYsIGxpc3QsIGNlbnRlcilcbiAgICAgICAgICAgIDogZ2V0TGVmdChuZXh0LCBsaXN0LCBjZW50ZXIpICsgbmV4dC5vZmZzZXRXaWR0aCAqIGRpcjtcbiAgICAgICAgdmFyIHRvID0gbmV4dFxuICAgICAgICAgICAgPyBnZXRMZWZ0KG5leHQsIGxpc3QsIGNlbnRlcilcbiAgICAgICAgICAgIDogZnJvbSArIHByZXYub2Zmc2V0V2lkdGggKiBkaXIgKiAoaXNSdGwgPyAtMSA6IDEpO1xuXG4gICAgICAgIHJldHVybiB7XG5cbiAgICAgICAgICAgIGRpcjogZGlyLFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCwgbGluZWFyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBwZXJjZW50ID09PSB2b2lkIDAgKSBwZXJjZW50ID0gMDtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IGxpbmVhciA/ICdsaW5lYXInIDogZWFzaW5nO1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IE1hdGgucm91bmQoZHVyYXRpb24gKiBjbGFtcChwZXJjZW50LCAtMSwgMSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUocGVyY2VudCk7XG5cbiAgICAgICAgICAgICAgICBwcmV2ICYmIHRoaXMudXBkYXRlVHJhbnNsYXRlcygpO1xuICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBwcmV2ID8gcGVyY2VudCA6IGNsYW1wKHBlcmNlbnQsIDAsIDEpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUkMSh0aGlzLmdldEl0ZW1JbigpLCAnaXRlbWluJywge3BlcmNlbnQ6IHBlcmNlbnQsIGR1cmF0aW9uOiBkdXJhdGlvbiwgdGltaW5nOiB0aW1pbmcsIGRpcjogZGlyfSk7XG4gICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyVXBkYXRlJDEodGhpcy5nZXRJdGVtSW4odHJ1ZSksICdpdGVtb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkdXJhdGlvbjogZHVyYXRpb24sIHRpbWluZzogdGltaW5nLCBkaXI6IGRpcn0pO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvblxuICAgICAgICAgICAgICAgICAgICAuc3RhcnQobGlzdCwge3RyYW5zZm9ybTogdHJhbnNsYXRlKC10byAqIChpc1J0bCA/IC0xIDogMSksICdweCcpfSwgZHVyYXRpb24sIHRpbWluZylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZGVmZXJyZWQucmVzb2x2ZSwgbm9vcCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRyYW5zaXRpb24uc3RvcChsaXN0KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwobGlzdCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY3NzKGxpc3QsICd0cmFuc2Zvcm0nLCAnJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmb3J3YXJkOiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCkge1xuICAgICAgICAgICAgICAgIGlmICggcGVyY2VudCA9PT0gdm9pZCAwICkgcGVyY2VudCA9IHRoaXMucGVyY2VudCgpO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwobGlzdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhkdXJhdGlvbiwgcGVyY2VudCwgdHJ1ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcblxuICAgICAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IHRoaXMuZ2V0RGlzdGFuY2UoKSAqIGRpciAqIChpc1J0bCA/IC0xIDogMSk7XG5cbiAgICAgICAgICAgICAgICBjc3MobGlzdCwgJ3RyYW5zZm9ybScsIHRyYW5zbGF0ZShjbGFtcChcbiAgICAgICAgICAgICAgICAgICAgLXRvICsgKGRpc3RhbmNlIC0gZGlzdGFuY2UgKiBwZXJjZW50KSxcbiAgICAgICAgICAgICAgICAgICAgLWdldFdpZHRoKGxpc3QpLFxuICAgICAgICAgICAgICAgICAgICBsaXN0Lm9mZnNldFdpZHRoXG4gICAgICAgICAgICAgICAgKSAqIChpc1J0bCA/IC0xIDogMSksICdweCcpKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHJhbnNsYXRlcygpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudCA9IGNsYW1wKHBlcmNlbnQsIC0xLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHRoaXMuZ2V0SXRlbUluKCksICdpdGVtdHJhbnNsYXRlaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHRoaXMuZ2V0SXRlbUluKHRydWUpLCAnaXRlbXRyYW5zbGF0ZW91dCcsIHtwZXJjZW50OiAxIC0gcGVyY2VudCwgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicygoY3NzKGxpc3QsICd0cmFuc2Zvcm0nKS5zcGxpdCgnLCcpWzRdICogKGlzUnRsID8gLTEgOiAxKSArIGZyb20pIC8gKHRvIC0gZnJvbSkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0RGlzdGFuY2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh0byAtIGZyb20pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0SXRlbUluOiBmdW5jdGlvbihvdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIG91dCA9PT0gdm9pZCAwICkgb3V0ID0gZmFsc2U7XG5cblxuICAgICAgICAgICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy5nZXRBY3RpdmVzKCk7XG4gICAgICAgICAgICAgICAgdmFyIGFsbCA9IHNvcnRCeShzbGlkZXMobGlzdCksICdvZmZzZXRMZWZ0Jyk7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSBpbmRleChhbGwsIGFjdGl2ZXNbZGlyICogKG91dCA/IC0xIDogMSkgPiAwID8gYWN0aXZlcy5sZW5ndGggLSAxIDogMF0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIH5pICYmIGFsbFtpICsgKHByZXYgJiYgIW91dCA/IGRpciA6IDApXTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0QWN0aXZlczogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IGdldExlZnQocHJldiB8fCBuZXh0LCBsaXN0LCBjZW50ZXIpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNvcnRCeShzbGlkZXMobGlzdCkuZmlsdGVyKGZ1bmN0aW9uIChzbGlkZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVMZWZ0ID0gZ2V0RWxMZWZ0KHNsaWRlLCBsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNsaWRlTGVmdCA+PSBsZWZ0ICYmIHNsaWRlTGVmdCArIHNsaWRlLm9mZnNldFdpZHRoIDw9IGxpc3Qub2Zmc2V0V2lkdGggKyBsZWZ0O1xuICAgICAgICAgICAgICAgIH0pLCAnb2Zmc2V0TGVmdCcpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGVUcmFuc2xhdGVzOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy5nZXRBY3RpdmVzKCk7XG5cbiAgICAgICAgICAgICAgICBzbGlkZXMobGlzdCkuZm9yRWFjaChmdW5jdGlvbiAoc2xpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzQWN0aXZlID0gaW5jbHVkZXMoYWN0aXZlcywgc2xpZGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUkMShzbGlkZSwgKFwiaXRlbXRyYW5zbGF0ZVwiICsgKGlzQWN0aXZlID8gJ2luJyA6ICdvdXQnKSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IGlzQWN0aXZlID8gMSA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXI6IHNsaWRlLm9mZnNldExlZnQgPD0gbmV4dC5vZmZzZXRMZWZ0ID8gMSA6IC0xXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRMZWZ0KGVsLCBsaXN0LCBjZW50ZXIpIHtcblxuICAgICAgICB2YXIgbGVmdCA9IGdldEVsTGVmdChlbCwgbGlzdCk7XG5cbiAgICAgICAgcmV0dXJuIGNlbnRlclxuICAgICAgICAgICAgPyBsZWZ0IC0gY2VudGVyRWwoZWwsIGxpc3QpXG4gICAgICAgICAgICA6IE1hdGgubWluKGxlZnQsIGdldE1heChsaXN0KSk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRNYXgobGlzdCkge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgZ2V0V2lkdGgobGlzdCkgLSBsaXN0Lm9mZnNldFdpZHRoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXaWR0aChsaXN0KSB7XG4gICAgICAgIHJldHVybiBzbGlkZXMobGlzdCkucmVkdWNlKGZ1bmN0aW9uIChyaWdodCwgZWwpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoICsgcmlnaHQ7IH0sIDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE1heFdpZHRoKGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIHNsaWRlcyhsaXN0KS5yZWR1Y2UoZnVuY3Rpb24gKHJpZ2h0LCBlbCkgeyByZXR1cm4gTWF0aC5tYXgocmlnaHQsIGVsLm9mZnNldFdpZHRoKTsgfSwgMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2VudGVyRWwoZWwsIGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIGxpc3Qub2Zmc2V0V2lkdGggLyAyIC0gZWwub2Zmc2V0V2lkdGggLyAyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEVsTGVmdChlbCwgbGlzdCkge1xuICAgICAgICByZXR1cm4gKGVsLm9mZnNldExlZnQgKyAoaXNSdGwgPyBlbC5vZmZzZXRXaWR0aCAtIGxpc3Qub2Zmc2V0V2lkdGggOiAwKSkgKiAoaXNSdGwgPyAtMSA6IDEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyaWdnZXJVcGRhdGUkMShlbCwgdHlwZSwgZGF0YSQkMSkge1xuICAgICAgICB0cmlnZ2VyKGVsLCBjcmVhdGVFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UsIGRhdGEkJDEpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzbGlkZXMobGlzdCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhsaXN0LmNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyJDEgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFNsaWRlciwgU2xpZGVyUmVhY3RpdmVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjZW50ZXI6IEJvb2xlYW4sXG4gICAgICAgICAgICBzZXRzOiBCb29sZWFuLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNlbnRlcjogZmFsc2UsXG4gICAgICAgICAgICBzZXRzOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstc2xpZGVyLWl0ZW0nLFxuICAgICAgICAgICAgc2VsTGlzdDogJy51ay1zbGlkZXItaXRlbXMnLFxuICAgICAgICAgICAgc2VsTmF2OiAnLnVrLXNsaWRlci1uYXYnLFxuICAgICAgICAgICAgY2xzQ29udGFpbmVyOiAndWstc2xpZGVyLWNvbnRhaW5lcicsXG4gICAgICAgICAgICBUcmFuc2l0aW9uZXI6IFRyYW5zaXRpb25lciQxXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgYXZnV2lkdGg6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRXaWR0aCh0aGlzLmxpc3QpIC8gdGhpcy5sZW5ndGg7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmaW5pdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBmaW5pdGUgPSByZWYuZmluaXRlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbml0ZSB8fCBnZXRXaWR0aCh0aGlzLmxpc3QpIDwgdGhpcy5saXN0Lm9mZnNldFdpZHRoICsgZ2V0TWF4V2lkdGgodGhpcy5saXN0KSArIHRoaXMuY2VudGVyO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbWF4SW5kZXg6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmluaXRlIHx8IHRoaXMuY2VudGVyICYmICF0aGlzLnNldHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jZW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0c1t0aGlzLnNldHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuc2xpZGVzLCAnb3JkZXInLCAnJyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gZ2V0TWF4KHRoaXMubGlzdCk7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldEVsTGVmdCh0aGlzJDEubGlzdC5jaGlsZHJlbltpXSwgdGhpcyQxLmxpc3QpIDwgbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oaSArIDEsIHRoaXMkMS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2V0czogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHNldHMgPSByZWYuc2V0cztcblxuXG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gdGhpcy5saXN0Lm9mZnNldFdpZHRoIC8gKHRoaXMuY2VudGVyID8gMiA6IDEpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGxlZnQgPSAwO1xuICAgICAgICAgICAgICAgIHZhciBsZWZ0Q2VudGVyID0gd2lkdGgkJDE7XG4gICAgICAgICAgICAgICAgdmFyIHNsaWRlTGVmdCA9IDA7XG5cbiAgICAgICAgICAgICAgICBzZXRzID0gc2V0cyAmJiB0aGlzLnNsaWRlcy5yZWR1Y2UoZnVuY3Rpb24gKHNldHMsIHNsaWRlLCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChzbGlkZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZVdpZHRoID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVSaWdodCA9IHNsaWRlTGVmdCArIHNsaWRlV2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNsaWRlUmlnaHQgPiBsZWZ0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcyQxLmNlbnRlciAmJiBpID4gdGhpcyQxLm1heEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMkMS5tYXhJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyhzZXRzLCBpKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNtcCA9IHRoaXMkMS5zbGlkZXNbaSArIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuY2VudGVyICYmIGNtcCAmJiBzbGlkZVdpZHRoIDwgbGVmdENlbnRlciAtIG9mZnNldChjbXApLndpZHRoIC8gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0Q2VudGVyIC09IHNsaWRlV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdENlbnRlciA9IHdpZHRoJCQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBzbGlkZUxlZnQgKyB3aWR0aCQkMSArICh0aGlzJDEuY2VudGVyID8gc2xpZGVXaWR0aCAvIDIgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlTGVmdCArPSBzbGlkZVdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRzO1xuXG4gICAgICAgICAgICAgICAgfSwgW10pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldHMgJiYgc2V0cy5sZW5ndGggJiYgc2V0cztcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbk9wdGlvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNlbnRlcjogdGhpcy5jZW50ZXIsXG4gICAgICAgICAgICAgICAgICAgIGxpc3Q6IHRoaXMubGlzdFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzQ29udGFpbmVyLCAhJCgoXCIuXCIgKyAodGhpcy5jbHNDb250YWluZXIpKSwgdGhpcy4kZWwpKTtcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAkJCgoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIiksIHRoaXMuJGVsKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSBkYXRhKGVsLCB0aGlzJDEuYXR0ckl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEubWF4SW5kZXggJiYgdG9nZ2xlQ2xhc3MoZWwsICd1ay1oaWRkZW4nLCBpc051bWVyaWMoaW5kZXgkJDEpICYmICh0aGlzJDEuc2V0cyAmJiAhaW5jbHVkZXModGhpcyQxLnNldHMsIHRvRmxvYXQoaW5kZXgkJDEpKSB8fCBpbmRleCQkMSA+IHRoaXMkMS5tYXhJbmRleCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiB7XG5cbiAgICAgICAgICAgIGJlZm9yZWl0ZW1zaG93OiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnZ2luZyAmJiB0aGlzLnNldHMgJiYgdGhpcy5zdGFjay5sZW5ndGggPCAyICYmICFpbmNsdWRlcyh0aGlzLnNldHMsIHRoaXMuaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmdldFZhbGlkSW5kZXgoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4XG4gICAgICAgICAgICAgICAgICAgIC0gdGhpcy5wcmV2SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgKyAodGhpcy5kaXIgPiAwICYmIHRoaXMuaW5kZXggPCB0aGlzLnByZXZJbmRleCB8fCB0aGlzLmRpciA8IDAgJiYgdGhpcy5pbmRleCA+IHRoaXMucHJldkluZGV4ID8gKHRoaXMubWF4SW5kZXggKyAxKSAqIHRoaXMuZGlyIDogMClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdnaW5nICYmIGRpZmYgPiAxKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWZmOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zdGFjay5zcGxpY2UoMSwgMCwgdGhpcyQxLmRpciA+IDAgPyAnbmV4dCcgOiAncHJldmlvdXMnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZHVyYXRpb24gPSBzcGVlZFVwKHRoaXMuYXZnV2lkdGggLyB0aGlzLnZlbG9jaXR5KVxuICAgICAgICAgICAgICAgICAgICAqICgoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciA8IDAgfHwgIXRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zbGlkZXNbdGhpcy5pbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XVxuICAgICAgICAgICAgICAgICAgICApLm9mZnNldFdpZHRoIC8gdGhpcy5hdmdXaWR0aCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXIoKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXRlbXNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICFpc1VuZGVmaW5lZCh0aGlzLnByZXZJbmRleCkgJiYgYWRkQ2xhc3ModGhpcy5fZ2V0VHJhbnNpdGlvbmVyKCkuZ2V0SXRlbUluKCksIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zaG93bjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlcyA9IHRoaXMuX2dldFRyYW5zaXRpb25lcih0aGlzLmluZGV4KS5nZXRBY3RpdmVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoc2xpZGUpIHsgcmV0dXJuIHRvZ2dsZUNsYXNzKHNsaWRlLCB0aGlzJDEuY2xzQWN0aXZlLCBpbmNsdWRlcyhhY3RpdmVzLCBzbGlkZSkpOyB9KTtcbiAgICAgICAgICAgICAgICAoIXRoaXMuc2V0cyB8fCBpbmNsdWRlcyh0aGlzLnNldHMsIHRvRmxvYXQodGhpcy5pbmRleCkpKSAmJiB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSkgeyByZXR1cm4gdG9nZ2xlQ2xhc3Moc2xpZGUsIHRoaXMkMS5jbHNBY3RpdmF0ZWQsIGluY2x1ZGVzKGFjdGl2ZXMsIHNsaWRlKSk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICByZW9yZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuc2xpZGVzLCAnb3JkZXInLCAnJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maW5pdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBpbmRleCQkMSA9IHRoaXMuZGlyID4gMCAmJiB0aGlzLnNsaWRlc1t0aGlzLnByZXZJbmRleF0gPyB0aGlzLnByZXZJbmRleCA6IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSwgaSkgeyByZXR1cm4gY3NzKHNsaWRlLCAnb3JkZXInLCB0aGlzJDEuZGlyID4gMCAmJiBpIDwgaW5kZXgkJDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzJDEuZGlyIDwgMCAmJiBpID49IHRoaXMkMS5pbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNlbnRlcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSB0aGlzLnNsaWRlc1tpbmRleCQkMV07XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gdGhpcy5saXN0Lm9mZnNldFdpZHRoIC8gMiAtIG5leHQub2Zmc2V0V2lkdGggLyAyO1xuICAgICAgICAgICAgICAgIHZhciBqID0gMDtcblxuICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aCQkMSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlSW5kZXggPSB0aGlzJDEuZ2V0SW5kZXgoLS1qICsgaW5kZXgkJDEsIGluZGV4JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlID0gdGhpcyQxLnNsaWRlc1tzbGlkZUluZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICBjc3Moc2xpZGUsICdvcmRlcicsIHNsaWRlSW5kZXggPiBpbmRleCQkMSA/IC0yIDogLTEpO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCQkMSAtPSBzbGlkZS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFZhbGlkSW5kZXg6IGZ1bmN0aW9uKGluZGV4JCQxLCBwcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2SW5kZXggPT09IHZvaWQgMCApIHByZXZJbmRleCA9IHRoaXMucHJldkluZGV4O1xuXG5cbiAgICAgICAgICAgICAgICBpbmRleCQkMSA9IHRoaXMuZ2V0SW5kZXgoaW5kZXgkJDEsIHByZXZJbmRleCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2V0cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXgkJDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHByZXY7XG5cbiAgICAgICAgICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVzKHRoaXMkMS5zZXRzLCBpbmRleCQkMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCQkMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHByZXYgPSBpbmRleCQkMTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgkJDEgPSB0aGlzJDEuZ2V0SW5kZXgoaW5kZXgkJDEgKyB0aGlzJDEuZGlyLCBwcmV2SW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoaW5kZXgkJDEgIT09IHByZXYpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4JCQxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU2xpZGVyUGFyYWxsYXggPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbUGFyYWxsYXhdLFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHNlbEl0ZW06ICchbGknXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaXRlbTogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsSXRlbSA9IHJlZi5zZWxJdGVtO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5KHNlbEl0ZW0sICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93bicsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLmdldENzcyguNSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtaW4gaXRlbW91dCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZl9kZXRhaWwgPSByZWYuZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZl9kZXRhaWwucGVyY2VudDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGR1cmF0aW9uID0gcmVmX2RldGFpbC5kdXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IHJlZl9kZXRhaWwudGltaW5nO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmX2RldGFpbC5kaXI7XG5cblxuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5nZXRDc3MoZ2V0Q3VycmVudCh0eXBlLCBkaXIsIHBlcmNlbnQpKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydCh0aGlzLiRlbCwgdGhpcy5nZXRDc3MoaXNJbih0eXBlKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAuNVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXIgPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICAgICAgICAgICksIGR1cmF0aW9uLCB0aW1pbmcpLmNhdGNoKG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICd0cmFuc2l0aW9uY2FuY2VsZWQgdHJhbnNpdGlvbmVuZCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtdHJhbnNsYXRlaW4gaXRlbXRyYW5zbGF0ZW91dCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZl9kZXRhaWwgPSByZWYuZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZl9kZXRhaWwucGVyY2VudDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IHJlZl9kZXRhaWwuZGlyO1xuXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLmdldENzcyhnZXRDdXJyZW50KHR5cGUsIGRpciwgcGVyY2VudCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGlzSW4odHlwZSkge1xuICAgICAgICByZXR1cm4gZW5kc1dpdGgodHlwZSwgJ2luJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q3VycmVudCh0eXBlLCBkaXIsIHBlcmNlbnQpIHtcblxuICAgICAgICBwZXJjZW50IC89IDI7XG5cbiAgICAgICAgcmV0dXJuICFpc0luKHR5cGUpXG4gICAgICAgICAgICA/IGRpciA8IDBcbiAgICAgICAgICAgICAgICA/IHBlcmNlbnRcbiAgICAgICAgICAgICAgICA6IDEgLSBwZXJjZW50XG4gICAgICAgICAgICA6IGRpciA8IDBcbiAgICAgICAgICAgICAgICA/IDEgLSBwZXJjZW50XG4gICAgICAgICAgICAgICAgOiBwZXJjZW50O1xuICAgIH1cblxuICAgIHZhciBBbmltYXRpb25zJDIgPSBhc3NpZ24oe30sIEFuaW1hdGlvbnMsIHtcblxuICAgICAgICBmYWRlOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAwLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnQsIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBzY2FsZToge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgKyAuNSksIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLSBjc3MoY3VycmVudCwgJ29wYWNpdHknKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxIC0gcGVyY2VudCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgKyAuNSAqIHBlcmNlbnQpLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgcHVsbDoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMCksIHpJbmRleDogLTF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogMH0gXVxuICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwKSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpLCB6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCwgbmV4dCwgZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA8IDBcbiAgICAgICAgICAgICAgICAgICAgPyAxIC0gdHJhbnNsYXRlZChuZXh0KVxuICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKDMwICogcGVyY2VudCksIHpJbmRleDogLTF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAwfSBdXG4gICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC1wZXJjZW50ICogMTAwKSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMCAqICgxIC0gcGVyY2VudCkpLCB6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgcHVzaDoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDApLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogLTF9IF1cbiAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwKSwgekluZGV4OiAtMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoKSwgekluZGV4OiAwfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCwgbmV4dCwgZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyAxIC0gdHJhbnNsYXRlZChuZXh0KVxuICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKHBlcmNlbnQgKiAxMDApLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0zMCAqICgxIC0gcGVyY2VudCkpLCB6SW5kZXg6IC0xfSBdXG4gICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0zMCAqIHBlcmNlbnQpLCB6SW5kZXg6IC0xfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAwfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgdmFyIFNsaWRlc2hvdyQxID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBTbGlkZXNob3csIFNsaWRlclJlYWN0aXZlXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgcmF0aW86IFN0cmluZyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogQm9vbGVhbixcbiAgICAgICAgICAgIG1heEhlaWdodDogQm9vbGVhbixcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICByYXRpbzogJzE2OjknLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgIG1heEhlaWdodDogZmFsc2UsXG4gICAgICAgICAgICBzZWxMaXN0OiAnLnVrLXNsaWRlc2hvdy1pdGVtcycsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLXNsaWRlc2hvdy1pdGVtJyxcbiAgICAgICAgICAgIHNlbE5hdjogJy51ay1zbGlkZXNob3ctbmF2JyxcbiAgICAgICAgICAgIEFuaW1hdGlvbnM6IEFuaW1hdGlvbnMkMlxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLnJhdGlvLnNwbGl0KCc6JykubWFwKE51bWJlcik7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWZbMV07XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSBoZWlnaHQkJDEgKiB0aGlzLiRlbC5vZmZzZXRXaWR0aCAvIHdpZHRoJCQxO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCQkMSA9IE1hdGgubWF4KHRoaXMubWluSGVpZ2h0LCBoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSBNYXRoLm1pbih0aGlzLm1heEhlaWdodCwgaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge2hlaWdodDogaGVpZ2h0JCQxfTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgaGd0ID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLmxpc3QsIE1hdGguZmxvb3IoaGd0KSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgb2JqJDE7XG5cbiAgICB2YXIgU29ydGFibGUgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIEFuaW1hdGVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBncm91cDogU3RyaW5nLFxuICAgICAgICAgICAgdGhyZXNob2xkOiBOdW1iZXIsXG4gICAgICAgICAgICBjbHNJdGVtOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNQbGFjZWhvbGRlcjogU3RyaW5nLFxuICAgICAgICAgICAgY2xzRHJhZzogU3RyaW5nLFxuICAgICAgICAgICAgY2xzRHJhZ1N0YXRlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNCYXNlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNOb0RyYWc6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0VtcHR5OiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNDdXN0b206IFN0cmluZyxcbiAgICAgICAgICAgIGhhbmRsZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZ3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgdGhyZXNob2xkOiA1LFxuICAgICAgICAgICAgY2xzSXRlbTogJ3VrLXNvcnRhYmxlLWl0ZW0nLFxuICAgICAgICAgICAgY2xzUGxhY2Vob2xkZXI6ICd1ay1zb3J0YWJsZS1wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICBjbHNEcmFnOiAndWstc29ydGFibGUtZHJhZycsXG4gICAgICAgICAgICBjbHNEcmFnU3RhdGU6ICd1ay1kcmFnJyxcbiAgICAgICAgICAgIGNsc0Jhc2U6ICd1ay1zb3J0YWJsZScsXG4gICAgICAgICAgICBjbHNOb0RyYWc6ICd1ay1zb3J0YWJsZS1ub2RyYWcnLFxuICAgICAgICAgICAgY2xzRW1wdHk6ICd1ay1zb3J0YWJsZS1lbXB0eScsXG4gICAgICAgICAgICBjbHNDdXN0b206ICcnLFxuICAgICAgICAgICAgaGFuZGxlOiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIFsnaW5pdCcsICdzdGFydCcsICdtb3ZlJywgJ2VuZCddLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgIHZhciBmbiA9IHRoaXMkMVtrZXldO1xuICAgICAgICAgICAgICAgIHRoaXMkMVtrZXldID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBnZXRQb3MkMShlKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSByZWYueTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvcyA9IHt4OiB4LCB5OiB5fTtcblxuICAgICAgICAgICAgICAgICAgICBmbihlKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiAoIG9iaiQxID0ge30sIG9iaiQxW3BvaW50ZXJEb3duXSA9ICdpbml0Jywgb2JqJDEgKSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xzRW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRW1wdHksICF0aGlzLiRlbC5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBvZmZzZXQodGhpcy5kcmFnLCB7dG9wOiB0aGlzLnBvcy55ICsgdGhpcy5vcmlnaW4udG9wLCBsZWZ0OiB0aGlzLnBvcy54ICsgdGhpcy5vcmlnaW4ubGVmdH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0aGlzLmRyYWcpO1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgIHZhciBib3R0b20gPSB0b3AgKyB0aGlzLmRyYWcub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciBzY3JvbGw7XG5cbiAgICAgICAgICAgICAgICBpZiAodG9wID4gMCAmJiB0b3AgPCB0aGlzLnNjcm9sbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gdGhpcy5zY3JvbGxZIC0gNTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJvdHRvbSA8IGhlaWdodChkb2N1bWVudCkgJiYgYm90dG9tID4gaGVpZ2h0KHdpbmRvdykgKyB0aGlzLnNjcm9sbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gdGhpcy5zY3JvbGxZICsgNTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzY3JvbGwgJiYgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cuc2Nyb2xsKHdpbmRvdy5wYWdlWE9mZnNldCwgc2Nyb2xsKTsgfSwgNSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICB2YXIgYnV0dG9uID0gZS5idXR0b247XG4gICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSBlLmRlZmF1bHRQcmV2ZW50ZWQ7XG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRvTm9kZXModGhpcy4kZWwuY2hpbGRyZW4pLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsKTsgfSk7XG4gICAgICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0gcmVmWzBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICB8fCBpc0lucHV0KGUudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmhhbmRsZSAmJiAhd2l0aGluKHRhcmdldCwgdGhpcy5oYW5kbGUpXG4gICAgICAgICAgICAgICAgICAgIHx8IGJ1dHRvbiA+IDBcbiAgICAgICAgICAgICAgICAgICAgfHwgd2l0aGluKHRhcmdldCwgKFwiLlwiICsgKHRoaXMuY2xzTm9EcmFnKSkpXG4gICAgICAgICAgICAgICAgICAgIHx8IGRlZmF1bHRQcmV2ZW50ZWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hlZCA9IFt0aGlzXTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW4gPSBhc3NpZ24oe3RhcmdldDogdGFyZ2V0LCBpbmRleDogaW5kZXgocGxhY2Vob2xkZXIpfSwgdGhpcy5wb3MpO1xuXG4gICAgICAgICAgICAgICAgb24oZG9jdW1lbnQsIHBvaW50ZXJNb3ZlLCB0aGlzLm1vdmUpO1xuICAgICAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kKTtcbiAgICAgICAgICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnNjcm9sbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gYXBwZW5kKHRoaXMuJGNvbnRhaW5lciwgdGhpcy5wbGFjZWhvbGRlci5vdXRlckhUTUwucmVwbGFjZSgvXjxsaS9pLCAnPGRpdicpLnJlcGxhY2UoL2xpPiQvaSwgJ2Rpdj4nKSk7XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy5kcmFnLCBhc3NpZ24oe1xuICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMucGxhY2Vob2xkZXIub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5wbGFjZWhvbGRlci5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICAgICB9LCBjc3ModGhpcy5wbGFjZWhvbGRlciwgWydwYWRkaW5nTGVmdCcsICdwYWRkaW5nUmlnaHQnLCAncGFkZGluZ1RvcCcsICdwYWRkaW5nQm90dG9tJ10pKSk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLmRyYWcsICd1ay1uby1ib290JywgJycpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZHJhZywgdGhpcy5jbHNEcmFnLCB0aGlzLmNsc0N1c3RvbSk7XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy5kcmFnLmZpcnN0RWxlbWVudENoaWxkLCBoZWlnaHQodGhpcy5wbGFjZWhvbGRlci5maXJzdEVsZW1lbnRDaGlsZCkpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IHJlZi5sZWZ0O1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgIGFzc2lnbih0aGlzLm9yaWdpbiwge2xlZnQ6IGxlZnQgLSB0aGlzLnBvcy54LCB0b3A6IHRvcCAtIHRoaXMucG9zLnl9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMucGxhY2Vob2xkZXIsIHRoaXMuY2xzUGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLmNoaWxkcmVuLCB0aGlzLmNsc0l0ZW0pO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNEcmFnU3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3N0YXJ0JywgW3RoaXMsIHRoaXMucGxhY2Vob2xkZXJdKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubW92ZShlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1vdmU6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMucG9zLnggLSB0aGlzLm9yaWdpbi54KSA+IHRoaXMudGhyZXNob2xkIHx8IE1hdGguYWJzKHRoaXMucG9zLnkgLSB0aGlzLm9yaWdpbi55KSA+IHRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0KGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnR5cGUgPT09ICdtb3VzZW1vdmUnID8gZS50YXJnZXQgOiBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHRoaXMucG9zLnggLSBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQsIHRoaXMucG9zLnkgLSBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgc29ydGFibGUgPSB0aGlzLmdldFNvcnRhYmxlKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzID0gdGhpcy5nZXRTb3J0YWJsZSh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB2YXIgbW92ZSA9IHNvcnRhYmxlICE9PSBwcmV2aW91cztcblxuICAgICAgICAgICAgICAgIGlmICghc29ydGFibGUgfHwgd2l0aGluKHRhcmdldCwgdGhpcy5wbGFjZWhvbGRlcikgfHwgbW92ZSAmJiAoIXNvcnRhYmxlLmdyb3VwIHx8IHNvcnRhYmxlLmdyb3VwICE9PSBwcmV2aW91cy5ncm91cCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRhcmdldCA9IHNvcnRhYmxlLiRlbCA9PT0gdGFyZ2V0LnBhcmVudE5vZGUgJiYgdGFyZ2V0IHx8IHRvTm9kZXMoc29ydGFibGUuJGVsLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsZW1lbnQpOyB9KVswXTtcblxuICAgICAgICAgICAgICAgIGlmIChtb3ZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzLnJlbW92ZSh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNvcnRhYmxlLmluc2VydCh0aGlzLnBsYWNlaG9sZGVyLCB0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyh0aGlzLnRvdWNoZWQsIHNvcnRhYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdWNoZWQucHVzaChzb3J0YWJsZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzY3JvbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbCAhPT0gdGhpcy5zY3JvbGxZKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zLnkgKz0gc2Nyb2xsIC0gdGhpcy5zY3JvbGxZO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFkgPSBzY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBlbmQ6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIG9mZihkb2N1bWVudCwgcG9pbnRlck1vdmUsIHRoaXMubW92ZSk7XG4gICAgICAgICAgICAgICAgb2ZmKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kKTtcbiAgICAgICAgICAgICAgICBvZmYod2luZG93LCAnc2Nyb2xsJywgdGhpcy5zY3JvbGwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWcpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZS50eXBlICE9PSAnbW91c2V1cCcgJiYgd2l0aGluKGUudGFyZ2V0LCAnYVtocmVmXScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gY2xvc2VzdChlLnRhcmdldCwgJ2FbaHJlZl0nKS5ocmVmO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHByZXZlbnRDbGljaygpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHNvcnRhYmxlID0gdGhpcy5nZXRTb3J0YWJsZSh0aGlzLnBsYWNlaG9sZGVyKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzID09PSBzb3J0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcmlnaW4uaW5kZXggIT09IGluZGV4KHRoaXMucGxhY2Vob2xkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnbW92ZWQnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihzb3J0YWJsZS4kZWwsICdhZGRlZCcsIFtzb3J0YWJsZSwgdGhpcy5wbGFjZWhvbGRlcl0pO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAncmVtb3ZlZCcsIFt0aGlzLCB0aGlzLnBsYWNlaG9sZGVyXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3N0b3AnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuXG4gICAgICAgICAgICAgICAgcmVtb3ZlKHRoaXMuZHJhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIHZhciBjbGFzc2VzID0gdGhpcy50b3VjaGVkLm1hcChmdW5jdGlvbiAoc29ydGFibGUpIHsgcmV0dXJuICgoc29ydGFibGUuY2xzUGxhY2Vob2xkZXIpICsgXCIgXCIgKyAoc29ydGFibGUuY2xzSXRlbSkpOyB9KS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgdGhpcy50b3VjaGVkLmZvckVhY2goZnVuY3Rpb24gKHNvcnRhYmxlKSB7IHJldHVybiByZW1vdmVDbGFzcyhzb3J0YWJsZS4kZWwuY2hpbGRyZW4sIGNsYXNzZXMpOyB9KTtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNEcmFnU3RhdGUpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpbnNlcnQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHRhcmdldCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbC5jaGlsZHJlbiwgdGhpcy5jbHNJdGVtKTtcblxuICAgICAgICAgICAgICAgIHZhciBpbnNlcnQgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdpdGhpbihlbGVtZW50LCB0aGlzJDEuJGVsKSB8fCBpc1ByZWRlY2Vzc29yKGVsZW1lbnQsIHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUodGFyZ2V0LCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIodGFyZ2V0LCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHRoaXMkMS4kZWwsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZShpbnNlcnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlbGVtZW50KSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXdpdGhpbihlbGVtZW50LCB0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGUoZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlKGVsZW1lbnQpOyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRTb3J0YWJsZTogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ICYmICh0aGlzLiRnZXRDb21wb25lbnQoZWxlbWVudCwgJ3NvcnRhYmxlJykgfHwgdGhpcy5nZXRTb3J0YWJsZShlbGVtZW50LnBhcmVudE5vZGUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaXNQcmVkZWNlc3NvcihlbGVtZW50LCB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZSA9PT0gdGFyZ2V0LnBhcmVudE5vZGUgJiYgaW5kZXgoZWxlbWVudCkgPiBpbmRleCh0YXJnZXQpO1xuICAgIH1cblxuICAgIHZhciBvYmokMjtcblxuICAgIHZhciBhY3RpdmVzID0gW107XG5cbiAgICB2YXIgVG9vbHRpcCA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBhcmdzOiAndGl0bGUnLFxuXG4gICAgICAgIG1peGluczogW0NvbnRhaW5lciwgVG9nZ2xhYmxlLCBQb3NpdGlvbl0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRlbGF5OiBOdW1iZXIsXG4gICAgICAgICAgICB0aXRsZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgcG9zOiAndG9wJyxcbiAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgIGRlbGF5OiAwLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBbJ3VrLWFuaW1hdGlvbi1zY2FsZS11cCddLFxuICAgICAgICAgICAgZHVyYXRpb246IDEwMCxcbiAgICAgICAgICAgIGNsczogJ3VrLWFjdGl2ZScsXG4gICAgICAgICAgICBjbHNQb3M6ICd1ay10b29sdGlwJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGJlZm9yZUNvbm5lY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5faGFzVGl0bGUgPSBoYXNBdHRyKHRoaXMuJGVsLCAndGl0bGUnKTtcbiAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsIHt0aXRsZTogJycsICdhcmlhLWV4cGFuZGVkJzogZmFsc2V9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICBhdHRyKHRoaXMuJGVsLCB7dGl0bGU6IHRoaXMuX2hhc1RpdGxlID8gdGhpcy50aXRsZSA6IG51bGwsICdhcmlhLWV4cGFuZGVkJzogbnVsbH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlcyhhY3RpdmVzLCB0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYWN0aXZlcy5mb3JFYWNoKGZ1bmN0aW9uIChhY3RpdmUpIHsgcmV0dXJuIGFjdGl2ZS5oaWRlKCk7IH0pO1xuICAgICAgICAgICAgICAgIGFjdGl2ZXMucHVzaCh0aGlzKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3VuYmluZCA9IG9uKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gIXdpdGhpbihlLnRhcmdldCwgdGhpcyQxLiRlbCkgJiYgdGhpcyQxLmhpZGUoKTsgfSk7XG5cbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZXIpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gYXBwZW5kKHRoaXMuY29udGFpbmVyLCAoXCI8ZGl2IGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc1BvcykgKyBcIlxcXCIgYXJpYS1oaWRkZW4+PGRpdiBjbGFzcz1cXFwiXCIgKyAodGhpcy5jbHNQb3MpICsgXCItaW5uZXJcXFwiPlwiICsgKHRoaXMudGl0bGUpICsgXCI8L2Rpdj48L2Rpdj5cIikpO1xuXG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25BdCh0aGlzLnRvb2x0aXAsIHRoaXMuJGVsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luID0gdGhpcy5nZXRBeGlzKCkgPT09ICd5JyA/ICgoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkgKyBcIi1cIiArICh0aGlzLmFsaWduKSkgOiAoKHRoaXMuYWxpZ24pICsgXCItXCIgKyAoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlRWxlbWVudCh0aGlzJDEudG9vbHRpcCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmhpZGVUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Zpc2libGUodGhpcyQxLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0sIDE1MCk7XG5cbiAgICAgICAgICAgICAgICB9LCB0aGlzLmRlbGF5KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gYWN0aXZlcy5pbmRleE9mKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF+aW5kZXgkJDEgfHwgbWF0Y2hlcyh0aGlzLiRlbCwgJ2lucHV0JykgJiYgdGhpcy4kZWwgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFjdGl2ZXMuc3BsaWNlKGluZGV4JCQxLCAxKTtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lcik7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmhpZGVUaW1lcik7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMudG9vbHRpcCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCAmJiByZW1vdmUodGhpcy50b29sdGlwKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl91bmJpbmQoKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiAoIG9iaiQyID0ge30sIG9iaiQyWyhcImZvY3VzIFwiICsgcG9pbnRlckVudGVyICsgXCIgXCIgKyBwb2ludGVyRG93bildID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS50eXBlICE9PSBwb2ludGVyRG93biB8fCAhaXNUb3VjaChlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvYmokMi5ibHVyID0gJ2hpZGUnLCBvYmokMltwb2ludGVyTGVhdmVdID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgb2JqJDIgKVxuXG4gICAgfTtcblxuICAgIHZhciBVcGxvYWQgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGFsbG93OiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNEcmFnb3ZlcjogU3RyaW5nLFxuICAgICAgICAgICAgY29uY3VycmVudDogTnVtYmVyLFxuICAgICAgICAgICAgbWF4U2l6ZTogTnVtYmVyLFxuICAgICAgICAgICAgbWV0aG9kOiBTdHJpbmcsXG4gICAgICAgICAgICBtaW1lOiBTdHJpbmcsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTWltZTogU3RyaW5nLFxuICAgICAgICAgICAgbXNnSW52YWxpZE5hbWU6IFN0cmluZyxcbiAgICAgICAgICAgIG1zZ0ludmFsaWRTaXplOiBTdHJpbmcsXG4gICAgICAgICAgICBtdWx0aXBsZTogQm9vbGVhbixcbiAgICAgICAgICAgIG5hbWU6IFN0cmluZyxcbiAgICAgICAgICAgIHBhcmFtczogT2JqZWN0LFxuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgdXJsOiBTdHJpbmcsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYWxsb3c6IGZhbHNlLFxuICAgICAgICAgICAgY2xzRHJhZ292ZXI6ICd1ay1kcmFnb3ZlcicsXG4gICAgICAgICAgICBjb25jdXJyZW50OiAxLFxuICAgICAgICAgICAgbWF4U2l6ZTogMCxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgbWltZTogZmFsc2UsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTWltZTogJ0ludmFsaWQgRmlsZSBUeXBlOiAlcycsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTmFtZTogJ0ludmFsaWQgRmlsZSBOYW1lOiAlcycsXG4gICAgICAgICAgICBtc2dJbnZhbGlkU2l6ZTogJ0ludmFsaWQgRmlsZSBTaXplOiAlcyBLaWxvYnl0ZXMgTWF4JyxcbiAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgIG5hbWU6ICdmaWxlc1tdJyxcbiAgICAgICAgICAgIHBhcmFtczoge30sXG4gICAgICAgICAgICB0eXBlOiAnJyxcbiAgICAgICAgICAgIHVybDogJycsXG4gICAgICAgICAgICBhYm9ydDogbm9vcCxcbiAgICAgICAgICAgIGJlZm9yZUFsbDogbm9vcCxcbiAgICAgICAgICAgIGJlZm9yZVNlbmQ6IG5vb3AsXG4gICAgICAgICAgICBjb21wbGV0ZTogbm9vcCxcbiAgICAgICAgICAgIGNvbXBsZXRlQWxsOiBub29wLFxuICAgICAgICAgICAgZXJyb3I6IG5vb3AsXG4gICAgICAgICAgICBmYWlsOiBub29wLFxuICAgICAgICAgICAgbG9hZDogbm9vcCxcbiAgICAgICAgICAgIGxvYWRFbmQ6IG5vb3AsXG4gICAgICAgICAgICBsb2FkU3RhcnQ6IG5vb3AsXG4gICAgICAgICAgICBwcm9ncmVzczogbm9vcFxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czoge1xuXG4gICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcyhlLnRhcmdldCwgJ2lucHV0W3R5cGU9XCJmaWxlXCJdJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZChlLnRhcmdldC5maWxlcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyb3A6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzdG9wKGUpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRyYW5zZmVyIHx8ICF0cmFuc2Zlci5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRHJhZ292ZXIpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWQodHJhbnNmZXIuZmlsZXMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZHJhZ2VudGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgc3RvcChlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyYWdvdmVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgc3RvcChlKTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNEcmFnb3Zlcik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcmFnbGVhdmU6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzdG9wKGUpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0RyYWdvdmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdXBsb2FkOiBmdW5jdGlvbihmaWxlcykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIWZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3VwbG9hZCcsIFtmaWxlc10pO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEubWF4U2l6ZSAmJiB0aGlzJDEubWF4U2l6ZSAqIDEwMDAgPCBmaWxlc1tpXS5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuZmFpbCh0aGlzJDEubXNnSW52YWxpZFNpemUucmVwbGFjZSgnJXMnLCB0aGlzJDEubWF4U2l6ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5hbGxvdyAmJiAhbWF0Y2godGhpcyQxLmFsbG93LCBmaWxlc1tpXS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmZhaWwodGhpcyQxLm1zZ0ludmFsaWROYW1lLnJlcGxhY2UoJyVzJywgdGhpcyQxLmFsbG93KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLm1pbWUgJiYgIW1hdGNoKHRoaXMkMS5taW1lLCBmaWxlc1tpXS50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmZhaWwodGhpcyQxLm1zZ0ludmFsaWRNaW1lLnJlcGxhY2UoJyVzJywgdGhpcyQxLm1pbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzID0gW2ZpbGVzWzBdXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZUFsbCh0aGlzLCBmaWxlcyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgY2h1bmtzID0gY2h1bmsoZmlsZXMsIHRoaXMuY29uY3VycmVudCk7XG4gICAgICAgICAgICAgICAgdmFyIHVwbG9hZCA9IGZ1bmN0aW9uIChmaWxlcykge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhJCQxID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZmlsZXMuZm9yRWFjaChmdW5jdGlvbiAoZmlsZSkgeyByZXR1cm4gZGF0YSQkMS5hcHBlbmQodGhpcyQxLm5hbWUsIGZpbGUpOyB9KTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcyQxLnBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5hcHBlbmQoa2V5LCB0aGlzJDEucGFyYW1zW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYWpheCh0aGlzJDEudXJsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhJCQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiB0aGlzJDEubWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiB0aGlzJDEudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQ6IGZ1bmN0aW9uIChlbnYpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4aHIgPSBlbnYueGhyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci51cGxvYWQgJiYgb24oeGhyLnVwbG9hZCwgJ3Byb2dyZXNzJywgdGhpcyQxLnByb2dyZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2xvYWRTdGFydCcsICdsb2FkJywgJ2xvYWRFbmQnLCAnYWJvcnQnXS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiBvbih4aHIsIHR5cGUudG9Mb3dlckNhc2UoKSwgdGhpcyQxW3R5cGVdKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuYmVmb3JlU2VuZChlbnYpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoeGhyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuY29tcGxldGUoeGhyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaHVua3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZChjaHVua3Muc2hpZnQoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmNvbXBsZXRlQWxsKHhocik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMkMS5lcnJvcihlLm1lc3NhZ2UpOyB9XG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdXBsb2FkKGNodW5rcy5zaGlmdCgpKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYXRjaChwYXR0ZXJuLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBwYXRoLm1hdGNoKG5ldyBSZWdFeHAoKFwiXlwiICsgKHBhdHRlcm4ucmVwbGFjZSgvXFwvL2csICdcXFxcLycpLnJlcGxhY2UoL1xcKlxcKi9nLCAnKFxcXFwvW15cXFxcL10rKSonKS5yZXBsYWNlKC9cXCovZywgJ1teXFxcXC9dKycpLnJlcGxhY2UoLygoPyFcXFxcKSlcXD8vZywgJyQxLicpKSArIFwiJFwiKSwgJ2knKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2h1bmsoZmlsZXMsIHNpemUpIHtcbiAgICAgICAgdmFyIGNodW5rcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSArPSBzaXplKSB7XG4gICAgICAgICAgICB2YXIgY2h1bmsgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaisrKSB7XG4gICAgICAgICAgICAgICAgY2h1bmsucHVzaChmaWxlc1tpICsgal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaHVua3M7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RvcChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBVSWtpdC5jb21wb25lbnQoJ2NvdW50ZG93bicsIENvdW50ZG93bik7XG4gICAgVUlraXQuY29tcG9uZW50KCdmaWx0ZXInLCBGaWx0ZXIpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnbGlnaHRib3gnLCBMaWdodGJveCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveFBhbmVsJywgTGlnaHRib3hQYW5lbCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdub3RpZmljYXRpb24nLCBOb3RpZmljYXRpb24pO1xuICAgIFVJa2l0LmNvbXBvbmVudCgncGFyYWxsYXgnLCBQYXJhbGxheCQxKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlcicsIFNsaWRlciQxKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlclBhcmFsbGF4JywgU2xpZGVyUGFyYWxsYXgpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVzaG93JywgU2xpZGVzaG93JDEpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVzaG93UGFyYWxsYXgnLCBTbGlkZXJQYXJhbGxheCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdzb3J0YWJsZScsIFNvcnRhYmxlKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3Rvb2x0aXAnLCBUb29sdGlwKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3VwbG9hZCcsIFVwbG9hZCk7XG5cbiAgICB7XG4gICAgICAgIGJvb3QoVUlraXQpO1xuICAgIH1cblxuICAgIHJldHVybiBVSWtpdDtcblxufSkpKTtcbiJdfQ== +"use strict";function getScript(url,integrity,cross_origin){const script=document.createElement("script");script.type="text/javascript",script.src=url,script.defer=!0,void 0!==integrity&&(script.integrity=integrity),void 0!==cross_origin&&(script.crossOrigin=cross_origin),document.getElementsByTagName("head")[0].appendChild(script)}function setClass(selector,my_class){document.querySelector(selector).className=my_class}function removeClass(selector,my_class){const element=document.querySelector(selector),reg=new RegExp(`(^| )${my_class}($| )`,"g");element.className=element.className.replace(reg," ")}function error_typewriter(){const app=document.getElementById("error"),typewriter=new Typewriter(app,{loop:!1,deleteSpeed:40,typingSpeed:"natural",devMode:!1});document.getElementById("terminal-close").onclick=function(){const app=document.getElementById("win"),current_class=app.getAttribute("class");app.setAttribute("class",`${current_class} uk-animation-scale-up uk-animation-reverse`),typewriter.stop()},typewriter.appendText("Python 3.6.4 (default, Jan 5 2018, 02:35:40)\n").appendText("[GCC 7.2.1 20171224] on darwin\n").appendText('Type "help", "copyright", "credits" or "license" for more information.\n').appendText(">>> ").pauseFor(1e3).typeString("impor requests").deleteChars(9).typeString("t requests\n").appendText(">>> ").pauseFor(750).changeSettings({typingSpeed:"natural"}).typeString(`response = requests.${window._RequestMethod}('https://pythim`).deleteChars(2).typeString("ondiscord.con/").deleteChars(2).typeString(`m${window._Path}')\n`).pauseFor(1e3).appendText(`<Response [${window._Code}]>\n>>> `).typeString("# hmmmm").pauseFor(1e3).deleteChars(7).pauseFor(1e3).typeString("response.text\n").appendText(`${window._ErrorMsg}\n>>> `).start()}setClass("html","prevent-fouc"),document.onreadystatechange=function(){"interactive"===document.readyState&&(removeClass("html","prevent-fouc"),getScript("https://pro.fontawesome.com/releases/v5.0.13/js/all.js","sha384-d84LGg2pm9KhR4mCAs3N29GQ4OYNy+K+FBHX8WhimHpPm86c839++MDABegrZ3gn","anonymous"),getScript("https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.3/ace.js"),getScript("https://cdn.jsdelivr.net/npm/flatpickr"))},function(){const startjam=new Date(Date.UTC(2018,2,23)),endjam=new Date(Date.UTC(2018,2,26)),now=Date.now();let goal;if(now+1e3<endjam.getTime()){UIkit.notification({message:'<div class=\'uk-text-center\'> <span id="countdown-title" class="uk-text-center"> <a href="/info/jams">Code Jam</a> Countdown </span> <p class=\'uk-text-large\' id="countdown-remaining">...</p><small style=\'font-size: 0.6em;\'>(Tap/click to dismiss)</small></div>',pos:"bottom-right",timeout:endjam-now});const heading=document.getElementById("countdown-title");now>startjam.getTime()?(heading.innerHTML='Current <a href="/info/jams">code jam</a> ends in...',goal=endjam.getTime()):(heading.innerHTML='Next <a href="/info/jams">code jam</a> starts in...',goal=startjam.getTime());const refreshCountdown=setInterval(()=>{let delta=goal-Date.now();if(delta<=1e3)return clearInterval(refreshCountdown),location.reload();let days=Math.floor(delta/864e5);delta-=864e5*days;let hours=Math.floor(delta/36e5);delta-=36e5*hours;let minutes=Math.floor(delta/6e4);delta-=6e4*minutes;let seconds=Math.floor(delta/1e3);days<10&&(days=`0${days}`),hours<10&&(hours=`0${hours}`),minutes<10&&(minutes=`0${minutes}`),seconds<10&&(seconds=`0${seconds}`);try{document.getElementById("countdown-remaining").innerHTML=`${days}:${hours}:${minutes}:${seconds}`}catch(e){return clearInterval(refreshCountdown)}},500)}}();class JamActions{constructor(url,csrf_token){this.url=url,this.csrf_token=csrf_token}send(action,method,data,callback){data.action=action,$.ajax(this.url,{data:data,dataType:"json",headers:{"X-CSRFToken":this.csrf_token},method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}send_json(action,method,data,callback){data.action=action,$.ajax(this.url,{data:JSON.stringify(data),dataType:"json",headers:{"X-CSRFToken":this.csrf_token},method:method}).done(data=>callback(!("error_code"in data),data)).fail(()=>callback(!1))}set_state(jam,state,callback){this.send("state","POST",{jam:jam,state:state},callback)}get_questions(callback){this.send("questions","GET",{},callback)}create_question(data,callback){this.send_json("questions","POST",data,callback)}delete_question(id,callback){this.send("question","DELETE",{id:id},callback)}associate_question(form,question,callback){this.send("associate_question","POST",{form:form,question:question},callback)}disassociate_question(form,question,callback){this.send("disassociate_question","POST",{form:form,question:question},callback)}create_infraction(id,reason,number,callback){this.send("infraction","POST",{participant:id,reason:reason,number:number},callback)}delete_infraction(id,callback){this.send("infraction","DELETE",{id:id},callback)}approve_application(id,callback){this.send("approve_application","POST",{id:id},callback)}unapprove_application(id,callback){this.send("unapprove_application","POST",{id:id},callback)}generate_teams(jam,callback){this.send("generate_teams","POST",{jam:jam},callback)}create_team(jam,callback){this.send("create_team","POST",{jam:jam},callback)}reroll_team(team,callback){this.send("reroll_team","POST",{team:team},callback)}delete_team(team,callback){this.send("team","DELETE",{team:team},callback)}set_team_member(jam,member,team,callback){this.send("set_team_member","POST",{jam:jam,member:member,team:team},callback)}}function revision_diff(revisions){const buttons=document.querySelectorAll("td input"),id_reg=/compare-(before|after)-([\w|-]+)/;function getRevisionId(element){const e=element.id.match(id_reg);return[e[1],e[2]]}function getRevision(id){return revisions.filter(x=>x.id===id)[0]}buttons.forEach(button=>{button.checked=!1,button.onchange=function(){!function(element){const id=getRevisionId(element),rev=getRevision(id[1]);let aft,bef;"after"===id[0]?(document.querySelector(`#compare-before-${id[1]}`).checked=!1,buttons.forEach(e=>{"after"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1)})):(document.querySelector(`#compare-after-${id[1]}`).checked=!1,buttons.forEach(e=>{"before"===getRevisionId(e)[0]&&e.id!==element.id&&(e.checked=!1),"after"===getRevisionId(e)[0]&&(getRevision(getRevisionId(e)[1]).date<=rev.date?document.querySelector(`#${e.id}`).setAttribute("disabled",""):document.querySelector(`#${e.id}`).removeAttribute("disabled"))})),buttons.forEach(button=>{const id=getRevisionId(button);button.checked&&"before"===id[0]&&(bef=id[1]),button.checked&&"after"===id[0]&&(aft=id[1])}),document.getElementById("compare-submit").href=`/history/compare/${bef}/${aft}`}(button)}})}function wiki_sidebar(){const sidebar=document.getElementById("wiki-sidebar");document.getElementById("wiki-sidebar-button").onclick=function(){sidebar.classList.contains("uk-visible@s")?sidebar.classList.remove("uk-visible@s"):sidebar.classList.add("uk-visible@s")}}!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):global.moment=factory()}(this,function(){var hookCallback,some;function hooks(){return hookCallback.apply(null,arguments)}function isArray(input){return input instanceof Array||"[object Array]"===Object.prototype.toString.call(input)}function isObject(input){return null!=input&&"[object Object]"===Object.prototype.toString.call(input)}function isUndefined(input){return void 0===input}function isNumber(input){return"number"==typeof input||"[object Number]"===Object.prototype.toString.call(input)}function isDate(input){return input instanceof Date||"[object Date]"===Object.prototype.toString.call(input)}function map(arr,fn){var i,res=[];for(i=0;i<arr.length;++i)res.push(fn(arr[i],i));return res}function hasOwnProp(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function extend(a,b){for(var i in b)hasOwnProp(b,i)&&(a[i]=b[i]);return hasOwnProp(b,"toString")&&(a.toString=b.toString),hasOwnProp(b,"valueOf")&&(a.valueOf=b.valueOf),a}function createUTC(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!0).utc()}function getParsingFlags(m){return null==m._pf&&(m._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),m._pf}function isValid(m){if(null==m._isValid){var flags=getParsingFlags(m),parsedParts=some.call(flags.parsedDateParts,function(i){return null!=i}),isNowValid=!isNaN(m._d.getTime())&&flags.overflow<0&&!flags.empty&&!flags.invalidMonth&&!flags.invalidWeekday&&!flags.weekdayMismatch&&!flags.nullInput&&!flags.invalidFormat&&!flags.userInvalidated&&(!flags.meridiem||flags.meridiem&&parsedParts);if(m._strict&&(isNowValid=isNowValid&&0===flags.charsLeftOver&&0===flags.unusedTokens.length&&void 0===flags.bigHour),null!=Object.isFrozen&&Object.isFrozen(m))return isNowValid;m._isValid=isNowValid}return m._isValid}function createInvalid(flags){var m=createUTC(NaN);return null!=flags?extend(getParsingFlags(m),flags):getParsingFlags(m).userInvalidated=!0,m}some=Array.prototype.some?Array.prototype.some:function(fun){for(var t=Object(this),len=t.length>>>0,i=0;i<len;i++)if(i in t&&fun.call(this,t[i],i,t))return!0;return!1};var momentProperties=hooks.momentProperties=[];function copyConfig(to,from){var i,prop,val;if(isUndefined(from._isAMomentObject)||(to._isAMomentObject=from._isAMomentObject),isUndefined(from._i)||(to._i=from._i),isUndefined(from._f)||(to._f=from._f),isUndefined(from._l)||(to._l=from._l),isUndefined(from._strict)||(to._strict=from._strict),isUndefined(from._tzm)||(to._tzm=from._tzm),isUndefined(from._isUTC)||(to._isUTC=from._isUTC),isUndefined(from._offset)||(to._offset=from._offset),isUndefined(from._pf)||(to._pf=getParsingFlags(from)),isUndefined(from._locale)||(to._locale=from._locale),momentProperties.length>0)for(i=0;i<momentProperties.length;i++)isUndefined(val=from[prop=momentProperties[i]])||(to[prop]=val);return to}var updateInProgress=!1;function Moment(config){copyConfig(this,config),this._d=new Date(null!=config._d?config._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===updateInProgress&&(updateInProgress=!0,hooks.updateOffset(this),updateInProgress=!1)}function isMoment(obj){return obj instanceof Moment||null!=obj&&null!=obj._isAMomentObject}function absFloor(number){return number<0?Math.ceil(number)||0:Math.floor(number)}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;return 0!==coercedNumber&&isFinite(coercedNumber)&&(value=absFloor(coercedNumber)),value}function compareArrays(array1,array2,dontConvert){var i,len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0;for(i=0;i<len;i++)(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i]))&&diffs++;return diffs+lengthDiff}function warn(msg){!1===hooks.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+msg)}function deprecate(msg,fn){var firstTime=!0;return extend(function(){if(null!=hooks.deprecationHandler&&hooks.deprecationHandler(null,msg),firstTime){for(var arg,args=[],i=0;i<arguments.length;i++){if(arg="","object"==typeof arguments[i]){for(var key in arg+="\n["+i+"] ",arguments[0])arg+=key+": "+arguments[0][key]+", ";arg=arg.slice(0,-2)}else arg=arguments[i];args.push(arg)}warn(msg+"\nArguments: "+Array.prototype.slice.call(args).join("")+"\n"+(new Error).stack),firstTime=!1}return fn.apply(this,arguments)},fn)}var keys,deprecations={};function deprecateSimple(name,msg){null!=hooks.deprecationHandler&&hooks.deprecationHandler(name,msg),deprecations[name]||(warn(msg),deprecations[name]=!0)}function isFunction(input){return input instanceof Function||"[object Function]"===Object.prototype.toString.call(input)}function mergeConfigs(parentConfig,childConfig){var prop,res=extend({},parentConfig);for(prop in childConfig)hasOwnProp(childConfig,prop)&&(isObject(parentConfig[prop])&&isObject(childConfig[prop])?(res[prop]={},extend(res[prop],parentConfig[prop]),extend(res[prop],childConfig[prop])):null!=childConfig[prop]?res[prop]=childConfig[prop]:delete res[prop]);for(prop in parentConfig)hasOwnProp(parentConfig,prop)&&!hasOwnProp(childConfig,prop)&&isObject(parentConfig[prop])&&(res[prop]=extend({},res[prop]));return res}function Locale(config){null!=config&&this.set(config)}hooks.suppressDeprecationWarnings=!1,hooks.deprecationHandler=null,keys=Object.keys?Object.keys:function(obj){var i,res=[];for(i in obj)hasOwnProp(obj,i)&&res.push(i);return res};var aliases={};function addUnitAlias(unit,shorthand){var lowerCase=unit.toLowerCase();aliases[lowerCase]=aliases[lowerCase+"s"]=aliases[shorthand]=unit}function normalizeUnits(units){return"string"==typeof units?aliases[units]||aliases[units.toLowerCase()]:void 0}function normalizeObjectUnits(inputObject){var normalizedProp,prop,normalizedInput={};for(prop in inputObject)hasOwnProp(inputObject,prop)&&(normalizedProp=normalizeUnits(prop))&&(normalizedInput[normalizedProp]=inputObject[prop]);return normalizedInput}var priorities={};function addUnitPriority(unit,priority){priorities[unit]=priority}function zeroFill(number,targetLength,forceSign){var absNumber=""+Math.abs(number),zerosToFill=targetLength-absNumber.length;return(number>=0?forceSign?"+":"":"-")+Math.pow(10,Math.max(0,zerosToFill)).toString().substr(1)+absNumber}var formattingTokens=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,localFormattingTokens=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,formatFunctions={},formatTokenFunctions={};function addFormatToken(token,padded,ordinal,callback){var func=callback;"string"==typeof callback&&(func=function(){return this[callback]()}),token&&(formatTokenFunctions[token]=func),padded&&(formatTokenFunctions[padded[0]]=function(){return zeroFill(func.apply(this,arguments),padded[1],padded[2])}),ordinal&&(formatTokenFunctions[ordinal]=function(){return this.localeData().ordinal(func.apply(this,arguments),token)})}function formatMoment(m,format){return m.isValid()?(format=expandFormat(format,m.localeData()),formatFunctions[format]=formatFunctions[format]||function(format){var i,length,input,array=format.match(formattingTokens);for(i=0,length=array.length;i<length;i++)formatTokenFunctions[array[i]]?array[i]=formatTokenFunctions[array[i]]:array[i]=(input=array[i]).match(/\[[\s\S]/)?input.replace(/^\[|\]$/g,""):input.replace(/\\/g,"");return function(mom){var i,output="";for(i=0;i<length;i++)output+=isFunction(array[i])?array[i].call(mom,format):array[i];return output}}(format),formatFunctions[format](m)):m.localeData().invalidDate()}function expandFormat(format,locale){var i=5;function replaceLongDateFormatTokens(input){return locale.longDateFormat(input)||input}for(localFormattingTokens.lastIndex=0;i>=0&&localFormattingTokens.test(format);)format=format.replace(localFormattingTokens,replaceLongDateFormatTokens),localFormattingTokens.lastIndex=0,i-=1;return format}var match1=/\d/,match2=/\d\d/,match3=/\d{3}/,match4=/\d{4}/,match6=/[+-]?\d{6}/,match1to2=/\d\d?/,match3to4=/\d\d\d\d?/,match5to6=/\d\d\d\d\d\d?/,match1to3=/\d{1,3}/,match1to4=/\d{1,4}/,match1to6=/[+-]?\d{1,6}/,matchUnsigned=/\d+/,matchSigned=/[+-]?\d+/,matchOffset=/Z|[+-]\d\d:?\d\d/gi,matchShortOffset=/Z|[+-]\d\d(?::?\d\d)?/gi,matchWord=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,regexes={};function addRegexToken(token,regex,strictRegex){regexes[token]=isFunction(regex)?regex:function(isStrict,localeData){return isStrict&&strictRegex?strictRegex:regex}}function getParseRegexForToken(token,config){return hasOwnProp(regexes,token)?regexes[token](config._strict,config._locale):new RegExp(regexEscape(token.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4})))}function regexEscape(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var tokens={};function addParseToken(token,callback){var i,func=callback;for("string"==typeof token&&(token=[token]),isNumber(callback)&&(func=function(input,array){array[callback]=toInt(input)}),i=0;i<token.length;i++)tokens[token[i]]=func}function addWeekParseToken(token,callback){addParseToken(token,function(input,array,config,token){config._w=config._w||{},callback(input,config._w,config,token)})}function addTimeToArrayFromToken(token,input,config){null!=input&&hasOwnProp(tokens,token)&&tokens[token](input,config._a,config,token)}var YEAR=0,MONTH=1,DATE=2,HOUR=3,MINUTE=4,SECOND=5,MILLISECOND=6,WEEK=7,WEEKDAY=8;function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4==0&&year%100!=0||year%400==0}addFormatToken("Y",0,0,function(){var y=this.year();return y<=9999?""+y:"+"+y}),addFormatToken(0,["YY",2],0,function(){return this.year()%100}),addFormatToken(0,["YYYY",4],0,"year"),addFormatToken(0,["YYYYY",5],0,"year"),addFormatToken(0,["YYYYYY",6,!0],0,"year"),addUnitAlias("year","y"),addUnitPriority("year",1),addRegexToken("Y",matchSigned),addRegexToken("YY",match1to2,match2),addRegexToken("YYYY",match1to4,match4),addRegexToken("YYYYY",match1to6,match6),addRegexToken("YYYYYY",match1to6,match6),addParseToken(["YYYYY","YYYYYY"],YEAR),addParseToken("YYYY",function(input,array){array[YEAR]=2===input.length?hooks.parseTwoDigitYear(input):toInt(input)}),addParseToken("YY",function(input,array){array[YEAR]=hooks.parseTwoDigitYear(input)}),addParseToken("Y",function(input,array){array[YEAR]=parseInt(input,10)}),hooks.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};var indexOf,getSetYear=makeGetSet("FullYear",!0);function makeGetSet(unit,keepTime){return function(value){return null!=value?(set$1(this,unit,value),hooks.updateOffset(this,keepTime),this):get(this,unit)}}function get(mom,unit){return mom.isValid()?mom._d["get"+(mom._isUTC?"UTC":"")+unit]():NaN}function set$1(mom,unit,value){mom.isValid()&&!isNaN(value)&&("FullYear"===unit&&isLeapYear(mom.year())&&1===mom.month()&&29===mom.date()?mom._d["set"+(mom._isUTC?"UTC":"")+unit](value,mom.month(),daysInMonth(value,mom.month())):mom._d["set"+(mom._isUTC?"UTC":"")+unit](value))}function daysInMonth(year,month){if(isNaN(year)||isNaN(month))return NaN;var x,modMonth=(month%(x=12)+x)%x;return year+=(month-modMonth)/12,1===modMonth?isLeapYear(year)?29:28:31-modMonth%7%2}indexOf=Array.prototype.indexOf?Array.prototype.indexOf:function(o){var i;for(i=0;i<this.length;++i)if(this[i]===o)return i;return-1},addFormatToken("M",["MM",2],"Mo",function(){return this.month()+1}),addFormatToken("MMM",0,0,function(format){return this.localeData().monthsShort(this,format)}),addFormatToken("MMMM",0,0,function(format){return this.localeData().months(this,format)}),addUnitAlias("month","M"),addUnitPriority("month",8),addRegexToken("M",match1to2),addRegexToken("MM",match1to2,match2),addRegexToken("MMM",function(isStrict,locale){return locale.monthsShortRegex(isStrict)}),addRegexToken("MMMM",function(isStrict,locale){return locale.monthsRegex(isStrict)}),addParseToken(["M","MM"],function(input,array){array[MONTH]=toInt(input)-1}),addParseToken(["MMM","MMMM"],function(input,array,config,token){var month=config._locale.monthsParse(input,token,config._strict);null!=month?array[MONTH]=month:getParsingFlags(config).invalidMonth=input});var MONTHS_IN_FORMAT=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,defaultLocaleMonths="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var defaultLocaleMonthsShort="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function setMonth(mom,value){var dayOfMonth;if(!mom.isValid())return mom;if("string"==typeof value)if(/^\d+$/.test(value))value=toInt(value);else if(!isNumber(value=mom.localeData().monthsParse(value)))return mom;return dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value)),mom._d["set"+(mom._isUTC?"UTC":"")+"Month"](value,dayOfMonth),mom}function getSetMonth(value){return null!=value?(setMonth(this,value),hooks.updateOffset(this,!0),this):get(this,"Month")}var defaultMonthsShortRegex=matchWord;var defaultMonthsRegex=matchWord;function computeMonthsParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<12;i++)mom=createUTC([2e3,i]),shortPieces.push(this.monthsShort(mom,"")),longPieces.push(this.months(mom,"")),mixedPieces.push(this.months(mom,"")),mixedPieces.push(this.monthsShort(mom,""));for(shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<12;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]);for(i=0;i<24;i++)mixedPieces[i]=regexEscape(mixedPieces[i]);this._monthsRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i")}function createUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));return y<100&&y>=0&&isFinite(date.getUTCFullYear())&&date.setUTCFullYear(y),date}function firstWeekOffset(year,dow,doy){var fwd=7+dow-doy;return-((7+createUTCDate(year,0,fwd).getUTCDay()-dow)%7)+fwd-1}function dayOfYearFromWeeks(year,week,weekday,dow,doy){var resYear,resDayOfYear,dayOfYear=1+7*(week-1)+(7+weekday-dow)%7+firstWeekOffset(year,dow,doy);return dayOfYear<=0?resDayOfYear=daysInYear(resYear=year-1)+dayOfYear:dayOfYear>daysInYear(year)?(resYear=year+1,resDayOfYear=dayOfYear-daysInYear(year)):(resYear=year,resDayOfYear=dayOfYear),{year:resYear,dayOfYear:resDayOfYear}}function weekOfYear(mom,dow,doy){var resWeek,resYear,weekOffset=firstWeekOffset(mom.year(),dow,doy),week=Math.floor((mom.dayOfYear()-weekOffset-1)/7)+1;return week<1?resWeek=week+weeksInYear(resYear=mom.year()-1,dow,doy):week>weeksInYear(mom.year(),dow,doy)?(resWeek=week-weeksInYear(mom.year(),dow,doy),resYear=mom.year()+1):(resYear=mom.year(),resWeek=week),{week:resWeek,year:resYear}}function weeksInYear(year,dow,doy){var weekOffset=firstWeekOffset(year,dow,doy),weekOffsetNext=firstWeekOffset(year+1,dow,doy);return(daysInYear(year)-weekOffset+weekOffsetNext)/7}addFormatToken("w",["ww",2],"wo","week"),addFormatToken("W",["WW",2],"Wo","isoWeek"),addUnitAlias("week","w"),addUnitAlias("isoWeek","W"),addUnitPriority("week",5),addUnitPriority("isoWeek",5),addRegexToken("w",match1to2),addRegexToken("ww",match1to2,match2),addRegexToken("W",match1to2),addRegexToken("WW",match1to2,match2),addWeekParseToken(["w","ww","W","WW"],function(input,week,config,token){week[token.substr(0,1)]=toInt(input)});addFormatToken("d",0,"do","day"),addFormatToken("dd",0,0,function(format){return this.localeData().weekdaysMin(this,format)}),addFormatToken("ddd",0,0,function(format){return this.localeData().weekdaysShort(this,format)}),addFormatToken("dddd",0,0,function(format){return this.localeData().weekdays(this,format)}),addFormatToken("e",0,0,"weekday"),addFormatToken("E",0,0,"isoWeekday"),addUnitAlias("day","d"),addUnitAlias("weekday","e"),addUnitAlias("isoWeekday","E"),addUnitPriority("day",11),addUnitPriority("weekday",11),addUnitPriority("isoWeekday",11),addRegexToken("d",match1to2),addRegexToken("e",match1to2),addRegexToken("E",match1to2),addRegexToken("dd",function(isStrict,locale){return locale.weekdaysMinRegex(isStrict)}),addRegexToken("ddd",function(isStrict,locale){return locale.weekdaysShortRegex(isStrict)}),addRegexToken("dddd",function(isStrict,locale){return locale.weekdaysRegex(isStrict)}),addWeekParseToken(["dd","ddd","dddd"],function(input,week,config,token){var weekday=config._locale.weekdaysParse(input,token,config._strict);null!=weekday?week.d=weekday:getParsingFlags(config).invalidWeekday=input}),addWeekParseToken(["d","e","E"],function(input,week,config,token){week[token]=toInt(input)});var defaultLocaleWeekdays="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var defaultLocaleWeekdaysShort="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var defaultLocaleWeekdaysMin="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var defaultWeekdaysRegex=matchWord;var defaultWeekdaysShortRegex=matchWord;var defaultWeekdaysMinRegex=matchWord;function computeWeekdaysParse(){function cmpLenRev(a,b){return b.length-a.length}var i,mom,minp,shortp,longp,minPieces=[],shortPieces=[],longPieces=[],mixedPieces=[];for(i=0;i<7;i++)mom=createUTC([2e3,1]).day(i),minp=this.weekdaysMin(mom,""),shortp=this.weekdaysShort(mom,""),longp=this.weekdays(mom,""),minPieces.push(minp),shortPieces.push(shortp),longPieces.push(longp),mixedPieces.push(minp),mixedPieces.push(shortp),mixedPieces.push(longp);for(minPieces.sort(cmpLenRev),shortPieces.sort(cmpLenRev),longPieces.sort(cmpLenRev),mixedPieces.sort(cmpLenRev),i=0;i<7;i++)shortPieces[i]=regexEscape(shortPieces[i]),longPieces[i]=regexEscape(longPieces[i]),mixedPieces[i]=regexEscape(mixedPieces[i]);this._weekdaysRegex=new RegExp("^("+mixedPieces.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+longPieces.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+shortPieces.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+minPieces.join("|")+")","i")}function hFormat(){return this.hours()%12||12}function meridiem(token,lowercase){addFormatToken(token,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),lowercase)})}function matchMeridiem(isStrict,locale){return locale._meridiemParse}addFormatToken("H",["HH",2],0,"hour"),addFormatToken("h",["hh",2],0,hFormat),addFormatToken("k",["kk",2],0,function(){return this.hours()||24}),addFormatToken("hmm",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)}),addFormatToken("hmmss",0,0,function(){return""+hFormat.apply(this)+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),addFormatToken("Hmm",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)}),addFormatToken("Hmmss",0,0,function(){return""+this.hours()+zeroFill(this.minutes(),2)+zeroFill(this.seconds(),2)}),meridiem("a",!0),meridiem("A",!1),addUnitAlias("hour","h"),addUnitPriority("hour",13),addRegexToken("a",matchMeridiem),addRegexToken("A",matchMeridiem),addRegexToken("H",match1to2),addRegexToken("h",match1to2),addRegexToken("k",match1to2),addRegexToken("HH",match1to2,match2),addRegexToken("hh",match1to2,match2),addRegexToken("kk",match1to2,match2),addRegexToken("hmm",match3to4),addRegexToken("hmmss",match5to6),addRegexToken("Hmm",match3to4),addRegexToken("Hmmss",match5to6),addParseToken(["H","HH"],HOUR),addParseToken(["k","kk"],function(input,array,config){var kInput=toInt(input);array[HOUR]=24===kInput?0:kInput}),addParseToken(["a","A"],function(input,array,config){config._isPm=config._locale.isPM(input),config._meridiem=input}),addParseToken(["h","hh"],function(input,array,config){array[HOUR]=toInt(input),getParsingFlags(config).bigHour=!0}),addParseToken("hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos)),getParsingFlags(config).bigHour=!0}),addParseToken("hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2)),getParsingFlags(config).bigHour=!0}),addParseToken("Hmm",function(input,array,config){var pos=input.length-2;array[HOUR]=toInt(input.substr(0,pos)),array[MINUTE]=toInt(input.substr(pos))}),addParseToken("Hmmss",function(input,array,config){var pos1=input.length-4,pos2=input.length-2;array[HOUR]=toInt(input.substr(0,pos1)),array[MINUTE]=toInt(input.substr(pos1,2)),array[SECOND]=toInt(input.substr(pos2))});var globalLocale,getSetHour=makeGetSet("Hours",!0),baseConfig={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:defaultLocaleMonths,monthsShort:defaultLocaleMonthsShort,week:{dow:0,doy:6},weekdays:defaultLocaleWeekdays,weekdaysMin:defaultLocaleWeekdaysMin,weekdaysShort:defaultLocaleWeekdaysShort,meridiemParse:/[ap]\.?m?\.?/i},locales={},localeFamilies={};function normalizeLocale(key){return key?key.toLowerCase().replace("_","-"):key}function loadLocale(name){var oldLocale=null;if(!locales[name]&&"undefined"!=typeof module&&module&&module.exports)try{oldLocale=globalLocale._abbr,require("./locale/"+name),getSetGlobalLocale(oldLocale)}catch(e){}return locales[name]}function getSetGlobalLocale(key,values){var data;return key&&((data=isUndefined(values)?getLocale(key):defineLocale(key,values))?globalLocale=data:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+key+" not found. Did you forget to load it?")),globalLocale._abbr}function defineLocale(name,config){if(null!==config){var locale,parentConfig=baseConfig;if(config.abbr=name,null!=locales[name])deprecateSimple("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),parentConfig=locales[name]._config;else if(null!=config.parentLocale)if(null!=locales[config.parentLocale])parentConfig=locales[config.parentLocale]._config;else{if(null==(locale=loadLocale(config.parentLocale)))return localeFamilies[config.parentLocale]||(localeFamilies[config.parentLocale]=[]),localeFamilies[config.parentLocale].push({name:name,config:config}),null;parentConfig=locale._config}return locales[name]=new Locale(mergeConfigs(parentConfig,config)),localeFamilies[name]&&localeFamilies[name].forEach(function(x){defineLocale(x.name,x.config)}),getSetGlobalLocale(name),locales[name]}return delete locales[name],null}function getLocale(key){var locale;if(key&&key._locale&&key._locale._abbr&&(key=key._locale._abbr),!key)return globalLocale;if(!isArray(key)){if(locale=loadLocale(key))return locale;key=[key]}return function(names){for(var j,next,locale,split,i=0;i<names.length;){for(j=(split=normalizeLocale(names[i]).split("-")).length,next=(next=normalizeLocale(names[i+1]))?next.split("-"):null;j>0;){if(locale=loadLocale(split.slice(0,j).join("-")))return locale;if(next&&next.length>=j&&compareArrays(split,next,!0)>=j-1)break;j--}i++}return globalLocale}(key)}function checkOverflow(m){var overflow,a=m._a;return a&&-2===getParsingFlags(m).overflow&&(overflow=a[MONTH]<0||a[MONTH]>11?MONTH:a[DATE]<1||a[DATE]>daysInMonth(a[YEAR],a[MONTH])?DATE:a[HOUR]<0||a[HOUR]>24||24===a[HOUR]&&(0!==a[MINUTE]||0!==a[SECOND]||0!==a[MILLISECOND])?HOUR:a[MINUTE]<0||a[MINUTE]>59?MINUTE:a[SECOND]<0||a[SECOND]>59?SECOND:a[MILLISECOND]<0||a[MILLISECOND]>999?MILLISECOND:-1,getParsingFlags(m)._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)&&(overflow=DATE),getParsingFlags(m)._overflowWeeks&&-1===overflow&&(overflow=WEEK),getParsingFlags(m)._overflowWeekday&&-1===overflow&&(overflow=WEEKDAY),getParsingFlags(m).overflow=overflow),m}function defaults(a,b,c){return null!=a?a:null!=b?b:c}function configFromArray(config){var i,date,currentDate,expectedWeekday,yearToUse,input=[];if(!config._d){for(currentDate=function(config){var nowValue=new Date(hooks.now());return config._useUTC?[nowValue.getUTCFullYear(),nowValue.getUTCMonth(),nowValue.getUTCDate()]:[nowValue.getFullYear(),nowValue.getMonth(),nowValue.getDate()]}(config),config._w&&null==config._a[DATE]&&null==config._a[MONTH]&&function(config){var w,weekYear,week,weekday,dow,doy,temp,weekdayOverflow;if(null!=(w=config._w).GG||null!=w.W||null!=w.E)dow=1,doy=4,weekYear=defaults(w.GG,config._a[YEAR],weekOfYear(createLocal(),1,4).year),week=defaults(w.W,1),((weekday=defaults(w.E,1))<1||weekday>7)&&(weekdayOverflow=!0);else{dow=config._locale._week.dow,doy=config._locale._week.doy;var curWeek=weekOfYear(createLocal(),dow,doy);weekYear=defaults(w.gg,config._a[YEAR],curWeek.year),week=defaults(w.w,curWeek.week),null!=w.d?((weekday=w.d)<0||weekday>6)&&(weekdayOverflow=!0):null!=w.e?(weekday=w.e+dow,(w.e<0||w.e>6)&&(weekdayOverflow=!0)):weekday=dow}week<1||week>weeksInYear(weekYear,dow,doy)?getParsingFlags(config)._overflowWeeks=!0:null!=weekdayOverflow?getParsingFlags(config)._overflowWeekday=!0:(temp=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),config._a[YEAR]=temp.year,config._dayOfYear=temp.dayOfYear)}(config),null!=config._dayOfYear&&(yearToUse=defaults(config._a[YEAR],currentDate[YEAR]),(config._dayOfYear>daysInYear(yearToUse)||0===config._dayOfYear)&&(getParsingFlags(config)._overflowDayOfYear=!0),date=createUTCDate(yearToUse,0,config._dayOfYear),config._a[MONTH]=date.getUTCMonth(),config._a[DATE]=date.getUTCDate()),i=0;i<3&&null==config._a[i];++i)config._a[i]=input[i]=currentDate[i];for(;i<7;i++)config._a[i]=input[i]=null==config._a[i]?2===i?1:0:config._a[i];24===config._a[HOUR]&&0===config._a[MINUTE]&&0===config._a[SECOND]&&0===config._a[MILLISECOND]&&(config._nextDay=!0,config._a[HOUR]=0),config._d=(config._useUTC?createUTCDate:function(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);return y<100&&y>=0&&isFinite(date.getFullYear())&&date.setFullYear(y),date}).apply(null,input),expectedWeekday=config._useUTC?config._d.getUTCDay():config._d.getDay(),null!=config._tzm&&config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),config._nextDay&&(config._a[HOUR]=24),config._w&&void 0!==config._w.d&&config._w.d!==expectedWeekday&&(getParsingFlags(config).weekdayMismatch=!0)}}var extendedIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,basicIsoRegex=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,tzRegex=/Z|[+-]\d\d(?::?\d\d)?/,isoDates=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],isoTimes=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],aspNetJsonRegex=/^\/?Date\((\-?\d+)/i;function configFromISO(config){var i,l,allowTime,dateFormat,timeFormat,tzFormat,string=config._i,match=extendedIsoRegex.exec(string)||basicIsoRegex.exec(string);if(match){for(getParsingFlags(config).iso=!0,i=0,l=isoDates.length;i<l;i++)if(isoDates[i][1].exec(match[1])){dateFormat=isoDates[i][0],allowTime=!1!==isoDates[i][2];break}if(null==dateFormat)return void(config._isValid=!1);if(match[3]){for(i=0,l=isoTimes.length;i<l;i++)if(isoTimes[i][1].exec(match[3])){timeFormat=(match[2]||" ")+isoTimes[i][0];break}if(null==timeFormat)return void(config._isValid=!1)}if(!allowTime&&null!=timeFormat)return void(config._isValid=!1);if(match[4]){if(!tzRegex.exec(match[4]))return void(config._isValid=!1);tzFormat="Z"}config._f=dateFormat+(timeFormat||"")+(tzFormat||""),configFromStringAndFormat(config)}else config._isValid=!1}var rfc2822=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function extractFromRFC2822Strings(yearStr,monthStr,dayStr,hourStr,minuteStr,secondStr){var result=[function(yearStr){var year=parseInt(yearStr,10);if(year<=49)return 2e3+year;if(year<=999)return 1900+year;return year}(yearStr),defaultLocaleMonthsShort.indexOf(monthStr),parseInt(dayStr,10),parseInt(hourStr,10),parseInt(minuteStr,10)];return secondStr&&result.push(parseInt(secondStr,10)),result}var obsOffsets={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function configFromRFC2822(config){var match=rfc2822.exec(config._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(match){var parsedArray=extractFromRFC2822Strings(match[4],match[3],match[2],match[5],match[6],match[7]);if(!function(weekdayStr,parsedInput,config){return!weekdayStr||defaultLocaleWeekdaysShort.indexOf(weekdayStr)===new Date(parsedInput[0],parsedInput[1],parsedInput[2]).getDay()||(getParsingFlags(config).weekdayMismatch=!0,config._isValid=!1,!1)}(match[1],parsedArray,config))return;config._a=parsedArray,config._tzm=function(obsOffset,militaryOffset,numOffset){if(obsOffset)return obsOffsets[obsOffset];if(militaryOffset)return 0;var hm=parseInt(numOffset,10),m=hm%100;return(hm-m)/100*60+m}(match[8],match[9],match[10]),config._d=createUTCDate.apply(null,config._a),config._d.setUTCMinutes(config._d.getUTCMinutes()-config._tzm),getParsingFlags(config).rfc2822=!0}else config._isValid=!1}function configFromStringAndFormat(config){if(config._f!==hooks.ISO_8601)if(config._f!==hooks.RFC_2822){config._a=[],getParsingFlags(config).empty=!0;var i,parsedInput,tokens,token,skipped,string=""+config._i,stringLength=string.length,totalParsedInputLength=0;for(tokens=expandFormat(config._f,config._locale).match(formattingTokens)||[],i=0;i<tokens.length;i++)token=tokens[i],(parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0])&&((skipped=string.substr(0,string.indexOf(parsedInput))).length>0&&getParsingFlags(config).unusedInput.push(skipped),string=string.slice(string.indexOf(parsedInput)+parsedInput.length),totalParsedInputLength+=parsedInput.length),formatTokenFunctions[token]?(parsedInput?getParsingFlags(config).empty=!1:getParsingFlags(config).unusedTokens.push(token),addTimeToArrayFromToken(token,parsedInput,config)):config._strict&&!parsedInput&&getParsingFlags(config).unusedTokens.push(token);getParsingFlags(config).charsLeftOver=stringLength-totalParsedInputLength,string.length>0&&getParsingFlags(config).unusedInput.push(string),config._a[HOUR]<=12&&!0===getParsingFlags(config).bigHour&&config._a[HOUR]>0&&(getParsingFlags(config).bigHour=void 0),getParsingFlags(config).parsedDateParts=config._a.slice(0),getParsingFlags(config).meridiem=config._meridiem,config._a[HOUR]=function(locale,hour,meridiem){var isPm;if(null==meridiem)return hour;return null!=locale.meridiemHour?locale.meridiemHour(hour,meridiem):null!=locale.isPM?((isPm=locale.isPM(meridiem))&&hour<12&&(hour+=12),isPm||12!==hour||(hour=0),hour):hour}(config._locale,config._a[HOUR],config._meridiem),configFromArray(config),checkOverflow(config)}else configFromRFC2822(config);else configFromISO(config)}function prepareConfig(config){var input=config._i,format=config._f;return config._locale=config._locale||getLocale(config._l),null===input||void 0===format&&""===input?createInvalid({nullInput:!0}):("string"==typeof input&&(config._i=input=config._locale.preparse(input)),isMoment(input)?new Moment(checkOverflow(input)):(isDate(input)?config._d=input:isArray(format)?function(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(0===config._f.length)return getParsingFlags(config).invalidFormat=!0,void(config._d=new Date(NaN));for(i=0;i<config._f.length;i++)currentScore=0,tempConfig=copyConfig({},config),null!=config._useUTC&&(tempConfig._useUTC=config._useUTC),tempConfig._f=config._f[i],configFromStringAndFormat(tempConfig),isValid(tempConfig)&&(currentScore+=getParsingFlags(tempConfig).charsLeftOver,currentScore+=10*getParsingFlags(tempConfig).unusedTokens.length,getParsingFlags(tempConfig).score=currentScore,(null==scoreToBeat||currentScore<scoreToBeat)&&(scoreToBeat=currentScore,bestMoment=tempConfig));extend(config,bestMoment||tempConfig)}(config):format?configFromStringAndFormat(config):function(config){var input=config._i;isUndefined(input)?config._d=new Date(hooks.now()):isDate(input)?config._d=new Date(input.valueOf()):"string"==typeof input?function(config){var matched=aspNetJsonRegex.exec(config._i);null===matched?(configFromISO(config),!1===config._isValid&&(delete config._isValid,configFromRFC2822(config),!1===config._isValid&&(delete config._isValid,hooks.createFromInputFallback(config)))):config._d=new Date(+matched[1])}(config):isArray(input)?(config._a=map(input.slice(0),function(obj){return parseInt(obj,10)}),configFromArray(config)):isObject(input)?function(config){if(!config._d){var i=normalizeObjectUnits(config._i);config._a=map([i.year,i.month,i.day||i.date,i.hour,i.minute,i.second,i.millisecond],function(obj){return obj&&parseInt(obj,10)}),configFromArray(config)}}(config):isNumber(input)?config._d=new Date(input):hooks.createFromInputFallback(config)}(config),isValid(config)||(config._d=null),config))}function createLocalOrUTC(input,format,locale,strict,isUTC){var res,c={};return!0!==locale&&!1!==locale||(strict=locale,locale=void 0),(isObject(input)&&function(obj){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(obj).length;var k;for(k in obj)if(obj.hasOwnProperty(k))return!1;return!0}(input)||isArray(input)&&0===input.length)&&(input=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=isUTC,c._l=locale,c._i=input,c._f=format,c._strict=strict,(res=new Moment(checkOverflow(prepareConfig(c))))._nextDay&&(res.add(1,"d"),res._nextDay=void 0),res}function createLocal(input,format,locale,strict){return createLocalOrUTC(input,format,locale,strict,!1)}hooks.createFromInputFallback=deprecate("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(config){config._d=new Date(config._i+(config._useUTC?" UTC":""))}),hooks.ISO_8601=function(){},hooks.RFC_2822=function(){};var prototypeMin=deprecate("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other<this?this:other:createInvalid()}),prototypeMax=deprecate("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var other=createLocal.apply(null,arguments);return this.isValid()&&other.isValid()?other>this?this:other:createInvalid()});function pickBy(fn,moments){var res,i;if(1===moments.length&&isArray(moments[0])&&(moments=moments[0]),!moments.length)return createLocal();for(res=moments[0],i=1;i<moments.length;++i)moments[i].isValid()&&!moments[i][fn](res)||(res=moments[i]);return res}var ordering=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._isValid=function(m){for(var key in m)if(-1===indexOf.call(ordering,key)||null!=m[key]&&isNaN(m[key]))return!1;for(var unitHasDecimal=!1,i=0;i<ordering.length;++i)if(m[ordering[i]]){if(unitHasDecimal)return!1;parseFloat(m[ordering[i]])!==toInt(m[ordering[i]])&&(unitHasDecimal=!0)}return!0}(normalizedInput),this._milliseconds=+milliseconds+1e3*seconds+6e4*minutes+1e3*hours*60*60,this._days=+days+7*weeks,this._months=+months+3*quarters+12*years,this._data={},this._locale=getLocale(),this._bubble()}function isDuration(obj){return obj instanceof Duration}function absRound(number){return number<0?-1*Math.round(-1*number):Math.round(number)}function offset(token,separator){addFormatToken(token,0,0,function(){var offset=this.utcOffset(),sign="+";return offset<0&&(offset=-offset,sign="-"),sign+zeroFill(~~(offset/60),2)+separator+zeroFill(~~offset%60,2)})}offset("Z",":"),offset("ZZ",""),addRegexToken("Z",matchShortOffset),addRegexToken("ZZ",matchShortOffset),addParseToken(["Z","ZZ"],function(input,array,config){config._useUTC=!0,config._tzm=offsetFromString(matchShortOffset,input)});var chunkOffset=/([\+\-]|\d\d)/gi;function offsetFromString(matcher,string){var matches=(string||"").match(matcher);if(null===matches)return null;var parts=((matches[matches.length-1]||[])+"").match(chunkOffset)||["-",0,0],minutes=60*parts[1]+toInt(parts[2]);return 0===minutes?0:"+"===parts[0]?minutes:-minutes}function cloneWithOffset(input,model){var res,diff;return model._isUTC?(res=model.clone(),diff=(isMoment(input)||isDate(input)?input.valueOf():createLocal(input).valueOf())-res.valueOf(),res._d.setTime(res._d.valueOf()+diff),hooks.updateOffset(res,!1),res):createLocal(input).local()}function getDateOffset(m){return 15*-Math.round(m._d.getTimezoneOffset()/15)}function isUtc(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}hooks.updateOffset=function(){};var aspNetRegex=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,isoRegex=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function createDuration(input,key){var sign,ret,diffRes,duration=input,match=null;return isDuration(input)?duration={ms:input._milliseconds,d:input._days,M:input._months}:isNumber(input)?(duration={},key?duration[key]=input:duration.milliseconds=input):(match=aspNetRegex.exec(input))?(sign="-"===match[1]?-1:1,duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(absRound(1e3*match[MILLISECOND]))*sign}):(match=isoRegex.exec(input))?(sign="-"===match[1]?-1:(match[1],1),duration={y:parseIso(match[2],sign),M:parseIso(match[3],sign),w:parseIso(match[4],sign),d:parseIso(match[5],sign),h:parseIso(match[6],sign),m:parseIso(match[7],sign),s:parseIso(match[8],sign)}):null==duration?duration={}:"object"==typeof duration&&("from"in duration||"to"in duration)&&(diffRes=function(base,other){var res;if(!base.isValid()||!other.isValid())return{milliseconds:0,months:0};other=cloneWithOffset(other,base),base.isBefore(other)?res=positiveMomentsDifference(base,other):((res=positiveMomentsDifference(other,base)).milliseconds=-res.milliseconds,res.months=-res.months);return res}(createLocal(duration.from),createLocal(duration.to)),(duration={}).ms=diffRes.milliseconds,duration.M=diffRes.months),ret=new Duration(duration),isDuration(input)&&hasOwnProp(input,"_locale")&&(ret._locale=input._locale),ret}function parseIso(inp,sign){var res=inp&&parseFloat(inp.replace(",","."));return(isNaN(res)?0:res)*sign}function positiveMomentsDifference(base,other){var res={milliseconds:0,months:0};return res.months=other.month()-base.month()+12*(other.year()-base.year()),base.clone().add(res.months,"M").isAfter(other)&&--res.months,res.milliseconds=+other-+base.clone().add(res.months,"M"),res}function createAdder(direction,name){return function(val,period){var tmp;return null===period||isNaN(+period)||(deprecateSimple(name,"moment()."+name+"(period, number) is deprecated. Please use moment()."+name+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),tmp=val,val=period,period=tmp),addSubtract(this,createDuration(val="string"==typeof val?+val:val,period),direction),this}}function addSubtract(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=absRound(duration._days),months=absRound(duration._months);mom.isValid()&&(updateOffset=null==updateOffset||updateOffset,months&&setMonth(mom,get(mom,"Month")+months*isAdding),days&&set$1(mom,"Date",get(mom,"Date")+days*isAdding),milliseconds&&mom._d.setTime(mom._d.valueOf()+milliseconds*isAdding),updateOffset&&hooks.updateOffset(mom,days||months))}createDuration.fn=Duration.prototype,createDuration.invalid=function(){return createDuration(NaN)};var add=createAdder(1,"add"),subtract=createAdder(-1,"subtract");function monthDiff(a,b){var wholeMonthDiff=12*(b.year()-a.year())+(b.month()-a.month()),anchor=a.clone().add(wholeMonthDiff,"months");return-(wholeMonthDiff+(b-anchor<0?(b-anchor)/(anchor-a.clone().add(wholeMonthDiff-1,"months")):(b-anchor)/(a.clone().add(wholeMonthDiff+1,"months")-anchor)))||0}function locale(key){var newLocaleData;return void 0===key?this._locale._abbr:(null!=(newLocaleData=getLocale(key))&&(this._locale=newLocaleData),this)}hooks.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",hooks.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var lang=deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(key){return void 0===key?this.localeData():this.locale(key)});function localeData(){return this._locale}function addWeekYearFormatToken(token,getter){addFormatToken(0,[token,token.length],0,getter)}function getSetWeekYearHelper(input,week,weekday,dow,doy){var weeksTarget;return null==input?weekOfYear(this,dow,doy).year:(week>(weeksTarget=weeksInYear(input,dow,doy))&&(week=weeksTarget),function(weekYear,week,weekday,dow,doy){var dayOfYearData=dayOfYearFromWeeks(weekYear,week,weekday,dow,doy),date=createUTCDate(dayOfYearData.year,0,dayOfYearData.dayOfYear);return this.year(date.getUTCFullYear()),this.month(date.getUTCMonth()),this.date(date.getUTCDate()),this}.call(this,input,week,weekday,dow,doy))}addFormatToken(0,["gg",2],0,function(){return this.weekYear()%100}),addFormatToken(0,["GG",2],0,function(){return this.isoWeekYear()%100}),addWeekYearFormatToken("gggg","weekYear"),addWeekYearFormatToken("ggggg","weekYear"),addWeekYearFormatToken("GGGG","isoWeekYear"),addWeekYearFormatToken("GGGGG","isoWeekYear"),addUnitAlias("weekYear","gg"),addUnitAlias("isoWeekYear","GG"),addUnitPriority("weekYear",1),addUnitPriority("isoWeekYear",1),addRegexToken("G",matchSigned),addRegexToken("g",matchSigned),addRegexToken("GG",match1to2,match2),addRegexToken("gg",match1to2,match2),addRegexToken("GGGG",match1to4,match4),addRegexToken("gggg",match1to4,match4),addRegexToken("GGGGG",match1to6,match6),addRegexToken("ggggg",match1to6,match6),addWeekParseToken(["gggg","ggggg","GGGG","GGGGG"],function(input,week,config,token){week[token.substr(0,2)]=toInt(input)}),addWeekParseToken(["gg","GG"],function(input,week,config,token){week[token]=hooks.parseTwoDigitYear(input)}),addFormatToken("Q",0,"Qo","quarter"),addUnitAlias("quarter","Q"),addUnitPriority("quarter",7),addRegexToken("Q",match1),addParseToken("Q",function(input,array){array[MONTH]=3*(toInt(input)-1)}),addFormatToken("D",["DD",2],"Do","date"),addUnitAlias("date","D"),addUnitPriority("date",9),addRegexToken("D",match1to2),addRegexToken("DD",match1to2,match2),addRegexToken("Do",function(isStrict,locale){return isStrict?locale._dayOfMonthOrdinalParse||locale._ordinalParse:locale._dayOfMonthOrdinalParseLenient}),addParseToken(["D","DD"],DATE),addParseToken("Do",function(input,array){array[DATE]=toInt(input.match(match1to2)[0])});var getSetDayOfMonth=makeGetSet("Date",!0);addFormatToken("DDD",["DDDD",3],"DDDo","dayOfYear"),addUnitAlias("dayOfYear","DDD"),addUnitPriority("dayOfYear",4),addRegexToken("DDD",match1to3),addRegexToken("DDDD",match3),addParseToken(["DDD","DDDD"],function(input,array,config){config._dayOfYear=toInt(input)}),addFormatToken("m",["mm",2],0,"minute"),addUnitAlias("minute","m"),addUnitPriority("minute",14),addRegexToken("m",match1to2),addRegexToken("mm",match1to2,match2),addParseToken(["m","mm"],MINUTE);var getSetMinute=makeGetSet("Minutes",!1);addFormatToken("s",["ss",2],0,"second"),addUnitAlias("second","s"),addUnitPriority("second",15),addRegexToken("s",match1to2),addRegexToken("ss",match1to2,match2),addParseToken(["s","ss"],SECOND);var token,getSetSecond=makeGetSet("Seconds",!1);for(addFormatToken("S",0,0,function(){return~~(this.millisecond()/100)}),addFormatToken(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),addFormatToken(0,["SSS",3],0,"millisecond"),addFormatToken(0,["SSSS",4],0,function(){return 10*this.millisecond()}),addFormatToken(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),addFormatToken(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),addFormatToken(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),addFormatToken(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),addFormatToken(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),addUnitAlias("millisecond","ms"),addUnitPriority("millisecond",16),addRegexToken("S",match1to3,match1),addRegexToken("SS",match1to3,match2),addRegexToken("SSS",match1to3,match3),token="SSSS";token.length<=9;token+="S")addRegexToken(token,matchUnsigned);function parseMs(input,array){array[MILLISECOND]=toInt(1e3*("0."+input))}for(token="S";token.length<=9;token+="S")addParseToken(token,parseMs);var getSetMillisecond=makeGetSet("Milliseconds",!1);addFormatToken("z",0,0,"zoneAbbr"),addFormatToken("zz",0,0,"zoneName");var proto=Moment.prototype;function preParsePostFormat(string){return string}proto.add=add,proto.calendar=function(time,formats){var now=time||createLocal(),sod=cloneWithOffset(now,this).startOf("day"),format=hooks.calendarFormat(this,sod)||"sameElse",output=formats&&(isFunction(formats[format])?formats[format].call(this,now):formats[format]);return this.format(output||this.localeData().calendar(format,this,createLocal(now)))},proto.clone=function(){return new Moment(this)},proto.diff=function(input,units,asFloat){var that,zoneDelta,output;if(!this.isValid())return NaN;if(!(that=cloneWithOffset(input,this)).isValid())return NaN;switch(zoneDelta=6e4*(that.utcOffset()-this.utcOffset()),units=normalizeUnits(units)){case"year":output=monthDiff(this,that)/12;break;case"month":output=monthDiff(this,that);break;case"quarter":output=monthDiff(this,that)/3;break;case"second":output=(this-that)/1e3;break;case"minute":output=(this-that)/6e4;break;case"hour":output=(this-that)/36e5;break;case"day":output=(this-that-zoneDelta)/864e5;break;case"week":output=(this-that-zoneDelta)/6048e5;break;default:output=this-that}return asFloat?output:absFloor(output)},proto.endOf=function(units){return void 0===(units=normalizeUnits(units))||"millisecond"===units?this:("date"===units&&(units="day"),this.startOf(units).add(1,"isoWeek"===units?"week":units).subtract(1,"ms"))},proto.format=function(inputString){inputString||(inputString=this.isUtc()?hooks.defaultFormatUtc:hooks.defaultFormat);var output=formatMoment(this,inputString);return this.localeData().postformat(output)},proto.from=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({to:this,from:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.fromNow=function(withoutSuffix){return this.from(createLocal(),withoutSuffix)},proto.to=function(time,withoutSuffix){return this.isValid()&&(isMoment(time)&&time.isValid()||createLocal(time).isValid())?createDuration({from:this,to:time}).locale(this.locale()).humanize(!withoutSuffix):this.localeData().invalidDate()},proto.toNow=function(withoutSuffix){return this.to(createLocal(),withoutSuffix)},proto.get=function(units){return isFunction(this[units=normalizeUnits(units)])?this[units]():this},proto.invalidAt=function(){return getParsingFlags(this).overflow},proto.isAfter=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()>localInput.valueOf():localInput.valueOf()<this.clone().startOf(units).valueOf())},proto.isBefore=function(input,units){var localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(isUndefined(units)?"millisecond":units))?this.valueOf()<localInput.valueOf():this.clone().endOf(units).valueOf()<localInput.valueOf())},proto.isBetween=function(from,to,units,inclusivity){return("("===(inclusivity=inclusivity||"()")[0]?this.isAfter(from,units):!this.isBefore(from,units))&&(")"===inclusivity[1]?this.isBefore(to,units):!this.isAfter(to,units))},proto.isSame=function(input,units){var inputMs,localInput=isMoment(input)?input:createLocal(input);return!(!this.isValid()||!localInput.isValid())&&("millisecond"===(units=normalizeUnits(units||"millisecond"))?this.valueOf()===localInput.valueOf():(inputMs=localInput.valueOf(),this.clone().startOf(units).valueOf()<=inputMs&&inputMs<=this.clone().endOf(units).valueOf()))},proto.isSameOrAfter=function(input,units){return this.isSame(input,units)||this.isAfter(input,units)},proto.isSameOrBefore=function(input,units){return this.isSame(input,units)||this.isBefore(input,units)},proto.isValid=function(){return isValid(this)},proto.lang=lang,proto.locale=locale,proto.localeData=localeData,proto.max=prototypeMax,proto.min=prototypeMin,proto.parsingFlags=function(){return extend({},getParsingFlags(this))},proto.set=function(units,value){if("object"==typeof units)for(var prioritized=function(unitsObj){var units=[];for(var u in unitsObj)units.push({unit:u,priority:priorities[u]});return units.sort(function(a,b){return a.priority-b.priority}),units}(units=normalizeObjectUnits(units)),i=0;i<prioritized.length;i++)this[prioritized[i].unit](units[prioritized[i].unit]);else if(isFunction(this[units=normalizeUnits(units)]))return this[units](value);return this},proto.startOf=function(units){switch(units=normalizeUnits(units)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===units&&this.weekday(0),"isoWeek"===units&&this.isoWeekday(1),"quarter"===units&&this.month(3*Math.floor(this.month()/3)),this},proto.subtract=subtract,proto.toArray=function(){var m=this;return[m.year(),m.month(),m.date(),m.hour(),m.minute(),m.second(),m.millisecond()]},proto.toObject=function(){var m=this;return{years:m.year(),months:m.month(),date:m.date(),hours:m.hours(),minutes:m.minutes(),seconds:m.seconds(),milliseconds:m.milliseconds()}},proto.toDate=function(){return new Date(this.valueOf())},proto.toISOString=function(keepOffset){if(!this.isValid())return null;var utc=!0!==keepOffset,m=utc?this.clone().utc():this;return m.year()<0||m.year()>9999?formatMoment(m,utc?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):isFunction(Date.prototype.toISOString)?utc?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",formatMoment(m,"Z")):formatMoment(m,utc?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},proto.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var func="moment",zone="";this.isLocal()||(func=0===this.utcOffset()?"moment.utc":"moment.parseZone",zone="Z");var prefix="["+func+'("]',year=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",suffix=zone+'[")]';return this.format(prefix+year+"-MM-DD[T]HH:mm:ss.SSS"+suffix)},proto.toJSON=function(){return this.isValid()?this.toISOString():null},proto.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},proto.unix=function(){return Math.floor(this.valueOf()/1e3)},proto.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},proto.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},proto.year=getSetYear,proto.isLeapYear=function(){return isLeapYear(this.year())},proto.weekYear=function(input){return getSetWeekYearHelper.call(this,input,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},proto.isoWeekYear=function(input){return getSetWeekYearHelper.call(this,input,this.isoWeek(),this.isoWeekday(),1,4)},proto.quarter=proto.quarters=function(input){return null==input?Math.ceil((this.month()+1)/3):this.month(3*(input-1)+this.month()%3)},proto.month=getSetMonth,proto.daysInMonth=function(){return daysInMonth(this.year(),this.month())},proto.week=proto.weeks=function(input){var week=this.localeData().week(this);return null==input?week:this.add(7*(input-week),"d")},proto.isoWeek=proto.isoWeeks=function(input){var week=weekOfYear(this,1,4).week;return null==input?week:this.add(7*(input-week),"d")},proto.weeksInYear=function(){var weekInfo=this.localeData()._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)},proto.isoWeeksInYear=function(){return weeksInYear(this.year(),1,4)},proto.date=getSetDayOfMonth,proto.day=proto.days=function(input){if(!this.isValid())return null!=input?this:NaN;var day=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=input?(input=function(input,locale){return"string"!=typeof input?input:isNaN(input)?"number"==typeof(input=locale.weekdaysParse(input))?input:null:parseInt(input,10)}(input,this.localeData()),this.add(input-day,"d")):day},proto.weekday=function(input){if(!this.isValid())return null!=input?this:NaN;var weekday=(this.day()+7-this.localeData()._week.dow)%7;return null==input?weekday:this.add(input-weekday,"d")},proto.isoWeekday=function(input){if(!this.isValid())return null!=input?this:NaN;if(null!=input){var weekday=function(input,locale){return"string"==typeof input?locale.weekdaysParse(input)%7||7:isNaN(input)?null:input}(input,this.localeData());return this.day(this.day()%7?weekday:weekday-7)}return this.day()||7},proto.dayOfYear=function(input){var dayOfYear=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==input?dayOfYear:this.add(input-dayOfYear,"d")},proto.hour=proto.hours=getSetHour,proto.minute=proto.minutes=getSetMinute,proto.second=proto.seconds=getSetSecond,proto.millisecond=proto.milliseconds=getSetMillisecond,proto.utcOffset=function(input,keepLocalTime,keepMinutes){var localAdjust,offset=this._offset||0;if(!this.isValid())return null!=input?this:NaN;if(null!=input){if("string"==typeof input){if(null===(input=offsetFromString(matchShortOffset,input)))return this}else Math.abs(input)<16&&!keepMinutes&&(input*=60);return!this._isUTC&&keepLocalTime&&(localAdjust=getDateOffset(this)),this._offset=input,this._isUTC=!0,null!=localAdjust&&this.add(localAdjust,"m"),offset!==input&&(!keepLocalTime||this._changeInProgress?addSubtract(this,createDuration(input-offset,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,hooks.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?offset:getDateOffset(this)},proto.utc=function(keepLocalTime){return this.utcOffset(0,keepLocalTime)},proto.local=function(keepLocalTime){return this._isUTC&&(this.utcOffset(0,keepLocalTime),this._isUTC=!1,keepLocalTime&&this.subtract(getDateOffset(this),"m")),this},proto.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var tZone=offsetFromString(matchOffset,this._i);null!=tZone?this.utcOffset(tZone):this.utcOffset(0,!0)}return this},proto.hasAlignedHourOffset=function(input){return!!this.isValid()&&(input=input?createLocal(input).utcOffset():0,(this.utcOffset()-input)%60==0)},proto.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},proto.isLocal=function(){return!!this.isValid()&&!this._isUTC},proto.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},proto.isUtc=isUtc,proto.isUTC=isUtc,proto.zoneAbbr=function(){return this._isUTC?"UTC":""},proto.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},proto.dates=deprecate("dates accessor is deprecated. Use date instead.",getSetDayOfMonth),proto.months=deprecate("months accessor is deprecated. Use month instead",getSetMonth),proto.years=deprecate("years accessor is deprecated. Use year instead",getSetYear),proto.zone=deprecate("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(input,keepLocalTime){return null!=input?("string"!=typeof input&&(input=-input),this.utcOffset(input,keepLocalTime),this):-this.utcOffset()}),proto.isDSTShifted=deprecate("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!isUndefined(this._isDSTShifted))return this._isDSTShifted;var c={};if(copyConfig(c,this),(c=prepareConfig(c))._a){var other=c._isUTC?createUTC(c._a):createLocal(c._a);this._isDSTShifted=this.isValid()&&compareArrays(c._a,other.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var proto$1=Locale.prototype;function get$1(format,index,field,setter){var locale=getLocale(),utc=createUTC().set(setter,index);return locale[field](utc,format)}function listMonthsImpl(format,index,field){if(isNumber(format)&&(index=format,format=void 0),format=format||"",null!=index)return get$1(format,index,field,"month");var i,out=[];for(i=0;i<12;i++)out[i]=get$1(format,i,field,"month");return out}function listWeekdaysImpl(localeSorted,format,index,field){"boolean"==typeof localeSorted?(isNumber(format)&&(index=format,format=void 0),format=format||""):(index=format=localeSorted,localeSorted=!1,isNumber(format)&&(index=format,format=void 0),format=format||"");var i,locale=getLocale(),shift=localeSorted?locale._week.dow:0;if(null!=index)return get$1(format,(index+shift)%7,field,"day");var out=[];for(i=0;i<7;i++)out[i]=get$1(format,(i+shift)%7,field,"day");return out}proto$1.calendar=function(key,mom,now){var output=this._calendar[key]||this._calendar.sameElse;return isFunction(output)?output.call(mom,now):output},proto$1.longDateFormat=function(key){var format=this._longDateFormat[key],formatUpper=this._longDateFormat[key.toUpperCase()];return format||!formatUpper?format:(this._longDateFormat[key]=formatUpper.replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)}),this._longDateFormat[key])},proto$1.invalidDate=function(){return this._invalidDate},proto$1.ordinal=function(number){return this._ordinal.replace("%d",number)},proto$1.preparse=preParsePostFormat,proto$1.postformat=preParsePostFormat,proto$1.relativeTime=function(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return isFunction(output)?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)},proto$1.pastFuture=function(diff,output){var format=this._relativeTime[diff>0?"future":"past"];return isFunction(format)?format(output):format.replace(/%s/i,output)},proto$1.set=function(config){var prop,i;for(i in config)isFunction(prop=config[i])?this[i]=prop:this["_"+i]=prop;this._config=config,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},proto$1.months=function(m,format){return m?isArray(this._months)?this._months[m.month()]:this._months[(this._months.isFormat||MONTHS_IN_FORMAT).test(format)?"format":"standalone"][m.month()]:isArray(this._months)?this._months:this._months.standalone},proto$1.monthsShort=function(m,format){return m?isArray(this._monthsShort)?this._monthsShort[m.month()]:this._monthsShort[MONTHS_IN_FORMAT.test(format)?"format":"standalone"][m.month()]:isArray(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},proto$1.monthsParse=function(monthName,format,strict){var i,mom,regex;if(this._monthsParseExact)return function(monthName,format,strict){var i,ii,mom,llc=monthName.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],i=0;i<12;++i)mom=createUTC([2e3,i]),this._shortMonthsParse[i]=this.monthsShort(mom,"").toLocaleLowerCase(),this._longMonthsParse[i]=this.months(mom,"").toLocaleLowerCase();return strict?"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:"MMM"===format?-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:null:-1!==(ii=indexOf.call(this._longMonthsParse,llc))?ii:-1!==(ii=indexOf.call(this._shortMonthsParse,llc))?ii:null}.call(this,monthName,format,strict);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(mom=createUTC([2e3,i]),strict&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(mom,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(mom,"").replace(".","")+"$","i")),strict||this._monthsParse[i]||(regex="^"+this.months(mom,"")+"|^"+this.monthsShort(mom,""),this._monthsParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"MMMM"===format&&this._longMonthsParse[i].test(monthName))return i;if(strict&&"MMM"===format&&this._shortMonthsParse[i].test(monthName))return i;if(!strict&&this._monthsParse[i].test(monthName))return i}},proto$1.monthsRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsStrictRegex:this._monthsRegex):(hasOwnProp(this,"_monthsRegex")||(this._monthsRegex=defaultMonthsRegex),this._monthsStrictRegex&&isStrict?this._monthsStrictRegex:this._monthsRegex)},proto$1.monthsShortRegex=function(isStrict){return this._monthsParseExact?(hasOwnProp(this,"_monthsRegex")||computeMonthsParse.call(this),isStrict?this._monthsShortStrictRegex:this._monthsShortRegex):(hasOwnProp(this,"_monthsShortRegex")||(this._monthsShortRegex=defaultMonthsShortRegex),this._monthsShortStrictRegex&&isStrict?this._monthsShortStrictRegex:this._monthsShortRegex)},proto$1.week=function(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week},proto$1.firstDayOfYear=function(){return this._week.doy},proto$1.firstDayOfWeek=function(){return this._week.dow},proto$1.weekdays=function(m,format){return m?isArray(this._weekdays)?this._weekdays[m.day()]:this._weekdays[this._weekdays.isFormat.test(format)?"format":"standalone"][m.day()]:isArray(this._weekdays)?this._weekdays:this._weekdays.standalone},proto$1.weekdaysMin=function(m){return m?this._weekdaysMin[m.day()]:this._weekdaysMin},proto$1.weekdaysShort=function(m){return m?this._weekdaysShort[m.day()]:this._weekdaysShort},proto$1.weekdaysParse=function(weekdayName,format,strict){var i,mom,regex;if(this._weekdaysParseExact)return function(weekdayName,format,strict){var i,ii,mom,llc=weekdayName.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)mom=createUTC([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(mom,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(mom,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(mom,"").toLocaleLowerCase();return strict?"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"dddd"===format?-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:"ddd"===format?-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:null:-1!==(ii=indexOf.call(this._minWeekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._weekdaysParse,llc))?ii:-1!==(ii=indexOf.call(this._shortWeekdaysParse,llc))?ii:null}.call(this,weekdayName,format,strict);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(mom=createUTC([2e3,1]).day(i),strict&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(mom,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(mom,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(mom,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(regex="^"+this.weekdays(mom,"")+"|^"+this.weekdaysShort(mom,"")+"|^"+this.weekdaysMin(mom,""),this._weekdaysParse[i]=new RegExp(regex.replace(".",""),"i")),strict&&"dddd"===format&&this._fullWeekdaysParse[i].test(weekdayName))return i;if(strict&&"ddd"===format&&this._shortWeekdaysParse[i].test(weekdayName))return i;if(strict&&"dd"===format&&this._minWeekdaysParse[i].test(weekdayName))return i;if(!strict&&this._weekdaysParse[i].test(weekdayName))return i}},proto$1.weekdaysRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysStrictRegex:this._weekdaysRegex):(hasOwnProp(this,"_weekdaysRegex")||(this._weekdaysRegex=defaultWeekdaysRegex),this._weekdaysStrictRegex&&isStrict?this._weekdaysStrictRegex:this._weekdaysRegex)},proto$1.weekdaysShortRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(hasOwnProp(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=defaultWeekdaysShortRegex),this._weekdaysShortStrictRegex&&isStrict?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},proto$1.weekdaysMinRegex=function(isStrict){return this._weekdaysParseExact?(hasOwnProp(this,"_weekdaysRegex")||computeWeekdaysParse.call(this),isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(hasOwnProp(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=defaultWeekdaysMinRegex),this._weekdaysMinStrictRegex&&isStrict?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},proto$1.isPM=function(input){return"p"===(input+"").toLowerCase().charAt(0)},proto$1.meridiem=function(hours,minutes,isLower){return hours>11?isLower?"pm":"PM":isLower?"am":"AM"},getSetGlobalLocale("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(number){var b=number%10;return number+(1===toInt(number%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th")}}),hooks.lang=deprecate("moment.lang is deprecated. Use moment.locale instead.",getSetGlobalLocale),hooks.langData=deprecate("moment.langData is deprecated. Use moment.localeData instead.",getLocale);var mathAbs=Math.abs;function addSubtract$1(duration,input,value,direction){var other=createDuration(input,value);return duration._milliseconds+=direction*other._milliseconds,duration._days+=direction*other._days,duration._months+=direction*other._months,duration._bubble()}function absCeil(number){return number<0?Math.floor(number):Math.ceil(number)}function daysToMonths(days){return 4800*days/146097}function monthsToDays(months){return 146097*months/4800}function makeAs(alias){return function(){return this.as(alias)}}var asMilliseconds=makeAs("ms"),asSeconds=makeAs("s"),asMinutes=makeAs("m"),asHours=makeAs("h"),asDays=makeAs("d"),asWeeks=makeAs("w"),asMonths=makeAs("M"),asYears=makeAs("y");function makeGetter(name){return function(){return this.isValid()?this._data[name]:NaN}}var milliseconds=makeGetter("milliseconds"),seconds=makeGetter("seconds"),minutes=makeGetter("minutes"),hours=makeGetter("hours"),days=makeGetter("days"),months=makeGetter("months"),years=makeGetter("years");var round=Math.round,thresholds={ss:44,s:45,m:45,h:22,d:26,M:11};var abs$1=Math.abs;function sign(x){return(x>0)-(x<0)||+x}function toISOString$1(){if(!this.isValid())return this.localeData().invalidDate();var minutes,hours,seconds=abs$1(this._milliseconds)/1e3,days=abs$1(this._days),months=abs$1(this._months);hours=absFloor((minutes=absFloor(seconds/60))/60),seconds%=60,minutes%=60;var Y=absFloor(months/12),M=months%=12,D=days,h=hours,m=minutes,s=seconds?seconds.toFixed(3).replace(/\.?0+$/,""):"",total=this.asSeconds();if(!total)return"P0D";var totalSign=total<0?"-":"",ymSign=sign(this._months)!==sign(total)?"-":"",daysSign=sign(this._days)!==sign(total)?"-":"",hmsSign=sign(this._milliseconds)!==sign(total)?"-":"";return totalSign+"P"+(Y?ymSign+Y+"Y":"")+(M?ymSign+M+"M":"")+(D?daysSign+D+"D":"")+(h||m||s?"T":"")+(h?hmsSign+h+"H":"")+(m?hmsSign+m+"M":"")+(s?hmsSign+s+"S":"")}var proto$2=Duration.prototype;return proto$2.isValid=function(){return this._isValid},proto$2.abs=function(){var data=this._data;return this._milliseconds=mathAbs(this._milliseconds),this._days=mathAbs(this._days),this._months=mathAbs(this._months),data.milliseconds=mathAbs(data.milliseconds),data.seconds=mathAbs(data.seconds),data.minutes=mathAbs(data.minutes),data.hours=mathAbs(data.hours),data.months=mathAbs(data.months),data.years=mathAbs(data.years),this},proto$2.add=function(input,value){return addSubtract$1(this,input,value,1)},proto$2.subtract=function(input,value){return addSubtract$1(this,input,value,-1)},proto$2.as=function(units){if(!this.isValid())return NaN;var days,months,milliseconds=this._milliseconds;if("month"===(units=normalizeUnits(units))||"year"===units)return days=this._days+milliseconds/864e5,months=this._months+daysToMonths(days),"month"===units?months:months/12;switch(days=this._days+Math.round(monthsToDays(this._months)),units){case"week":return days/7+milliseconds/6048e5;case"day":return days+milliseconds/864e5;case"hour":return 24*days+milliseconds/36e5;case"minute":return 1440*days+milliseconds/6e4;case"second":return 86400*days+milliseconds/1e3;case"millisecond":return Math.floor(864e5*days)+milliseconds;default:throw new Error("Unknown unit "+units)}},proto$2.asMilliseconds=asMilliseconds,proto$2.asSeconds=asSeconds,proto$2.asMinutes=asMinutes,proto$2.asHours=asHours,proto$2.asDays=asDays,proto$2.asWeeks=asWeeks,proto$2.asMonths=asMonths,proto$2.asYears=asYears,proto$2.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*toInt(this._months/12):NaN},proto$2._bubble=function(){var seconds,minutes,hours,years,monthsFromDays,milliseconds=this._milliseconds,days=this._days,months=this._months,data=this._data;return milliseconds>=0&&days>=0&&months>=0||milliseconds<=0&&days<=0&&months<=0||(milliseconds+=864e5*absCeil(monthsToDays(months)+days),days=0,months=0),data.milliseconds=milliseconds%1e3,seconds=absFloor(milliseconds/1e3),data.seconds=seconds%60,minutes=absFloor(seconds/60),data.minutes=minutes%60,hours=absFloor(minutes/60),data.hours=hours%24,months+=monthsFromDays=absFloor(daysToMonths(days+=absFloor(hours/24))),days-=absCeil(monthsToDays(monthsFromDays)),years=absFloor(months/12),months%=12,data.days=days,data.months=months,data.years=years,this},proto$2.clone=function(){return createDuration(this)},proto$2.get=function(units){return units=normalizeUnits(units),this.isValid()?this[units+"s"]():NaN},proto$2.milliseconds=milliseconds,proto$2.seconds=seconds,proto$2.minutes=minutes,proto$2.hours=hours,proto$2.days=days,proto$2.weeks=function(){return absFloor(this.days()/7)},proto$2.months=months,proto$2.years=years,proto$2.humanize=function(withSuffix){if(!this.isValid())return this.localeData().invalidDate();var locale=this.localeData(),output=function(posNegDuration,withoutSuffix,locale){var duration=createDuration(posNegDuration).abs(),seconds=round(duration.as("s")),minutes=round(duration.as("m")),hours=round(duration.as("h")),days=round(duration.as("d")),months=round(duration.as("M")),years=round(duration.as("y")),a=seconds<=thresholds.ss&&["s",seconds]||seconds<thresholds.s&&["ss",seconds]||minutes<=1&&["m"]||minutes<thresholds.m&&["mm",minutes]||hours<=1&&["h"]||hours<thresholds.h&&["hh",hours]||days<=1&&["d"]||days<thresholds.d&&["dd",days]||months<=1&&["M"]||months<thresholds.M&&["MM",months]||years<=1&&["y"]||["yy",years];return a[2]=withoutSuffix,a[3]=+posNegDuration>0,a[4]=locale,function(string,number,withoutSuffix,isFuture,locale){return locale.relativeTime(number||1,!!withoutSuffix,string,isFuture)}.apply(null,a)}(this,!withSuffix,locale);return withSuffix&&(output=locale.pastFuture(+this,output)),locale.postformat(output)},proto$2.toISOString=toISOString$1,proto$2.toString=toISOString$1,proto$2.toJSON=toISOString$1,proto$2.locale=locale,proto$2.localeData=localeData,proto$2.toIsoString=deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",toISOString$1),proto$2.lang=lang,addFormatToken("X",0,0,"unix"),addFormatToken("x",0,0,"valueOf"),addRegexToken("x",matchSigned),addRegexToken("X",/[+-]?\d+(\.\d{1,3})?/),addParseToken("X",function(input,array,config){config._d=new Date(1e3*parseFloat(input,10))}),addParseToken("x",function(input,array,config){config._d=new Date(toInt(input))}),hooks.version="2.22.2",hookCallback=createLocal,hooks.fn=proto,hooks.min=function(){return pickBy("isBefore",[].slice.call(arguments,0))},hooks.max=function(){return pickBy("isAfter",[].slice.call(arguments,0))},hooks.now=function(){return Date.now?Date.now():+new Date},hooks.utc=createUTC,hooks.unix=function(input){return createLocal(1e3*input)},hooks.months=function(format,index){return listMonthsImpl(format,index,"months")},hooks.isDate=isDate,hooks.locale=getSetGlobalLocale,hooks.invalid=createInvalid,hooks.duration=createDuration,hooks.isMoment=isMoment,hooks.weekdays=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdays")},hooks.parseZone=function(){return createLocal.apply(null,arguments).parseZone()},hooks.localeData=getLocale,hooks.isDuration=isDuration,hooks.monthsShort=function(format,index){return listMonthsImpl(format,index,"monthsShort")},hooks.weekdaysMin=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysMin")},hooks.defineLocale=defineLocale,hooks.updateLocale=function(name,config){if(null!=config){var locale,tmpLocale,parentConfig=baseConfig;null!=(tmpLocale=loadLocale(name))&&(parentConfig=tmpLocale._config),(locale=new Locale(config=mergeConfigs(parentConfig,config))).parentLocale=locales[name],locales[name]=locale,getSetGlobalLocale(name)}else null!=locales[name]&&(null!=locales[name].parentLocale?locales[name]=locales[name].parentLocale:null!=locales[name]&&delete locales[name]);return locales[name]},hooks.locales=function(){return keys(locales)},hooks.weekdaysShort=function(localeSorted,format,index){return listWeekdaysImpl(localeSorted,format,index,"weekdaysShort")},hooks.normalizeUnits=normalizeUnits,hooks.relativeTimeRounding=function(roundingFunction){return void 0===roundingFunction?round:"function"==typeof roundingFunction&&(round=roundingFunction,!0)},hooks.relativeTimeThreshold=function(threshold,limit){return void 0!==thresholds[threshold]&&(void 0===limit?thresholds[threshold]:(thresholds[threshold]=limit,"s"===threshold&&(thresholds.ss=limit-1),!0))},hooks.calendarFormat=function(myMoment,now){var diff=myMoment.diff(now,"days",!0);return diff<-6?"sameElse":diff<-1?"lastWeek":diff<0?"lastDay":diff<1?"sameDay":diff<2?"nextDay":diff<7?"nextWeek":"sameElse"},hooks.prototype=proto,hooks.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},hooks}),function(global,factory){"object"==typeof module&&"object"==typeof module.exports?module.exports=global.document?factory(global,!0):function(w){if(!w.document)throw new Error("jQuery requires a window with a document");return factory(w)}:factory(global)}("undefined"!=typeof window?window:this,function(window,noGlobal){var arr=[],document=window.document,getProto=Object.getPrototypeOf,slice=arr.slice,concat=arr.concat,push=arr.push,indexOf=arr.indexOf,class2type={},toString=class2type.toString,hasOwn=class2type.hasOwnProperty,fnToString=hasOwn.toString,ObjectFunctionString=fnToString.call(Object),support={},isFunction=function(obj){return"function"==typeof obj&&"number"!=typeof obj.nodeType},isWindow=function(obj){return null!=obj&&obj===obj.window},preservedScriptAttributes={type:!0,src:!0,noModule:!0};function DOMEval(code,doc,node){var i,script=(doc=doc||document).createElement("script");if(script.text=code,node)for(i in preservedScriptAttributes)node[i]&&(script[i]=node[i]);doc.head.appendChild(script).parentNode.removeChild(script)}function toType(obj){return null==obj?obj+"":"object"==typeof obj||"function"==typeof obj?class2type[toString.call(obj)]||"object":typeof obj}var jQuery=function(selector,context){return new jQuery.fn.init(selector,context)},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=toType(obj);return!isFunction(obj)&&!isWindow(obj)&&("array"===type||0===length||"number"==typeof length&&length>0&&length-1 in obj)}jQuery.fn=jQuery.prototype={jquery:"3.3.1",constructor:jQuery,length:0,toArray:function(){return slice.call(this)},get:function(num){return null==num?slice.call(this):num<0?this[num+this.length]:this[num]},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);return ret.prevObject=this,ret},each:function(callback){return jQuery.each(this,callback)},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},slice:function(){return this.pushStack(slice.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[])},end:function(){return this.prevObject||this.constructor()},push:push,sort:arr.sort,splice:arr.splice},jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=!1;for("boolean"==typeof target&&(deep=target,target=arguments[i]||{},i++),"object"==typeof target||isFunction(target)||(target={}),i===length&&(target=this,i--);i<length;i++)if(null!=(options=arguments[i]))for(name in options)src=target[name],target!==(copy=options[name])&&(deep&©&&(jQuery.isPlainObject(copy)||(copyIsArray=Array.isArray(copy)))?(copyIsArray?(copyIsArray=!1,clone=src&&Array.isArray(src)?src:[]):clone=src&&jQuery.isPlainObject(src)?src:{},target[name]=jQuery.extend(deep,clone,copy)):void 0!==copy&&(target[name]=copy));return target},jQuery.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(msg){throw new Error(msg)},noop:function(){},isPlainObject:function(obj){var proto,Ctor;return!(!obj||"[object Object]"!==toString.call(obj))&&(!(proto=getProto(obj))||"function"==typeof(Ctor=hasOwn.call(proto,"constructor")&&proto.constructor)&&fnToString.call(Ctor)===ObjectFunctionString)},isEmptyObject:function(obj){var name;for(name in obj)return!1;return!0},globalEval:function(code){DOMEval(code)},each:function(obj,callback){var length,i=0;if(isArrayLike(obj))for(length=obj.length;i<length&&!1!==callback.call(obj[i],i,obj[i]);i++);else for(i in obj)if(!1===callback.call(obj[i],i,obj[i]))break;return obj},trim:function(text){return null==text?"":(text+"").replace(rtrim,"")},makeArray:function(arr,results){var ret=results||[];return null!=arr&&(isArrayLike(Object(arr))?jQuery.merge(ret,"string"==typeof arr?[arr]:arr):push.call(ret,arr)),ret},inArray:function(elem,arr,i){return null==arr?-1:indexOf.call(arr,elem,i)},merge:function(first,second){for(var len=+second.length,j=0,i=first.length;j<len;j++)first[i++]=second[j];return first.length=i,first},grep:function(elems,callback,invert){for(var matches=[],i=0,length=elems.length,callbackExpect=!invert;i<length;i++)!callback(elems[i],i)!==callbackExpect&&matches.push(elems[i]);return matches},map:function(elems,callback,arg){var length,value,i=0,ret=[];if(isArrayLike(elems))for(length=elems.length;i<length;i++)null!=(value=callback(elems[i],i,arg))&&ret.push(value);else for(i in elems)null!=(value=callback(elems[i],i,arg))&&ret.push(value);return concat.apply([],ret)},guid:1,support:support}),"function"==typeof Symbol&&(jQuery.fn[Symbol.iterator]=arr[Symbol.iterator]),jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});var Sizzle=function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){return a===b&&(hasDuplicate=!0),0},hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){for(var i=0,len=list.length;i<len;i++)if(list[i]===elem)return i;return-1},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",identifier="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+identifier+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|.*)\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!=high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,1023&high|56320)},rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,fcssescape=function(ch,asCodePoint){return asCodePoint?"\0"===ch?"�":ch.slice(0,-1)+"\\"+ch.charCodeAt(ch.length-1).toString(16)+" ":"\\"+ch},unloadHandler=function(){setDocument()},disabledAncestor=addCombinator(function(elem){return!0===elem.disabled&&("form"in elem||"label"in elem)},{dir:"parentNode",next:"legend"});try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes),arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){for(var j=target.length,i=0;target[j++]=els[i++];);target.length=j-1}}}function Sizzle(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;if(results=results||[],"string"!=typeof selector||!selector||1!==nodeType&&9!==nodeType&&11!==nodeType)return results;if(!seed&&((context?context.ownerDocument||context:preferredDoc)!==document&&setDocument(context),context=context||document,documentIsHTML)){if(11!==nodeType&&(match=rquickExpr.exec(selector)))if(m=match[1]){if(9===nodeType){if(!(elem=context.getElementById(m)))return results;if(elem.id===m)return results.push(elem),results}else if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m)return results.push(elem),results}else{if(match[2])return push.apply(results,context.getElementsByTagName(selector)),results;if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName)return push.apply(results,context.getElementsByClassName(m)),results}if(support.qsa&&!compilerCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){if(1!==nodeType)newContext=context,newSelector=selector;else if("object"!==context.nodeName.toLowerCase()){for((nid=context.getAttribute("id"))?nid=nid.replace(rcssescape,fcssescape):context.setAttribute("id",nid=expando),i=(groups=tokenize(selector)).length;i--;)groups[i]="#"+nid+" "+toSelector(groups[i]);newSelector=groups.join(","),newContext=rsibling.test(selector)&&testContext(context.parentNode)||context}if(newSelector)try{return push.apply(results,newContext.querySelectorAll(newSelector)),results}catch(qsaError){}finally{nid===expando&&context.removeAttribute("id")}}}return select(selector.replace(rtrim,"$1"),context,results,seed)}function createCache(){var keys=[];return function cache(key,value){return keys.push(key+" ")>Expr.cacheLength&&delete cache[keys.shift()],cache[key+" "]=value}}function markFunction(fn){return fn[expando]=!0,fn}function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el)}catch(e){return!1}finally{el.parentNode&&el.parentNode.removeChild(el),el=null}}function addHandle(attrs,handler){for(var arr=attrs.split("|"),i=arr.length;i--;)Expr.attrHandle[arr[i]]=handler}function siblingCheck(a,b){var cur=b&&a,diff=cur&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(diff)return diff;if(cur)for(;cur=cur.nextSibling;)if(cur===b)return-1;return a?1:-1}function createInputPseudo(type){return function(elem){return"input"===elem.nodeName.toLowerCase()&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return("input"===name||"button"===name)&&elem.type===type}}function createDisabledPseudo(disabled){return function(elem){return"form"in elem?elem.parentNode&&!1===elem.disabled?"label"in elem?"label"in elem.parentNode?elem.parentNode.disabled===disabled:elem.disabled===disabled:elem.isDisabled===disabled||elem.isDisabled!==!disabled&&disabledAncestor(elem)===disabled:elem.disabled===disabled:"label"in elem&&elem.disabled===disabled}}function createPositionalPseudo(fn){return markFunction(function(argument){return argument=+argument,markFunction(function(seed,matches){for(var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;i--;)seed[j=matchIndexes[i]]&&(seed[j]=!(matches[j]=seed[j]))})})}function testContext(context){return context&&void 0!==context.getElementsByTagName&&context}for(i in support=Sizzle.support={},isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return!!documentElement&&"HTML"!==documentElement.nodeName},setDocument=Sizzle.setDocument=function(node){var hasCompare,subWindow,doc=node?node.ownerDocument||node:preferredDoc;return doc!==document&&9===doc.nodeType&&doc.documentElement?(docElem=(document=doc).documentElement,documentIsHTML=!isXML(document),preferredDoc!==document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow&&(subWindow.addEventListener?subWindow.addEventListener("unload",unloadHandler,!1):subWindow.attachEvent&&subWindow.attachEvent("onunload",unloadHandler)),support.attributes=assert(function(el){return el.className="i",!el.getAttribute("className")}),support.getElementsByTagName=assert(function(el){return el.appendChild(document.createComment("")),!el.getElementsByTagName("*").length}),support.getElementsByClassName=rnative.test(document.getElementsByClassName),support.getById=assert(function(el){return docElem.appendChild(el).id=expando,!document.getElementsByName||!document.getElementsByName(expando).length}),support.getById?(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[]}}):(Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=void 0!==elem.getAttributeNode&&elem.getAttributeNode("id");return node&&node.value===attrId}},Expr.find.ID=function(id,context){if(void 0!==context.getElementById&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem];for(elems=context.getElementsByName(id),i=0;elem=elems[i++];)if((node=elem.getAttributeNode("id"))&&node.value===id)return[elem]}return[]}}),Expr.find.TAG=support.getElementsByTagName?function(tag,context){return void 0!==context.getElementsByTagName?context.getElementsByTagName(tag):support.qsa?context.querySelectorAll(tag):void 0}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if("*"===tag){for(;elem=results[i++];)1===elem.nodeType&&tmp.push(elem);return tmp}return results},Expr.find.CLASS=support.getElementsByClassName&&function(className,context){if(void 0!==context.getElementsByClassName&&documentIsHTML)return context.getElementsByClassName(className)},rbuggyMatches=[],rbuggyQSA=[],(support.qsa=rnative.test(document.querySelectorAll))&&(assert(function(el){docElem.appendChild(el).innerHTML="<a id='"+expando+"'></a><select id='"+expando+"-\r\\' msallowcapture=''><option selected=''></option></select>",el.querySelectorAll("[msallowcapture^='']").length&&rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")"),el.querySelectorAll("[selected]").length||rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")"),el.querySelectorAll("[id~="+expando+"-]").length||rbuggyQSA.push("~="),el.querySelectorAll(":checked").length||rbuggyQSA.push(":checked"),el.querySelectorAll("a#"+expando+"+*").length||rbuggyQSA.push(".#.+[+~]")}),assert(function(el){el.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var input=document.createElement("input");input.setAttribute("type","hidden"),el.appendChild(input).setAttribute("name","D"),el.querySelectorAll("[name=d]").length&&rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?="),2!==el.querySelectorAll(":enabled").length&&rbuggyQSA.push(":enabled",":disabled"),docElem.appendChild(el).disabled=!0,2!==el.querySelectorAll(":disabled").length&&rbuggyQSA.push(":enabled",":disabled"),el.querySelectorAll("*,:x"),rbuggyQSA.push(",.*:")})),(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector))&&assert(function(el){support.disconnectedMatch=matches.call(el,"*"),matches.call(el,"[s!='']:x"),rbuggyMatches.push("!=",pseudos)}),rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|")),rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|")),hasCompare=rnative.test(docElem.compareDocumentPosition),contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=9===a.nodeType?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!(!bup||1!==bup.nodeType||!(adown.contains?adown.contains(bup):a.compareDocumentPosition&&16&a.compareDocumentPosition(bup)))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1},sortOrder=hasCompare?function(a,b){if(a===b)return hasDuplicate=!0,0;var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;return compare||(1&(compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1)||!support.sortDetached&&b.compareDocumentPosition(a)===compare?a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)?-1:b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0:4&compare?-1:1)}:function(a,b){if(a===b)return hasDuplicate=!0,0;var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup)return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0;if(aup===bup)return siblingCheck(a,b);for(cur=a;cur=cur.parentNode;)ap.unshift(cur);for(cur=b;cur=cur.parentNode;)bp.unshift(cur);for(;ap[i]===bp[i];)i++;return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0},document):document},Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)},Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document&&setDocument(elem),expr=expr.replace(rattributeQuotes,"='$1']"),support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr)))try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&11!==elem.document.nodeType)return ret}catch(e){}return Sizzle(expr,document,null,[elem]).length>0},Sizzle.contains=function(context,elem){return(context.ownerDocument||context)!==document&&setDocument(context),contains(context,elem)},Sizzle.attr=function(elem,name){(elem.ownerDocument||elem)!==document&&setDocument(elem);var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):void 0;return void 0!==val?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null},Sizzle.escape=function(sel){return(sel+"").replace(rcssescape,fcssescape)},Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)},Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;if(hasDuplicate=!support.detectDuplicates,sortInput=!support.sortStable&&results.slice(0),results.sort(sortOrder),hasDuplicate){for(;elem=results[i++];)elem===results[i]&&(j=duplicates.push(i));for(;j--;)results.splice(duplicates[j],1)}return sortInput=null,results},getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(nodeType){if(1===nodeType||9===nodeType||11===nodeType){if("string"==typeof elem.textContent)return elem.textContent;for(elem=elem.firstChild;elem;elem=elem.nextSibling)ret+=getText(elem)}else if(3===nodeType||4===nodeType)return elem.nodeValue}else for(;node=elem[i++];)ret+=getText(node);return ret},(Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){return match[1]=match[1].replace(runescape,funescape),match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape),"~="===match[2]&&(match[3]=" "+match[3]+" "),match.slice(0,4)},CHILD:function(match){return match[1]=match[1].toLowerCase(),"nth"===match[1].slice(0,3)?(match[3]||Sizzle.error(match[0]),match[4]=+(match[4]?match[5]+(match[6]||1):2*("even"===match[3]||"odd"===match[3])),match[5]=+(match[7]+match[8]||"odd"===match[3])):match[3]&&Sizzle.error(match[0]),match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];return matchExpr.CHILD.test(match[0])?null:(match[3]?match[2]=match[4]||match[5]||"":unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,!0))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)&&(match[0]=match[0].slice(0,excess),match[2]=unquoted.slice(0,excess)),match.slice(0,3))}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return"*"===nodeNameSelector?function(){return!0}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test("string"==typeof elem.className&&elem.className||void 0!==elem.getAttribute&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);return null==result?"!="===operator:!operator||(result+="","="===operator?result===check:"!="===operator?result!==check:"^="===operator?check&&0===result.indexOf(check):"*="===operator?check&&result.indexOf(check)>-1:"$="===operator?check&&result.slice(-check.length)===check:"~="===operator?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:"|="===operator&&(result===check||result.slice(0,check.length+1)===check+"-"))}},CHILD:function(type,what,argument,first,last){var simple="nth"!==type.slice(0,3),forward="last"!==type.slice(-4),ofType="of-type"===what;return 1===first&&0===last?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=!1;if(parent){if(simple){for(;dir;){for(node=elem;node=node[dir];)if(ofType?node.nodeName.toLowerCase()===name:1===node.nodeType)return!1;start=dir="only"===type&&!start&&"nextSibling"}return!0}if(start=[forward?parent.firstChild:parent.lastChild],forward&&useCache){for(diff=(nodeIndex=(cache=(uniqueCache=(outerCache=(node=parent)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1])&&cache[2],node=nodeIndex&&parent.childNodes[nodeIndex];node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop();)if(1===node.nodeType&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}else if(useCache&&(diff=nodeIndex=(cache=(uniqueCache=(outerCache=(node=elem)[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]||[])[0]===dirruns&&cache[1]),!1===diff)for(;(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())&&((ofType?node.nodeName.toLowerCase()!==name:1!==node.nodeType)||!++diff||(useCache&&((uniqueCache=(outerCache=node[expando]||(node[expando]={}))[node.uniqueID]||(outerCache[node.uniqueID]={}))[type]=[dirruns,diff]),node!==elem)););return(diff-=last)===first||diff%first==0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);return fn[expando]?fn(argument):fn.length>1?(args=[pseudo,pseudo,"",argument],Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){for(var idx,matched=fn(seed,argument),i=matched.length;i--;)seed[idx=indexOf(seed,matched[i])]=!(matches[idx]=matched[i])}):function(elem){return fn(elem,0,args)}):fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){for(var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;i--;)(elem=unmatched[i])&&(seed[i]=!(matches[i]=elem))}):function(elem,context,xml){return input[0]=elem,matcher(input,null,xml,results),input[0]=null,!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){return text=text.replace(runescape,funescape),function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){return ridentifier.test(lang||"")||Sizzle.error("unsupported lang: "+lang),lang=lang.replace(runescape,funescape).toLowerCase(),function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))return(elemLang=elemLang.toLowerCase())===lang||0===elemLang.indexOf(lang+"-")}while((elem=elem.parentNode)&&1===elem.nodeType);return!1}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:createDisabledPseudo(!1),disabled:createDisabledPseudo(!0),checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return"input"===nodeName&&!!elem.checked||"option"===nodeName&&!!elem.selected},selected:function(elem){return elem.parentNode&&elem.parentNode.selectedIndex,!0===elem.selected},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling)if(elem.nodeType<6)return!1;return!0},parent:function(elem){return!Expr.pseudos.empty(elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return"input"===name&&"button"===elem.type||"button"===name},text:function(elem){var attr;return"input"===elem.nodeName.toLowerCase()&&"text"===elem.type&&(null==(attr=elem.getAttribute("type"))||"text"===attr.toLowerCase())},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){for(var i=0;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),odd:createPositionalPseudo(function(matchIndexes,length){for(var i=1;i<length;i+=2)matchIndexes.push(i);return matchIndexes}),lt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;--i>=0;)matchIndexes.push(i);return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){for(var i=argument<0?argument+length:argument;++i<length;)matchIndexes.push(i);return matchIndexes})}}).pseudos.nth=Expr.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})Expr.pseudos[i]=createInputPseudo(i);for(i in{submit:!0,reset:!0})Expr.pseudos[i]=createButtonPseudo(i);function setFilters(){}function toSelector(tokens){for(var i=0,len=tokens.length,selector="";i<len;i++)selector+=tokens[i].value;return selector}function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&"parentNode"===key,doneName=done++;return combinator.first?function(elem,context,xml){for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)return matcher(elem,context,xml);return!1}:function(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];if(xml){for(;elem=elem[dir];)if((1===elem.nodeType||checkNonElements)&&matcher(elem,context,xml))return!0}else for(;elem=elem[dir];)if(1===elem.nodeType||checkNonElements)if(uniqueCache=(outerCache=elem[expando]||(elem[expando]={}))[elem.uniqueID]||(outerCache[elem.uniqueID]={}),skip&&skip===elem.nodeName.toLowerCase())elem=elem[dir]||elem;else{if((oldCache=uniqueCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName)return newCache[2]=oldCache[2];if(uniqueCache[key]=newCache,newCache[2]=matcher(elem,context,xml))return!0}return!1}}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){for(var i=matchers.length;i--;)if(!matchers[i](elem,context,xml))return!1;return!0}:matchers[0]}function condense(unmatched,map,filter,context,xml){for(var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=null!=map;i<len;i++)(elem=unmatched[i])&&(filter&&!filter(elem,context,xml)||(newUnmatched.push(elem),mapped&&map.push(i)));return newUnmatched}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){return postFilter&&!postFilter[expando]&&(postFilter=setMatcher(postFilter)),postFinder&&!postFinder[expando]&&(postFinder=setMatcher(postFinder,postSelector)),markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||function(selector,contexts,results){for(var i=0,len=contexts.length;i<len;i++)Sizzle(selector,contexts[i],results);return results}(selector||"*",context.nodeType?[context]:context,[]),matcherIn=!preFilter||!seed&&selector?elems:condense(elems,preMap,preFilter,context,xml),matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher&&matcher(matcherIn,matcherOut,context,xml),postFilter)for(temp=condense(matcherOut,postMap),postFilter(temp,[],context,xml),i=temp.length;i--;)(elem=temp[i])&&(matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem));if(seed){if(postFinder||preFilter){if(postFinder){for(temp=[],i=matcherOut.length;i--;)(elem=matcherOut[i])&&temp.push(matcherIn[i]=elem);postFinder(null,matcherOut=[],temp,xml)}for(i=matcherOut.length;i--;)(elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1&&(seed[temp]=!(results[temp]=elem))}}else matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut),postFinder?postFinder(null,results,matcherOut,xml):push.apply(results,matcherOut)})}function matcherFromTokens(tokens){for(var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,!0),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,!0),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));return checkContext=null,ret}];i<len;i++)if(matcher=Expr.relative[tokens[i].type])matchers=[addCombinator(elementMatcher(matchers),matcher)];else{if((matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches))[expando]){for(j=++i;j<len&&!Expr.relative[tokens[j].type];j++);return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:" "===tokens[i-2].type?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens))}matchers.push(matcher)}return elementMatcher(matchers)}return setFilters.prototype=Expr.filters=Expr.pseudos,Expr.setFilters=new setFilters,tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached)return parseOnly?0:cached.slice(0);for(soFar=selector,groups=[],preFilters=Expr.preFilter;soFar;){for(type in matched&&!(match=rcomma.exec(soFar))||(match&&(soFar=soFar.slice(match[0].length)||soFar),groups.push(tokens=[])),matched=!1,(match=rcombinators.exec(soFar))&&(matched=match.shift(),tokens.push({value:matched,type:match[0].replace(rtrim," ")}),soFar=soFar.slice(matched.length)),Expr.filter)!(match=matchExpr[type].exec(soFar))||preFilters[type]&&!(match=preFilters[type](match))||(matched=match.shift(),tokens.push({value:matched,type:type,matches:match}),soFar=soFar.slice(matched.length));if(!matched)break}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0)},compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){for(match||(match=tokenize(selector)),i=match.length;i--;)(cached=matcherFromTokens(match[i]))[expando]?setMatchers.push(cached):elementMatchers.push(cached);(cached=compilerCache(selector,function(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find.TAG("*",outermost),dirrunsUnique=dirruns+=null==contextBackup?1:Math.random()||.1,len=elems.length;for(outermost&&(outermostContext=context===document||context||outermost);i!==len&&null!=(elem=elems[i]);i++){if(byElement&&elem){for(j=0,context||elem.ownerDocument===document||(setDocument(elem),xml=!documentIsHTML);matcher=elementMatchers[j++];)if(matcher(elem,context||document,xml)){results.push(elem);break}outermost&&(dirruns=dirrunsUnique)}bySet&&((elem=!matcher&&elem)&&matchedCount--,seed&&unmatched.push(elem))}if(matchedCount+=i,bySet&&i!==matchedCount){for(j=0;matcher=setMatchers[j++];)matcher(unmatched,setMatched,context,xml);if(seed){if(matchedCount>0)for(;i--;)unmatched[i]||setMatched[i]||(setMatched[i]=pop.call(results));setMatched=condense(setMatched)}push.apply(results,setMatched),outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1&&Sizzle.uniqueSort(results)}return outermost&&(dirruns=dirrunsUnique,outermostContext=contextBackup),unmatched};return bySet?markFunction(superMatcher):superMatcher}(elementMatchers,setMatchers))).selector=selector}return cached},select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled="function"==typeof selector&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);if(results=results||[],1===match.length){if((tokens=match[0]=match[0].slice(0)).length>2&&"ID"===(token=tokens[0]).type&&9===context.nodeType&&documentIsHTML&&Expr.relative[tokens[1].type]){if(!(context=(Expr.find.ID(token.matches[0].replace(runescape,funescape),context)||[])[0]))return results;compiled&&(context=context.parentNode),selector=selector.slice(tokens.shift().value.length)}for(i=matchExpr.needsContext.test(selector)?0:tokens.length;i--&&(token=tokens[i],!Expr.relative[type=token.type]);)if((find=Expr.find[type])&&(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){if(tokens.splice(i,1),!(selector=seed.length&&toSelector(tokens)))return push.apply(results,seed),results;break}}return(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context),results},support.sortStable=expando.split("").sort(sortOrder).join("")===expando,support.detectDuplicates=!!hasDuplicate,setDocument(),support.sortDetached=assert(function(el){return 1&el.compareDocumentPosition(document.createElement("fieldset"))}),assert(function(el){return el.innerHTML="<a href='#'></a>","#"===el.firstChild.getAttribute("href")})||addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML)return elem.getAttribute(name,"type"===name.toLowerCase()?1:2)}),support.attributes&&assert(function(el){return el.innerHTML="<input/>",el.firstChild.setAttribute("value",""),""===el.firstChild.getAttribute("value")})||addHandle("value",function(elem,name,isXML){if(!isXML&&"input"===elem.nodeName.toLowerCase())return elem.defaultValue}),assert(function(el){return null==el.getAttribute("disabled")})||addHandle(booleans,function(elem,name,isXML){var val;if(!isXML)return!0===elem[name]?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}),Sizzle}(window);jQuery.find=Sizzle,jQuery.expr=Sizzle.selectors,jQuery.expr[":"]=jQuery.expr.pseudos,jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort,jQuery.text=Sizzle.getText,jQuery.isXMLDoc=Sizzle.isXML,jQuery.contains=Sizzle.contains,jQuery.escapeSelector=Sizzle.escape;var dir=function(elem,dir,until){for(var matched=[],truncate=void 0!==until;(elem=elem[dir])&&9!==elem.nodeType;)if(1===elem.nodeType){if(truncate&&jQuery(elem).is(until))break;matched.push(elem)}return matched},siblings=function(n,elem){for(var matched=[];n;n=n.nextSibling)1===n.nodeType&&n!==elem&&matched.push(n);return matched},rneedsContext=jQuery.expr.match.needsContext;function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()}var rsingleTag=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function winnow(elements,qualifier,not){return isFunction(qualifier)?jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not}):qualifier.nodeType?jQuery.grep(elements,function(elem){return elem===qualifier!==not}):"string"!=typeof qualifier?jQuery.grep(elements,function(elem){return indexOf.call(qualifier,elem)>-1!==not}):jQuery.filter(qualifier,elements,not)}jQuery.filter=function(expr,elems,not){var elem=elems[0];return not&&(expr=":not("+expr+")"),1===elems.length&&1===elem.nodeType?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return 1===elem.nodeType}))},jQuery.fn.extend({find:function(selector){var i,ret,len=this.length,self=this;if("string"!=typeof selector)return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++)if(jQuery.contains(self[i],this))return!0}));for(ret=this.pushStack([]),i=0;i<len;i++)jQuery.find(selector,self[i],ret);return len>1?jQuery.uniqueSort(ret):ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],!1))},not:function(selector){return this.pushStack(winnow(this,selector||[],!0))},is:function(selector){return!!winnow(this,"string"==typeof selector&&rneedsContext.test(selector)?jQuery(selector):selector||[],!1).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector)return this;if(root=root||rootjQuery,"string"==typeof selector){if(!(match="<"===selector[0]&&">"===selector[selector.length-1]&&selector.length>=3?[null,selector,null]:rquickExpr.exec(selector))||!match[1]&&context)return!context||context.jquery?(context||root).find(selector):this.constructor(context).find(selector);if(match[1]){if(context=context instanceof jQuery?context[0]:context,jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,!0)),rsingleTag.test(match[1])&&jQuery.isPlainObject(context))for(match in context)isFunction(this[match])?this[match](context[match]):this.attr(match,context[match]);return this}return(elem=document.getElementById(match[2]))&&(this[0]=elem,this.length=1),this}return selector.nodeType?(this[0]=selector,this.length=1,this):isFunction(selector)?void 0!==root.ready?root.ready(selector):selector(jQuery):jQuery.makeArray(selector,this)}).prototype=jQuery.fn,rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:!0,contents:!0,next:!0,prev:!0};function sibling(cur,dir){for(;(cur=cur[dir])&&1!==cur.nodeType;);return cur}jQuery.fn.extend({has:function(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){for(var i=0;i<l;i++)if(jQuery.contains(this,targets[i]))return!0})},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],targets="string"!=typeof selectors&&jQuery(selectors);if(!rneedsContext.test(selectors))for(;i<l;i++)for(cur=this[i];cur&&cur!==context;cur=cur.parentNode)if(cur.nodeType<11&&(targets?targets.index(cur)>-1:1===cur.nodeType&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched)},index:function(elem){return elem?"string"==typeof elem?indexOf.call(jQuery(elem),this[0]):indexOf.call(this,elem.jquery?elem[0]:elem):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(null==selector?this.prevObject:this.prevObject.filter(selector))}}),jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&11!==parent.nodeType?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){return nodeName(elem,"iframe")?elem.contentDocument:(nodeName(elem,"template")&&(elem=elem.content||elem),jQuery.merge([],elem.childNodes))}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);return"Until"!==name.slice(-5)&&(selector=until),selector&&"string"==typeof selector&&(matched=jQuery.filter(selector,matched)),this.length>1&&(guaranteedUnique[name]||jQuery.uniqueSort(matched),rparentsprev.test(name)&&matched.reverse()),this.pushStack(matched)}});var rnothtmlwhite=/[^\x20\t\r\n\f]+/g;function Identity(v){return v}function Thrower(ex){throw ex}function adoptValue(value,resolve,reject,noValue){var method;try{value&&isFunction(method=value.promise)?method.call(value).done(resolve).fail(reject):value&&isFunction(method=value.then)?method.call(value,resolve,reject):resolve.apply(void 0,[value].slice(noValue))}catch(value){reject.apply(void 0,[value])}}jQuery.Callbacks=function(options){options="string"==typeof options?function(options){var object={};return jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=!0}),object}(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){for(locked=locked||options.once,fired=firing=!0;queue.length;firingIndex=-1)for(memory=queue.shift();++firingIndex<list.length;)!1===list[firingIndex].apply(memory[0],memory[1])&&options.stopOnFalse&&(firingIndex=list.length,memory=!1);options.memory||(memory=!1),firing=!1,locked&&(list=memory?[]:"")},self={add:function(){return list&&(memory&&!firing&&(firingIndex=list.length-1,queue.push(memory)),function add(args){jQuery.each(args,function(_,arg){isFunction(arg)?options.unique&&self.has(arg)||list.push(arg):arg&&arg.length&&"string"!==toType(arg)&&add(arg)})}(arguments),memory&&!firing&&fire()),this},remove:function(){return jQuery.each(arguments,function(_,arg){for(var index;(index=jQuery.inArray(arg,list,index))>-1;)list.splice(index,1),index<=firingIndex&&firingIndex--}),this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0},empty:function(){return list&&(list=[]),this},disable:function(){return locked=queue=[],list=memory="",this},disabled:function(){return!list},lock:function(){return locked=queue=[],memory||firing||(list=memory=""),this},locked:function(){return!!locked},fireWith:function(context,args){return locked||(args=[context,(args=args||[]).slice?args.slice():args],queue.push(args),firing||fire()),this},fire:function(){return self.fireWith(this,arguments),this},fired:function(){return!!fired}};return self},jQuery.extend({Deferred:function(func){var tuples=[["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],state="pending",promise={state:function(){return state},always:function(){return deferred.done(arguments).fail(arguments),this},catch:function(fn){return promise.then(null,fn)},pipe:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);returned&&isFunction(returned.promise)?returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject):newDefer[tuple[0]+"With"](this,fn?[returned]:arguments)})}),fns=null}).promise()},then:function(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function(){var returned,then;if(!(depth<maxDepth)){if((returned=handler.apply(that,args))===deferred.promise())throw new TypeError("Thenable self-resolution");then=returned&&("object"==typeof returned||"function"==typeof returned)&&returned.then,isFunction(then)?special?then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special)):(maxDepth++,then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith))):(handler!==Identity&&(that=void 0,args=[returned]),(special||deferred.resolveWith)(that,args))}},process=special?mightThrow:function(){try{mightThrow()}catch(e){jQuery.Deferred.exceptionHook&&jQuery.Deferred.exceptionHook(e,process.stackTrace),depth+1>=maxDepth&&(handler!==Thrower&&(that=void 0,args=[e]),deferred.rejectWith(that,args))}};depth?process():(jQuery.Deferred.getStackHook&&(process.stackTrace=jQuery.Deferred.getStackHook()),window.setTimeout(process))}}return jQuery.Deferred(function(newDefer){tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith)),tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity)),tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower))}).promise()},promise:function(obj){return null!=obj?jQuery.extend(obj,promise):promise}},deferred={};return jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];promise[tuple[1]]=list.add,stateString&&list.add(function(){state=stateString},tuples[3-i][2].disable,tuples[3-i][3].disable,tuples[0][2].lock,tuples[0][3].lock),list.add(tuple[3].fire),deferred[tuple[0]]=function(){return deferred[tuple[0]+"With"](this===deferred?void 0:this,arguments),this},deferred[tuple[0]+"With"]=list.fireWith}),promise.promise(deferred),func&&func.call(deferred,deferred),deferred},when:function(singleValue){var remaining=arguments.length,i=remaining,resolveContexts=Array(i),resolveValues=slice.call(arguments),master=jQuery.Deferred(),updateFunc=function(i){return function(value){resolveContexts[i]=this,resolveValues[i]=arguments.length>1?slice.call(arguments):value,--remaining||master.resolveWith(resolveContexts,resolveValues)}};if(remaining<=1&&(adoptValue(singleValue,master.done(updateFunc(i)).resolve,master.reject,!remaining),"pending"===master.state()||isFunction(resolveValues[i]&&resolveValues[i].then)))return master.then();for(;i--;)adoptValue(resolveValues[i],updateFunc(i),master.reject);return master.promise()}});var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;jQuery.Deferred.exceptionHook=function(error,stack){window.console&&window.console.warn&&error&&rerrorNames.test(error.name)&&window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,stack)},jQuery.readyException=function(error){window.setTimeout(function(){throw error})};var readyList=jQuery.Deferred();function completed(){document.removeEventListener("DOMContentLoaded",completed),window.removeEventListener("load",completed),jQuery.ready()}jQuery.fn.ready=function(fn){return readyList.then(fn).catch(function(error){jQuery.readyException(error)}),this},jQuery.extend({isReady:!1,readyWait:1,ready:function(wait){(!0===wait?--jQuery.readyWait:jQuery.isReady)||(jQuery.isReady=!0,!0!==wait&&--jQuery.readyWait>0||readyList.resolveWith(document,[jQuery]))}}),jQuery.ready.then=readyList.then,"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll?window.setTimeout(jQuery.ready):(document.addEventListener("DOMContentLoaded",completed),window.addEventListener("load",completed));var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=null==key;if("object"===toType(key))for(i in chainable=!0,key)access(elems,fn,i,key[i],!0,emptyGet,raw);else if(void 0!==value&&(chainable=!0,isFunction(value)||(raw=!0),bulk&&(raw?(fn.call(elems,value),fn=null):(bulk=fn,fn=function(elem,key,value){return bulk.call(jQuery(elem),value)})),fn))for(;i<len;i++)fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));return chainable?elems:bulk?fn.call(elems):len?fn(elems[0],key):emptyGet},rmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g;function fcamelCase(all,letter){return letter.toUpperCase()}function camelCase(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)}var acceptData=function(owner){return 1===owner.nodeType||9===owner.nodeType||!+owner.nodeType};function Data(){this.expando=jQuery.expando+Data.uid++}Data.uid=1,Data.prototype={cache:function(owner){var value=owner[this.expando];return value||(value={},acceptData(owner)&&(owner.nodeType?owner[this.expando]=value:Object.defineProperty(owner,this.expando,{value:value,configurable:!0}))),value},set:function(owner,data,value){var prop,cache=this.cache(owner);if("string"==typeof data)cache[camelCase(data)]=value;else for(prop in data)cache[camelCase(prop)]=data[prop];return cache},get:function(owner,key){return void 0===key?this.cache(owner):owner[this.expando]&&owner[this.expando][camelCase(key)]},access:function(owner,key,value){return void 0===key||key&&"string"==typeof key&&void 0===value?this.get(owner,key):(this.set(owner,key,value),void 0!==value?value:key)},remove:function(owner,key){var i,cache=owner[this.expando];if(void 0!==cache){if(void 0!==key){i=(key=Array.isArray(key)?key.map(camelCase):(key=camelCase(key))in cache?[key]:key.match(rnothtmlwhite)||[]).length;for(;i--;)delete cache[key[i]]}(void 0===key||jQuery.isEmptyObject(cache))&&(owner.nodeType?owner[this.expando]=void 0:delete owner[this.expando])}},hasData:function(owner){var cache=owner[this.expando];return void 0!==cache&&!jQuery.isEmptyObject(cache)}};var dataPriv=new Data,dataUser=new Data,rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/[A-Z]/g;function dataAttr(elem,key,data){var name;if(void 0===data&&1===elem.nodeType)if(name="data-"+key.replace(rmultiDash,"-$&").toLowerCase(),"string"==typeof(data=elem.getAttribute(name))){try{data=function(data){return"true"===data||"false"!==data&&("null"===data?null:data===+data+""?+data:rbrace.test(data)?JSON.parse(data):data)}(data)}catch(e){}dataUser.set(elem,key,data)}else data=void 0;return data}jQuery.extend({hasData:function(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem)},data:function(elem,name,data){return dataUser.access(elem,name,data)},removeData:function(elem,name){dataUser.remove(elem,name)},_data:function(elem,name,data){return dataPriv.access(elem,name,data)},_removeData:function(elem,name){dataPriv.remove(elem,name)}}),jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(void 0===key){if(this.length&&(data=dataUser.get(elem),1===elem.nodeType&&!dataPriv.get(elem,"hasDataAttrs"))){for(i=attrs.length;i--;)attrs[i]&&0===(name=attrs[i].name).indexOf("data-")&&(name=camelCase(name.slice(5)),dataAttr(elem,name,data[name]));dataPriv.set(elem,"hasDataAttrs",!0)}return data}return"object"==typeof key?this.each(function(){dataUser.set(this,key)}):access(this,function(value){var data;if(elem&&void 0===value)return void 0!==(data=dataUser.get(elem,key))?data:void 0!==(data=dataAttr(elem,key))?data:void 0;this.each(function(){dataUser.set(this,key,value)})},null,value,arguments.length>1,null,!0)},removeData:function(key){return this.each(function(){dataUser.remove(this,key)})}}),jQuery.extend({queue:function(elem,type,data){var queue;if(elem)return type=(type||"fx")+"queue",queue=dataPriv.get(elem,type),data&&(!queue||Array.isArray(data)?queue=dataPriv.access(elem,type,jQuery.makeArray(data)):queue.push(data)),queue||[]},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type);"inprogress"===fn&&(fn=queue.shift(),startLength--),fn&&("fx"===type&&queue.unshift("inprogress"),delete hooks.stop,fn.call(elem,function(){jQuery.dequeue(elem,type)},hooks)),!startLength&&hooks&&hooks.empty.fire()},_queueHooks:function(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key])})})}}),jQuery.fn.extend({queue:function(type,data){var setter=2;return"string"!=typeof type&&(data=type,type="fx",setter--),arguments.length<setter?jQuery.queue(this[0],type):void 0===data?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type),"fx"===type&&"inprogress"!==queue[0]&&jQuery.dequeue(this,type)})},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type)})},clearQueue:function(type){return this.queue(type||"fx",[])},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){--count||defer.resolveWith(elements,[elements])};for("string"!=typeof type&&(obj=type,type=void 0),type=type||"fx";i--;)(tmp=dataPriv.get(elements[i],type+"queueHooks"))&&tmp.empty&&(count++,tmp.empty.add(resolve));return resolve(),defer.promise(obj)}});var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i"),cssExpand=["Top","Right","Bottom","Left"],isHiddenWithinTree=function(elem,el){return"none"===(elem=el||elem).style.display||""===elem.style.display&&jQuery.contains(elem.ownerDocument,elem)&&"none"===jQuery.css(elem,"display")},swap=function(elem,options,callback,args){var ret,name,old={};for(name in options)old[name]=elem.style[name],elem.style[name]=options[name];for(name in ret=callback.apply(elem,args||[]),options)elem.style[name]=old[name];return ret};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||"px"!==unit&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){for(initial/=2,unit=unit||initialInUnit[3],initialInUnit=+initial||1;maxIterations--;)jQuery.style(elem,prop,initialInUnit+unit),(1-scale)*(1-(scale=currentValue()/initial||.5))<=0&&(maxIterations=0),initialInUnit/=scale;initialInUnit*=2,jQuery.style(elem,prop,initialInUnit+unit),valueParts=valueParts||[]}return valueParts&&(initialInUnit=+initialInUnit||+initial||0,adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2],tween&&(tween.unit=unit,tween.start=initialInUnit,tween.end=adjusted)),adjusted}var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];return display||(temp=doc.body.appendChild(doc.createElement(nodeName)),display=jQuery.css(temp,"display"),temp.parentNode.removeChild(temp),"none"===display&&(display="block"),defaultDisplayMap[nodeName]=display,display)}function showHide(elements,show){for(var display,elem,values=[],index=0,length=elements.length;index<length;index++)(elem=elements[index]).style&&(display=elem.style.display,show?("none"===display&&(values[index]=dataPriv.get(elem,"display")||null,values[index]||(elem.style.display="")),""===elem.style.display&&isHiddenWithinTree(elem)&&(values[index]=getDefaultDisplay(elem))):"none"!==display&&(values[index]="none",dataPriv.set(elem,"display",display)));for(index=0;index<length;index++)null!=values[index]&&(elements[index].style.display=values[index]);return elements}jQuery.fn.extend({show:function(){return showHide(this,!0)},hide:function(){return showHide(this)},toggle:function(state){return"boolean"==typeof state?state?this.show():this.hide():this.each(function(){isHiddenWithinTree(this)?jQuery(this).show():jQuery(this).hide()})}});var rcheckableType=/^(?:checkbox|radio)$/i,rtagName=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,rscriptType=/^$|^module$|\/(?:java|ecma)script/i,wrapMap={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function getAll(context,tag){var ret;return ret=void 0!==context.getElementsByTagName?context.getElementsByTagName(tag||"*"):void 0!==context.querySelectorAll?context.querySelectorAll(tag||"*"):[],void 0===tag||tag&&nodeName(context,tag)?jQuery.merge([context],ret):ret}function setGlobalEval(elems,refElements){for(var i=0,l=elems.length;i<l;i++)dataPriv.set(elems[i],"globalEval",!refElements||dataPriv.get(refElements[i],"globalEval"))}wrapMap.optgroup=wrapMap.option,wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead,wrapMap.th=wrapMap.td;var div,input,rhtml=/<|&#?\w+;/;function buildFragment(elems,context,scripts,selection,ignored){for(var elem,tmp,tag,wrap,contains,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;i<l;i++)if((elem=elems[i])||0===elem)if("object"===toType(elem))jQuery.merge(nodes,elem.nodeType?[elem]:elem);else if(rhtml.test(elem)){for(tmp=tmp||fragment.appendChild(context.createElement("div")),tag=(rtagName.exec(elem)||["",""])[1].toLowerCase(),wrap=wrapMap[tag]||wrapMap._default,tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2],j=wrap[0];j--;)tmp=tmp.lastChild;jQuery.merge(nodes,tmp.childNodes),(tmp=fragment.firstChild).textContent=""}else nodes.push(context.createTextNode(elem));for(fragment.textContent="",i=0;elem=nodes[i++];)if(selection&&jQuery.inArray(elem,selection)>-1)ignored&&ignored.push(elem);else if(contains=jQuery.contains(elem.ownerDocument,elem),tmp=getAll(fragment.appendChild(elem),"script"),contains&&setGlobalEval(tmp),scripts)for(j=0;elem=tmp[j++];)rscriptType.test(elem.type||"")&&scripts.push(elem);return fragment}div=document.createDocumentFragment().appendChild(document.createElement("div")),(input=document.createElement("input")).setAttribute("type","radio"),input.setAttribute("checked","checked"),input.setAttribute("name","t"),div.appendChild(input),support.checkClone=div.cloneNode(!0).cloneNode(!0).lastChild.checked,div.innerHTML="<textarea>x</textarea>",support.noCloneChecked=!!div.cloneNode(!0).lastChild.defaultValue;var documentElement=document.documentElement,rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return!0}function returnFalse(){return!1}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if("object"==typeof types){for(type in"string"!=typeof selector&&(data=data||selector,selector=void 0),types)on(elem,type,selector,data,types[type],one);return elem}if(null==data&&null==fn?(fn=selector,data=selector=void 0):null==fn&&("string"==typeof selector?(fn=data,data=void 0):(fn=data,data=selector,selector=void 0)),!1===fn)fn=returnFalse;else if(!fn)return elem;return 1===one&&(origFn=fn,(fn=function(event){return jQuery().off(event),origFn.apply(this,arguments)}).guid=origFn.guid||(origFn.guid=jQuery.guid++)),elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);if(elemData)for(handler.handler&&(handler=(handleObjIn=handler).handler,selector=handleObjIn.selector),selector&&jQuery.find.matchesSelector(documentElement,selector),handler.guid||(handler.guid=jQuery.guid++),(events=elemData.events)||(events=elemData.events={}),(eventHandle=elemData.handle)||(eventHandle=elemData.handle=function(e){return void 0!==jQuery&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):void 0}),t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type&&(special=jQuery.event.special[type]||{},type=(selector?special.delegateType:special.bindType)||type,special=jQuery.event.special[type]||{},handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn),(handlers=events[type])||((handlers=events[type]=[]).delegateCount=0,special.setup&&!1!==special.setup.call(elem,data,namespaces,eventHandle)||elem.addEventListener&&elem.addEventListener(type,eventHandle)),special.add&&(special.add.call(elem,handleObj),handleObj.handler.guid||(handleObj.handler.guid=handler.guid)),selector?handlers.splice(handlers.delegateCount++,0,handleObj):handlers.push(handleObj),jQuery.event.global[type]=!0)},remove:function(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(elemData&&(events=elemData.events)){for(t=(types=(types||"").match(rnothtmlwhite)||[""]).length;t--;)if(type=origType=(tmp=rtypenamespace.exec(types[t])||[])[1],namespaces=(tmp[2]||"").split(".").sort(),type){for(special=jQuery.event.special[type]||{},handlers=events[type=(selector?special.delegateType:special.bindType)||type]||[],tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"),origCount=j=handlers.length;j--;)handleObj=handlers[j],!mappedTypes&&origType!==handleObj.origType||handler&&handler.guid!==handleObj.guid||tmp&&!tmp.test(handleObj.namespace)||selector&&selector!==handleObj.selector&&("**"!==selector||!handleObj.selector)||(handlers.splice(j,1),handleObj.selector&&handlers.delegateCount--,special.remove&&special.remove.call(elem,handleObj));origCount&&!handlers.length&&(special.teardown&&!1!==special.teardown.call(elem,namespaces,elemData.handle)||jQuery.removeEvent(elem,type,elemData.handle),delete events[type])}else for(type in events)jQuery.event.remove(elem,type+types[t],handler,selector,!0);jQuery.isEmptyObject(events)&&dataPriv.remove(elem,"handle events")}},dispatch:function(nativeEvent){var i,j,ret,matched,handleObj,handlerQueue,event=jQuery.event.fix(nativeEvent),args=new Array(arguments.length),handlers=(dataPriv.get(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};for(args[0]=event,i=1;i<arguments.length;i++)args[i]=arguments[i];if(event.delegateTarget=this,!special.preDispatch||!1!==special.preDispatch.call(this,event)){for(handlerQueue=jQuery.event.handlers.call(this,event,handlers),i=0;(matched=handlerQueue[i++])&&!event.isPropagationStopped();)for(event.currentTarget=matched.elem,j=0;(handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped();)event.rnamespace&&!event.rnamespace.test(handleObj.namespace)||(event.handleObj=handleObj,event.data=handleObj.data,void 0!==(ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args))&&!1===(event.result=ret)&&(event.preventDefault(),event.stopPropagation()));return special.postDispatch&&special.postDispatch.call(this,event),event.result}},handlers:function(event,handlers){var i,handleObj,sel,matchedHandlers,matchedSelectors,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&!("click"===event.type&&event.button>=1))for(;cur!==this;cur=cur.parentNode||this)if(1===cur.nodeType&&("click"!==event.type||!0!==cur.disabled)){for(matchedHandlers=[],matchedSelectors={},i=0;i<delegateCount;i++)void 0===matchedSelectors[sel=(handleObj=handlers[i]).selector+" "]&&(matchedSelectors[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length),matchedSelectors[sel]&&matchedHandlers.push(handleObj);matchedHandlers.length&&handlerQueue.push({elem:cur,handlers:matchedHandlers})}return cur=this,delegateCount<handlers.length&&handlerQueue.push({elem:cur,handlers:handlers.slice(delegateCount)}),handlerQueue},addProp:function(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:!0,configurable:!0,get:isFunction(hook)?function(){if(this.originalEvent)return hook(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[name]},set:function(value){Object.defineProperty(this,name,{enumerable:!0,configurable:!0,writable:!0,value:value})}})},fix:function(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&nodeName(this,"input"))return this.click(),!1},_default:function(event){return nodeName(event.target,"a")}},beforeunload:{postDispatch:function(event){void 0!==event.result&&event.originalEvent&&(event.originalEvent.returnValue=event.result)}}}},jQuery.removeEvent=function(elem,type,handle){elem.removeEventListener&&elem.removeEventListener(type,handle)},jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event))return new jQuery.Event(src,props);src&&src.type?(this.originalEvent=src,this.type=src.type,this.isDefaultPrevented=src.defaultPrevented||void 0===src.defaultPrevented&&!1===src.returnValue?returnTrue:returnFalse,this.target=src.target&&3===src.target.nodeType?src.target.parentNode:src.target,this.currentTarget=src.currentTarget,this.relatedTarget=src.relatedTarget):this.type=src,props&&jQuery.extend(this,props),this.timeStamp=src&&src.timeStamp||Date.now(),this[jQuery.expando]=!0},jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},jQuery.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(event){var button=event.button;return null==event.which&&rkeyEvent.test(event.type)?null!=event.charCode?event.charCode:event.keyCode:!event.which&&void 0!==button&&rmouseEvent.test(event.type)?1&button?1:2&button?3:4&button?2:0:event.which}},jQuery.event.addProp),jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,related=event.relatedTarget,handleObj=event.handleObj;return related&&(related===this||jQuery.contains(this,related))||(event.type=handleObj.origType,ret=handleObj.handler.apply(this,arguments),event.type=fix),ret}}}),jQuery.fn.extend({on:function(types,selector,data,fn){return on(this,types,selector,data,fn)},one:function(types,selector,data,fn){return on(this,types,selector,data,fn,1)},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj)return handleObj=types.handleObj,jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler),this;if("object"==typeof types){for(type in types)this.off(type,selector,types[type]);return this}return!1!==selector&&"function"!=typeof selector||(fn=selector,selector=void 0),!1===fn&&(fn=returnFalse),this.each(function(){jQuery.event.remove(this,types,fn,selector)})}});var rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,rnoInnerhtml=/<script|<style|<link/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function manipulationTarget(elem,content){return nodeName(elem,"table")&&nodeName(11!==content.nodeType?content:content.firstChild,"tr")&&jQuery(elem).children("tbody")[0]||elem}function disableScript(elem){return elem.type=(null!==elem.getAttribute("type"))+"/"+elem.type,elem}function restoreScript(elem){return"true/"===(elem.type||"").slice(0,5)?elem.type=elem.type.slice(5):elem.removeAttribute("type"),elem}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,pdataCur,udataOld,udataCur,events;if(1===dest.nodeType){if(dataPriv.hasData(src)&&(pdataOld=dataPriv.access(src),pdataCur=dataPriv.set(dest,pdataOld),events=pdataOld.events))for(type in delete pdataCur.handle,pdataCur.events={},events)for(i=0,l=events[type].length;i<l;i++)jQuery.event.add(dest,type,events[type][i]);dataUser.hasData(src)&&(udataOld=dataUser.access(src),udataCur=jQuery.extend({},udataOld),dataUser.set(dest,udataCur))}}function domManip(collection,args,callback,ignored){args=concat.apply([],args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],valueIsFunction=isFunction(value);if(valueIsFunction||l>1&&"string"==typeof value&&!support.checkClone&&rchecked.test(value))return collection.each(function(index){var self=collection.eq(index);valueIsFunction&&(args[0]=value.call(this,index,self.html())),domManip(self,args,callback,ignored)});if(l&&(first=(fragment=buildFragment(args,collection[0].ownerDocument,!1,collection,ignored)).firstChild,1===fragment.childNodes.length&&(fragment=first),first||ignored)){for(hasScripts=(scripts=jQuery.map(getAll(fragment,"script"),disableScript)).length;i<l;i++)node=fragment,i!==iNoClone&&(node=jQuery.clone(node,!0,!0),hasScripts&&jQuery.merge(scripts,getAll(node,"script"))),callback.call(collection[i],node,i);if(hasScripts)for(doc=scripts[scripts.length-1].ownerDocument,jQuery.map(scripts,restoreScript),i=0;i<hasScripts;i++)node=scripts[i],rscriptType.test(node.type||"")&&!dataPriv.access(node,"globalEval")&&jQuery.contains(doc,node)&&(node.src&&"module"!==(node.type||"").toLowerCase()?jQuery._evalUrl&&jQuery._evalUrl(node.src):DOMEval(node.textContent.replace(rcleanScript,""),doc,node))}return collection}function remove(elem,selector,keepData){for(var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;null!=(node=nodes[i]);i++)keepData||1!==node.nodeType||jQuery.cleanData(getAll(node)),node.parentNode&&(keepData&&jQuery.contains(node.ownerDocument,node)&&setGlobalEval(getAll(node,"script")),node.parentNode.removeChild(node));return elem}jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1></$2>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,src,dest,nodeName,clone=elem.cloneNode(!0),inPage=jQuery.contains(elem.ownerDocument,elem);if(!(support.noCloneChecked||1!==elem.nodeType&&11!==elem.nodeType||jQuery.isXMLDoc(elem)))for(destElements=getAll(clone),i=0,l=(srcElements=getAll(elem)).length;i<l;i++)src=srcElements[i],dest=destElements[i],void 0,"input"===(nodeName=dest.nodeName.toLowerCase())&&rcheckableType.test(src.type)?dest.checked=src.checked:"input"!==nodeName&&"textarea"!==nodeName||(dest.defaultValue=src.defaultValue);if(dataAndEvents)if(deepDataAndEvents)for(srcElements=srcElements||getAll(elem),destElements=destElements||getAll(clone),i=0,l=srcElements.length;i<l;i++)cloneCopyEvent(srcElements[i],destElements[i]);else cloneCopyEvent(elem,clone);return(destElements=getAll(clone,"script")).length>0&&setGlobalEval(destElements,!inPage&&getAll(elem,"script")),clone},cleanData:function(elems){for(var data,elem,type,special=jQuery.event.special,i=0;void 0!==(elem=elems[i]);i++)if(acceptData(elem)){if(data=elem[dataPriv.expando]){if(data.events)for(type in data.events)special[type]?jQuery.event.remove(elem,type):jQuery.removeEvent(elem,type,data.handle);elem[dataPriv.expando]=void 0}elem[dataUser.expando]&&(elem[dataUser.expando]=void 0)}}}),jQuery.fn.extend({detach:function(selector){return remove(this,selector,!0)},remove:function(selector){return remove(this,selector)},text:function(value){return access(this,function(value){return void 0===value?jQuery.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=value)})},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||manipulationTarget(this,elem).appendChild(elem)})},prepend:function(){return domManip(this,arguments,function(elem){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this)})},after:function(){return domManip(this,arguments,function(elem){this.parentNode&&this.parentNode.insertBefore(elem,this.nextSibling)})},empty:function(){for(var elem,i=0;null!=(elem=this[i]);i++)1===elem.nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.textContent="");return this},clone:function(dataAndEvents,deepDataAndEvents){return dataAndEvents=null!=dataAndEvents&&dataAndEvents,deepDataAndEvents=null==deepDataAndEvents?dataAndEvents:deepDataAndEvents,this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(void 0===value&&1===elem.nodeType)return elem.innerHTML;if("string"==typeof value&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++)1===(elem=this[i]||{}).nodeType&&(jQuery.cleanData(getAll(elem,!1)),elem.innerHTML=value);elem=0}catch(e){}}elem&&this.empty().append(value)},null,value,arguments.length)},replaceWith:function(){var ignored=[];return domManip(this,arguments,function(elem){var parent=this.parentNode;jQuery.inArray(this,ignored)<0&&(jQuery.cleanData(getAll(this)),parent&&parent.replaceChild(elem,this))},ignored)}}),jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){for(var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;i<=last;i++)elems=i===last?this:this.clone(!0),jQuery(insert[i])[original](elems),push.apply(ret,elems.get());return this.pushStack(ret)}});var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i"),getStyles=function(elem){var view=elem.ownerDocument.defaultView;return view&&view.opener||(view=window),view.getComputedStyle(elem)},rboxStyle=new RegExp(cssExpand.join("|"),"i");function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;return(computed=computed||getStyles(elem))&&(""!==(ret=computed.getPropertyValue(name)||computed[name])||jQuery.contains(elem.ownerDocument,elem)||(ret=jQuery.style(elem,name)),!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name)&&(width=style.width,minWidth=style.minWidth,maxWidth=style.maxWidth,style.minWidth=style.maxWidth=style.width=ret,ret=computed.width,style.width=width,style.minWidth=minWidth,style.maxWidth=maxWidth)),void 0!==ret?ret+"":ret}function addGetHookIf(conditionFn,hookFn){return{get:function(){if(!conditionFn())return(this.get=hookFn).apply(this,arguments);delete this.get}}}!function(){function computeStyleTests(){if(div){container.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",div.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",documentElement.appendChild(container).appendChild(div);var divStyle=window.getComputedStyle(div);pixelPositionVal="1%"!==divStyle.top,reliableMarginLeftVal=12===roundPixelMeasures(divStyle.marginLeft),div.style.right="60%",pixelBoxStylesVal=36===roundPixelMeasures(divStyle.right),boxSizingReliableVal=36===roundPixelMeasures(divStyle.width),div.style.position="absolute",scrollboxSizeVal=36===div.offsetWidth||"absolute",documentElement.removeChild(container),div=null}}function roundPixelMeasures(measure){return Math.round(parseFloat(measure))}var pixelPositionVal,boxSizingReliableVal,scrollboxSizeVal,pixelBoxStylesVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");div.style&&(div.style.backgroundClip="content-box",div.cloneNode(!0).style.backgroundClip="",support.clearCloneStyle="content-box"===div.style.backgroundClip,jQuery.extend(support,{boxSizingReliable:function(){return computeStyleTests(),boxSizingReliableVal},pixelBoxStyles:function(){return computeStyleTests(),pixelBoxStylesVal},pixelPosition:function(){return computeStyleTests(),pixelPositionVal},reliableMarginLeft:function(){return computeStyleTests(),reliableMarginLeftVal},scrollboxSize:function(){return computeStyleTests(),scrollboxSizeVal}}))}();var rdisplayswap=/^(none|table(?!-c[ea]).+)/,rcustomProp=/^--/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","Moz","ms"],emptyStyle=document.createElement("div").style;function finalPropName(name){var ret=jQuery.cssProps[name];return ret||(ret=jQuery.cssProps[name]=function(name){if(name in emptyStyle)return name;for(var capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;i--;)if((name=cssPrefixes[i]+capName)in emptyStyle)return name}(name)||name),ret}function setPositiveNumber(elem,value,subtract){var matches=rcssNum.exec(value);return matches?Math.max(0,matches[2]-(subtract||0))+(matches[3]||"px"):value}function boxModelAdjustment(elem,dimension,box,isBorderBox,styles,computedVal){var i="width"===dimension?1:0,extra=0,delta=0;if(box===(isBorderBox?"border":"content"))return 0;for(;i<4;i+=2)"margin"===box&&(delta+=jQuery.css(elem,box+cssExpand[i],!0,styles)),isBorderBox?("content"===box&&(delta-=jQuery.css(elem,"padding"+cssExpand[i],!0,styles)),"margin"!==box&&(delta-=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles))):(delta+=jQuery.css(elem,"padding"+cssExpand[i],!0,styles),"padding"!==box?delta+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles):extra+=jQuery.css(elem,"border"+cssExpand[i]+"Width",!0,styles));return!isBorderBox&&computedVal>=0&&(delta+=Math.max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-computedVal-delta-extra-.5))),delta}function getWidthOrHeight(elem,dimension,extra){var styles=getStyles(elem),val=curCSS(elem,dimension,styles),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),valueIsBorderBox=isBorderBox;if(rnumnonpx.test(val)){if(!extra)return val;val="auto"}return valueIsBorderBox=valueIsBorderBox&&(support.boxSizingReliable()||val===elem.style[dimension]),("auto"===val||!parseFloat(val)&&"inline"===jQuery.css(elem,"display",!1,styles))&&(val=elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)],valueIsBorderBox=!0),(val=parseFloat(val)||0)+boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles,val)+"px"}function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing)}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return""===ret?"1":ret}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(elem,name,value,extra){if(elem&&3!==elem.nodeType&&8!==elem.nodeType&&elem.style){var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;if(isCustomProp||(name=finalPropName(origName)),hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName],void 0===value)return hooks&&"get"in hooks&&void 0!==(ret=hooks.get(elem,!1,extra))?ret:style[name];"string"===(type=typeof value)&&(ret=rcssNum.exec(value))&&ret[1]&&(value=adjustCSS(elem,name,ret),type="number"),null!=value&&value==value&&("number"===type&&(value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")),support.clearCloneStyle||""!==value||0!==name.indexOf("background")||(style[name]="inherit"),hooks&&"set"in hooks&&void 0===(value=hooks.set(elem,value,extra))||(isCustomProp?style.setProperty(name,value):style[name]=value))}},css:function(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name);return rcustomProp.test(name)||(name=finalPropName(origName)),(hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName])&&"get"in hooks&&(val=hooks.get(elem,!0,extra)),void 0===val&&(val=curCSS(elem,name,styles)),"normal"===val&&name in cssNormalTransform&&(val=cssNormalTransform[name]),""===extra||extra?(num=parseFloat(val),!0===extra||isFinite(num)?num||0:val):val}}),jQuery.each(["height","width"],function(i,dimension){jQuery.cssHooks[dimension]={get:function(elem,computed,extra){if(computed)return!rdisplayswap.test(jQuery.css(elem,"display"))||elem.getClientRects().length&&elem.getBoundingClientRect().width?getWidthOrHeight(elem,dimension,extra):swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra)})},set:function(elem,value,extra){var matches,styles=getStyles(elem),isBorderBox="border-box"===jQuery.css(elem,"boxSizing",!1,styles),subtract=extra&&boxModelAdjustment(elem,dimension,extra,isBorderBox,styles);return isBorderBox&&support.scrollboxSize()===styles.position&&(subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-parseFloat(styles[dimension])-boxModelAdjustment(elem,dimension,"border",!1,styles)-.5)),subtract&&(matches=rcssNum.exec(value))&&"px"!==(matches[3]||"px")&&(elem.style[dimension]=value,value=jQuery.css(elem,dimension)),setPositiveNumber(0,value,subtract)}}}),jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed)return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}))+"px"}),jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){for(var i=0,expanded={},parts="string"==typeof value?value.split(" "):[value];i<4;i++)expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];return expanded}},"margin"!==prefix&&(jQuery.cssHooks[prefix+suffix].set=setPositiveNumber)}),jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){for(styles=getStyles(elem),len=name.length;i<len;i++)map[name[i]]=jQuery.css(elem,name[i],!1,styles);return map}return void 0!==value?jQuery.style(elem,name,value):jQuery.css(elem,name)},name,value,arguments.length>1)}}),jQuery.Tween=Tween,Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem,this.prop=prop,this.easing=easing||jQuery.easing._default,this.options=options,this.start=this.now=this.cur(),this.end=end,this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];return this.options.duration?this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration):this.pos=eased=percent,this.now=(this.end-this.start)*eased+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),hooks&&hooks.set?hooks.set(this):Tween.propHooks._default.set(this),this}},Tween.prototype.init.prototype=Tween.prototype,Tween.propHooks={_default:{get:function(tween){var result;return 1!==tween.elem.nodeType||null!=tween.elem[tween.prop]&&null==tween.elem.style[tween.prop]?tween.elem[tween.prop]:(result=jQuery.css(tween.elem,tween.prop,""))&&"auto"!==result?result:0},set:function(tween){jQuery.fx.step[tween.prop]?jQuery.fx.step[tween.prop](tween):1!==tween.elem.nodeType||null==tween.elem.style[jQuery.cssProps[tween.prop]]&&!jQuery.cssHooks[tween.prop]?tween.elem[tween.prop]=tween.now:jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}}},Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){tween.elem.nodeType&&tween.elem.parentNode&&(tween.elem[tween.prop]=tween.now)}},jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"},jQuery.fx=Tween.prototype.init,jQuery.fx.step={};var fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){inProgress&&(!1===document.hidden&&window.requestAnimationFrame?window.requestAnimationFrame(schedule):window.setTimeout(schedule,jQuery.fx.interval),jQuery.fx.tick())}function createFxNow(){return window.setTimeout(function(){fxNow=void 0}),fxNow=Date.now()}function genFx(type,includeWidth){var which,i=0,attrs={height:type};for(includeWidth=includeWidth?1:0;i<4;i+=2-includeWidth)attrs["margin"+(which=cssExpand[i])]=attrs["padding"+which]=type;return includeWidth&&(attrs.opacity=attrs.width=type),attrs}function createTween(value,prop,animation){for(var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;index<length;index++)if(tween=collection[index].call(animation,prop,value))return tween}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem}),tick=function(){if(stopped)return!1;for(var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),percent=1-(remaining/animation.duration||0),index=0,length=animation.tweens.length;index<length;index++)animation.tweens[index].run(percent);return deferred.notifyWith(elem,[animation,percent,remaining]),percent<1&&length?remaining:(length||deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation]),!1)},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(!0,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);return animation.tweens.push(tween),tween},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped)return this;for(stopped=!0;index<length;index++)animation.tweens[index].run(1);return gotoEnd?(deferred.notifyWith(elem,[animation,1,0]),deferred.resolveWith(elem,[animation,gotoEnd])):deferred.rejectWith(elem,[animation,gotoEnd]),this}}),props=animation.props;for(!function(props,specialEasing){var index,name,easing,value,hooks;for(index in props)if(easing=specialEasing[name=camelCase(index)],value=props[index],Array.isArray(value)&&(easing=value[1],value=props[index]=value[0]),index!==name&&(props[name]=value,delete props[index]),(hooks=jQuery.cssHooks[name])&&"expand"in hooks)for(index in value=hooks.expand(value),delete props[name],value)index in props||(props[index]=value[index],specialEasing[index]=easing);else specialEasing[name]=easing}(props,animation.opts.specialEasing);index<length;index++)if(result=Animation.prefilters[index].call(animation,elem,props,animation.opts))return isFunction(result.stop)&&(jQuery._queueHooks(animation.elem,animation.opts.queue).stop=result.stop.bind(result)),result;return jQuery.map(props,createTween,animation),isFunction(animation.opts.start)&&animation.opts.start.call(elem,animation),animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always),jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue})),animation}jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);return adjustCSS(tween.elem,prop,rcssNum.exec(value),tween),tween}]},tweener:function(props,callback){isFunction(props)?(callback=props,props=["*"]):props=props.match(rnothtmlwhite);for(var prop,index=0,length=props.length;index<length;index++)prop=props[index],Animation.tweeners[prop]=Animation.tweeners[prop]||[],Animation.tweeners[prop].unshift(callback)},prefilters:[function(elem,props,opts){var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox="width"in props||"height"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,"fxshow");for(prop in opts.queue||(null==(hooks=jQuery._queueHooks(elem,"fx")).unqueued&&(hooks.unqueued=0,oldfire=hooks.empty.fire,hooks.empty.fire=function(){hooks.unqueued||oldfire()}),hooks.unqueued++,anim.always(function(){anim.always(function(){hooks.unqueued--,jQuery.queue(elem,"fx").length||hooks.empty.fire()})})),props)if(value=props[prop],rfxtypes.test(value)){if(delete props[prop],toggle=toggle||"toggle"===value,value===(hidden?"hide":"show")){if("show"!==value||!dataShow||void 0===dataShow[prop])continue;hidden=!0}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop)}if((propTween=!jQuery.isEmptyObject(props))||!jQuery.isEmptyObject(orig))for(prop in isBox&&1===elem.nodeType&&(opts.overflow=[style.overflow,style.overflowX,style.overflowY],null==(restoreDisplay=dataShow&&dataShow.display)&&(restoreDisplay=dataPriv.get(elem,"display")),"none"===(display=jQuery.css(elem,"display"))&&(restoreDisplay?display=restoreDisplay:(showHide([elem],!0),restoreDisplay=elem.style.display||restoreDisplay,display=jQuery.css(elem,"display"),showHide([elem]))),("inline"===display||"inline-block"===display&&null!=restoreDisplay)&&"none"===jQuery.css(elem,"float")&&(propTween||(anim.done(function(){style.display=restoreDisplay}),null==restoreDisplay&&(display=style.display,restoreDisplay="none"===display?"":display)),style.display="inline-block")),opts.overflow&&(style.overflow="hidden",anim.always(function(){style.overflow=opts.overflow[0],style.overflowX=opts.overflow[1],style.overflowY=opts.overflow[2]})),propTween=!1,orig)propTween||(dataShow?"hidden"in dataShow&&(hidden=dataShow.hidden):dataShow=dataPriv.access(elem,"fxshow",{display:restoreDisplay}),toggle&&(dataShow.hidden=!hidden),hidden&&showHide([elem],!0),anim.done(function(){for(prop in hidden||showHide([elem]),dataPriv.remove(elem,"fxshow"),orig)jQuery.style(elem,prop,orig[prop])})),propTween=createTween(hidden?dataShow[prop]:0,prop,anim),prop in dataShow||(dataShow[prop]=propTween.start,hidden&&(propTween.end=propTween.start,propTween.start=0))}],prefilter:function(callback,prepend){prepend?Animation.prefilters.unshift(callback):Animation.prefilters.push(callback)}}),jQuery.speed=function(speed,easing,fn){var opt=speed&&"object"==typeof speed?jQuery.extend({},speed):{complete:fn||!fn&&easing||isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!isFunction(easing)&&easing};return jQuery.fx.off?opt.duration=0:"number"!=typeof opt.duration&&(opt.duration in jQuery.fx.speeds?opt.duration=jQuery.fx.speeds[opt.duration]:opt.duration=jQuery.fx.speeds._default),null!=opt.queue&&!0!==opt.queue||(opt.queue="fx"),opt.old=opt.complete,opt.complete=function(){isFunction(opt.old)&&opt.old.call(this),opt.queue&&jQuery.dequeue(this,opt.queue)},opt},jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHiddenWithinTree).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback)},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);(empty||dataPriv.get(this,"finish"))&&anim.stop(!0)};return doAnimation.finish=doAnimation,empty||!1===optall.queue?this.each(doAnimation):this.queue(optall.queue,doAnimation)},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop,stop(gotoEnd)};return"string"!=typeof type&&(gotoEnd=clearQueue,clearQueue=type,type=void 0),clearQueue&&!1!==type&&this.queue(type||"fx",[]),this.each(function(){var dequeue=!0,index=null!=type&&type+"queueHooks",timers=jQuery.timers,data=dataPriv.get(this);if(index)data[index]&&data[index].stop&&stopQueue(data[index]);else for(index in data)data[index]&&data[index].stop&&rrun.test(index)&&stopQueue(data[index]);for(index=timers.length;index--;)timers[index].elem!==this||null!=type&&timers[index].queue!==type||(timers[index].anim.stop(gotoEnd),dequeue=!1,timers.splice(index,1));!dequeue&&gotoEnd||jQuery.dequeue(this,type)})},finish:function(type){return!1!==type&&(type=type||"fx"),this.each(function(){var index,data=dataPriv.get(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;for(data.finish=!0,jQuery.queue(this,type,[]),hooks&&hooks.stop&&hooks.stop.call(this,!0),index=timers.length;index--;)timers[index].elem===this&&timers[index].queue===type&&(timers[index].anim.stop(!0),timers.splice(index,1));for(index=0;index<length;index++)queue[index]&&queue[index].finish&&queue[index].finish.call(this);delete data.finish})}}),jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return null==speed||"boolean"==typeof speed?cssFn.apply(this,arguments):this.animate(genFx(name,!0),speed,easing,callback)}}),jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback)}}),jQuery.timers=[],jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;for(fxNow=Date.now();i<timers.length;i++)(timer=timers[i])()||timers[i]!==timer||timers.splice(i--,1);timers.length||jQuery.fx.stop(),fxNow=void 0},jQuery.fx.timer=function(timer){jQuery.timers.push(timer),jQuery.fx.start()},jQuery.fx.interval=13,jQuery.fx.start=function(){inProgress||(inProgress=!0,schedule())},jQuery.fx.stop=function(){inProgress=null},jQuery.fx.speeds={slow:600,fast:200,_default:400},jQuery.fn.delay=function(time,type){return time=jQuery.fx&&jQuery.fx.speeds[time]||time,type=type||"fx",this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout)}})},function(){var input=document.createElement("input"),opt=document.createElement("select").appendChild(document.createElement("option"));input.type="checkbox",support.checkOn=""!==input.value,support.optSelected=opt.selected,(input=document.createElement("input")).value="t",input.type="radio",support.radioValue="t"===input.value}();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}}),jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return void 0===elem.getAttribute?jQuery.prop(elem,name,value):(1===nType&&jQuery.isXMLDoc(elem)||(hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:void 0)),void 0!==value?null===value?void jQuery.removeAttr(elem,name):hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:(elem.setAttribute(name,value+""),value):hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:null==(ret=jQuery.find.attr(elem,name))?void 0:ret)},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&"radio"===value&&nodeName(elem,"input")){var val=elem.value;return elem.setAttribute("type",value),val&&(elem.value=val),value}}}},removeAttr:function(elem,value){var name,i=0,attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&1===elem.nodeType)for(;name=attrNames[i++];)elem.removeAttribute(name)}}),boolHook={set:function(elem,value,name){return!1===value?jQuery.removeAttr(elem,name):elem.setAttribute(name,name),name}},jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();return isXML||(handle=attrHandle[lowercaseName],attrHandle[lowercaseName]=ret,ret=null!=getter(elem,name,isXML)?lowercaseName:null,attrHandle[lowercaseName]=handle),ret}});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;function stripAndCollapse(value){return(value.match(rnothtmlwhite)||[]).join(" ")}function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||""}function classesToArray(value){return Array.isArray(value)?value:"string"==typeof value&&value.match(rnothtmlwhite)||[]}jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){return this.each(function(){delete this[jQuery.propFix[name]||name]})}}),jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(3!==nType&&8!==nType&&2!==nType)return 1===nType&&jQuery.isXMLDoc(elem)||(name=jQuery.propFix[name]||name,hooks=jQuery.propHooks[name]),void 0!==value?hooks&&"set"in hooks&&void 0!==(ret=hooks.set(elem,value,name))?ret:elem[name]=value:hooks&&"get"in hooks&&null!==(ret=hooks.get(elem,name))?ret:elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),support.optSelected||(jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;return parent&&parent.parentNode&&parent.parentNode.selectedIndex,null},set:function(elem){var parent=elem.parentNode;parent&&(parent.selectedIndex,parent.parentNode&&parent.parentNode.selectedIndex)}}),jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this}),jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))});if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)cur.indexOf(" "+clazz+" ")<0&&(cur+=clazz+" ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(isFunction(value))return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))});if(!arguments.length)return this.attr("class","");if((classes=classesToArray(value)).length)for(;elem=this[i++];)if(curValue=getClass(elem),cur=1===elem.nodeType&&" "+stripAndCollapse(curValue)+" "){for(j=0;clazz=classes[j++];)for(;cur.indexOf(" "+clazz+" ")>-1;)cur=cur.replace(" "+clazz+" "," ");curValue!==(finalValue=stripAndCollapse(cur))&&elem.setAttribute("class",finalValue)}return this},toggleClass:function(value,stateVal){var type=typeof value,isValidValue="string"===type||Array.isArray(value);return"boolean"==typeof stateVal&&isValidValue?stateVal?this.addClass(value):this.removeClass(value):isFunction(value)?this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)}):this.each(function(){var className,i,self,classNames;if(isValidValue)for(i=0,self=jQuery(this),classNames=classesToArray(value);className=classNames[i++];)self.hasClass(className)?self.removeClass(className):self.addClass(className);else void 0!==value&&"boolean"!==type||((className=getClass(this))&&dataPriv.set(this,"__className__",className),this.setAttribute&&this.setAttribute("class",className||!1===value?"":dataPriv.get(this,"__className__")||""))})},hasClass:function(selector){var className,elem,i=0;for(className=" "+selector+" ";elem=this[i++];)if(1===elem.nodeType&&(" "+stripAndCollapse(getClass(elem))+" ").indexOf(className)>-1)return!0;return!1}});var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,valueIsFunction,elem=this[0];return arguments.length?(valueIsFunction=isFunction(value),this.each(function(i){var val;1===this.nodeType&&(null==(val=valueIsFunction?value.call(this,i,jQuery(this).val()):value)?val="":"number"==typeof val?val+="":Array.isArray(val)&&(val=jQuery.map(val,function(value){return null==value?"":value+""})),(hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()])&&"set"in hooks&&void 0!==hooks.set(this,val,"value")||(this.value=val))})):elem?(hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()])&&"get"in hooks&&void 0!==(ret=hooks.get(elem,"value"))?ret:"string"==typeof(ret=elem.value)?ret.replace(rreturn,""):null==ret?"":ret:void 0}}),jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return null!=val?val:stripAndCollapse(jQuery.text(elem))}},select:{get:function(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one="select-one"===elem.type,values=one?null:[],max=one?index+1:options.length;for(i=index<0?max:one?index:0;i<max;i++)if(((option=options[i]).selected||i===index)&&!option.disabled&&(!option.parentNode.disabled||!nodeName(option.parentNode,"optgroup"))){if(value=jQuery(option).val(),one)return value;values.push(value)}return values},set:function(elem,value){for(var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;i--;)((option=options[i]).selected=jQuery.inArray(jQuery.valHooks.option.get(option),values)>-1)&&(optionSet=!0);return optionSet||(elem.selectedIndex=-1),values}}}}),jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(Array.isArray(value))return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1}},support.checkOn||(jQuery.valHooks[this].get=function(elem){return null===elem.getAttribute("value")?"on":elem.value})}),support.focusin="onfocusin"in window;var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function(e){e.stopPropagation()};jQuery.extend(jQuery.event,{trigger:function(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];if(cur=lastElement=tmp=elem=elem||document,3!==elem.nodeType&&8!==elem.nodeType&&!rfocusMorph.test(type+jQuery.event.triggered)&&(type.indexOf(".")>-1&&(type=(namespaces=type.split(".")).shift(),namespaces.sort()),ontype=type.indexOf(":")<0&&"on"+type,(event=event[jQuery.expando]?event:new jQuery.Event(type,"object"==typeof event&&event)).isTrigger=onlyHandlers?2:3,event.namespace=namespaces.join("."),event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,event.result=void 0,event.target||(event.target=elem),data=null==data?[event]:jQuery.makeArray(data,[event]),special=jQuery.event.special[type]||{},onlyHandlers||!special.trigger||!1!==special.trigger.apply(elem,data))){if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){for(bubbleType=special.delegateType||type,rfocusMorph.test(bubbleType+type)||(cur=cur.parentNode);cur;cur=cur.parentNode)eventPath.push(cur),tmp=cur;tmp===(elem.ownerDocument||document)&&eventPath.push(tmp.defaultView||tmp.parentWindow||window)}for(i=0;(cur=eventPath[i++])&&!event.isPropagationStopped();)lastElement=cur,event.type=i>1?bubbleType:special.bindType||type,(handle=(dataPriv.get(cur,"events")||{})[event.type]&&dataPriv.get(cur,"handle"))&&handle.apply(cur,data),(handle=ontype&&cur[ontype])&&handle.apply&&acceptData(cur)&&(event.result=handle.apply(cur,data),!1===event.result&&event.preventDefault());return event.type=type,onlyHandlers||event.isDefaultPrevented()||special._default&&!1!==special._default.apply(eventPath.pop(),data)||!acceptData(elem)||ontype&&isFunction(elem[type])&&!isWindow(elem)&&((tmp=elem[ontype])&&(elem[ontype]=null),jQuery.event.triggered=type,event.isPropagationStopped()&&lastElement.addEventListener(type,stopPropagationCallback),elem[type](),event.isPropagationStopped()&&lastElement.removeEventListener(type,stopPropagationCallback),jQuery.event.triggered=void 0,tmp&&(elem[ontype]=tmp)),event.result}},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event,event,{type:type,isSimulated:!0});jQuery.event.trigger(e,null,elem)}}),jQuery.fn.extend({trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this)})},triggerHandler:function(type,data){var elem=this[0];if(elem)return jQuery.event.trigger(type,data,elem,!0)}}),support.focusin||jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event))};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix);attaches||doc.addEventListener(orig,handler,!0),dataPriv.access(doc,fix,(attaches||0)+1)},teardown:function(){var doc=this.ownerDocument||this,attaches=dataPriv.access(doc,fix)-1;attaches?dataPriv.access(doc,fix,attaches):(doc.removeEventListener(orig,handler,!0),dataPriv.remove(doc,fix))}}});var location=window.location,nonce=Date.now(),rquery=/\?/;jQuery.parseXML=function(data){var xml;if(!data||"string"!=typeof data)return null;try{xml=(new window.DOMParser).parseFromString(data,"text/xml")}catch(e){xml=void 0}return xml&&!xml.getElementsByTagName("parsererror").length||jQuery.error("Invalid XML: "+data),xml};var rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj))jQuery.each(obj,function(i,v){traditional||rbracket.test(prefix)?add(prefix,v):buildParams(prefix+"["+("object"==typeof v&&null!=v?i:"")+"]",v,traditional,add)});else if(traditional||"object"!==toType(obj))add(prefix,obj);else for(name in obj)buildParams(prefix+"["+name+"]",obj[name],traditional,add)}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,valueOrFunction){var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(null==value?"":value)};if(Array.isArray(a)||a.jquery&&!jQuery.isPlainObject(a))jQuery.each(a,function(){add(this.name,this.value)});else for(prefix in a)buildParams(prefix,a[prefix],traditional,add);return s.join("&")},jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return null==val?null:Array.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}});var r20=/%20/g,rhash=/#.*$/,rantiCache=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/gm,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,prefilters={},transports={},allTypes="*/".concat("*"),originAnchor=document.createElement("a");function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){"string"!=typeof dataTypeExpression&&(func=dataTypeExpression,dataTypeExpression="*");var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func))for(;dataType=dataTypes[i++];)"+"===dataType[0]?(dataType=dataType.slice(1)||"*",(structure[dataType]=structure[dataType]||[]).unshift(func)):(structure[dataType]=structure[dataType]||[]).push(func)}}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;return inspected[dataType]=!0,jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);return"string"!=typeof dataTypeOrTransport||seekingTransport||inspected[dataTypeOrTransport]?seekingTransport?!(selected=dataTypeOrTransport):void 0:(options.dataTypes.unshift(dataTypeOrTransport),inspect(dataTypeOrTransport),!1)}),selected}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*")}function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src)void 0!==src[key]&&((flatOptions[key]?target:deep||(deep={}))[key]=src[key]);return deep&&jQuery.extend(!0,target,deep),target}originAnchor.href=location.href,jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(location.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":jQuery.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){"object"==typeof url&&(options=url,url=void 0),options=options||{};var transport,cacheURL,responseHeadersString,responseHeaders,timeoutTimer,urlAnchor,completed,fireGlobals,i,uncached,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(completed){if(!responseHeaders)for(responseHeaders={};match=rheaders.exec(responseHeadersString);)responseHeaders[match[1].toLowerCase()]=match[2];match=responseHeaders[key.toLowerCase()]}return null==match?null:match},getAllResponseHeaders:function(){return completed?responseHeadersString:null},setRequestHeader:function(name,value){return null==completed&&(name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name,requestHeaders[name]=value),this},overrideMimeType:function(type){return null==completed&&(s.mimeType=type),this},statusCode:function(map){var code;if(map)if(completed)jqXHR.always(map[jqXHR.status]);else for(code in map)statusCode[code]=[statusCode[code],map[code]];return this},abort:function(statusText){var finalText=statusText||strAbort;return transport&&transport.abort(finalText),done(0,finalText),this}};if(deferred.promise(jqXHR),s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//"),s.type=options.method||options.type||s.method||s.type,s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""],null==s.crossDomain){urlAnchor=document.createElement("a");try{urlAnchor.href=s.url,urlAnchor.href=urlAnchor.href,s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!=urlAnchor.protocol+"//"+urlAnchor.host}catch(e){s.crossDomain=!0}}if(s.data&&s.processData&&"string"!=typeof s.data&&(s.data=jQuery.param(s.data,s.traditional)),inspectPrefiltersOrTransports(prefilters,s,options,jqXHR),completed)return jqXHR;for(i in(fireGlobals=jQuery.event&&s.global)&&0==jQuery.active++&&jQuery.event.trigger("ajaxStart"),s.type=s.type.toUpperCase(),s.hasContent=!rnoContent.test(s.type),cacheURL=s.url.replace(rhash,""),s.hasContent?s.data&&s.processData&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&(s.data=s.data.replace(r20,"+")):(uncached=s.url.slice(cacheURL.length),s.data&&(s.processData||"string"==typeof s.data)&&(cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data,delete s.data),!1===s.cache&&(cacheURL=cacheURL.replace(rantiCache,"$1"),uncached=(rquery.test(cacheURL)?"&":"?")+"_="+nonce+++uncached),s.url=cacheURL+uncached),s.ifModified&&(jQuery.lastModified[cacheURL]&&jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]),jQuery.etag[cacheURL]&&jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])),(s.data&&s.hasContent&&!1!==s.contentType||options.contentType)&&jqXHR.setRequestHeader("Content-Type",s.contentType),jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+("*"!==s.dataTypes[0]?", "+allTypes+"; q=0.01":""):s.accepts["*"]),s.headers)jqXHR.setRequestHeader(i,s.headers[i]);if(s.beforeSend&&(!1===s.beforeSend.call(callbackContext,jqXHR,s)||completed))return jqXHR.abort();if(strAbort="abort",completeDeferred.add(s.complete),jqXHR.done(s.success),jqXHR.fail(s.error),transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR)){if(jqXHR.readyState=1,fireGlobals&&globalEventContext.trigger("ajaxSend",[jqXHR,s]),completed)return jqXHR;s.async&&s.timeout>0&&(timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout));try{completed=!1,transport.send(requestHeaders,done)}catch(e){if(completed)throw e;done(-1,e)}}else done(-1,"No Transport");function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;completed||(completed=!0,timeoutTimer&&window.clearTimeout(timeoutTimer),transport=void 0,responseHeadersString=headers||"",jqXHR.readyState=status>0?4:0,isSuccess=status>=200&&status<300||304===status,responses&&(response=function(s,jqXHR,responses){for(var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;"*"===dataTypes[0];)dataTypes.shift(),void 0===ct&&(ct=s.mimeType||jqXHR.getResponseHeader("Content-Type"));if(ct)for(type in contents)if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break}if(dataTypes[0]in responses)finalDataType=dataTypes[0];else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break}firstDataType||(firstDataType=type)}finalDataType=finalDataType||firstDataType}if(finalDataType)return finalDataType!==dataTypes[0]&&dataTypes.unshift(finalDataType),responses[finalDataType]}(s,jqXHR,responses)),response=function(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1])for(conv in s.converters)converters[conv.toLowerCase()]=s.converters[conv];for(current=dataTypes.shift();current;)if(s.responseFields[current]&&(jqXHR[s.responseFields[current]]=response),!prev&&isSuccess&&s.dataFilter&&(response=s.dataFilter(response,s.dataType)),prev=current,current=dataTypes.shift())if("*"===current)current=prev;else if("*"!==prev&&prev!==current){if(!(conv=converters[prev+" "+current]||converters["* "+current]))for(conv2 in converters)if((tmp=conv2.split(" "))[1]===current&&(conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]])){!0===conv?conv=converters[conv2]:!0!==converters[conv2]&&(current=tmp[0],dataTypes.unshift(tmp[1]));break}if(!0!==conv)if(conv&&s.throws)response=conv(response);else try{response=conv(response)}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current}}}return{state:"success",data:response}}(s,response,jqXHR,isSuccess),isSuccess?(s.ifModified&&((modified=jqXHR.getResponseHeader("Last-Modified"))&&(jQuery.lastModified[cacheURL]=modified),(modified=jqXHR.getResponseHeader("etag"))&&(jQuery.etag[cacheURL]=modified)),204===status||"HEAD"===s.type?statusText="nocontent":304===status?statusText="notmodified":(statusText=response.state,success=response.data,isSuccess=!(error=response.error))):(error=statusText,!status&&statusText||(statusText="error",status<0&&(status=0))),jqXHR.status=status,jqXHR.statusText=(nativeStatusText||statusText)+"",isSuccess?deferred.resolveWith(callbackContext,[success,statusText,jqXHR]):deferred.rejectWith(callbackContext,[jqXHR,statusText,error]),jqXHR.statusCode(statusCode),statusCode=void 0,fireGlobals&&globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]),completeDeferred.fireWith(callbackContext,[jqXHR,statusText]),fireGlobals&&(globalEventContext.trigger("ajaxComplete",[jqXHR,s]),--jQuery.active||jQuery.event.trigger("ajaxStop")))}return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,void 0,callback,"script")}}),jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){return isFunction(data)&&(type=type||callback,callback=data,data=void 0),jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}}),jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},jQuery.fn.extend({wrapAll:function(html){var wrap;return this[0]&&(isFunction(html)&&(html=html.call(this[0])),wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&wrap.insertBefore(this[0]),wrap.map(function(){for(var elem=this;elem.firstElementChild;)elem=elem.firstElementChild;return elem}).append(this)),this},wrapInner:function(html){return isFunction(html)?this.each(function(i){jQuery(this).wrapInner(html.call(this,i))}):this.each(function(){var self=jQuery(this),contents=self.contents();contents.length?contents.wrapAll(html):self.append(html)})},wrap:function(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html)})},unwrap:function(selector){return this.parent(selector).not("body").each(function(){jQuery(this).replaceWith(this.childNodes)}),this}}),jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem)},jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length)},jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest}catch(e){}};var xhrSuccessStatus={0:200,1223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&"withCredentials"in xhrSupported,support.ajax=xhrSupported=!!xhrSupported,jQuery.ajaxTransport(function(options){var callback,errorCallback;if(support.cors||xhrSupported&&!options.crossDomain)return{send:function(headers,complete){var i,xhr=options.xhr();if(xhr.open(options.type,options.url,options.async,options.username,options.password),options.xhrFields)for(i in options.xhrFields)xhr[i]=options.xhrFields[i];for(i in options.mimeType&&xhr.overrideMimeType&&xhr.overrideMimeType(options.mimeType),options.crossDomain||headers["X-Requested-With"]||(headers["X-Requested-With"]="XMLHttpRequest"),headers)xhr.setRequestHeader(i,headers[i]);callback=function(type){return function(){callback&&(callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null,"abort"===type?xhr.abort():"error"===type?"number"!=typeof xhr.status?complete(0,"error"):complete(xhr.status,xhr.statusText):complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,"text"!==(xhr.responseType||"text")||"string"!=typeof xhr.responseText?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders()))}},xhr.onload=callback(),errorCallback=xhr.onerror=xhr.ontimeout=callback("error"),void 0!==xhr.onabort?xhr.onabort=errorCallback:xhr.onreadystatechange=function(){4===xhr.readyState&&window.setTimeout(function(){callback&&errorCallback()})},callback=callback("abort");try{xhr.send(options.hasContent&&options.data||null)}catch(e){if(callback)throw e}},abort:function(){callback&&callback()}}}),jQuery.ajaxPrefilter(function(s){s.crossDomain&&(s.contents.script=!1)}),jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){return jQuery.globalEval(text),text}}}),jQuery.ajaxPrefilter("script",function(s){void 0===s.cache&&(s.cache=!1),s.crossDomain&&(s.type="GET")}),jQuery.ajaxTransport("script",function(s){var script,callback;if(s.crossDomain)return{send:function(_,complete){script=jQuery("<script>").prop({charset:s.scriptCharset,src:s.url}).on("load error",callback=function(evt){script.remove(),callback=null,evt&&complete("error"===evt.type?404:200,evt.type)}),document.head.appendChild(script[0])},abort:function(){callback&&callback()}}});var body,oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;return this[callback]=!0,callback}}),jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=!1!==s.jsonp&&(rjsonp.test(s.url)?"url":"string"==typeof s.data&&0===(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||"jsonp"===s.dataTypes[0])return callbackName=s.jsonpCallback=isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback,jsonProp?s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName):!1!==s.jsonp&&(s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName),s.converters["script json"]=function(){return responseContainer||jQuery.error(callbackName+" was not called"),responseContainer[0]},s.dataTypes[0]="json",overwritten=window[callbackName],window[callbackName]=function(){responseContainer=arguments},jqXHR.always(function(){void 0===overwritten?jQuery(window).removeProp(callbackName):window[callbackName]=overwritten,s[callbackName]&&(s.jsonpCallback=originalSettings.jsonpCallback,oldCallbacks.push(callbackName)),responseContainer&&isFunction(overwritten)&&overwritten(responseContainer[0]),responseContainer=overwritten=void 0}),"script"}),support.createHTMLDocument=((body=document.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===body.childNodes.length),jQuery.parseHTML=function(data,context,keepScripts){return"string"!=typeof data?[]:("boolean"==typeof context&&(keepScripts=context,context=!1),context||(support.createHTMLDocument?((base=(context=document.implementation.createHTMLDocument("")).createElement("base")).href=document.location.href,context.head.appendChild(base)):context=document),parsed=rsingleTag.exec(data),scripts=!keepScripts&&[],parsed?[context.createElement(parsed[1])]:(parsed=buildFragment([data],context,scripts),scripts&&scripts.length&&jQuery(scripts).remove(),jQuery.merge([],parsed.childNodes)));var base,parsed,scripts},jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(" ");return off>-1&&(selector=stripAndCollapse(url.slice(off)),url=url.slice(0,off)),isFunction(params)?(callback=params,params=void 0):params&&"object"==typeof params&&(type="POST"),self.length>0&&jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments,self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR])})}),this},jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}}),jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length},jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};"static"===position&&(elem.style.position="relative"),curOffset=curElem.offset(),curCSSTop=jQuery.css(elem,"top"),curCSSLeft=jQuery.css(elem,"left"),("absolute"===position||"fixed"===position)&&(curCSSTop+curCSSLeft).indexOf("auto")>-1?(curTop=(curPosition=curElem.position()).top,curLeft=curPosition.left):(curTop=parseFloat(curCSSTop)||0,curLeft=parseFloat(curCSSLeft)||0),isFunction(options)&&(options=options.call(elem,i,jQuery.extend({},curOffset))),null!=options.top&&(props.top=options.top-curOffset.top+curTop),null!=options.left&&(props.left=options.left-curOffset.left+curLeft),"using"in options?options.using.call(elem,props):curElem.css(props)}},jQuery.fn.extend({offset:function(options){if(arguments.length)return void 0===options?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)});var rect,win,elem=this[0];return elem?elem.getClientRects().length?(rect=elem.getBoundingClientRect(),win=elem.ownerDocument.defaultView,{top:rect.top+win.pageYOffset,left:rect.left+win.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var offsetParent,offset,doc,elem=this[0],parentOffset={top:0,left:0};if("fixed"===jQuery.css(elem,"position"))offset=elem.getBoundingClientRect();else{for(offset=this.offset(),doc=elem.ownerDocument,offsetParent=elem.offsetParent||doc.documentElement;offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.parentNode;offsetParent&&offsetParent!==elem&&1===offsetParent.nodeType&&((parentOffset=jQuery(offsetParent).offset()).top+=jQuery.css(offsetParent,"borderTopWidth",!0),parentOffset.left+=jQuery.css(offsetParent,"borderLeftWidth",!0))}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",!0),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var offsetParent=this.offsetParent;offsetParent&&"static"===jQuery.css(offsetParent,"position");)offsetParent=offsetParent.offsetParent;return offsetParent||documentElement})}}),jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top="pageYOffset"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win;if(isWindow(elem)?win=elem:9===elem.nodeType&&(win=elem.defaultView),void 0===val)return win?win[prop]:elem[method];win?win.scrollTo(top?win.pageXOffset:val,top?val:win.pageYOffset):elem[method]=val},method,val,arguments.length)}}),jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed)return computed=curCSS(elem,prop),rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed})}),jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||"boolean"!=typeof margin),extra=defaultExtra||(!0===margin||!0===value?"margin":"border");return access(this,function(elem,type,value){var doc;return isWindow(elem)?0===funcName.indexOf("outer")?elem["inner"+name]:elem.document.documentElement["client"+name]:9===elem.nodeType?(doc=elem.documentElement,Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])):void 0===value?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:void 0,chainable)}})}),jQuery.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}}),jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}}),jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return 1===arguments.length?this.off(selector,"**"):this.off(types,selector||"**",fn)}}),jQuery.proxy=function(fn,context){var tmp,args,proxy;if("string"==typeof context&&(tmp=fn[context],context=fn,fn=tmp),isFunction(fn))return args=slice.call(arguments,2),(proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)))}).guid=fn.guid=fn.guid||jQuery.guid++,proxy},jQuery.holdReady=function(hold){hold?jQuery.readyWait++:jQuery.ready(!0)},jQuery.isArray=Array.isArray,jQuery.parseJSON=JSON.parse,jQuery.nodeName=nodeName,jQuery.isFunction=isFunction,jQuery.isWindow=isWindow,jQuery.camelCase=camelCase,jQuery.type=toType,jQuery.now=Date.now,jQuery.isNumeric=function(obj){var type=jQuery.type(obj);return("number"===type||"string"===type)&&!isNaN(obj-parseFloat(obj))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return jQuery});var _jQuery=window.jQuery,_$=window.$;return jQuery.noConflict=function(deep){return window.$===jQuery&&(window.$=_$),deep&&window.jQuery===jQuery&&(window.jQuery=_jQuery),jQuery},noGlobal||(window.jQuery=window.$=jQuery),jQuery}),function(root,factory){"function"==typeof define&&define.amd?define(["moment"],factory):"object"==typeof module&&module.exports?module.exports=factory(require("moment")):factory(root.moment)}(this,function(moment){var cachedGuess,zones={},links={},names={},guesses={},momentVersion=moment.version.split("."),major=+momentVersion[0],minor=+momentVersion[1];function charCodeToInt(charCode){return charCode>96?charCode-87:charCode>64?charCode-29:charCode-48}function unpackBase60(string){var i=0,parts=string.split("."),whole=parts[0],fractional=parts[1]||"",multiplier=1,out=0,sign=1;for(45===string.charCodeAt(0)&&(i=1,sign=-1);i<whole.length;i++)out=60*out+charCodeToInt(whole.charCodeAt(i));for(i=0;i<fractional.length;i++)multiplier/=60,out+=charCodeToInt(fractional.charCodeAt(i))*multiplier;return out*sign}function arrayToInt(array){for(var i=0;i<array.length;i++)array[i]=unpackBase60(array[i])}function mapIndices(source,indices){var i,out=[];for(i=0;i<indices.length;i++)out[i]=source[indices[i]];return out}function unpack(string){var data=string.split("|"),offsets=data[2].split(" "),indices=data[3].split(""),untils=data[4].split(" ");return arrayToInt(offsets),arrayToInt(indices),arrayToInt(untils),function(array,length){for(var i=0;i<length;i++)array[i]=Math.round((array[i-1]||0)+6e4*array[i]);array[length-1]=1/0}(untils,indices.length),{name:data[0],abbrs:mapIndices(data[1].split(" "),indices),offsets:mapIndices(offsets,indices),untils:untils,population:0|data[5]}}function Zone(packedString){packedString&&this._set(unpack(packedString))}function OffsetAt(at){var timeString=at.toTimeString(),abbr=timeString.match(/\([a-z ]+\)/i);"GMT"===(abbr=abbr&&abbr[0]?(abbr=abbr[0].match(/[A-Z]/g))?abbr.join(""):void 0:(abbr=timeString.match(/[A-Z]{3,5}/g))?abbr[0]:void 0)&&(abbr=void 0),this.at=+at,this.abbr=abbr,this.offset=at.getTimezoneOffset()}function ZoneScore(zone){this.zone=zone,this.offsetScore=0,this.abbrScore=0}function findChange(low,high){for(var mid,diff;diff=6e4*((high.at-low.at)/12e4|0);)(mid=new OffsetAt(new Date(low.at+diff))).offset===low.offset?low=mid:high=mid;return low}function sortZoneScores(a,b){return a.offsetScore!==b.offsetScore?a.offsetScore-b.offsetScore:a.abbrScore!==b.abbrScore?a.abbrScore-b.abbrScore:b.zone.population-a.zone.population}function addToGuesses(name,offsets){var i,offset;for(arrayToInt(offsets),i=0;i<offsets.length;i++)offset=offsets[i],guesses[offset]=guesses[offset]||{},guesses[offset][name]=!0}function guessesForUserOffsets(offsets){var i,j,guessesOffset,offsetsLength=offsets.length,filteredGuesses={},out=[];for(i=0;i<offsetsLength;i++)for(j in guessesOffset=guesses[offsets[i].offset]||{})guessesOffset.hasOwnProperty(j)&&(filteredGuesses[j]=!0);for(i in filteredGuesses)filteredGuesses.hasOwnProperty(i)&&out.push(names[i]);return out}function rebuildGuess(){try{var intlName=Intl.DateTimeFormat().resolvedOptions().timeZone;if(intlName&&intlName.length>3){var name=names[normalizeName(intlName)];if(name)return name;logError("Moment Timezone found "+intlName+" from the Intl api, but did not have that data loaded.")}}catch(e){}var zoneScore,i,j,offsets=function(){var change,next,i,startYear=(new Date).getFullYear()-2,last=new OffsetAt(new Date(startYear,0,1)),offsets=[last];for(i=1;i<48;i++)(next=new OffsetAt(new Date(startYear,i,1))).offset!==last.offset&&(change=findChange(last,next),offsets.push(change),offsets.push(new OffsetAt(new Date(change.at+6e4)))),last=next;for(i=0;i<4;i++)offsets.push(new OffsetAt(new Date(startYear+i,0,1))),offsets.push(new OffsetAt(new Date(startYear+i,6,1)));return offsets}(),offsetsLength=offsets.length,guesses=guessesForUserOffsets(offsets),zoneScores=[];for(i=0;i<guesses.length;i++){for(zoneScore=new ZoneScore(getZone(guesses[i]),offsetsLength),j=0;j<offsetsLength;j++)zoneScore.scoreOffsetAt(offsets[j]);zoneScores.push(zoneScore)}return zoneScores.sort(sortZoneScores),zoneScores.length>0?zoneScores[0].zone.name:void 0}function normalizeName(name){return(name||"").toLowerCase().replace(/\//g,"_")}function addZone(packed){var i,name,split,normalized;for("string"==typeof packed&&(packed=[packed]),i=0;i<packed.length;i++)normalized=normalizeName(name=(split=packed[i].split("|"))[0]),zones[normalized]=packed[i],names[normalized]=name,addToGuesses(normalized,split[2].split(" "))}function getZone(name,caller){name=normalizeName(name);var link,zone=zones[name];return zone instanceof Zone?zone:"string"==typeof zone?(zone=new Zone(zone),zones[name]=zone,zone):links[name]&&caller!==getZone&&(link=getZone(links[name],getZone))?((zone=zones[name]=new Zone)._set(link),zone.name=names[name],zone):null}function addLink(aliases){var i,alias,normal0,normal1;for("string"==typeof aliases&&(aliases=[aliases]),i=0;i<aliases.length;i++)normal0=normalizeName((alias=aliases[i].split("|"))[0]),normal1=normalizeName(alias[1]),links[normal0]=normal1,names[normal0]=alias[0],links[normal1]=normal0,names[normal1]=alias[1]}function loadData(data){addZone(data.zones),addLink(data.links),tz.dataVersion=data.version}function needsOffset(m){var isUnixTimestamp="X"===m._f||"x"===m._f;return!(!m._a||void 0!==m._tzm||isUnixTimestamp)}function logError(message){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(message)}function tz(input){var args=Array.prototype.slice.call(arguments,0,-1),name=arguments[arguments.length-1],zone=getZone(name),out=moment.utc.apply(null,args);return zone&&!moment.isMoment(input)&&needsOffset(out)&&out.add(zone.parse(out),"minutes"),out.tz(name),out}(major<2||2===major&&minor<6)&&logError("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+moment.version+". See momentjs.com"),Zone.prototype={_set:function(unpacked){this.name=unpacked.name,this.abbrs=unpacked.abbrs,this.untils=unpacked.untils,this.offsets=unpacked.offsets,this.population=unpacked.population},_index:function(timestamp){var i,target=+timestamp,untils=this.untils;for(i=0;i<untils.length;i++)if(target<untils[i])return i},parse:function(timestamp){var offset,offsetNext,offsetPrev,i,target=+timestamp,offsets=this.offsets,untils=this.untils,max=untils.length-1;for(i=0;i<max;i++)if(offset=offsets[i],offsetNext=offsets[i+1],offsetPrev=offsets[i?i-1:i],offset<offsetNext&&tz.moveAmbiguousForward?offset=offsetNext:offset>offsetPrev&&tz.moveInvalidForward&&(offset=offsetPrev),target<untils[i]-6e4*offset)return offsets[i];return offsets[max]},abbr:function(mom){return this.abbrs[this._index(mom)]},offset:function(mom){return logError("zone.offset has been deprecated in favor of zone.utcOffset"),this.offsets[this._index(mom)]},utcOffset:function(mom){return this.offsets[this._index(mom)]}},ZoneScore.prototype.scoreOffsetAt=function(offsetAt){this.offsetScore+=Math.abs(this.zone.utcOffset(offsetAt.at)-offsetAt.offset),this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g,"")!==offsetAt.abbr&&this.abbrScore++},tz.version="0.5.17",tz.dataVersion="",tz._zones=zones,tz._links=links,tz._names=names,tz.add=addZone,tz.link=addLink,tz.load=loadData,tz.zone=getZone,tz.zoneExists=function zoneExists(name){return zoneExists.didShowError||(zoneExists.didShowError=!0,logError("moment.tz.zoneExists('"+name+"') has been deprecated in favor of !moment.tz.zone('"+name+"')")),!!getZone(name)},tz.guess=function(ignoreCache){return cachedGuess&&!ignoreCache||(cachedGuess=rebuildGuess()),cachedGuess},tz.names=function(){var i,out=[];for(i in names)names.hasOwnProperty(i)&&(zones[i]||zones[links[i]])&&names[i]&&out.push(names[i]);return out.sort()},tz.Zone=Zone,tz.unpack=unpack,tz.unpackBase60=unpackBase60,tz.needsOffset=needsOffset,tz.moveInvalidForward=!0,tz.moveAmbiguousForward=!1;var old,fn=moment.fn;function abbrWrap(old){return function(){return this._z?this._z.abbr(this):old.call(this)}}moment.tz=tz,moment.defaultZone=null,moment.updateOffset=function(mom,keepTime){var offset,zone=moment.defaultZone;void 0===mom._z&&(zone&&needsOffset(mom)&&!mom._isUTC&&(mom._d=moment.utc(mom._a)._d,mom.utc().add(zone.parse(mom),"minutes")),mom._z=zone),mom._z&&(offset=mom._z.utcOffset(mom),Math.abs(offset)<16&&(offset/=60),void 0!==mom.utcOffset?mom.utcOffset(-offset,keepTime):mom.zone(offset,keepTime))},fn.tz=function(name,keepTime){return name?(this._z=getZone(name),this._z?moment.updateOffset(this,keepTime):logError("Moment Timezone has no data for "+name+". See http://momentjs.com/timezone/docs/#/data-loading/."),this):this._z?this._z.name:void 0},fn.zoneName=abbrWrap(fn.zoneName),fn.zoneAbbr=abbrWrap(fn.zoneAbbr),fn.utc=(old=fn.utc,function(){return this._z=null,old.apply(this,arguments)}),moment.tz.setDefault=function(name){return(major<2||2===major&&minor<9)&&logError("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+moment.version+"."),moment.defaultZone=name?getZone(name):null,moment};var momentProperties=moment.momentProperties;return"[object Array]"===Object.prototype.toString.call(momentProperties)?(momentProperties.push("_z"),momentProperties.push("_a")):momentProperties&&(momentProperties._z=null),loadData({version:"2018e",zones:["Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5","Africa/Accra|LMT GMT +0020|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5","Africa/Nairobi|LMT EAT +0230 +0245|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5","Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5","Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6","Africa/Bissau|LMT -01 GMT|12.k 10 0|012|-2ldX0 2xoo0|39e4","Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5","Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6","Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|32e5","Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1y7o0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3","Africa/El_Aaiun|LMT -01 WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|20e4","Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5","Africa/Juba|LMT CAT CAST EAT|-26.s -20 -30 -30|01212121212121212121212121212121213|-1yW26.s 1zK06.s 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0","Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|012121212121212121212121212121212131|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0 HjL0|51e5","Africa/Monrovia|MMT MMT GMT|H.8 I.u 0|012|-23Lzg.Q 28G01.m|11e5","Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5","Africa/Sao_Tome|LMT GMT WAT|A.J 0 -10|012|-2le00 4i6N0","Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5","Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5","Africa/Windhoek|+0130 SAST SAST CAT WAT|-1u -20 -30 -20 -10|01213434343434343434343434343434343434343434343434343|-2GJdu 1Ajdu 1cL0 1SqL0 9Io0 16P0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|32e4","America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|AST AWT APT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3","America/Araguaina|LMT -03 -02|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4","America/Argentina/Buenos_Aires|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Catamarca|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Cordoba|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323132323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0 1qN0 WL0","America/Argentina/Jujuy|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 A4p0 uL0","America/Argentina/La_Rioja|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Mendoza|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232312121321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 ri10 Op0 7TX0 uL0","America/Argentina/Rio_Gallegos|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rlB0 7B0 8zb0 uL0","America/Argentina/Salta|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231323232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 A4p0 uL0","America/Argentina/San_Juan|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323231232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 rld0 m10 8lb0 uL0","America/Argentina/San_Luis|CMT -04 -03 -02|4g.M 40 30 20|012121212121212121212121212121212121212121232323121212321212|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 vDb0 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0","America/Argentina/Tucuman|CMT -04 -03 -02|4g.M 40 30 20|0121212121212121212121212121212121212121212323232313232123232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 rlB0 4N0 8BX0 uL0 1qN0 WL0","America/Argentina/Ushuaia|CMT -04 -03 -02|4g.M 40 30 20|01212121212121212121212121212121212121212123232323232321232|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 rkN0 8p0 8zb0 uL0","America/Curacao|LMT -0430 AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4","America/Asuncion|AMT -04 -03|3O.E 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5","America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2","America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3","America/Bahia|LMT -03 -02|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5","America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4","America/Belem|LMT -03 -02|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5","America/Belize|LMT CST -0530 CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3","America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2","America/Boa_Vista|LMT -04 -03|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2","America/Bogota|BMT -05 -04|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5","America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4","America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2","America/Campo_Grande|LMT -04 -03|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|77e4","America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|CMT -0430 -04|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5","America/Cayenne|LMT -04 -03|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3","America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5","America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5","America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2","America/Cuiaba|LMT -04 -03|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|54e4","America/Danmarkshavn|LMT -03 -02 GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8","America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3","America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2","America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|012342525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 XQp0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5","America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5","America/Eirunepe|LMT -05 -04|4D.s 50 40|0121212121212121212121212121212121|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3","America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5","America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5","America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Fortaleza|LMT -03 -02|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5","America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","America/Godthab|LMT -03 -02|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|KMT EST EDT AST|57.a 50 40 40|01212121212121212121212121212121212121212121212121212121212121212121212121232121212121212121212121212121212121212121|-2l1uQ.O 2HHBQ.O 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 5Ip0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5","America/Guayaquil|QMT -05 -04|5e 50 40|0121|-1yVSK 2uILK rz0|27e5","America/Guyana|LMT -0345 -03 -04|3Q.E 3J 30 40|0123|-2dvU7.k 2r6LQ.k Bxbf|80e4","America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4","America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2","America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2","America/Jamaica|KMT EST EDT|57.a 50 40|0121212121212121212121|-2l1uQ.O 2uM1Q.O 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4","America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3","America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/La_Paz|CMT BST -04|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5","America/Lima|LMT -05 -04|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6","America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Maceio|LMT -03 -02|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4","America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5","America/Manaus|LMT -04 -03|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5","America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4","America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4","America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4","America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2","America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5","America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|0120303030303030303030303030303030454545454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Miquelon|LMT AST -03 -02|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3","America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5","America/Montevideo|LMT MMT -04 -03 -0330 -0230 -02 -0130|3I.P 3I.P 40 30 3u 2u 20 1u|012343434343434343434343435353636353636375363636363636363636363636363636363636363636363|-2tRUf.9 sVc0 8jcf.9 1db0 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1fAu 1cLu 1o0u 11zu NAu 3jXu zXu Dq0u 19Xu pcu jz0 cm10 19X0 6tB0 1fbu 3o0u jX0 4vB0 xz0 3Cp0 mmu 1a10 IMu Db0 4c10 uL0 1Nd0 An0 1SN0 uL0 mp0 28L0 iPB0 un0 1SN0 xz0 1zd0 Lz0 1zd0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5","America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4","America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2","America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2","America/Noronha|LMT -02 -01|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2","America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Paramaribo|LMT PMT PMT -0330 -03|3E.E 3E.Q 3E.A 3u 30|01234|-2nDUj.k Wqo0.c qanX.I 1yVXN.o|24e4","America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5","America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 3iN0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Rio_Branco|LMT -05 -04|4v.c 50 40|01212121212121212121212121212121|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4","America/Porto_Velho|LMT -04 -03|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4","America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5","America/Punta_Arenas|SMT -05 -04 -03|4G.K 50 40 30|0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 blz0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0","America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842","America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2","America/Recife|LMT -03 -02|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5","America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4","America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229","America/Santarem|LMT -04 -03|3C.M 40 30|0121212121212121212121212121212|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4","America/Santiago|SMT -05 -04 -03|4G.K 50 40 30|010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5","America/Santo_Domingo|SDMT EST EDT -0430 AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5","America/Sao_Paulo|LMT -03 -02|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1HB0 FX0 1HB0 FX0 1HB0 IL0 1HB0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0 IL0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1HB0 FX0 1Kp0 FX0 1HB0 IL0 1EN0 FX0 1HB0 FX0 1HB0 IL0 1EN0|20e6","America/Scoresbysund|LMT -02 -01 +00|1r.Q 20 10 0|0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452","America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2","America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3","America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5","America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656","America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4","America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642","America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","Antarctica/Casey|-00 +08 +11|0 -80 -b0|01212121|-2q00 1DjS0 T90 40P0 KL0 blz0 3m10|10","Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70","Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80","Antarctica/Macquarie|AEST AEDT -00 +11|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1","Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60","Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Palmer|-00 -03 -04 -02|0 30 40 20|0121212121213121212121212121212121212121212121212121212121212121212121212121212121|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0|40","Antarctica/Rothera|-00 -03|0 30|01|gOo0|130","Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20","Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25","Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4","Asia/Riyadh|LMT +03|-36.Q -30|01|-TvD6.Q|57e5","Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5","Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5","Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3","Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4","Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4","Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4","Asia/Atyrau|LMT +03 +05 +06 +04|-3r.I -30 -50 -60 -40|01232323232323232323242323232323232324242424242|-1Pc3r.I eUor.I 24PW0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0","Asia/Baghdad|BMT +03 +04|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5","Asia/Qatar|LMT +04 +03|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4","Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|BMT +07|-6G.4 -70|01|-218SG.4|15e6","Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4","Asia/Brunei|LMT +0730 +08|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4","Asia/Kolkata|MMT IST +0630|-5l.a -5u -6u|012121|-2zOtl.a 1r2LP.a 1un0 HB0 7zX0|15e6","Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Choibalsan|LMT +07 +08 +10 +09|-7C -70 -80 -a0 -90|0123434343434343434343434343434343434343434343424242|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0|38e3","Asia/Shanghai|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6","Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5","Asia/Dhaka|HMT +0630 +0530 +06 +07|-5R.k -6u -5u -60 -70|0121343|-18LFR.k 1unn.k HB0 m6n0 2kxbu 1i00|16e6","Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5","Asia/Dili|LMT +08 +09|-8m.k -80 -90|01212|-2le8m.k 1dnXm.k 1nfA0 Xld0|19e4","Asia/Dubai|LMT +04|-3F.c -40|01|-21JfF.c|39e5","Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4","Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212312121212121212121212121212121212121212121|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0 2Ks0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|18e5","Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1qL0|25e4","Asia/Ho_Chi_Minh|LMT PLMT +07 +08 +09|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5","Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5","Asia/Hovd|LMT +06 +07 +08|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|BMT +0720 +0730 +09 +08 WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6","Asia/Jayapura|LMT +09 +0930 WIT|-9m.M -90 -9u -90|0123|-1uu9m.M sMMm.M L4nu|26e4","Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|+04 +0430|-40 -4u|01|-10Qs0|46e5","Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4","Asia/Karachi|LMT +0530 +0630 +05 PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6","Asia/Urumqi|LMT +06|-5O.k -60|01|-1GgtO.k|32e5","Asia/Kathmandu|LMT +0530 +0545|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5","Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|SMT +07 +0720 +0730 +09 +08|-6T.p -70 -7k -7u -90 -80|0123435|-2Bg6T.p 17anT.p l5XE 17bO 8Fyu 1so1u|71e5","Asia/Kuching|LMT +0730 +08 +0820 +09|-7l.k -7u -80 -8k -90|0123232323232323242|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0|13e4","Asia/Macau|LMT CST CDT|-7y.k -80 -90|012121212121212121212121212121212121212121|-2le80 1XO3u 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0|57e4","Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|LMT MMT +08 +09 WITA|-7V.A -7V.A -80 -90 -80|01234|-21JjV.A vfc0 myLV.A 8ML0|15e5","Asia/Manila|+08 +09|-80 -90|010101010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6","Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4","Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4","Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5","Asia/Oral|LMT +03 +05 +06 +04|-3p.o -30 -50 -60 -40|01232323232323232424242424242424242424242424242|-1Pc3p.o eUop.o 23CK0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4","Asia/Pontianak|LMT PMT +0730 +09 +08 WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4","Asia/Pyongyang|LMT KST JST KST|-8n -8u -90 -90|012313|-2um8n 97XR 1lTzu 2Onc0 6BAu|29e5","Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|0123232323232323232323232323232323232323232323|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|73e4","Asia/Rangoon|RMT +0630 +09|-6o.L -6u -90|0121|-21Jio.L SmnS.L 7j9u|48e5","Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4","Asia/Seoul|LMT KST JST KST KDT KDT|-8r.Q -8u -90 -90 -9u -a0|0123141414141414135353|-2um8r.Q 97XV.Q 1m1zu kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6","Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2","Asia/Taipei|CST JST CDT|-80 -90 -90|01020202020202020202020202020202020202020|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5","Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5","Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5","Asia/Tehran|LMT TMT +0330 +04 +05 +0430|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|LMT +0530 +06|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3","Asia/Tokyo|JST JDT|-90 -a0|010101010|-QJJ0 Rb0 1ld0 14n0 1zd0 On0 1zd0 On0|38e6","Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ulaanbaatar|LMT +07 +08 +09|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0|12e5","Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|HMT -02 -01 +00 WET|1S.w 20 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323234323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2ldW0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3","Atlantic/Canary|LMT -01 WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Atlantic/Cape_Verde|LMT -02 -01|1y.4 20 10|01212|-2ldW0 1eEo0 7zX0 1djf0|50e4","Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3","Atlantic/Madeira|FMT -01 +00 +01 WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldX0 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4","Atlantic/Reykjavik|LMT -01 +00 GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4","Atlantic/South_Georgia|-02|20|0||30","Atlantic/Stanley|SMT -04 -03 -02|3P.o 40 30 20|012121212121212323212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 2mN0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2","Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5","Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3","Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746","Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4","Australia/Eucla|+0845 +0945|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368","Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4","Australia/Lord_Howe|AEST +1030 +1130 +11|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347","Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10","Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5","Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5","CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Pacific/Easter|EMT -07 -06 -05|7h.s 70 60 50|012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 2pA0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2","CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g600 14o0 1wo0 17c0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","EST|EST|50|0|","EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Etc/GMT-0|GMT|0|0|","Etc/GMT-1|+01|-10|0|","Pacific/Port_Moresby|+10|-a0|0||25e4","Pacific/Pohnpei|+11|-b0|0||34e3","Pacific/Tarawa|+12|-c0|0||29e3","Etc/GMT-13|+13|-d0|0|","Etc/GMT-14|+14|-e0|0|","Etc/GMT-2|+02|-20|0|","Etc/GMT-3|+03|-30|0|","Etc/GMT-4|+04|-40|0|","Etc/GMT-5|+05|-50|0|","Etc/GMT-6|+06|-60|0|","Indian/Christmas|+07|-70|0||21e2","Etc/GMT-8|+08|-80|0|","Pacific/Palau|+09|-90|0||21e3","Etc/GMT+1|-01|10|0|","Etc/GMT+10|-10|a0|0|","Etc/GMT+11|-11|b0|0|","Etc/GMT+12|-12|c0|0|","Etc/GMT+3|-03|30|0|","Etc/GMT+4|-04|40|0|","Etc/GMT+5|-05|50|0|","Etc/GMT+6|-06|60|0|","Etc/GMT+7|-07|70|0|","Etc/GMT+8|-08|80|0|","Etc/GMT+9|-09|90|0|","Etc/UCT|UCT|0|0|","Etc/UTC|UTC|0|0|","Europe/Amsterdam|AMT NST +0120 +0020 CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5","Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3","Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5","Europe/Prague|CET CEST GMT|-10 -20 0|01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 1qM0 11c0 mp0 xA0 mn0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5","Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5","Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5","Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4","Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3","Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4","Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5","Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4","Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2le00 aPX0 Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|010101010101010101210343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-25Td0 19B0 1cL0 1dd0 b1z0 18p0 3HX0 17d0 1fz0 1a10 1io0 1a00 1in0 17d0 iIn0 Hd0 1cL0 bb0 1200 2s20 14n0 5aL0 Mp0 1vz0 17d0 1in0 17d0 1in0 17d0 1in0 17d0 6hX0 11B0 XHX0 1a10 1fz0 1a10 19X0 1cN0 1fz0 1a10 1fC0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5","Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5","Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3","Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6","Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4","Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5","Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5","Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810","Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5","Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4","Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4","Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5","Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|01232323232323232121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zaporozhye|+0220 EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4","HST|HST|a0|0|","Indian/Chagos|LMT +05 +06|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2","Indian/Cocos|+0630|-6u|0||596","Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130","Indian/Mahe|LMT +04|-3F.M -40|01|-2yO3F.M|79e3","Indian/Maldives|MMT +05|-4S -50|01|-olgS|35e4","Indian/Mauritius|LMT +04 +05|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4","Indian/Reunion|LMT +04|-3F.Q -40|01|-2mDDF.Q|84e4","Pacific/Kwajalein|+11 -12 +12|-b0 c0 -c0|012|-AX0 W9X0|14e3","MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","MST|MST|70|0|","MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Pacific/Chatham|+1215 +1245 +1345|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600","Pacific/Apia|LMT -1130 -11 -10 +14 +13|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|+10 +09 +11|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4","Pacific/Efate|LMT +11 +12|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3","Pacific/Enderbury|-12 -11 +13|c0 b0 -d0|012|nIc0 B7X0|1","Pacific/Fakaofo|-11 +13|b0 -d0|01|1Gfn0|483","Pacific/Fiji|LMT +12 +13|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0|88e4","Pacific/Galapagos|LMT -05 -06|5W.o 50 60|01212|-1yVS1.A 2dTz1.A gNd0 rz0|25e3","Pacific/Gambier|LMT -09|8X.M 90|01|-2jof0.c|125","Pacific/Guadalcanal|LMT +11|-aD.M -b0|01|-2joyD.M|11e4","Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0|17e4","Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0|37e4","Pacific/Kiritimati|-1040 -10 +14|aE a0 -e0|012|nIaE B7Xk|51e2","Pacific/Kosrae|+11 +12|-b0 -c0|010|-AX0 1bdz0|66e2","Pacific/Majuro|+11 +12|-b0 -c0|01|-AX0|28e3","Pacific/Marquesas|LMT -0930|9i 9u|01|-2joeG|86e2","Pacific/Pago_Pago|LMT SST|bm.M b0|01|-2nDMB.c|37e2","Pacific/Nauru|LMT +1130 +09 +12|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu|10e3","Pacific/Niue|-1120 -1130 -11|bk bu b0|012|-KfME 17y0a|12e2","Pacific/Norfolk|+1112 +1130 +1230 +11|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4","Pacific/Noumea|LMT +11 +12|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3","Pacific/Pitcairn|-0830 -08|8u 80|01|18Vku|56","Pacific/Rarotonga|-1030 -0930 -10|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3","Pacific/Tahiti|LMT -10|9W.g a0|01|-2joe1.I|18e4","Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00|75e3","PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00"],links:["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/St_Helena","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Atikokan|America/Coral_Harbour","America/Chicago|US/Central","America/Curacao|America/Aruba","America/Curacao|America/Kralendijk","America/Curacao|America/Lower_Princes","America/Denver|America/Shiprock","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|Canada/Mountain","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Panama|America/Cayman","America/Phoenix|US/Arizona","America/Port_of_Spain|America/Anguilla","America/Port_of_Spain|America/Antigua","America/Port_of_Spain|America/Dominica","America/Port_of_Spain|America/Grenada","America/Port_of_Spain|America/Guadeloupe","America/Port_of_Spain|America/Marigot","America/Port_of_Spain|America/Montserrat","America/Port_of_Spain|America/St_Barthelemy","America/Port_of_Spain|America/St_Kitts","America/Port_of_Spain|America/St_Lucia","America/Port_of_Spain|America/St_Thomas","America/Port_of_Spain|America/St_Vincent","America/Port_of_Spain|America/Tortola","America/Port_of_Spain|America/Virgin","America/Regina|Canada/Saskatchewan","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Tijuana|America/Ensenada","America/Tijuana|America/Santa_Isabel","America/Tijuana|Mexico/BajaNorte","America/Toronto|America/Montreal","America/Toronto|Canada/Eastern","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|Canada/Central","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Kuala_Lumpur|Asia/Singapore","Asia/Kuala_Lumpur|Singapore","Asia/Macau|Asia/Macao","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Qatar|Asia/Bahrain","Asia/Rangoon|Asia/Yangon","Asia/Riyadh|Asia/Aden","Asia/Riyadh|Asia/Kuwait","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|PRC","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Atlantic/Faroe|Atlantic/Faeroe","Atlantic/Reykjavik|Iceland","Atlantic/South_Georgia|Etc/GMT+2","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Tasmania","Australia/Lord_Howe|Australia/LHI","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/NSW","Etc/GMT-0|Etc/GMT","Etc/GMT-0|Etc/GMT+0","Etc/GMT-0|Etc/GMT0","Etc/GMT-0|Etc/Greenwich","Etc/GMT-0|GMT","Etc/GMT-0|GMT+0","Etc/GMT-0|GMT-0","Etc/GMT-0|GMT0","Etc/GMT-0|Greenwich","Etc/UCT|UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Helsinki|Europe/Mariehamn","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Portugal","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Oslo|Arctic/Longyearbyen","Europe/Oslo|Atlantic/Jan_Mayen","Europe/Prague|Europe/Bratislava","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Europe/Zurich|Europe/Busingen","Europe/Zurich|Europe/Vaduz","Indian/Christmas|Etc/GMT-7","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Easter|Chile/EasterIsland","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kwajalein|Kwajalein","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Palau|Etc/GMT-9","Pacific/Pohnpei|Etc/GMT-11","Pacific/Pohnpei|Pacific/Ponape","Pacific/Port_Moresby|Etc/GMT-10","Pacific/Port_Moresby|Pacific/Chuuk","Pacific/Port_Moresby|Pacific/Truk","Pacific/Port_Moresby|Pacific/Yap","Pacific/Tarawa|Etc/GMT-12","Pacific/Tarawa|Pacific/Funafuti","Pacific/Tarawa|Pacific/Wake","Pacific/Tarawa|Pacific/Wallis"]}),moment}),function(){!function(){for(var lastTime=0,vendors=["ms","moz","webkit","o"],x=0;x<vendors.length&&!window.requestAnimationFrame;++x)window.requestAnimationFrame=window[vendors[x]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[vendors[x]+"CancelAnimationFrame"]||window[vendors[x]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(callback,element){var currTime=(new Date).getTime(),timeToCall=Math.max(0,16-(currTime-lastTime)),id=window.setTimeout(function(){callback(currTime+timeToCall)},timeToCall);return lastTime=currTime+timeToCall,id}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(id){clearTimeout(id)})}(),window.Typewriter=function(element,options){return this._settings={cursorAnimationPaused:!1,opacityIncreasing:!1,currentOpacity:1,delayedQue:[],delayItemsCount:0,eventQue:[],calledEvents:[],eventRunning:!1,timeout:!1,delayExecution:!1,fps:.06,typingFrameCount:0,stringToTypeHTMLArray:[],currentTypedCharacters:[],typing:!1,usedIDs:[],charAmountToDelete:!1,userOptions:{},eventLoopRerun:0},element?"object"!=typeof options?console.error("Typewriter only accepts the options as an object."):(this._settings.userOptions=options,this.default_options={strings:!1,cursorClassName:"typewriter-cursor",cursor:"|",animateCursor:!0,blinkSpeed:50,typingSpeed:"natural",deleteSpeed:"natural",charSpanClassName:"typewriter-char",wrapperClassName:"typewriter-wrapper",loop:!1,autoStart:!1,devMode:!1},this.options=this._setupOptions(options),this.el=element,this._setupTypwriterWrapper(),this._startCursorAnimation(),void(!0===this.options.autoStart&&this.options.strings&&this.typeOutAllStrings())):console.error("Please choose an DOM element so that type writer can display itself.")};var TypewriterPrototype=window.Typewriter.prototype;TypewriterPrototype.stop=function(){return this._addToEventQue(this._stopEventLoop),this},TypewriterPrototype.start=function(){return this._startEventLoop(),this},TypewriterPrototype.rerun=function(){return this._addToEventQue(this._rerunCalledEvents),this},TypewriterPrototype.typeString=function(string){if(!string||"string"!=typeof string)return console.error("Please enter a string as the paramater.");var string_chars=this._getCharacters(string);return this._addToEventQue([this._typeCharacters,[string_chars]]),this},TypewriterPrototype.deleteAll=function(){return this._addToEventQue([this._deleteChars,["all"]]),this},TypewriterPrototype.deleteChars=function(amount){return this._addToEventQue([this._deleteChars,[amount]]),this},TypewriterPrototype.pauseFor=function(ms){return this._addToEventQue([this._pauseFor,[ms]]),this},TypewriterPrototype.typeOutAllStrings=function(){var characters_array=this._getStringsAsCharsArray();if(1===characters_array.length)this._typeCharacters(characters_array[0]);else for(var i=0,length=characters_array.length;i<length;i++)this._addToEventQue([this._typeCharacters,[characters_array[i]]]),this.pauseFor(this._randomInteger(1500,2500)),this.deleteAll(),this.pauseFor(this._randomInteger(1500,2500));return this},TypewriterPrototype.changeSettings=function(new_settings){return new_settings||"object"==typeof new_settings?(this._addToEventQue([this._changeSettings,[JSON.stringify(new_settings)]]),this):console.error("Typewriter will only accept an object as the settings.")},TypewriterPrototype.changeBlinkSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({blinkSpeed:new_speed}),this):console.error("Please enter a number for the new blink speed.")},TypewriterPrototype.changeTypingSpeed=function(new_speed){if(!new_speed&&"number"!=typeof new_speed)return console.error("Please enter a number for the new typing speed.");return this.changeSettings({typingSpeed:new_speed}),this},TypewriterPrototype.changeDeleteSpeed=function(new_speed){return new_speed||"number"==typeof new_speed?(this.changeSettings({changeDeleteSpeed:new_speed}),this):console.error("Please enter a number for the new delete speed.")},TypewriterPrototype._rerunCalledEvents=function(){this._settings.currentTypedCharacters.length>0?(this.deleteAll(),this._resetEventLoop("rerunCalledEvents")):(this._settings.eventQue=this._settings.calledEvents,this._settings.calledEvents=[],this.options=this._setupOptions(this._settings.userOptions),this._settings.usedIDs=[],this.charAmountToDelete=!1,this._startEventLoop())},TypewriterPrototype._deleteChars=function(amount){return amount&&(this._settings.charAmountToDelete=amount),this._deletingCharIdsAnimation=window.requestAnimationFrame(this._deletingCharAnimationFrame.bind(this)),this},TypewriterPrototype._pauseFor=function(ms){var self=this;self._settings.eventRunning=!0,setTimeout(function(){self._resetEventLoop("pauseFor")},ms)},TypewriterPrototype._changeSettings=function(new_settings){this.options=this._setupOptions(JSON.parse(new_settings[0])),this._resetEventLoop("changeSettings"),this.options.devMode&&console.log("New settings",this.options)},TypewriterPrototype._deletingCharAnimationFrame=function(){var self=this,delete_speed=this.options.deleteSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName,current_typed_char_ids=self._settings.currentTypedCharacters,char_amount_to_delete=self._settings.charAmountToDelete;if(!self._settings.charAmountToDelete||0===self._settings.charAmountToDelete||0===current_typed_char_ids)return self._resetEventLoop("deletingCharAnimationFrame"),!0;"natural"==delete_speed&&(delete_speed=self._randomInteger(50,150)),"all"==char_amount_to_delete&&(char_amount_to_delete=current_typed_char_ids.length,self._settings.charAmountToDelete=char_amount_to_delete),setTimeout(function(){if(self._settings.charAmountToDelete){var last_typed_char_index=current_typed_char_ids.length-1,get_last_typed_char=current_typed_char_ids[last_typed_char_index];self._settings.currentTypedCharacters.splice(last_typed_char_index,1);var char_to_delete_el=document.getElementById(get_last_typed_char);if(char_to_delete_el)self.el.querySelector("."+typewriter_wrapper_class_name).removeChild(char_to_delete_el),self._settings.charAmountToDelete=char_amount_to_delete-1,self.options.devMode&&console.log("Deleted char with ID",get_last_typed_char)}self._deletingCharIdsAnimation=window.requestAnimationFrame(self._deletingCharAnimationFrame.bind(self))},delete_speed)},TypewriterPrototype._setupOptions=function(new_options){var merged_options={};for(var attrname in this.default_options)merged_options[attrname]=this.default_options[attrname];if(this._settings.userOptions)for(var attrname in this._settings.userOptions)merged_options[attrname]=this._settings.userOptions[attrname];for(var attrname in new_options)merged_options[attrname]=new_options[attrname];return merged_options},TypewriterPrototype._addToEventQue=function(event){this._settings.eventQue.push(event),this._settings.eventQue.length>0&&!this._settings.eventRunning&&this.options.autoStart&&this._startEventLoop()},TypewriterPrototype._startEventLoop=function(){if(this.options.devMode&&console.log("Event loop started."),!this._settings.eventRunning){if(this._settings.eventQue.length>0){this.eventLoopRerun=0;var first_event=this._settings.eventQue[0];"function"==typeof first_event?(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event.call(this),this.options.devMode&&console.log("Event started.")):first_event instanceof Array&&"function"==typeof first_event[0]&&first_event[1]instanceof Array&&(this._settings.eventRunning=!0,this._settings.calledEvents.push(first_event),this._settings.eventQue.splice(0,1),first_event[0].call(this,first_event[1]),this.options.devMode&&console.log("Event started."))}this._eventQueAnimation=window.requestAnimationFrame(this._startEventLoop.bind(this))}if(!this._settings.eventRunning&&this._settings.eventQue.length<=0){var self=this;return self._stopEventLoop(),void setTimeout(function(){self.options.loop&&(self.eventLoopRerun++,self.options.devMode&&console.log("Before Loop State",self._settings),self.eventLoopRerun>4?(console.error("Maximum amount of loop retries reached."),self._stopEventLoop()):(self.options.devMode&&console.log("Looping events."),self._rerunCalledEvents()))},1e3)}},TypewriterPrototype._resetEventLoop=function(name){var event_name=name||"Event";this._settings.eventRunning=!1,this._startEventLoop(),this.options.devMode&&console.log(event_name,"Finished")},TypewriterPrototype._stopEventLoop=function(){window.cancelAnimationFrame(this._eventQueAnimation),this.options.devMode&&console.log("Event loop stopped.")},TypewriterPrototype._setupTypwriterWrapper=function(){var typewriter_wrapper_class_name=this.options.wrapperClassName,typewriter_wrapper=document.createElement("span");typewriter_wrapper.className=typewriter_wrapper_class_name,this.el.innerHTML="",this.el.appendChild(typewriter_wrapper)},TypewriterPrototype._typeCharacters=function(characters_array){return this._settings.stringToTypeHTMLArray=this._convertCharsToHTML(characters_array),this._typingAnimation=window.requestAnimationFrame(this._typingAnimationFrame.bind(this,characters_array.length)),this},TypewriterPrototype._typingAnimationFrame=function(total_items){var self=this,typing_speed=this.options.typingSpeed,typewriter_wrapper_class_name=self.options.wrapperClassName;if(0==self._settings.stringToTypeHTMLArray.length)return window.cancelAnimationFrame(self._typingAnimation),this._resetEventLoop("typingAnimationFrame"),!0;"natural"==typing_speed&&(typing_speed=this._randomInteger(50,150)),setTimeout(function(){self.el.innerHTML;var item_to_type=self._settings.stringToTypeHTMLArray[0];self.el.querySelector("."+typewriter_wrapper_class_name).appendChild(item_to_type.el),self._settings.currentTypedCharacters.push(item_to_type.id),self._settings.stringToTypeHTMLArray.splice(0,1),self._typingAnimation=window.requestAnimationFrame(self._typingAnimationFrame.bind(self,total_items)),self.options.devMode&&console.log("Typed",item_to_type)},typing_speed)},TypewriterPrototype._convertCharsToHTML=function(chars){for(var chars_html_wrap_array=[],char_class_name=this.options.charSpanClassName,chars_array=chars[0],i=0,length=chars_array.length;i<length;i++){var char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" typewriter-item-"+i,char_element.innerHTML=chars_array[i],chars_html_wrap_array.push({id:char_id,el:char_element})}return chars_html_wrap_array},TypewriterPrototype._getCharacters=function(string){return"string"==typeof string&&string.split("")},TypewriterPrototype._getStringsAsCharsArray=function(){var strings_array_check=this.options.strings instanceof Array,strings_string_check="string"==typeof this.options.strings;if(!strings_array_check)return strings_string_check?[this.options.strings.split("")]:console.error("Typewriter only accepts strings or an array of strings as the input.");for(var strings_chars_array=[],i=0,length=this.options.strings.length;i<length;i++){var string_chars=this._getCharacters(this.options.strings[i]);if(!string_chars){console.error("Please enter only strings.");break}strings_chars_array.push(string_chars)}return strings_chars_array},TypewriterPrototype._cursorAnimationFrame=function(){if(!this._settings.cursorAnimationPaused){var opacity_amount=.001*this.options.blinkSpeed,cursor_el=this.el.querySelector(".typewriter-cursor");1==this._settings.opacityIncreasing&&(this._settings.currentOpacity>=1&&(this._settings.opacityIncreasing=!1,this._settings.currentOpacity=1),this._settings.currentOpacity+=opacity_amount),0==this._settings.opacityIncreasing&&(this._settings.currentOpacity<=0&&(this._settings.opacityIncreasing=!0,this._settings.currentOpacity=0),this._settings.currentOpacity-=opacity_amount),cursor_el.style.opacity=this._settings.currentOpacity,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))}},TypewriterPrototype.appendText=function(text){return this._addToEventQue([this._appendText,[text]]),this},TypewriterPrototype._appendText=function(text){var char_class_name=this.options.charSpanClassName,char_element=document.createElement("span"),char_id=this._generateUniqueID();char_element.id=char_id,char_element.className=char_class_name+" dom-appended",char_element.innerHTML=text;var items=[];items.push({id:char_id,el:char_element}),this._settings.stringToTypeHTMLArray=items,window.requestAnimationFrame(this._typingAnimationFrame.bind(this,1))},TypewriterPrototype._startCursorAnimation=function(){var cursor=this.options.cursor,cursor_class_name=this.options.cursorClassName,cursor_element=document.createElement("span");cursor_element.className=cursor_class_name,cursor_element.innerHTML=cursor,this.el.appendChild(cursor_element),this.options.animateCursor&&(this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this)))},TypewriterPrototype._pauseCursorAnimation=function(){this._settings.cursorAnimationPaused||(window.cancelAnimationFrame(this._cursorAnimation),this._settings.cursorAnimationPaused=!0)},TypewriterPrototype._restartCursorAnimation=function(){if(!this._settings.cursorAnimationPaused)return console.error("Cursor animation is already running.");this._settings.cursorAnimationPaused=!1,this._cursorAnimation=window.requestAnimationFrame(this._cursorAnimationFrame.bind(this))},TypewriterPrototype._randomInteger=function(min,max){return Math.floor(Math.random()*(max-min+1))+min},TypewriterPrototype._randomID=function(){for(var text="",possible="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",i=0;i<this._randomInteger(5,15);i++)text+=possible.charAt(Math.floor(Math.random()*possible.length));return text},TypewriterPrototype._generateUniqueID=function(){var temp_id=this._randomID();return-1==this._settings.usedIDs.indexOf(temp_id)?(this._settings.usedIDs.push(temp_id),temp_id):this._generateUniqueID.call(this)}}(),function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define("uikit",factory):global.UIkit=factory()}(this,function(){function bind(fn,context){return function(a){var l=arguments.length;return l?l>1?fn.apply(context,arguments):fn.call(context,a):fn.call(context)}}var hasOwnProperty=Object.prototype.hasOwnProperty;function hasOwn(obj,key){return hasOwnProperty.call(obj,key)}var hyphenateCache={},hyphenateRe=/([a-z\d])([A-Z])/g;function hyphenate(str){return str in hyphenateCache||(hyphenateCache[str]=str.replace(hyphenateRe,"$1-$2").toLowerCase()),hyphenateCache[str]}var camelizeRe=/-(\w)/g;function camelize(str){return str.replace(camelizeRe,toUpper)}function toUpper(_,c){return c?c.toUpperCase():""}function ucfirst(str){return str.length?toUpper(0,str.charAt(0))+str.slice(1):""}var strPrototype=String.prototype,startsWithFn=strPrototype.startsWith||function(search){return 0===this.lastIndexOf(search,0)};function startsWith(str,search){return startsWithFn.call(str,search)}var endsWithFn=strPrototype.endsWith||function(search){return this.substr(-search.length)===search};function endsWith(str,search){return endsWithFn.call(str,search)}var includesFn=function(search){return~this.indexOf(search)},includesStr=strPrototype.includes||includesFn,includesArray=Array.prototype.includes||includesFn;function includes(obj,search){return obj&&(isString(obj)?includesStr:includesArray).call(obj,search)}var isArray=Array.isArray;function isFunction(obj){return"function"==typeof obj}function isObject(obj){return null!==obj&&"object"==typeof obj}function isPlainObject(obj){return isObject(obj)&&Object.getPrototypeOf(obj)===Object.prototype}function isWindow(obj){return isObject(obj)&&obj===obj.window}function isDocument(obj){return isObject(obj)&&9===obj.nodeType}function isJQuery(obj){return isObject(obj)&&!!obj.jquery}function isNode(element){return element instanceof Node||isObject(element)&&1===element.nodeType}function isNodeCollection(element){return element instanceof NodeList||element instanceof HTMLCollection}function isBoolean(value){return"boolean"==typeof value}function isString(value){return"string"==typeof value}function isNumber(value){return"number"==typeof value}function isNumeric(value){return isNumber(value)||isString(value)&&!isNaN(value-parseFloat(value))}function isUndefined(value){return void 0===value}function toBoolean(value){return isBoolean(value)?value:"true"===value||"1"===value||""===value||"false"!==value&&"0"!==value&&value}function toNumber(value){var number=Number(value);return!isNaN(number)&&number}function toFloat(value){return parseFloat(value)||0}function toNode(element){return isNode(element)||isWindow(element)||isDocument(element)?element:isNodeCollection(element)||isJQuery(element)?element[0]:isArray(element)?toNode(element[0]):null}var arrayProto=Array.prototype;function toNodes(element){return isNode(element)?[element]:isNodeCollection(element)?arrayProto.slice.call(element):isArray(element)?element.map(toNode).filter(Boolean):isJQuery(element)?element.toArray():[]}function toList(value){return isArray(value)?value:isString(value)?value.split(/,(?![^(]*\))/).map(function(value){return isNumeric(value)?toNumber(value):toBoolean(value.trim())}):[value]}function toMs(time){return time?endsWith(time,"ms")?toFloat(time):1e3*toFloat(time):0}function swap(value,a,b){return value.replace(new RegExp(a+"|"+b,"mg"),function(match){return match===a?b:a})}var assign=Object.assign||function(target){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];target=Object(target);for(var i=0;i<args.length;i++){var source=args[i];if(null!==source)for(var key in source)hasOwn(source,key)&&(target[key]=source[key])}return target};function each(obj,cb){for(var key in obj)cb.call(obj[key],obj[key],key)}function sortBy(collection,prop){return collection.sort(function(a,b){return a[prop]>b[prop]?1:b[prop]>a[prop]?-1:0})}function clamp(number,min,max){return void 0===min&&(min=0),void 0===max&&(max=1),Math.min(Math.max(number,min),max)}function noop(){}function intersectRect(r1,r2){return r1.left<=r2.right&&r2.left<=r1.right&&r1.top<=r2.bottom&&r2.top<=r1.bottom}function pointInRect(point,rect){return intersectRect({top:point.y,bottom:point.y,left:point.x,right:point.x},rect)}var Dimensions={ratio:function(dimensions,prop,value){var obj,aProp="width"===prop?"height":"width";return(obj={})[aProp]=Math.round(value*dimensions[aProp]/dimensions[prop]),obj[prop]=value,obj},contain:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=assign({},dimensions),function(_,prop){return dimensions=dimensions[prop]>maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions},cover:function(dimensions,maxDimensions){var this$1=this;return each(dimensions=this.contain(dimensions,maxDimensions),function(_,prop){return dimensions=dimensions[prop]<maxDimensions[prop]?this$1.ratio(dimensions,prop,maxDimensions[prop]):dimensions}),dimensions}};function attr(element,name,value){if(isObject(name))for(var key in name)attr(element,key,name[key]);else{if(isUndefined(value))return(element=toNode(element))&&element.getAttribute(name);toNodes(element).forEach(function(element){isFunction(value)&&(value=value.call(element,attr(element,name))),null===value?removeAttr(element,name):element.setAttribute(name,value)})}}function hasAttr(element,name){return toNodes(element).some(function(element){return element.hasAttribute(name)})}function removeAttr(element,name){element=toNodes(element),name.split(" ").forEach(function(name){return element.forEach(function(element){return element.removeAttribute(name)})})}function filterAttr(element,attribute,pattern,replacement){attr(element,attribute,function(value){return value?value.replace(pattern,replacement):value})}function data(element,attribute){for(var i=0,attrs=[attribute,"data-"+attribute];i<attrs.length;i++)if(hasAttr(element,attrs[i]))return attr(element,attrs[i])}function query(selector,context){return toNode(selector)||find(selector,isContextSelector(selector)?context:document)}function queryAll(selector,context){var nodes=toNodes(selector);return nodes.length&&nodes||findAll(selector,isContextSelector(selector)?context:document)}function find(selector,context){return toNode(_query(selector,context,"querySelector"))}function findAll(selector,context){return toNodes(_query(selector,context,"querySelectorAll"))}function _query(selector,context,queryFn){if(void 0===context&&(context=document),!selector||!isString(selector))return null;var removes;isContextSelector(selector=selector.replace(contextSanitizeRe,"$1 *"))&&(removes=[],selector=selector.split(",").map(function(selector,i){var ctx=context;if("!"===(selector=selector.trim())[0]){var selectors=selector.substr(1).trim().split(" ");ctx=closest(context.parentNode,selectors[0]),selector=selectors.slice(1).join(" ").trim()}if("-"===selector[0]){var selectors$1=selector.substr(1).trim().split(" "),prev=(ctx||context).previousElementSibling;ctx=matches(prev,selector.substr(1))?prev:null,selector=selectors$1.slice(1).join(" ")}return ctx?(ctx.id||(ctx.id="uk-"+Date.now()+i,removes.push(function(){return removeAttr(ctx,"id")})),"#"+escape(ctx.id)+" "+selector):null}).filter(Boolean).join(","),context=document);try{return context[queryFn](selector)}catch(e){return null}finally{removes&&removes.forEach(function(remove){return remove()})}}var contextSelectorRe=/(^|,)\s*[!>+~-]/,contextSanitizeRe=/([!>+~-])(?=\s+[!>+~-]|\s*$)/g;function isContextSelector(selector){return isString(selector)&&selector.match(contextSelectorRe)}var elProto=Element.prototype,matchesFn=elProto.matches||elProto.webkitMatchesSelector||elProto.msMatchesSelector;function matches(element,selector){return toNodes(element).some(function(element){return matchesFn.call(element,selector)})}var closestFn=elProto.closest||function(selector){var ancestor=this;do{if(matches(ancestor,selector))return ancestor;ancestor=ancestor.parentNode}while(ancestor&&1===ancestor.nodeType)};function closest(element,selector){return startsWith(selector,">")&&(selector=selector.slice(1)),isNode(element)?element.parentNode&&closestFn.call(element,selector):toNodes(element).map(function(element){return element.parentNode&&closestFn.call(element,selector)}).filter(Boolean)}function parents(element,selector){for(var elements=[],parent=toNode(element).parentNode;parent&&1===parent.nodeType;)matches(parent,selector)&&elements.push(parent),parent=parent.parentNode;return elements}var escapeFn=window.CSS&&CSS.escape||function(css){return css.replace(/([^\x7f-\uFFFF\w-])/g,function(match){return"\\"+match})};function escape(css){return isString(css)?escapeFn.call(null,css):""}var voidElements={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};function isVoidElement(element){return toNodes(element).some(function(element){return voidElements[element.tagName.toLowerCase()]})}function isVisible(element){return toNodes(element).some(function(element){return element.offsetWidth||element.offsetHeight||element.getClientRects().length})}var selInput="input,select,textarea,button";function isInput(element){return toNodes(element).some(function(element){return matches(element,selInput)})}function filter(element,selector){return toNodes(element).filter(function(element){return matches(element,selector)})}function within(element,selector){return isString(selector)?matches(element,selector)||closest(element,selector):element===selector||(isDocument(selector)?selector.documentElement:toNode(selector)).contains(toNode(element))}function on(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),target=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4];return target=toEventTarget(target),selector&&(listener=function(element,selector,listener){var this$1=this;return function(e){var target=e.target,current=">"===selector[0]?findAll(selector,element).reverse().filter(function(element){return within(target,element)})[0]:closest(target,selector);current&&(e.delegate=element,e.current=current,listener.call(this$1,e))}}(target,selector,listener)),listener.length>1&&(listener=function(listener){return function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)}}(listener)),type.split(" ").forEach(function(type){return target&&target.addEventListener(type,listener,useCapture)}),function(){return off(target,type,listener,useCapture)}}function off(target,type,listener,useCapture){void 0===useCapture&&(useCapture=!1),(target=toEventTarget(target))&&type.split(" ").forEach(function(type){return target.removeEventListener(type,listener,useCapture)})}function once(){for(var args=[],len=arguments.length;len--;)args[len]=arguments[len];var ref=getArgs(args),element=ref[0],type=ref[1],selector=ref[2],listener=ref[3],useCapture=ref[4],condition=ref[5],off=on(element,type,selector,function(e){var result=!condition||condition(e);result&&(off(),listener(e,result))},useCapture);return off}function trigger(target,event,detail){return toEventTargets(target).reduce(function(notCanceled,target){return notCanceled&&target.dispatchEvent(createEvent(event,!0,!0,detail))},!0)}function createEvent(e,bubbles,cancelable,detail){if(void 0===bubbles&&(bubbles=!0),void 0===cancelable&&(cancelable=!1),isString(e)){var event=document.createEvent("CustomEvent");event.initCustomEvent(e,bubbles,cancelable,detail),e=event}return e}function getArgs(args){return isString(args[0])&&(args[0]=find(args[0])),isFunction(args[2])&&args.splice(2,0,!1),args}function isEventTarget(target){return"EventTarget"in window?target instanceof EventTarget:target&&"addEventListener"in target}function toEventTarget(target){return isEventTarget(target)?target:toNode(target)}function toEventTargets(target){return isEventTarget(target)?[target]:isArray(target)?target.map(toEventTarget).filter(Boolean):toNodes(target)}function preventClick(){var timer=setTimeout(once(document,"click",function(e){e.preventDefault(),e.stopImmediatePropagation(),clearTimeout(timer)},!0));trigger(document,"touchcancel")}var Promise$1="Promise"in window?window.Promise:PromiseFn,Deferred=function(){var this$1=this;this.promise=new Promise$1(function(resolve,reject){this$1.reject=reject,this$1.resolve=resolve})},PENDING=2,async="setImmediate"in window?setImmediate:setTimeout;function PromiseFn(executor){this.state=PENDING,this.value=void 0,this.deferred=[];var promise=this;try{executor(function(x){promise.resolve(x)},function(r){promise.reject(r)})}catch(e){promise.reject(e)}}PromiseFn.reject=function(r){return new PromiseFn(function(resolve,reject){reject(r)})},PromiseFn.resolve=function(x){return new PromiseFn(function(resolve,reject){resolve(x)})},PromiseFn.all=function(iterable){return new PromiseFn(function(resolve,reject){var result=[],count=0;function resolver(i){return function(x){result[i]=x,(count+=1)===iterable.length&&resolve(result)}}0===iterable.length&&resolve(result);for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolver(i),reject)})},PromiseFn.race=function(iterable){return new PromiseFn(function(resolve,reject){for(var i=0;i<iterable.length;i+=1)PromiseFn.resolve(iterable[i]).then(resolve,reject)})};var p=PromiseFn.prototype;function ajax(url,options){return new Promise$1(function(resolve,reject){var env=assign({data:null,method:"GET",headers:{},xhr:new XMLHttpRequest,beforeSend:noop,responseType:""},options);env.beforeSend(env);var xhr=env.xhr;for(var prop in env)if(prop in xhr)try{xhr[prop]=env[prop]}catch(e){}for(var header in xhr.open(env.method.toUpperCase(),url),env.headers)xhr.setRequestHeader(header,env.headers[header]);on(xhr,"load",function(){0===xhr.status||xhr.status>=200&&xhr.status<300||304===xhr.status?resolve(xhr):reject(assign(Error(xhr.statusText),{xhr:xhr,status:xhr.status}))}),on(xhr,"error",function(){return reject(assign(Error("Network Error"),{xhr:xhr}))}),on(xhr,"timeout",function(){return reject(assign(Error("Network Timeout"),{xhr:xhr}))}),xhr.send(env.data)})}function getImage(src,srcset,sizes){return new Promise$1(function(resolve,reject){var img=new Image;img.onerror=reject,img.onload=function(){return resolve(img)},img.src=src,srcset&&(img.srcset=srcset),sizes&&(img.sizes=sizes)})}function isReady(){return"complete"===document.readyState||"loading"!==document.readyState&&!document.documentElement.doScroll}function ready(fn){if(isReady())fn();else var handle=function(){unbind1(),unbind2(),fn()},unbind1=on(document,"DOMContentLoaded",handle),unbind2=on(window,"load",handle)}function index(element,ref){return ref?toNodes(element).indexOf(toNode(ref)):toNodes((element=toNode(element))&&element.parentNode.children).indexOf(element)}function getIndex(i,elements,current,finite){void 0===current&&(current=0),void 0===finite&&(finite=!1);var length=(elements=toNodes(elements)).length;return i=isNumeric(i)?toNumber(i):"next"===i?current+1:"previous"===i?current-1:index(elements,i),finite?clamp(i,0,length-1):(i%=length)<0?i+length:i}function empty(element){return(element=toNode(element)).innerHTML="",element}function html(parent,html){return parent=toNode(parent),isUndefined(html)?parent.innerHTML:append(parent.hasChildNodes()?empty(parent):parent,html)}function append(parent,element){return parent=toNode(parent),insertNodes(element,function(element){return parent.appendChild(element)})}function before(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.parentNode.insertBefore(element,ref)})}function after(ref,element){return ref=toNode(ref),insertNodes(element,function(element){return ref.nextSibling?before(ref.nextSibling,element):append(ref.parentNode,element)})}function insertNodes(element,fn){return(element=isString(element)?fragment(element):element)?"length"in element?toNodes(element).map(fn):fn(element):null}function remove(element){toNodes(element).map(function(element){return element.parentNode&&element.parentNode.removeChild(element)})}function wrapAll(element,structure){for(structure=toNode(before(element,structure));structure.firstChild;)structure=structure.firstChild;return append(structure,element),structure}function wrapInner(element,structure){return toNodes(toNodes(element).map(function(element){return element.hasChildNodes?wrapAll(toNodes(element.childNodes),structure):append(element,structure)}))}function unwrap(element){toNodes(element).map(function(element){return element.parentNode}).filter(function(value,index,self){return self.indexOf(value)===index}).forEach(function(parent){before(parent,parent.childNodes),remove(parent)})}p.resolve=function(x){var promise=this;if(promise.state===PENDING){if(x===promise)throw new TypeError("Promise settled with itself.");var called=!1;try{var then=x&&x.then;if(null!==x&&isObject(x)&&isFunction(then))return void then.call(x,function(x){called||promise.resolve(x),called=!0},function(r){called||promise.reject(r),called=!0})}catch(e){return void(called||promise.reject(e))}promise.state=0,promise.value=x,promise.notify()}},p.reject=function(reason){if(this.state===PENDING){if(reason===this)throw new TypeError("Promise settled with itself.");this.state=1,this.value=reason,this.notify()}},p.notify=function(){var this$1=this;async(function(){if(this$1.state!==PENDING)for(;this$1.deferred.length;){var ref=this$1.deferred.shift(),onResolved=ref[0],onRejected=ref[1],resolve=ref[2],reject=ref[3];try{0===this$1.state?isFunction(onResolved)?resolve(onResolved.call(void 0,this$1.value)):resolve(this$1.value):1===this$1.state&&(isFunction(onRejected)?resolve(onRejected.call(void 0,this$1.value)):reject(this$1.value))}catch(e){reject(e)}}})},p.then=function(onResolved,onRejected){var this$1=this;return new PromiseFn(function(resolve,reject){this$1.deferred.push([onResolved,onRejected,resolve,reject]),this$1.notify()})},p.catch=function(onRejected){return this.then(void 0,onRejected)};var fragmentRe=/^\s*<(\w+|!)[^>]*>/,singleTagRe=/^<(\w+)\s*\/?>(?:<\/\1>)?$/;function fragment(html){var matches=singleTagRe.exec(html);if(matches)return document.createElement(matches[1]);var container=document.createElement("div");return fragmentRe.test(html)?container.insertAdjacentHTML("beforeend",html.trim()):container.textContent=html,container.childNodes.length>1?toNodes(container.childNodes):container.firstChild}function apply(node,fn){if(node&&1===node.nodeType)for(fn(node),node=node.firstElementChild;node;)apply(node,fn),node=node.nextElementSibling}function addClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"add")}function removeClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];apply$1(element,args,"remove")}function removeClasses(element,cls){filterAttr(element,"class",new RegExp("(^|\\s)"+cls+"(?!\\S)","g"),"")}function replaceClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];args[0]&&removeClass(element,args[0]),args[1]&&addClass(element,args[1])}function hasClass(element,cls){return toNodes(element).some(function(element){return element.classList.contains(cls)})}function toggleClass(element){for(var args=[],len=arguments.length-1;len-- >0;)args[len]=arguments[len+1];if(args.length){var force=isString((args=getArgs$1(args))[args.length-1])?[]:args.pop();args=args.filter(Boolean),toNodes(element).forEach(function(ref){for(var classList=ref.classList,i=0;i<args.length;i++)supports.Force?classList.toggle.apply(classList,[args[i]].concat(force)):classList[(isUndefined(force)?!classList.contains(args[i]):force)?"add":"remove"](args[i])})}}function apply$1(element,args,fn){(args=getArgs$1(args).filter(Boolean)).length&&toNodes(element).forEach(function(ref){var classList=ref.classList;supports.Multiple?classList[fn].apply(classList,args):args.forEach(function(cls){return classList[fn](cls)})})}function getArgs$1(args){return args.reduce(function(args,arg){return args.concat.call(args,isString(arg)&&includes(arg," ")?arg.trim().split(" "):arg)},[])}var list,supports={};(list=document.createElement("_").classList)&&(list.add("a","b"),list.toggle("c",!1),supports.Multiple=list.contains("b"),supports.Force=!list.contains("c")),list=null;var cssNumber={"animation-iteration-count":!0,"column-count":!0,"fill-opacity":!0,"flex-grow":!0,"flex-shrink":!0,"font-weight":!0,"line-height":!0,opacity:!0,order:!0,orphans:!0,widows:!0,"z-index":!0,zoom:!0};function css(element,property,value){return toNodes(element).map(function(element){if(isString(property)){if(property=propName(property),isUndefined(value))return getStyle(element,property);value||0===value?element.style[property]=isNumeric(value)&&!cssNumber[property]?value+"px":value:element.style.removeProperty(property)}else{if(isArray(property)){var styles=getStyles(element);return property.reduce(function(props,property){return props[property]=styles[propName(property)],props},{})}isObject(property)&&each(property,function(value,property){return css(element,property,value)})}return element})[0]}function getStyles(element,pseudoElt){return(element=toNode(element)).ownerDocument.defaultView.getComputedStyle(element,pseudoElt)}function getStyle(element,property,pseudoElt){return getStyles(element,pseudoElt)[property]}var vars={};function getCssVar(name){if(!(name in vars)){var element=append(document.documentElement,document.createElement("div"));addClass(element,"var-"+name);try{vars[name]=getStyle(element,"content",":before").replace(/^["'](.*)["']$/,"$1"),vars[name]=JSON.parse(vars[name])}catch(e){}document.documentElement.removeChild(element)}return vars[name]}var cssProps={};function propName(name){var ret=cssProps[name];return ret||(ret=cssProps[name]=function(name){if((name=hyphenate(name))in style)return name;var prefixedName,i=cssPrefixes.length;for(;i--;)if((prefixedName="-"+cssPrefixes[i]+"-"+name)in style)return prefixedName}(name)||name),ret}var cssPrefixes=["webkit","moz","ms"],style=document.createElement("_").style;function transition(element,props,duration,timing){return void 0===duration&&(duration=400),void 0===timing&&(timing="linear"),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){for(var name in props){var value=css(element,name);""===value&&css(element,name,value)}var timer=setTimeout(function(){return trigger(element,"transitionend")},duration);once(element,"transitionend transitioncanceled",function(ref){var type=ref.type;clearTimeout(timer),removeClass(element,"uk-transition"),css(element,{"transition-property":"","transition-duration":"","transition-timing-function":""}),"transitioncanceled"===type?reject():resolve()},!1,function(ref){var target=ref.target;return element===target}),addClass(element,"uk-transition"),css(element,assign({"transition-property":Object.keys(props).map(propName).join(","),"transition-duration":duration+"ms","transition-timing-function":timing},props))})}))}var Transition={start:transition,stop:function(element){return trigger(element,"transitionend"),Promise$1.resolve()},cancel:function(element){trigger(element,"transitioncanceled")},inProgress:function(element){return hasClass(element,"uk-transition")}},animationPrefix="uk-animation-",clsCancelAnimation="uk-cancel-animation";function animate(element,animation,duration,origin,out){var arguments$1=arguments;return void 0===duration&&(duration=200),Promise$1.all(toNodes(element).map(function(element){return new Promise$1(function(resolve,reject){if(hasClass(element,clsCancelAnimation))requestAnimationFrame(function(){return Promise$1.resolve().then(function(){return animate.apply(void 0,arguments$1).then(resolve,reject)})});else{var cls=animation+" "+animationPrefix+(out?"leave":"enter");startsWith(animation,animationPrefix)&&(origin&&(cls+=" uk-transform-origin-"+origin),out&&(cls+=" "+animationPrefix+"reverse")),reset(),once(element,"animationend animationcancel",function(ref){var hasReset=!1;"animationcancel"===ref.type?(reject(),reset()):(resolve(),Promise$1.resolve().then(function(){hasReset=!0,reset()})),requestAnimationFrame(function(){hasReset||(addClass(element,clsCancelAnimation),requestAnimationFrame(function(){return removeClass(element,clsCancelAnimation)}))})},!1,function(ref){var target=ref.target;return element===target}),css(element,"animationDuration",duration+"ms"),addClass(element,cls)}function reset(){css(element,"animationDuration",""),removeClasses(element,animationPrefix+"\\S*")}})}))}var inProgress=new RegExp(animationPrefix+"(enter|leave)"),Animation={in:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!1)},out:function(element,animation,duration,origin){return animate(element,animation,duration,origin,!0)},inProgress:function(element){return inProgress.test(attr(element,"class"))},cancel:function(element){trigger(element,"animationcancel")}};function $(selector,context){return isString(selector)?isHtml(selector)?toNode(fragment(selector)):find(selector,context):toNode(selector)}function $$(selector,context){return isString(selector)?isHtml(selector)?toNodes(fragment(selector)):findAll(selector,context):toNodes(selector)}function isHtml(str){return"<"===str[0]||str.match(/^\s*</)}var dirs={width:["x","left","right"],height:["y","top","bottom"]};function positionAt(element,target,elAttach,targetAttach,elOffset,targetOffset,flip,boundary){elAttach=getPos(elAttach),targetAttach=getPos(targetAttach);var flipped={element:elAttach,target:targetAttach};if(!element||!target)return flipped;var dim=getDimensions(element),targetDim=getDimensions(target),position=targetDim;return moveTo(position,elAttach,dim,-1),moveTo(position,targetAttach,targetDim,1),elOffset=getOffsets(elOffset,dim.width,dim.height),targetOffset=getOffsets(targetOffset,targetDim.width,targetDim.height),elOffset.x+=targetOffset.x,elOffset.y+=targetOffset.y,position.left+=elOffset.x,position.top+=elOffset.y,boundary=getDimensions(boundary||window$1(element)),flip&&each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];if(!0===flip||includes(flip,dir)){var elemOffset=elAttach[dir]===align?-dim[prop]:elAttach[dir]===alignFlip?dim[prop]:0,targetOffset=targetAttach[dir]===align?targetDim[prop]:targetAttach[dir]===alignFlip?-targetDim[prop]:0;if(position[align]<boundary[align]||position[align]+dim[prop]>boundary[alignFlip]){var centerOffset=dim[prop]/2,centerTargetOffset="center"===targetAttach[dir]?-targetDim[prop]/2:0;"center"===elAttach[dir]&&(apply(centerOffset,centerTargetOffset)||apply(-centerOffset,-centerTargetOffset))||apply(elemOffset,targetOffset)}}function apply(elemOffset,targetOffset){var newVal=position[align]+elemOffset+targetOffset-2*elOffset[dir];if(newVal>=boundary[align]&&newVal+dim[prop]<=boundary[alignFlip])return position[align]=newVal,["element","target"].forEach(function(el){flipped[el][dir]=elemOffset?flipped[el][dir]===dirs[prop][1]?dirs[prop][2]:dirs[prop][1]:flipped[el][dir]}),!0}}),offset(element,position),flipped}function offset(element,coordinates){if(element=toNode(element),!coordinates)return getDimensions(element);var currentOffset=offset(element),pos=css(element,"position");["left","top"].forEach(function(prop){if(prop in coordinates){var value=css(element,prop);css(element,prop,coordinates[prop]-currentOffset[prop]+toFloat("absolute"===pos&&"auto"===value?position(element)[prop]:value))}})}function getDimensions(element){var style,hidden,ref=window$1(element=toNode(element)),top=ref.pageYOffset,left=ref.pageXOffset;if(isWindow(element)){var height=element.innerHeight,width=element.innerWidth;return{top:top,left:left,height:height,width:width,bottom:top+height,right:left+width}}isVisible(element)||(style=attr(element,"style"),hidden=attr(element,"hidden"),attr(element,{style:(style||"")+";display:block !important;",hidden:null}));var rect=element.getBoundingClientRect();return isUndefined(style)||attr(element,{style:style,hidden:hidden}),{height:rect.height,width:rect.width,top:rect.top+top,left:rect.left+left,bottom:rect.bottom+top,right:rect.right+left}}function position(element){var parent=function(element){var parent=toNode(element).offsetParent;for(;parent&&"static"===css(parent,"position");)parent=parent.offsetParent;return parent||docEl(element)}(element=toNode(element)),parentOffset=parent===docEl(element)?{top:0,left:0}:offset(parent),ref=["top","left"].reduce(function(props,prop){var propName$$1=ucfirst(prop);return props[prop]-=parentOffset[prop]+(toFloat(css(element,"margin"+propName$$1))||0)+(toFloat(css(parent,"border"+propName$$1+"Width"))||0),props},offset(element));return{top:ref.top,left:ref.left}}var height=dimension("height"),width=dimension("width");function dimension(prop){var propName$$1=ucfirst(prop);return function(element,value){if(element=toNode(element),isUndefined(value)){if(isWindow(element))return element["inner"+propName$$1];if(isDocument(element)){var doc=element.documentElement;return Math.max(doc["offset"+propName$$1],doc["scroll"+propName$$1])}return(value="auto"===(value=css(element,prop))?element["offset"+propName$$1]:toFloat(value)||0)-boxModelAdjust(prop,element)}css(element,prop,value||0===value?+value+boxModelAdjust(prop,element)+"px":"")}}function boxModelAdjust(prop,element){return"border-box"===css(element,"boxSizing")?dirs[prop].slice(1).map(ucfirst).reduce(function(value,prop){return value+toFloat(css(element,"padding"+prop))+toFloat(css(element,"border"+prop+"Width"))},0):0}function moveTo(position,attach,dim,factor){each(dirs,function(ref,prop){var dir=ref[0],align=ref[1],alignFlip=ref[2];attach[dir]===alignFlip?position[align]+=dim[prop]*factor:"center"===attach[dir]&&(position[align]+=dim[prop]*factor/2)})}function getPos(pos){var x=/left|center|right/,y=/top|center|bottom/;return 1===(pos=(pos||"").split(" ")).length&&(pos=x.test(pos[0])?pos.concat(["center"]):y.test(pos[0])?["center"].concat(pos):["center","center"]),{x:x.test(pos[0])?pos[0]:"center",y:y.test(pos[1])?pos[1]:"center"}}function getOffsets(offsets,width,height){var ref=(offsets||"").split(" "),x=ref[0],y=ref[1];return{x:x?toFloat(x)*(endsWith(x,"%")?width/100:1):0,y:y?toFloat(y)*(endsWith(y,"%")?height/100:1):0}}function flipPosition(pos){switch(pos){case"left":return"right";case"right":return"left";case"top":return"bottom";case"bottom":return"top";default:return pos}}function isInView(element,topOffset,leftOffset,relativeToViewport){if(void 0===topOffset&&(topOffset=0),void 0===leftOffset&&(leftOffset=0),!isVisible(element))return!1;var win=window$1(element=toNode(element));if(relativeToViewport)return intersectRect(element.getBoundingClientRect(),{top:-topOffset,left:-leftOffset,bottom:topOffset+height(win),right:leftOffset+width(win)});var ref=offsetPosition(element),elTop=ref[0],elLeft=ref[1],top=win.pageYOffset,left=win.pageXOffset;return intersectRect({top:elTop,left:elLeft,bottom:elTop+element.offsetHeight,right:elTop+element.offsetWidth},{top:top-topOffset,left:left-leftOffset,bottom:top+topOffset+height(win),right:left+leftOffset+width(win)})}function scrolledOver(element,heightOffset){if(void 0===heightOffset&&(heightOffset=0),!isVisible(element))return 0;var win=window$1(element=toNode(element)),doc=document$1(element),elHeight=element.offsetHeight+heightOffset,top=offsetPosition(element)[0],vp=height(win),vh=vp+Math.min(0,top-vp),diff=Math.max(0,vp-(height(doc)+heightOffset-(top+elHeight)));return clamp((vh+win.pageYOffset-top)/((vh+(elHeight-(diff<vp?diff:0)))/100)/100)}function offsetPosition(element){var offset=[0,0];do{if(offset[0]+=element.offsetTop,offset[1]+=element.offsetLeft,"fixed"===css(element,"position")){var win=window$1(element);return offset[0]+=win.pageYOffset,offset[1]+=win.pageXOffset,offset}}while(element=element.offsetParent);return offset}function window$1(element){return isWindow(element)?element:document$1(element).defaultView}function document$1(element){return toNode(element).ownerDocument}function docEl(element){return document$1(element).documentElement}var isRtl="rtl"===attr(document.documentElement,"dir"),hasTouchEvents="ontouchstart"in window,hasPointerEvents=window.PointerEvent,hasTouch=hasTouchEvents||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,pointerDown=hasTouch?"mousedown "+(hasTouchEvents?"touchstart":"pointerdown"):"mousedown",pointerMove=hasTouch?"mousemove "+(hasTouchEvents?"touchmove":"pointermove"):"mousemove",pointerUp=hasTouch?"mouseup "+(hasTouchEvents?"touchend":"pointerup"):"mouseup",pointerEnter=hasTouch&&hasPointerEvents?"pointerenter":"mouseenter",pointerLeave=hasTouch&&hasPointerEvents?"pointerleave":"mouseleave",fastdom={reads:[],writes:[],read:function(task){return this.reads.push(task),scheduleFlush(),task},write:function(task){return this.writes.push(task),scheduleFlush(),task},clear:function(task){return remove$1(this.reads,task)||remove$1(this.writes,task)},flush:function(){runTasks(this.reads),runTasks(this.writes.splice(0,this.writes.length)),this.scheduled=!1,(this.reads.length||this.writes.length)&&scheduleFlush()}};function scheduleFlush(){fastdom.scheduled||(fastdom.scheduled=!0,requestAnimationFrame(fastdom.flush.bind(fastdom)))}function runTasks(tasks){for(var task;task=tasks.shift();)task()}function remove$1(array,item){var index=array.indexOf(item);return!!~index&&!!array.splice(index,1)}function MouseTracker(){}function slope(a,b){return(b.y-a.y)/(b.x-a.x)}MouseTracker.prototype={positions:[],position:null,init:function(){var this$1=this;this.positions=[],this.position=null;var ticking=!1;this.unbind=on(document,"mousemove",function(e){ticking||(setTimeout(function(){var time=Date.now(),length=this$1.positions.length;length&&time-this$1.positions[length-1].time>100&&this$1.positions.splice(0,length),this$1.positions.push({time:time,x:e.pageX,y:e.pageY}),this$1.positions.length>5&&this$1.positions.shift(),ticking=!1},5),ticking=!0)})},cancel:function(){this.unbind&&this.unbind()},movesTo:function(target){if(this.positions.length<2)return!1;var p=offset(target),position$$1=this.positions[this.positions.length-1],prevPos=this.positions[0];if(p.left<=position$$1.x&&position$$1.x<=p.right&&p.top<=position$$1.y&&position$$1.y<=p.bottom)return!1;var points=[[{x:p.left,y:p.top},{x:p.right,y:p.bottom}],[{x:p.right,y:p.top},{x:p.left,y:p.bottom}]];return p.right<=position$$1.x||(p.left>=position$$1.x?(points[0].reverse(),points[1].reverse()):p.bottom<=position$$1.y?points[0].reverse():p.top>=position$$1.y&&points[1].reverse()),!!points.reduce(function(result,point){return result+(slope(prevPos,point[0])<slope(position$$1,point[0])&&slope(prevPos,point[1])>slope(position$$1,point[1]))},0)}};var strats={};function mergeFnData(parentVal,childVal,vm){return strats.computed(isFunction(parentVal)?parentVal.call(vm,vm):parentVal,isFunction(childVal)?childVal.call(vm,vm):childVal)}strats.args=strats.events=strats.init=strats.created=strats.beforeConnect=strats.connected=strats.ready=strats.beforeDisconnect=strats.disconnected=strats.destroy=function(parentVal,childVal){return parentVal=parentVal&&!isArray(parentVal)?[parentVal]:parentVal,childVal?parentVal?parentVal.concat(childVal):isArray(childVal)?childVal:[childVal]:parentVal},strats.update=function(parentVal,childVal){return strats.args(parentVal,isFunction(childVal)?{read:childVal}:childVal)},strats.props=function(parentVal,childVal){return isArray(childVal)&&(childVal=childVal.reduce(function(value,key){return value[key]=String,value},{})),strats.methods(parentVal,childVal)},strats.computed=strats.methods=function(parentVal,childVal){return childVal?parentVal?assign({},parentVal,childVal):childVal:parentVal},strats.data=function(parentVal,childVal,vm){return vm?mergeFnData(parentVal,childVal,vm):childVal?parentVal?function(vm){return mergeFnData(parentVal,childVal,vm)}:childVal:parentVal};var defaultStrat=function(parentVal,childVal){return isUndefined(childVal)?parentVal:childVal};function mergeOptions(parent,child,vm){var options={};if(isFunction(child)&&(child=child.options),child.extends&&(parent=mergeOptions(parent,child.extends,vm)),child.mixins)for(var i=0,l=child.mixins.length;i<l;i++)parent=mergeOptions(parent,child.mixins[i],vm);for(var key in parent)mergeKey(key);for(var key$1 in child)hasOwn(parent,key$1)||mergeKey(key$1);function mergeKey(key){options[key]=(strats[key]||defaultStrat)(parent[key],child[key],vm)}return options}function parseOptions(options,args){var obj;void 0===args&&(args=[]);try{return options?startsWith(options,"{")?JSON.parse(options):args.length&&!includes(options,":")?((obj={})[args[0]]=options,obj):options.split(";").reduce(function(options,option){var ref=option.split(/:(.*)/),key=ref[0],value=ref[1];return key&&!isUndefined(value)&&(options[key.trim()]=value.trim()),options},{}):{}}catch(e){return{}}}var id=0,Player=function(el){this.id=++id,this.el=toNode(el)};function post(el,cmd){try{el.contentWindow.postMessage(JSON.stringify(assign({event:"command"},cmd)),"*")}catch(e){}}Player.prototype.isVideo=function(){return this.isYoutube()||this.isVimeo()||this.isHTML5()},Player.prototype.isHTML5=function(){return"VIDEO"===this.el.tagName},Player.prototype.isIFrame=function(){return"IFRAME"===this.el.tagName},Player.prototype.isYoutube=function(){return this.isIFrame()&&!!this.el.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/)},Player.prototype.isVimeo=function(){return this.isIFrame()&&!!this.el.src.match(/vimeo\.com\/video\/.*/)},Player.prototype.enableApi=function(){var this$1=this;if(this.ready)return this.ready;var poller,youtube=this.isYoutube(),vimeo=this.isVimeo();return youtube||vimeo?this.ready=new Promise$1(function(resolve){var cb;once(this$1.el,"load",function(){if(youtube){var listener=function(){return post(this$1.el,{event:"listening",id:this$1.id})};poller=setInterval(listener,100),listener()}}),(cb=function(data$$1){return youtube&&data$$1.id===this$1.id&&"onReady"===data$$1.event||vimeo&&Number(data$$1.player_id)===this$1.id},new Promise$1(function(resolve){once(window,"message",function(_,data$$1){return resolve(data$$1)},!1,function(ref){var data$$1=ref.data;if(data$$1&&isString(data$$1)){try{data$$1=JSON.parse(data$$1)}catch(e){return}return data$$1&&cb(data$$1)}})})).then(function(){resolve(),poller&&clearInterval(poller)}),attr(this$1.el,"src",this$1.el.src+(includes(this$1.el.src,"?")?"&":"?")+(youtube?"enablejsapi=1":"api=1&player_id="+this$1.id))}):Promise$1.resolve()},Player.prototype.play=function(){var this$1=this;if(this.isVideo())if(this.isIFrame())this.enableApi().then(function(){return post(this$1.el,{func:"playVideo",method:"play"})});else if(this.isHTML5())try{var promise=this.el.play();promise&&promise.catch(noop)}catch(e){}},Player.prototype.pause=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"pauseVideo",method:"pause"})}):this.isHTML5()&&this.el.pause())},Player.prototype.mute=function(){var this$1=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return post(this$1.el,{func:"mute",method:"setVolume",value:0})}):this.isHTML5()&&(this.el.muted=!0,attr(this.el,"muted","")))};var clickTimeout,swipeTimeout,tapTimeout,clicked,touch={};function cancelAll(){clickTimeout&&clearTimeout(clickTimeout),swipeTimeout&&clearTimeout(swipeTimeout),tapTimeout&&clearTimeout(tapTimeout),clickTimeout=swipeTimeout=tapTimeout=null,touch={}}ready(function(){on(document,"click",function(){return clicked=!0},!0),on(document,pointerDown,function(e){var target=e.target,ref=getPos$1(e),x=ref.x,y=ref.y,now=Date.now(),type=getType(e.type);touch.type&&touch.type!==type||(touch.el="tagName"in target?target:target.parentNode,clickTimeout&&clearTimeout(clickTimeout),touch.x1=x,touch.y1=y,touch.last&&now-touch.last<=250&&(touch={}),touch.type=type,touch.last=now,clicked=e.button>0)}),on(document,pointerMove,function(e){if(!e.defaultPrevented){var ref=getPos$1(e),x=ref.x,y=ref.y;touch.x2=x,touch.y2=y}}),on(document,pointerUp,function(ref){var type=ref.type,target=ref.target;touch.type===getType(type)&&(touch.x2&&Math.abs(touch.x1-touch.x2)>30||touch.y2&&Math.abs(touch.y1-touch.y2)>30?swipeTimeout=setTimeout(function(){var ref,x1,x2,y1,y2;touch.el&&(trigger(touch.el,"swipe"),trigger(touch.el,"swipe"+(x1=(ref=touch).x1,x2=ref.x2,y1=ref.y1,y2=ref.y2,Math.abs(x1-x2)>=Math.abs(y1-y2)?x1-x2>0?"Left":"Right":y1-y2>0?"Up":"Down"))),touch={}}):"last"in touch?(tapTimeout=setTimeout(function(){return trigger(touch.el,"tap")}),touch.el&&"mouseup"!==type&&within(target,touch.el)&&(clickTimeout=setTimeout(function(){clickTimeout=null,touch.el&&!clicked&&trigger(touch.el,"click"),touch={}},350))):touch={})}),on(document,"touchcancel",cancelAll),on(window,"scroll",cancelAll)});var touching=!1;function isTouch(e){return touching||"touch"===e.pointerType}function getPos$1(e){var touches=e.touches,changedTouches=e.changedTouches,ref=touches&&touches[0]||changedTouches&&changedTouches[0]||e;return{x:ref.pageX,y:ref.pageY}}function getType(type){return type.slice(0,5)}function getComponentName(attribute){return!(!startsWith(attribute,"uk-")&&!startsWith(attribute,"data-uk-"))&&camelize(attribute.replace("data-uk-","").replace("uk-",""))}on(document,"touchstart",function(){return touching=!0},!0),on(document,"click",function(){touching=!1}),on(document,"touchcancel",function(){return touching=!1},!0);var UIkit=function(options){this._init(options)};UIkit.util=Object.freeze({ajax:ajax,getImage:getImage,transition:transition,Transition:Transition,animate:animate,Animation:Animation,attr:attr,hasAttr:hasAttr,removeAttr:removeAttr,filterAttr:filterAttr,data:data,addClass:addClass,removeClass:removeClass,removeClasses:removeClasses,replaceClass:replaceClass,hasClass:hasClass,toggleClass:toggleClass,$:$,$$:$$,positionAt:positionAt,offset:offset,position:position,height:height,width:width,flipPosition:flipPosition,isInView:isInView,scrolledOver:scrolledOver,isReady:isReady,ready:ready,index:index,getIndex:getIndex,empty:empty,html:html,prepend:function(parent,element){return(parent=toNode(parent)).hasChildNodes()?insertNodes(element,function(element){return parent.insertBefore(element,parent.firstChild)}):append(parent,element)},append:append,before:before,after:after,remove:remove,wrapAll:wrapAll,wrapInner:wrapInner,unwrap:unwrap,fragment:fragment,apply:apply,isRtl:isRtl,hasTouch:hasTouch,pointerDown:pointerDown,pointerMove:pointerMove,pointerUp:pointerUp,pointerEnter:pointerEnter,pointerLeave:pointerLeave,on:on,off:off,once:once,trigger:trigger,createEvent:createEvent,toEventTargets:toEventTargets,preventClick:preventClick,fastdom:fastdom,isVoidElement:isVoidElement,isVisible:isVisible,selInput:selInput,isInput:isInput,filter:filter,within:within,bind:bind,hasOwn:hasOwn,hyphenate:hyphenate,camelize:camelize,ucfirst:ucfirst,startsWith:startsWith,endsWith:endsWith,includes:includes,isArray:isArray,isFunction:isFunction,isObject:isObject,isPlainObject:isPlainObject,isWindow:isWindow,isDocument:isDocument,isJQuery:isJQuery,isNode:isNode,isNodeCollection:isNodeCollection,isBoolean:isBoolean,isString:isString,isNumber:isNumber,isNumeric:isNumeric,isUndefined:isUndefined,toBoolean:toBoolean,toNumber:toNumber,toFloat:toFloat,toNode:toNode,toNodes:toNodes,toList:toList,toMs:toMs,swap:swap,assign:assign,each:each,sortBy:sortBy,clamp:clamp,noop:noop,intersectRect:intersectRect,pointInRect:pointInRect,Dimensions:Dimensions,MouseTracker:MouseTracker,mergeOptions:mergeOptions,parseOptions:parseOptions,Player:Player,Promise:Promise$1,Deferred:Deferred,query:query,queryAll:queryAll,find:find,findAll:findAll,matches:matches,closest:closest,parents:parents,escape:escape,css:css,getStyles:getStyles,getStyle:getStyle,getCssVar:getCssVar,propName:propName,isTouch:isTouch,getPos:getPos$1}),UIkit.data="__uikit__",UIkit.prefix="uk-",UIkit.options={},function(UIkit){var container,DATA=UIkit.data;function update(data$$1,e){if(data$$1)for(var name in data$$1)data$$1[name]._isReady&&data$$1[name]._callUpdate(e)}UIkit.use=function(plugin){if(!plugin.installed)return plugin.call(null,this),plugin.installed=!0,this},UIkit.mixin=function(mixin,component){component=(isString(component)?UIkit.component(component):component)||this,(mixin=mergeOptions({},mixin)).mixins=component.options.mixins,delete component.options.mixins,component.options=mergeOptions(mixin,component.options)},UIkit.extend=function(options){options=options||{};var Sub=function(options){this._init(options)};return(Sub.prototype=Object.create(this.prototype)).constructor=Sub,Sub.options=mergeOptions(this.options,options),Sub.super=this,Sub.extend=this.extend,Sub},UIkit.update=function(element,e){e=createEvent(e||"update"),function(element){for(var path=[];element&&element!==document.body&&element.parentNode;)element=element.parentNode,path.unshift(element);return path}(element=element?toNode(element):document.body).map(function(element){return update(element[DATA],e)}),apply(element,function(element){return update(element[DATA],e)})},Object.defineProperty(UIkit,"container",{get:function(){return container||document.body},set:function(element){container=$(element)}})}(UIkit),function(UIkit){UIkit.prototype._callHook=function(hook){var this$1=this,handlers=this.$options[hook];handlers&&handlers.forEach(function(handler){return handler.call(this$1)})},UIkit.prototype._callConnected=function(){var this$1=this;this._connected||(this._data={},this._initProps(),this._callHook("beforeConnect"),this._connected=!0,this._initEvents(),this._initObserver(),this._callHook("connected"),this._isReady||ready(function(){return this$1._callReady()}),this._callUpdate())},UIkit.prototype._callDisconnected=function(){this._connected&&(this._callHook("beforeDisconnect"),this._observer&&(this._observer.disconnect(),this._observer=null),this._unbindEvents(),this._callHook("disconnected"),this._connected=!1)},UIkit.prototype._callReady=function(){this._isReady||(this._isReady=!0,this._callHook("ready"),this._resetComputeds(),this._callUpdate())},UIkit.prototype._callUpdate=function(e){var this$1=this,type=(e=createEvent(e||"update")).type;includes(["update","load","resize"],type)&&this._resetComputeds();var updates=this.$options.update,ref=this._frames,reads=ref.reads,writes=ref.writes;updates&&updates.forEach(function(ref,i){var read=ref.read,write=ref.write,events=ref.events;("update"===type||includes(events,type))&&(read&&!includes(fastdom.reads,reads[i])&&(reads[i]=fastdom.read(function(){var result=this$1._connected&&read.call(this$1,this$1._data,e);!1===result&&write?(fastdom.clear(writes[i]),delete writes[i]):isPlainObject(result)&&assign(this$1._data,result),delete reads[i]})),write&&!includes(fastdom.writes,writes[i])&&(writes[i]=fastdom.write(function(){this$1._connected&&write.call(this$1,this$1._data,e),delete writes[i]})))})}}(UIkit),function(UIkit){var uid=0;function getProps(opts,name){var data$$1={},args=opts.args;void 0===args&&(args=[]);var props=opts.props;void 0===props&&(props={});var el=opts.el;if(!props)return data$$1;for(var key in props){var prop=hyphenate(key);if(hasAttr(el,prop)){var value=coerce(props[key],attr(el,prop));if("target"===prop&&(!value||startsWith(value,"_")))continue;data$$1[key]=value}}var options=parseOptions(data(el,name),args);for(var key$1 in options){var prop$1=camelize(key$1);void 0!==props[prop$1]&&(data$$1[prop$1]=coerce(props[prop$1],options[key$1]))}return data$$1}function registerComputed(component,key,cb){Object.defineProperty(component,key,{enumerable:!0,get:function(){var _computeds=component._computeds,$props=component.$props,$el=component.$el;return hasOwn(_computeds,key)||(_computeds[key]=cb.call(component,$props,$el)),_computeds[key]},set:function(value){component._computeds[key]=value}})}function registerEvent(component,event,key){isPlainObject(event)||(event={name:key,handler:event});var listener,name=event.name,el=event.el,handler=event.handler,capture=event.capture,delegate=event.delegate,filter$$1=event.filter,self=event.self;el=isFunction(el)?el.call(component):el||component.$el,isArray(el)?el.forEach(function(el){return registerEvent(component,assign({},event,{el:el}),key)}):!el||filter$$1&&!filter$$1.call(component)||(listener=isString(handler)?component[handler]:bind(handler,component),handler=function(e){return isArray(e.detail)?listener.apply(void 0,[e].concat(e.detail)):listener(e)},self&&(handler=function(handler){return function(e){if(e.target===e.currentTarget||e.target===e.current)return handler.call(null,e)}}(handler)),component._events.push(on(el,name,delegate?isString(delegate)?delegate:delegate.call(component):null,handler,capture)))}function notIn(options,key){return options.every(function(arr){return!arr||!hasOwn(arr,key)})}function coerce(type,value){return type===Boolean?toBoolean(value):type===Number?toNumber(value):"list"===type?toList(value):"media"===type?function(value){if(isString(value))if("@"===value[0]){var name="media-"+value.substr(1);value=toFloat(getCssVar(name))}else if(isNaN(value))return value;return!(!value||isNaN(value))&&"(min-width: "+value+"px)"}(value):type?type(value):value}UIkit.prototype._init=function(options){(options=options||{}).data=function(ref,ref$1){var data$$1=ref.data,args=(ref.el,ref$1.args),props=ref$1.props;if(void 0===props&&(props={}),data$$1=isArray(data$$1)?args&&args.length?data$$1.slice(0,args.length).reduce(function(data$$1,value,index$$1){return isPlainObject(value)?assign(data$$1,value):data$$1[args[index$$1]]=value,data$$1},{}):void 0:data$$1)for(var key in data$$1)isUndefined(data$$1[key])?delete data$$1[key]:data$$1[key]=props[key]?coerce(props[key],data$$1[key]):data$$1[key];return data$$1}(options,this.constructor.options),this.$options=mergeOptions(this.constructor.options,options,this),this.$el=null,this.$props={},this._frames={reads:{},writes:{}},this._events=[],this._uid=uid++,this._initData(),this._initMethods(),this._initComputeds(),this._callHook("created"),options.el&&this.$mount(options.el)},UIkit.prototype._initData=function(){var data$$1=this.$options.data;for(var key in void 0===data$$1&&(data$$1={}),data$$1)this.$props[key]=this[key]=data$$1[key]},UIkit.prototype._initMethods=function(){var methods=this.$options.methods;if(methods)for(var key in methods)this[key]=bind(methods[key],this)},UIkit.prototype._initComputeds=function(){var computed=this.$options.computed;if(this._resetComputeds(),computed)for(var key in computed)registerComputed(this,key,computed[key])},UIkit.prototype._resetComputeds=function(){this._computeds={}},UIkit.prototype._initProps=function(props){var key;for(key in this._resetComputeds(),props=props||getProps(this.$options,this.$name))isUndefined(props[key])||(this.$props[key]=props[key]);var exclude=[this.$options.computed,this.$options.methods];for(key in this.$props)key in props&¬In(exclude,key)&&(this[key]=this.$props[key])},UIkit.prototype._initEvents=function(){var this$1=this,events=this.$options.events;events&&events.forEach(function(event){if(hasOwn(event,"handler"))registerEvent(this$1,event);else for(var key in event)registerEvent(this$1,event[key],key)})},UIkit.prototype._unbindEvents=function(){this._events.forEach(function(unbind){return unbind()}),this._events=[]},UIkit.prototype._initObserver=function(){var this$1=this,ref=this.$options,attrs=ref.attrs,props=ref.props,el=ref.el;!this._observer&&props&&attrs&&(attrs=isArray(attrs)?attrs:Object.keys(props).map(function(key){return hyphenate(key)}),this._observer=new MutationObserver(function(){var data$$1=getProps(this$1.$options,this$1.$name);attrs.some(function(key){return!isUndefined(data$$1[key])&&data$$1[key]!==this$1.$props[key]})&&this$1.$reset()}),this._observer.observe(el,{attributes:!0,attributeFilter:attrs.concat([this.$name,"data-"+this.$name])}))}}(UIkit),function(UIkit){var DATA=UIkit.data,components={};UIkit.component=function(name,options){if(!options)return isPlainObject(components[name])&&(components[name]=UIkit.extend(components[name])),components[name];UIkit[name]=function(element,data$$1){for(var i=arguments.length,argsArray=Array(i);i--;)argsArray[i]=arguments[i];var component=UIkit.component(name);return isPlainObject(element)?new component({data:element}):component.options.functional?new component({data:[].concat(argsArray)}):element&&element.nodeType?init(element):$$(element).map(init)[0];function init(element){var instance=UIkit.getComponent(element,name);if(instance){if(!data$$1)return instance;instance.$destroy()}return new component({el:element,data:data$$1})}};var opt=isPlainObject(options)?assign({},options):options.options;if(opt.name=name,opt.install&&opt.install(UIkit,opt,name),UIkit._initialized&&!opt.functional){var id=hyphenate(name);fastdom.read(function(){return UIkit[name]("[uk-"+id+"],[data-uk-"+id+"]")})}return components[name]=isPlainObject(options)?opt:options},UIkit.getComponents=function(element){return element&&element[DATA]||{}},UIkit.getComponent=function(element,name){return UIkit.getComponents(element)[name]},UIkit.connect=function(node){if(node[DATA])for(var name in node[DATA])node[DATA][name]._callConnected();for(var i=0;i<node.attributes.length;i++){var name$1=getComponentName(node.attributes[i].name);name$1&&name$1 in components&&UIkit[name$1](node)}},UIkit.disconnect=function(node){for(var name in node[DATA])node[DATA][name]._callDisconnected()}}(UIkit),function(UIkit){var DATA=UIkit.data;UIkit.prototype.$mount=function(el){var name=this.$options.name;el[DATA]||(el[DATA]={}),el[DATA][name]||(el[DATA][name]=this,this.$el=this.$options.el=this.$options.el||el,this._callHook("init"),within(el,document)&&this._callConnected())},UIkit.prototype.$emit=function(e){this._callUpdate(e)},UIkit.prototype.$reset=function(){this._callDisconnected(),this._callConnected()},UIkit.prototype.$destroy=function(removeEl){void 0===removeEl&&(removeEl=!1);var ref=this.$options,el=ref.el,name=ref.name;el&&this._callDisconnected(),this._callHook("destroy"),el&&el[DATA]&&(delete el[DATA][name],Object.keys(el[DATA]).length||delete el[DATA],removeEl&&remove(this.$el))},UIkit.prototype.$create=function(component,element,data$$1){return UIkit[component](element,data$$1)},UIkit.prototype.$update=UIkit.update,UIkit.prototype.$getComponent=UIkit.getComponent;var names={};Object.defineProperties(UIkit.prototype,{$container:Object.getOwnPropertyDescriptor(UIkit,"container"),$name:{get:function(){var name=this.$options.name;return names[name]||(names[name]=UIkit.prefix+hyphenate(name)),names[name]}}})}(UIkit);var Class={connected:function(){addClass(this.$el,this.$name)}},Togglable={props:{cls:Boolean,animation:"list",duration:Number,origin:String,transition:String,queued:Boolean},data:{cls:!1,animation:[!1],duration:200,origin:!1,transition:"linear",queued:!1,initProps:{overflow:"",height:"",paddingTop:"",paddingBottom:"",marginTop:"",marginBottom:""},hideProps:{overflow:"hidden",height:0,paddingTop:0,paddingBottom:0,marginTop:0,marginBottom:0}},computed:{hasAnimation:function(ref){return!!ref.animation[0]},hasTransition:function(ref){var animation=ref.animation;return this.hasAnimation&&!0===animation[0]}},methods:{toggleElement:function(targets,show,animate$$1){var this$1=this;return new Promise$1(function(resolve){var p,all=function(targets){return Promise$1.all(targets.map(function(el){return this$1._toggleElement(el,show,animate$$1)}))},toggled=(targets=toNodes(targets)).filter(function(el){return this$1.isToggled(el)}),untoggled=targets.filter(function(el){return!includes(toggled,el)});if(this$1.queued&&isUndefined(animate$$1)&&isUndefined(show)&&this$1.hasAnimation&&!(targets.length<2)){var body=document.body,scroll=body.scrollTop,el=toggled[0],inProgress=Animation.inProgress(el)&&hasClass(el,"uk-animation-leave")||Transition.inProgress(el)&&"0px"===el.style.height;p=all(toggled),inProgress||(p=p.then(function(){var p=all(untoggled);return body.scrollTop=scroll,p}))}else p=all(untoggled.concat(toggled));p.then(resolve,noop)})},toggleNow:function(targets,show){var this$1=this;return new Promise$1(function(resolve){return Promise$1.all(toNodes(targets).map(function(el){return this$1._toggleElement(el,show,!1)})).then(resolve,noop)})},isToggled:function(el){var nodes=toNodes(el||this.$el);return this.cls?hasClass(nodes,this.cls.split(" ")[0]):!hasAttr(nodes,"hidden")},updateAria:function(el){!1===this.cls&&attr(el,"aria-hidden",!this.isToggled(el))},_toggleElement:function(el,show,animate$$1){var this$1=this;if(show=isBoolean(show)?show:Animation.inProgress(el)?hasClass(el,"uk-animation-leave"):Transition.inProgress(el)?"0px"===el.style.height:!this.isToggled(el),!trigger(el,"before"+(show?"show":"hide"),[this]))return Promise$1.reject();var promise=(!1!==animate$$1&&this.hasAnimation?this.hasTransition?this._toggleHeight:this._toggleAnimation:this._toggleImmediate)(el,show);return trigger(el,show?"show":"hide",[this]),promise.then(function(){trigger(el,show?"shown":"hidden",[this$1]),this$1.$update(el)})},_toggle:function(el,toggled){var changed;el&&(this.cls?(changed=includes(this.cls," ")||Boolean(toggled)!==hasClass(el,this.cls))&&toggleClass(el,this.cls,includes(this.cls," ")?void 0:toggled):(changed=Boolean(toggled)===hasAttr(el,"hidden"))&&attr(el,"hidden",toggled?null:""),$$("[autofocus]",el).some(function(el){return isVisible(el)&&(el.focus()||!0)}),this.updateAria(el),changed&&this.$update(el))},_toggleImmediate:function(el,show){return this._toggle(el,show),Promise$1.resolve()},_toggleHeight:function(el,show){var this$1=this,inProgress=Transition.inProgress(el),inner=el.hasChildNodes?toFloat(css(el.firstElementChild,"marginTop"))+toFloat(css(el.lastElementChild,"marginBottom")):0,currentHeight=isVisible(el)?height(el)+(inProgress?0:inner):0;Transition.cancel(el),this.isToggled(el)||this._toggle(el,!0),height(el,""),fastdom.flush();var endHeight=height(el)+(inProgress?0:inner);return height(el,currentHeight),(show?Transition.start(el,assign({},this.initProps,{overflow:"hidden",height:endHeight}),Math.round(this.duration*(1-currentHeight/endHeight)),this.transition):Transition.start(el,this.hideProps,Math.round(this.duration*(currentHeight/endHeight)),this.transition).then(function(){return this$1._toggle(el,!1)})).then(function(){return css(el,this$1.initProps)})},_toggleAnimation:function(el,show){var this$1=this;return Animation.cancel(el),show?(this._toggle(el,!0),Animation.in(el,this.animation[0],this.duration,this.origin)):Animation.out(el,this.animation[1]||this.animation[0],this.duration,this.origin).then(function(){return this$1._toggle(el,!1)})}}},Accordion={mixins:[Class,Togglable],props:{targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,transition:String},data:{targets:"> *",active:!1,animation:[!0],collapsible:!0,multiple:!1,clsOpen:"uk-open",toggle:"> .uk-accordion-title",content:"> .uk-accordion-content",transition:"ease"},computed:{items:function(ref,$el){return $$(ref.targets,$el)}},events:[{name:"click",delegate:function(){return this.targets+" "+this.$props.toggle},handler:function(e){e.preventDefault(),this.toggle(index($$(this.targets+" "+this.$props.toggle,this.$el),e.current))}}],connected:function(){if(!1!==this.active){var active=this.items[Number(this.active)];active&&!hasClass(active,this.clsOpen)&&this.toggle(active,!1)}},update:function(){var this$1=this;this.items.forEach(function(el){return this$1._toggleImmediate($(this$1.content,el),hasClass(el,this$1.clsOpen))});var active=!this.collapsible&&!hasClass(this.items,this.clsOpen)&&this.items[0];active&&this.toggle(active,!1)},methods:{toggle:function(item,animate$$1){var this$1=this,index$$1=getIndex(item,this.items),active=filter(this.items,"."+this.clsOpen);(item=this.items[index$$1])&&[item].concat(!this.multiple&&!includes(active,item)&&active||[]).forEach(function(el){var isItem=el===item,state=isItem&&!hasClass(el,this$1.clsOpen);if(state||!isItem||this$1.collapsible||!(active.length<2)){toggleClass(el,this$1.clsOpen,state);var content=el._wrapper?el._wrapper.firstElementChild:$(this$1.content,el);el._wrapper||(el._wrapper=wrapAll(content,"<div>"),attr(el._wrapper,"hidden",state?"":null)),this$1._toggleImmediate(content,!0),this$1.toggleElement(el._wrapper,state,animate$$1).then(function(){hasClass(el,this$1.clsOpen)===state&&(state||this$1._toggleImmediate(content,!1),el._wrapper=null,unwrap(content))})}})}}},Alert={attrs:!0,mixins:[Class,Togglable],args:"animation",props:{close:String},data:{animation:[!0],selClose:".uk-alert-close",duration:150,hideProps:assign({opacity:0},Togglable.data.hideProps)},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.close()}}],methods:{close:function(){var this$1=this;this.toggleElement(this.$el).then(function(){return this$1.$destroy(!0)})}}};function Core(UIkit){ready(function(){var scroll=0,started=0;if(on(window,"load resize",function(e){return UIkit.update(null,e)}),on(window,"scroll",function(e){e.dir=scroll<=window.pageYOffset?"down":"up",e.pageYOffset=scroll=window.pageYOffset,UIkit.update(null,e)},{capture:!0,passive:!1}),on(document,"animationstart",function(ref){var target=ref.target;(css(target,"animationName")||"").match(/^uk-.*(left|right)/)&&(started++,css(document.body,"overflowX","hidden"),setTimeout(function(){--started||css(document.body,"overflowX","")},toMs(css(target,"animationDuration"))+100))},!0),hasTouch){var cls="uk-hover";on(document,"tap",function(ref){var target=ref.target;return $$("."+cls).forEach(function(el){return!within(target,el)&&removeClass(el,cls)})}),Object.defineProperty(UIkit,"hoverSelector",{set:function(selector){on(document,"tap",selector,function(ref){return addClass(ref.current,cls)})}}),UIkit.hoverSelector=".uk-animation-toggle, .uk-transition-toggle, [uk-hover]"}})}var active,registered,Video={args:"autoplay",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},computed:{inView:function(ref){return"inview"===ref.autoplay}},connected:function(){this.inView&&!hasAttr(this.$el,"preload")&&(this.$el.preload="none")},ready:function(){this.player=new Player(this.$el),this.automute&&this.player.mute()},update:[{read:function(_,ref){var type=ref.type;return!(!this.player||!("scroll"!==type&&"resize"!==type||this.inView))&&{visible:isVisible(this.$el)&&"hidden"!==css(this.$el,"visibility"),inView:this.inView&&isInView(this.$el)}},write:function(ref){var visible=ref.visible,inView=ref.inView;!visible||this.inView&&!inView?this.player.pause():(!0===this.autoplay||this.inView&&inView)&&this.player.play()},events:["load","resize","scroll"]}]},Cover={mixins:[Class,Video],props:{width:Number,height:Number},data:{automute:!0},update:{write:function(){var el=this.$el;if(isVisible(el)){var ref=el.parentNode,height$$1=ref.offsetHeight,width$$1=ref.offsetWidth;css(css(el,{width:"",height:""}),Dimensions.cover({width:this.width||el.clientWidth,height:this.height||el.clientHeight},{width:width$$1+(width$$1%2?1:0),height:height$$1+(height$$1%2?1:0)}))}},events:["load","resize"]},events:{loadedmetadata:function(){this.$emit()}}},Position={props:{pos:String,offset:null,flip:Boolean,clsPos:String},data:{pos:"bottom-"+(isRtl?"right":"left"),flip:!0,offset:!1,clsPos:""},computed:{pos:function(ref){var pos=ref.pos;return(pos+(includes(pos,"-")?"":"-center")).split("-")},dir:function(){return this.pos[0]},align:function(){return this.pos[1]}},methods:{positionAt:function(element,target,boundary){var node;removeClasses(element,this.clsPos+"-(top|bottom|left|right)(-[a-z]+)?"),css(element,{top:"",left:""});var offset$$1=this.offset;offset$$1=isNumeric(offset$$1)?offset$$1:(node=$(offset$$1))?offset(node)["x"===axis?"left":"top"]-offset(target)["x"===axis?"right":"bottom"]:0;var axis=this.getAxis(),ref$1=positionAt(element,target,"x"===axis?flipPosition(this.dir)+" "+this.align:this.align+" "+flipPosition(this.dir),"x"===axis?this.dir+" "+this.align:this.align+" "+this.dir,"x"===axis?""+("left"===this.dir?-offset$$1:offset$$1):" "+("top"===this.dir?-offset$$1:offset$$1),null,this.flip,boundary).target,x=ref$1.x,y=ref$1.y;this.dir="x"===axis?x:y,this.align="x"===axis?y:x,toggleClass(element,this.clsPos+"-"+this.dir+"-"+this.align,!1===this.offset)},getAxis:function(){return"top"===this.dir||"bottom"===this.dir?"y":"x"}}},Drop={mixins:[Position,Togglable],args:"pos",props:{mode:"list",toggle:Boolean,boundary:Boolean,boundaryAlign:Boolean,delayShow:Number,delayHide:Number,clsDrop:String},data:{mode:["click","hover"],toggle:"- *",boundary:window,boundaryAlign:!1,delayShow:0,delayHide:800,clsDrop:!1,hoverIdle:200,animation:["uk-animation-fade"],cls:"uk-open"},computed:{boundary:function(ref,$el){return query(ref.boundary,$el)},clsDrop:function(ref){return ref.clsDrop||"uk-"+this.$options.name},clsPos:function(){return this.clsDrop}},init:function(){this.tracker=new MouseTracker},connected:function(){addClass(this.$el,this.clsDrop);var toggle=this.$props.toggle;this.toggle=toggle&&this.$create("toggle",query(toggle,this.$el),{target:this.$el,mode:this.mode}),this.updateAria(this.$el)},events:[{name:"click",delegate:function(){return"."+this.clsDrop+"-close"},handler:function(e){e.preventDefault(),this.hide(!1)}},{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(e){if(!e.defaultPrevented){var id=e.target.hash;id||e.preventDefault(),id&&within(id,this.$el)||this.hide(!1)}}},{name:"beforescroll",handler:function(){this.hide(!1)}},{name:"toggle",self:!0,handler:function(e,toggle){e.preventDefault(),this.isToggled()?this.hide(!1):this.show(toggle,!1)}},{name:pointerEnter,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||(active&&active!==this&&active.toggle&&includes(active.toggle.mode,"hover")&&!within(e.target,active.toggle.$el)&&!pointInRect({x:e.pageX,y:e.pageY},offset(active.$el))&&active.hide(!1),e.preventDefault(),this.show(this.toggle))}},{name:"toggleshow",handler:function(e,toggle){toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.show(toggle||this.toggle))}},{name:"togglehide "+pointerLeave,handler:function(e,toggle){isTouch(e)||toggle&&!includes(toggle.target,this.$el)||(e.preventDefault(),this.toggle&&includes(this.toggle.mode,"hover")&&this.hide())}},{name:"beforeshow",self:!0,handler:function(){this.clearTimers(),Animation.cancel(this.$el),this.position()}},{name:"show",self:!0,handler:function(){this.tracker.init(),this.toggle&&(addClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","true")),function(){if(registered)return;registered=!0,on(document,"click",function(ref){var prev,target=ref.target,defaultPrevented=ref.defaultPrevented;if(!defaultPrevented)for(;active&&active!==prev&&!within(target,active.$el)&&(!active.toggle||!within(target,active.toggle.$el));)prev=active,active.hide(!1)})}()}},{name:"beforehide",self:!0,handler:function(){this.clearTimers()}},{name:"hide",handler:function(ref){var target=ref.target;this.$el===target?(active=this.isActive()?null:active,this.toggle&&(removeClass(this.toggle.$el,this.cls),attr(this.toggle.$el,"aria-expanded","false"),this.toggle.$el.blur(),$$("a, button",this.toggle.$el).forEach(function(el){return el.blur()})),this.tracker.cancel()):active=null===active&&within(target,this.$el)&&this.isToggled()?this:active}}],update:{write:function(){this.isToggled()&&!Animation.inProgress(this.$el)&&this.position()},events:["resize"]},methods:{show:function(toggle,delay){var this$1=this;void 0===delay&&(delay=!0);var show=function(){return!this$1.isToggled()&&this$1.toggleElement(this$1.$el,!0)},tryShow=function(){if(this$1.toggle=toggle||this$1.toggle,this$1.clearTimers(),!this$1.isActive())if(delay&&active&&active!==this$1&&active.isDelaying)this$1.showTimer=setTimeout(this$1.show,10);else{if(this$1.isParentOf(active)){if(!active.hideTimer)return;active.hide(!1)}else if(active&&!this$1.isChildOf(active)&&!this$1.isParentOf(active))for(var prev;active&&active!==prev&&!this$1.isChildOf(active);)prev=active,active.hide(!1);delay&&this$1.delayShow?this$1.showTimer=setTimeout(show,this$1.delayShow):show(),active=this$1}};toggle&&this.toggle&&toggle.$el!==this.toggle.$el?(once(this.$el,"hide",tryShow),this.hide(!1)):tryShow()},hide:function(delay){var this$1=this;void 0===delay&&(delay=!0);var hide=function(){return this$1.toggleNow(this$1.$el,!1)};this.clearTimers(),this.isDelaying=this.tracker.movesTo(this.$el),delay&&this.isDelaying?this.hideTimer=setTimeout(this.hide,this.hoverIdle):delay&&this.delayHide?this.hideTimer=setTimeout(hide,this.delayHide):hide()},clearTimers:function(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null,this.isDelaying=!1},isActive:function(){return active===this},isChildOf:function(drop){return drop&&drop!==this&&within(this.$el,drop.$el)},isParentOf:function(drop){return drop&&drop!==this&&within(drop.$el,this.$el)},position:function(){removeClasses(this.$el,this.clsDrop+"-(stack|boundary)"),css(this.$el,{top:"",left:"",display:"block"}),toggleClass(this.$el,this.clsDrop+"-boundary",this.boundaryAlign);var boundary=offset(this.boundary),alignTo=this.boundaryAlign?boundary:offset(this.toggle.$el);if("justify"===this.align){var prop="y"===this.getAxis()?"width":"height";css(this.$el,prop,alignTo[prop])}else this.$el.offsetWidth>Math.max(boundary.right-alignTo.left,alignTo.right-boundary.left)&&addClass(this.$el,this.clsDrop+"-stack");this.positionAt(this.$el,this.boundaryAlign?this.boundary:this.toggle.$el,this.boundary),css(this.$el,"display","")}}};var Dropdown={extends:Drop},FormCustom={mixins:[Class],args:"target",props:{target:Boolean},data:{target:!1},computed:{input:function(_,$el){return $(selInput,$el)},state:function(){return this.input.nextElementSibling},target:function(ref,$el){var target=ref.target;return target&&(!0===target&&this.input.parentNode===$el&&this.input.nextElementSibling||query(target,$el))}},update:function(){var target=this.target,input=this.input;if(target){var option,prop=isInput(target)?"value":"textContent",prev=target[prop],value=input.files&&input.files[0]?input.files[0].name:matches(input,"select")&&(option=$$("option",input).filter(function(el){return el.selected})[0])?option.textContent:input.value;prev!==value&&(target[prop]=value)}},events:[{name:"focusin focusout mouseenter mouseleave",delegate:selInput,handler:function(ref){var type=ref.type;ref.current===this.input&&toggleClass(this.state,"uk-"+(includes(type,"focus")?"focus":"hover"),includes(["focusin","mouseenter"],type))}},{name:"change",handler:function(){this.$emit()}}]},Gif={update:{read:function(data$$1){var inview=isInView(this.$el);if(!inview||data$$1.isInView===inview)return!1;data$$1.isInView=inview},write:function(){this.$el.src=this.$el.src},events:["scroll","load","resize"]}},Margin={props:{margin:String,firstColumn:Boolean},data:{margin:"uk-margin-small-top",firstColumn:"uk-first-column"},update:{read:function(data$$1){var items=this.$el.children;if(!items.length||!isVisible(this.$el))return data$$1.rows=[[]];data$$1.rows=getRows(items),data$$1.stacks=!data$$1.rows.some(function(row){return row.length>1})},write:function(ref){var this$1=this;ref.rows.forEach(function(row,i){return row.forEach(function(el,j){toggleClass(el,this$1.margin,0!==i),toggleClass(el,this$1.firstColumn,0===j)})})},events:["load","resize"]}};function getRows(items){for(var rows=[[]],i=0;i<items.length;i++){var el=items[i],dim=getOffset(el);if(dim.height)for(var j=rows.length-1;j>=0;j--){var row=rows[j];if(!row[0]){row.push(el);break}var leftDim=getOffset(row[0]);if(dim.top>=leftDim.bottom-1){rows.push([el]);break}if(dim.bottom>leftDim.top){if(dim.left<leftDim.left&&!isRtl){row.unshift(el);break}row.push(el);break}if(0===j){rows.unshift([el]);break}}}return rows}function getOffset(element){var offsetTop=element.offsetTop,offsetLeft=element.offsetLeft,offsetHeight=element.offsetHeight;return{top:offsetTop,left:offsetLeft,height:offsetHeight,bottom:offsetTop+offsetHeight}}var Grid={extends:Margin,mixins:[Class],attrs:!0,name:"grid",props:{masonry:Boolean,parallax:Number},data:{margin:"uk-grid-margin",clsStack:"uk-grid-stack",masonry:!1,parallax:0},computed:{parallax:function(ref){var parallax=ref.parallax;return Math.abs(parallax)}},connected:function(){this.masonry&&addClass(this.$el,"uk-flex-top uk-flex-wrap-top")},update:[{read:function(ref){var rows=ref.rows;(this.masonry||this.parallax)&&(rows=rows.map(function(elements){return sortBy(elements,"offsetLeft")}));var root,cls,nodes,node,translates=!1,elHeight=!1;if(this.masonry){var height$$1=0;translates=rows.reduce(function(translates,row,i){return translates[i]=row.map(function(_,j){return 0===i?0:toFloat(translates[i-1][j])+(height$$1-toFloat(rows[i-1][j]&&rows[i-1][j].offsetHeight))}),height$$1=row.reduce(function(height$$1,el){return Math.max(height$$1,el.offsetHeight)},0),translates},[]),elHeight=function(rows){return Math.max.apply(Math,rows.reduce(function(sum,row){return row.forEach(function(el,i){return sum[i]=(sum[i]||0)+el.offsetHeight}),sum},[]))}(rows)+(root=this.$el,cls=this.margin,nodes=toNodes(root.children),toFloat((node=nodes.filter(function(el){return hasClass(el,cls)})[0])?css(node,"marginTop"):css(nodes[0],"paddingLeft"))*(rows.length-1))}return{rows:rows,translates:translates,height:elHeight}},write:function(ref){var rows=ref.rows,stacks=ref.stacks,height$$1=ref.height;toggleClass(this.$el,this.clsStack,stacks),css(this.$el,"paddingBottom",this.parallax&&rows.some(function(row){return row.length>1})?this.parallax:""),height$$1&&css(this.$el,"minHeight",height$$1)},events:["load","resize"]},{read:function(ref){var rows=ref.rows,height$$1=ref.height;return{scrolled:!(!this.parallax||!rows.some(function(row){return row.length>1}))&&scrolledOver(this.$el,height$$1?height$$1-height(this.$el):0)*this.parallax}},write:function(ref){var rows=ref.rows,scrolled=ref.scrolled,translates=ref.translates;(!1!==scrolled||translates)&&rows.forEach(function(row,i){return row.forEach(function(el,j){return css(el,"transform",scrolled||translates?"translateY("+((translates&&-translates[i][j])+(scrolled?j%2?scrolled:scrolled/8:0))+"px)":"")})})},events:["scroll","load","resize"]}]};var HeightMatch={args:"target",props:{target:String,row:Boolean},data:{target:"> *",row:!0},computed:{elements:function(ref,$el){return $$(ref.target,$el)}},update:{read:function(){var this$1=this;return css(this.elements,{minHeight:"",boxSizing:""}),{rows:this.row?getRows(this.elements).map(function(elements){return this$1.match(elements)}):[this.match(this.elements)]}},write:function(ref){ref.rows.forEach(function(ref){var height$$1=ref.height;return css(ref.elements,{minHeight:height$$1,boxSizing:"border-box"})})},events:["load","resize"]},methods:{match:function(elements){if(elements.length<2)return{};var heights=[],max=0;return elements.forEach(function(el){var height$$1=offset(el).height;max=Math.max(max,height$$1),heights.push(height$$1)}),elements=elements.filter(function(el,i){return heights[i]<max}),{height:max,elements:elements}}}},HeightViewport={props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},update:{write:function(){css(this.$el,"boxSizing","border-box");var minHeight,viewport=height(window),offsetTop=0;if(this.expand){css(this.$el,{height:"",minHeight:""});var diff=viewport-offsetHeight(document.documentElement);diff>0&&(minHeight=offsetHeight(this.$el)+diff)}else{var top=offset(this.$el).top;top<viewport/2&&this.offsetTop&&(offsetTop+=top),!0===this.offsetBottom?offsetTop+=offsetHeight(this.$el.nextElementSibling):isNumeric(this.offsetBottom)?offsetTop+=viewport/100*this.offsetBottom:this.offsetBottom&&endsWith(this.offsetBottom,"px")?offsetTop+=toFloat(this.offsetBottom):isString(this.offsetBottom)&&(offsetTop+=offsetHeight(query(this.offsetBottom,this.$el))),minHeight=offsetTop?"calc(100vh - "+offsetTop+"px)":"100vh"}if(minHeight){css(this.$el,{height:"",minHeight:minHeight});var elHeight=this.$el.offsetHeight;this.minHeight&&this.minHeight>elHeight&&css(this.$el,"minHeight",this.minHeight),viewport-offsetTop>=elHeight&&css(this.$el,"height",minHeight)}},events:["load","resize"]}};function offsetHeight(el){return el&&el.offsetHeight||0}var svgs={},SVG={attrs:!0,props:{id:String,icon:String,src:String,style:String,width:Number,height:Number,ratio:Number,class:String},data:{ratio:1,id:!1,exclude:["ratio","src","icon"],class:""},connected:function(){var assign$$1,this$1=this;if(this.class+=" uk-svg",!this.icon&&includes(this.src,"#")){var parts=this.src.split("#");parts.length>1&&(assign$$1=parts,this.src=assign$$1[0],this.icon=assign$$1[1])}this.svg=this.getSvg().then(function(svg){var el;if(isString(svg)?(this$1.icon&&includes(svg,"<symbol")&&(svg=function(svg,icon){if(!symbols[svg]){var match;for(symbols[svg]={};match=symbolRe.exec(svg);)symbols[svg][match[3]]='<svg xmlns="http://www.w3.org/2000/svg"'+match[1]+"svg>";symbolRe.lastIndex=0}return symbols[svg][icon]}(svg,this$1.icon)||svg),el=$(svg.substr(svg.indexOf("<svg")))):el=svg.cloneNode(!0),!el)return Promise$1.reject("SVG not found.");var dimensions=attr(el,"viewBox");for(var prop in dimensions&&(dimensions=dimensions.split(" "),this$1.width=this$1.$props.width||dimensions[2],this$1.height=this$1.$props.height||dimensions[3]),this$1.width*=this$1.ratio,this$1.height*=this$1.ratio,this$1.$options.props)this$1[prop]&&!includes(this$1.exclude,prop)&&attr(el,prop,this$1[prop]);this$1.id||removeAttr(el,"id"),this$1.width&&!this$1.height&&removeAttr(el,"height"),this$1.height&&!this$1.width&&removeAttr(el,"width");var root=this$1.$el;if(isVoidElement(root)||"CANVAS"===root.tagName){attr(root,{hidden:!0,id:null});var next=root.nextElementSibling;next&&el.isEqualNode(next)?el=next:after(root,el)}else{var last=root.lastElementChild;last&&el.isEqualNode(last)?el=last:append(root,el)}return this$1.svgEl=el,el},noop)},disconnected:function(){var this$1=this;isVoidElement(this.$el)&&attr(this.$el,{hidden:null,id:this.id||null}),this.svg&&this.svg.then(function(svg){return(!this$1._connected||svg!==this$1.svgEl)&&remove(svg)},noop),this.svg=this.svgEl=null},methods:{getSvg:function(){var this$1=this;return this.src?svgs[this.src]?svgs[this.src]:(svgs[this.src]=new Promise$1(function(resolve,reject){startsWith(this$1.src,"data:")?resolve(decodeURIComponent(this$1.src.split(",")[1])):ajax(this$1.src).then(function(xhr){return resolve(xhr.response)},function(){return reject("SVG not found.")})}),svgs[this.src]):Promise$1.reject()}}},symbolRe=/<symbol(.*?id=(['"])(.*?)\2[^]*?<\/)symbol>/g,symbols={};var parsed={},icons={spinner:'<svg width="30" height="30" viewBox="0 0 30 30" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" cx="15" cy="15" r="14"/></svg>',totop:'<svg width="18" height="10" viewBox="0 0 18 10" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 9 9 1 17 9 "/></svg>',marker:'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect x="9" y="4" width="1" height="11"/><rect x="4" y="9" width="11" height="1"/></svg>',"close-icon":'<svg width="14" height="14" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.1" x1="1" y1="1" x2="13" y2="13"/><line fill="none" stroke="#000" stroke-width="1.1" x1="13" y1="1" x2="1" y2="13"/></svg>',"close-large":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><line fill="none" stroke="#000" stroke-width="1.4" x1="1" y1="1" x2="19" y2="19"/><line fill="none" stroke="#000" stroke-width="1.4" x1="19" y1="1" x2="1" y2="19"/></svg>',"navbar-toggle-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><rect y="9" width="20" height="2"/><rect y="3" width="20" height="2"/><rect y="15" width="20" height="2"/></svg>',"overlay-icon":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><rect x="19" y="0" width="1" height="40"/><rect x="0" y="19" width="40" height="1"/></svg>',"pagination-next":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="1 1 6 6 1 11"/></svg>',"pagination-previous":'<svg width="7" height="12" viewBox="0 0 7 12" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.2" points="6 1 1 6 6 11"/></svg>',"search-icon":'<svg width="20" height="20" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="9" cy="9" r="7"/><path fill="none" stroke="#000" stroke-width="1.1" d="M14,14 L18,18 L14,14 Z"/></svg>',"search-large":'<svg width="40" height="40" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.8" cx="17.5" cy="17.5" r="16.5"/><line fill="none" stroke="#000" stroke-width="1.8" x1="38" y1="39" x2="29" y2="30"/></svg>',"search-navbar":'<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><circle fill="none" stroke="#000" stroke-width="1.1" cx="10.5" cy="10.5" r="9.5"/><line fill="none" stroke="#000" stroke-width="1.1" x1="23" y1="23" x2="17" y2="17"/></svg>',"slidenav-next":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="1.225,23 12.775,12 1.225,1 "/></svg>',"slidenav-next-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="4.002,38.547 22.527,20.024 4,1.5 "/></svg>',"slidenav-previous":'<svg width="14px" height="24px" viewBox="0 0 14 24" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="1.4" points="12.775,1 1.225,12 12.775,23 "/></svg>',"slidenav-previous-large":'<svg width="25px" height="40px" viewBox="0 0 25 40" xmlns="http://www.w3.org/2000/svg"><polyline fill="none" stroke="#000" stroke-width="2" points="20.527,1.5 2,20.024 20.525,38.547 "/></svg>'},Icon={install:function(UIkit){UIkit.icon.add=function(name,svg){var obj,added=isString(name)?((obj={})[name]=svg,obj):name;each(added,function(svg,name){icons[name]=svg,delete parsed[name]}),UIkit._initialized&&apply(document.body,function(el){return each(UIkit.getComponents(el),function(cmp){return cmp.$options.isIcon&&cmp.icon in added&&cmp.$reset()})})}},attrs:["icon","ratio"],mixins:[Class,SVG],args:"icon",props:["icon"],data:{exclude:["id","style","class","src","icon","ratio"]},isIcon:!0,connected:function(){addClass(this.$el,"uk-icon")},methods:{getSvg:function(){var icon=function(icon){if(!icons[icon])return null;parsed[icon]||(parsed[icon]=$(icons[icon].trim()));return parsed[icon]}(function(icon){return isRtl?swap(swap(icon,"left","right"),"previous","next"):icon}(this.icon));return icon?Promise$1.resolve(icon):Promise$1.reject("Icon not found.")}}},IconComponent={extends:Icon,data:function(vm){return{icon:hyphenate(vm.constructor.options.name)}}},Slidenav={extends:IconComponent,connected:function(){addClass(this.$el,"uk-slidenav")},computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-slidenav-large")?icon+"-large":icon}}},Search={extends:IconComponent,computed:{icon:function(ref,$el){var icon=ref.icon;return hasClass($el,"uk-search-icon")&&parents($el,".uk-search-large").length?"search-large":parents($el,".uk-search-navbar").length?"search-navbar":icon}}},Close={extends:IconComponent,computed:{icon:function(){return"close-"+(hasClass(this.$el,"uk-close-large")?"large":"icon")}}},Spinner={extends:IconComponent,connected:function(){var this$1=this;this.svg.then(function(svg){return 1!==this$1.ratio&&css($("circle",svg),"strokeWidth",1/this$1.ratio)},noop)}};var Img={attrs:!0,props:{dataSrc:String,dataSrcset:Boolean,dataSizes:Boolean,sizes:String,width:Number,height:Number,dataWidth:Number,dataHeight:Number,offsetTop:String,offsetLeft:String,target:String},data:{dataSrc:"",dataSrcset:!1,dataSizes:!1,sizes:!1,width:!1,height:!1,offsetTop:"50vh",offsetLeft:0,target:!1},computed:{cacheKey:function(ref){var dataSrc=ref.dataSrc;return this.$name+"."+dataSrc},width:function(ref){var width$$1=ref.width,dataWidth=ref.dataWidth;return width$$1||dataWidth},height:function(ref){var height$$1=ref.height,dataHeight=ref.dataHeight;return height$$1||dataHeight},sizes:function(ref){var sizes=ref.sizes,dataSizes=ref.dataSizes;return sizes||dataSizes},isImg:function(_,$el){return isImg($el)},target:function(ref){var target=ref.target;return[this.$el].concat(queryAll(target,this.$el))},offsetTop:function(ref){return toPx(ref.offsetTop,"height")},offsetLeft:function(ref){return toPx(ref.offsetLeft,"width")}},connected:function(){storage[this.cacheKey]?setSrcAttrs(this.$el,storage[this.cacheKey]||this.dataSrc,this.dataSrcset,this.sizes):this.isImg&&this.width&&this.height&&setSrcAttrs(this.$el,function(width$$1,height$$1,sizes,color){var assign$$1;void 0===color&&(color="transparent");if(sizes){for(var matches$$1;matches$$1=sizesRe.exec(sizes);)if(!matches$$1[1]||window.matchMedia(matches$$1[1]).matches){size=matches$$1[2],matches$$1=startsWith(size,"calc")?size.substring(5,size.length-1).replace(sizeRe,function(size){return toPx(size)}).replace(/ /g,"").match(additionRe).reduce(function(a,b){return a+ +b},0):size;break}sizesRe.lastIndex=0,assign$$1=Dimensions.ratio({width:width$$1,height:height$$1},"width",toPx(matches$$1||"100vw")),width$$1=assign$$1.width,height$$1=assign$$1.height}var size;var key=width$$1+"."+height$$1+"."+color;if(urlCache[key])return urlCache[key];var canvas=fragment("<canvas>");canvas.width=width$$1,canvas.height=height$$1;var context=canvas.getContext("2d");return context.fillStyle=color,context.fillRect(0,0,width$$1,height$$1),urlCache[key]=canvas.toDataURL("image/png")}(this.width,this.height,this.sizes))},update:[{read:function(ref){var this$1=this,delay=ref.delay,image=ref.image;if(delay){if(!image&&this.target.some(function(el){return isInView(el,this$1.offsetTop,this$1.offsetLeft,!0)}))return{image:getImage(this.dataSrc,this.dataSrcset,this.sizes).then(function(img){return setSrcAttrs(this$1.$el,currentSrc(img),img.srcset,img.sizes),storage[this$1.cacheKey]=currentSrc(img),img},noop)};!this.isImg&&image&&image.then(function(img){return img&&setSrcAttrs(this$1.$el,currentSrc(img))})}},write:function(data$$1){if(!data$$1.delay)return this.$emit(),data$$1.delay=!0},events:["scroll","load","resize"]}]};function setSrcAttrs(el,src,srcset,sizes){isImg(el)?(src&&(el.src=src),srcset&&(el.srcset=srcset),sizes&&(el.sizes=sizes)):src&&css(el,"backgroundImage","url("+src+")")}var urlCache={},sizesRe=/\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g;var sizeRe=/\d+(?:\w+|%)/g,additionRe=/[+-]?(\d+)/g;function toPx(value,property,element){return void 0===property&&(property="width"),void 0===element&&(element=window),isNumeric(value)?+value:endsWith(value,"vw")?percent(element,"width",value):endsWith(value,"vh")?percent(element,"height",value):endsWith(value,"%")?percent(element,property,value):toFloat(value)}var dimensions={height:height,width:width};function percent(element,property,value){return dimensions[property](element)*toFloat(value)/100}function isImg(el){return"IMG"===el.tagName}function currentSrc(el){return el.currentSrc||el.src}var storage;try{(storage=window.sessionStorage||{}).__test__=1,delete storage.__test__}catch(e){storage={}}var active$1,events,Leader={mixins:[Class],props:{fill:String,media:"media"},data:{fill:"",media:!1,clsWrapper:"uk-leader-fill",clsHide:"uk-leader-hide",attrFill:"data-fill"},computed:{fill:function(ref){return ref.fill||getCssVar("leader-fill")}},connected:function(){var assign$$1;assign$$1=wrapInner(this.$el,'<span class="'+this.clsWrapper+'">'),this.wrapper=assign$$1[0]},disconnected:function(){unwrap(this.wrapper.childNodes)},update:[{read:function(ref){var changed=ref.changed,width$$1=ref.width,prev=width$$1;return{width:width$$1=Math.floor(this.$el.offsetWidth/2),changed:changed||prev!==width$$1,hide:this.media&&!window.matchMedia(this.media).matches}},write:function(data$$1){toggleClass(this.wrapper,this.clsHide,data$$1.hide),data$$1.changed&&(data$$1.changed=!1,attr(this.wrapper,this.attrFill,new Array(data$$1.width).join(this.fill)))},events:["load","resize"]}]},Container={props:{container:Boolean},data:{container:!0},computed:{container:function(ref){var container=ref.container;return!0===container&&this.$container||container&&$(container)}}},Modal={mixins:[Class,Container,Togglable],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean},data:{cls:"uk-open",escClose:!0,bgClose:!0,overlay:!0,stack:!1},computed:{panel:function(ref,$el){return $(ref.selPanel,$el)},transitionElement:function(){return this.panel},transitionDuration:function(){return toMs(css(this.transitionElement,"transitionDuration"))},bgClose:function(ref){return ref.bgClose&&this.panel}},events:[{name:"click",delegate:function(){return this.selClose},handler:function(e){e.preventDefault(),this.hide()}},{name:"toggle",self:!0,handler:function(e){e.defaultPrevented||(e.preventDefault(),this.toggle())}},{name:"beforeshow",self:!0,handler:function(e){var prev=active$1&&active$1!==this&&active$1;if(active$1=this,prev){if(!this.stack)return prev.hide().then(this.show),void e.preventDefault();this.prev=prev}!function(){if(events)return;events=[on(document,"click",function(ref){var target=ref.target,defaultPrevented=ref.defaultPrevented;!active$1||!active$1.bgClose||defaultPrevented||active$1.overlay&&!within(target,active$1.$el)||within(target,active$1.panel)||active$1.hide()}),on(document,"keydown",function(e){27===e.keyCode&&active$1&&active$1.escClose&&(e.preventDefault(),active$1.hide())})]}()}},{name:"beforehide",self:!0,handler:function(){(active$1=active$1&&active$1!==this&&active$1||this.prev)||(events&&events.forEach(function(unbind){return unbind()}),events=null)}},{name:"show",self:!0,handler:function(){hasClass(document.documentElement,this.clsPage)||(this.scrollbarWidth=width(window)-width(document),css(document.body,"overflowY",this.scrollbarWidth&&this.overlay?"scroll":"")),addClass(document.documentElement,this.clsPage)}},{name:"hidden",self:!0,handler:function(){for(var found,prev=this.prev;prev;){if(prev.clsPage===this.clsPage){found=!0;break}prev=prev.prev}found||removeClass(document.documentElement,this.clsPage),!this.prev&&css(document.body,"overflowY","")}}],methods:{toggle:function(){return this.isToggled()?this.hide():this.show()},show:function(){return this.isToggled()?Promise$1.resolve():(this.container&&this.$el.parentNode!==this.container&&(append(this.container,this.$el),this._callConnected()),this.toggleNow(this.$el,!0))},hide:function(){return this.isToggled()?this.toggleNow(this.$el,!1):Promise$1.resolve()},getActive:function(){return active$1},_toggleImmediate:function(el,show){var this$1=this;return new Promise$1(function(resolve){return requestAnimationFrame(function(){this$1._toggle(el,show),this$1.transitionDuration?once(this$1.transitionElement,"transitionend",resolve,!1,function(e){return e.target===this$1.transitionElement}):resolve()})})}}};var Modal$1={install:function(UIkit){UIkit.modal.dialog=function(content,options){var dialog=UIkit.modal(' <div class="uk-modal"> <div class="uk-modal-dialog">'+content+"</div> </div> ",options);return dialog.show(),on(dialog.$el,"hidden",function(ref){var target=ref.target,currentTarget=ref.currentTarget;target===currentTarget&&dialog.$destroy(!0)}),dialog},UIkit.modal.alert=function(message,options){return options=assign({bgClose:!1,escClose:!1,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){return on(UIkit.modal.dialog(' <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-primary uk-modal-close" autofocus>'+options.labels.ok+"</button> </div> ",options).$el,"hide",resolve)})},UIkit.modal.confirm=function(message,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve,reject){var confirm=UIkit.modal.dialog(' <form> <div class="uk-modal-body">'+(isString(message)?message:html(message))+'</div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary" autofocus>'+options.labels.ok+"</button> </div> </form> ",options),resolved=!1;on(confirm.$el,"submit","form",function(e){e.preventDefault(),resolve(),resolved=!0,confirm.hide()}),on(confirm.$el,"hide",function(){resolved||reject()})})},UIkit.modal.prompt=function(message,value,options){return options=assign({bgClose:!1,escClose:!0,labels:UIkit.modal.labels},options),new Promise$1(function(resolve){var prompt=UIkit.modal.dialog(' <form class="uk-form-stacked"> <div class="uk-modal-body"> <label>'+(isString(message)?message:html(message))+'</label> <input class="uk-input" autofocus> </div> <div class="uk-modal-footer uk-text-right"> <button class="uk-button uk-button-default uk-modal-close" type="button">'+options.labels.cancel+'</button> <button class="uk-button uk-button-primary">'+options.labels.ok+"</button> </div> </form> ",options),input=$("input",prompt.$el);input.value=value;var resolved=!1;on(prompt.$el,"submit","form",function(e){e.preventDefault(),resolve(input.value),resolved=!0,prompt.hide()}),on(prompt.$el,"hide",function(){resolved||resolve(null)})})},UIkit.modal.labels={ok:"Ok",cancel:"Cancel"}},mixins:[Modal],data:{clsPage:"uk-modal-page",selPanel:".uk-modal-dialog",selClose:".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full"},events:[{name:"show",self:!0,handler:function(){hasClass(this.panel,"uk-margin-auto-vertical")?addClass(this.$el,"uk-flex"):css(this.$el,"display","block"),height(this.$el)}},{name:"hidden",self:!0,handler:function(){css(this.$el,"display",""),removeClass(this.$el,"uk-flex")}}]};var scroll,Nav={extends:Accordion,data:{targets:"> .uk-parent",toggle:"> a",content:"> ul"}},Navbar={mixins:[Class],props:{dropdown:String,mode:"list",align:String,offset:Number,boundary:Boolean,boundaryAlign:Boolean,clsDrop:String,delayShow:Number,delayHide:Number,dropbar:Boolean,dropbarMode:String,dropbarAnchor:Boolean,duration:Number},data:{dropdown:".uk-navbar-nav > li",align:isRtl?"right":"left",clsDrop:"uk-navbar-dropdown",mode:void 0,offset:void 0,delayShow:void 0,delayHide:void 0,boundaryAlign:void 0,flip:"x",boundary:!0,dropbar:!1,dropbarMode:"slide",dropbarAnchor:!1,duration:200},computed:{boundary:function(ref,$el){var boundary=ref.boundary,boundaryAlign=ref.boundaryAlign;return!0===boundary||boundaryAlign?$el:boundary},dropbarAnchor:function(ref,$el){return query(ref.dropbarAnchor,$el)},pos:function(ref){return"bottom-"+ref.align},dropdowns:function(ref,$el){return $$(ref.dropdown+" ."+ref.clsDrop,$el)}},beforeConnect:function(){var dropbar=this.$props.dropbar;this.dropbar=dropbar&&(query(dropbar,this.$el)||$("+ .uk-navbar-dropbar",this.$el)||$("<div></div>")),this.dropbar&&(addClass(this.dropbar,"uk-navbar-dropbar"),"slide"===this.dropbarMode&&addClass(this.dropbar,"uk-navbar-dropbar-slide"))},disconnected:function(){this.dropbar&&remove(this.dropbar)},update:function(){var this$1=this;this.$create("drop",this.dropdowns.filter(function(el){return!this$1.getDropdown(el)}),assign({},this.$props,{boundary:this.boundary,pos:this.pos,offset:this.dropbar||this.offset}))},events:[{name:"mouseover",delegate:function(){return this.dropdown},handler:function(ref){var current=ref.current,active=this.getActive();active&&active.toggle&&!within(active.toggle.$el,current)&&!active.tracker.movesTo(active.$el)&&active.hide(!1)}},{name:"mouseleave",el:function(){return this.dropbar},handler:function(){var active=this.getActive();active&&!matches(this.dropbar,":hover")&&active.hide()}},{name:"beforeshow",capture:!0,filter:function(){return this.dropbar},handler:function(){this.dropbar.parentNode||after(this.dropbarAnchor||this.$el,this.dropbar)}},{name:"show",capture:!0,filter:function(){return this.dropbar},handler:function(_,drop){var $el=drop.$el,dir=drop.dir;this.clsDrop&&addClass($el,this.clsDrop+"-dropbar"),"bottom"===dir&&this.transitionTo($el.offsetHeight+toFloat(css($el,"marginTop"))+toFloat(css($el,"marginBottom")),$el)}},{name:"beforehide",filter:function(){return this.dropbar},handler:function(e,ref){var $el=ref.$el,active=this.getActive();matches(this.dropbar,":hover")&&active&&active.$el===$el&&e.preventDefault()}},{name:"hide",filter:function(){return this.dropbar},handler:function(_,ref){var $el=ref.$el,active=this.getActive();(!active||active&&active.$el===$el)&&this.transitionTo(0)}}],methods:{getActive:function(){var active=this.dropdowns.map(this.getDropdown).filter(function(drop){return drop.isActive()})[0];return active&&includes(active.mode,"hover")&&within(active.toggle.$el,this.$el)&&active},transitionTo:function(newHeight,el){var dropbar=this.dropbar,oldHeight=isVisible(dropbar)?height(dropbar):0;return css(el=oldHeight<newHeight&&el,"clip","rect(0,"+el.offsetWidth+"px,"+oldHeight+"px,0)"),height(dropbar,oldHeight),Transition.cancel([el,dropbar]),Promise.all([Transition.start(dropbar,{height:newHeight},this.duration),Transition.start(el,{clip:"rect(0,"+el.offsetWidth+"px,"+newHeight+"px,0)"},this.duration)]).catch(noop).then(function(){return css(el,{clip:""})})},getDropdown:function(el){return this.$getComponent(el,"drop")||this.$getComponent(el,"dropdown")}}},Offcanvas={mixins:[Modal],args:"mode",props:{content:String,mode:String,flip:Boolean,overlay:Boolean},data:{content:".uk-offcanvas-content",mode:"slide",flip:!1,overlay:!1,clsPage:"uk-offcanvas-page",clsContainer:"uk-offcanvas-container",selPanel:".uk-offcanvas-bar",clsFlip:"uk-offcanvas-flip",clsContent:"uk-offcanvas-content",clsContentAnimation:"uk-offcanvas-content-animation",clsSidebarAnimation:"uk-offcanvas-bar-animation",clsMode:"uk-offcanvas",clsOverlay:"uk-offcanvas-overlay",selClose:".uk-offcanvas-close"},computed:{content:function(ref){return $(ref.content)||document.body},clsFlip:function(ref){var flip=ref.flip,clsFlip=ref.clsFlip;return flip?clsFlip:""},clsOverlay:function(ref){var overlay=ref.overlay,clsOverlay=ref.clsOverlay;return overlay?clsOverlay:""},clsMode:function(ref){var mode=ref.mode;return ref.clsMode+"-"+mode},clsSidebarAnimation:function(ref){var mode=ref.mode,clsSidebarAnimation=ref.clsSidebarAnimation;return"none"===mode||"reveal"===mode?"":clsSidebarAnimation},clsContentAnimation:function(ref){var mode=ref.mode,clsContentAnimation=ref.clsContentAnimation;return"push"!==mode&&"reveal"!==mode?"":clsContentAnimation},transitionElement:function(ref){return"reveal"===ref.mode?this.panel.parentNode:this.panel}},update:{write:function(){this.getActive()===this&&((this.overlay||this.clsContentAnimation)&&width(this.content,width(window)-this.scrollbarWidth),this.overlay&&(height(this.content,height(window)),scroll&&(this.content.scrollTop=scroll.y)))},events:["resize"]},events:[{name:"click",delegate:function(){return'a[href^="#"]'},handler:function(ref){var current=ref.current;current.hash&&$(current.hash,this.content)&&(scroll=null,this.hide())}},{name:"beforescroll",filter:function(){return this.overlay},handler:function(e,scroll,target){scroll&&target&&this.isToggled()&&$(target,this.content)&&(once(this.$el,"hidden",function(){return scroll.scrollTo(target)}),e.preventDefault())}},{name:"show",self:!0,handler:function(){scroll=scroll||{x:window.pageXOffset,y:window.pageYOffset},"reveal"!==this.mode||hasClass(this.panel,this.clsMode)||(wrapAll(this.panel,"<div>"),addClass(this.panel.parentNode,this.clsMode)),css(document.documentElement,"overflowY",(!this.clsContentAnimation||this.flip)&&this.scrollbarWidth&&this.overlay?"scroll":""),addClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),height(document.body),addClass(this.content,this.clsContentAnimation),addClass(this.panel,this.clsSidebarAnimation,"reveal"!==this.mode?this.clsMode:""),addClass(this.$el,this.clsOverlay),css(this.$el,"display","block"),height(this.$el)}},{name:"hide",self:!0,handler:function(){removeClass(this.content,this.clsContentAnimation);var active=this.getActive();("none"===this.mode||active&&active!==this&&active!==this.prev)&&trigger(this.panel,"transitionend")}},{name:"hidden",self:!0,handler:function(){if("reveal"===this.mode&&unwrap(this.panel),this.overlay){if(!scroll){var ref=this.content,x=ref.scrollLeft,y=ref.scrollTop;scroll={x:x,y:y}}}else scroll={x:window.pageXOffset,y:window.pageYOffset};removeClass(this.panel,this.clsSidebarAnimation,this.clsMode),removeClass(this.$el,this.clsOverlay),css(this.$el,"display",""),removeClass(document.body,this.clsContainer,this.clsFlip,this.clsOverlay),document.body.scrollTop=scroll.y,css(document.documentElement,"overflowY",""),width(this.content,""),height(this.content,""),window.scroll(scroll.x,scroll.y),scroll=null}},{name:"swipeLeft swipeRight",handler:function(e){this.isToggled()&&isTouch(e)&&("swipeLeft"===e.type&&!this.flip||"swipeRight"===e.type&&this.flip)&&this.hide()}}]},OverflowAuto={mixins:[Class],computed:{modal:function(_,$el){return closest($el,".uk-modal")},panel:function(_,$el){return closest($el,".uk-modal-dialog")}},connected:function(){css(this.$el,"minHeight",150)},update:{write:function(){if(this.panel&&this.modal){var current=css(this.$el,"maxHeight");css(css(this.$el,"maxHeight",150),"maxHeight",Math.max(150,150+height(this.modal)-this.panel.offsetHeight)),current!==css(this.$el,"maxHeight")&&trigger(this.$el,"resize")}},events:["load","resize"]}},Responsive={props:["width","height"],connected:function(){addClass(this.$el,"uk-responsive-width")},update:{read:function(){return!!(isVisible(this.$el)&&this.width&&this.height)&&{width:width(this.$el.parentNode),height:this.height}},write:function(dim){height(this.$el,Dimensions.contain({height:this.height,width:this.width},dim).height)},events:["load","resize"]}},Scroll={props:{duration:Number,offset:Number},data:{duration:1e3,offset:0},methods:{scrollTo:function(el){var this$1=this;el=el&&$(el)||document.body;var docHeight=height(document),winHeight=height(window),target=offset(el).top-this.offset;if(target+winHeight>docHeight&&(target=docHeight-winHeight),trigger(this.$el,"beforescroll",[this,el])){var start=Date.now(),startY=window.pageYOffset,step=function(){var k,currentY=startY+(target-startY)*(k=clamp((Date.now()-start)/this$1.duration),.5*(1-Math.cos(Math.PI*k)));window.scroll(window.pageXOffset,currentY),currentY!==target?requestAnimationFrame(step):trigger(this$1.$el,"scrolled",[this$1,el])};step()}}},events:{click:function(e){e.defaultPrevented||(e.preventDefault(),this.scrollTo(escape(this.$el.hash).substr(1)))}}};var Scrollspy={args:"cls",props:{cls:"list",target:String,hidden:Boolean,offsetTop:Number,offsetLeft:Number,repeat:Boolean,delay:Number},data:function(){return{cls:[],target:!1,hidden:!0,offsetTop:0,offsetLeft:0,repeat:!1,delay:0,inViewClass:"uk-scrollspy-inview"}},computed:{elements:function(ref,$el){var target=ref.target;return target?$$(target,$el):[$el]}},update:[{write:function(){this.hidden&&css(filter(this.elements,":not(."+this.inViewClass+")"),"visibility","hidden")}},{read:function(els){var this$1=this;els.delay&&this.elements.forEach(function(el,i){var elData=els[i];if(!elData||elData.el!==el){var cls=data(el,"uk-scrollspy-class");elData={el:el,toggles:cls&&cls.split(",")||this$1.cls}}elData.show=isInView(el,this$1.offsetTop,this$1.offsetLeft),els[i]=elData})},write:function(els){var this$1=this;if(!els.delay)return this.$emit(),els.delay=!0;var index$$1=1===this.elements.length?1:0;this.elements.forEach(function(el,i){var elData=els[i],cls=elData.toggles[i]||elData.toggles[0];if(!elData.show||elData.inview||elData.timer)!elData.show&&elData.inview&&this$1.repeat&&(elData.timer&&(clearTimeout(elData.timer),delete elData.timer),css(el,"visibility",this$1.hidden?"hidden":""),removeClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"outview"),this$1.$update(el),elData.inview=!1);else{var show=function(){css(el,"visibility",""),addClass(el,this$1.inViewClass),toggleClass(el,cls),trigger(el,"inview"),this$1.$update(el),elData.inview=!0,delete elData.timer};this$1.delay&&index$$1?elData.timer=setTimeout(show,this$1.delay*index$$1):show(),index$$1++}})},events:["scroll","load","resize"]}]},ScrollspyNav={props:{cls:String,closest:String,scroll:Boolean,overflow:Boolean,offset:Number},data:{cls:"uk-active",closest:!1,scroll:!1,overflow:!0,offset:0},computed:{links:function(_,$el){return $$('a[href^="#"]',$el).filter(function(el){return el.hash})},elements:function(){return this.closest?closest(this.links,this.closest):this.links},targets:function(){return $$(this.links.map(function(el){return el.hash}).join(","))}},update:[{read:function(){this.scroll&&this.$create("scroll",this.links,{offset:this.offset||0})}},{read:function(data$$1){var this$1=this,scroll=window.pageYOffset+this.offset+1,max=height(document)-height(window)+this.offset;data$$1.active=!1,this.targets.every(function(el,i){var top=offset(el).top,last=i+1===this$1.targets.length;if(!this$1.overflow&&(0===i&&top>scroll||last&&top+el.offsetTop<scroll))return!1;if(!last&&offset(this$1.targets[i+1]).top<=scroll)return!0;if(scroll>=max)for(var j=this$1.targets.length-1;j>i;j--)if(isInView(this$1.targets[j])){el=this$1.targets[j];break}return!(data$$1.active=$(filter(this$1.links,'[href="#'+el.id+'"]')))})},write:function(ref){var active=ref.active;this.links.forEach(function(el){return el.blur()}),removeClass(this.elements,this.cls),active&&trigger(this.$el,"active",[active,addClass(this.closest?closest(active,this.closest):active,this.cls)])},events:["scroll","load","resize"]}]},Sticky={mixins:[Class],attrs:!0,props:{top:null,bottom:Boolean,offset:Number,animation:String,clsActive:String,clsInactive:String,clsFixed:String,clsBelow:String,selTarget:String,widthElement:Boolean,showOnUp:Boolean,media:"media",targetOffset:Number},data:{top:0,bottom:!1,offset:0,animation:"",clsActive:"uk-active",clsInactive:"",clsFixed:"uk-sticky-fixed",clsBelow:"uk-sticky-below",selTarget:"",widthElement:!1,showOnUp:!1,media:!1,targetOffset:!1},computed:{selTarget:function(ref,$el){var selTarget=ref.selTarget;return selTarget&&$(selTarget,$el)||$el},widthElement:function(ref,$el){return query(ref.widthElement,$el)||this.placeholder}},connected:function(){this.placeholder=$("+ .uk-sticky-placeholder",this.$el)||$('<div class="uk-sticky-placeholder"></div>'),this.isActive||this.hide()},disconnected:function(){this.isActive&&(this.isActive=!1,this.hide(),removeClass(this.selTarget,this.clsInactive)),remove(this.placeholder),this.placeholder=null,this.widthElement=null},events:[{name:"active",self:!0,handler:function(){replaceClass(this.selTarget,this.clsInactive,this.clsActive)}},{name:"inactive",self:!0,handler:function(){replaceClass(this.selTarget,this.clsActive,this.clsInactive)}},{name:"load hashchange popstate",el:window,handler:function(){var this$1=this;if(!1!==this.targetOffset&&location.hash&&window.pageYOffset>0){var target=$(location.hash);target&&fastdom.read(function(){var top=offset(target).top,elTop=offset(this$1.$el).top,elHeight=this$1.$el.offsetHeight;this$1.isActive&&elTop+elHeight>=top&&elTop<=top+target.offsetHeight&&window.scroll(0,top-elHeight-(isNumeric(this$1.targetOffset)?this$1.targetOffset:0)-this$1.offset)})}}}],update:[{write:function(){var placeholder=this.placeholder,offsetHeight=this.$el.offsetHeight;css(placeholder,assign({height:"absolute"!==css(this.$el,"position")?offsetHeight:""},css(this.$el,["marginTop","marginBottom","marginLeft","marginRight"]))),within(placeholder,document)||(after(this.$el,placeholder),attr(placeholder,"hidden","")),this.topOffset=offset(this.isActive?placeholder:this.$el).top,this.bottomOffset=this.topOffset+offsetHeight;var bottom=parseProp("bottom",this);this.top=Math.max(toFloat(parseProp("top",this)),this.topOffset)-this.offset,this.bottom=bottom&&bottom-offsetHeight,this.inactive=this.media&&!window.matchMedia(this.media).matches},events:["load","resize"]},{read:function(_,ref){var scrollY=ref.scrollY;return void 0===scrollY&&(scrollY=window.pageYOffset),this.width=(isVisible(this.widthElement)?this.widthElement:this.$el).offsetWidth,{scroll:this.scroll=scrollY,visible:isVisible(this.$el)}},write:function(ref,ref$1){var this$1=this,visible=ref.visible,scroll=ref.scroll;void 0===ref$1&&(ref$1={});var dir=ref$1.dir;if(!(scroll<0||!visible||this.disabled||this.showOnUp&&!dir))if(this.inactive||scroll<this.top||this.showOnUp&&(scroll<=this.top||"down"===dir||"up"===dir&&!this.isActive&&scroll<=this.bottomOffset)){if(!this.isActive)return;this.isActive=!1,this.animation&&scroll>this.topOffset?(Animation.cancel(this.$el),Animation.out(this.$el,this.animation).then(function(){return this$1.hide()},noop)):this.hide()}else this.isActive?this.update():this.animation?(Animation.cancel(this.$el),this.show(),Animation.in(this.$el,this.animation).catch(noop)):this.show()},events:["load","resize","scroll"]}],methods:{show:function(){this.isActive=!0,this.update(),attr(this.placeholder,"hidden",null)},hide:function(){this.isActive&&!hasClass(this.selTarget,this.clsActive)||trigger(this.$el,"inactive"),removeClass(this.$el,this.clsFixed,this.clsBelow),css(this.$el,{position:"",top:"",width:""}),attr(this.placeholder,"hidden","")},update:function(){var active=0!==this.top||this.scroll>this.top,top=Math.max(0,this.offset);this.bottom&&this.scroll>this.bottom-this.offset&&(top=this.bottom-this.scroll),css(this.$el,{position:"fixed",top:top+"px",width:this.width}),hasClass(this.selTarget,this.clsActive)?active||trigger(this.$el,"inactive"):active&&trigger(this.$el,"active"),toggleClass(this.$el,this.clsBelow,this.scroll>this.bottomOffset),addClass(this.$el,this.clsFixed)}}};function parseProp(prop,ref){var $props=ref.$props,$el=ref.$el,propOffset=ref[prop+"Offset"],value=$props[prop];if(value){if(isNumeric(value))return propOffset+toFloat(value);if(isString(value)&&value.match(/^-?\d+vh$/))return height(window)*toFloat(value)/100;var el=!0===value?$el.parentNode:query(value,$el);return el?offset(el).top+el.offsetHeight:void 0}}var Switcher={mixins:[Togglable],args:"connect",props:{connect:String,toggle:String,active:Number,swiping:Boolean},data:{connect:"~.uk-switcher",toggle:"> *",active:0,swiping:!0,cls:"uk-active",clsContainer:"uk-switcher",attrItem:"uk-switcher-item",queued:!0},computed:{connects:function(ref,$el){return queryAll(ref.connect,$el)},toggles:function(ref,$el){return $$(ref.toggle,$el)}},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),this.show(e.current)}},{name:"click",el:function(){return this.connects},delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.show(data(e.current,this.attrItem))}},{name:"swipeRight swipeLeft",filter:function(){return this.swiping},el:function(){return this.connects},handler:function(e){isTouch(e)&&(e.preventDefault(),window.getSelection().toString()||this.show("swipeLeft"===e.type?"next":"previous"))}}],update:function(){var this$1=this;this.connects.forEach(function(list){return this$1.updateAria(list.children)}),this.show(filter(this.toggles,"."+this.cls)[0]||this.toggles[this.active]||this.toggles[0])},methods:{show:function(item){for(var toggle,this$1=this,length=this.toggles.length,prev=!!this.connects.length&&index(filter(this.connects[0].children,"."+this.cls)[0]),hasPrev=prev>=0,dir="previous"===item?-1:1,next=getIndex(item,this.toggles,prev),i=0;i<length;i++,next=(next+dir+length)%length)if(!matches(this$1.toggles[next],".uk-disabled, [disabled]")){toggle=this$1.toggles[next];break}!toggle||prev>=0&&hasClass(toggle,this.cls)||prev===next||(removeClass(this.toggles,this.cls),attr(this.toggles,"aria-expanded",!1),addClass(toggle,this.cls),attr(toggle,"aria-expanded",!0),this.connects.forEach(function(list){hasPrev?this$1.toggleElement([list.children[prev],list.children[next]]):this$1.toggleNow(list.children[next])}))}}},Tab={mixins:[Class],extends:Switcher,props:{media:"media"},data:{media:960,attrItem:"uk-tab-item"},connected:function(){var cls=hasClass(this.$el,"uk-tab-left")?"uk-tab-left":!!hasClass(this.$el,"uk-tab-right")&&"uk-tab-right";cls&&this.$create("toggle",this.$el,{cls:cls,mode:"media",media:this.media})}},Toggle={mixins:[Togglable],args:"target",props:{href:String,target:null,mode:"list",media:"media"},data:{href:!1,target:!1,mode:"click",queued:!0,media:!1},computed:{target:function(ref,$el){var href=ref.href,target=ref.target;return(target=queryAll(target||href,$el)).length&&target||[$el]}},events:[{name:pointerEnter+" "+pointerLeave,filter:function(){return includes(this.mode,"hover")},handler:function(e){isTouch(e)||this.toggle("toggle"+(e.type===pointerEnter?"show":"hide"))}},{name:"click",filter:function(){return includes(this.mode,"click")||hasTouch&&includes(this.mode,"hover")},handler:function(e){var link;(isTouch(e)||includes(this.mode,"click"))&&((closest(e.target,'a[href="#"], button')||(link=closest(e.target,"a[href]"))&&(this.cls||!isVisible(this.target)||link.hash&&matches(this.target,link.hash)))&&once(document,"click",function(e){return e.preventDefault()}),this.toggle())}}],update:{write:function(){if(includes(this.mode,"media")&&this.media){var toggled=this.isToggled(this.target);(window.matchMedia(this.media).matches?!toggled:toggled)&&this.toggle()}},events:["load","resize"]},methods:{toggle:function(type){trigger(this.target,type||"toggle",[this])&&this.toggleElement(this.target)}}};UIkit.version="3.0.0-rc.5",function(UIkit){UIkit.component("accordion",Accordion),UIkit.component("alert",Alert),UIkit.component("cover",Cover),UIkit.component("drop",Drop),UIkit.component("dropdown",Dropdown),UIkit.component("formCustom",FormCustom),UIkit.component("gif",Gif),UIkit.component("grid",Grid),UIkit.component("heightMatch",HeightMatch),UIkit.component("heightViewport",HeightViewport),UIkit.component("icon",Icon),UIkit.component("img",Img),UIkit.component("leader",Leader),UIkit.component("margin",Margin),UIkit.component("modal",Modal$1),UIkit.component("nav",Nav),UIkit.component("navbar",Navbar),UIkit.component("offcanvas",Offcanvas),UIkit.component("overflowAuto",OverflowAuto),UIkit.component("responsive",Responsive),UIkit.component("scroll",Scroll),UIkit.component("scrollspy",Scrollspy),UIkit.component("scrollspyNav",ScrollspyNav),UIkit.component("sticky",Sticky),UIkit.component("svg",SVG),UIkit.component("switcher",Switcher),UIkit.component("tab",Tab),UIkit.component("toggle",Toggle),UIkit.component("video",Video),UIkit.component("close",Close),UIkit.component("marker",IconComponent),UIkit.component("navbarToggleIcon",IconComponent),UIkit.component("overlayIcon",IconComponent),UIkit.component("paginationNext",IconComponent),UIkit.component("paginationPrevious",IconComponent),UIkit.component("searchIcon",Search),UIkit.component("slidenavNext",Slidenav),UIkit.component("slidenavPrevious",Slidenav),UIkit.component("spinner",Spinner),UIkit.component("totop",IconComponent),UIkit.use(Core)}(UIkit);var Countdown={mixins:[Class],attrs:!0,props:{date:String,clsWrapper:String},data:{date:"",clsWrapper:".uk-countdown-%unit%"},computed:{date:function(ref){var date=ref.date;return Date.parse(date)},days:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","days"),$el)},hours:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","hours"),$el)},minutes:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","minutes"),$el)},seconds:function(ref,$el){return $(ref.clsWrapper.replace("%unit%","seconds"),$el)},units:function(){var this$1=this;return["days","hours","minutes","seconds"].filter(function(unit){return this$1[unit]})}},connected:function(){this.start()},disconnected:function(){var this$1=this;this.stop(),this.units.forEach(function(unit){return empty(this$1[unit])})},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stop():this.start()}}],update:{write:function(){var date,total,this$1=this,timespan=(date=this.date,{total:total=date-Date.now(),seconds:total/1e3%60,minutes:total/1e3/60%60,hours:total/1e3/60/60%24,days:total/1e3/60/60/24});timespan.total<=0&&(this.stop(),timespan.days=timespan.hours=timespan.minutes=timespan.seconds=0),this.units.forEach(function(unit){var digits=String(Math.floor(timespan[unit]));digits=digits.length<2?"0"+digits:digits;var el=this$1[unit];el.textContent!==digits&&((digits=digits.split("")).length!==el.children.length&&html(el,digits.map(function(){return"<span></span>"}).join("")),digits.forEach(function(digit,i){return el.children[i].textContent=digit}))})}},methods:{start:function(){var this$1=this;this.stop(),this.date&&this.units.length&&(this.$emit(),this.timer=setInterval(function(){return this$1.$emit()},1e3))},stop:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};var style$1,targetClass="uk-animation-target",Animate={props:{animation:Number},data:{animation:150},computed:{target:function(){return this.$el}},methods:{animate:function(action){var this$1=this;style$1||(style$1=append(document.head,"<style>").sheet).insertRule("."+targetClass+" > * {\n margin-top: 0 !important;\n transform: none !important;\n }");var children=toNodes(this.target.children),propsFrom=children.map(function(el){return getProps(el,!0)}),oldHeight=height(this.target),oldScrollY=window.pageYOffset;action(),Transition.cancel(this.target),children.forEach(Transition.cancel),reset(this.target),this.$update(this.target),fastdom.flush();var newHeight=height(this.target),propsTo=(children=children.concat(toNodes(this.target.children).filter(function(el){return!includes(children,el)}))).map(function(el,i){return!!(el.parentNode&&i in propsFrom)&&(propsFrom[i]?isVisible(el)?getPositionWithMargin(el):{opacity:0}:{opacity:isVisible(el)?1:0})});return propsFrom=propsTo.map(function(props,i){var from=children[i].parentNode===this$1.target&&(propsFrom[i]||getProps(children[i]));if(from)if(props){if(!("opacity"in props)){from.opacity%1?props.opacity=1:delete from.opacity}}else delete from.opacity;return from}),addClass(this.target,targetClass),children.forEach(function(el,i){return propsFrom[i]&&css(el,propsFrom[i])}),css(this.target,"minHeight",oldHeight),window.scroll(window.pageXOffset,oldScrollY),Promise$1.all(children.map(function(el,i){return propsFrom[i]&&propsTo[i]?Transition.start(el,propsTo[i],this$1.animation,"ease"):Promise$1.resolve()}).concat(Transition.start(this.target,{minHeight:newHeight},this.animation,"ease"))).then(function(){children.forEach(function(el,i){return css(el,{display:0===propsTo[i].opacity?"none":"",zIndex:""})}),reset(this$1.target),this$1.$update(this$1.target)},noop)}}};function getProps(el,opacity){var zIndex=css(el,"zIndex");return!!isVisible(el)&&assign({display:"",opacity:opacity?css(el,"opacity"):"0",pointerEvents:"none",position:"absolute",zIndex:"auto"===zIndex?index(el):zIndex},getPositionWithMargin(el))}function reset(el){css(el.children,{height:"",left:"",opacity:"",pointerEvents:"",position:"",top:"",width:""}),removeClass(el,targetClass),css(el,"minHeight","")}function getPositionWithMargin(el){var ref=el.getBoundingClientRect(),height$$1=ref.height,width$$1=ref.width,ref$1=position(el),top=ref$1.top,left=ref$1.left;return{top:top+=toFloat(css(el,"marginTop")),left:left,height:height$$1,width:width$$1}}var Filter={mixins:[Animate],args:"target",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:"uk-filter-control",cls:"uk-active",animation:250},computed:{toggles:function(ref,$el){ref.attrItem;return $$("["+this.attrItem+"],[data-"+this.attrItem+"]",$el)},target:function(ref,$el){return $(ref.target,$el)}},events:[{name:"click",delegate:function(){return"["+this.attrItem+"],[data-"+this.attrItem+"]"},handler:function(e){e.preventDefault(),this.apply(e.current)}}],connected:function(){var this$1=this;if(!1!==this.selActive){var actives=$$(this.selActive,this.$el);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,includes(actives,el))})}},update:function(data$$1){var toggles=data$$1.toggles,children=data$$1.children;isEqualList(toggles,this.toggles,!1)&&isEqualList(children,this.target.children,!1)||(data$$1.toggles=this.toggles,data$$1.children=this.target.children,this.setState(this.getState(),!1))},methods:{apply:function(el){this.setState(mergeState(el,this.attrItem,this.getState()))},getState:function(){var this$1=this;return this.toggles.filter(function(item){return hasClass(item,this$1.cls)}).reduce(function(state,el){return mergeState(el,this$1.attrItem,state)},{filter:{"":""},sort:[]})},setState:function(state,animate$$1){var this$1=this;void 0===animate$$1&&(animate$$1=!0),state=assign({filter:{"":""},sort:[]},state),trigger(this.$el,"beforeFilter",[this,state]);var children=toNodes(this.target.children);this.toggles.forEach(function(el){return toggleClass(el,this$1.cls,function(el,attr$$1,ref){var stateFilter=ref.filter,ref_sort=ref.sort,stateSort=ref_sort[0],stateOrder=ref_sort[1],ref$1=getFilter(el,attr$$1),filter$$1=ref$1.filter,group=ref$1.group;void 0===group&&(group="");var sort=ref$1.sort,order=ref$1.order;void 0===order&&(order="asc");return Boolean((filter$$1||isUndefined(sort))&&group in stateFilter&&(filter$$1===stateFilter[group]||isUndefined(filter$$1)&&!stateFilter[group])||stateSort&&sort&&stateSort===sort&&stateOrder===order)}(el,this$1.attrItem,state))});var apply$$1=function(){var selector=function(ref){var selector="";return each(ref.filter,function(value){return selector+=value||""}),selector}(state);children.forEach(function(el){return css(el,"display",selector&&!matches(el,selector)?"none":"")});var ref=state.sort,sort=ref[0],order=ref[1];if(sort){var sorted=function(nodes,sort,order){return toNodes(nodes).sort(function(a,b){return data(a,sort).localeCompare(data(b,sort))*("asc"===order||-1)})}(children,sort,order);isEqualList(sorted,children)||sorted.forEach(function(el){return append(this$1.target,el)})}};animate$$1?this.animate(apply$$1).then(function(){return trigger(this$1.$el,"afterFilter",[this$1])}):(apply$$1(),trigger(this.$el,"afterFilter",[this]))}}};function getFilter(el,attr$$1){return parseOptions(data(el,attr$$1),["filter"])}function mergeState(el,attr$$1,state){return toNodes(el).forEach(function(el){var filterBy=getFilter(el,attr$$1),filter$$1=filterBy.filter,group=filterBy.group,sort=filterBy.sort,order=filterBy.order;void 0===order&&(order="asc"),(filter$$1||isUndefined(sort))&&(group?(delete state.filter[""],state.filter[group]=filter$$1):state.filter={"":filter$$1}),isUndefined(sort)||(state.sort=[sort,order])}),state}function isEqualList(listA,listB,strict){return void 0===strict&&(strict=!0),listA=toNodes(listA),listB=toNodes(listB),listA.length===listB.length&&listA.every(function(el,i){return strict?el===listB[i]:~listB.indexOf(el)})}var Animations={slide:{show:function(dir){return[{transform:translate(-100*dir)},{transform:translate()}]},percent:function(current){return translated(current)},translate:function(percent,dir){return[{transform:translate(-100*dir*percent)},{transform:translate(100*dir*(1-percent))}]}}};function translated(el){return Math.abs(css(el,"transform").split(",")[4]/el.offsetWidth)||0}function translate(value,unit){return void 0===value&&(value=0),void 0===unit&&(unit="%"),"translateX("+value+(value?unit:"")+")"}function scale3d(value){return"scale3d("+value+", "+value+", 1)"}var Animations$1=assign({},Animations,{fade:{show:function(){return[{opacity:0},{opacity:1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent},{opacity:percent}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(.8)},{opacity:1,transform:scale3d(1)}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1-.2*percent)},{opacity:percent,transform:scale3d(.8+.2*percent)}]}}});function triggerUpdate(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}var Slider={attrs:!0,mixins:[{props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected:function(){this.startAutoplay()},disconnected:function(){this.stopAutoplay()},events:[{name:"visibilitychange",el:document,handler:function(){document.hidden?this.stopAutoplay():this.startAutoplay()}},{name:pointerDown,handler:"stopAutoplay"},{name:"mouseenter",filter:function(){return this.autoplay},handler:function(){this.isHovering=!0}},{name:"mouseleave",filter:function(){return this.autoplay},handler:function(){this.isHovering=!1}}],methods:{startAutoplay:function(){var this$1=this;this.stopAutoplay(),this.autoplay&&(this.interval=setInterval(function(){return!(this$1.isHovering&&this$1.pauseOnHover)&&!this$1.stack.length&&this$1.show("next")},this.autoplayInterval))},stopAutoplay:function(){this.interval&&clearInterval(this.interval)}}},{data:{threshold:10,preventCatch:!1},init:function(){var this$1=this;["start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){var pos=getPos$1(e).x*(isRtl?-1:1);this$1.prevPos=pos!==this$1.pos?this$1.pos:this$1.prevPos,this$1.pos=pos,fn(e)}})},events:[{name:pointerDown,delegate:function(){return this.slidesSelector},handler:function(e){var el;!isTouch(e)&&(el=e.target,!el.children.length&&el.childNodes.length)||e.button>0||this.length<2||this.preventCatch||this.start(e)}},{name:"dragstart",handler:function(e){e.preventDefault()}}],methods:{start:function(){this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.translate(this.percent),this._transitioner.cancel(),this.dragging=!0,this.stack=[]):this.prevIndex=this.index,this.unbindMove=on(document,pointerMove,this.move,{capture:!0,passive:!1}),on(window,"scroll",this.unbindMove),on(document,pointerUp,this.end,!0)},move:function(e){var this$1=this,distance=this.pos-this.drag;if(!(0===distance||this.prevPos===this.pos||!this.dragging&&Math.abs(distance)<this.threshold)){e.cancelable&&e.preventDefault(),this.dragging=!0,this.dir=distance<0?1:-1;for(var slides=this.slides,prevIndex=this.prevIndex,dis=Math.abs(distance),nextIndex=this.getIndex(prevIndex+this.dir,prevIndex),width$$1=this._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;nextIndex!==prevIndex&&dis>width$$1;)this$1.drag-=width$$1*this$1.dir,prevIndex=nextIndex,dis-=width$$1,nextIndex=this$1.getIndex(prevIndex+this$1.dir,prevIndex),width$$1=this$1._getDistance(prevIndex,nextIndex)||slides[prevIndex].offsetWidth;this.percent=dis/width$$1;var itemShown,prev=slides[prevIndex],next=slides[nextIndex],changed=this.index!==nextIndex,edge=prevIndex===nextIndex;[this.index,this.prevIndex].filter(function(i){return!includes([nextIndex,prevIndex],i)}).forEach(function(i){trigger(slides[i],"itemhidden",[this$1]),edge&&(itemShown=!0,this$1.prevIndex=prevIndex)}),(this.index===prevIndex&&this.prevIndex!==prevIndex||itemShown)&&trigger(slides[this.index],"itemshown",[this]),changed&&(this.prevIndex=prevIndex,this.index=nextIndex,!edge&&trigger(prev,"beforeitemhide",[this]),trigger(next,"beforeitemshow",[this])),this._transitioner=this._translate(Math.abs(this.percent),prev,!edge&&next),changed&&(!edge&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]))}},end:function(){if(off(window,"scroll",this.unbindMove),this.unbindMove(),off(document,pointerUp,this.end,!0),this.dragging){if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{var dirChange=(isRtl?this.dir*(isRtl?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=dirChange?this.index:this.prevIndex,dirChange&&(this.percent=1-this.percent),this.show(this.dir>0&&!dirChange||this.dir<0&&dirChange?"next":"previous",!0)}preventClick()}this.drag=this.percent=null}}},{data:{selNav:!1},computed:{nav:function(ref,$el){return $(ref.selNav,$el)},navItemSelector:function(ref){var attrItem=ref.attrItem;return"["+attrItem+"],[data-"+attrItem+"]"},navItems:function(_,$el){return $$(this.navItemSelector,$el)}},update:[{write:function(){var this$1=this;this.nav&&this.length!==this.nav.children.length&&html(this.nav,this.slides.map(function(_,i){return"<li "+this$1.attrItem+'="'+i+'"><a href="#"></a></li>'}).join("")),toggleClass($$(this.navItemSelector,this.$el).concat(this.nav),"uk-hidden",!this.maxIndex),this.updateNav()},events:["load","resize"]}],events:[{name:"click",delegate:function(){return this.navItemSelector},handler:function(e){e.preventDefault(),e.current.blur(),this.show(data(e.current,this.attrItem))}},{name:"itemshow",handler:"updateNav"}],methods:{updateNav:function(){var this$1=this,i=this.getValidIndex();this.navItems.forEach(function(el){var cmd=data(el,this$1.attrItem);toggleClass(el,this$1.clsActive,toNumber(cmd)===i),toggleClass(el,"uk-invisible",this$1.finite&&("previous"===cmd&&0===i||"next"===cmd&&i>=this$1.maxIndex))})}}}],props:{clsActivated:Boolean,easing:String,index:Number,finite:Boolean,velocity:Number},data:function(){return{easing:"ease",finite:!1,velocity:1,index:0,stack:[],percent:0,clsActive:"uk-active",clsActivated:!1,Transitioner:!1,transitionOptions:{}}},computed:{duration:function(ref,$el){var velocity=ref.velocity;return speedUp($el.offsetWidth/velocity)},length:function(){return this.slides.length},list:function(ref,$el){return $(ref.selList,$el)},maxIndex:function(){return this.length-1},slidesSelector:function(ref){return ref.selList+" > *"},slides:function(){return toNodes(this.list.children)}},events:{itemshown:function(){this.$update(this.list)}},methods:{show:function(index$$1,force){var this$1=this;if(void 0===force&&(force=!1),!this.dragging&&this.length){var stack=this.stack,queueIndex=force?0:stack.length,reset=function(){stack.splice(queueIndex,1),stack.length&&this$1.show(stack.shift(),!0)};if(stack[force?"unshift":"push"](index$$1),!force&&stack.length>1)2===stack.length&&this._transitioner.forward(Math.min(this.duration,200));else{var prevIndex=this.index,prev=hasClass(this.slides,this.clsActive)&&this.slides[prevIndex],nextIndex=this.getIndex(index$$1,this.index),next=this.slides[nextIndex];if(prev!==next){if(this.dir=function(index$$1,prevIndex){return"next"===index$$1?1:"previous"===index$$1?-1:index$$1<prevIndex?-1:1}(index$$1,prevIndex),this.prevIndex=prevIndex,this.index=nextIndex,prev&&trigger(prev,"beforeitemhide",[this]),!trigger(next,"beforeitemshow",[this,prev]))return this.index=this.prevIndex,void reset();var promise=this._show(prev,next,force).then(function(){return prev&&trigger(prev,"itemhidden",[this$1]),trigger(next,"itemshown",[this$1]),new Promise$1(function(resolve){fastdom.write(function(){stack.shift(),stack.length?this$1.show(stack.shift(),!0):this$1._transitioner=null,resolve()})})});return prev&&trigger(prev,"itemhide",[this]),trigger(next,"itemshow",[this]),promise}reset()}}},getIndex:function(index$$1,prev){return void 0===index$$1&&(index$$1=this.index),void 0===prev&&(prev=this.index),clamp(getIndex(index$$1,this.slides,prev,this.finite),0,this.maxIndex)},getValidIndex:function(index$$1,prevIndex){return void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),this.getIndex(index$$1,prevIndex)},_show:function(prev,next,force){if(this._transitioner=this._getTransitioner(prev,next,this.dir,assign({easing:force?next.offsetWidth<600?"cubic-bezier(0.25, 0.46, 0.45, 0.94)":"cubic-bezier(0.165, 0.84, 0.44, 1)":this.easing},this.transitionOptions)),!force&&!prev)return this._transitioner.translate(1),Promise$1.resolve();var length=this.stack.length;return this._transitioner[length>1?"forward":"show"](length>1?Math.min(this.duration,75+75/(length-1)):this.duration,this.percent)},_getDistance:function(prev,next){return new this._getTransitioner(prev,prev!==next&&next).getDistance()},_translate:function(percent,prev,next){void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index);var transitioner=this._getTransitioner(prev!==next&&prev,next);return transitioner.translate(percent),transitioner},_getTransitioner:function(prev,next,dir,options){return void 0===prev&&(prev=this.prevIndex),void 0===next&&(next=this.index),void 0===dir&&(dir=this.dir||1),void 0===options&&(options=this.transitionOptions),new this.Transitioner(isNumber(prev)?this.slides[prev]:prev,isNumber(next)?this.slides[next]:next,dir*(isRtl?-1:1),options)}}};function speedUp(x){return.5*x+300}var Slideshow={mixins:[Slider],props:{animation:String},data:{animation:"slide",clsActivated:"uk-transition-active",Animations:Animations,Transitioner:function(prev,next,dir,ref){var animation=ref.animation,easing=ref.easing,percent=animation.percent,translate=animation.translate,show=animation.show;void 0===show&&(show=noop);var props=show(dir),deferred=new Deferred;return{dir:dir,show:function(duration,percent,linear){var this$1=this;void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),triggerUpdate(next,"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),triggerUpdate(prev,"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Promise$1.all([Transition.start(next,props[1],duration,timing),Transition.start(prev,props[0],duration,timing)]).then(function(){this$1.reset(),deferred.resolve()},noop),deferred.promise},stop:function(){return Transition.stop([next,prev])},cancel:function(){Transition.cancel([next,prev])},reset:function(){for(var prop in props[0])css([next,prev],prop,"")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel([next,prev]),this.show(duration,percent,!0)},translate:function(percent){this.reset();var props=translate(percent,dir);css(next,props[1]),css(prev,props[0]),triggerUpdate(next,"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate(prev,"itemtranslateout",{percent:1-percent,dir:dir})},percent:function(){return percent(prev||next,next,dir)},getDistance:function(){return prev.offsetWidth}}}},computed:{animation:function(ref){var animation=ref.animation,Animations$$1=ref.Animations;return assign(animation in Animations$$1?Animations$$1[animation]:Animations$$1.slide,{name:animation})},transitionOptions:function(){return{animation:this.animation}}},events:{"itemshow itemhide itemshown itemhidden":function(ref){var target=ref.target;this.$update(target)},itemshow:function(){isNumber(this.prevIndex)&&fastdom.flush()},beforeitemshow:function(ref){addClass(ref.target,this.clsActive)},itemshown:function(ref){addClass(ref.target,this.clsActivated)},itemhidden:function(ref){removeClass(ref.target,this.clsActive,this.clsActivated)}}},LightboxPanel={mixins:[Container,Modal,Togglable,Slideshow],functional:!0,props:{delayControls:Number,preload:Number,videoAutoplay:Boolean,template:String},data:function(){return{preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:"uk-open",clsPage:"uk-lightbox-page",selList:".uk-lightbox-items",attrItem:"uk-lightbox-item",selClose:".uk-close-large",pauseOnHover:!1,velocity:2,Animations:Animations$1,template:'<div class="uk-lightbox uk-overflow-hidden"> <ul class="uk-lightbox-items"></ul> <div class="uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque"> <button class="uk-lightbox-toolbar-icon uk-close-large" type="button" uk-close></button> </div> <a class="uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade" href="#" uk-slidenav-previous uk-lightbox-item="previous"></a> <a class="uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade" href="#" uk-slidenav-next uk-lightbox-item="next"></a> <div class="uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque"></div> </div>'}},created:function(){var this$1=this;this.$mount(append(this.container,this.template)),this.caption=$(".uk-lightbox-caption",this.$el),this.items.forEach(function(){return append(this$1.list,"<li></li>")})},events:[{name:pointerMove+" "+pointerDown+" keydown",handler:"showControls"},{name:"click",self:!0,delegate:function(){return this.slidesSelector},handler:function(e){e.preventDefault(),this.hide()}},{name:"shown",self:!0,handler:"showControls"},{name:"hide",self:!0,handler:function(){this.hideControls(),removeClass(this.slides,this.clsActive),Transition.stop(this.slides)}},{name:"keyup",el:document,handler:function(e){if(this.isToggled(this.$el))switch(e.keyCode){case 37:this.show("previous");break;case 39:this.show("next")}}},{name:"beforeitemshow",handler:function(e){this.isToggled()||(this.preventCatch=!0,e.preventDefault(),this.toggleNow(this.$el,!0),this.animation=Animations$1.scale,removeClass(e.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:"itemshow",handler:function(ref){var i=index(ref.target),caption=this.getItem(i).caption;css(this.caption,"display",caption?"":"none"),html(this.caption,caption);for(var j=0;j<=this.preload;j++)this.loadItem(this.getIndex(i+j)),this.loadItem(this.getIndex(i-j))}},{name:"itemshown",handler:function(){this.preventCatch=!1}},{name:"itemload",handler:function(_,item){var matches$$1,this$1=this,source=item.source,type=item.type,alt=item.alt;if(this.setItem(item,"<span uk-spinner></span>"),source)if("image"===type||source.match(/\.(jp(e)?g|png|gif|svg)($|\?)/i))getImage(source).then(function(img){return this$1.setItem(item,'<img width="'+img.width+'" height="'+img.height+'" src="'+source+'" alt="'+(alt||"")+'">')},function(){return this$1.setError(item)});else if("video"===type||source.match(/\.(mp4|webm|ogv)($|\?)/i)){var video=$("<video controls playsinline"+(item.poster?' poster="'+item.poster+'"':"")+' uk-video="'+this.videoAutoplay+'"></video>');attr(video,"src",source),on(video,"error",function(){return this$1.setError(item)}),on(video,"loadedmetadata",function(){attr(video,{width:video.videoWidth,height:video.videoHeight}),this$1.setItem(item,video)})}else if("iframe"===type||source.match(/\.(html|php)($|\?)/i))this.setItem(item,'<iframe class="uk-lightbox-iframe" src="'+source+'" frameborder="0" allowfullscreen></iframe>');else if(matches$$1=source.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/watch\?v=([^&\s]+)/)||source.match(/()youtu\.be\/(.*)/)){var id=matches$$1[2],setIframe=function(width$$1,height$$1){return void 0===width$$1&&(width$$1=640),void 0===height$$1&&(height$$1=450),this$1.setItem(item,getIframe("https://www.youtube"+(matches$$1[1]||"")+".com/embed/"+id,width$$1,height$$1,this$1.videoAutoplay))};getImage("https://img.youtube.com/vi/"+id+"/maxresdefault.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;120===width$$1&&90===height$$1?getImage("https://img.youtube.com/vi/"+id+"/0.jpg").then(function(ref){var width$$1=ref.width,height$$1=ref.height;return setIframe(width$$1,height$$1)},setIframe):setIframe(width$$1,height$$1)},setIframe)}else(matches$$1=source.match(/(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/))&&ajax("https://vimeo.com/api/oembed.json?maxwidth=1920&url="+encodeURI(source),{responseType:"json",withCredentials:!1}).then(function(ref){var ref_response=ref.response,height$$1=ref_response.height,width$$1=ref_response.width;return this$1.setItem(item,getIframe("https://player.vimeo.com/video/"+matches$$1[2],width$$1,height$$1,this$1.videoAutoplay))},function(){return this$1.setError(item)})}}],methods:{loadItem:function(index$$1){void 0===index$$1&&(index$$1=this.index);var item=this.getItem(index$$1);item.content||trigger(this.$el,"itemload",[item])},getItem:function(index$$1){return void 0===index$$1&&(index$$1=this.index),this.items[index$$1]||{}},setItem:function(item,content){assign(item,{content:content});var el=html(this.slides[this.items.indexOf(item)],content);trigger(this.$el,"itemloaded",[this,el]),this.$update(el)},setError:function(item){this.setItem(item,'<span uk-icon="icon: bolt; ratio: 2"></span>')},showControls:function(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),addClass(this.$el,"uk-active","uk-transition-active")},hideControls:function(){removeClass(this.$el,"uk-active","uk-transition-active")}}};function getIframe(src,width$$1,height$$1,autoplay){return'<iframe src="'+src+'" width="'+width$$1+'" height="'+height$$1+'" style="max-width: 100%; box-sizing: border-box;" frameborder="0" allowfullscreen uk-video="autoplay: '+autoplay+'" uk-responsive></iframe>'}var obj,props=merge(LightboxPanel,"props"),defaults=merge(LightboxPanel,"data"),Lightbox={install:function(UIkit){UIkit.lightboxPanel||UIkit.component("lightboxPanel",LightboxPanel)},attrs:!0,props:assign({toggle:String},props),data:assign({toggle:"a"},Object.keys(props).reduce(function(data$$1,key){return data$$1[key]=defaults[key],data$$1},{})),computed:{toggles:function(ref,$el){return $$(ref.toggle,$el)}},disconnected:function(){this._destroy()},events:[{name:"click",delegate:function(){return this.toggle+":not(.uk-disabled)"},handler:function(e){e.preventDefault(),e.current.blur(),this.show(index(this.toggles,e.current))}}],update:function(data$$1){var listA,listB;(data$$1.toggles=data$$1.toggles||this.toggles,this.panel&&this.animation&&(this.panel.$props.animation=this.animation,this.panel.$emit()),this.panel&&(listA=data$$1.toggles,listB=this.toggles,listA.length!==listB.length||!listA.every(function(el,i){return el===listB[i]})))&&(data$$1.toggles=this.toggles,this._destroy(),this._init())},methods:{_init:function(){return this.panel=this.panel||this.$create("lightboxPanel",assign({},this.$props,{items:this.toggles.reduce(function(items,el){return items.push(["href","caption","type","poster","alt"].reduce(function(obj,attr$$1){return obj["href"===attr$$1?"source":attr$$1]=data(el,attr$$1),obj},{})),items},[])}))},_destroy:function(){this.panel&&(this.panel.$destroy(!0),this.panel=null)},show:function(index$$1){return this.panel||this._init(),this.panel.show(index$$1)},hide:function(){return this.panel&&this.panel.hide()}}};function merge(options,prop){return assign.apply(void 0,[{}].concat(options.mixins?options.mixins.map(function(mixin){return merge(mixin,prop)}):[],[isFunction(options[prop])?options[prop]():options[prop]]))}var containers={},Notification={functional:!0,args:["message","status"],data:{message:"",status:"",timeout:5e3,group:null,pos:"top-center",clsClose:"uk-notification-close",clsMsg:"uk-notification-message"},install:function(UIkit){UIkit.notification.closeAll=function(group,immediate){apply(document.body,function(el){var notification=UIkit.getComponent(el,"notification");!notification||group&&group!==notification.group||notification.close(immediate)})}},created:function(){containers[this.pos]||(containers[this.pos]=append(this.$container,'<div class="uk-notification uk-notification-'+this.pos+'"></div>'));var container=css(containers[this.pos],"display","block");this.$mount(append(container,'<div class="'+this.clsMsg+(this.status?" "+this.clsMsg+"-"+this.status:"")+'"> <a href="#" class="'+this.clsClose+'" data-uk-close></a> <div>'+this.message+"</div> </div>"))},ready:function(){var this$1=this,marginBottom=toFloat(css(this.$el,"marginBottom"));Transition.start(css(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}),{opacity:1,marginTop:0,marginBottom:marginBottom}).then(function(){this$1.timeout&&(this$1.timer=setTimeout(this$1.close,this$1.timeout))})},events:(obj={click:function(e){closest(e.target,'a[href="#"]')&&e.preventDefault(),this.close()}},obj[pointerEnter]=function(){this.timer&&clearTimeout(this.timer)},obj[pointerLeave]=function(){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},obj),methods:{close:function(immediate){var this$1=this,removeFn=function(){trigger(this$1.$el,"close",[this$1]),remove(this$1.$el),containers[this$1.pos].children.length||css(containers[this$1.pos],"display","none")};this.timer&&clearTimeout(this.timer),immediate?removeFn():Transition.start(this.$el,{opacity:0,marginTop:-this.$el.offsetHeight,marginBottom:0}).then(removeFn)}}};var props$1=["x","y","bgx","bgy","rotate","scale","color","backgroundColor","borderColor","opacity","blur","hue","grayscale","invert","saturate","sepia","fopacity"],Parallax={props:props$1.reduce(function(props,prop){return props[prop]="list",props},{media:"media"}),data:props$1.reduce(function(data$$1,prop){return data$$1[prop]=void 0,data$$1},{media:!1}),computed:{props:function(properties,$el){var this$1=this;return props$1.reduce(function(props,prop){if(isUndefined(properties[prop]))return props;var pos,bgPos,diff,isColor=prop.match(/color/i),isCssProp=isColor||"opacity"===prop,steps=properties[prop].slice(0);isCssProp&&css($el,prop,""),steps.length<2&&steps.unshift(("scale"===prop?1:isCssProp?css($el,prop):0)||0);var unit=includes(steps.join(""),"%")?"%":"px";if(isColor){var color=$el.style.color;steps=steps.map(function(step){return css(css($el,"color",step),"color").split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(function(n){return toFloat(n)})}),$el.style.color=color}else steps=steps.map(toFloat);if(prop.match(/^bg/))if(css($el,"background-position-"+prop[2],""),bgPos=css($el,"backgroundPosition").split(" ")["x"===prop[2]?0:1],this$1.covers){var min=Math.min.apply(Math,steps),max=Math.max.apply(Math,steps),down=steps.indexOf(min)<steps.indexOf(max);diff=max-min,steps=steps.map(function(step){return step-(down?min:max)}),pos=(down?-diff:0)+"px"}else pos=bgPos;return props[prop]={steps:steps,unit:unit,pos:pos,bgPos:bgPos,diff:diff},props},{})},bgProps:function(){var this$1=this;return["bgx","bgy"].filter(function(bg){return bg in this$1.props})},covers:function(_,$el){return function(el){var backgroundSize=el.style.backgroundSize,covers="cover"===css(css(el,"backgroundSize",""),"backgroundSize");return el.style.backgroundSize=backgroundSize,covers}($el)}},disconnected:function(){delete this._image},update:[{read:function(data$$1){var this$1=this;if(data$$1.active=!this.media||window.matchMedia(this.media).matches,data$$1.image&&(data$$1.image.dimEl={width:this.$el.offsetWidth,height:this.$el.offsetHeight}),!("image"in data$$1)&&this.covers&&this.bgProps.length){var src=css(this.$el,"backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/,"$1");src&&(data$$1.image=!1,getImage(src).then(function(img){data$$1.image={width:img.naturalWidth,height:img.naturalHeight},this$1.$emit()}))}},write:function(ref){var this$1=this,image=ref.image,active=ref.active;if(image)if(active){var dimEl=image.dimEl,dim=Dimensions.cover(image,dimEl);this.bgProps.forEach(function(prop){var ref=this$1.props[prop],diff=ref.diff,bgPos=ref.bgPos,steps=ref.steps,attr$$1="bgy"===prop?"height":"width",span=dim[attr$$1]-dimEl[attr$$1];if(bgPos.match(/%$|0px/)){if(span<diff)dimEl[attr$$1]=dim[attr$$1]+diff-span;else if(span>diff){var bgPosFloat=parseFloat(bgPos);bgPosFloat&&(this$1.props[prop].steps=steps.map(function(step){return step-(span-diff)/(100/bgPosFloat)}))}dim=Dimensions.cover(image,dimEl)}}),css(this.$el,{backgroundSize:dim.width+"px "+dim.height+"px",backgroundRepeat:"no-repeat"})}else css(this.$el,{backgroundSize:"",backgroundRepeat:""})},events:["load","resize"]}],methods:{reset:function(){var this$1=this;each(this.getCss(0),function(_,prop){return css(this$1.$el,prop,"")})},getCss:function(percent){var props=this.props,translated=!1;return Object.keys(props).reduce(function(css$$1,prop){var ref=props[prop],steps=ref.steps,unit=ref.unit,pos=ref.pos,value=getValue(steps,percent);switch(prop){case"x":case"y":if(translated)break;var ref$1=["x","y"].map(function(dir){return prop===dir?value+unit:props[dir]?getValue(props[dir].steps,percent)+props[dir].unit:0}),x=ref$1[0],y=ref$1[1];translated=css$$1.transform+=" translate3d("+x+", "+y+", 0)";break;case"rotate":css$$1.transform+=" rotate("+value+"deg)";break;case"scale":css$$1.transform+=" scale("+value+")";break;case"bgy":case"bgx":css$$1["background-position-"+prop[2]]="calc("+pos+" + "+(value+unit)+")";break;case"color":case"backgroundColor":case"borderColor":var ref$2=getStep(steps,percent),start=ref$2[0],end=ref$2[1],p=ref$2[2];css$$1[prop]="rgba("+start.map(function(value,i){return value+=p*(end[i]-value),3===i?toFloat(value):parseInt(value,10)}).join(",")+")";break;case"blur":css$$1.filter+=" blur("+value+"px)";break;case"hue":css$$1.filter+=" hue-rotate("+value+"deg)";break;case"fopacity":css$$1.filter+=" opacity("+value+"%)";break;case"grayscale":case"invert":case"saturate":case"sepia":css$$1.filter+=" "+prop+"("+value+"%)";break;default:css$$1[prop]=value}return css$$1},{transform:"",filter:""})}}};function getStep(steps,percent){var count=steps.length-1,index$$1=Math.min(Math.floor(count*percent),count-1),step=steps.slice(index$$1,index$$1+2);return step.push(1===percent?1:percent%(1/count)*count),step}function getValue(steps,percent){var ref=getStep(steps,percent),start=ref[0],end=ref[1],p=ref[2];return(isNumber(start)?start+Math.abs(start-end)*p*(start<end?1:-1):+end).toFixed(2)}var Parallax$1={mixins:[Parallax],props:{target:String,viewport:Number,easing:Number},data:{target:!1,viewport:1,easing:1},computed:{target:function(ref,$el){var target=ref.target;return target&&query(target,$el)||$el}},update:[{read:function(ref){return{prev:ref.percent,percent:function(percent,easing){return clamp(percent*(1-(easing-easing*percent)))}(scrolledOver(this.target)/(this.viewport||1),this.easing)}},write:function(ref,ref$1){var prev=ref.prev,percent=ref.percent,active=ref.active;"scroll"!==ref$1.type&&(prev=!1),active?prev!==percent&&css(this.$el,this.getCss(percent)):this.reset()},events:["scroll","load","resize"]}]};var SliderReactive={update:[{write:function(){if(!this.stack.length&&!this.dragging){var index$$1=this.getValidIndex();delete this.index,removeClass(this.slides,this.clsActive,this.clsActivated),this.show(index$$1)}},events:["load","resize"]}]};function getLeft(el,list,center){var left=getElLeft(el,list);return center?left-function(el,list){return list.offsetWidth/2-el.offsetWidth/2}(el,list):Math.min(left,getMax(list))}function getMax(list){return Math.max(0,getWidth(list)-list.offsetWidth)}function getWidth(list){return slides(list).reduce(function(right,el){return el.offsetWidth+right},0)}function getElLeft(el,list){return(el.offsetLeft+(isRtl?el.offsetWidth-list.offsetWidth:0))*(isRtl?-1:1)}function triggerUpdate$1(el,type,data$$1){trigger(el,createEvent(type,!1,!1,data$$1))}function slides(list){return toNodes(list.children)}var Slider$1={mixins:[Class,Slider,SliderReactive],props:{center:Boolean,sets:Boolean},data:{center:!1,sets:!1,attrItem:"uk-slider-item",selList:".uk-slider-items",selNav:".uk-slider-nav",clsContainer:"uk-slider-container",Transitioner:function(prev,next,dir,ref){var center=ref.center,easing=ref.easing,list=ref.list,deferred=new Deferred,from=prev?getLeft(prev,list,center):getLeft(next,list,center)+next.offsetWidth*dir,to=next?getLeft(next,list,center):from+prev.offsetWidth*dir*(isRtl?-1:1);return{dir:dir,show:function(duration,percent,linear){void 0===percent&&(percent=0);var timing=linear?"linear":easing;return duration-=Math.round(duration*clamp(percent,-1,1)),this.translate(percent),prev&&this.updateTranslates(),percent=prev?percent:clamp(percent,0,1),triggerUpdate$1(this.getItemIn(),"itemin",{percent:percent,duration:duration,timing:timing,dir:dir}),prev&&triggerUpdate$1(this.getItemIn(!0),"itemout",{percent:1-percent,duration:duration,timing:timing,dir:dir}),Transition.start(list,{transform:translate(-to*(isRtl?-1:1),"px")},duration,timing).then(deferred.resolve,noop),deferred.promise},stop:function(){return Transition.stop(list)},cancel:function(){Transition.cancel(list)},reset:function(){css(list,"transform","")},forward:function(duration,percent){return void 0===percent&&(percent=this.percent()),Transition.cancel(list),this.show(duration,percent,!0)},translate:function(percent){var distance=this.getDistance()*dir*(isRtl?-1:1);css(list,"transform",translate(clamp(distance-distance*percent-to,-getWidth(list),list.offsetWidth)*(isRtl?-1:1),"px")),this.updateTranslates(),prev&&(percent=clamp(percent,-1,1),triggerUpdate$1(this.getItemIn(),"itemtranslatein",{percent:percent,dir:dir}),triggerUpdate$1(this.getItemIn(!0),"itemtranslateout",{percent:1-percent,dir:dir}))},percent:function(){return Math.abs((css(list,"transform").split(",")[4]*(isRtl?-1:1)+from)/(to-from))},getDistance:function(){return Math.abs(to-from)},getItemIn:function(out){void 0===out&&(out=!1);var actives=this.getActives(),all=sortBy(slides(list),"offsetLeft"),i=index(all,actives[dir*(out?-1:1)>0?actives.length-1:0]);return~i&&all[i+(prev&&!out?dir:0)]},getActives:function(){var left=getLeft(prev||next,list,center);return sortBy(slides(list).filter(function(slide){var slideLeft=getElLeft(slide,list);return slideLeft>=left&&slideLeft+slide.offsetWidth<=list.offsetWidth+left}),"offsetLeft")},updateTranslates:function(){var actives=this.getActives();slides(list).forEach(function(slide){var isActive=includes(actives,slide);triggerUpdate$1(slide,"itemtranslate"+(isActive?"in":"out"),{percent:isActive?1:0,dir:slide.offsetLeft<=next.offsetLeft?1:-1})})}}}},computed:{avgWidth:function(){return getWidth(this.list)/this.length},finite:function(ref){return ref.finite||getWidth(this.list)<this.list.offsetWidth+slides(this.list).reduce(function(right,el){return Math.max(right,el.offsetWidth)},0)+this.center},maxIndex:function(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return this.sets[this.sets.length-1];css(this.slides,"order","");for(var max=getMax(this.list),i=this.length;i--;)if(getElLeft(this.list.children[i],this.list)<max)return Math.min(i+1,this.length-1);return 0},sets:function(ref){var this$1=this,sets=ref.sets,width$$1=this.list.offsetWidth/(this.center?2:1),left=0,leftCenter=width$$1,slideLeft=0;return(sets=sets&&this.slides.reduce(function(sets,slide,i){var slideWidth=offset(slide).width;if(slideLeft+slideWidth>left&&(!this$1.center&&i>this$1.maxIndex&&(i=this$1.maxIndex),!includes(sets,i))){var cmp=this$1.slides[i+1];this$1.center&&cmp&&slideWidth<leftCenter-offset(cmp).width/2?leftCenter-=slideWidth:(leftCenter=width$$1,sets.push(i),left=slideLeft+width$$1+(this$1.center?slideWidth/2:0))}return slideLeft+=slideWidth,sets},[]))&&sets.length&&sets},transitionOptions:function(){return{center:this.center,list:this.list}}},connected:function(){toggleClass(this.$el,this.clsContainer,!$("."+this.clsContainer,this.$el))},update:{write:function(){var this$1=this;$$("["+this.attrItem+"],[data-"+this.attrItem+"]",this.$el).forEach(function(el){var index$$1=data(el,this$1.attrItem);this$1.maxIndex&&toggleClass(el,"uk-hidden",isNumeric(index$$1)&&(this$1.sets&&!includes(this$1.sets,toFloat(index$$1))||index$$1>this$1.maxIndex))})},events:["load","resize"]},events:{beforeitemshow:function(e){!this.dragging&&this.sets&&this.stack.length<2&&!includes(this.sets,this.index)&&(this.index=this.getValidIndex());var diff=Math.abs(this.index-this.prevIndex+(this.dir>0&&this.index<this.prevIndex||this.dir<0&&this.index>this.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&diff>1){for(var i=0;i<diff;i++)this.stack.splice(1,0,this.dir>0?"next":"previous");e.preventDefault()}else this.duration=speedUp(this.avgWidth/this.velocity)*((this.dir<0||!this.slides[this.prevIndex]?this.slides[this.index]:this.slides[this.prevIndex]).offsetWidth/this.avgWidth),this.reorder()},itemshow:function(){!isUndefined(this.prevIndex)&&addClass(this._getTransitioner().getItemIn(),this.clsActive)},itemshown:function(){var this$1=this,actives=this._getTransitioner(this.index).getActives();this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActive,includes(actives,slide))}),(!this.sets||includes(this.sets,toFloat(this.index)))&&this.slides.forEach(function(slide){return toggleClass(slide,this$1.clsActivated,includes(actives,slide))})}},methods:{reorder:function(){var this$1=this;if(css(this.slides,"order",""),!this.finite){var index$$1=this.dir>0&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach(function(slide,i){return css(slide,"order",this$1.dir>0&&i<index$$1?1:this$1.dir<0&&i>=this$1.index?-1:"")}),this.center)for(var next=this.slides[index$$1],width$$1=this.list.offsetWidth/2-next.offsetWidth/2,j=0;width$$1>0;){var slideIndex=this$1.getIndex(--j+index$$1,index$$1),slide=this$1.slides[slideIndex];css(slide,"order",slideIndex>index$$1?-2:-1),width$$1-=slide.offsetWidth}}},getValidIndex:function(index$$1,prevIndex){var prev;if(void 0===index$$1&&(index$$1=this.index),void 0===prevIndex&&(prevIndex=this.prevIndex),index$$1=this.getIndex(index$$1,prevIndex),!this.sets)return index$$1;do{if(includes(this.sets,index$$1))return index$$1;prev=index$$1,index$$1=this.getIndex(index$$1+this.dir,prevIndex)}while(index$$1!==prev);return index$$1}}},SliderParallax={mixins:[Parallax],data:{selItem:"!li"},computed:{item:function(ref,$el){return query(ref.selItem,$el)}},events:[{name:"itemshown",self:!0,el:function(){return this.item},handler:function(){css(this.$el,this.getCss(.5))}},{name:"itemin itemout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,duration=ref_detail.duration,timing=ref_detail.timing,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent))),Transition.start(this.$el,this.getCss(isIn(type)?.5:dir>0?1:0),duration,timing).catch(noop)}},{name:"transitioncanceled transitionend",self:!0,el:function(){return this.item},handler:function(){Transition.cancel(this.$el)}},{name:"itemtranslatein itemtranslateout",self:!0,el:function(){return this.item},handler:function(ref){var type=ref.type,ref_detail=ref.detail,percent=ref_detail.percent,dir=ref_detail.dir;Transition.cancel(this.$el),css(this.$el,this.getCss(getCurrent(type,dir,percent)))}}]};function isIn(type){return endsWith(type,"in")}function getCurrent(type,dir,percent){return percent/=2,isIn(type)?dir<0?1-percent:percent:dir<0?percent:1-percent}var obj$1,obj$2,Animations$2=assign({},Animations,{fade:{show:function(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,zIndex:0},{zIndex:-1}]}},scale:{show:function(){return[{opacity:0,transform:scale3d(1.5),zIndex:0},{zIndex:-1}]},percent:function(current){return 1-css(current,"opacity")},translate:function(percent){return[{opacity:1-percent,transform:scale3d(1+.5*percent),zIndex:0},{zIndex:-1}]}},pull:{show:function(dir){return dir<0?[{transform:translate(30),zIndex:-1},{transform:translate(),zIndex:0}]:[{transform:translate(-100),zIndex:0},{transform:translate(),zIndex:-1}]},percent:function(current,next,dir){return dir<0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(30*percent),zIndex:-1},{transform:translate(-100*(1-percent)),zIndex:0}]:[{transform:translate(100*-percent),zIndex:0},{transform:translate(30*(1-percent)),zIndex:-1}]}},push:{show:function(dir){return dir<0?[{transform:translate(100),zIndex:0},{transform:translate(),zIndex:-1}]:[{transform:translate(-30),zIndex:-1},{transform:translate(),zIndex:0}]},percent:function(current,next,dir){return dir>0?1-translated(next):translated(current)},translate:function(percent,dir){return dir<0?[{transform:translate(100*percent),zIndex:0},{transform:translate(-30*(1-percent)),zIndex:-1}]:[{transform:translate(-30*percent),zIndex:-1},{transform:translate(100*(1-percent)),zIndex:0}]}}}),Slideshow$1={mixins:[Class,Slideshow,SliderReactive],props:{ratio:String,minHeight:Boolean,maxHeight:Boolean},data:{ratio:"16:9",minHeight:!1,maxHeight:!1,selList:".uk-slideshow-items",attrItem:"uk-slideshow-item",selNav:".uk-slideshow-nav",Animations:Animations$2},update:{read:function(){var ref=this.ratio.split(":").map(Number),width$$1=ref[0],height$$1=ref[1];return height$$1=height$$1*this.$el.offsetWidth/width$$1,this.minHeight&&(height$$1=Math.max(this.minHeight,height$$1)),this.maxHeight&&(height$$1=Math.min(this.maxHeight,height$$1)),{height:height$$1}},write:function(ref){var hgt=ref.height;height(this.list,Math.floor(hgt))},events:["load","resize"]}},Sortable={mixins:[Class,Animate],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:"uk-sortable-item",clsPlaceholder:"uk-sortable-placeholder",clsDrag:"uk-sortable-drag",clsDragState:"uk-drag",clsBase:"uk-sortable",clsNoDrag:"uk-sortable-nodrag",clsEmpty:"uk-sortable-empty",clsCustom:"",handle:!1},init:function(){var this$1=this;["init","start","move","end"].forEach(function(key){var fn=this$1[key];this$1[key]=function(e){this$1.scrollY=window.pageYOffset;var ref=getPos$1(e),x=ref.x,y=ref.y;this$1.pos={x:x,y:y},fn(e)}})},events:(obj$1={},obj$1[pointerDown]="init",obj$1),update:{write:function(){if(this.clsEmpty&&toggleClass(this.$el,this.clsEmpty,!this.$el.children.length),this.drag){offset(this.drag,{top:this.pos.y+this.origin.top,left:this.pos.x+this.origin.left});var scroll,top=offset(this.drag).top,bottom=top+this.drag.offsetHeight;top>0&&top<this.scrollY?scroll=this.scrollY-5:bottom<height(document)&&bottom>height(window)+this.scrollY&&(scroll=this.scrollY+5),scroll&&setTimeout(function(){return window.scroll(window.pageXOffset,scroll)},5)}}},methods:{init:function(e){var target=e.target,button=e.button,defaultPrevented=e.defaultPrevented,placeholder=toNodes(this.$el.children).filter(function(el){return within(target,el)})[0];!placeholder||isInput(e.target)||this.handle&&!within(target,this.handle)||button>0||within(target,"."+this.clsNoDrag)||defaultPrevented||(e.preventDefault(),this.touched=[this],this.placeholder=placeholder,this.origin=assign({target:target,index:index(placeholder)},this.pos),on(document,pointerMove,this.move),on(document,pointerUp,this.end),on(window,"scroll",this.scroll),this.threshold||this.start(e))},start:function(e){this.drag=append(this.$container,this.placeholder.outerHTML.replace(/^<li/i,"<div").replace(/li>$/i,"div>")),css(this.drag,assign({boxSizing:"border-box",width:this.placeholder.offsetWidth,height:this.placeholder.offsetHeight},css(this.placeholder,["paddingLeft","paddingRight","paddingTop","paddingBottom"]))),attr(this.drag,"uk-no-boot",""),addClass(this.drag,this.clsDrag,this.clsCustom),height(this.drag.firstElementChild,height(this.placeholder.firstElementChild));var ref=offset(this.placeholder),left=ref.left,top=ref.top;assign(this.origin,{left:left-this.pos.x,top:top-this.pos.y}),addClass(this.placeholder,this.clsPlaceholder),addClass(this.$el.children,this.clsItem),addClass(document.documentElement,this.clsDragState),trigger(this.$el,"start",[this,this.placeholder]),this.move(e)},move:function(e){if(this.drag){this.$emit();var target="mousemove"===e.type?e.target:document.elementFromPoint(this.pos.x-document.body.scrollLeft,this.pos.y-document.body.scrollTop),sortable=this.getSortable(target),previous=this.getSortable(this.placeholder),move=sortable!==previous;if(sortable&&!within(target,this.placeholder)&&(!move||sortable.group&&sortable.group===previous.group)){if(target=sortable.$el===target.parentNode&&target||toNodes(sortable.$el.children).filter(function(element){return within(target,element)})[0],move)previous.remove(this.placeholder);else if(!target)return;sortable.insert(this.placeholder,target),includes(this.touched,sortable)||this.touched.push(sortable)}}else(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(e)},scroll:function(){var scroll=window.pageYOffset;scroll!==this.scrollY&&(this.pos.y+=scroll-this.scrollY,this.scrollY=scroll,this.$emit())},end:function(e){if(off(document,pointerMove,this.move),off(document,pointerUp,this.end),off(window,"scroll",this.scroll),this.drag){preventClick();var sortable=this.getSortable(this.placeholder);this===sortable?this.origin.index!==index(this.placeholder)&&trigger(this.$el,"moved",[this,this.placeholder]):(trigger(sortable.$el,"added",[sortable,this.placeholder]),trigger(this.$el,"removed",[this,this.placeholder])),trigger(this.$el,"stop",[this,this.placeholder]),remove(this.drag),this.drag=null;var classes=this.touched.map(function(sortable){return sortable.clsPlaceholder+" "+sortable.clsItem}).join(" ");this.touched.forEach(function(sortable){return removeClass(sortable.$el.children,classes)}),removeClass(document.documentElement,this.clsDragState)}else"mouseup"!==e.type&&within(e.target,"a[href]")&&(location.href=closest(e.target,"a[href]").href)},insert:function(element,target){var this$1=this;addClass(this.$el.children,this.clsItem);var insert=function(){target?!within(element,this$1.$el)||function(element,target){return element.parentNode===target.parentNode&&index(element)>index(target)}(element,target)?before(target,element):after(target,element):append(this$1.$el,element)};this.animation?this.animate(insert):insert()},remove:function(element){within(element,this.$el)&&(this.animation?this.animate(function(){return remove(element)}):remove(element))},getSortable:function(element){return element&&(this.$getComponent(element,"sortable")||this.getSortable(element.parentNode))}}};var actives=[],Tooltip={attrs:!0,args:"title",mixins:[Container,Togglable,Position],props:{delay:Number,title:String},data:{pos:"top",title:"",delay:0,animation:["uk-animation-scale-up"],duration:100,cls:"uk-active",clsPos:"uk-tooltip"},beforeConnect:function(){this._hasTitle=hasAttr(this.$el,"title"),attr(this.$el,{title:"","aria-expanded":!1})},disconnected:function(){this.hide(),attr(this.$el,{title:this._hasTitle?this.title:null,"aria-expanded":null})},methods:{show:function(){var this$1=this;includes(actives,this)||(actives.forEach(function(active){return active.hide()}),actives.push(this),this._unbind=on(document,"click",function(e){return!within(e.target,this$1.$el)&&this$1.hide()}),clearTimeout(this.showTimer),this.tooltip=append(this.container,'<div class="'+this.clsPos+'" aria-hidden><div class="'+this.clsPos+'-inner">'+this.title+"</div></div>"),attr(this.$el,"aria-expanded",!0),this.positionAt(this.tooltip,this.$el),this.origin="y"===this.getAxis()?flipPosition(this.dir)+"-"+this.align:this.align+"-"+flipPosition(this.dir),this.showTimer=setTimeout(function(){this$1.toggleElement(this$1.tooltip,!0),this$1.hideTimer=setInterval(function(){isVisible(this$1.$el)||this$1.hide()},150)},this.delay))},hide:function(){var index$$1=actives.indexOf(this);!~index$$1||matches(this.$el,"input")&&this.$el===document.activeElement||(actives.splice(index$$1,1),clearTimeout(this.showTimer),clearInterval(this.hideTimer),attr(this.$el,"aria-expanded",!1),this.toggleElement(this.tooltip,!1),this.tooltip&&remove(this.tooltip),this.tooltip=!1,this._unbind())}},events:(obj$2={},obj$2["focus "+pointerEnter+" "+pointerDown]=function(e){e.type===pointerDown&&isTouch(e)||this.show()},obj$2.blur="hide",obj$2[pointerLeave]=function(e){isTouch(e)||this.hide()},obj$2)},Upload={props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,msgInvalidMime:String,msgInvalidName:String,msgInvalidSize:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:"uk-dragover",concurrent:1,maxSize:0,method:"POST",mime:!1,msgInvalidMime:"Invalid File Type: %s",msgInvalidName:"Invalid File Name: %s",msgInvalidSize:"Invalid File Size: %s Kilobytes Max",multiple:!1,name:"files[]",params:{},type:"",url:"",abort:noop,beforeAll:noop,beforeSend:noop,complete:noop,completeAll:noop,error:noop,fail:noop,load:noop,loadEnd:noop,loadStart:noop,progress:noop},events:{change:function(e){matches(e.target,'input[type="file"]')&&(e.preventDefault(),e.target.files&&this.upload(e.target.files),e.target.value="")},drop:function(e){stop(e);var transfer=e.dataTransfer;transfer&&transfer.files&&(removeClass(this.$el,this.clsDragover),this.upload(transfer.files))},dragenter:function(e){stop(e)},dragover:function(e){stop(e),addClass(this.$el,this.clsDragover)},dragleave:function(e){stop(e),removeClass(this.$el,this.clsDragover)}},methods:{upload:function(files){var this$1=this;if(files.length){trigger(this.$el,"upload",[files]);for(var i=0;i<files.length;i++){if(this$1.maxSize&&1e3*this$1.maxSize<files[i].size)return void this$1.fail(this$1.msgInvalidSize.replace("%s",this$1.maxSize));if(this$1.allow&&!match(this$1.allow,files[i].name))return void this$1.fail(this$1.msgInvalidName.replace("%s",this$1.allow));if(this$1.mime&&!match(this$1.mime,files[i].type))return void this$1.fail(this$1.msgInvalidMime.replace("%s",this$1.mime))}this.multiple||(files=[files[0]]),this.beforeAll(this,files);var chunks=function(files,size){for(var chunks=[],i=0;i<files.length;i+=size){for(var chunk=[],j=0;j<size;j++)chunk.push(files[i+j]);chunks.push(chunk)}return chunks}(files,this.concurrent),upload=function(files){var data$$1=new FormData;for(var key in files.forEach(function(file){return data$$1.append(this$1.name,file)}),this$1.params)data$$1.append(key,this$1.params[key]);ajax(this$1.url,{data:data$$1,method:this$1.method,responseType:this$1.type,beforeSend:function(env){var xhr=env.xhr;xhr.upload&&on(xhr.upload,"progress",this$1.progress),["loadStart","load","loadEnd","abort"].forEach(function(type){return on(xhr,type.toLowerCase(),this$1[type])}),this$1.beforeSend(env)}}).then(function(xhr){this$1.complete(xhr),chunks.length?upload(chunks.shift()):this$1.completeAll(xhr)},function(e){return this$1.error(e.message)})};upload(chunks.shift())}}}};function match(pattern,path){return path.match(new RegExp("^"+pattern.replace(/\//g,"\\/").replace(/\*\*/g,"(\\/[^\\/]+)*").replace(/\*/g,"[^\\/]+").replace(/((?!\\))\?/g,"$1.")+"$","i"))}function stop(e){e.preventDefault(),e.stopPropagation()}return UIkit.component("countdown",Countdown),UIkit.component("filter",Filter),UIkit.component("lightbox",Lightbox),UIkit.component("lightboxPanel",LightboxPanel),UIkit.component("notification",Notification),UIkit.component("parallax",Parallax$1),UIkit.component("slider",Slider$1),UIkit.component("sliderParallax",SliderParallax),UIkit.component("slideshow",Slideshow$1),UIkit.component("slideshowParallax",SliderParallax),UIkit.component("sortable",Sortable),UIkit.component("tooltip",Tooltip),UIkit.component("upload",Upload),function(UIkit){var connect=UIkit.connect,disconnect=UIkit.disconnect;function init(){apply$$1(document.body,connect),fastdom.flush(),new MutationObserver(function(mutations){return mutations.forEach(applyMutation)}).observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),UIkit._initialized=!0}function applyMutation(mutation){var target=mutation.target;("attributes"!==mutation.type?function(ref){for(var addedNodes=ref.addedNodes,removedNodes=ref.removedNodes,i=0;i<addedNodes.length;i++)apply$$1(addedNodes[i],connect);for(var i$1=0;i$1<removedNodes.length;i$1++)apply$$1(removedNodes[i$1],disconnect);return!0}(mutation):function(ref){var target=ref.target,attributeName=ref.attributeName;if("href"===attributeName)return!0;var name=getComponentName(attributeName);if(name&&name in UIkit){if(hasAttr(target,attributeName))return UIkit[name](target),!0;var component=UIkit.getComponent(target,name);return component?(component.$destroy(),!0):void 0}}(mutation))&&UIkit.update(target)}function apply$$1(node,fn){if(1===node.nodeType&&!hasAttr(node,"uk-no-boot"))for(fn(node),node=node.firstElementChild;node;){var next=node.nextElementSibling;apply$$1(node,fn),node=next}}"MutationObserver"in window&&(document.body?init():new MutationObserver(function(){document.body&&(this.disconnect(),init())}).observe(document,{childList:!0,subtree:!0}))}(UIkit),UIkit}); +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2pzL3NyYy9mb3VjLmpzIiwiLi4vanMvc3JjL2Vycm9ycy5qcyIsIi4uL2pzL3NyYy9jb3VudGRvd24uanMiLCIuLi9qcy9zcmMvamFtcy5qcyIsIi4uL2pzL3NyYy9yZXZpc2lvbl9kaWZmLmpzIiwiLi4vanMvc3JjL3dpa2kuanMiLCIuLi9qcy92ZW5kb3IvbW9tZW50L21vbWVudC5qcyIsIi4uL2pzL3ZlbmRvci9qcXVlcnkvanF1ZXJ5LTMuMy4xLmpzIiwiLi4vanMvdmVuZG9yL21vbWVudC9tb21lbnQtdGltZXpvbmUuanMiLCIuLi9qcy92ZW5kb3IvdHlwZXdyaXRlci90eXBld3JpdGVyLmpzIiwiLi4vanMvdmVuZG9yL3Vpa2l0L3Vpa2l0LmpzIl0sIm5hbWVzIjpbImdldFNjcmlwdCIsInVybCIsImludGVncml0eSIsImNyb3NzX29yaWdpbiIsInNjcmlwdCIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJzcmMiLCJkZWZlciIsInVuZGVmaW5lZCIsImNyb3NzT3JpZ2luIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhcHBlbmRDaGlsZCIsInNldENsYXNzIiwic2VsZWN0b3IiLCJteV9jbGFzcyIsInF1ZXJ5U2VsZWN0b3IiLCJjbGFzc05hbWUiLCJyZW1vdmVDbGFzcyIsImVsZW1lbnQiLCJyZWciLCJSZWdFeHAiLCJyZXBsYWNlIiwiZXJyb3JfdHlwZXdyaXRlciIsImFwcCIsImdldEVsZW1lbnRCeUlkIiwidHlwZXdyaXRlciIsIlR5cGV3cml0ZXIiLCJsb29wIiwiZGVsZXRlU3BlZWQiLCJ0eXBpbmdTcGVlZCIsImRldk1vZGUiLCJvbmNsaWNrIiwiY3VycmVudF9jbGFzcyIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsInN0b3AiLCJhcHBlbmRUZXh0IiwicGF1c2VGb3IiLCJ0eXBlU3RyaW5nIiwiZGVsZXRlQ2hhcnMiLCJjaGFuZ2VTZXR0aW5ncyIsIndpbmRvdyIsIl9SZXF1ZXN0TWV0aG9kIiwiX1BhdGgiLCJfQ29kZSIsIl9FcnJvck1zZyIsInN0YXJ0Iiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInN0YXJ0amFtIiwiRGF0ZSIsIlVUQyIsImVuZGphbSIsIm5vdyIsImdvYWwiLCJnZXRUaW1lIiwiVUlraXQiLCJub3RpZmljYXRpb24iLCJtZXNzYWdlIiwicG9zIiwidGltZW91dCIsImhlYWRpbmciLCJpbm5lckhUTUwiLCJyZWZyZXNoQ291bnRkb3duIiwic2V0SW50ZXJ2YWwiLCJkZWx0YSIsImNsZWFySW50ZXJ2YWwiLCJsb2NhdGlvbiIsInJlbG9hZCIsImRheXMiLCJNYXRoIiwiZmxvb3IiLCJob3VycyIsIm1pbnV0ZXMiLCJzZWNvbmRzIiwiZSIsIkphbUFjdGlvbnMiLCJbb2JqZWN0IE9iamVjdF0iLCJjc3JmX3Rva2VuIiwidGhpcyIsImFjdGlvbiIsIm1ldGhvZCIsImRhdGEiLCJjYWxsYmFjayIsIiQiLCJhamF4IiwiZGF0YVR5cGUiLCJoZWFkZXJzIiwiWC1DU1JGVG9rZW4iLCJkb25lIiwiZmFpbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJqYW0iLCJzdGF0ZSIsInNlbmQiLCJzZW5kX2pzb24iLCJpZCIsImZvcm0iLCJxdWVzdGlvbiIsInJlYXNvbiIsIm51bWJlciIsInBhcnRpY2lwYW50IiwidGVhbSIsIm1lbWJlciIsInJldmlzaW9uX2RpZmYiLCJyZXZpc2lvbnMiLCJidXR0b25zIiwicXVlcnlTZWxlY3RvckFsbCIsImlkX3JlZyIsImdldFJldmlzaW9uSWQiLCJtYXRjaCIsImdldFJldmlzaW9uIiwiZmlsdGVyIiwieCIsImZvckVhY2giLCJidXR0b24iLCJjaGVja2VkIiwib25jaGFuZ2UiLCJyZXYiLCJhZnQiLCJiZWYiLCJkYXRlIiwicmVtb3ZlQXR0cmlidXRlIiwiaHJlZiIsInJhZGlvQnV0dG9uQ2hlY2tlZCIsIndpa2lfc2lkZWJhciIsInNpZGViYXIiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsInJlbW92ZSIsImFkZCIsImdsb2JhbCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwibW9tZW50IiwiaG9va0NhbGxiYWNrIiwic29tZSIsImhvb2tzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJpc0FycmF5IiwiaW5wdXQiLCJBcnJheSIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImlzT2JqZWN0IiwiaXNVbmRlZmluZWQiLCJpc051bWJlciIsImlzRGF0ZSIsIm1hcCIsImFyciIsImZuIiwiaSIsInJlcyIsImxlbmd0aCIsInB1c2giLCJoYXNPd25Qcm9wIiwiYSIsImIiLCJoYXNPd25Qcm9wZXJ0eSIsImV4dGVuZCIsInZhbHVlT2YiLCJjcmVhdGVVVEMiLCJmb3JtYXQiLCJsb2NhbGUiLCJzdHJpY3QiLCJjcmVhdGVMb2NhbE9yVVRDIiwidXRjIiwiZ2V0UGFyc2luZ0ZsYWdzIiwibSIsIl9wZiIsImVtcHR5IiwidW51c2VkVG9rZW5zIiwidW51c2VkSW5wdXQiLCJvdmVyZmxvdyIsImNoYXJzTGVmdE92ZXIiLCJudWxsSW5wdXQiLCJpbnZhbGlkTW9udGgiLCJpbnZhbGlkRm9ybWF0IiwidXNlckludmFsaWRhdGVkIiwiaXNvIiwicGFyc2VkRGF0ZVBhcnRzIiwibWVyaWRpZW0iLCJyZmMyODIyIiwid2Vla2RheU1pc21hdGNoIiwiaXNWYWxpZCIsIl9pc1ZhbGlkIiwiZmxhZ3MiLCJwYXJzZWRQYXJ0cyIsImlzTm93VmFsaWQiLCJpc05hTiIsIl9kIiwiaW52YWxpZFdlZWtkYXkiLCJfc3RyaWN0IiwiYmlnSG91ciIsImlzRnJvemVuIiwiY3JlYXRlSW52YWxpZCIsIk5hTiIsImZ1biIsInQiLCJsZW4iLCJtb21lbnRQcm9wZXJ0aWVzIiwiY29weUNvbmZpZyIsInRvIiwiZnJvbSIsInByb3AiLCJ2YWwiLCJfaXNBTW9tZW50T2JqZWN0IiwiX2kiLCJfZiIsIl9sIiwiX3R6bSIsIl9pc1VUQyIsIl9vZmZzZXQiLCJfbG9jYWxlIiwidXBkYXRlSW5Qcm9ncmVzcyIsIk1vbWVudCIsImNvbmZpZyIsInVwZGF0ZU9mZnNldCIsImlzTW9tZW50Iiwib2JqIiwiYWJzRmxvb3IiLCJjZWlsIiwidG9JbnQiLCJhcmd1bWVudEZvckNvZXJjaW9uIiwiY29lcmNlZE51bWJlciIsInZhbHVlIiwiaXNGaW5pdGUiLCJjb21wYXJlQXJyYXlzIiwiYXJyYXkxIiwiYXJyYXkyIiwiZG9udENvbnZlcnQiLCJtaW4iLCJsZW5ndGhEaWZmIiwiYWJzIiwiZGlmZnMiLCJ3YXJuIiwibXNnIiwic3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzIiwiY29uc29sZSIsImRlcHJlY2F0ZSIsImZpcnN0VGltZSIsImRlcHJlY2F0aW9uSGFuZGxlciIsImFyZyIsImFyZ3MiLCJrZXkiLCJzbGljZSIsImpvaW4iLCJFcnJvciIsInN0YWNrIiwia2V5cyIsImRlcHJlY2F0aW9ucyIsImRlcHJlY2F0ZVNpbXBsZSIsIm5hbWUiLCJpc0Z1bmN0aW9uIiwiRnVuY3Rpb24iLCJtZXJnZUNvbmZpZ3MiLCJwYXJlbnRDb25maWciLCJjaGlsZENvbmZpZyIsIkxvY2FsZSIsInNldCIsImFsaWFzZXMiLCJhZGRVbml0QWxpYXMiLCJ1bml0Iiwic2hvcnRoYW5kIiwibG93ZXJDYXNlIiwidG9Mb3dlckNhc2UiLCJub3JtYWxpemVVbml0cyIsInVuaXRzIiwibm9ybWFsaXplT2JqZWN0VW5pdHMiLCJpbnB1dE9iamVjdCIsIm5vcm1hbGl6ZWRQcm9wIiwibm9ybWFsaXplZElucHV0IiwicHJpb3JpdGllcyIsImFkZFVuaXRQcmlvcml0eSIsInByaW9yaXR5IiwiemVyb0ZpbGwiLCJ0YXJnZXRMZW5ndGgiLCJmb3JjZVNpZ24iLCJhYnNOdW1iZXIiLCJ6ZXJvc1RvRmlsbCIsInBvdyIsIm1heCIsInN1YnN0ciIsImZvcm1hdHRpbmdUb2tlbnMiLCJsb2NhbEZvcm1hdHRpbmdUb2tlbnMiLCJmb3JtYXRGdW5jdGlvbnMiLCJmb3JtYXRUb2tlbkZ1bmN0aW9ucyIsImFkZEZvcm1hdFRva2VuIiwidG9rZW4iLCJwYWRkZWQiLCJvcmRpbmFsIiwiZnVuYyIsImxvY2FsZURhdGEiLCJmb3JtYXRNb21lbnQiLCJleHBhbmRGb3JtYXQiLCJhcnJheSIsIm1vbSIsIm91dHB1dCIsIm1ha2VGb3JtYXRGdW5jdGlvbiIsImludmFsaWREYXRlIiwicmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zIiwibG9uZ0RhdGVGb3JtYXQiLCJsYXN0SW5kZXgiLCJ0ZXN0IiwibWF0Y2gxIiwibWF0Y2gyIiwibWF0Y2gzIiwibWF0Y2g0IiwibWF0Y2g2IiwibWF0Y2gxdG8yIiwibWF0Y2gzdG80IiwibWF0Y2g1dG82IiwibWF0Y2gxdG8zIiwibWF0Y2gxdG80IiwibWF0Y2gxdG82IiwibWF0Y2hVbnNpZ25lZCIsIm1hdGNoU2lnbmVkIiwibWF0Y2hPZmZzZXQiLCJtYXRjaFNob3J0T2Zmc2V0IiwibWF0Y2hXb3JkIiwicmVnZXhlcyIsImFkZFJlZ2V4VG9rZW4iLCJyZWdleCIsInN0cmljdFJlZ2V4IiwiaXNTdHJpY3QiLCJnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4iLCJyZWdleEVzY2FwZSIsIm1hdGNoZWQiLCJwMSIsInAyIiwicDMiLCJwNCIsInMiLCJ0b2tlbnMiLCJhZGRQYXJzZVRva2VuIiwiYWRkV2Vla1BhcnNlVG9rZW4iLCJfdyIsImFkZFRpbWVUb0FycmF5RnJvbVRva2VuIiwiX2EiLCJZRUFSIiwiTU9OVEgiLCJEQVRFIiwiSE9VUiIsIk1JTlVURSIsIlNFQ09ORCIsIk1JTExJU0VDT05EIiwiV0VFSyIsIldFRUtEQVkiLCJkYXlzSW5ZZWFyIiwieWVhciIsImlzTGVhcFllYXIiLCJ5IiwicGFyc2VUd29EaWdpdFllYXIiLCJwYXJzZUludCIsImluZGV4T2YiLCJnZXRTZXRZZWFyIiwibWFrZUdldFNldCIsImtlZXBUaW1lIiwic2V0JDEiLCJnZXQiLCJtb250aCIsImRheXNJbk1vbnRoIiwibW9kTW9udGgiLCJvIiwibW9udGhzU2hvcnQiLCJtb250aHMiLCJtb250aHNTaG9ydFJlZ2V4IiwibW9udGhzUmVnZXgiLCJtb250aHNQYXJzZSIsIk1PTlRIU19JTl9GT1JNQVQiLCJkZWZhdWx0TG9jYWxlTW9udGhzIiwic3BsaXQiLCJkZWZhdWx0TG9jYWxlTW9udGhzU2hvcnQiLCJzZXRNb250aCIsImRheU9mTW9udGgiLCJnZXRTZXRNb250aCIsImRlZmF1bHRNb250aHNTaG9ydFJlZ2V4IiwiZGVmYXVsdE1vbnRoc1JlZ2V4IiwiY29tcHV0ZU1vbnRoc1BhcnNlIiwiY21wTGVuUmV2Iiwic2hvcnRQaWVjZXMiLCJsb25nUGllY2VzIiwibWl4ZWRQaWVjZXMiLCJzb3J0IiwiX21vbnRoc1JlZ2V4IiwiX21vbnRoc1Nob3J0UmVnZXgiLCJfbW9udGhzU3RyaWN0UmVnZXgiLCJfbW9udGhzU2hvcnRTdHJpY3RSZWdleCIsImNyZWF0ZVVUQ0RhdGUiLCJnZXRVVENGdWxsWWVhciIsInNldFVUQ0Z1bGxZZWFyIiwiZmlyc3RXZWVrT2Zmc2V0IiwiZG93IiwiZG95IiwiZndkIiwiZ2V0VVRDRGF5IiwiZGF5T2ZZZWFyRnJvbVdlZWtzIiwid2VlayIsIndlZWtkYXkiLCJyZXNZZWFyIiwicmVzRGF5T2ZZZWFyIiwiZGF5T2ZZZWFyIiwid2Vla09mWWVhciIsInJlc1dlZWsiLCJ3ZWVrT2Zmc2V0Iiwid2Vla3NJblllYXIiLCJ3ZWVrT2Zmc2V0TmV4dCIsIndlZWtkYXlzTWluIiwid2Vla2RheXNTaG9ydCIsIndlZWtkYXlzIiwid2Vla2RheXNNaW5SZWdleCIsIndlZWtkYXlzU2hvcnRSZWdleCIsIndlZWtkYXlzUmVnZXgiLCJ3ZWVrZGF5c1BhcnNlIiwiZCIsImRlZmF1bHRMb2NhbGVXZWVrZGF5cyIsImRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0IiwiZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluIiwiZGVmYXVsdFdlZWtkYXlzUmVnZXgiLCJkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4IiwiZGVmYXVsdFdlZWtkYXlzTWluUmVnZXgiLCJjb21wdXRlV2Vla2RheXNQYXJzZSIsIm1pbnAiLCJzaG9ydHAiLCJsb25ncCIsIm1pblBpZWNlcyIsImRheSIsIl93ZWVrZGF5c1JlZ2V4IiwiX3dlZWtkYXlzU2hvcnRSZWdleCIsIl93ZWVrZGF5c01pblJlZ2V4IiwiX3dlZWtkYXlzU3RyaWN0UmVnZXgiLCJfd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4IiwiX3dlZWtkYXlzTWluU3RyaWN0UmVnZXgiLCJoRm9ybWF0IiwibG93ZXJjYXNlIiwibWF0Y2hNZXJpZGllbSIsIl9tZXJpZGllbVBhcnNlIiwia0lucHV0IiwiX2lzUG0iLCJpc1BNIiwiX21lcmlkaWVtIiwicG9zMSIsInBvczIiLCJnbG9iYWxMb2NhbGUiLCJnZXRTZXRIb3VyIiwiYmFzZUNvbmZpZyIsImNhbGVuZGFyIiwic2FtZURheSIsIm5leHREYXkiLCJuZXh0V2VlayIsImxhc3REYXkiLCJsYXN0V2VlayIsInNhbWVFbHNlIiwiTFRTIiwiTFQiLCJMIiwiTEwiLCJMTEwiLCJMTExMIiwiZGF5T2ZNb250aE9yZGluYWxQYXJzZSIsInJlbGF0aXZlVGltZSIsImZ1dHVyZSIsInBhc3QiLCJzcyIsIm1tIiwiaCIsImhoIiwiZGQiLCJNIiwiTU0iLCJ5eSIsIm1lcmlkaWVtUGFyc2UiLCJsb2NhbGVzIiwibG9jYWxlRmFtaWxpZXMiLCJub3JtYWxpemVMb2NhbGUiLCJsb2FkTG9jYWxlIiwib2xkTG9jYWxlIiwiX2FiYnIiLCJyZXF1aXJlIiwiZ2V0U2V0R2xvYmFsTG9jYWxlIiwidmFsdWVzIiwiZ2V0TG9jYWxlIiwiZGVmaW5lTG9jYWxlIiwiYWJiciIsIl9jb25maWciLCJwYXJlbnRMb2NhbGUiLCJuYW1lcyIsImoiLCJuZXh0IiwiY2hvb3NlTG9jYWxlIiwiY2hlY2tPdmVyZmxvdyIsIl9vdmVyZmxvd0RheU9mWWVhciIsIl9vdmVyZmxvd1dlZWtzIiwiX292ZXJmbG93V2Vla2RheSIsImRlZmF1bHRzIiwiYyIsImNvbmZpZ0Zyb21BcnJheSIsImN1cnJlbnREYXRlIiwiZXhwZWN0ZWRXZWVrZGF5IiwieWVhclRvVXNlIiwibm93VmFsdWUiLCJfdXNlVVRDIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJjdXJyZW50RGF0ZUFycmF5IiwidyIsIndlZWtZZWFyIiwidGVtcCIsIndlZWtkYXlPdmVyZmxvdyIsIkdHIiwiVyIsIkUiLCJjcmVhdGVMb2NhbCIsIl93ZWVrIiwiY3VyV2VlayIsImdnIiwiX2RheU9mWWVhciIsImRheU9mWWVhckZyb21XZWVrSW5mbyIsIl9uZXh0RGF5IiwibXMiLCJzZXRGdWxsWWVhciIsImdldERheSIsInNldFVUQ01pbnV0ZXMiLCJnZXRVVENNaW51dGVzIiwiZXh0ZW5kZWRJc29SZWdleCIsImJhc2ljSXNvUmVnZXgiLCJ0elJlZ2V4IiwiaXNvRGF0ZXMiLCJpc29UaW1lcyIsImFzcE5ldEpzb25SZWdleCIsImNvbmZpZ0Zyb21JU08iLCJsIiwiYWxsb3dUaW1lIiwiZGF0ZUZvcm1hdCIsInRpbWVGb3JtYXQiLCJ0ekZvcm1hdCIsInN0cmluZyIsImV4ZWMiLCJjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0IiwiZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyIsInllYXJTdHIiLCJtb250aFN0ciIsImRheVN0ciIsImhvdXJTdHIiLCJtaW51dGVTdHIiLCJzZWNvbmRTdHIiLCJyZXN1bHQiLCJ1bnRydW5jYXRlWWVhciIsIm9ic09mZnNldHMiLCJVVCIsIkdNVCIsIkVEVCIsIkVTVCIsIkNEVCIsIkNTVCIsIk1EVCIsIk1TVCIsIlBEVCIsIlBTVCIsImNvbmZpZ0Zyb21SRkMyODIyIiwicGFyc2VkQXJyYXkiLCJ3ZWVrZGF5U3RyIiwicGFyc2VkSW5wdXQiLCJjaGVja1dlZWtkYXkiLCJvYnNPZmZzZXQiLCJtaWxpdGFyeU9mZnNldCIsIm51bU9mZnNldCIsImhtIiwiY2FsY3VsYXRlT2Zmc2V0IiwiSVNPXzg2MDEiLCJSRkNfMjgyMiIsInNraXBwZWQiLCJzdHJpbmdMZW5ndGgiLCJ0b3RhbFBhcnNlZElucHV0TGVuZ3RoIiwiaG91ciIsImlzUG0iLCJtZXJpZGllbUhvdXIiLCJtZXJpZGllbUZpeFdyYXAiLCJwcmVwYXJlQ29uZmlnIiwicHJlcGFyc2UiLCJ0ZW1wQ29uZmlnIiwiYmVzdE1vbWVudCIsInNjb3JlVG9CZWF0IiwiY3VycmVudFNjb3JlIiwic2NvcmUiLCJjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkiLCJjcmVhdGVGcm9tSW5wdXRGYWxsYmFjayIsImNvbmZpZ0Zyb21TdHJpbmciLCJtaW51dGUiLCJzZWNvbmQiLCJtaWxsaXNlY29uZCIsImNvbmZpZ0Zyb21PYmplY3QiLCJjb25maWdGcm9tSW5wdXQiLCJpc1VUQyIsImdldE93blByb3BlcnR5TmFtZXMiLCJrIiwiaXNPYmplY3RFbXB0eSIsInByb3RvdHlwZU1pbiIsIm90aGVyIiwicHJvdG90eXBlTWF4IiwicGlja0J5IiwibW9tZW50cyIsIm9yZGVyaW5nIiwiRHVyYXRpb24iLCJkdXJhdGlvbiIsInllYXJzIiwicXVhcnRlcnMiLCJxdWFydGVyIiwid2Vla3MiLCJtaWxsaXNlY29uZHMiLCJ1bml0SGFzRGVjaW1hbCIsInBhcnNlRmxvYXQiLCJpc0R1cmF0aW9uVmFsaWQiLCJfbWlsbGlzZWNvbmRzIiwiX2RheXMiLCJfbW9udGhzIiwiX2RhdGEiLCJfYnViYmxlIiwiaXNEdXJhdGlvbiIsImFic1JvdW5kIiwicm91bmQiLCJvZmZzZXQiLCJzZXBhcmF0b3IiLCJ1dGNPZmZzZXQiLCJzaWduIiwib2Zmc2V0RnJvbVN0cmluZyIsImNodW5rT2Zmc2V0IiwibWF0Y2hlciIsIm1hdGNoZXMiLCJwYXJ0cyIsImNsb25lV2l0aE9mZnNldCIsIm1vZGVsIiwiZGlmZiIsImNsb25lIiwic2V0VGltZSIsImxvY2FsIiwiZ2V0RGF0ZU9mZnNldCIsImdldFRpbWV6b25lT2Zmc2V0IiwiaXNVdGMiLCJhc3BOZXRSZWdleCIsImlzb1JlZ2V4IiwiY3JlYXRlRHVyYXRpb24iLCJyZXQiLCJkaWZmUmVzIiwicGFyc2VJc28iLCJiYXNlIiwiaXNCZWZvcmUiLCJwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlIiwibW9tZW50c0RpZmZlcmVuY2UiLCJpbnAiLCJpc0FmdGVyIiwiY3JlYXRlQWRkZXIiLCJkaXJlY3Rpb24iLCJwZXJpb2QiLCJ0bXAiLCJhZGRTdWJ0cmFjdCIsImlzQWRkaW5nIiwiaW52YWxpZCIsInN1YnRyYWN0IiwibW9udGhEaWZmIiwid2hvbGVNb250aERpZmYiLCJhbmNob3IiLCJuZXdMb2NhbGVEYXRhIiwiZGVmYXVsdEZvcm1hdCIsImRlZmF1bHRGb3JtYXRVdGMiLCJsYW5nIiwiYWRkV2Vla1llYXJGb3JtYXRUb2tlbiIsImdldHRlciIsImdldFNldFdlZWtZZWFySGVscGVyIiwid2Vla3NUYXJnZXQiLCJkYXlPZlllYXJEYXRhIiwiaXNvV2Vla1llYXIiLCJfZGF5T2ZNb250aE9yZGluYWxQYXJzZSIsIl9vcmRpbmFsUGFyc2UiLCJfZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQiLCJnZXRTZXREYXlPZk1vbnRoIiwiZ2V0U2V0TWludXRlIiwiZ2V0U2V0U2Vjb25kIiwicGFyc2VNcyIsImdldFNldE1pbGxpc2Vjb25kIiwicHJvdG8iLCJwcmVQYXJzZVBvc3RGb3JtYXQiLCJ0aW1lIiwiZm9ybWF0cyIsInNvZCIsInN0YXJ0T2YiLCJjYWxlbmRhckZvcm1hdCIsImFzRmxvYXQiLCJ0aGF0Iiwiem9uZURlbHRhIiwiZW5kT2YiLCJpbnB1dFN0cmluZyIsInBvc3Rmb3JtYXQiLCJ3aXRob3V0U3VmZml4IiwiaHVtYW5pemUiLCJmcm9tTm93IiwidG9Ob3ciLCJpbnZhbGlkQXQiLCJsb2NhbElucHV0IiwiaXNCZXR3ZWVuIiwiaW5jbHVzaXZpdHkiLCJpc1NhbWUiLCJpbnB1dE1zIiwiaXNTYW1lT3JBZnRlciIsImlzU2FtZU9yQmVmb3JlIiwicGFyc2luZ0ZsYWdzIiwicHJpb3JpdGl6ZWQiLCJ1bml0c09iaiIsInUiLCJnZXRQcmlvcml0aXplZFVuaXRzIiwiaXNvV2Vla2RheSIsInRvQXJyYXkiLCJ0b09iamVjdCIsInRvRGF0ZSIsInRvSVNPU3RyaW5nIiwia2VlcE9mZnNldCIsImluc3BlY3QiLCJ6b25lIiwiaXNMb2NhbCIsInByZWZpeCIsInN1ZmZpeCIsInRvSlNPTiIsInVuaXgiLCJjcmVhdGlvbkRhdGEiLCJpc29XZWVrIiwiaXNvV2Vla3MiLCJ3ZWVrSW5mbyIsImlzb1dlZWtzSW5ZZWFyIiwicGFyc2VXZWVrZGF5IiwicGFyc2VJc29XZWVrZGF5Iiwia2VlcExvY2FsVGltZSIsImtlZXBNaW51dGVzIiwibG9jYWxBZGp1c3QiLCJfY2hhbmdlSW5Qcm9ncmVzcyIsInBhcnNlWm9uZSIsInRab25lIiwiaGFzQWxpZ25lZEhvdXJPZmZzZXQiLCJpc0RTVCIsImlzVXRjT2Zmc2V0Iiwiem9uZUFiYnIiLCJ6b25lTmFtZSIsImRhdGVzIiwiaXNEU1RTaGlmdGVkIiwiX2lzRFNUU2hpZnRlZCIsInByb3RvJDEiLCJnZXQkMSIsImluZGV4IiwiZmllbGQiLCJzZXR0ZXIiLCJsaXN0TW9udGhzSW1wbCIsIm91dCIsImxpc3RXZWVrZGF5c0ltcGwiLCJsb2NhbGVTb3J0ZWQiLCJzaGlmdCIsIl9jYWxlbmRhciIsIl9sb25nRGF0ZUZvcm1hdCIsImZvcm1hdFVwcGVyIiwidG9VcHBlckNhc2UiLCJfaW52YWxpZERhdGUiLCJfb3JkaW5hbCIsImlzRnV0dXJlIiwiX3JlbGF0aXZlVGltZSIsInBhc3RGdXR1cmUiLCJzb3VyY2UiLCJpc0Zvcm1hdCIsIl9tb250aHNTaG9ydCIsIm1vbnRoTmFtZSIsIl9tb250aHNQYXJzZUV4YWN0IiwiaWkiLCJsbGMiLCJ0b0xvY2FsZUxvd2VyQ2FzZSIsIl9tb250aHNQYXJzZSIsIl9sb25nTW9udGhzUGFyc2UiLCJfc2hvcnRNb250aHNQYXJzZSIsImZpcnN0RGF5T2ZZZWFyIiwiZmlyc3REYXlPZldlZWsiLCJfd2Vla2RheXMiLCJfd2Vla2RheXNNaW4iLCJfd2Vla2RheXNTaG9ydCIsIndlZWtkYXlOYW1lIiwiX3dlZWtkYXlzUGFyc2VFeGFjdCIsIl93ZWVrZGF5c1BhcnNlIiwiX3Nob3J0V2Vla2RheXNQYXJzZSIsIl9taW5XZWVrZGF5c1BhcnNlIiwiX2Z1bGxXZWVrZGF5c1BhcnNlIiwiY2hhckF0IiwiaXNMb3dlciIsImxhbmdEYXRhIiwibWF0aEFicyIsImFkZFN1YnRyYWN0JDEiLCJhYnNDZWlsIiwiZGF5c1RvTW9udGhzIiwibW9udGhzVG9EYXlzIiwibWFrZUFzIiwiYWxpYXMiLCJhcyIsImFzTWlsbGlzZWNvbmRzIiwiYXNTZWNvbmRzIiwiYXNNaW51dGVzIiwiYXNIb3VycyIsImFzRGF5cyIsImFzV2Vla3MiLCJhc01vbnRocyIsImFzWWVhcnMiLCJtYWtlR2V0dGVyIiwidGhyZXNob2xkcyIsImFicyQxIiwidG9JU09TdHJpbmckMSIsIlkiLCJEIiwidG9GaXhlZCIsInRvdGFsIiwidG90YWxTaWduIiwieW1TaWduIiwiZGF5c1NpZ24iLCJobXNTaWduIiwicHJvdG8kMiIsIm1vbnRoc0Zyb21EYXlzIiwid2l0aFN1ZmZpeCIsInBvc05lZ0R1cmF0aW9uIiwicmVsYXRpdmVUaW1lJDEiLCJ0b0lzb1N0cmluZyIsInZlcnNpb24iLCJ1cGRhdGVMb2NhbGUiLCJ0bXBMb2NhbGUiLCJyZWxhdGl2ZVRpbWVSb3VuZGluZyIsInJvdW5kaW5nRnVuY3Rpb24iLCJyZWxhdGl2ZVRpbWVUaHJlc2hvbGQiLCJ0aHJlc2hvbGQiLCJsaW1pdCIsIm15TW9tZW50IiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUwiLCJEQVRFVElNRV9MT0NBTF9TRUNPTkRTIiwiREFURVRJTUVfTE9DQUxfTVMiLCJUSU1FIiwiVElNRV9TRUNPTkRTIiwiVElNRV9NUyIsIm5vR2xvYmFsIiwiZ2V0UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsImNvbmNhdCIsImNsYXNzMnR5cGUiLCJoYXNPd24iLCJmblRvU3RyaW5nIiwiT2JqZWN0RnVuY3Rpb25TdHJpbmciLCJzdXBwb3J0Iiwibm9kZVR5cGUiLCJpc1dpbmRvdyIsInByZXNlcnZlZFNjcmlwdEF0dHJpYnV0ZXMiLCJub01vZHVsZSIsIkRPTUV2YWwiLCJjb2RlIiwiZG9jIiwibm9kZSIsInRleHQiLCJoZWFkIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwidG9UeXBlIiwialF1ZXJ5IiwiY29udGV4dCIsImluaXQiLCJydHJpbSIsImlzQXJyYXlMaWtlIiwianF1ZXJ5IiwiY29uc3RydWN0b3IiLCJudW0iLCJwdXNoU3RhY2siLCJlbGVtcyIsIm1lcmdlIiwicHJldk9iamVjdCIsImVhY2giLCJlbGVtIiwiZmlyc3QiLCJlcSIsImxhc3QiLCJlbmQiLCJzcGxpY2UiLCJvcHRpb25zIiwiY29weSIsImNvcHlJc0FycmF5IiwidGFyZ2V0IiwiZGVlcCIsImlzUGxhaW5PYmplY3QiLCJleHBhbmRvIiwicmFuZG9tIiwiaXNSZWFkeSIsImVycm9yIiwibm9vcCIsIkN0b3IiLCJpc0VtcHR5T2JqZWN0IiwiZ2xvYmFsRXZhbCIsInRyaW0iLCJtYWtlQXJyYXkiLCJyZXN1bHRzIiwiaW5BcnJheSIsImdyZXAiLCJpbnZlcnQiLCJjYWxsYmFja0V4cGVjdCIsImd1aWQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIlNpenpsZSIsIkV4cHIiLCJnZXRUZXh0IiwiaXNYTUwiLCJ0b2tlbml6ZSIsImNvbXBpbGUiLCJzZWxlY3QiLCJvdXRlcm1vc3RDb250ZXh0Iiwic29ydElucHV0IiwiaGFzRHVwbGljYXRlIiwic2V0RG9jdW1lbnQiLCJkb2NFbGVtIiwiZG9jdW1lbnRJc0hUTUwiLCJyYnVnZ3lRU0EiLCJyYnVnZ3lNYXRjaGVzIiwicHJlZmVycmVkRG9jIiwiZGlycnVucyIsImNsYXNzQ2FjaGUiLCJjcmVhdGVDYWNoZSIsInRva2VuQ2FjaGUiLCJjb21waWxlckNhY2hlIiwic29ydE9yZGVyIiwicG9wIiwicHVzaF9uYXRpdmUiLCJsaXN0IiwiYm9vbGVhbnMiLCJ3aGl0ZXNwYWNlIiwiaWRlbnRpZmllciIsImF0dHJpYnV0ZXMiLCJwc2V1ZG9zIiwicndoaXRlc3BhY2UiLCJyY29tbWEiLCJyY29tYmluYXRvcnMiLCJyYXR0cmlidXRlUXVvdGVzIiwicnBzZXVkbyIsInJpZGVudGlmaWVyIiwibWF0Y2hFeHByIiwiSUQiLCJDTEFTUyIsIlRBRyIsIkFUVFIiLCJQU0VVRE8iLCJDSElMRCIsImJvb2wiLCJuZWVkc0NvbnRleHQiLCJyaW5wdXRzIiwicmhlYWRlciIsInJuYXRpdmUiLCJycXVpY2tFeHByIiwicnNpYmxpbmciLCJydW5lc2NhcGUiLCJmdW5lc2NhcGUiLCJfIiwiZXNjYXBlZCIsImVzY2FwZWRXaGl0ZXNwYWNlIiwiaGlnaCIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsInJjc3Nlc2NhcGUiLCJmY3NzZXNjYXBlIiwiY2giLCJhc0NvZGVQb2ludCIsImNoYXJDb2RlQXQiLCJ1bmxvYWRIYW5kbGVyIiwiZGlzYWJsZWRBbmNlc3RvciIsImFkZENvbWJpbmF0b3IiLCJkaXNhYmxlZCIsImRpciIsImNoaWxkTm9kZXMiLCJlbHMiLCJzZWVkIiwibmlkIiwiZ3JvdXBzIiwibmV3U2VsZWN0b3IiLCJuZXdDb250ZXh0Iiwib3duZXJEb2N1bWVudCIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJxc2EiLCJub2RlTmFtZSIsInRvU2VsZWN0b3IiLCJ0ZXN0Q29udGV4dCIsInFzYUVycm9yIiwiY2FjaGUiLCJjYWNoZUxlbmd0aCIsIm1hcmtGdW5jdGlvbiIsImFzc2VydCIsImVsIiwiYWRkSGFuZGxlIiwiYXR0cnMiLCJoYW5kbGVyIiwiYXR0ckhhbmRsZSIsInNpYmxpbmdDaGVjayIsImN1ciIsInNvdXJjZUluZGV4IiwibmV4dFNpYmxpbmciLCJjcmVhdGVJbnB1dFBzZXVkbyIsImNyZWF0ZUJ1dHRvblBzZXVkbyIsImNyZWF0ZURpc2FibGVkUHNldWRvIiwiaXNEaXNhYmxlZCIsImNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8iLCJhcmd1bWVudCIsIm1hdGNoSW5kZXhlcyIsImRvY3VtZW50RWxlbWVudCIsImhhc0NvbXBhcmUiLCJzdWJXaW5kb3ciLCJkZWZhdWx0VmlldyIsInRvcCIsImFkZEV2ZW50TGlzdGVuZXIiLCJhdHRhY2hFdmVudCIsImNyZWF0ZUNvbW1lbnQiLCJnZXRCeUlkIiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJhdHRySWQiLCJmaW5kIiwiZ2V0QXR0cmlidXRlTm9kZSIsInRhZyIsIm1hdGNoZXNTZWxlY3RvciIsIndlYmtpdE1hdGNoZXNTZWxlY3RvciIsIm1vek1hdGNoZXNTZWxlY3RvciIsIm9NYXRjaGVzU2VsZWN0b3IiLCJtc01hdGNoZXNTZWxlY3RvciIsImRpc2Nvbm5lY3RlZE1hdGNoIiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJhZG93biIsImJ1cCIsImNvbXBhcmUiLCJzb3J0RGV0YWNoZWQiLCJhdXAiLCJhcCIsImJwIiwidW5zaGlmdCIsImV4cHIiLCJlbGVtZW50cyIsImF0dHIiLCJzcGVjaWZpZWQiLCJlc2NhcGUiLCJzZWwiLCJ1bmlxdWVTb3J0IiwiZHVwbGljYXRlcyIsImRldGVjdER1cGxpY2F0ZXMiLCJzb3J0U3RhYmxlIiwidGV4dENvbnRlbnQiLCJmaXJzdENoaWxkIiwibm9kZVZhbHVlIiwic2VsZWN0b3JzIiwiY3JlYXRlUHNldWRvIiwicmVsYXRpdmUiLCI+IiwiICIsIisiLCJ+IiwicHJlRmlsdGVyIiwiZXhjZXNzIiwidW5xdW90ZWQiLCJub2RlTmFtZVNlbGVjdG9yIiwicGF0dGVybiIsIm9wZXJhdG9yIiwiY2hlY2siLCJ3aGF0Iiwic2ltcGxlIiwiZm9yd2FyZCIsIm9mVHlwZSIsInhtbCIsInVuaXF1ZUNhY2hlIiwib3V0ZXJDYWNoZSIsIm5vZGVJbmRleCIsInBhcmVudCIsInVzZUNhY2hlIiwibGFzdENoaWxkIiwidW5pcXVlSUQiLCJwc2V1ZG8iLCJzZXRGaWx0ZXJzIiwiaWR4Iiwibm90IiwidW5tYXRjaGVkIiwiaGFzIiwiaW5uZXJUZXh0IiwiZWxlbUxhbmciLCJoYXNoIiwicm9vdCIsImZvY3VzIiwiYWN0aXZlRWxlbWVudCIsImhhc0ZvY3VzIiwidGFiSW5kZXgiLCJlbmFibGVkIiwic2VsZWN0ZWQiLCJzZWxlY3RlZEluZGV4IiwiaGVhZGVyIiwiZXZlbiIsIm9kZCIsImx0IiwiZ3QiLCJyYWRpbyIsImNoZWNrYm94IiwiZmlsZSIsInBhc3N3b3JkIiwiaW1hZ2UiLCJzdWJtaXQiLCJyZXNldCIsImNvbWJpbmF0b3IiLCJza2lwIiwiY2hlY2tOb25FbGVtZW50cyIsImRvbmVOYW1lIiwib2xkQ2FjaGUiLCJuZXdDYWNoZSIsImVsZW1lbnRNYXRjaGVyIiwibWF0Y2hlcnMiLCJjb25kZW5zZSIsIm5ld1VubWF0Y2hlZCIsIm1hcHBlZCIsInNldE1hdGNoZXIiLCJwb3N0RmlsdGVyIiwicG9zdEZpbmRlciIsInBvc3RTZWxlY3RvciIsInByZU1hcCIsInBvc3RNYXAiLCJwcmVleGlzdGluZyIsImNvbnRleHRzIiwibXVsdGlwbGVDb250ZXh0cyIsIm1hdGNoZXJJbiIsIm1hdGNoZXJPdXQiLCJtYXRjaGVyRnJvbVRva2VucyIsImNoZWNrQ29udGV4dCIsImxlYWRpbmdSZWxhdGl2ZSIsImltcGxpY2l0UmVsYXRpdmUiLCJtYXRjaENvbnRleHQiLCJtYXRjaEFueUNvbnRleHQiLCJmaWx0ZXJzIiwicGFyc2VPbmx5Iiwic29GYXIiLCJwcmVGaWx0ZXJzIiwiY2FjaGVkIiwic2V0TWF0Y2hlcnMiLCJlbGVtZW50TWF0Y2hlcnMiLCJieVNldCIsImJ5RWxlbWVudCIsInN1cGVyTWF0Y2hlciIsIm91dGVybW9zdCIsIm1hdGNoZWRDb3VudCIsInNldE1hdGNoZWQiLCJjb250ZXh0QmFja3VwIiwiZGlycnVuc1VuaXF1ZSIsIm1hdGNoZXJGcm9tR3JvdXBNYXRjaGVycyIsImNvbXBpbGVkIiwiZGVmYXVsdFZhbHVlIiwidW5pcXVlIiwiaXNYTUxEb2MiLCJlc2NhcGVTZWxlY3RvciIsInVudGlsIiwidHJ1bmNhdGUiLCJpcyIsInNpYmxpbmdzIiwibiIsInJuZWVkc0NvbnRleHQiLCJyc2luZ2xlVGFnIiwid2lubm93IiwicXVhbGlmaWVyIiwic2VsZiIsInJvb3RqUXVlcnkiLCJwYXJzZUhUTUwiLCJyZWFkeSIsInJwYXJlbnRzcHJldiIsImd1YXJhbnRlZWRVbmlxdWUiLCJjaGlsZHJlbiIsImNvbnRlbnRzIiwicHJldiIsInNpYmxpbmciLCJ0YXJnZXRzIiwiY2xvc2VzdCIsInByZXZBbGwiLCJhZGRCYWNrIiwicGFyZW50cyIsInBhcmVudHNVbnRpbCIsIm5leHRBbGwiLCJuZXh0VW50aWwiLCJwcmV2VW50aWwiLCJjb250ZW50RG9jdW1lbnQiLCJjb250ZW50IiwicmV2ZXJzZSIsInJub3RodG1sd2hpdGUiLCJJZGVudGl0eSIsInYiLCJUaHJvd2VyIiwiZXgiLCJhZG9wdFZhbHVlIiwicmVzb2x2ZSIsInJlamVjdCIsIm5vVmFsdWUiLCJwcm9taXNlIiwidGhlbiIsIkNhbGxiYWNrcyIsIm9iamVjdCIsImZsYWciLCJjcmVhdGVPcHRpb25zIiwiZmlyaW5nIiwibWVtb3J5IiwiZmlyZWQiLCJsb2NrZWQiLCJxdWV1ZSIsImZpcmluZ0luZGV4IiwiZmlyZSIsIm9uY2UiLCJzdG9wT25GYWxzZSIsImRpc2FibGUiLCJsb2NrIiwiZmlyZVdpdGgiLCJEZWZlcnJlZCIsInR1cGxlcyIsImFsd2F5cyIsImRlZmVycmVkIiwiY2F0Y2giLCJwaXBlIiwiZm5zIiwibmV3RGVmZXIiLCJ0dXBsZSIsInJldHVybmVkIiwicHJvZ3Jlc3MiLCJub3RpZnkiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJvblByb2dyZXNzIiwibWF4RGVwdGgiLCJkZXB0aCIsInNwZWNpYWwiLCJtaWdodFRocm93IiwiVHlwZUVycm9yIiwibm90aWZ5V2l0aCIsInJlc29sdmVXaXRoIiwicHJvY2VzcyIsImV4Y2VwdGlvbkhvb2siLCJzdGFja1RyYWNlIiwicmVqZWN0V2l0aCIsImdldFN0YWNrSG9vayIsInNldFRpbWVvdXQiLCJzdGF0ZVN0cmluZyIsIndoZW4iLCJzaW5nbGVWYWx1ZSIsInJlbWFpbmluZyIsInJlc29sdmVDb250ZXh0cyIsInJlc29sdmVWYWx1ZXMiLCJtYXN0ZXIiLCJ1cGRhdGVGdW5jIiwicmVycm9yTmFtZXMiLCJyZWFkeUV4Y2VwdGlvbiIsInJlYWR5TGlzdCIsImNvbXBsZXRlZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZWFkeVdhaXQiLCJ3YWl0IiwiZG9TY3JvbGwiLCJhY2Nlc3MiLCJjaGFpbmFibGUiLCJlbXB0eUdldCIsInJhdyIsImJ1bGsiLCJybXNQcmVmaXgiLCJyZGFzaEFscGhhIiwiZmNhbWVsQ2FzZSIsImFsbCIsImxldHRlciIsImNhbWVsQ2FzZSIsImFjY2VwdERhdGEiLCJvd25lciIsIkRhdGEiLCJ1aWQiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImhhc0RhdGEiLCJkYXRhUHJpdiIsImRhdGFVc2VyIiwicmJyYWNlIiwicm11bHRpRGFzaCIsImRhdGFBdHRyIiwicGFyc2UiLCJnZXREYXRhIiwicmVtb3ZlRGF0YSIsIl9yZW1vdmVEYXRhIiwiZGVxdWV1ZSIsInN0YXJ0TGVuZ3RoIiwiX3F1ZXVlSG9va3MiLCJjbGVhclF1ZXVlIiwiY291bnQiLCJwbnVtIiwicmNzc051bSIsImNzc0V4cGFuZCIsImlzSGlkZGVuV2l0aGluVHJlZSIsInN0eWxlIiwiZGlzcGxheSIsImNzcyIsInN3YXAiLCJvbGQiLCJhZGp1c3RDU1MiLCJ2YWx1ZVBhcnRzIiwidHdlZW4iLCJhZGp1c3RlZCIsInNjYWxlIiwibWF4SXRlcmF0aW9ucyIsImN1cnJlbnRWYWx1ZSIsImluaXRpYWwiLCJjc3NOdW1iZXIiLCJpbml0aWFsSW5Vbml0IiwiZGVmYXVsdERpc3BsYXlNYXAiLCJnZXREZWZhdWx0RGlzcGxheSIsImJvZHkiLCJzaG93SGlkZSIsInNob3ciLCJoaWRlIiwidG9nZ2xlIiwicmNoZWNrYWJsZVR5cGUiLCJydGFnTmFtZSIsInJzY3JpcHRUeXBlIiwid3JhcE1hcCIsIm9wdGlvbiIsInRoZWFkIiwiY29sIiwidHIiLCJ0ZCIsIl9kZWZhdWx0IiwiZ2V0QWxsIiwic2V0R2xvYmFsRXZhbCIsInJlZkVsZW1lbnRzIiwib3B0Z3JvdXAiLCJ0Ym9keSIsInRmb290IiwiY29sZ3JvdXAiLCJjYXB0aW9uIiwidGgiLCJkaXYiLCJyaHRtbCIsImJ1aWxkRnJhZ21lbnQiLCJzY3JpcHRzIiwic2VsZWN0aW9uIiwiaWdub3JlZCIsIndyYXAiLCJmcmFnbWVudCIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJub2RlcyIsImh0bWxQcmVmaWx0ZXIiLCJjcmVhdGVUZXh0Tm9kZSIsImNoZWNrQ2xvbmUiLCJjbG9uZU5vZGUiLCJub0Nsb25lQ2hlY2tlZCIsInJrZXlFdmVudCIsInJtb3VzZUV2ZW50IiwicnR5cGVuYW1lc3BhY2UiLCJyZXR1cm5UcnVlIiwicmV0dXJuRmFsc2UiLCJzYWZlQWN0aXZlRWxlbWVudCIsImVyciIsIm9uIiwidHlwZXMiLCJvbmUiLCJvcmlnRm4iLCJldmVudCIsIm9mZiIsImhhbmRsZU9iakluIiwiZXZlbnRIYW5kbGUiLCJldmVudHMiLCJoYW5kbGVPYmoiLCJoYW5kbGVycyIsIm5hbWVzcGFjZXMiLCJvcmlnVHlwZSIsImVsZW1EYXRhIiwiaGFuZGxlIiwidHJpZ2dlcmVkIiwiZGlzcGF0Y2giLCJkZWxlZ2F0ZVR5cGUiLCJiaW5kVHlwZSIsIm5hbWVzcGFjZSIsImRlbGVnYXRlQ291bnQiLCJzZXR1cCIsIm1hcHBlZFR5cGVzIiwib3JpZ0NvdW50IiwidGVhcmRvd24iLCJyZW1vdmVFdmVudCIsIm5hdGl2ZUV2ZW50IiwiaGFuZGxlclF1ZXVlIiwiZml4IiwiZGVsZWdhdGVUYXJnZXQiLCJwcmVEaXNwYXRjaCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiY3VycmVudFRhcmdldCIsImlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkIiwicm5hbWVzcGFjZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwicG9zdERpc3BhdGNoIiwibWF0Y2hlZEhhbmRsZXJzIiwibWF0Y2hlZFNlbGVjdG9ycyIsImFkZFByb3AiLCJob29rIiwiRXZlbnQiLCJlbnVtZXJhYmxlIiwib3JpZ2luYWxFdmVudCIsIndyaXRhYmxlIiwibG9hZCIsIm5vQnViYmxlIiwidHJpZ2dlciIsImJsdXIiLCJjbGljayIsImJlZm9yZXVubG9hZCIsInJldHVyblZhbHVlIiwicHJvcHMiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJkZWZhdWx0UHJldmVudGVkIiwicmVsYXRlZFRhcmdldCIsInRpbWVTdGFtcCIsImlzU2ltdWxhdGVkIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwiYWx0S2V5IiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJjaGFuZ2VkVG91Y2hlcyIsImN0cmxLZXkiLCJkZXRhaWwiLCJldmVudFBoYXNlIiwibWV0YUtleSIsInBhZ2VYIiwicGFnZVkiLCJzaGlmdEtleSIsInZpZXciLCJjaGFyIiwiY2hhckNvZGUiLCJrZXlDb2RlIiwiY2xpZW50WCIsImNsaWVudFkiLCJvZmZzZXRYIiwib2Zmc2V0WSIsInBvaW50ZXJJZCIsInBvaW50ZXJUeXBlIiwic2NyZWVuWCIsInNjcmVlblkiLCJ0YXJnZXRUb3VjaGVzIiwidG9FbGVtZW50IiwidG91Y2hlcyIsIndoaWNoIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJwb2ludGVyZW50ZXIiLCJwb2ludGVybGVhdmUiLCJvcmlnIiwicmVsYXRlZCIsInJ4aHRtbFRhZyIsInJub0lubmVyaHRtbCIsInJjaGVja2VkIiwicmNsZWFuU2NyaXB0IiwibWFuaXB1bGF0aW9uVGFyZ2V0IiwiZGlzYWJsZVNjcmlwdCIsInJlc3RvcmVTY3JpcHQiLCJjbG9uZUNvcHlFdmVudCIsImRlc3QiLCJwZGF0YU9sZCIsInBkYXRhQ3VyIiwidWRhdGFPbGQiLCJ1ZGF0YUN1ciIsImRvbU1hbmlwIiwiY29sbGVjdGlvbiIsImhhc1NjcmlwdHMiLCJpTm9DbG9uZSIsInZhbHVlSXNGdW5jdGlvbiIsImh0bWwiLCJfZXZhbFVybCIsImtlZXBEYXRhIiwiY2xlYW5EYXRhIiwiZGF0YUFuZEV2ZW50cyIsImRlZXBEYXRhQW5kRXZlbnRzIiwic3JjRWxlbWVudHMiLCJkZXN0RWxlbWVudHMiLCJpblBhZ2UiLCJkZXRhY2giLCJhcHBlbmQiLCJwcmVwZW5kIiwiaW5zZXJ0QmVmb3JlIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyZXBsYWNlV2l0aCIsInJlcGxhY2VDaGlsZCIsImFwcGVuZFRvIiwicHJlcGVuZFRvIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlQWxsIiwib3JpZ2luYWwiLCJpbnNlcnQiLCJybnVtbm9ucHgiLCJnZXRTdHlsZXMiLCJvcGVuZXIiLCJnZXRDb21wdXRlZFN0eWxlIiwicmJveFN0eWxlIiwiY3VyQ1NTIiwiY29tcHV0ZWQiLCJ3aWR0aCIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicGl4ZWxCb3hTdHlsZXMiLCJhZGRHZXRIb29rSWYiLCJjb25kaXRpb25GbiIsImhvb2tGbiIsImNvbXB1dGVTdHlsZVRlc3RzIiwiY29udGFpbmVyIiwiY3NzVGV4dCIsImRpdlN0eWxlIiwicGl4ZWxQb3NpdGlvblZhbCIsInJlbGlhYmxlTWFyZ2luTGVmdFZhbCIsInJvdW5kUGl4ZWxNZWFzdXJlcyIsIm1hcmdpbkxlZnQiLCJyaWdodCIsInBpeGVsQm94U3R5bGVzVmFsIiwiYm94U2l6aW5nUmVsaWFibGVWYWwiLCJwb3NpdGlvbiIsInNjcm9sbGJveFNpemVWYWwiLCJvZmZzZXRXaWR0aCIsIm1lYXN1cmUiLCJiYWNrZ3JvdW5kQ2xpcCIsImNsZWFyQ2xvbmVTdHlsZSIsImJveFNpemluZ1JlbGlhYmxlIiwicGl4ZWxQb3NpdGlvbiIsInJlbGlhYmxlTWFyZ2luTGVmdCIsInNjcm9sbGJveFNpemUiLCJyZGlzcGxheXN3YXAiLCJyY3VzdG9tUHJvcCIsImNzc1Nob3ciLCJ2aXNpYmlsaXR5IiwiY3NzTm9ybWFsVHJhbnNmb3JtIiwibGV0dGVyU3BhY2luZyIsImZvbnRXZWlnaHQiLCJjc3NQcmVmaXhlcyIsImVtcHR5U3R5bGUiLCJmaW5hbFByb3BOYW1lIiwiY3NzUHJvcHMiLCJjYXBOYW1lIiwidmVuZG9yUHJvcE5hbWUiLCJzZXRQb3NpdGl2ZU51bWJlciIsImJveE1vZGVsQWRqdXN0bWVudCIsImRpbWVuc2lvbiIsImJveCIsImlzQm9yZGVyQm94Iiwic3R5bGVzIiwiY29tcHV0ZWRWYWwiLCJleHRyYSIsImdldFdpZHRoT3JIZWlnaHQiLCJ2YWx1ZUlzQm9yZGVyQm94IiwiVHdlZW4iLCJlYXNpbmciLCJjc3NIb29rcyIsIm9wYWNpdHkiLCJhbmltYXRpb25JdGVyYXRpb25Db3VudCIsImNvbHVtbkNvdW50IiwiZmlsbE9wYWNpdHkiLCJmbGV4R3JvdyIsImZsZXhTaHJpbmsiLCJsaW5lSGVpZ2h0Iiwib3JkZXIiLCJvcnBoYW5zIiwid2lkb3dzIiwiekluZGV4Iiwiem9vbSIsIm9yaWdOYW1lIiwiaXNDdXN0b21Qcm9wIiwic2V0UHJvcGVydHkiLCJnZXRDbGllbnRSZWN0cyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImxlZnQiLCJtYXJnaW4iLCJwYWRkaW5nIiwiYm9yZGVyIiwiZXhwYW5kIiwiZXhwYW5kZWQiLCJwcm9wSG9va3MiLCJydW4iLCJwZXJjZW50IiwiZWFzZWQiLCJzdGVwIiwiZngiLCJzY3JvbGxUb3AiLCJzY3JvbGxMZWZ0IiwibGluZWFyIiwicCIsInN3aW5nIiwiY29zIiwiUEkiLCJmeE5vdyIsImluUHJvZ3Jlc3MiLCJyZnh0eXBlcyIsInJydW4iLCJzY2hlZHVsZSIsImhpZGRlbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImludGVydmFsIiwidGljayIsImNyZWF0ZUZ4Tm93IiwiZ2VuRngiLCJpbmNsdWRlV2lkdGgiLCJoZWlnaHQiLCJjcmVhdGVUd2VlbiIsImFuaW1hdGlvbiIsIkFuaW1hdGlvbiIsInR3ZWVuZXJzIiwicHJvcGVydGllcyIsInN0b3BwZWQiLCJwcmVmaWx0ZXJzIiwiY3VycmVudFRpbWUiLCJzdGFydFRpbWUiLCJ0d2VlbnMiLCJvcHRzIiwic3BlY2lhbEVhc2luZyIsIm9yaWdpbmFsUHJvcGVydGllcyIsIm9yaWdpbmFsT3B0aW9ucyIsImdvdG9FbmQiLCJwcm9wRmlsdGVyIiwiYmluZCIsImNvbXBsZXRlIiwidGltZXIiLCJhbmltIiwiKiIsInR3ZWVuZXIiLCJvbGRmaXJlIiwicHJvcFR3ZWVuIiwicmVzdG9yZURpc3BsYXkiLCJpc0JveCIsImRhdGFTaG93IiwidW5xdWV1ZWQiLCJvdmVyZmxvd1giLCJvdmVyZmxvd1kiLCJwcmVmaWx0ZXIiLCJzcGVlZCIsIm9wdCIsInNwZWVkcyIsImZhZGVUbyIsImFuaW1hdGUiLCJvcHRhbGwiLCJkb0FuaW1hdGlvbiIsImZpbmlzaCIsInN0b3BRdWV1ZSIsInRpbWVycyIsImNzc0ZuIiwic2xpZGVEb3duIiwic2xpZGVVcCIsInNsaWRlVG9nZ2xlIiwiZmFkZUluIiwiZmFkZU91dCIsImZhZGVUb2dnbGUiLCJzbG93IiwiZmFzdCIsImRlbGF5IiwiY2xlYXJUaW1lb3V0IiwiY2hlY2tPbiIsIm9wdFNlbGVjdGVkIiwicmFkaW9WYWx1ZSIsImJvb2xIb29rIiwicmVtb3ZlQXR0ciIsIm5UeXBlIiwiYXR0ckhvb2tzIiwiYXR0ck5hbWVzIiwibG93ZXJjYXNlTmFtZSIsInJmb2N1c2FibGUiLCJyY2xpY2thYmxlIiwic3RyaXBBbmRDb2xsYXBzZSIsImdldENsYXNzIiwiY2xhc3Nlc1RvQXJyYXkiLCJyZW1vdmVQcm9wIiwicHJvcEZpeCIsInRhYmluZGV4IiwiZm9yIiwiY2xhc3MiLCJhZGRDbGFzcyIsImNsYXNzZXMiLCJjdXJWYWx1ZSIsImNsYXp6IiwiZmluYWxWYWx1ZSIsInRvZ2dsZUNsYXNzIiwic3RhdGVWYWwiLCJpc1ZhbGlkVmFsdWUiLCJjbGFzc05hbWVzIiwiaGFzQ2xhc3MiLCJycmV0dXJuIiwidmFsSG9va3MiLCJvcHRpb25TZXQiLCJmb2N1c2luIiwicmZvY3VzTW9ycGgiLCJzdG9wUHJvcGFnYXRpb25DYWxsYmFjayIsIm9ubHlIYW5kbGVycyIsImJ1YmJsZVR5cGUiLCJvbnR5cGUiLCJsYXN0RWxlbWVudCIsImV2ZW50UGF0aCIsImlzVHJpZ2dlciIsInBhcmVudFdpbmRvdyIsInNpbXVsYXRlIiwidHJpZ2dlckhhbmRsZXIiLCJhdHRhY2hlcyIsIm5vbmNlIiwicnF1ZXJ5IiwicGFyc2VYTUwiLCJET01QYXJzZXIiLCJwYXJzZUZyb21TdHJpbmciLCJyYnJhY2tldCIsInJDUkxGIiwicnN1Ym1pdHRlclR5cGVzIiwicnN1Ym1pdHRhYmxlIiwiYnVpbGRQYXJhbXMiLCJ0cmFkaXRpb25hbCIsInBhcmFtIiwidmFsdWVPckZ1bmN0aW9uIiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwic2VyaWFsaXplIiwic2VyaWFsaXplQXJyYXkiLCJyMjAiLCJyaGFzaCIsInJhbnRpQ2FjaGUiLCJyaGVhZGVycyIsInJub0NvbnRlbnQiLCJycHJvdG9jb2wiLCJ0cmFuc3BvcnRzIiwiYWxsVHlwZXMiLCJvcmlnaW5BbmNob3IiLCJhZGRUb1ByZWZpbHRlcnNPclRyYW5zcG9ydHMiLCJzdHJ1Y3R1cmUiLCJkYXRhVHlwZUV4cHJlc3Npb24iLCJkYXRhVHlwZXMiLCJpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyIsImpxWEhSIiwiaW5zcGVjdGVkIiwic2Vla2luZ1RyYW5zcG9ydCIsInByZWZpbHRlck9yRmFjdG9yeSIsImRhdGFUeXBlT3JUcmFuc3BvcnQiLCJhamF4RXh0ZW5kIiwiZmxhdE9wdGlvbnMiLCJhamF4U2V0dGluZ3MiLCJhY3RpdmUiLCJsYXN0TW9kaWZpZWQiLCJldGFnIiwicHJvdG9jb2wiLCJwcm9jZXNzRGF0YSIsImFzeW5jIiwiY29udGVudFR5cGUiLCJhY2NlcHRzIiwianNvbiIsInJlc3BvbnNlRmllbGRzIiwiY29udmVydGVycyIsIiogdGV4dCIsInRleHQgaHRtbCIsInRleHQganNvbiIsInRleHQgeG1sIiwiYWpheFNldHVwIiwic2V0dGluZ3MiLCJhamF4UHJlZmlsdGVyIiwiYWpheFRyYW5zcG9ydCIsInRyYW5zcG9ydCIsImNhY2hlVVJMIiwicmVzcG9uc2VIZWFkZXJzU3RyaW5nIiwicmVzcG9uc2VIZWFkZXJzIiwidGltZW91dFRpbWVyIiwidXJsQW5jaG9yIiwiZmlyZUdsb2JhbHMiLCJ1bmNhY2hlZCIsImNhbGxiYWNrQ29udGV4dCIsImdsb2JhbEV2ZW50Q29udGV4dCIsImNvbXBsZXRlRGVmZXJyZWQiLCJzdGF0dXNDb2RlIiwicmVxdWVzdEhlYWRlcnMiLCJyZXF1ZXN0SGVhZGVyc05hbWVzIiwic3RyQWJvcnQiLCJnZXRSZXNwb25zZUhlYWRlciIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJvdmVycmlkZU1pbWVUeXBlIiwibWltZVR5cGUiLCJzdGF0dXMiLCJhYm9ydCIsInN0YXR1c1RleHQiLCJmaW5hbFRleHQiLCJjcm9zc0RvbWFpbiIsImhvc3QiLCJoYXNDb250ZW50IiwiaWZNb2RpZmllZCIsImJlZm9yZVNlbmQiLCJzdWNjZXNzIiwibmF0aXZlU3RhdHVzVGV4dCIsInJlc3BvbnNlcyIsImlzU3VjY2VzcyIsInJlc3BvbnNlIiwibW9kaWZpZWQiLCJjdCIsImZpbmFsRGF0YVR5cGUiLCJmaXJzdERhdGFUeXBlIiwiYWpheEhhbmRsZVJlc3BvbnNlcyIsImNvbnYyIiwiY3VycmVudCIsImNvbnYiLCJkYXRhRmlsdGVyIiwidGhyb3dzIiwiYWpheENvbnZlcnQiLCJnZXRKU09OIiwid3JhcEFsbCIsImZpcnN0RWxlbWVudENoaWxkIiwid3JhcElubmVyIiwiaHRtbElzRnVuY3Rpb24iLCJ1bndyYXAiLCJ2aXNpYmxlIiwib2Zmc2V0SGVpZ2h0IiwieGhyIiwiWE1MSHR0cFJlcXVlc3QiLCJ4aHJTdWNjZXNzU3RhdHVzIiwiMCIsIjEyMjMiLCJ4aHJTdXBwb3J0ZWQiLCJjb3JzIiwiZXJyb3JDYWxsYmFjayIsIm9wZW4iLCJ1c2VybmFtZSIsInhockZpZWxkcyIsIm9ubG9hZCIsIm9uZXJyb3IiLCJvbmFib3J0Iiwib250aW1lb3V0IiwicmVzcG9uc2VUeXBlIiwicmVzcG9uc2VUZXh0IiwiYmluYXJ5IiwidGV4dCBzY3JpcHQiLCJjaGFyc2V0Iiwic2NyaXB0Q2hhcnNldCIsImV2dCIsIm9sZENhbGxiYWNrcyIsInJqc29ucCIsImpzb25wIiwianNvbnBDYWxsYmFjayIsIm9yaWdpbmFsU2V0dGluZ3MiLCJjYWxsYmFja05hbWUiLCJvdmVyd3JpdHRlbiIsInJlc3BvbnNlQ29udGFpbmVyIiwianNvblByb3AiLCJjcmVhdGVIVE1MRG9jdW1lbnQiLCJpbXBsZW1lbnRhdGlvbiIsImtlZXBTY3JpcHRzIiwicGFyc2VkIiwicGFyYW1zIiwiYW5pbWF0ZWQiLCJzZXRPZmZzZXQiLCJjdXJQb3NpdGlvbiIsImN1ckxlZnQiLCJjdXJDU1NUb3AiLCJjdXJUb3AiLCJjdXJPZmZzZXQiLCJjdXJDU1NMZWZ0IiwiY3VyRWxlbSIsInVzaW5nIiwicmVjdCIsIndpbiIsInBhZ2VZT2Zmc2V0IiwicGFnZVhPZmZzZXQiLCJvZmZzZXRQYXJlbnQiLCJwYXJlbnRPZmZzZXQiLCJzY3JvbGxUbyIsIkhlaWdodCIsIldpZHRoIiwiIiwiZGVmYXVsdEV4dHJhIiwiZnVuY05hbWUiLCJob3ZlciIsImZuT3ZlciIsImZuT3V0IiwidW5iaW5kIiwiZGVsZWdhdGUiLCJ1bmRlbGVnYXRlIiwicHJveHkiLCJob2xkUmVhZHkiLCJob2xkIiwicGFyc2VKU09OIiwiaXNOdW1lcmljIiwiX2pRdWVyeSIsIl8kIiwibm9Db25mbGljdCIsImNhY2hlZEd1ZXNzIiwiem9uZXMiLCJsaW5rcyIsImd1ZXNzZXMiLCJtb21lbnRWZXJzaW9uIiwibWFqb3IiLCJtaW5vciIsImNoYXJDb2RlVG9JbnQiLCJ1bnBhY2tCYXNlNjAiLCJ3aG9sZSIsImZyYWN0aW9uYWwiLCJtdWx0aXBsaWVyIiwiYXJyYXlUb0ludCIsIm1hcEluZGljZXMiLCJpbmRpY2VzIiwidW5wYWNrIiwib2Zmc2V0cyIsInVudGlscyIsIkluZmluaXR5IiwiaW50VG9VbnRpbCIsImFiYnJzIiwicG9wdWxhdGlvbiIsIlpvbmUiLCJwYWNrZWRTdHJpbmciLCJfc2V0IiwiT2Zmc2V0QXQiLCJhdCIsInRpbWVTdHJpbmciLCJ0b1RpbWVTdHJpbmciLCJab25lU2NvcmUiLCJvZmZzZXRTY29yZSIsImFiYnJTY29yZSIsImZpbmRDaGFuZ2UiLCJsb3ciLCJtaWQiLCJzb3J0Wm9uZVNjb3JlcyIsImFkZFRvR3Vlc3NlcyIsImd1ZXNzZXNGb3JVc2VyT2Zmc2V0cyIsImd1ZXNzZXNPZmZzZXQiLCJvZmZzZXRzTGVuZ3RoIiwiZmlsdGVyZWRHdWVzc2VzIiwicmVidWlsZEd1ZXNzIiwiaW50bE5hbWUiLCJJbnRsIiwiRGF0ZVRpbWVGb3JtYXQiLCJyZXNvbHZlZE9wdGlvbnMiLCJ0aW1lWm9uZSIsIm5vcm1hbGl6ZU5hbWUiLCJsb2dFcnJvciIsInpvbmVTY29yZSIsImNoYW5nZSIsInN0YXJ0WWVhciIsInVzZXJPZmZzZXRzIiwiem9uZVNjb3JlcyIsImdldFpvbmUiLCJzY29yZU9mZnNldEF0IiwiYWRkWm9uZSIsInBhY2tlZCIsIm5vcm1hbGl6ZWQiLCJjYWxsZXIiLCJsaW5rIiwiYWRkTGluayIsIm5vcm1hbDAiLCJub3JtYWwxIiwibG9hZERhdGEiLCJ0eiIsImRhdGFWZXJzaW9uIiwibmVlZHNPZmZzZXQiLCJpc1VuaXhUaW1lc3RhbXAiLCJ1bnBhY2tlZCIsIl9pbmRleCIsInRpbWVzdGFtcCIsIm9mZnNldE5leHQiLCJvZmZzZXRQcmV2IiwibW92ZUFtYmlndW91c0ZvcndhcmQiLCJtb3ZlSW52YWxpZEZvcndhcmQiLCJvZmZzZXRBdCIsIl96b25lcyIsIl9saW5rcyIsIl9uYW1lcyIsInpvbmVFeGlzdHMiLCJkaWRTaG93RXJyb3IiLCJndWVzcyIsImlnbm9yZUNhY2hlIiwiYWJicldyYXAiLCJfeiIsImRlZmF1bHRab25lIiwic2V0RGVmYXVsdCIsImxhc3RUaW1lIiwidmVuZG9ycyIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiY3VyclRpbWUiLCJ0aW1lVG9DYWxsIiwiX3NldHRpbmdzIiwiY3Vyc29yQW5pbWF0aW9uUGF1c2VkIiwib3BhY2l0eUluY3JlYXNpbmciLCJjdXJyZW50T3BhY2l0eSIsImRlbGF5ZWRRdWUiLCJkZWxheUl0ZW1zQ291bnQiLCJldmVudFF1ZSIsImNhbGxlZEV2ZW50cyIsImV2ZW50UnVubmluZyIsImRlbGF5RXhlY3V0aW9uIiwiZnBzIiwidHlwaW5nRnJhbWVDb3VudCIsInN0cmluZ1RvVHlwZUhUTUxBcnJheSIsImN1cnJlbnRUeXBlZENoYXJhY3RlcnMiLCJ0eXBpbmciLCJ1c2VkSURzIiwiY2hhckFtb3VudFRvRGVsZXRlIiwidXNlck9wdGlvbnMiLCJldmVudExvb3BSZXJ1biIsImRlZmF1bHRfb3B0aW9ucyIsInN0cmluZ3MiLCJjdXJzb3JDbGFzc05hbWUiLCJjdXJzb3IiLCJhbmltYXRlQ3Vyc29yIiwiYmxpbmtTcGVlZCIsImNoYXJTcGFuQ2xhc3NOYW1lIiwid3JhcHBlckNsYXNzTmFtZSIsImF1dG9TdGFydCIsIl9zZXR1cE9wdGlvbnMiLCJfc2V0dXBUeXB3cml0ZXJXcmFwcGVyIiwiX3N0YXJ0Q3Vyc29yQW5pbWF0aW9uIiwidHlwZU91dEFsbFN0cmluZ3MiLCJUeXBld3JpdGVyUHJvdG90eXBlIiwiX2FkZFRvRXZlbnRRdWUiLCJfc3RvcEV2ZW50TG9vcCIsIl9zdGFydEV2ZW50TG9vcCIsInJlcnVuIiwiX3JlcnVuQ2FsbGVkRXZlbnRzIiwic3RyaW5nX2NoYXJzIiwiX2dldENoYXJhY3RlcnMiLCJfdHlwZUNoYXJhY3RlcnMiLCJkZWxldGVBbGwiLCJfZGVsZXRlQ2hhcnMiLCJhbW91bnQiLCJfcGF1c2VGb3IiLCJjaGFyYWN0ZXJzX2FycmF5IiwiX2dldFN0cmluZ3NBc0NoYXJzQXJyYXkiLCJfcmFuZG9tSW50ZWdlciIsIm5ld19zZXR0aW5ncyIsIl9jaGFuZ2VTZXR0aW5ncyIsImNoYW5nZUJsaW5rU3BlZWQiLCJuZXdfc3BlZWQiLCJjaGFuZ2VUeXBpbmdTcGVlZCIsImNoYW5nZURlbGV0ZVNwZWVkIiwiX3Jlc2V0RXZlbnRMb29wIiwiX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiIsIl9kZWxldGluZ0NoYXJBbmltYXRpb25GcmFtZSIsImxvZyIsImRlbGV0ZV9zcGVlZCIsInR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lIiwiY3VycmVudF90eXBlZF9jaGFyX2lkcyIsImNoYXJfYW1vdW50X3RvX2RlbGV0ZSIsImxhc3RfdHlwZWRfY2hhcl9pbmRleCIsImdldF9sYXN0X3R5cGVkX2NoYXIiLCJjaGFyX3RvX2RlbGV0ZV9lbCIsIm5ld19vcHRpb25zIiwibWVyZ2VkX29wdGlvbnMiLCJhdHRybmFtZSIsImZpcnN0X2V2ZW50IiwiX2V2ZW50UXVlQW5pbWF0aW9uIiwiZXZlbnRfbmFtZSIsInR5cGV3cml0ZXJfd3JhcHBlciIsIl9jb252ZXJ0Q2hhcnNUb0hUTUwiLCJfdHlwaW5nQW5pbWF0aW9uIiwiX3R5cGluZ0FuaW1hdGlvbkZyYW1lIiwidG90YWxfaXRlbXMiLCJ0eXBpbmdfc3BlZWQiLCJpdGVtX3RvX3R5cGUiLCJjaGFycyIsImNoYXJzX2h0bWxfd3JhcF9hcnJheSIsImNoYXJfY2xhc3NfbmFtZSIsImNoYXJzX2FycmF5IiwiY2hhcl9lbGVtZW50IiwiY2hhcl9pZCIsIl9nZW5lcmF0ZVVuaXF1ZUlEIiwic3RyaW5nc19hcnJheV9jaGVjayIsInN0cmluZ3Nfc3RyaW5nX2NoZWNrIiwic3RyaW5nc19jaGFyc19hcnJheSIsIl9jdXJzb3JBbmltYXRpb25GcmFtZSIsIm9wYWNpdHlfYW1vdW50IiwiY3Vyc29yX2VsIiwiX2N1cnNvckFuaW1hdGlvbiIsIl9hcHBlbmRUZXh0IiwiaXRlbXMiLCJjdXJzb3JfY2xhc3NfbmFtZSIsImN1cnNvcl9lbGVtZW50IiwiX3BhdXNlQ3Vyc29yQW5pbWF0aW9uIiwiX3Jlc3RhcnRDdXJzb3JBbmltYXRpb24iLCJfcmFuZG9tSUQiLCJwb3NzaWJsZSIsInRlbXBfaWQiLCJoeXBoZW5hdGVDYWNoZSIsImh5cGhlbmF0ZVJlIiwiaHlwaGVuYXRlIiwic3RyIiwiY2FtZWxpemVSZSIsImNhbWVsaXplIiwidG9VcHBlciIsInVjZmlyc3QiLCJzdHJQcm90b3R5cGUiLCJzdGFydHNXaXRoRm4iLCJzdGFydHNXaXRoIiwic2VhcmNoIiwibGFzdEluZGV4T2YiLCJlbmRzV2l0aEZuIiwiZW5kc1dpdGgiLCJpbmNsdWRlc0ZuIiwiaW5jbHVkZXNTdHIiLCJpbmNsdWRlcyIsImluY2x1ZGVzQXJyYXkiLCJpc1N0cmluZyIsImlzRG9jdW1lbnQiLCJpc0pRdWVyeSIsImlzTm9kZSIsIk5vZGUiLCJpc05vZGVDb2xsZWN0aW9uIiwiTm9kZUxpc3QiLCJIVE1MQ29sbGVjdGlvbiIsImlzQm9vbGVhbiIsInRvQm9vbGVhbiIsInRvTnVtYmVyIiwiTnVtYmVyIiwidG9GbG9hdCIsInRvTm9kZSIsImFycmF5UHJvdG8iLCJ0b05vZGVzIiwiQm9vbGVhbiIsInRvTGlzdCIsInRvTXMiLCJhc3NpZ24iLCJjYiIsInNvcnRCeSIsImNsYW1wIiwiaW50ZXJzZWN0UmVjdCIsInIxIiwicjIiLCJib3R0b20iLCJwb2ludEluUmVjdCIsInBvaW50IiwiRGltZW5zaW9ucyIsInJhdGlvIiwiZGltZW5zaW9ucyIsImFQcm9wIiwiY29udGFpbiIsIm1heERpbWVuc2lvbnMiLCJ0aGlzJDEiLCJjb3ZlciIsImhhc0F0dHIiLCJoYXNBdHRyaWJ1dGUiLCJmaWx0ZXJBdHRyIiwiYXR0cmlidXRlIiwicmVwbGFjZW1lbnQiLCJxdWVyeSIsImlzQ29udGV4dFNlbGVjdG9yIiwicXVlcnlBbGwiLCJmaW5kQWxsIiwiX3F1ZXJ5IiwicXVlcnlGbiIsInJlbW92ZXMiLCJjb250ZXh0U2FuaXRpemVSZSIsImN0eCIsInNlbGVjdG9ycyQxIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsImNvbnRleHRTZWxlY3RvclJlIiwiZWxQcm90byIsIkVsZW1lbnQiLCJtYXRjaGVzRm4iLCJjbG9zZXN0Rm4iLCJhbmNlc3RvciIsImVzY2FwZUZuIiwiQ1NTIiwidm9pZEVsZW1lbnRzIiwiYXJlYSIsImJyIiwiZW1iZWQiLCJociIsImltZyIsImtleWdlbiIsIm1lbnVpdGVtIiwibWV0YSIsInRyYWNrIiwid2JyIiwiaXNWb2lkRWxlbWVudCIsInRhZ05hbWUiLCJpc1Zpc2libGUiLCJzZWxJbnB1dCIsImlzSW5wdXQiLCJ3aXRoaW4iLCJyZWYiLCJnZXRBcmdzIiwibGlzdGVuZXIiLCJ1c2VDYXB0dXJlIiwidG9FdmVudFRhcmdldCIsImNvbmRpdGlvbiIsInRvRXZlbnRUYXJnZXRzIiwicmVkdWNlIiwibm90Q2FuY2VsZWQiLCJkaXNwYXRjaEV2ZW50IiwiY3JlYXRlRXZlbnQiLCJpbml0Q3VzdG9tRXZlbnQiLCJpc0V2ZW50VGFyZ2V0IiwiRXZlbnRUYXJnZXQiLCJwcmV2ZW50Q2xpY2siLCJQcm9taXNlJDEiLCJQcm9taXNlIiwiUHJvbWlzZUZuIiwiUEVORElORyIsInNldEltbWVkaWF0ZSIsImV4ZWN1dG9yIiwiciIsIml0ZXJhYmxlIiwicmVzb2x2ZXIiLCJyYWNlIiwiZW52IiwiZ2V0SW1hZ2UiLCJzcmNzZXQiLCJzaXplcyIsIkltYWdlIiwidW5iaW5kMSIsInVuYmluZDIiLCJnZXRJbmRleCIsImZpbml0ZSIsImhhc0NoaWxkTm9kZXMiLCJpbnNlcnROb2RlcyIsImNhbGxlZCIsIm9uUmVzb2x2ZWQiLCJmcmFnbWVudFJlIiwic2luZ2xlVGFnUmUiLCJpbnNlcnRBZGphY2VudEhUTUwiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJhcHBseSQxIiwicmVtb3ZlQ2xhc3NlcyIsImNscyIsInJlcGxhY2VDbGFzcyIsImZvcmNlIiwiZ2V0QXJncyQxIiwic3VwcG9ydHMiLCJGb3JjZSIsIk11bHRpcGxlIiwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsImNvbHVtbi1jb3VudCIsImZpbGwtb3BhY2l0eSIsImZsZXgtZ3JvdyIsImZsZXgtc2hyaW5rIiwiZm9udC13ZWlnaHQiLCJsaW5lLWhlaWdodCIsInotaW5kZXgiLCJwcm9wZXJ0eSIsInByb3BOYW1lIiwiZ2V0U3R5bGUiLCJyZW1vdmVQcm9wZXJ0eSIsInBzZXVkb0VsdCIsInZhcnMiLCJnZXRDc3NWYXIiLCJwcmVmaXhlZE5hbWUiLCJ0cmFuc2l0aW9uIiwidGltaW5nIiwidHJhbnNpdGlvbi1wcm9wZXJ0eSIsInRyYW5zaXRpb24tZHVyYXRpb24iLCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiIsIlRyYW5zaXRpb24iLCJjYW5jZWwiLCJhbmltYXRpb25QcmVmaXgiLCJjbHNDYW5jZWxBbmltYXRpb24iLCJvcmlnaW4iLCJhcmd1bWVudHMkMSIsImhhc1Jlc2V0IiwiaW4iLCJpc0h0bWwiLCIkJCIsImRpcnMiLCJwb3NpdGlvbkF0IiwiZWxBdHRhY2giLCJ0YXJnZXRBdHRhY2giLCJlbE9mZnNldCIsInRhcmdldE9mZnNldCIsImZsaXAiLCJib3VuZGFyeSIsImdldFBvcyIsImZsaXBwZWQiLCJkaW0iLCJnZXREaW1lbnNpb25zIiwidGFyZ2V0RGltIiwibW92ZVRvIiwiZ2V0T2Zmc2V0cyIsIndpbmRvdyQxIiwiYWxpZ24iLCJhbGlnbkZsaXAiLCJlbGVtT2Zmc2V0IiwiY2VudGVyT2Zmc2V0IiwiY2VudGVyVGFyZ2V0T2Zmc2V0IiwibmV3VmFsIiwiY29vcmRpbmF0ZXMiLCJjdXJyZW50T2Zmc2V0IiwiaW5uZXJIZWlnaHQiLCJpbm5lcldpZHRoIiwiZG9jRWwiLCJwcm9wTmFtZSQkMSIsImJveE1vZGVsQWRqdXN0IiwiYXR0YWNoIiwiZmFjdG9yIiwiZmxpcFBvc2l0aW9uIiwiaXNJblZpZXciLCJ0b3BPZmZzZXQiLCJsZWZ0T2Zmc2V0IiwicmVsYXRpdmVUb1ZpZXdwb3J0Iiwib2Zmc2V0UG9zaXRpb24iLCJlbFRvcCIsImVsTGVmdCIsInNjcm9sbGVkT3ZlciIsImhlaWdodE9mZnNldCIsImRvY3VtZW50JDEiLCJlbEhlaWdodCIsInZwIiwidmgiLCJvZmZzZXRUb3AiLCJvZmZzZXRMZWZ0IiwiaXNSdGwiLCJoYXNUb3VjaEV2ZW50cyIsImhhc1BvaW50ZXJFdmVudHMiLCJQb2ludGVyRXZlbnQiLCJoYXNUb3VjaCIsIkRvY3VtZW50VG91Y2giLCJuYXZpZ2F0b3IiLCJtYXhUb3VjaFBvaW50cyIsInBvaW50ZXJEb3duIiwicG9pbnRlck1vdmUiLCJwb2ludGVyVXAiLCJwb2ludGVyRW50ZXIiLCJwb2ludGVyTGVhdmUiLCJmYXN0ZG9tIiwicmVhZHMiLCJ3cml0ZXMiLCJyZWFkIiwidGFzayIsInNjaGVkdWxlRmx1c2giLCJ3cml0ZSIsImNsZWFyIiwicmVtb3ZlJDEiLCJmbHVzaCIsInJ1blRhc2tzIiwic2NoZWR1bGVkIiwidGFza3MiLCJpdGVtIiwiTW91c2VUcmFja2VyIiwic2xvcGUiLCJwb3NpdGlvbnMiLCJ0aWNraW5nIiwibW92ZXNUbyIsInBvc2l0aW9uJCQxIiwicHJldlBvcyIsInBvaW50cyIsInN0cmF0cyIsIm1lcmdlRm5EYXRhIiwicGFyZW50VmFsIiwiY2hpbGRWYWwiLCJ2bSIsImNyZWF0ZWQiLCJiZWZvcmVDb25uZWN0IiwiY29ubmVjdGVkIiwiYmVmb3JlRGlzY29ubmVjdCIsImRpc2Nvbm5lY3RlZCIsImRlc3Ryb3kiLCJ1cGRhdGUiLCJtZXRob2RzIiwiZGVmYXVsdFN0cmF0IiwibWVyZ2VPcHRpb25zIiwiY2hpbGQiLCJleHRlbmRzIiwibWl4aW5zIiwibWVyZ2VLZXkiLCJrZXkkMSIsInBhcnNlT3B0aW9ucyIsIlBsYXllciIsInBvc3QiLCJjbWQiLCJjb250ZW50V2luZG93IiwicG9zdE1lc3NhZ2UiLCJpc1ZpZGVvIiwiaXNZb3V0dWJlIiwiaXNWaW1lbyIsImlzSFRNTDUiLCJpc0lGcmFtZSIsImVuYWJsZUFwaSIsInBvbGxlciIsInlvdXR1YmUiLCJ2aW1lbyIsImRhdGEkJDEiLCJwbGF5ZXJfaWQiLCJwbGF5IiwicGF1c2UiLCJtdXRlIiwibXV0ZWQiLCJjbGlja1RpbWVvdXQiLCJzd2lwZVRpbWVvdXQiLCJ0YXBUaW1lb3V0IiwiY2xpY2tlZCIsInRvdWNoIiwiY2FuY2VsQWxsIiwiZ2V0UG9zJDEiLCJnZXRUeXBlIiwieDEiLCJ5MSIsIngyIiwieTIiLCJ0b3VjaGluZyIsImlzVG91Y2giLCJnZXRDb21wb25lbnROYW1lIiwiX2luaXQiLCJ1dGlsIiwiZnJlZXplIiwiREFUQSIsIl9pc1JlYWR5IiwiX2NhbGxVcGRhdGUiLCJ1c2UiLCJwbHVnaW4iLCJpbnN0YWxsZWQiLCJtaXhpbiIsImNvbXBvbmVudCIsIlN1YiIsImNyZWF0ZSIsInBhdGgiLCJnbG9iYWxBUEkiLCJfY2FsbEhvb2siLCIkb3B0aW9ucyIsIl9jYWxsQ29ubmVjdGVkIiwiX2Nvbm5lY3RlZCIsIl9pbml0UHJvcHMiLCJfaW5pdEV2ZW50cyIsIl9pbml0T2JzZXJ2ZXIiLCJfY2FsbFJlYWR5IiwiX2NhbGxEaXNjb25uZWN0ZWQiLCJfb2JzZXJ2ZXIiLCJkaXNjb25uZWN0IiwiX3VuYmluZEV2ZW50cyIsIl9yZXNldENvbXB1dGVkcyIsInVwZGF0ZXMiLCJfZnJhbWVzIiwiaG9va3NBUEkiLCJnZXRQcm9wcyIsImNvZXJjZSIsInByb3AkMSIsInJlZ2lzdGVyQ29tcHV0ZWQiLCJfY29tcHV0ZWRzIiwiJHByb3BzIiwiJGVsIiwicmVnaXN0ZXJFdmVudCIsImNhcHR1cmUiLCJmaWx0ZXIkJDEiLCJzZWxmRmlsdGVyIiwiX2V2ZW50cyIsIm5vdEluIiwiZXZlcnkiLCJ0b01lZGlhIiwicmVmJDEiLCJpbmRleCQkMSIsIm5vcm1hbGl6ZURhdGEiLCJfdWlkIiwiX2luaXREYXRhIiwiX2luaXRNZXRob2RzIiwiX2luaXRDb21wdXRlZHMiLCIkbW91bnQiLCIkbmFtZSIsImV4Y2x1ZGUiLCJNdXRhdGlvbk9ic2VydmVyIiwiJHJlc2V0Iiwib2JzZXJ2ZSIsImF0dHJpYnV0ZUZpbHRlciIsInN0YXRlQVBJIiwiY29tcG9uZW50cyIsImFyZ3NBcnJheSIsImZ1bmN0aW9uYWwiLCJpbnN0YW5jZSIsImdldENvbXBvbmVudCIsIiRkZXN0cm95IiwiaW5zdGFsbCIsIl9pbml0aWFsaXplZCIsImdldENvbXBvbmVudHMiLCJjb25uZWN0IiwibmFtZSQxIiwiY29tcG9uZW50QVBJIiwiJGVtaXQiLCJyZW1vdmVFbCIsIiRjcmVhdGUiLCIkdXBkYXRlIiwiJGdldENvbXBvbmVudCIsImRlZmluZVByb3BlcnRpZXMiLCIkY29udGFpbmVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiaW5zdGFuY2VBUEkiLCJDbGFzcyIsIlRvZ2dsYWJsZSIsInF1ZXVlZCIsImluaXRQcm9wcyIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwiaGlkZVByb3BzIiwiaGFzQW5pbWF0aW9uIiwiaGFzVHJhbnNpdGlvbiIsInRvZ2dsZUVsZW1lbnQiLCJhbmltYXRlJCQxIiwiX3RvZ2dsZUVsZW1lbnQiLCJ0b2dnbGVkIiwiaXNUb2dnbGVkIiwidW50b2dnbGVkIiwic2Nyb2xsIiwidG9nZ2xlTm93IiwidXBkYXRlQXJpYSIsIl90b2dnbGVIZWlnaHQiLCJfdG9nZ2xlQW5pbWF0aW9uIiwiX3RvZ2dsZUltbWVkaWF0ZSIsIl90b2dnbGUiLCJjaGFuZ2VkIiwiaW5uZXIiLCJsYXN0RWxlbWVudENoaWxkIiwiY3VycmVudEhlaWdodCIsImVuZEhlaWdodCIsIkFjY29yZGlvbiIsImNvbGxhcHNpYmxlIiwibXVsdGlwbGUiLCJjbHNPcGVuIiwiaXNJdGVtIiwiX3dyYXBwZXIiLCJBbGVydCIsImNsb3NlIiwic2VsQ2xvc2UiLCJDb3JlIiwic3RhcnRlZCIsInBhc3NpdmUiLCJob3ZlclNlbGVjdG9yIiwicmVnaXN0ZXJlZCIsIlZpZGVvIiwiYXV0b211dGUiLCJhdXRvcGxheSIsImluVmlldyIsInByZWxvYWQiLCJwbGF5ZXIiLCJDb3ZlciIsImhlaWdodCQkMSIsIndpZHRoJCQxIiwiY2xpZW50V2lkdGgiLCJjbGllbnRIZWlnaHQiLCJsb2FkZWRtZXRhZGF0YSIsIlBvc2l0aW9uIiwiY2xzUG9zIiwib2Zmc2V0JCQxIiwiYXhpcyIsImdldEF4aXMiLCJEcm9wIiwibW9kZSIsImJvdW5kYXJ5QWxpZ24iLCJkZWxheVNob3ciLCJkZWxheUhpZGUiLCJjbHNEcm9wIiwiaG92ZXJJZGxlIiwidHJhY2tlciIsImNsZWFyVGltZXJzIiwiaXNBY3RpdmUiLCJ0cnlTaG93IiwiaXNEZWxheWluZyIsInNob3dUaW1lciIsImlzUGFyZW50T2YiLCJoaWRlVGltZXIiLCJpc0NoaWxkT2YiLCJkcm9wIiwiYWxpZ25UbyIsIkRyb3Bkb3duIiwiRm9ybUN1c3RvbSIsImZpbGVzIiwiR2lmIiwiaW52aWV3IiwiTWFyZ2luIiwiZmlyc3RDb2x1bW4iLCJyb3dzIiwiZ2V0Um93cyIsInN0YWNrcyIsInJvdyIsImdldE9mZnNldCIsImxlZnREaW0iLCJHcmlkIiwibWFzb25yeSIsInBhcmFsbGF4IiwiY2xzU3RhY2siLCJ0cmFuc2xhdGVzIiwic3VtIiwibWF4Q29sdW1uSGVpZ2h0Iiwic2Nyb2xsZWQiLCJIZWlnaHRNYXRjaCIsIm1pbkhlaWdodCIsImJveFNpemluZyIsImhlaWdodHMiLCJIZWlnaHRWaWV3cG9ydCIsIm9mZnNldEJvdHRvbSIsInZpZXdwb3J0Iiwic3ZncyIsIlNWRyIsImljb24iLCJhc3NpZ24kJDEiLCJzdmciLCJnZXRTdmciLCJzeW1ib2xzIiwic3ltYm9sUmUiLCJwYXJzZVN5bWJvbHMiLCJpc0VxdWFsTm9kZSIsInN2Z0VsIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiaWNvbnMiLCJzcGlubmVyIiwidG90b3AiLCJtYXJrZXIiLCJjbG9zZS1pY29uIiwiY2xvc2UtbGFyZ2UiLCJuYXZiYXItdG9nZ2xlLWljb24iLCJvdmVybGF5LWljb24iLCJwYWdpbmF0aW9uLW5leHQiLCJwYWdpbmF0aW9uLXByZXZpb3VzIiwic2VhcmNoLWljb24iLCJzZWFyY2gtbGFyZ2UiLCJzZWFyY2gtbmF2YmFyIiwic2xpZGVuYXYtbmV4dCIsInNsaWRlbmF2LW5leHQtbGFyZ2UiLCJzbGlkZW5hdi1wcmV2aW91cyIsInNsaWRlbmF2LXByZXZpb3VzLWxhcmdlIiwiSWNvbiIsImFkZGVkIiwiY21wIiwiaXNJY29uIiwiZ2V0SWNvbiIsImFwcGx5UnRsIiwiSWNvbkNvbXBvbmVudCIsIlNsaWRlbmF2IiwiU2VhcmNoIiwiQ2xvc2UiLCJTcGlubmVyIiwiSW1nIiwiZGF0YVNyYyIsImRhdGFTcmNzZXQiLCJkYXRhU2l6ZXMiLCJkYXRhV2lkdGgiLCJkYXRhSGVpZ2h0IiwiY2FjaGVLZXkiLCJpc0ltZyIsInRvUHgiLCJzdG9yYWdlIiwic2V0U3JjQXR0cnMiLCJjb2xvciIsIm1hdGNoZXMkJDEiLCJzaXplc1JlIiwibWF0Y2hNZWRpYSIsInNpemUiLCJzdWJzdHJpbmciLCJzaXplUmUiLCJhZGRpdGlvblJlIiwidXJsQ2FjaGUiLCJjYW52YXMiLCJnZXRDb250ZXh0IiwiZmlsbFN0eWxlIiwiZmlsbFJlY3QiLCJ0b0RhdGFVUkwiLCJnZXRQbGFjZWhvbGRlckltYWdlIiwiY3VycmVudFNyYyIsInNlc3Npb25TdG9yYWdlIiwiYWN0aXZlJDEiLCJMZWFkZXIiLCJmaWxsIiwibWVkaWEiLCJjbHNXcmFwcGVyIiwiY2xzSGlkZSIsImF0dHJGaWxsIiwid3JhcHBlciIsIkNvbnRhaW5lciIsIk1vZGFsIiwic2VsUGFuZWwiLCJlc2NDbG9zZSIsImJnQ2xvc2UiLCJvdmVybGF5IiwicGFuZWwiLCJ0cmFuc2l0aW9uRWxlbWVudCIsInRyYW5zaXRpb25EdXJhdGlvbiIsInJlZ2lzdGVyRXZlbnRzIiwiY2xzUGFnZSIsInNjcm9sbGJhcldpZHRoIiwiZm91bmQiLCJnZXRBY3RpdmUiLCJNb2RhbCQxIiwibW9kYWwiLCJkaWFsb2ciLCJhbGVydCIsImxhYmVscyIsImNvbmZpcm0iLCJyZXNvbHZlZCIsInByb21wdCIsIm9rIiwiTmF2IiwiTmF2YmFyIiwiZHJvcGRvd24iLCJkcm9wYmFyIiwiZHJvcGJhck1vZGUiLCJkcm9wYmFyQW5jaG9yIiwiZHJvcGRvd25zIiwiZ2V0RHJvcGRvd24iLCJ0cmFuc2l0aW9uVG8iLCJuZXdIZWlnaHQiLCJvbGRIZWlnaHQiLCJjbGlwIiwiT2ZmY2FudmFzIiwiY2xzQ29udGFpbmVyIiwiY2xzRmxpcCIsImNsc0NvbnRlbnQiLCJjbHNDb250ZW50QW5pbWF0aW9uIiwiY2xzU2lkZWJhckFuaW1hdGlvbiIsImNsc01vZGUiLCJjbHNPdmVybGF5IiwiT3ZlcmZsb3dBdXRvIiwiUmVzcG9uc2l2ZSIsIlNjcm9sbCIsImRvY0hlaWdodCIsIndpbkhlaWdodCIsInN0YXJ0WSIsImN1cnJlbnRZIiwiU2Nyb2xsc3B5IiwicmVwZWF0IiwiaW5WaWV3Q2xhc3MiLCJlbERhdGEiLCJ0b2dnbGVzIiwiU2Nyb2xsc3B5TmF2IiwiU3RpY2t5IiwiY2xzQWN0aXZlIiwiY2xzSW5hY3RpdmUiLCJjbHNGaXhlZCIsImNsc0JlbG93Iiwic2VsVGFyZ2V0Iiwid2lkdGhFbGVtZW50Iiwic2hvd09uVXAiLCJwbGFjZWhvbGRlciIsImJvdHRvbU9mZnNldCIsInBhcnNlUHJvcCIsImluYWN0aXZlIiwic2Nyb2xsWSIsInByb3BPZmZzZXQiLCJTd2l0Y2hlciIsInN3aXBpbmciLCJhdHRySXRlbSIsImNvbm5lY3RzIiwiZ2V0U2VsZWN0aW9uIiwiaGFzUHJldiIsIlRhYiIsIlRvZ2dsZSIsImNvcmUiLCJDb3VudGRvd24iLCJ0aW1lc3BhbiIsImRpZ2l0cyIsImRpZ2l0Iiwic3R5bGUkMSIsInRhcmdldENsYXNzIiwiQW5pbWF0ZSIsInNoZWV0IiwiaW5zZXJ0UnVsZSIsInByb3BzRnJvbSIsIm9sZFNjcm9sbFkiLCJwcm9wc1RvIiwiZ2V0UG9zaXRpb25XaXRoTWFyZ2luIiwicG9pbnRlckV2ZW50cyIsIkZpbHRlciIsInNlbEFjdGl2ZSIsImFjdGl2ZXMiLCJpc0VxdWFsTGlzdCIsInNldFN0YXRlIiwiZ2V0U3RhdGUiLCJtZXJnZVN0YXRlIiwiYXR0ciQkMSIsInN0YXRlRmlsdGVyIiwicmVmX3NvcnQiLCJzdGF0ZVNvcnQiLCJzdGF0ZU9yZGVyIiwiZ2V0RmlsdGVyIiwiZ3JvdXAiLCJtYXRjaEZpbHRlciIsImFwcGx5JCQxIiwiZ2V0U2VsZWN0b3IiLCJzb3J0ZWQiLCJsb2NhbGVDb21wYXJlIiwic29ydEl0ZW1zIiwiZmlsdGVyQnkiLCJsaXN0QSIsImxpc3RCIiwiQW5pbWF0aW9ucyIsInNsaWRlIiwidHJhbnNmb3JtIiwidHJhbnNsYXRlIiwidHJhbnNsYXRlZCIsInNjYWxlM2QiLCJBbmltYXRpb25zJDEiLCJmYWRlIiwidHJpZ2dlclVwZGF0ZSIsIlNsaWRlciIsImF1dG9wbGF5SW50ZXJ2YWwiLCJwYXVzZU9uSG92ZXIiLCJzdGFydEF1dG9wbGF5Iiwic3RvcEF1dG9wbGF5IiwiaXNIb3ZlcmluZyIsInByZXZlbnRDYXRjaCIsInNsaWRlc1NlbGVjdG9yIiwiZHJhZyIsIl90cmFuc2l0aW9uZXIiLCJnZXREaXN0YW5jZSIsImRyYWdnaW5nIiwicHJldkluZGV4IiwidW5iaW5kTW92ZSIsIm1vdmUiLCJkaXN0YW5jZSIsInNsaWRlcyIsImRpcyIsIm5leHRJbmRleCIsIl9nZXREaXN0YW5jZSIsIml0ZW1TaG93biIsImVkZ2UiLCJfdHJhbnNsYXRlIiwiX3Nob3ciLCJkaXJDaGFuZ2UiLCJzZWxOYXYiLCJuYXYiLCJuYXZJdGVtU2VsZWN0b3IiLCJuYXZJdGVtcyIsIm1heEluZGV4IiwidXBkYXRlTmF2IiwiZ2V0VmFsaWRJbmRleCIsImNsc0FjdGl2YXRlZCIsInZlbG9jaXR5IiwiVHJhbnNpdGlvbmVyIiwidHJhbnNpdGlvbk9wdGlvbnMiLCJzcGVlZFVwIiwic2VsTGlzdCIsIml0ZW1zaG93biIsInF1ZXVlSW5kZXgiLCJnZXREaXJlY3Rpb24iLCJfZ2V0VHJhbnNpdGlvbmVyIiwidHJhbnNpdGlvbmVyIiwiU2xpZGVzaG93IiwiQW5pbWF0aW9ucyQkMSIsIml0ZW1zaG93IGl0ZW1oaWRlIGl0ZW1zaG93biBpdGVtaGlkZGVuIiwiaXRlbXNob3ciLCJiZWZvcmVpdGVtc2hvdyIsIml0ZW1oaWRkZW4iLCJMaWdodGJveFBhbmVsIiwiZGVsYXlDb250cm9scyIsInZpZGVvQXV0b3BsYXkiLCJ0ZW1wbGF0ZSIsImhpZGVDb250cm9scyIsImdldEl0ZW0iLCJsb2FkSXRlbSIsImFsdCIsInNldEl0ZW0iLCJzZXRFcnJvciIsInZpZGVvIiwicG9zdGVyIiwidmlkZW9XaWR0aCIsInZpZGVvSGVpZ2h0Iiwic2V0SWZyYW1lIiwiZ2V0SWZyYW1lIiwiZW5jb2RlVVJJIiwid2l0aENyZWRlbnRpYWxzIiwicmVmX3Jlc3BvbnNlIiwic2hvd0NvbnRyb2xzIiwiY29udHJvbHNUaW1lciIsIkxpZ2h0Ym94IiwibGlnaHRib3hQYW5lbCIsIl9kZXN0cm95IiwiY29udGFpbmVycyIsIk5vdGlmaWNhdGlvbiIsImNsc0Nsb3NlIiwiY2xzTXNnIiwiY2xvc2VBbGwiLCJpbW1lZGlhdGUiLCJyZW1vdmVGbiIsInByb3BzJDEiLCJQYXJhbGxheCIsImJnUG9zIiwiaXNDb2xvciIsImlzQ3NzUHJvcCIsInN0ZXBzIiwiY292ZXJzIiwiZG93biIsImJnUHJvcHMiLCJiZyIsImJhY2tncm91bmRTaXplIiwiX2ltYWdlIiwiZGltRWwiLCJuYXR1cmFsV2lkdGgiLCJuYXR1cmFsSGVpZ2h0Iiwic3BhbiIsImJnUG9zRmxvYXQiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiZ2V0Q3NzIiwiY3NzJCQxIiwiZ2V0VmFsdWUiLCJyZWYkMiIsImdldFN0ZXAiLCJQYXJhbGxheCQxIiwiZWFzZSQxIiwiU2xpZGVyUmVhY3RpdmUiLCJnZXRMZWZ0IiwiY2VudGVyIiwiZ2V0RWxMZWZ0IiwiY2VudGVyRWwiLCJnZXRNYXgiLCJnZXRXaWR0aCIsInRyaWdnZXJVcGRhdGUkMSIsIlNsaWRlciQxIiwic2V0cyIsInVwZGF0ZVRyYW5zbGF0ZXMiLCJnZXRJdGVtSW4iLCJnZXRBY3RpdmVzIiwic2xpZGVMZWZ0IiwiYXZnV2lkdGgiLCJsZWZ0Q2VudGVyIiwic2xpZGVXaWR0aCIsInJlb3JkZXIiLCJzbGlkZUluZGV4IiwiU2xpZGVyUGFyYWxsYXgiLCJzZWxJdGVtIiwicmVmX2RldGFpbCIsImdldEN1cnJlbnQiLCJpc0luIiwib2JqJDEiLCJvYmokMiIsIkFuaW1hdGlvbnMkMiIsInB1bGwiLCJTbGlkZXNob3ckMSIsIm1heEhlaWdodCIsImhndCIsIlNvcnRhYmxlIiwiY2xzSXRlbSIsImNsc1BsYWNlaG9sZGVyIiwiY2xzRHJhZyIsImNsc0RyYWdTdGF0ZSIsImNsc0Jhc2UiLCJjbHNOb0RyYWciLCJjbHNFbXB0eSIsImNsc0N1c3RvbSIsInRvdWNoZWQiLCJvdXRlckhUTUwiLCJlbGVtZW50RnJvbVBvaW50Iiwic29ydGFibGUiLCJnZXRTb3J0YWJsZSIsInByZXZpb3VzIiwiaXNQcmVkZWNlc3NvciIsIlRvb2x0aXAiLCJ0aXRsZSIsIl9oYXNUaXRsZSIsImFyaWEtZXhwYW5kZWQiLCJfdW5iaW5kIiwidG9vbHRpcCIsIlVwbG9hZCIsImFsbG93IiwiY2xzRHJhZ292ZXIiLCJjb25jdXJyZW50IiwibWF4U2l6ZSIsIm1pbWUiLCJtc2dJbnZhbGlkTWltZSIsIm1zZ0ludmFsaWROYW1lIiwibXNnSW52YWxpZFNpemUiLCJiZWZvcmVBbGwiLCJjb21wbGV0ZUFsbCIsImxvYWRFbmQiLCJsb2FkU3RhcnQiLCJ1cGxvYWQiLCJ0cmFuc2ZlciIsImRhdGFUcmFuc2ZlciIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiY2h1bmtzIiwiY2h1bmsiLCJGb3JtRGF0YSIsIm11dGF0aW9ucyIsImFwcGx5TXV0YXRpb24iLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiY2hhcmFjdGVyRGF0YSIsIm11dGF0aW9uIiwiYWRkZWROb2RlcyIsInJlbW92ZWROb2RlcyIsImkkMSIsImFwcGx5Q2hpbGRMaXN0IiwiYXR0cmlidXRlTmFtZSIsImFwcGx5QXR0cmlidXRlIiwiYm9vdCJdLCJtYXBwaW5ncyI6IkFBQUEsYUFFQSxTQUFBQSxVQUFBQyxJQUFBQyxVQUFBQyxjQUNBLE1BQUFDLE9BQUFDLFNBQUFDLGNBQUEsVUFDQUYsT0FBQUcsS0FBQSxrQkFDQUgsT0FBQUksSUFBQVAsSUFDQUcsT0FBQUssT0FBQSxPQUVBQyxJQUFBUixZQUNBRSxPQUFBRixVQUFBQSxnQkFHQVEsSUFBQVAsZUFDQUMsT0FBQU8sWUFBQVIsY0FHQUUsU0FBQU8scUJBQUEsUUFBQSxHQUFBQyxZQUFBVCxRQUdBLFNBQUFVLFNBQUFDLFNBQUFDLFVBQ0FYLFNBQUFZLGNBQUFGLFVBRUFHLFVBQUFGLFNBR0EsU0FBQUcsWUFBQUosU0FBQUMsVUFDQSxNQUFBSSxRQUFBZixTQUFBWSxjQUFBRixVQUNBTSxJQUFBLElBQUFDLGVBQUFOLGdCQUFBLEtBQ0FJLFFBQUFGLFVBQUFFLFFBQUFGLFVBQUFLLFFBQUFGLElBQUEsS0N4QkEsU0FBQUcsbUJBQ0EsTUFBQUMsSUFBQXBCLFNBQUFxQixlQUFBLFNBRUFDLFdBQUEsSUFBQUMsV0FBQUgsS0FDQUksTUFBQSxFQUNBQyxZQUFBLEdBQ0FDLFlBQUEsVUFDQUMsU0FBQSxJQVVBM0IsU0FBQXFCLGVBQUEsa0JBQUFPLFFBUEEsV0FDQSxN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TixZQUVBbjJGLE1BQUF3dkUsT0FBQXA3QyxRQWlEQSxTQUFBcTFELFNBQUFqM0QsS0FBQW5zQixJQUVBLEdBQUEsSUFBQW1zQixLQUFBUCxXQUFBK3ZDLFFBQUF4dkMsS0FBQSxjQU1BLElBRkFuc0IsR0FBQW1zQixNQUNBQSxLQUFBQSxLQUFBZzdCLGtCQUNBaDdCLE1BQUEsQ0FDQSxJQUFBalgsS0FBQWlYLEtBQUEwMEMsbUJBQ0F1aUIsU0FBQWozRCxLQUFBbnNCLElBQ0Ftc0IsS0FBQWpYLE1BMUdBLHFCQUFBdGMsU0FJQXRDLFNBQUFpeUMsS0FFQTViLE9BSUEsSUFBQTZpRCxpQkFBQSxXQUVBbDVFLFNBQUFpeUMsT0FDQXJ0QyxLQUFBdXlFLGFBQ0E5Z0QsVUFHQStpRCxRQUFBcDVFLFVBQUFxNUYsV0FBQSxFQUFBQyxTQUFBLEtBOHZSQVMsQ0FBQTEyRixPQUdBQSIsImZpbGUiOiJzY3JpcHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gZ2V0U2NyaXB0KHVybCwgaW50ZWdyaXR5LCBjcm9zc19vcmlnaW4pIHtcbiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgIHNjcmlwdC50eXBlID0gXCJ0ZXh0L2phdmFzY3JpcHRcIjtcbiAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgIHNjcmlwdC5kZWZlciA9IHRydWU7XG5cbiAgICBpZiAoaW50ZWdyaXR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2NyaXB0LmludGVncml0eSA9IGludGVncml0eTtcbiAgICB9XG5cbiAgICBpZiAoY3Jvc3Nfb3JpZ2luICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2NyaXB0LmNyb3NzT3JpZ2luID0gY3Jvc3Nfb3JpZ2luO1xuICAgIH1cblxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXS5hcHBlbmRDaGlsZChzY3JpcHQpO1xufVxuXG5mdW5jdGlvbiBzZXRDbGFzcyhzZWxlY3RvciwgbXlfY2xhc3MpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgLy8gY29uc29sZS5sb2coZWxlbWVudCk7XG4gICAgZWxlbWVudC5jbGFzc05hbWUgPSBteV9jbGFzcztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2xhc3Moc2VsZWN0b3IsIG15X2NsYXNzKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYChefCApJHtteV9jbGFzc30oJHwgKWAsIFwiZ1wiKTtcbiAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UocmVnLCBcIiBcIik7XG59XG5cbi8vIGhpZGUgdGhlIGh0bWwgd2hlbiB0aGUgcGFnZSBsb2FkcywgYnV0IG9ubHkgaWYganMgaXMgdHVybmVkIG9uLlxuc2V0Q2xhc3MoXCJodG1sXCIsIFwicHJldmVudC1mb3VjXCIpO1xuXG4vLyB3aGVuIHRoZSBET00gaGFzIGZpbmlzaGVkIGxvYWRpbmcsIHVuaGlkZSB0aGUgaHRtbFxuZG9jdW1lbnQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSBcImludGVyYWN0aXZlXCIpIHtcbiAgICAgICAgcmVtb3ZlQ2xhc3MoXCJodG1sXCIsIFwicHJldmVudC1mb3VjXCIpO1xuICAgICAgICBnZXRTY3JpcHQoXG4gICAgICAgICAgICBcImh0dHBzOi8vcHJvLmZvbnRhd2Vzb21lLmNvbS9yZWxlYXNlcy92NS4wLjEzL2pzL2FsbC5qc1wiLCAvLyBVUkxcbiAgICAgICAgICAgIFwic2hhMzg0LWQ4NExHZzJwbTlLaFI0bUNBczNOMjlHUTRPWU55K0srRkJIWDhXaGltSHBQbTg2YzgzOSsrTURBQmVnclozZ25cIiwgLy8gSW50ZWdyaXR5XG4gICAgICAgICAgICBcImFub255bW91c1wiIC8vIENyb3NzLW9yaWdpblxuICAgICAgICApO1xuICAgICAgICBnZXRTY3JpcHQoXG4gICAgICAgICAgICBcImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2FjZS8xLjMuMy9hY2UuanNcIlxuICAgICAgICApO1xuICAgICAgICBnZXRTY3JpcHQoXG4gICAgICAgICAgICBcImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vZmxhdHBpY2tyXCJcbiAgICAgICAgKTtcbiAgICB9XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGV4cG9ydGVkIGVycm9yX3R5cGV3cml0ZXIgKi9cblxuZnVuY3Rpb24gZXJyb3JfdHlwZXdyaXRlcigpIHtcbiAgICBjb25zdCBhcHAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImVycm9yXCIpO1xuXG4gICAgY29uc3QgdHlwZXdyaXRlciA9IG5ldyBUeXBld3JpdGVyKGFwcCwge1xuICAgICAgICBcImxvb3BcIjogZmFsc2UsXG4gICAgICAgIFwiZGVsZXRlU3BlZWRcIjogNDAsXG4gICAgICAgIFwidHlwaW5nU3BlZWRcIjogXCJuYXR1cmFsXCIsXG4gICAgICAgIFwiZGV2TW9kZVwiOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gY2xvc2VXaW5kb3coKSB7XG4gICAgICAgIGNvbnN0IGFwcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid2luXCIpO1xuICAgICAgICBjb25zdCBjdXJyZW50X2NsYXNzID0gYXBwLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpO1xuICAgICAgICBhcHAuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgYCR7Y3VycmVudF9jbGFzcyB9IHVrLWFuaW1hdGlvbi1zY2FsZS11cCB1ay1hbmltYXRpb24tcmV2ZXJzZWApO1xuICAgICAgICB0eXBld3JpdGVyLnN0b3AoKTtcbiAgICB9XG5cbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRlcm1pbmFsLWNsb3NlXCIpLm9uY2xpY2sgPSBjbG9zZVdpbmRvdztcblxuICAgIHR5cGV3cml0ZXIuYXBwZW5kVGV4dChcIlB5dGhvbiAzLjYuNCAoZGVmYXVsdCwgSmFuICA1IDIwMTgsIDAyOjM1OjQwKVxcblwiKVxuICAgICAgICAuYXBwZW5kVGV4dChcIltHQ0MgNy4yLjEgMjAxNzEyMjRdIG9uIGRhcndpblxcblwiKVxuICAgICAgICAuYXBwZW5kVGV4dChcIlR5cGUgXFxcImhlbHBcXFwiLCBcXFwiY29weXJpZ2h0XFxcIiwgXFxcImNyZWRpdHNcXFwiIG9yIFxcXCJsaWNlbnNlXFxcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cXG5cIilcbiAgICAgICAgLmFwcGVuZFRleHQoXCI+Pj4gXCIpXG4gICAgICAgIC5wYXVzZUZvcigxMDAwKVxuICAgICAgICAudHlwZVN0cmluZyhcImltcG9yIHJlcXVlc3RzXCIpXG4gICAgICAgIC5kZWxldGVDaGFycyg5KVxuICAgICAgICAudHlwZVN0cmluZyhcInQgcmVxdWVzdHNcXG5cIilcbiAgICAgICAgLmFwcGVuZFRleHQoXCI+Pj4gXCIpXG4gICAgICAgIC5wYXVzZUZvcig3NTApXG4gICAgICAgIC5jaGFuZ2VTZXR0aW5ncyh7XCJ0eXBpbmdTcGVlZFwiOiBcIm5hdHVyYWxcIn0pXG4gICAgICAgIC50eXBlU3RyaW5nKGByZXNwb25zZSA9IHJlcXVlc3RzLiR7IHdpbmRvdy5fUmVxdWVzdE1ldGhvZCB9KCdodHRwczovL3B5dGhpbWApXG4gICAgICAgIC5kZWxldGVDaGFycygyKVxuICAgICAgICAudHlwZVN0cmluZyhcIm9uZGlzY29yZC5jb24vXCIpXG4gICAgICAgIC5kZWxldGVDaGFycygyKVxuICAgICAgICAudHlwZVN0cmluZyhgbSR7IHdpbmRvdy5fUGF0aCB9JylcXG5gKVxuICAgICAgICAucGF1c2VGb3IoMTAwMClcbiAgICAgICAgLmFwcGVuZFRleHQoYCZsdDtSZXNwb25zZSBbJHsgd2luZG93Ll9Db2RlIH1dJmd0O1xcbj4+PiBgKVxuICAgICAgICAudHlwZVN0cmluZyhcIiMgaG1tbW1cIilcbiAgICAgICAgLnBhdXNlRm9yKDEwMDApXG4gICAgICAgIC5kZWxldGVDaGFycyg3KVxuICAgICAgICAucGF1c2VGb3IoMTAwMClcbiAgICAgICAgLnR5cGVTdHJpbmcoXCJyZXNwb25zZS50ZXh0XFxuXCIpXG4gICAgICAgIC5hcHBlbmRUZXh0KGAkeyB3aW5kb3cuX0Vycm9yTXNnIH1cXG4+Pj4gYClcbiAgICAgICAgLnN0YXJ0KCk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuKGZ1bmN0aW9uKCl7IC8vIFVzZSBhIGNsb3N1cmUgdG8gYXZvaWQgcG9sbHV0aW5nIGdsb2JhbCBzY29wZVxuICAgIC8vIFRPRE86IFRoaXMgbmVlZHMgdG8gYmUgYnVpbHQgaW50byB0aGUgamFtcyBzeXN0ZW1cbiAgICBjb25zdCBzdGFydGphbSA9IG5ldyBEYXRlKERhdGUuVVRDKDIwMTgsIDIsIDIzKSk7XG4gICAgY29uc3QgZW5kamFtID0gbmV3IERhdGUoRGF0ZS5VVEMoMjAxOCwgMiwgMjYpKTtcblxuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgbGV0IGdvYWw7XG5cbiAgICBpZiAobm93ICsgMTAwMCA8IGVuZGphbS5nZXRUaW1lKCkpIHsgLy8gT25seSBkbyBhbnl0aGluZyBpZiB0aGUgamFtIGhhc24ndCBlbmRlZFxuICAgICAgICBVSWtpdC5ub3RpZmljYXRpb24oIC8vIFNwYXduIHRoZSBub3RpZmljYXRpb25cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBcIm1lc3NhZ2VcIjogXCJcIlxuICAgICAgICAgICAgICAgICAgKyBcIjxkaXYgY2xhc3M9J3VrLXRleHQtY2VudGVyJz5cIlxuICAgICAgICAgICAgICAgICAgKyBcIiAgICA8c3BhbiBpZD1cXFwiY291bnRkb3duLXRpdGxlXFxcIiBjbGFzcz1cXFwidWstdGV4dC1jZW50ZXJcXFwiPlwiXG4gICAgICAgICAgICAgICAgICArIFwiICAgICAgICA8YSBocmVmPVxcXCIvaW5mby9qYW1zXFxcIj5Db2RlIEphbTwvYT4gQ291bnRkb3duXCJcbiAgICAgICAgICAgICAgICAgICsgXCIgICAgPC9zcGFuPlwiXG4gICAgICAgICAgICAgICAgICArIFwiICAgIDxwIGNsYXNzPSd1ay10ZXh0LWxhcmdlJyBpZD1cXFwiY291bnRkb3duLXJlbWFpbmluZ1xcXCI+Li4uPC9wPlwiXG4gICAgICAgICAgICAgICAgICArIFwiPHNtYWxsIHN0eWxlPSdmb250LXNpemU6IDAuNmVtOyc+KFRhcC9jbGljayB0byBkaXNtaXNzKTwvc21hbGw+XCJcbiAgICAgICAgICAgICAgICAgICsgXCI8L2Rpdj5cIixcbiAgICAgICAgICAgICAgICBcInBvc1wiOiBcImJvdHRvbS1yaWdodFwiLFxuICAgICAgICAgICAgICAgIFwidGltZW91dFwiOiBlbmRqYW0gLSBub3dcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBoZWFkaW5nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb3VudGRvd24tdGl0bGVcIik7XG5cbiAgICAgICAgaWYgKG5vdyA+IHN0YXJ0amFtLmdldFRpbWUoKSkgeyAvLyBKYW0ncyBhbHJlYWR5IHN0YXJ0ZWRcbiAgICAgICAgICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gXCJDdXJyZW50IDxhIGhyZWY9XFxcIi9pbmZvL2phbXNcXFwiPmNvZGUgamFtPC9hPiBlbmRzIGluLi4uXCI7XG4gICAgICAgICAgICBnb2FsID0gZW5kamFtLmdldFRpbWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gXCJOZXh0IDxhIGhyZWY9XFxcIi9pbmZvL2phbXNcXFwiPmNvZGUgamFtPC9hPiBzdGFydHMgaW4uLi5cIjtcbiAgICAgICAgICAgIGdvYWwgPSBzdGFydGphbS5nZXRUaW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWZyZXNoQ291bnRkb3duID0gc2V0SW50ZXJ2YWwoKCkgPT4geyAvLyBDcmVhdGUgYSByZXBlYXRpbmcgdGFza1xuICAgICAgICAgICAgbGV0IGRlbHRhID0gZ29hbCAtIERhdGUubm93KCk7IC8vIFRpbWUgdW50aWwgdGhlIGdvYWwgaXMgbWV0XG5cbiAgICAgICAgICAgIGlmIChkZWx0YSA8PSAxMDAwKSB7IC8vIEdvYWwgaGFzIGJlZW4gbWV0LCBiZXN0IHJlbG9hZFxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVmcmVzaENvdW50ZG93bik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgZGF5cyA9IE1hdGguZmxvb3IoZGVsdGEgLyAoMjQgKiA2MCAqIDYwICogMTAwMCkpO1xuICAgICAgICAgICAgZGVsdGEgLT0gZGF5cyAqICgyNCAqIDYwICogNjAgKiAxMDAwKTtcblxuICAgICAgICAgICAgbGV0IGhvdXJzID0gTWF0aC5mbG9vcihkZWx0YSAvICg2MCAqIDYwICogMTAwMCkpO1xuICAgICAgICAgICAgZGVsdGEgLT0gaG91cnMgKiAoNjAgKiA2MCAqIDEwMDApO1xuXG4gICAgICAgICAgICBsZXQgbWludXRlcyA9IE1hdGguZmxvb3IoZGVsdGEgLyAoNjAgKiAxMDAwKSk7XG4gICAgICAgICAgICBkZWx0YSAtPSBtaW51dGVzICogKDYwICogMTAwMCk7XG5cbiAgICAgICAgICAgIGxldCBzZWNvbmRzID0gTWF0aC5mbG9vcihkZWx0YSAvIDEwMDApO1xuXG4gICAgICAgICAgICBpZiAoZGF5cyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgZGF5cyA9IGAwJHtkYXlzfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChob3VycyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgaG91cnMgPSBgMCR7aG91cnN9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1pbnV0ZXMgPCAxMCkge1xuICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBgMCR7bWludXRlc31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2Vjb25kcyA8IDEwKSB7XG4gICAgICAgICAgICAgICAgc2Vjb25kcyA9IGAwJHtzZWNvbmRzfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjb3VudGRvd24tcmVtYWluaW5nXCIpLmlubmVySFRNTCA9IGAke2RheXN9OiR7aG91cnN9OiR7bWludXRlc306JHtzZWNvbmRzfWA7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7IC8vIE5vdGlmaWNhdGlvbiB3YXMgcHJvYmFibHkgY2xvc2VkLCBzbyB3ZSBjYW4gc3RvcCBjb3VudGluZ1xuICAgICAgICAgICAgICAgIHJldHVybiBjbGVhckludGVydmFsKHJlZnJlc2hDb3VudGRvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCA1MDApO1xuICAgIH1cbn0pKCk7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXhwb3J0ZWQgSmFtQWN0aW9ucyAqL1xuXG5jbGFzcyBKYW1BY3Rpb25zIHtcbiAgICBjb25zdHJ1Y3Rvcih1cmwsIGNzcmZfdG9rZW4pIHtcbiAgICAgICAgdGhpcy51cmwgPSB1cmw7XG4gICAgICAgIHRoaXMuY3NyZl90b2tlbiA9IGNzcmZfdG9rZW47XG4gICAgfVxuXG4gICAgc2VuZChhY3Rpb24sIG1ldGhvZCwgZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgZGF0YVtcImFjdGlvblwiXSA9IGFjdGlvbjtcblxuICAgICAgICAkLmFqYXgodGhpcy51cmwsIHtcbiAgICAgICAgICAgIFwiZGF0YVwiOiBkYXRhLFxuICAgICAgICAgICAgXCJkYXRhVHlwZVwiOiBcImpzb25cIixcbiAgICAgICAgICAgIFwiaGVhZGVyc1wiOiB7XCJYLUNTUkZUb2tlblwiOiB0aGlzLmNzcmZfdG9rZW59LFxuICAgICAgICAgICAgXCJtZXRob2RcIjogbWV0aG9kLFxuICAgICAgICB9KS5kb25lKGRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKFwiZXJyb3JfY29kZVwiIGluIGRhdGEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZmFsc2UsIGRhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sodHJ1ZSwgZGF0YSk7XG4gICAgICAgIH0pLmZhaWwoKCkgPT4gY2FsbGJhY2soZmFsc2UpKTtcbiAgICB9XG5cbiAgICBzZW5kX2pzb24oYWN0aW9uLCBtZXRob2QsIGRhdGEsIGNhbGxiYWNrKSB7XG4gICAgICAgIGRhdGFbXCJhY3Rpb25cIl0gPSBhY3Rpb247XG5cbiAgICAgICAgJC5hamF4KHRoaXMudXJsLCB7XG4gICAgICAgICAgICBcImRhdGFcIjogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgICAgICAgICBcImRhdGFUeXBlXCI6IFwianNvblwiLFxuICAgICAgICAgICAgXCJoZWFkZXJzXCI6IHtcIlgtQ1NSRlRva2VuXCI6IHRoaXMuY3NyZl90b2tlbn0sXG4gICAgICAgICAgICBcIm1ldGhvZFwiOiBtZXRob2RcbiAgICAgICAgfSkuZG9uZShkYXRhID0+IHtcbiAgICAgICAgICAgIGlmIChcImVycm9yX2NvZGVcIiBpbiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGZhbHNlLCBkYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKHRydWUsIGRhdGEpO1xuICAgICAgICB9KS5mYWlsKCgpID0+IGNhbGxiYWNrKGZhbHNlKSk7XG4gICAgfVxuXG4gICAgc2V0X3N0YXRlKGphbSwgc3RhdGUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwic3RhdGVcIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiamFtXCI6IGphbSxcbiAgICAgICAgICAgICAgICBcInN0YXRlXCI6IHN0YXRlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRfcXVlc3Rpb25zKGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwicXVlc3Rpb25zXCIsXG4gICAgICAgICAgICBcIkdFVFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGNyZWF0ZV9xdWVzdGlvbihkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmRfanNvbihcbiAgICAgICAgICAgIFwicXVlc3Rpb25zXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGRlbGV0ZV9xdWVzdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJxdWVzdGlvblwiLFxuICAgICAgICAgICAgXCJERUxFVEVcIixcbiAgICAgICAgICAgIHtcImlkXCI6IGlkfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYXNzb2NpYXRlX3F1ZXN0aW9uKGZvcm0sIHF1ZXN0aW9uLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImFzc29jaWF0ZV9xdWVzdGlvblwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJmb3JtXCI6IGZvcm0sXG4gICAgICAgICAgICAgICAgXCJxdWVzdGlvblwiOiBxdWVzdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGRpc2Fzc29jaWF0ZV9xdWVzdGlvbihmb3JtLCBxdWVzdGlvbiwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJkaXNhc3NvY2lhdGVfcXVlc3Rpb25cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwiZm9ybVwiOiBmb3JtLFxuICAgICAgICAgICAgICAgIFwicXVlc3Rpb25cIjogcXVlc3Rpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjcmVhdGVfaW5mcmFjdGlvbihpZCwgcmVhc29uLCBudW1iZXIsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiaW5mcmFjdGlvblwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJwYXJ0aWNpcGFudFwiOiBpZCxcbiAgICAgICAgICAgICAgICBcInJlYXNvblwiOiByZWFzb24sXG4gICAgICAgICAgICAgICAgXCJudW1iZXJcIjogbnVtYmVyXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBkZWxldGVfaW5mcmFjdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJpbmZyYWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRFTEVURVwiLFxuICAgICAgICAgICAge1wiaWRcIjogaWR9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhcHByb3ZlX2FwcGxpY2F0aW9uKGlkLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImFwcHJvdmVfYXBwbGljYXRpb25cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1wiaWRcIjogaWR9LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICB1bmFwcHJvdmVfYXBwbGljYXRpb24oaWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwidW5hcHByb3ZlX2FwcGxpY2F0aW9uXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcImlkXCI6IGlkfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVfdGVhbXMoamFtLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcImdlbmVyYXRlX3RlYW1zXCIsXG4gICAgICAgICAgICBcIlBPU1RcIixcbiAgICAgICAgICAgIHtcImphbVwiOiBqYW19LFxuICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjcmVhdGVfdGVhbShqYW0sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwiY3JlYXRlX3RlYW1cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1wiamFtXCI6IGphbX0sXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlcm9sbF90ZWFtKHRlYW0sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuc2VuZChcbiAgICAgICAgICAgIFwicmVyb2xsX3RlYW1cIixcbiAgICAgICAgICAgIFwiUE9TVFwiLFxuICAgICAgICAgICAge1widGVhbVwiOiB0ZWFtfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZGVsZXRlX3RlYW0odGVhbSwgY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5zZW5kKFxuICAgICAgICAgICAgXCJ0ZWFtXCIsXG4gICAgICAgICAgICBcIkRFTEVURVwiLFxuICAgICAgICAgICAge1widGVhbVwiOiB0ZWFtfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgc2V0X3RlYW1fbWVtYmVyKGphbSwgbWVtYmVyLCB0ZWFtLCBjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNlbmQoXG4gICAgICAgICAgICBcInNldF90ZWFtX21lbWJlclwiLFxuICAgICAgICAgICAgXCJQT1NUXCIsXG4gICAgICAgICAgICB7XCJqYW1cIjogamFtLCBcIm1lbWJlclwiOiBtZW1iZXIsIFwidGVhbVwiOiB0ZWFtfSxcbiAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGV4cG9ydGVkIHJldmlzaW9uX2RpZmYgKi9cblxuZnVuY3Rpb24gcmV2aXNpb25fZGlmZihyZXZpc2lvbnMpIHtcbiAgICBjb25zdCBidXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInRkIGlucHV0XCIpOyAvLyBGZXRjaCBhbGwgcmFkaW8gYnV0dG9uc1xuICAgIGNvbnN0IGlkX3JlZyA9IC9jb21wYXJlLShiZWZvcmV8YWZ0ZXIpLShbXFx3fC1dKykvOyAvLyBNYXRjaGVzIGNvbXBhcmUtYWZ0ZXIvYmVmb3JlLUlEXG5cblxuICAgIGZ1bmN0aW9uIGdldFJldmlzaW9uSWQoZWxlbWVudCl7XG4gICAgICAgIGNvbnN0IGUgPSBlbGVtZW50LmlkLm1hdGNoKGlkX3JlZyk7IC8vIE1hdGNoIElEIHdpdGggUmVnRXhwXG4gICAgICAgIHJldHVybiBbZVsxXSwgZVsyXV07IC8vIGUgaXMgaW4gZm9ybWF0IG9mIFtmdWxsIGlkLCBhZnRlci9iZWZvcmUsIElEXSB3ZSBvbmx5IHdhbnQgSUQgJiBtb2RlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UmV2aXNpb24oaWQpIHtcbiAgICAgICAgY29uc3QgZSA9IHJldmlzaW9ucy5maWx0ZXIoKHgpID0+IHtcbiAgICAgICAgICAgIC8vIEZpbHRlciB0aHJvdWdoIGFsbCByZXZpc2lvbnMgdG8gZmluZCB0aGUgc2VsZWN0ZWQgb25lIChyZXZpc2lvbnMgaW4gZGVjbGFyZWQgaW4gdGhlIHRlbXBsYXRlKVxuICAgICAgICAgICAgcmV0dXJuIHguaWQgPT09IGlkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGVbMF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmFkaW9CdXR0b25DaGVja2VkKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWQgPSBnZXRSZXZpc2lvbklkKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCByZXYgPSBnZXRSZXZpc2lvbihpZFsxXSk7XG4gICAgICAgIGlmIChpZFswXSA9PT0gXCJhZnRlclwiKXtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgKiBEZXNlbGVjdCB0aGUgb3Bwb3NpdGUgY2hlY2tib3ggdG8gdGhlIG9uZSB3aGljaCBoYXMgYmVlbiBjaGVja2VkXG4gICAgICAgICAgICAgKiBiZWNhdXNlIHdlIGRvbid0IHdhbnQgY2hlY2tpbmcgb2YgdGhlIHNhbWUgcmV2aXNpb25cbiAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjY29tcGFyZS1iZWZvcmUtJHtpZFsxXX1gKS5jaGVja2VkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChnZXRSZXZpc2lvbklkKGUpWzBdID09PSBcImFmdGVyXCIgJiYgZS5pZCAhPT0gZWxlbWVudC5pZCkgeyAvLyBEZXNlbGVjdCBhbGwgY2hlY2tib3hlcyBpbiB0aGUgc2FtZSByb3dcbiAgICAgICAgICAgICAgICAgICAgZS5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7IC8vIFRoaXMgZWxzZSBkb2VzIHRoZSBzYW1lIGFzIGFib3ZlIGJ1dCBmb3IgdGhlIGJlZm9yZSBjb2x1bW5cbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNjb21wYXJlLWFmdGVyLSR7aWRbMV19YCkuY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICAgICAgYnV0dG9ucy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGdldFJldmlzaW9uSWQoZSlbMF0gPT09IFwiYmVmb3JlXCIgJiYgZS5pZCAhPT0gZWxlbWVudC5pZCkge1xuICAgICAgICAgICAgICAgICAgICBlLmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIG1ha2VzIHN1cmUgdGhhdCB5b3UgZG8gbm90IGNvbXBhcmUgYSBuZXcgcmV2aXNpb24gd2l0aCBhbiBvbGQgb25lXG4gICAgICAgICAgICAgICAgaWYgKGdldFJldmlzaW9uSWQoZSlbMF0gPT09IFwiYWZ0ZXJcIikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0bXByZXYgPSBnZXRSZXZpc2lvbihnZXRSZXZpc2lvbklkKGUpWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codG1wcmV2KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRtcHJldi5kYXRlIDw9IHJldi5kYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtlLmlkfWApLnNldEF0dHJpYnV0ZShcImRpc2FibGVkXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7ZS5pZH1gKS5yZW1vdmVBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGFmdCwgYmVmO1xuXG4gICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7IC8vIEZpbmQgdGhlIHNlbGVjdGVkIHBvc3RzXG4gICAgICAgICAgICBjb25zdCBpZCA9IGdldFJldmlzaW9uSWQoYnV0dG9uKTtcbiAgICAgICAgICAgIGlmIChidXR0b24uY2hlY2tlZCAmJiBpZFswXSA9PT0gXCJiZWZvcmVcIikge1xuICAgICAgICAgICAgICAgIGJlZiA9IGlkWzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYnV0dG9uLmNoZWNrZWQgJiYgaWRbMF0gPT09IFwiYWZ0ZXJcIikge1xuICAgICAgICAgICAgICAgIGFmdCA9IGlkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTd2l0Y2ggdGhlIGJ1dHRvbnMgSFJFRiB0byBwb2ludCB0byB0aGUgY29ycmVjdCBjb21wYXJlIFVSTFxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNvbXBhcmUtc3VibWl0XCIpLmhyZWYgPSBgL2hpc3RvcnkvY29tcGFyZS8ke2JlZn0vJHthZnR9YDtcblxuICAgIH1cblxuICAgIGJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uKSA9PiB7XG4gICAgICAgIGJ1dHRvbi5jaGVja2VkID0gZmFsc2U7IC8vIFNvbWUgYnJvd3NlcnMgcmVtZW1iZXIgaWYgYSBidXR0b24gaXMgY2hlY2tlZC5cbiAgICAgICAgYnV0dG9uLm9uY2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByYWRpb0J1dHRvbkNoZWNrZWQoYnV0dG9uKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBleHBvcnRlZCB3aWtpX3NpZGViYXIgKi9cblxuZnVuY3Rpb24gd2lraV9zaWRlYmFyKCl7XG4gICAgY29uc3QgdmlzaWJsZV9jbGFzcyA9IFwidWstdmlzaWJsZUBzXCI7XG4gICAgY29uc3Qgc2lkZWJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwid2lraS1zaWRlYmFyXCIpO1xuICAgIGNvbnN0IGRpc3BsYXlfYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ3aWtpLXNpZGViYXItYnV0dG9uXCIpO1xuXG4gICAgZGlzcGxheV9idXR0b24ub25jbGljayA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoc2lkZWJhci5jbGFzc0xpc3QuY29udGFpbnModmlzaWJsZV9jbGFzcykpIHtcbiAgICAgICAgICAgIHNpZGViYXIuY2xhc3NMaXN0LnJlbW92ZSh2aXNpYmxlX2NsYXNzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZGViYXIuY2xhc3NMaXN0LmFkZCh2aXNpYmxlX2NsYXNzKTtcbiAgICAgICAgfVxuICAgIH07XG59XG4iLCIvLyEgbW9tZW50LmpzXG5cbjsoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuICAgIHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpIDpcbiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICAgIGdsb2JhbC5tb21lbnQgPSBmYWN0b3J5KClcbn0odGhpcywgKGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gICAgdmFyIGhvb2tDYWxsYmFjaztcblxuICAgIGZ1bmN0aW9uIGhvb2tzICgpIHtcbiAgICAgICAgcmV0dXJuIGhvb2tDYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgZG9uZSB0byByZWdpc3RlciB0aGUgbWV0aG9kIGNhbGxlZCB3aXRoIG1vbWVudCgpXG4gICAgLy8gd2l0aG91dCBjcmVhdGluZyBjaXJjdWxhciBkZXBlbmRlbmNpZXMuXG4gICAgZnVuY3Rpb24gc2V0SG9va0NhbGxiYWNrIChjYWxsYmFjaykge1xuICAgICAgICBob29rQ2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0FycmF5KGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIEFycmF5IHx8IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpbnB1dCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IHdpbGwgdHJlYXQgdW5kZWZpbmVkIGFuZCBudWxsIGFzIG9iamVjdCBpZiBpdCB3YXNuJ3QgZm9yXG4gICAgICAgIC8vIGlucHV0ICE9IG51bGxcbiAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgT2JqZWN0XSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3RFbXB0eShvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKSB7XG4gICAgICAgICAgICByZXR1cm4gKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikubGVuZ3RoID09PSAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBrO1xuICAgICAgICAgICAgZm9yIChrIGluIG9iaikge1xuICAgICAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVbmRlZmluZWQoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09PSB2b2lkIDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOdW1iZXIoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgTnVtYmVyXSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXRlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBpbnB1dCBpbnN0YW5jZW9mIERhdGUgfHwgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGlucHV0KSA9PT0gJ1tvYmplY3QgRGF0ZV0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hcChhcnIsIGZuKSB7XG4gICAgICAgIHZhciByZXMgPSBbXSwgaTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgcmVzLnB1c2goZm4oYXJyW2ldLCBpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNPd25Qcm9wKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLCBiKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBleHRlbmQoYSwgYikge1xuICAgICAgICBmb3IgKHZhciBpIGluIGIpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGIsIGkpKSB7XG4gICAgICAgICAgICAgICAgYVtpXSA9IGJbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndG9TdHJpbmcnKSkge1xuICAgICAgICAgICAgYS50b1N0cmluZyA9IGIudG9TdHJpbmc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzT3duUHJvcChiLCAndmFsdWVPZicpKSB7XG4gICAgICAgICAgICBhLnZhbHVlT2YgPSBiLnZhbHVlT2Y7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVVEMgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCB0cnVlKS51dGMoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZhdWx0UGFyc2luZ0ZsYWdzKCkge1xuICAgICAgICAvLyBXZSBuZWVkIHRvIGRlZXAgY2xvbmUgdGhpcyBvYmplY3QuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlbXB0eSAgICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVudXNlZFRva2VucyAgICA6IFtdLFxuICAgICAgICAgICAgdW51c2VkSW5wdXQgICAgIDogW10sXG4gICAgICAgICAgICBvdmVyZmxvdyAgICAgICAgOiAtMixcbiAgICAgICAgICAgIGNoYXJzTGVmdE92ZXIgICA6IDAsXG4gICAgICAgICAgICBudWxsSW5wdXQgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIGludmFsaWRNb250aCAgICA6IG51bGwsXG4gICAgICAgICAgICBpbnZhbGlkRm9ybWF0ICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHVzZXJJbnZhbGlkYXRlZCA6IGZhbHNlLFxuICAgICAgICAgICAgaXNvICAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgICBwYXJzZWREYXRlUGFydHMgOiBbXSxcbiAgICAgICAgICAgIG1lcmlkaWVtICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICByZmMyODIyICAgICAgICAgOiBmYWxzZSxcbiAgICAgICAgICAgIHdlZWtkYXlNaXNtYXRjaCA6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2luZ0ZsYWdzKG0pIHtcbiAgICAgICAgaWYgKG0uX3BmID09IG51bGwpIHtcbiAgICAgICAgICAgIG0uX3BmID0gZGVmYXVsdFBhcnNpbmdGbGFncygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtLl9wZjtcbiAgICB9XG5cbiAgICB2YXIgc29tZTtcbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLnNvbWUpIHtcbiAgICAgICAgc29tZSA9IEFycmF5LnByb3RvdHlwZS5zb21lO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNvbWUgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgICAgICAgICB2YXIgdCA9IE9iamVjdCh0aGlzKTtcbiAgICAgICAgICAgIHZhciBsZW4gPSB0Lmxlbmd0aCA+Pj4gMDtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpIGluIHQgJiYgZnVuLmNhbGwodGhpcywgdFtpXSwgaSwgdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWYWxpZChtKSB7XG4gICAgICAgIGlmIChtLl9pc1ZhbGlkID09IG51bGwpIHtcbiAgICAgICAgICAgIHZhciBmbGFncyA9IGdldFBhcnNpbmdGbGFncyhtKTtcbiAgICAgICAgICAgIHZhciBwYXJzZWRQYXJ0cyA9IHNvbWUuY2FsbChmbGFncy5wYXJzZWREYXRlUGFydHMsIGZ1bmN0aW9uIChpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGkgIT0gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGlzTm93VmFsaWQgPSAhaXNOYU4obS5fZC5nZXRUaW1lKCkpICYmXG4gICAgICAgICAgICAgICAgZmxhZ3Mub3ZlcmZsb3cgPCAwICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmVtcHR5ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRNb250aCAmJlxuICAgICAgICAgICAgICAgICFmbGFncy5pbnZhbGlkV2Vla2RheSAmJlxuICAgICAgICAgICAgICAgICFmbGFncy53ZWVrZGF5TWlzbWF0Y2ggJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MubnVsbElucHV0ICYmXG4gICAgICAgICAgICAgICAgIWZsYWdzLmludmFsaWRGb3JtYXQgJiZcbiAgICAgICAgICAgICAgICAhZmxhZ3MudXNlckludmFsaWRhdGVkICYmXG4gICAgICAgICAgICAgICAgKCFmbGFncy5tZXJpZGllbSB8fCAoZmxhZ3MubWVyaWRpZW0gJiYgcGFyc2VkUGFydHMpKTtcblxuICAgICAgICAgICAgaWYgKG0uX3N0cmljdCkge1xuICAgICAgICAgICAgICAgIGlzTm93VmFsaWQgPSBpc05vd1ZhbGlkICYmXG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLmNoYXJzTGVmdE92ZXIgPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MudW51c2VkVG9rZW5zLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBmbGFncy5iaWdIb3VyID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChPYmplY3QuaXNGcm96ZW4gPT0gbnVsbCB8fCAhT2JqZWN0LmlzRnJvemVuKG0pKSB7XG4gICAgICAgICAgICAgICAgbS5faXNWYWxpZCA9IGlzTm93VmFsaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNOb3dWYWxpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbS5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkIChmbGFncykge1xuICAgICAgICB2YXIgbSA9IGNyZWF0ZVVUQyhOYU4pO1xuICAgICAgICBpZiAoZmxhZ3MgIT0gbnVsbCkge1xuICAgICAgICAgICAgZXh0ZW5kKGdldFBhcnNpbmdGbGFncyhtKSwgZmxhZ3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKG0pLnVzZXJJbnZhbGlkYXRlZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICAvLyBQbHVnaW5zIHRoYXQgYWRkIHByb3BlcnRpZXMgc2hvdWxkIGFsc28gYWRkIHRoZSBrZXkgaGVyZSAobnVsbCB2YWx1ZSksXG4gICAgLy8gc28gd2UgY2FuIHByb3Blcmx5IGNsb25lIG91cnNlbHZlcy5cbiAgICB2YXIgbW9tZW50UHJvcGVydGllcyA9IGhvb2tzLm1vbWVudFByb3BlcnRpZXMgPSBbXTtcblxuICAgIGZ1bmN0aW9uIGNvcHlDb25maWcodG8sIGZyb20pIHtcbiAgICAgICAgdmFyIGksIHByb3AsIHZhbDtcblxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzQU1vbWVudE9iamVjdCkpIHtcbiAgICAgICAgICAgIHRvLl9pc0FNb21lbnRPYmplY3QgPSBmcm9tLl9pc0FNb21lbnRPYmplY3Q7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9pKSkge1xuICAgICAgICAgICAgdG8uX2kgPSBmcm9tLl9pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fZikpIHtcbiAgICAgICAgICAgIHRvLl9mID0gZnJvbS5fZjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2wpKSB7XG4gICAgICAgICAgICB0by5fbCA9IGZyb20uX2w7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9zdHJpY3QpKSB7XG4gICAgICAgICAgICB0by5fc3RyaWN0ID0gZnJvbS5fc3RyaWN0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fdHptKSkge1xuICAgICAgICAgICAgdG8uX3R6bSA9IGZyb20uX3R6bTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGZyb20uX2lzVVRDKSkge1xuICAgICAgICAgICAgdG8uX2lzVVRDID0gZnJvbS5faXNVVEM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9vZmZzZXQpKSB7XG4gICAgICAgICAgICB0by5fb2Zmc2V0ID0gZnJvbS5fb2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNVbmRlZmluZWQoZnJvbS5fcGYpKSB7XG4gICAgICAgICAgICB0by5fcGYgPSBnZXRQYXJzaW5nRmxhZ3MoZnJvbSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChmcm9tLl9sb2NhbGUpKSB7XG4gICAgICAgICAgICB0by5fbG9jYWxlID0gZnJvbS5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vbWVudFByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1vbWVudFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwcm9wID0gbW9tZW50UHJvcGVydGllc1tpXTtcbiAgICAgICAgICAgICAgICB2YWwgPSBmcm9tW3Byb3BdO1xuICAgICAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQodmFsKSkge1xuICAgICAgICAgICAgICAgICAgICB0b1twcm9wXSA9IHZhbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdG87XG4gICAgfVxuXG4gICAgdmFyIHVwZGF0ZUluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgIC8vIE1vbWVudCBwcm90b3R5cGUgb2JqZWN0XG4gICAgZnVuY3Rpb24gTW9tZW50KGNvbmZpZykge1xuICAgICAgICBjb3B5Q29uZmlnKHRoaXMsIGNvbmZpZyk7XG4gICAgICAgIHRoaXMuX2QgPSBuZXcgRGF0ZShjb25maWcuX2QgIT0gbnVsbCA/IGNvbmZpZy5fZC5nZXRUaW1lKCkgOiBOYU4pO1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBQcmV2ZW50IGluZmluaXRlIGxvb3AgaW4gY2FzZSB1cGRhdGVPZmZzZXQgY3JlYXRlcyBuZXcgbW9tZW50XG4gICAgICAgIC8vIG9iamVjdHMuXG4gICAgICAgIGlmICh1cGRhdGVJblByb2dyZXNzID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdXBkYXRlSW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICBob29rcy51cGRhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB1cGRhdGVJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc01vbWVudCAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBNb21lbnQgfHwgKG9iaiAhPSBudWxsICYmIG9iai5faXNBTW9tZW50T2JqZWN0ICE9IG51bGwpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0Zsb29yIChudW1iZXIpIHtcbiAgICAgICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgICAgICAgIC8vIC0wIC0+IDBcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKSB8fCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvSW50KGFyZ3VtZW50Rm9yQ29lcmNpb24pIHtcbiAgICAgICAgdmFyIGNvZXJjZWROdW1iZXIgPSArYXJndW1lbnRGb3JDb2VyY2lvbixcbiAgICAgICAgICAgIHZhbHVlID0gMDtcblxuICAgICAgICBpZiAoY29lcmNlZE51bWJlciAhPT0gMCAmJiBpc0Zpbml0ZShjb2VyY2VkTnVtYmVyKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBhYnNGbG9vcihjb2VyY2VkTnVtYmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBjb21wYXJlIHR3byBhcnJheXMsIHJldHVybiB0aGUgbnVtYmVyIG9mIGRpZmZlcmVuY2VzXG4gICAgZnVuY3Rpb24gY29tcGFyZUFycmF5cyhhcnJheTEsIGFycmF5MiwgZG9udENvbnZlcnQpIHtcbiAgICAgICAgdmFyIGxlbiA9IE1hdGgubWluKGFycmF5MS5sZW5ndGgsIGFycmF5Mi5sZW5ndGgpLFxuICAgICAgICAgICAgbGVuZ3RoRGlmZiA9IE1hdGguYWJzKGFycmF5MS5sZW5ndGggLSBhcnJheTIubGVuZ3RoKSxcbiAgICAgICAgICAgIGRpZmZzID0gMCxcbiAgICAgICAgICAgIGk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgaWYgKChkb250Q29udmVydCAmJiBhcnJheTFbaV0gIT09IGFycmF5MltpXSkgfHxcbiAgICAgICAgICAgICAgICAoIWRvbnRDb252ZXJ0ICYmIHRvSW50KGFycmF5MVtpXSkgIT09IHRvSW50KGFycmF5MltpXSkpKSB7XG4gICAgICAgICAgICAgICAgZGlmZnMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlmZnMgKyBsZW5ndGhEaWZmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdhcm4obXNnKSB7XG4gICAgICAgIGlmIChob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEZXByZWNhdGlvbiB3YXJuaW5nOiAnICsgbXNnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlcHJlY2F0ZShtc2csIGZuKSB7XG4gICAgICAgIHZhciBmaXJzdFRpbWUgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiBleHRlbmQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKGhvb2tzLmRlcHJlY2F0aW9uSGFuZGxlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG51bGwsIG1zZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlyc3RUaW1lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgYXJnO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyZyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50c1tpXSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyArPSAnXFxuWycgKyBpICsgJ10gJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBhcmd1bWVudHNbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcgKz0ga2V5ICsgJzogJyArIGFyZ3VtZW50c1swXVtrZXldICsgJywgJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZy5zbGljZSgwLCAtMik7IC8vIFJlbW92ZSB0cmFpbGluZyBjb21tYSBhbmQgc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2Fybihtc2cgKyAnXFxuQXJndW1lbnRzOiAnICsgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncykuam9pbignJykgKyAnXFxuJyArIChuZXcgRXJyb3IoKSkuc3RhY2spO1xuICAgICAgICAgICAgICAgIGZpcnN0VGltZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sIGZuKTtcbiAgICB9XG5cbiAgICB2YXIgZGVwcmVjYXRpb25zID0ge307XG5cbiAgICBmdW5jdGlvbiBkZXByZWNhdGVTaW1wbGUobmFtZSwgbXNnKSB7XG4gICAgICAgIGlmIChob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgaG9va3MuZGVwcmVjYXRpb25IYW5kbGVyKG5hbWUsIG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkZXByZWNhdGlvbnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHdhcm4obXNnKTtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBob29rcy5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPSBmYWxzZTtcbiAgICBob29rcy5kZXByZWNhdGlvbkhhbmRsZXIgPSBudWxsO1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihpbnB1dCkge1xuICAgICAgICByZXR1cm4gaW5wdXQgaW5zdGFuY2VvZiBGdW5jdGlvbiB8fCBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaW5wdXQpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldCAoY29uZmlnKSB7XG4gICAgICAgIHZhciBwcm9wLCBpO1xuICAgICAgICBmb3IgKGkgaW4gY29uZmlnKSB7XG4gICAgICAgICAgICBwcm9wID0gY29uZmlnW2ldO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24ocHJvcCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzW2ldID0gcHJvcDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpc1snXycgKyBpXSA9IHByb3A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICAvLyBMZW5pZW50IG9yZGluYWwgcGFyc2luZyBhY2NlcHRzIGp1c3QgYSBudW1iZXIgaW4gYWRkaXRpb24gdG9cbiAgICAgICAgLy8gbnVtYmVyICsgKHBvc3NpYmx5KSBzdHVmZiBjb21pbmcgZnJvbSBfZGF5T2ZNb250aE9yZGluYWxQYXJzZS5cbiAgICAgICAgLy8gVE9ETzogUmVtb3ZlIFwib3JkaW5hbFBhcnNlXCIgZmFsbGJhY2sgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICAgICAgICB0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgICAodGhpcy5fZGF5T2ZNb250aE9yZGluYWxQYXJzZS5zb3VyY2UgfHwgdGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkgK1xuICAgICAgICAgICAgICAgICd8JyArICgvXFxkezEsMn0vKS5zb3VyY2UpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNoaWxkQ29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBleHRlbmQoe30sIHBhcmVudENvbmZpZyksIHByb3A7XG4gICAgICAgIGZvciAocHJvcCBpbiBjaGlsZENvbmZpZykge1xuICAgICAgICAgICAgaWYgKGhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkgJiYgaXNPYmplY3QoY2hpbGRDb25maWdbcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBwYXJlbnRDb25maWdbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICBleHRlbmQocmVzW3Byb3BdLCBjaGlsZENvbmZpZ1twcm9wXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZENvbmZpZ1twcm9wXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1twcm9wXSA9IGNoaWxkQ29uZmlnW3Byb3BdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZXNbcHJvcF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAocHJvcCBpbiBwYXJlbnRDb25maWcpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKHBhcmVudENvbmZpZywgcHJvcCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWhhc093blByb3AoY2hpbGRDb25maWcsIHByb3ApICYmXG4gICAgICAgICAgICAgICAgICAgIGlzT2JqZWN0KHBhcmVudENvbmZpZ1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2hhbmdlcyB0byBwcm9wZXJ0aWVzIGRvbid0IG1vZGlmeSBwYXJlbnQgY29uZmlnXG4gICAgICAgICAgICAgICAgcmVzW3Byb3BdID0gZXh0ZW5kKHt9LCByZXNbcHJvcF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gTG9jYWxlKGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0KGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cztcblxuICAgIGlmIChPYmplY3Qua2V5cykge1xuICAgICAgICBrZXlzID0gT2JqZWN0LmtleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAga2V5cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgIHZhciBpLCByZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSBpbiBvYmopIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcChvYmosIGkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKGkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRDYWxlbmRhciA9IHtcbiAgICAgICAgc2FtZURheSA6ICdbVG9kYXkgYXRdIExUJyxcbiAgICAgICAgbmV4dERheSA6ICdbVG9tb3Jyb3cgYXRdIExUJyxcbiAgICAgICAgbmV4dFdlZWsgOiAnZGRkZCBbYXRdIExUJyxcbiAgICAgICAgbGFzdERheSA6ICdbWWVzdGVyZGF5IGF0XSBMVCcsXG4gICAgICAgIGxhc3RXZWVrIDogJ1tMYXN0XSBkZGRkIFthdF0gTFQnLFxuICAgICAgICBzYW1lRWxzZSA6ICdMJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxlbmRhciAoa2V5LCBtb20sIG5vdykge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fY2FsZW5kYXJba2V5XSB8fCB0aGlzLl9jYWxlbmRhclsnc2FtZUVsc2UnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24ob3V0cHV0KSA/IG91dHB1dC5jYWxsKG1vbSwgbm93KSA6IG91dHB1dDtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvbmdEYXRlRm9ybWF0ID0ge1xuICAgICAgICBMVFMgIDogJ2g6bW06c3MgQScsXG4gICAgICAgIExUICAgOiAnaDptbSBBJyxcbiAgICAgICAgTCAgICA6ICdNTS9ERC9ZWVlZJyxcbiAgICAgICAgTEwgICA6ICdNTU1NIEQsIFlZWVknLFxuICAgICAgICBMTEwgIDogJ01NTU0gRCwgWVlZWSBoOm1tIEEnLFxuICAgICAgICBMTExMIDogJ2RkZGQsIE1NTU0gRCwgWVlZWSBoOm1tIEEnXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGxvbmdEYXRlRm9ybWF0IChrZXkpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0sXG4gICAgICAgICAgICBmb3JtYXRVcHBlciA9IHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleS50b1VwcGVyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoZm9ybWF0IHx8ICFmb3JtYXRVcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV0gPSBmb3JtYXRVcHBlci5yZXBsYWNlKC9NTU1NfE1NfEREfGRkZGQvZywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbC5zbGljZSgxKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvbmdEYXRlRm9ybWF0W2tleV07XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRJbnZhbGlkRGF0ZSA9ICdJbnZhbGlkIGRhdGUnO1xuXG4gICAgZnVuY3Rpb24gaW52YWxpZERhdGUgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52YWxpZERhdGU7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRPcmRpbmFsID0gJyVkJztcbiAgICB2YXIgZGVmYXVsdERheU9mTW9udGhPcmRpbmFsUGFyc2UgPSAvXFxkezEsMn0vO1xuXG4gICAgZnVuY3Rpb24gb3JkaW5hbCAobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vcmRpbmFsLnJlcGxhY2UoJyVkJywgbnVtYmVyKTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFJlbGF0aXZlVGltZSA9IHtcbiAgICAgICAgZnV0dXJlIDogJ2luICVzJyxcbiAgICAgICAgcGFzdCAgIDogJyVzIGFnbycsXG4gICAgICAgIHMgIDogJ2EgZmV3IHNlY29uZHMnLFxuICAgICAgICBzcyA6ICclZCBzZWNvbmRzJyxcbiAgICAgICAgbSAgOiAnYSBtaW51dGUnLFxuICAgICAgICBtbSA6ICclZCBtaW51dGVzJyxcbiAgICAgICAgaCAgOiAnYW4gaG91cicsXG4gICAgICAgIGhoIDogJyVkIGhvdXJzJyxcbiAgICAgICAgZCAgOiAnYSBkYXknLFxuICAgICAgICBkZCA6ICclZCBkYXlzJyxcbiAgICAgICAgTSAgOiAnYSBtb250aCcsXG4gICAgICAgIE1NIDogJyVkIG1vbnRocycsXG4gICAgICAgIHkgIDogJ2EgeWVhcicsXG4gICAgICAgIHl5IDogJyVkIHllYXJzJ1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUgKG51bWJlciwgd2l0aG91dFN1ZmZpeCwgc3RyaW5nLCBpc0Z1dHVyZSkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gdGhpcy5fcmVsYXRpdmVUaW1lW3N0cmluZ107XG4gICAgICAgIHJldHVybiAoaXNGdW5jdGlvbihvdXRwdXQpKSA/XG4gICAgICAgICAgICBvdXRwdXQobnVtYmVyLCB3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKSA6XG4gICAgICAgICAgICBvdXRwdXQucmVwbGFjZSgvJWQvaSwgbnVtYmVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXN0RnV0dXJlIChkaWZmLCBvdXRwdXQpIHtcbiAgICAgICAgdmFyIGZvcm1hdCA9IHRoaXMuX3JlbGF0aXZlVGltZVtkaWZmID4gMCA/ICdmdXR1cmUnIDogJ3Bhc3QnXTtcbiAgICAgICAgcmV0dXJuIGlzRnVuY3Rpb24oZm9ybWF0KSA/IGZvcm1hdChvdXRwdXQpIDogZm9ybWF0LnJlcGxhY2UoLyVzL2ksIG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFsaWFzZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFVuaXRBbGlhcyAodW5pdCwgc2hvcnRoYW5kKSB7XG4gICAgICAgIHZhciBsb3dlckNhc2UgPSB1bml0LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGFsaWFzZXNbbG93ZXJDYXNlXSA9IGFsaWFzZXNbbG93ZXJDYXNlICsgJ3MnXSA9IGFsaWFzZXNbc2hvcnRoYW5kXSA9IHVuaXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplVW5pdHModW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB1bml0cyA9PT0gJ3N0cmluZycgPyBhbGlhc2VzW3VuaXRzXSB8fCBhbGlhc2VzW3VuaXRzLnRvTG93ZXJDYXNlKCldIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU9iamVjdFVuaXRzKGlucHV0T2JqZWN0KSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSB7fSxcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wLFxuICAgICAgICAgICAgcHJvcDtcblxuICAgICAgICBmb3IgKHByb3AgaW4gaW5wdXRPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wKGlucHV0T2JqZWN0LCBwcm9wKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRQcm9wID0gbm9ybWFsaXplVW5pdHMocHJvcCk7XG4gICAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRJbnB1dFtub3JtYWxpemVkUHJvcF0gPSBpbnB1dE9iamVjdFtwcm9wXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZElucHV0O1xuICAgIH1cblxuICAgIHZhciBwcmlvcml0aWVzID0ge307XG5cbiAgICBmdW5jdGlvbiBhZGRVbml0UHJpb3JpdHkodW5pdCwgcHJpb3JpdHkpIHtcbiAgICAgICAgcHJpb3JpdGllc1t1bml0XSA9IHByaW9yaXR5O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFByaW9yaXRpemVkVW5pdHModW5pdHNPYmopIHtcbiAgICAgICAgdmFyIHVuaXRzID0gW107XG4gICAgICAgIGZvciAodmFyIHUgaW4gdW5pdHNPYmopIHtcbiAgICAgICAgICAgIHVuaXRzLnB1c2goe3VuaXQ6IHUsIHByaW9yaXR5OiBwcmlvcml0aWVzW3VdfSk7XG4gICAgICAgIH1cbiAgICAgICAgdW5pdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGEucHJpb3JpdHkgLSBiLnByaW9yaXR5O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHVuaXRzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHplcm9GaWxsKG51bWJlciwgdGFyZ2V0TGVuZ3RoLCBmb3JjZVNpZ24pIHtcbiAgICAgICAgdmFyIGFic051bWJlciA9ICcnICsgTWF0aC5hYnMobnVtYmVyKSxcbiAgICAgICAgICAgIHplcm9zVG9GaWxsID0gdGFyZ2V0TGVuZ3RoIC0gYWJzTnVtYmVyLmxlbmd0aCxcbiAgICAgICAgICAgIHNpZ24gPSBudW1iZXIgPj0gMDtcbiAgICAgICAgcmV0dXJuIChzaWduID8gKGZvcmNlU2lnbiA/ICcrJyA6ICcnKSA6ICctJykgK1xuICAgICAgICAgICAgTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsIHplcm9zVG9GaWxsKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkgKyBhYnNOdW1iZXI7XG4gICAgfVxuXG4gICAgdmFyIGZvcm1hdHRpbmdUb2tlbnMgPSAvKFxcW1teXFxbXSpcXF0pfChcXFxcKT8oW0hoXW1tKHNzKT98TW98TU0/TT9NP3xEb3xERERvfEREP0Q/RD98ZGRkP2Q/fGRvP3x3W298d10/fFdbb3xXXT98UW8/fFlZWVlZWXxZWVlZWXxZWVlZfFlZfGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fGtrP3xtbT98c3M/fFN7MSw5fXx4fFh8eno/fFpaP3wuKS9nO1xuXG4gICAgdmFyIGxvY2FsRm9ybWF0dGluZ1Rva2VucyA9IC8oXFxbW15cXFtdKlxcXSl8KFxcXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2c7XG5cbiAgICB2YXIgZm9ybWF0RnVuY3Rpb25zID0ge307XG5cbiAgICB2YXIgZm9ybWF0VG9rZW5GdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIHRva2VuOiAgICAnTSdcbiAgICAvLyBwYWRkZWQ6ICAgWydNTScsIDJdXG4gICAgLy8gb3JkaW5hbDogICdNbydcbiAgICAvLyBjYWxsYmFjazogZnVuY3Rpb24gKCkgeyB0aGlzLm1vbnRoKCkgKyAxIH1cbiAgICBmdW5jdGlvbiBhZGRGb3JtYXRUb2tlbiAodG9rZW4sIHBhZGRlZCwgb3JkaW5hbCwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGZ1bmMgPSBjYWxsYmFjaztcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbY2FsbGJhY2tdKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgZm9ybWF0VG9rZW5GdW5jdGlvbnNbdG9rZW5dID0gZnVuYztcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFkZGVkKSB7XG4gICAgICAgICAgICBmb3JtYXRUb2tlbkZ1bmN0aW9uc1twYWRkZWRbMF1dID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB6ZXJvRmlsbChmdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHBhZGRlZFsxXSwgcGFkZGVkWzJdKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9yZGluYWwpIHtcbiAgICAgICAgICAgIGZvcm1hdFRva2VuRnVuY3Rpb25zW29yZGluYWxdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKSwgdG9rZW4pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC9cXFtbXFxzXFxTXS8pKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXlxcW3xcXF0kL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCkge1xuICAgICAgICB2YXIgYXJyYXkgPSBmb3JtYXQubWF0Y2goZm9ybWF0dGluZ1Rva2VucyksIGksIGxlbmd0aDtcblxuICAgICAgICBmb3IgKGkgPSAwLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW2FycmF5W2ldXSkge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gZm9ybWF0VG9rZW5GdW5jdGlvbnNbYXJyYXlbaV1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHJlbW92ZUZvcm1hdHRpbmdUb2tlbnMoYXJyYXlbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChtb20pIHtcbiAgICAgICAgICAgIHZhciBvdXRwdXQgPSAnJywgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIG91dHB1dCArPSBpc0Z1bmN0aW9uKGFycmF5W2ldKSA/IGFycmF5W2ldLmNhbGwobW9tLCBmb3JtYXQpIDogYXJyYXlbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIGZvcm1hdCBkYXRlIHVzaW5nIG5hdGl2ZSBkYXRlIG9iamVjdFxuICAgIGZ1bmN0aW9uIGZvcm1hdE1vbWVudChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG0ubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3JtYXQgPSBleHBhbmRGb3JtYXQoZm9ybWF0LCBtLmxvY2FsZURhdGEoKSk7XG4gICAgICAgIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdID0gZm9ybWF0RnVuY3Rpb25zW2Zvcm1hdF0gfHwgbWFrZUZvcm1hdEZ1bmN0aW9uKGZvcm1hdCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdEZ1bmN0aW9uc1tmb3JtYXRdKG0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4cGFuZEZvcm1hdChmb3JtYXQsIGxvY2FsZSkge1xuICAgICAgICB2YXIgaSA9IDU7XG5cbiAgICAgICAgZnVuY3Rpb24gcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLmxvbmdEYXRlRm9ybWF0KGlucHV0KSB8fCBpbnB1dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICB3aGlsZSAoaSA+PSAwICYmIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy50ZXN0KGZvcm1hdCkpIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKGxvY2FsRm9ybWF0dGluZ1Rva2VucywgcmVwbGFjZUxvbmdEYXRlRm9ybWF0VG9rZW5zKTtcbiAgICAgICAgICAgIGxvY2FsRm9ybWF0dGluZ1Rva2Vucy5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgaSAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdDtcbiAgICB9XG5cbiAgICB2YXIgbWF0Y2gxICAgICAgICAgPSAvXFxkLzsgICAgICAgICAgICAvLyAgICAgICAwIC0gOVxuICAgIHZhciBtYXRjaDIgICAgICAgICA9IC9cXGRcXGQvOyAgICAgICAgICAvLyAgICAgIDAwIC0gOTlcbiAgICB2YXIgbWF0Y2gzICAgICAgICAgPSAvXFxkezN9LzsgICAgICAgICAvLyAgICAgMDAwIC0gOTk5XG4gICAgdmFyIG1hdGNoNCAgICAgICAgID0gL1xcZHs0fS87ICAgICAgICAgLy8gICAgMDAwMCAtIDk5OTlcbiAgICB2YXIgbWF0Y2g2ICAgICAgICAgPSAvWystXT9cXGR7Nn0vOyAgICAvLyAtOTk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMiAgICAgID0gL1xcZFxcZD8vOyAgICAgICAgIC8vICAgICAgIDAgLSA5OVxuICAgIHZhciBtYXRjaDN0bzQgICAgICA9IC9cXGRcXGRcXGRcXGQ/LzsgICAgIC8vICAgICA5OTkgLSA5OTk5XG4gICAgdmFyIG1hdGNoNXRvNiAgICAgID0gL1xcZFxcZFxcZFxcZFxcZFxcZD8vOyAvLyAgIDk5OTk5IC0gOTk5OTk5XG4gICAgdmFyIG1hdGNoMXRvMyAgICAgID0gL1xcZHsxLDN9LzsgICAgICAgLy8gICAgICAgMCAtIDk5OVxuICAgIHZhciBtYXRjaDF0bzQgICAgICA9IC9cXGR7MSw0fS87ICAgICAgIC8vICAgICAgIDAgLSA5OTk5XG4gICAgdmFyIG1hdGNoMXRvNiAgICAgID0gL1srLV0/XFxkezEsNn0vOyAgLy8gLTk5OTk5OSAtIDk5OTk5OVxuXG4gICAgdmFyIG1hdGNoVW5zaWduZWQgID0gL1xcZCsvOyAgICAgICAgICAgLy8gICAgICAgMCAtIGluZlxuICAgIHZhciBtYXRjaFNpZ25lZCAgICA9IC9bKy1dP1xcZCsvOyAgICAgIC8vICAgIC1pbmYgLSBpbmZcblxuICAgIHZhciBtYXRjaE9mZnNldCAgICA9IC9afFsrLV1cXGRcXGQ6P1xcZFxcZC9naTsgLy8gKzAwOjAwIC0wMDowMCArMDAwMCAtMDAwMCBvciBaXG4gICAgdmFyIG1hdGNoU2hvcnRPZmZzZXQgPSAvWnxbKy1dXFxkXFxkKD86Oj9cXGRcXGQpPy9naTsgLy8gKzAwIC0wMCArMDA6MDAgLTAwOjAwICswMDAwIC0wMDAwIG9yIFpcblxuICAgIHZhciBtYXRjaFRpbWVzdGFtcCA9IC9bKy1dP1xcZCsoXFwuXFxkezEsM30pPy87IC8vIDEyMzQ1Njc4OSAxMjM0NTY3ODkuMTIzXG5cbiAgICAvLyBhbnkgd29yZCAob3IgdHdvKSBjaGFyYWN0ZXJzIG9yIG51bWJlcnMgaW5jbHVkaW5nIHR3by90aHJlZSB3b3JkIG1vbnRoIGluIGFyYWJpYy5cbiAgICAvLyBpbmNsdWRlcyBzY290dGlzaCBnYWVsaWMgdHdvIHdvcmQgYW5kIGh5cGhlbmF0ZWQgbW9udGhzXG4gICAgdmFyIG1hdGNoV29yZCA9IC9bMC05XXswLDI1Nn1bJ2EtelxcdTAwQTAtXFx1MDVGRlxcdTA3MDAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkYwN1xcdUZGMTAtXFx1RkZFRl17MSwyNTZ9fFtcXHUwNjAwLVxcdTA2RkZcXC9dezEsMjU2fShcXHMqP1tcXHUwNjAwLVxcdTA2RkZdezEsMjU2fSl7MSwyfS9pO1xuXG4gICAgdmFyIHJlZ2V4ZXMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFJlZ2V4VG9rZW4gKHRva2VuLCByZWdleCwgc3RyaWN0UmVnZXgpIHtcbiAgICAgICAgcmVnZXhlc1t0b2tlbl0gPSBpc0Z1bmN0aW9uKHJlZ2V4KSA/IHJlZ2V4IDogZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGVEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gKGlzU3RyaWN0ICYmIHN0cmljdFJlZ2V4KSA/IHN0cmljdFJlZ2V4IDogcmVnZXg7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyc2VSZWdleEZvclRva2VuICh0b2tlbiwgY29uZmlnKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcChyZWdleGVzLCB0b2tlbikpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHVuZXNjYXBlRm9ybWF0KHRva2VuKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVnZXhlc1t0b2tlbl0oY29uZmlnLl9zdHJpY3QsIGNvbmZpZy5fbG9jYWxlKTtcbiAgICB9XG5cbiAgICAvLyBDb2RlIGZyb20gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNTYxNDkzL2lzLXRoZXJlLWEtcmVnZXhwLWVzY2FwZS1mdW5jdGlvbi1pbi1qYXZhc2NyaXB0XG4gICAgZnVuY3Rpb24gdW5lc2NhcGVGb3JtYXQocykge1xuICAgICAgICByZXR1cm4gcmVnZXhFc2NhcGUocy5yZXBsYWNlKCdcXFxcJywgJycpLnJlcGxhY2UoL1xcXFwoXFxbKXxcXFxcKFxcXSl8XFxbKFteXFxdXFxbXSopXFxdfFxcXFwoLikvZywgZnVuY3Rpb24gKG1hdGNoZWQsIHAxLCBwMiwgcDMsIHA0KSB7XG4gICAgICAgICAgICByZXR1cm4gcDEgfHwgcDIgfHwgcDMgfHwgcDQ7XG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWdleEVzY2FwZShzKSB7XG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1stXFwvXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuICAgIH1cblxuICAgIHZhciB0b2tlbnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGFkZFBhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgaSwgZnVuYyA9IGNhbGxiYWNrO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdG9rZW4gPSBbdG9rZW5dO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc051bWJlcihjYWxsYmFjaykpIHtcbiAgICAgICAgICAgIGZ1bmMgPSBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbY2FsbGJhY2tdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdG9rZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbltpXV0gPSBmdW5jO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1BhcnNlVG9rZW4gKHRva2VuLCBjYWxsYmFjaykge1xuICAgICAgICBhZGRQYXJzZVRva2VuKHRva2VuLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcsIHRva2VuKSB7XG4gICAgICAgICAgICBjb25maWcuX3cgPSBjb25maWcuX3cgfHwge307XG4gICAgICAgICAgICBjYWxsYmFjayhpbnB1dCwgY29uZmlnLl93LCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkVGltZVRvQXJyYXlGcm9tVG9rZW4odG9rZW4sIGlucHV0LCBjb25maWcpIHtcbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwgJiYgaGFzT3duUHJvcCh0b2tlbnMsIHRva2VuKSkge1xuICAgICAgICAgICAgdG9rZW5zW3Rva2VuXShpbnB1dCwgY29uZmlnLl9hLCBjb25maWcsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBZRUFSID0gMDtcbiAgICB2YXIgTU9OVEggPSAxO1xuICAgIHZhciBEQVRFID0gMjtcbiAgICB2YXIgSE9VUiA9IDM7XG4gICAgdmFyIE1JTlVURSA9IDQ7XG4gICAgdmFyIFNFQ09ORCA9IDU7XG4gICAgdmFyIE1JTExJU0VDT05EID0gNjtcbiAgICB2YXIgV0VFSyA9IDc7XG4gICAgdmFyIFdFRUtEQVkgPSA4O1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ1knLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB5ID0gdGhpcy55ZWFyKCk7XG4gICAgICAgIHJldHVybiB5IDw9IDk5OTkgPyAnJyArIHkgOiAnKycgKyB5O1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWScsIDJdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnllYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnWVlZWScsICAgNF0sICAgICAgIDAsICd5ZWFyJyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oMCwgWydZWVlZWScsICA1XSwgICAgICAgMCwgJ3llYXInKTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1lZWVlZWScsIDYsIHRydWVdLCAwLCAneWVhcicpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCd5ZWFyJywgJ3knKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgneWVhcicsIDEpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignWScsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZJywgICAgIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdZWVlZJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignWVlZWVknLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1lZWVlZWScsIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydZWVlZWScsICdZWVlZWVknXSwgWUVBUik7XG4gICAgYWRkUGFyc2VUb2tlbignWVlZWScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbWUVBUl0gPSBpbnB1dC5sZW5ndGggPT09IDIgPyBob29rcy5wYXJzZVR3b0RpZ2l0WWVhcihpbnB1dCkgOiB0b0ludChpbnB1dCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignWVknLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gaG9va3MucGFyc2VUd29EaWdpdFllYXIoaW5wdXQpO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1knLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5KSB7XG4gICAgICAgIGFycmF5W1lFQVJdID0gcGFyc2VJbnQoaW5wdXQsIDEwKTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIGZ1bmN0aW9uIGRheXNJblllYXIoeWVhcikge1xuICAgICAgICByZXR1cm4gaXNMZWFwWWVhcih5ZWFyKSA/IDM2NiA6IDM2NTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xlYXBZZWFyKHllYXIpIHtcbiAgICAgICAgcmV0dXJuICh5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwKSB8fCB5ZWFyICUgNDAwID09PSAwO1xuICAgIH1cblxuICAgIC8vIEhPT0tTXG5cbiAgICBob29rcy5wYXJzZVR3b0RpZ2l0WWVhciA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gdG9JbnQoaW5wdXQpICsgKHRvSW50KGlucHV0KSA+IDY4ID8gMTkwMCA6IDIwMDApO1xuICAgIH07XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0WWVhciA9IG1ha2VHZXRTZXQoJ0Z1bGxZZWFyJywgdHJ1ZSk7XG5cbiAgICBmdW5jdGlvbiBnZXRJc0xlYXBZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIodGhpcy55ZWFyKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1ha2VHZXRTZXQgKHVuaXQsIGtlZXBUaW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc2V0JDEodGhpcywgdW5pdCwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCBrZWVwVGltZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXQodGhpcywgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0IChtb20sIHVuaXQpIHtcbiAgICAgICAgcmV0dXJuIG1vbS5pc1ZhbGlkKCkgP1xuICAgICAgICAgICAgbW9tLl9kWydnZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0JDEgKG1vbSwgdW5pdCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKG1vbS5pc1ZhbGlkKCkgJiYgIWlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgaWYgKHVuaXQgPT09ICdGdWxsWWVhcicgJiYgaXNMZWFwWWVhcihtb20ueWVhcigpKSAmJiBtb20ubW9udGgoKSA9PT0gMSAmJiBtb20uZGF0ZSgpID09PSAyOSkge1xuICAgICAgICAgICAgICAgIG1vbS5fZFsnc2V0JyArIChtb20uX2lzVVRDID8gJ1VUQycgOiAnJykgKyB1bml0XSh2YWx1ZSwgbW9tLm1vbnRoKCksIGRheXNJbk1vbnRoKHZhbHVlLCBtb20ubW9udGgoKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArIHVuaXRdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIHN0cmluZ0dldCAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXNbdW5pdHNdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBzdHJpbmdTZXQgKHVuaXRzLCB2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHVuaXRzID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdW5pdHMgPSBub3JtYWxpemVPYmplY3RVbml0cyh1bml0cyk7XG4gICAgICAgICAgICB2YXIgcHJpb3JpdGl6ZWQgPSBnZXRQcmlvcml0aXplZFVuaXRzKHVuaXRzKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJpb3JpdGl6ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzW3ByaW9yaXRpemVkW2ldLnVuaXRdKHVuaXRzW3ByaW9yaXRpemVkW2ldLnVuaXRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHModW5pdHMpO1xuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odGhpc1t1bml0c10pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbdW5pdHNdKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb2QobiwgeCkge1xuICAgICAgICByZXR1cm4gKChuICUgeCkgKyB4KSAlIHg7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4T2Y7XG5cbiAgICBpZiAoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpIHtcbiAgICAgICAgaW5kZXhPZiA9IEFycmF5LnByb3RvdHlwZS5pbmRleE9mO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4T2YgPSBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgLy8gSSBrbm93XG4gICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXNbaV0gPT09IG8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSB7XG4gICAgICAgIGlmIChpc05hTih5ZWFyKSB8fCBpc05hTihtb250aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1vZE1vbnRoID0gbW9kKG1vbnRoLCAxMik7XG4gICAgICAgIHllYXIgKz0gKG1vbnRoIC0gbW9kTW9udGgpIC8gMTI7XG4gICAgICAgIHJldHVybiBtb2RNb250aCA9PT0gMSA/IChpc0xlYXBZZWFyKHllYXIpID8gMjkgOiAyOCkgOiAoMzEgLSBtb2RNb250aCAlIDcgJSAyKTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignTScsIFsnTU0nLCAyXSwgJ01vJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tb250aCgpICsgMTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdNTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHNTaG9ydCh0aGlzLCBmb3JtYXQpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ01NTU0nLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tb250aHModGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnbW9udGgnLCAnTScpO1xuXG4gICAgLy8gUFJJT1JJVFlcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnbW9udGgnLCA4KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ00nLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ01NJywgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NJywgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzU2hvcnRSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG4gICAgYWRkUmVnZXhUb2tlbignTU1NTScsIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUubW9udGhzUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ00nLCAnTU0nXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSB0b0ludChpbnB1dCkgLSAxO1xuICAgIH0pO1xuXG4gICAgYWRkUGFyc2VUb2tlbihbJ01NTScsICdNTU1NJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgdmFyIG1vbnRoID0gY29uZmlnLl9sb2NhbGUubW9udGhzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBmaW5kIGEgbW9udGggbmFtZSwgbWFyayB0aGUgZGF0ZSBhcyBpbnZhbGlkLlxuICAgICAgICBpZiAobW9udGggIT0gbnVsbCkge1xuICAgICAgICAgICAgYXJyYXlbTU9OVEhdID0gbW9udGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5pbnZhbGlkTW9udGggPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgdmFyIE1PTlRIU19JTl9GT1JNQVQgPSAvRFtvRF0/KFxcW1teXFxbXFxdXSpcXF18XFxzKStNTU1NPy87XG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNb250aHMgPSAnSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlcicuc3BsaXQoJ18nKTtcbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHMgKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHMgOlxuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1snc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX21vbnRocykgPyB0aGlzLl9tb250aHNbbS5tb250aCgpXSA6XG4gICAgICAgICAgICB0aGlzLl9tb250aHNbKHRoaXMuX21vbnRocy5pc0Zvcm1hdCB8fCBNT05USFNfSU5fRk9STUFUKS50ZXN0KGZvcm1hdCkgPyAnZm9ybWF0JyA6ICdzdGFuZGFsb25lJ11bbS5tb250aCgpXTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0ID0gJ0phbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjJy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZU1vbnRoc1Nob3J0IChtLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydCA6XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRbJ3N0YW5kYWxvbmUnXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNBcnJheSh0aGlzLl9tb250aHNTaG9ydCkgPyB0aGlzLl9tb250aHNTaG9ydFttLm1vbnRoKCldIDpcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0W01PTlRIU19JTl9GT1JNQVQudGVzdChmb3JtYXQpID8gJ2Zvcm1hdCcgOiAnc3RhbmRhbG9uZSddW20ubW9udGgoKV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgaWksIG1vbSwgbGxjID0gbW9udGhOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fbW9udGhzUGFyc2UpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHVzZWRcbiAgICAgICAgICAgIHRoaXMuX21vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3Nob3J0TW9udGhzUGFyc2UgPSBbXTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgKytpKSB7XG4gICAgICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvcnRNb250aHNQYXJzZVtpXSA9IHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0gPSB0aGlzLm1vbnRocyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ01NTScpIHtcbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVNb250aHNQYXJzZSAobW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCkge1xuICAgICAgICB2YXIgaSwgbW9tLCByZWdleDtcblxuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVN0cmljdFBhcnNlLmNhbGwodGhpcywgbW9udGhOYW1lLCBmb3JtYXQsIHN0cmljdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX21vbnRoc1BhcnNlKSB7XG4gICAgICAgICAgICB0aGlzLl9tb250aHNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbG9uZ01vbnRoc1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUT0RPOiBhZGQgc29ydGluZ1xuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyXG4gICAgICAgIC8vIHNlZSBzb3J0aW5nIGluIGNvbXB1dGVNb250aHNQYXJzZVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG4gICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIGldKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xvbmdNb250aHNQYXJzZVtpXSA9IG5ldyBSZWdFeHAoJ14nICsgdGhpcy5tb250aHMobW9tLCAnJykucmVwbGFjZSgnLicsICcnKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydE1vbnRoc1BhcnNlW2ldID0gbmV3IFJlZ0V4cCgnXicgKyB0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpLnJlcGxhY2UoJy4nLCAnJykgKyAnJCcsICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXN0cmljdCAmJiAhdGhpcy5fbW9udGhzUGFyc2VbaV0pIHtcbiAgICAgICAgICAgICAgICByZWdleCA9ICdeJyArIHRoaXMubW9udGhzKG1vbSwgJycpICsgJ3xeJyArIHRoaXMubW9udGhzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKHJlZ2V4LnJlcGxhY2UoJy4nLCAnJyksICdpJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyB0ZXN0IHRoZSByZWdleFxuICAgICAgICAgICAgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU1NJyAmJiB0aGlzLl9sb25nTW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdNTU0nICYmIHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgdGhpcy5fbW9udGhzUGFyc2VbaV0udGVzdChtb250aE5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBzZXRNb250aCAobW9tLCB2YWx1ZSkge1xuICAgICAgICB2YXIgZGF5T2ZNb250aDtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm4gbW9tO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICgvXlxcZCskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdG9JbnQodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IG1vbS5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIFRPRE86IEFub3RoZXIgc2lsZW50IGZhaWx1cmU/XG4gICAgICAgICAgICAgICAgaWYgKCFpc051bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkYXlPZk1vbnRoID0gTWF0aC5taW4obW9tLmRhdGUoKSwgZGF5c0luTW9udGgobW9tLnllYXIoKSwgdmFsdWUpKTtcbiAgICAgICAgbW9tLl9kWydzZXQnICsgKG1vbS5faXNVVEMgPyAnVVRDJyA6ICcnKSArICdNb250aCddKHZhbHVlLCBkYXlPZk1vbnRoKTtcbiAgICAgICAgcmV0dXJuIG1vbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRNb250aCAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNldE1vbnRoKHRoaXMsIHZhbHVlKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldCh0aGlzLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdldCh0aGlzLCAnTW9udGgnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldERheXNJbk1vbnRoICgpIHtcbiAgICAgICAgcmV0dXJuIGRheXNJbk1vbnRoKHRoaXMueWVhcigpLCB0aGlzLm1vbnRoKCkpO1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TW9udGhzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNTaG9ydFJlZ2V4IChpc1N0cmljdCkge1xuICAgICAgICBpZiAodGhpcy5fbW9udGhzUGFyc2VFeGFjdCkge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVNb250aHNQYXJzZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzU3RyaWN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzU2hvcnRSZWdleCcpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRSZWdleCA9IGRlZmF1bHRNb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggJiYgaXNTdHJpY3QgP1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXggOiB0aGlzLl9tb250aHNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRNb250aHNSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiBtb250aHNSZWdleCAoaXNTdHJpY3QpIHtcbiAgICAgICAgaWYgKHRoaXMuX21vbnRoc1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX21vbnRoc1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICBjb21wdXRlTW9udGhzUGFyc2UuY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc1N0cmljdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb250aHNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfbW9udGhzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX21vbnRoc1JlZ2V4ID0gZGVmYXVsdE1vbnRoc1JlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21vbnRoc1N0cmljdFJlZ2V4ICYmIGlzU3RyaWN0ID9cbiAgICAgICAgICAgICAgICB0aGlzLl9tb250aHNTdHJpY3RSZWdleCA6IHRoaXMuX21vbnRoc1JlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZU1vbnRoc1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNob3J0UGllY2VzID0gW10sIGxvbmdQaWVjZXMgPSBbXSwgbWl4ZWRQaWVjZXMgPSBbXSxcbiAgICAgICAgICAgIGksIG1vbTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCBpXSk7XG4gICAgICAgICAgICBzaG9ydFBpZWNlcy5wdXNoKHRoaXMubW9udGhzU2hvcnQobW9tLCAnJykpO1xuICAgICAgICAgICAgbG9uZ1BpZWNlcy5wdXNoKHRoaXMubW9udGhzKG1vbSwgJycpKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzLnB1c2godGhpcy5tb250aHMobW9tLCAnJykpO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaCh0aGlzLm1vbnRoc1Nob3J0KG1vbSwgJycpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTb3J0aW5nIG1ha2VzIHN1cmUgaWYgb25lIG1vbnRoIChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgICAgICAgICAgc2hvcnRQaWVjZXNbaV0gPSByZWdleEVzY2FwZShzaG9ydFBpZWNlc1tpXSk7XG4gICAgICAgICAgICBsb25nUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobG9uZ1BpZWNlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDI0OyBpKyspIHtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbW9udGhzUmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaXhlZFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX21vbnRoc1Nob3J0UmVnZXggPSB0aGlzLl9tb250aHNSZWdleDtcbiAgICAgICAgdGhpcy5fbW9udGhzU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBsb25nUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIHNob3J0UGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVEYXRlICh5LCBtLCBkLCBoLCBNLCBzLCBtcykge1xuICAgICAgICAvLyBjYW4ndCBqdXN0IGFwcGx5KCkgdG8gY3JlYXRlIGEgZGF0ZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xLzE4MTM0OFxuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHksIG0sIGQsIGgsIE0sIHMsIG1zKTtcblxuICAgICAgICAvLyB0aGUgZGF0ZSBjb25zdHJ1Y3RvciByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwICYmIGlzRmluaXRlKGRhdGUuZ2V0RnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIoeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlVVRDRGF0ZSAoeSkge1xuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsIGFyZ3VtZW50cykpO1xuXG4gICAgICAgIC8vIHRoZSBEYXRlLlVUQyBmdW5jdGlvbiByZW1hcHMgeWVhcnMgMC05OSB0byAxOTAwLTE5OTlcbiAgICAgICAgaWYgKHkgPCAxMDAgJiYgeSA+PSAwICYmIGlzRmluaXRlKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSkpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0VVRDRnVsbFllYXIoeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgLy8gc3RhcnQtb2YtZmlyc3Qtd2VlayAtIHN0YXJ0LW9mLXllYXJcbiAgICBmdW5jdGlvbiBmaXJzdFdlZWtPZmZzZXQoeWVhciwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIC8vIGZpcnN0LXdlZWsgZGF5IC0tIHdoaWNoIGphbnVhcnkgaXMgYWx3YXlzIGluIHRoZSBmaXJzdCB3ZWVrICg0IGZvciBpc28sIDEgZm9yIG90aGVyKVxuICAgICAgICAgICAgZndkID0gNyArIGRvdyAtIGRveSxcbiAgICAgICAgICAgIC8vIGZpcnN0LXdlZWsgZGF5IGxvY2FsIHdlZWtkYXkgLS0gd2hpY2ggbG9jYWwgd2Vla2RheSBpcyBmd2RcbiAgICAgICAgICAgIGZ3ZGx3ID0gKDcgKyBjcmVhdGVVVENEYXRlKHllYXIsIDAsIGZ3ZCkuZ2V0VVRDRGF5KCkgLSBkb3cpICUgNztcblxuICAgICAgICByZXR1cm4gLWZ3ZGx3ICsgZndkIC0gMTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlI0NhbGN1bGF0aW5nX2FfZGF0ZV9naXZlbl90aGVfeWVhci4yQ193ZWVrX251bWJlcl9hbmRfd2Vla2RheVxuICAgIGZ1bmN0aW9uIGRheU9mWWVhckZyb21XZWVrcyh5ZWFyLCB3ZWVrLCB3ZWVrZGF5LCBkb3csIGRveSkge1xuICAgICAgICB2YXIgbG9jYWxXZWVrZGF5ID0gKDcgKyB3ZWVrZGF5IC0gZG93KSAlIDcsXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0ID0gZmlyc3RXZWVrT2Zmc2V0KHllYXIsIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRheU9mWWVhciA9IDEgKyA3ICogKHdlZWsgLSAxKSArIGxvY2FsV2Vla2RheSArIHdlZWtPZmZzZXQsXG4gICAgICAgICAgICByZXNZZWFyLCByZXNEYXlPZlllYXI7XG5cbiAgICAgICAgaWYgKGRheU9mWWVhciA8PSAwKSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhciAtIDE7XG4gICAgICAgICAgICByZXNEYXlPZlllYXIgPSBkYXlzSW5ZZWFyKHJlc1llYXIpICsgZGF5T2ZZZWFyO1xuICAgICAgICB9IGVsc2UgaWYgKGRheU9mWWVhciA+IGRheXNJblllYXIoeWVhcikpIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSB5ZWFyICsgMTtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhciAtIGRheXNJblllYXIoeWVhcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNZZWFyID0geWVhcjtcbiAgICAgICAgICAgIHJlc0RheU9mWWVhciA9IGRheU9mWWVhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB5ZWFyOiByZXNZZWFyLFxuICAgICAgICAgICAgZGF5T2ZZZWFyOiByZXNEYXlPZlllYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrT2ZZZWFyKG1vbSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtPZmZzZXQgPSBmaXJzdFdlZWtPZmZzZXQobW9tLnllYXIoKSwgZG93LCBkb3kpLFxuICAgICAgICAgICAgd2VlayA9IE1hdGguZmxvb3IoKG1vbS5kYXlPZlllYXIoKSAtIHdlZWtPZmZzZXQgLSAxKSAvIDcpICsgMSxcbiAgICAgICAgICAgIHJlc1dlZWssIHJlc1llYXI7XG5cbiAgICAgICAgaWYgKHdlZWsgPCAxKSB7XG4gICAgICAgICAgICByZXNZZWFyID0gbW9tLnllYXIoKSAtIDE7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayArIHdlZWtzSW5ZZWFyKHJlc1llYXIsIGRvdywgZG95KTtcbiAgICAgICAgfSBlbHNlIGlmICh3ZWVrID4gd2Vla3NJblllYXIobW9tLnllYXIoKSwgZG93LCBkb3kpKSB7XG4gICAgICAgICAgICByZXNXZWVrID0gd2VlayAtIHdlZWtzSW5ZZWFyKG1vbS55ZWFyKCksIGRvdywgZG95KTtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc1llYXIgPSBtb20ueWVhcigpO1xuICAgICAgICAgICAgcmVzV2VlayA9IHdlZWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2VlazogcmVzV2VlayxcbiAgICAgICAgICAgIHllYXI6IHJlc1llYXJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3ZWVrc0luWWVhcih5ZWFyLCBkb3csIGRveSkge1xuICAgICAgICB2YXIgd2Vla09mZnNldCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyLCBkb3csIGRveSksXG4gICAgICAgICAgICB3ZWVrT2Zmc2V0TmV4dCA9IGZpcnN0V2Vla09mZnNldCh5ZWFyICsgMSwgZG93LCBkb3kpO1xuICAgICAgICByZXR1cm4gKGRheXNJblllYXIoeWVhcikgLSB3ZWVrT2Zmc2V0ICsgd2Vla09mZnNldE5leHQpIC8gNztcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigndycsIFsnd3cnLCAyXSwgJ3dvJywgJ3dlZWsnKTtcbiAgICBhZGRGb3JtYXRUb2tlbignVycsIFsnV1cnLCAyXSwgJ1dvJywgJ2lzb1dlZWsnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2VlaycsICd3Jyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrJywgJ1cnKTtcblxuICAgIC8vIFBSSU9SSVRJRVNcblxuICAgIGFkZFVuaXRQcmlvcml0eSgnd2VlaycsIDUpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2VlaycsIDUpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigndycsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ3d3JywgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ1cnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdXVycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsndycsICd3dycsICdXJywgJ1dXJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAxKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICAvLyBMT0NBTEVTXG5cbiAgICBmdW5jdGlvbiBsb2NhbGVXZWVrIChtb20pIHtcbiAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIobW9tLCB0aGlzLl93ZWVrLmRvdywgdGhpcy5fd2Vlay5kb3kpLndlZWs7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVXZWVrID0ge1xuICAgICAgICBkb3cgOiAwLCAvLyBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay5cbiAgICAgICAgZG95IDogNiAgLy8gVGhlIHdlZWsgdGhhdCBjb250YWlucyBKYW4gMXN0IGlzIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLlxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mV2VlayAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVGaXJzdERheU9mWWVhciAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93ZWVrLmRveTtcbiAgICB9XG5cbiAgICAvLyBNT01FTlRTXG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHRoaXMubG9jYWxlRGF0YSgpLndlZWsodGhpcyk7XG4gICAgICAgIHJldHVybiBpbnB1dCA9PSBudWxsID8gd2VlayA6IHRoaXMuYWRkKChpbnB1dCAtIHdlZWspICogNywgJ2QnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRJU09XZWVrIChpbnB1dCkge1xuICAgICAgICB2YXIgd2VlayA9IHdlZWtPZlllYXIodGhpcywgMSwgNCkud2VlaztcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyB3ZWVrIDogdGhpcy5hZGQoKGlucHV0IC0gd2VlaykgKiA3LCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkJywgMCwgJ2RvJywgJ2RheScpO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2RkJywgMCwgMCwgZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcywgZm9ybWF0KTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdkZGQnLCAwLCAwLCBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZGRkZCcsIDAsIDAsIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsIGZvcm1hdCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignZScsIDAsIDAsICd3ZWVrZGF5Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ0UnLCAwLCAwLCAnaXNvV2Vla2RheScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXknLCAnZCcpO1xuICAgIGFkZFVuaXRBbGlhcygnd2Vla2RheScsICdlJyk7XG4gICAgYWRkVW5pdEFsaWFzKCdpc29XZWVrZGF5JywgJ0UnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXknLCAxMSk7XG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrZGF5JywgMTEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla2RheScsIDExKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ2QnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0UnLCAgICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkJywgICBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLndlZWtkYXlzTWluUmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZCcsICAgZnVuY3Rpb24gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1Nob3J0UmVnZXgoaXNTdHJpY3QpO1xuICAgIH0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2RkZGQnLCAgIGZ1bmN0aW9uIChpc1N0cmljdCwgbG9jYWxlKSB7XG4gICAgICAgIHJldHVybiBsb2NhbGUud2Vla2RheXNSZWdleChpc1N0cmljdCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2RkJywgJ2RkZCcsICdkZGRkJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB2YXIgd2Vla2RheSA9IGNvbmZpZy5fbG9jYWxlLndlZWtkYXlzUGFyc2UoaW5wdXQsIHRva2VuLCBjb25maWcuX3N0cmljdCk7XG4gICAgICAgIC8vIGlmIHdlIGRpZG4ndCBnZXQgYSB3ZWVrZGF5IG5hbWUsIG1hcmsgdGhlIGRhdGUgYXMgaW52YWxpZFxuICAgICAgICBpZiAod2Vla2RheSAhPSBudWxsKSB7XG4gICAgICAgICAgICB3ZWVrLmQgPSB3ZWVrZGF5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuaW52YWxpZFdlZWtkYXkgPSBpbnB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgYWRkV2Vla1BhcnNlVG9rZW4oWydkJywgJ2UnLCAnRSddLCBmdW5jdGlvbiAoaW5wdXQsIHdlZWssIGNvbmZpZywgdG9rZW4pIHtcbiAgICAgICAgd2Vla1t0b2tlbl0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICAvLyBIRUxQRVJTXG5cbiAgICBmdW5jdGlvbiBwYXJzZVdlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpc05hTihpbnB1dCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUludChpbnB1dCwgMTApO1xuICAgICAgICB9XG5cbiAgICAgICAgaW5wdXQgPSBsb2NhbGUud2Vla2RheXNQYXJzZShpbnB1dCk7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIGxvY2FsZSkge1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS53ZWVrZGF5c1BhcnNlKGlucHV0KSAlIDcgfHwgNztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaXNOYU4oaW5wdXQpID8gbnVsbCA6IGlucHV0O1xuICAgIH1cblxuICAgIC8vIExPQ0FMRVNcblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXMgPSAnU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXknLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXMgKG0sIGZvcm1hdCkge1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKSA/IHRoaXMuX3dlZWtkYXlzIDpcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1snc3RhbmRhbG9uZSddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5KHRoaXMuX3dlZWtkYXlzKSA/IHRoaXMuX3dlZWtkYXlzW20uZGF5KCldIDpcbiAgICAgICAgICAgIHRoaXMuX3dlZWtkYXlzW3RoaXMuX3dlZWtkYXlzLmlzRm9ybWF0LnRlc3QoZm9ybWF0KSA/ICdmb3JtYXQnIDogJ3N0YW5kYWxvbmUnXVttLmRheSgpXTtcbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdExvY2FsZVdlZWtkYXlzU2hvcnQgPSAnU3VuX01vbl9UdWVfV2VkX1RodV9GcmlfU2F0Jy5zcGxpdCgnXycpO1xuICAgIGZ1bmN0aW9uIGxvY2FsZVdlZWtkYXlzU2hvcnQgKG0pIHtcbiAgICAgICAgcmV0dXJuIChtKSA/IHRoaXMuX3dlZWtkYXlzU2hvcnRbbS5kYXkoKV0gOiB0aGlzLl93ZWVrZGF5c1Nob3J0O1xuICAgIH1cblxuICAgIHZhciBkZWZhdWx0TG9jYWxlV2Vla2RheXNNaW4gPSAnU3VfTW9fVHVfV2VfVGhfRnJfU2EnLnNwbGl0KCdfJyk7XG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNNaW4gKG0pIHtcbiAgICAgICAgcmV0dXJuIChtKSA/IHRoaXMuX3dlZWtkYXlzTWluW20uZGF5KCldIDogdGhpcy5fd2Vla2RheXNNaW47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlU3RyaWN0UGFyc2UkMSh3ZWVrZGF5TmFtZSwgZm9ybWF0LCBzdHJpY3QpIHtcbiAgICAgICAgdmFyIGksIGlpLCBtb20sIGxsYyA9IHdlZWtkYXlOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9taW5XZWVrZGF5c1BhcnNlID0gW107XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyArK2kpIHtcbiAgICAgICAgICAgICAgICBtb20gPSBjcmVhdGVVVEMoWzIwMDAsIDFdKS5kYXkoaSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXSA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gdGhpcy53ZWVrZGF5cyhtb20sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ2RkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlpICE9PSAtMSA/IGlpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdkZGRkJykge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICBpZiAoaWkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT09ICdkZGQnKSB7XG4gICAgICAgICAgICAgICAgaWkgPSBpbmRleE9mLmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl93ZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIGlmIChpaSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpaSA9IGluZGV4T2YuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLCBsbGMpO1xuICAgICAgICAgICAgICAgIHJldHVybiBpaSAhPT0gLTEgPyBpaSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsIGxsYyk7XG4gICAgICAgICAgICAgICAgaWYgKGlpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlpID0gaW5kZXhPZi5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSwgbGxjKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWkgIT09IC0xID8gaWkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9jYWxlV2Vla2RheXNQYXJzZSAod2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KSB7XG4gICAgICAgIHZhciBpLCBtb20sIHJlZ2V4O1xuXG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGVTdHJpY3RQYXJzZSQxLmNhbGwodGhpcywgd2Vla2RheU5hbWUsIGZvcm1hdCwgc3RyaWN0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWluV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlID0gW107XG4gICAgICAgICAgICB0aGlzLl9mdWxsV2Vla2RheXNQYXJzZSA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgLy8gbWFrZSB0aGUgcmVnZXggaWYgd2UgZG9uJ3QgaGF2ZSBpdCBhbHJlYWR5XG5cbiAgICAgICAgICAgIG1vbSA9IGNyZWF0ZVVUQyhbMjAwMCwgMV0pLmRheShpKTtcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgIXRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXMobW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNTaG9ydChtb20sICcnKS5yZXBsYWNlKCcuJywgJ1xcXFwuPycpICsgJyQnLCAnaScpO1xuICAgICAgICAgICAgICAgIHRoaXMuX21pbldlZWtkYXlzUGFyc2VbaV0gPSBuZXcgUmVnRXhwKCdeJyArIHRoaXMud2Vla2RheXNNaW4obW9tLCAnJykucmVwbGFjZSgnLicsICdcXFxcLj8nKSArICckJywgJ2knKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fd2Vla2RheXNQYXJzZVtpXSkge1xuICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ14nICsgdGhpcy53ZWVrZGF5cyhtb20sICcnKSArICd8XicgKyB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJykgKyAnfF4nICsgdGhpcy53ZWVrZGF5c01pbihtb20sICcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1BhcnNlW2ldID0gbmV3IFJlZ0V4cChyZWdleC5yZXBsYWNlKCcuJywgJycpLCAnaScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gdGVzdCB0aGUgcmVnZXhcbiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZm9ybWF0ID09PSAnZGRkZCcgJiYgdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaWN0ICYmIGZvcm1hdCA9PT0gJ2RkZCcgJiYgdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW2ldLnRlc3Qod2Vla2RheU5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmljdCAmJiBmb3JtYXQgPT09ICdkZCcgJiYgdGhpcy5fbWluV2Vla2RheXNQYXJzZVtpXS50ZXN0KHdlZWtkYXlOYW1lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyaWN0ICYmIHRoaXMuX3dlZWtkYXlzUGFyc2VbaV0udGVzdCh3ZWVrZGF5TmFtZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mV2VlayAoaW5wdXQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGlucHV0ICE9IG51bGwgPyB0aGlzIDogTmFOO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkYXkgPSB0aGlzLl9pc1VUQyA/IHRoaXMuX2QuZ2V0VVRDRGF5KCkgOiB0aGlzLl9kLmdldERheSgpO1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaW5wdXQgPSBwYXJzZVdlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChpbnB1dCAtIGRheSwgJ2QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRMb2NhbGVEYXlPZldlZWsgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnB1dCAhPSBudWxsID8gdGhpcyA6IE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgd2Vla2RheSA9ICh0aGlzLmRheSgpICsgNyAtIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdykgJSA3O1xuICAgICAgICByZXR1cm4gaW5wdXQgPT0gbnVsbCA/IHdlZWtkYXkgOiB0aGlzLmFkZChpbnB1dCAtIHdlZWtkYXksICdkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U2V0SVNPRGF5T2ZXZWVrIChpbnB1dCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vbWVudCNkYXkgZXhjZXB0XG4gICAgICAgIC8vIGFzIGEgZ2V0dGVyLCByZXR1cm5zIDcgaW5zdGVhZCBvZiAwICgxLTcgcmFuZ2UgaW5zdGVhZCBvZiAwLTYpXG4gICAgICAgIC8vIGFzIGEgc2V0dGVyLCBzdW5kYXkgc2hvdWxkIGJlbG9uZyB0byB0aGUgcHJldmlvdXMgd2Vlay5cblxuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFyIHdlZWtkYXkgPSBwYXJzZUlzb1dlZWtkYXkoaW5wdXQsIHRoaXMubG9jYWxlRGF0YSgpKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRheSh0aGlzLmRheSgpICUgNyA/IHdlZWtkYXkgOiB3ZWVrZGF5IC0gNyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kYXkoKSB8fCA3O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c1JlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c1JlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1JlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVmYXVsdFdlZWtkYXlzU2hvcnRSZWdleCA9IG1hdGNoV29yZDtcbiAgICBmdW5jdGlvbiB3ZWVrZGF5c1Nob3J0UmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFoYXNPd25Qcm9wKHRoaXMsICdfd2Vla2RheXNTaG9ydFJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXggPSBkZWZhdWx0V2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFN0cmljdFJlZ2V4IDogdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRXZWVrZGF5c01pblJlZ2V4ID0gbWF0Y2hXb3JkO1xuICAgIGZ1bmN0aW9uIHdlZWtkYXlzTWluUmVnZXggKGlzU3RyaWN0KSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWVrZGF5c1BhcnNlRXhhY3QpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duUHJvcCh0aGlzLCAnX3dlZWtkYXlzUmVnZXgnKSkge1xuICAgICAgICAgICAgICAgIGNvbXB1dGVXZWVrZGF5c1BhcnNlLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNTdHJpY3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWhhc093blByb3AodGhpcywgJ193ZWVrZGF5c01pblJlZ2V4JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93ZWVrZGF5c01pblJlZ2V4ID0gZGVmYXVsdFdlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCAmJiBpc1N0cmljdCA/XG4gICAgICAgICAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5TdHJpY3RSZWdleCA6IHRoaXMuX3dlZWtkYXlzTWluUmVnZXg7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXZWVrZGF5c1BhcnNlICgpIHtcbiAgICAgICAgZnVuY3Rpb24gY21wTGVuUmV2KGEsIGIpIHtcbiAgICAgICAgICAgIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG1pblBpZWNlcyA9IFtdLCBzaG9ydFBpZWNlcyA9IFtdLCBsb25nUGllY2VzID0gW10sIG1peGVkUGllY2VzID0gW10sXG4gICAgICAgICAgICBpLCBtb20sIG1pbnAsIHNob3J0cCwgbG9uZ3A7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1ha2UgdGhlIHJlZ2V4IGlmIHdlIGRvbid0IGhhdmUgaXQgYWxyZWFkeVxuICAgICAgICAgICAgbW9tID0gY3JlYXRlVVRDKFsyMDAwLCAxXSkuZGF5KGkpO1xuICAgICAgICAgICAgbWlucCA9IHRoaXMud2Vla2RheXNNaW4obW9tLCAnJyk7XG4gICAgICAgICAgICBzaG9ydHAgPSB0aGlzLndlZWtkYXlzU2hvcnQobW9tLCAnJyk7XG4gICAgICAgICAgICBsb25ncCA9IHRoaXMud2Vla2RheXMobW9tLCAnJyk7XG4gICAgICAgICAgICBtaW5QaWVjZXMucHVzaChtaW5wKTtcbiAgICAgICAgICAgIHNob3J0UGllY2VzLnB1c2goc2hvcnRwKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgICAgICBtaXhlZFBpZWNlcy5wdXNoKG1pbnApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChzaG9ydHApO1xuICAgICAgICAgICAgbWl4ZWRQaWVjZXMucHVzaChsb25ncCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU29ydGluZyBtYWtlcyBzdXJlIGlmIG9uZSB3ZWVrZGF5IChvciBhYmJyKSBpcyBhIHByZWZpeCBvZiBhbm90aGVyIGl0XG4gICAgICAgIC8vIHdpbGwgbWF0Y2ggdGhlIGxvbmdlciBwaWVjZS5cbiAgICAgICAgbWluUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgc2hvcnRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBsb25nUGllY2VzLnNvcnQoY21wTGVuUmV2KTtcbiAgICAgICAgbWl4ZWRQaWVjZXMuc29ydChjbXBMZW5SZXYpO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICBzaG9ydFBpZWNlc1tpXSA9IHJlZ2V4RXNjYXBlKHNob3J0UGllY2VzW2ldKTtcbiAgICAgICAgICAgIGxvbmdQaWVjZXNbaV0gPSByZWdleEVzY2FwZShsb25nUGllY2VzW2ldKTtcbiAgICAgICAgICAgIG1peGVkUGllY2VzW2ldID0gcmVnZXhFc2NhcGUobWl4ZWRQaWVjZXNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIG1peGVkUGllY2VzLmpvaW4oJ3wnKSArICcpJywgJ2knKTtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4ID0gdGhpcy5fd2Vla2RheXNSZWdleDtcbiAgICAgICAgdGhpcy5fd2Vla2RheXNNaW5SZWdleCA9IHRoaXMuX3dlZWtkYXlzUmVnZXg7XG5cbiAgICAgICAgdGhpcy5fd2Vla2RheXNTdHJpY3RSZWdleCA9IG5ldyBSZWdFeHAoJ14oJyArIGxvbmdQaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgICAgICB0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBzaG9ydFBpZWNlcy5qb2luKCd8JykgKyAnKScsICdpJyk7XG4gICAgICAgIHRoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXggPSBuZXcgUmVnRXhwKCdeKCcgKyBtaW5QaWVjZXMuam9pbignfCcpICsgJyknLCAnaScpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGZ1bmN0aW9uIGhGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhvdXJzKCkgJSAxMiB8fCAxMjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBrRm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3VycygpIHx8IDI0O1xuICAgIH1cblxuICAgIGFkZEZvcm1hdFRva2VuKCdIJywgWydISCcsIDJdLCAwLCAnaG91cicpO1xuICAgIGFkZEZvcm1hdFRva2VuKCdoJywgWydoaCcsIDJdLCAwLCBoRm9ybWF0KTtcbiAgICBhZGRGb3JtYXRUb2tlbignaycsIFsna2snLCAyXSwgMCwga0Zvcm1hdCk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbignaG1tJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpO1xuICAgIH0pO1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ2htbXNzJywgMCwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gJycgKyBoRm9ybWF0LmFwcGx5KHRoaXMpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW0nLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAnJyArIHRoaXMuaG91cnMoKSArIHplcm9GaWxsKHRoaXMubWludXRlcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKCdIbW1zcycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICcnICsgdGhpcy5ob3VycygpICsgemVyb0ZpbGwodGhpcy5taW51dGVzKCksIDIpICtcbiAgICAgICAgICAgIHplcm9GaWxsKHRoaXMuc2Vjb25kcygpLCAyKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG1lcmlkaWVtICh0b2tlbiwgbG93ZXJjYXNlKSB7XG4gICAgICAgIGFkZEZvcm1hdFRva2VuKHRva2VuLCAwLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubWVyaWRpZW0odGhpcy5ob3VycygpLCB0aGlzLm1pbnV0ZXMoKSwgbG93ZXJjYXNlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbWVyaWRpZW0oJ2EnLCB0cnVlKTtcbiAgICBtZXJpZGllbSgnQScsIGZhbHNlKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnaG91cicsICdoJyk7XG5cbiAgICAvLyBQUklPUklUWVxuICAgIGFkZFVuaXRQcmlvcml0eSgnaG91cicsIDEzKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGZ1bmN0aW9uIG1hdGNoTWVyaWRpZW0gKGlzU3RyaWN0LCBsb2NhbGUpIHtcbiAgICAgICAgcmV0dXJuIGxvY2FsZS5fbWVyaWRpZW1QYXJzZTtcbiAgICB9XG5cbiAgICBhZGRSZWdleFRva2VuKCdhJywgIG1hdGNoTWVyaWRpZW0pO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0EnLCAgbWF0Y2hNZXJpZGllbSk7XG4gICAgYWRkUmVnZXhUb2tlbignSCcsICBtYXRjaDF0bzIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2gnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdrJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignSEgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignaGgnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbigna2snLCBtYXRjaDF0bzIsIG1hdGNoMik7XG5cbiAgICBhZGRSZWdleFRva2VuKCdobW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2htbXNzJywgbWF0Y2g1dG82KTtcbiAgICBhZGRSZWdleFRva2VuKCdIbW0nLCBtYXRjaDN0bzQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0htbXNzJywgbWF0Y2g1dG82KTtcblxuICAgIGFkZFBhcnNlVG9rZW4oWydIJywgJ0hIJ10sIEhPVVIpO1xuICAgIGFkZFBhcnNlVG9rZW4oWydrJywgJ2trJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIga0lucHV0ID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBhcnJheVtIT1VSXSA9IGtJbnB1dCA9PT0gMjQgPyAwIDoga0lucHV0O1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oWydhJywgJ0EnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGNvbmZpZy5faXNQbSA9IGNvbmZpZy5fbG9jYWxlLmlzUE0oaW5wdXQpO1xuICAgICAgICBjb25maWcuX21lcmlkaWVtID0gaW5wdXQ7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ2gnLCAnaGgnXSwgZnVuY3Rpb24gKGlucHV0LCBhcnJheSwgY29uZmlnKSB7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW0nLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvcyA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvcykpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvcykpO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5iaWdIb3VyID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBhZGRQYXJzZVRva2VuKCdobW1zcycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zMSA9IGlucHV0Lmxlbmd0aCAtIDQ7XG4gICAgICAgIHZhciBwb3MyID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zMSkpO1xuICAgICAgICBhcnJheVtNSU5VVEVdID0gdG9JbnQoaW5wdXQuc3Vic3RyKHBvczEsIDIpKTtcbiAgICAgICAgYXJyYXlbU0VDT05EXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MyKSk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB0cnVlO1xuICAgIH0pO1xuICAgIGFkZFBhcnNlVG9rZW4oJ0htbScsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICB2YXIgcG9zID0gaW5wdXQubGVuZ3RoIC0gMjtcbiAgICAgICAgYXJyYXlbSE9VUl0gPSB0b0ludChpbnB1dC5zdWJzdHIoMCwgcG9zKSk7XG4gICAgICAgIGFycmF5W01JTlVURV0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zKSk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbignSG1tc3MnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgdmFyIHBvczEgPSBpbnB1dC5sZW5ndGggLSA0O1xuICAgICAgICB2YXIgcG9zMiA9IGlucHV0Lmxlbmd0aCAtIDI7XG4gICAgICAgIGFycmF5W0hPVVJdID0gdG9JbnQoaW5wdXQuc3Vic3RyKDAsIHBvczEpKTtcbiAgICAgICAgYXJyYXlbTUlOVVRFXSA9IHRvSW50KGlucHV0LnN1YnN0cihwb3MxLCAyKSk7XG4gICAgICAgIGFycmF5W1NFQ09ORF0gPSB0b0ludChpbnB1dC5zdWJzdHIocG9zMikpO1xuICAgIH0pO1xuXG4gICAgLy8gTE9DQUxFU1xuXG4gICAgZnVuY3Rpb24gbG9jYWxlSXNQTSAoaW5wdXQpIHtcbiAgICAgICAgLy8gSUU4IFF1aXJrcyBNb2RlICYgSUU3IFN0YW5kYXJkcyBNb2RlIGRvIG5vdCBhbGxvdyBhY2Nlc3Npbmcgc3RyaW5ncyBsaWtlIGFycmF5c1xuICAgICAgICAvLyBVc2luZyBjaGFyQXQgc2hvdWxkIGJlIG1vcmUgY29tcGF0aWJsZS5cbiAgICAgICAgcmV0dXJuICgoaW5wdXQgKyAnJykudG9Mb3dlckNhc2UoKS5jaGFyQXQoMCkgPT09ICdwJyk7XG4gICAgfVxuXG4gICAgdmFyIGRlZmF1bHRMb2NhbGVNZXJpZGllbVBhcnNlID0gL1thcF1cXC4/bT9cXC4/L2k7XG4gICAgZnVuY3Rpb24gbG9jYWxlTWVyaWRpZW0gKGhvdXJzLCBtaW51dGVzLCBpc0xvd2VyKSB7XG4gICAgICAgIGlmIChob3VycyA+IDExKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNMb3dlciA/ICdwbScgOiAnUE0nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGlzTG93ZXIgPyAnYW0nIDogJ0FNJztcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgLy8gU2V0dGluZyB0aGUgaG91ciBzaG91bGQga2VlcCB0aGUgdGltZSwgYmVjYXVzZSB0aGUgdXNlciBleHBsaWNpdGx5XG4gICAgLy8gc3BlY2lmaWVkIHdoaWNoIGhvdXIgdGhleSB3YW50LiBTbyB0cnlpbmcgdG8gbWFpbnRhaW4gdGhlIHNhbWUgaG91ciAoaW5cbiAgICAvLyBhIG5ldyB0aW1lem9uZSkgbWFrZXMgc2Vuc2UuIEFkZGluZy9zdWJ0cmFjdGluZyBob3VycyBkb2VzIG5vdCBmb2xsb3dcbiAgICAvLyB0aGlzIHJ1bGUuXG4gICAgdmFyIGdldFNldEhvdXIgPSBtYWtlR2V0U2V0KCdIb3VycycsIHRydWUpO1xuXG4gICAgdmFyIGJhc2VDb25maWcgPSB7XG4gICAgICAgIGNhbGVuZGFyOiBkZWZhdWx0Q2FsZW5kYXIsXG4gICAgICAgIGxvbmdEYXRlRm9ybWF0OiBkZWZhdWx0TG9uZ0RhdGVGb3JtYXQsXG4gICAgICAgIGludmFsaWREYXRlOiBkZWZhdWx0SW52YWxpZERhdGUsXG4gICAgICAgIG9yZGluYWw6IGRlZmF1bHRPcmRpbmFsLFxuICAgICAgICBkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOiBkZWZhdWx0RGF5T2ZNb250aE9yZGluYWxQYXJzZSxcbiAgICAgICAgcmVsYXRpdmVUaW1lOiBkZWZhdWx0UmVsYXRpdmVUaW1lLFxuXG4gICAgICAgIG1vbnRoczogZGVmYXVsdExvY2FsZU1vbnRocyxcbiAgICAgICAgbW9udGhzU2hvcnQ6IGRlZmF1bHRMb2NhbGVNb250aHNTaG9ydCxcblxuICAgICAgICB3ZWVrOiBkZWZhdWx0TG9jYWxlV2VlayxcblxuICAgICAgICB3ZWVrZGF5czogZGVmYXVsdExvY2FsZVdlZWtkYXlzLFxuICAgICAgICB3ZWVrZGF5c01pbjogZGVmYXVsdExvY2FsZVdlZWtkYXlzTWluLFxuICAgICAgICB3ZWVrZGF5c1Nob3J0OiBkZWZhdWx0TG9jYWxlV2Vla2RheXNTaG9ydCxcblxuICAgICAgICBtZXJpZGllbVBhcnNlOiBkZWZhdWx0TG9jYWxlTWVyaWRpZW1QYXJzZVxuICAgIH07XG5cbiAgICAvLyBpbnRlcm5hbCBzdG9yYWdlIGZvciBsb2NhbGUgY29uZmlnIGZpbGVzXG4gICAgdmFyIGxvY2FsZXMgPSB7fTtcbiAgICB2YXIgbG9jYWxlRmFtaWxpZXMgPSB7fTtcbiAgICB2YXIgZ2xvYmFsTG9jYWxlO1xuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGtleSkge1xuICAgICAgICByZXR1cm4ga2V5ID8ga2V5LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgnXycsICctJykgOiBrZXk7XG4gICAgfVxuXG4gICAgLy8gcGljayB0aGUgbG9jYWxlIGZyb20gdGhlIGFycmF5XG4gICAgLy8gdHJ5IFsnZW4tYXUnLCAnZW4tZ2InXSBhcyAnZW4tYXUnLCAnZW4tZ2InLCAnZW4nLCBhcyBpbiBtb3ZlIHRocm91Z2ggdGhlIGxpc3QgdHJ5aW5nIGVhY2hcbiAgICAvLyBzdWJzdHJpbmcgZnJvbSBtb3N0IHNwZWNpZmljIHRvIGxlYXN0LCBidXQgbW92ZSB0byB0aGUgbmV4dCBhcnJheSBpdGVtIGlmIGl0J3MgYSBtb3JlIHNwZWNpZmljIHZhcmlhbnQgdGhhbiB0aGUgY3VycmVudCByb290XG4gICAgZnVuY3Rpb24gY2hvb3NlTG9jYWxlKG5hbWVzKSB7XG4gICAgICAgIHZhciBpID0gMCwgaiwgbmV4dCwgbG9jYWxlLCBzcGxpdDtcblxuICAgICAgICB3aGlsZSAoaSA8IG5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3BsaXQgPSBub3JtYWxpemVMb2NhbGUobmFtZXNbaV0pLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBqID0gc3BsaXQubGVuZ3RoO1xuICAgICAgICAgICAgbmV4dCA9IG5vcm1hbGl6ZUxvY2FsZShuYW1lc1tpICsgMV0pO1xuICAgICAgICAgICAgbmV4dCA9IG5leHQgPyBuZXh0LnNwbGl0KCctJykgOiBudWxsO1xuICAgICAgICAgICAgd2hpbGUgKGogPiAwKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShzcGxpdC5zbGljZSgwLCBqKS5qb2luKCctJykpO1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG5leHQgJiYgbmV4dC5sZW5ndGggPj0gaiAmJiBjb21wYXJlQXJyYXlzKHNwbGl0LCBuZXh0LCB0cnVlKSA+PSBqIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICAvL3RoZSBuZXh0IGFycmF5IGl0ZW0gaXMgYmV0dGVyIHRoYW4gYSBzaGFsbG93ZXIgc3Vic3RyaW5nIG9mIHRoaXMgb25lXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsb2FkTG9jYWxlKG5hbWUpIHtcbiAgICAgICAgdmFyIG9sZExvY2FsZSA9IG51bGw7XG4gICAgICAgIC8vIFRPRE86IEZpbmQgYSBiZXR0ZXIgd2F5IHRvIHJlZ2lzdGVyIGFuZCBsb2FkIGFsbCB0aGUgbG9jYWxlcyBpbiBOb2RlXG4gICAgICAgIGlmICghbG9jYWxlc1tuYW1lXSAmJiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpICYmXG4gICAgICAgICAgICAgICAgbW9kdWxlICYmIG1vZHVsZS5leHBvcnRzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG9sZExvY2FsZSA9IGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICAgICAgICAgICAgICB2YXIgYWxpYXNlZFJlcXVpcmUgPSByZXF1aXJlO1xuICAgICAgICAgICAgICAgIGFsaWFzZWRSZXF1aXJlKCcuL2xvY2FsZS8nICsgbmFtZSk7XG4gICAgICAgICAgICAgICAgZ2V0U2V0R2xvYmFsTG9jYWxlKG9sZExvY2FsZSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGVzW25hbWVdO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBsb2FkIGxvY2FsZSBhbmQgdGhlbiBzZXQgdGhlIGdsb2JhbCBsb2NhbGUuICBJZlxuICAgIC8vIG5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGluLCBpdCB3aWxsIHNpbXBseSByZXR1cm4gdGhlIGN1cnJlbnQgZ2xvYmFsXG4gICAgLy8gbG9jYWxlIGtleS5cbiAgICBmdW5jdGlvbiBnZXRTZXRHbG9iYWxMb2NhbGUgKGtleSwgdmFsdWVzKSB7XG4gICAgICAgIHZhciBkYXRhO1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWVzKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkZWZpbmVMb2NhbGUoa2V5LCB2YWx1ZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIC8vIG1vbWVudC5kdXJhdGlvbi5fbG9jYWxlID0gbW9tZW50Ll9sb2NhbGUgPSBkYXRhO1xuICAgICAgICAgICAgICAgIGdsb2JhbExvY2FsZSA9IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiBjb25zb2xlICE9PSAgJ3VuZGVmaW5lZCcpICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgICAgICAgICAvL3dhcm4gdXNlciBpZiBhcmd1bWVudHMgYXJlIHBhc3NlZCBidXQgdGhlIGxvY2FsZSBjb3VsZCBub3QgYmUgc2V0XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTG9jYWxlICcgKyBrZXkgKyAgJyBub3QgZm91bmQuIERpZCB5b3UgZm9yZ2V0IHRvIGxvYWQgaXQ/Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZS5fYWJicjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkZWZpbmVMb2NhbGUgKG5hbWUsIGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnICE9PSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCBwYXJlbnRDb25maWcgPSBiYXNlQ29uZmlnO1xuICAgICAgICAgICAgY29uZmlnLmFiYnIgPSBuYW1lO1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGRlcHJlY2F0ZVNpbXBsZSgnZGVmaW5lTG9jYWxlT3ZlcnJpZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSBtb21lbnQudXBkYXRlTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgdG8gY2hhbmdlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2FuIGV4aXN0aW5nIGxvY2FsZS4gbW9tZW50LmRlZmluZUxvY2FsZShsb2NhbGVOYW1lLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcpIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGNyZWF0aW5nIGEgbmV3IGxvY2FsZSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kZWZpbmUtbG9jYWxlLyBmb3IgbW9yZSBpbmZvLicpO1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IGxvY2FsZXNbbmFtZV0uX2NvbmZpZztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsZXNbY29uZmlnLnBhcmVudExvY2FsZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGVzW2NvbmZpZy5wYXJlbnRMb2NhbGVdLl9jb25maWc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxlID0gbG9hZExvY2FsZShjb25maWcucGFyZW50TG9jYWxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRDb25maWcgPSBsb2NhbGUuX2NvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tjb25maWcucGFyZW50TG9jYWxlXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlRmFtaWxpZXNbY29uZmlnLnBhcmVudExvY2FsZV0ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBuZXcgTG9jYWxlKG1lcmdlQ29uZmlncyhwYXJlbnRDb25maWcsIGNvbmZpZykpO1xuXG4gICAgICAgICAgICBpZiAobG9jYWxlRmFtaWxpZXNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBsb2NhbGVGYW1pbGllc1tuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZmluZUxvY2FsZSh4Lm5hbWUsIHguY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBsb2NhbGUgQUZURVIgYWxsIGNoaWxkIGxvY2FsZXMgaGF2ZSBiZWVuXG4gICAgICAgICAgICAvLyBjcmVhdGVkLCBzbyB3ZSB3b24ndCBlbmQgdXAgd2l0aCB0aGUgY2hpbGQgbG9jYWxlIHNldC5cbiAgICAgICAgICAgIGdldFNldEdsb2JhbExvY2FsZShuYW1lKTtcblxuXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHVzZWZ1bCBmb3IgdGVzdGluZ1xuICAgICAgICAgICAgZGVsZXRlIGxvY2FsZXNbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUxvY2FsZShuYW1lLCBjb25maWcpIHtcbiAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgICAgICAgICB2YXIgbG9jYWxlLCB0bXBMb2NhbGUsIHBhcmVudENvbmZpZyA9IGJhc2VDb25maWc7XG4gICAgICAgICAgICAvLyBNRVJHRVxuICAgICAgICAgICAgdG1wTG9jYWxlID0gbG9hZExvY2FsZShuYW1lKTtcbiAgICAgICAgICAgIGlmICh0bXBMb2NhbGUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHBhcmVudENvbmZpZyA9IHRtcExvY2FsZS5fY29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uZmlnID0gbWVyZ2VDb25maWdzKHBhcmVudENvbmZpZywgY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZSA9IG5ldyBMb2NhbGUoY29uZmlnKTtcbiAgICAgICAgICAgIGxvY2FsZS5wYXJlbnRMb2NhbGUgPSBsb2NhbGVzW25hbWVdO1xuICAgICAgICAgICAgbG9jYWxlc1tuYW1lXSA9IGxvY2FsZTtcblxuICAgICAgICAgICAgLy8gYmFja3dhcmRzIGNvbXBhdCBmb3Igbm93OiBhbHNvIHNldCB0aGUgbG9jYWxlXG4gICAgICAgICAgICBnZXRTZXRHbG9iYWxMb2NhbGUobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBwYXNzIG51bGwgZm9yIGNvbmZpZyB0byB1bnVwZGF0ZSwgdXNlZnVsIGZvciB0ZXN0c1xuICAgICAgICAgICAgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmIChsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsZXNbbmFtZV0gPSBsb2NhbGVzW25hbWVdLnBhcmVudExvY2FsZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2FsZXNbbmFtZV0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxlc1tuYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsZXNbbmFtZV07XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyBsb2NhbGUgZGF0YVxuICAgIGZ1bmN0aW9uIGdldExvY2FsZSAoa2V5KSB7XG4gICAgICAgIHZhciBsb2NhbGU7XG5cbiAgICAgICAgaWYgKGtleSAmJiBrZXkuX2xvY2FsZSAmJiBrZXkuX2xvY2FsZS5fYWJicikge1xuICAgICAgICAgICAga2V5ID0ga2V5Ll9sb2NhbGUuX2FiYnI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbExvY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgICAvL3Nob3J0LWNpcmN1aXQgZXZlcnl0aGluZyBlbHNlXG4gICAgICAgICAgICBsb2NhbGUgPSBsb2FkTG9jYWxlKGtleSk7XG4gICAgICAgICAgICBpZiAobG9jYWxlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGtleSA9IFtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNob29zZUxvY2FsZShrZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RMb2NhbGVzKCkge1xuICAgICAgICByZXR1cm4ga2V5cyhsb2NhbGVzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja092ZXJmbG93IChtKSB7XG4gICAgICAgIHZhciBvdmVyZmxvdztcbiAgICAgICAgdmFyIGEgPSBtLl9hO1xuXG4gICAgICAgIGlmIChhICYmIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9PT0gLTIpIHtcbiAgICAgICAgICAgIG92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICBhW01PTlRIXSAgICAgICA8IDAgfHwgYVtNT05USF0gICAgICAgPiAxMSAgPyBNT05USCA6XG4gICAgICAgICAgICAgICAgYVtEQVRFXSAgICAgICAgPCAxIHx8IGFbREFURV0gICAgICAgID4gZGF5c0luTW9udGgoYVtZRUFSXSwgYVtNT05USF0pID8gREFURSA6XG4gICAgICAgICAgICAgICAgYVtIT1VSXSAgICAgICAgPCAwIHx8IGFbSE9VUl0gICAgICAgID4gMjQgfHwgKGFbSE9VUl0gPT09IDI0ICYmIChhW01JTlVURV0gIT09IDAgfHwgYVtTRUNPTkRdICE9PSAwIHx8IGFbTUlMTElTRUNPTkRdICE9PSAwKSkgPyBIT1VSIDpcbiAgICAgICAgICAgICAgICBhW01JTlVURV0gICAgICA8IDAgfHwgYVtNSU5VVEVdICAgICAgPiA1OSAgPyBNSU5VVEUgOlxuICAgICAgICAgICAgICAgIGFbU0VDT05EXSAgICAgIDwgMCB8fCBhW1NFQ09ORF0gICAgICA+IDU5ICA/IFNFQ09ORCA6XG4gICAgICAgICAgICAgICAgYVtNSUxMSVNFQ09ORF0gPCAwIHx8IGFbTUlMTElTRUNPTkRdID4gOTk5ID8gTUlMTElTRUNPTkQgOlxuICAgICAgICAgICAgICAgIC0xO1xuXG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd0RheU9mWWVhciAmJiAob3ZlcmZsb3cgPCBZRUFSIHx8IG92ZXJmbG93ID4gREFURSkpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IERBVEU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0UGFyc2luZ0ZsYWdzKG0pLl9vdmVyZmxvd1dlZWtzICYmIG92ZXJmbG93ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93ID0gV0VFSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChnZXRQYXJzaW5nRmxhZ3MobSkuX292ZXJmbG93V2Vla2RheSAmJiBvdmVyZmxvdyA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdyA9IFdFRUtEQVk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhtKS5vdmVyZmxvdyA9IG92ZXJmbG93O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgLy8gUGljayB0aGUgZmlyc3QgZGVmaW5lZCBvZiB0d28gb3IgdGhyZWUgYXJndW1lbnRzLlxuICAgIGZ1bmN0aW9uIGRlZmF1bHRzKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGIgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3VycmVudERhdGVBcnJheShjb25maWcpIHtcbiAgICAgICAgLy8gaG9va3MgaXMgYWN0dWFsbHkgdGhlIGV4cG9ydGVkIG1vbWVudCBvYmplY3RcbiAgICAgICAgdmFyIG5vd1ZhbHVlID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICBpZiAoY29uZmlnLl91c2VVVEMpIHtcbiAgICAgICAgICAgIHJldHVybiBbbm93VmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgbm93VmFsdWUuZ2V0VVRDTW9udGgoKSwgbm93VmFsdWUuZ2V0VVRDRGF0ZSgpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW25vd1ZhbHVlLmdldEZ1bGxZZWFyKCksIG5vd1ZhbHVlLmdldE1vbnRoKCksIG5vd1ZhbHVlLmdldERhdGUoKV07XG4gICAgfVxuXG4gICAgLy8gY29udmVydCBhbiBhcnJheSB0byBhIGRhdGUuXG4gICAgLy8gdGhlIGFycmF5IHNob3VsZCBtaXJyb3IgdGhlIHBhcmFtZXRlcnMgYmVsb3dcbiAgICAvLyBub3RlOiBhbGwgdmFsdWVzIHBhc3QgdGhlIHllYXIgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIGRlZmF1bHQgdG8gdGhlIGxvd2VzdCBwb3NzaWJsZSB2YWx1ZS5cbiAgICAvLyBbeWVhciwgbW9udGgsIGRheSAsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZF1cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tQXJyYXkgKGNvbmZpZykge1xuICAgICAgICB2YXIgaSwgZGF0ZSwgaW5wdXQgPSBbXSwgY3VycmVudERhdGUsIGV4cGVjdGVkV2Vla2RheSwgeWVhclRvVXNlO1xuXG4gICAgICAgIGlmIChjb25maWcuX2QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnREYXRlID0gY3VycmVudERhdGVBcnJheShjb25maWcpO1xuXG4gICAgICAgIC8vY29tcHV0ZSBkYXkgb2YgdGhlIHllYXIgZnJvbSB3ZWVrcyBhbmQgd2Vla2RheXNcbiAgICAgICAgaWYgKGNvbmZpZy5fdyAmJiBjb25maWcuX2FbREFURV0gPT0gbnVsbCAmJiBjb25maWcuX2FbTU9OVEhdID09IG51bGwpIHtcbiAgICAgICAgICAgIGRheU9mWWVhckZyb21XZWVrSW5mbyhjb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9pZiB0aGUgZGF5IG9mIHRoZSB5ZWFyIGlzIHNldCwgZmlndXJlIG91dCB3aGF0IGl0IGlzXG4gICAgICAgIGlmIChjb25maWcuX2RheU9mWWVhciAhPSBudWxsKSB7XG4gICAgICAgICAgICB5ZWFyVG9Vc2UgPSBkZWZhdWx0cyhjb25maWcuX2FbWUVBUl0sIGN1cnJlbnREYXRlW1lFQVJdKTtcblxuICAgICAgICAgICAgaWYgKGNvbmZpZy5fZGF5T2ZZZWFyID4gZGF5c0luWWVhcih5ZWFyVG9Vc2UpIHx8IGNvbmZpZy5fZGF5T2ZZZWFyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93RGF5T2ZZZWFyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0ZSA9IGNyZWF0ZVVUQ0RhdGUoeWVhclRvVXNlLCAwLCBjb25maWcuX2RheU9mWWVhcik7XG4gICAgICAgICAgICBjb25maWcuX2FbTU9OVEhdID0gZGF0ZS5nZXRVVENNb250aCgpO1xuICAgICAgICAgICAgY29uZmlnLl9hW0RBVEVdID0gZGF0ZS5nZXRVVENEYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEZWZhdWx0IHRvIGN1cnJlbnQgZGF0ZS5cbiAgICAgICAgLy8gKiBpZiBubyB5ZWFyLCBtb250aCwgZGF5IG9mIG1vbnRoIGFyZSBnaXZlbiwgZGVmYXVsdCB0byB0b2RheVxuICAgICAgICAvLyAqIGlmIGRheSBvZiBtb250aCBpcyBnaXZlbiwgZGVmYXVsdCBtb250aCBhbmQgeWVhclxuICAgICAgICAvLyAqIGlmIG1vbnRoIGlzIGdpdmVuLCBkZWZhdWx0IG9ubHkgeWVhclxuICAgICAgICAvLyAqIGlmIHllYXIgaXMgZ2l2ZW4sIGRvbid0IGRlZmF1bHQgYW55dGhpbmdcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IDMgJiYgY29uZmlnLl9hW2ldID09IG51bGw7ICsraSkge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSBjdXJyZW50RGF0ZVtpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFplcm8gb3V0IHdoYXRldmVyIHdhcyBub3QgZGVmYXVsdGVkLCBpbmNsdWRpbmcgdGltZVxuICAgICAgICBmb3IgKDsgaSA8IDc7IGkrKykge1xuICAgICAgICAgICAgY29uZmlnLl9hW2ldID0gaW5wdXRbaV0gPSAoY29uZmlnLl9hW2ldID09IG51bGwpID8gKGkgPT09IDIgPyAxIDogMCkgOiBjb25maWcuX2FbaV07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBmb3IgMjQ6MDA6MDAuMDAwXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPT09IDI0ICYmXG4gICAgICAgICAgICAgICAgY29uZmlnLl9hW01JTlVURV0gPT09IDAgJiZcbiAgICAgICAgICAgICAgICBjb25maWcuX2FbU0VDT05EXSA9PT0gMCAmJlxuICAgICAgICAgICAgICAgIGNvbmZpZy5fYVtNSUxMSVNFQ09ORF0gPT09IDApIHtcbiAgICAgICAgICAgIGNvbmZpZy5fbmV4dERheSA9IHRydWU7XG4gICAgICAgICAgICBjb25maWcuX2FbSE9VUl0gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnLl9kID0gKGNvbmZpZy5fdXNlVVRDID8gY3JlYXRlVVRDRGF0ZSA6IGNyZWF0ZURhdGUpLmFwcGx5KG51bGwsIGlucHV0KTtcbiAgICAgICAgZXhwZWN0ZWRXZWVrZGF5ID0gY29uZmlnLl91c2VVVEMgPyBjb25maWcuX2QuZ2V0VVRDRGF5KCkgOiBjb25maWcuX2QuZ2V0RGF5KCk7XG5cbiAgICAgICAgLy8gQXBwbHkgdGltZXpvbmUgb2Zmc2V0IGZyb20gaW5wdXQuIFRoZSBhY3R1YWwgdXRjT2Zmc2V0IGNhbiBiZSBjaGFuZ2VkXG4gICAgICAgIC8vIHdpdGggcGFyc2Vab25lLlxuICAgICAgICBpZiAoY29uZmlnLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kLnNldFVUQ01pbnV0ZXMoY29uZmlnLl9kLmdldFVUQ01pbnV0ZXMoKSAtIGNvbmZpZy5fdHptKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb25maWcuX25leHREYXkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IDI0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIG1pc21hdGNoaW5nIGRheSBvZiB3ZWVrXG4gICAgICAgIGlmIChjb25maWcuX3cgJiYgdHlwZW9mIGNvbmZpZy5fdy5kICE9PSAndW5kZWZpbmVkJyAmJiBjb25maWcuX3cuZCAhPT0gZXhwZWN0ZWRXZWVrZGF5KSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS53ZWVrZGF5TWlzbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGF5T2ZZZWFyRnJvbVdlZWtJbmZvKGNvbmZpZykge1xuICAgICAgICB2YXIgdywgd2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95LCB0ZW1wLCB3ZWVrZGF5T3ZlcmZsb3c7XG5cbiAgICAgICAgdyA9IGNvbmZpZy5fdztcbiAgICAgICAgaWYgKHcuR0cgIT0gbnVsbCB8fCB3LlcgIT0gbnVsbCB8fCB3LkUgIT0gbnVsbCkge1xuICAgICAgICAgICAgZG93ID0gMTtcbiAgICAgICAgICAgIGRveSA9IDQ7XG5cbiAgICAgICAgICAgIC8vIFRPRE86IFdlIG5lZWQgdG8gdGFrZSB0aGUgY3VycmVudCBpc29XZWVrWWVhciwgYnV0IHRoYXQgZGVwZW5kcyBvblxuICAgICAgICAgICAgLy8gaG93IHdlIGludGVycHJldCBub3cgKGxvY2FsLCB1dGMsIGZpeGVkIG9mZnNldCkuIFNvIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYSBub3cgdmVyc2lvbiBvZiBjdXJyZW50IGNvbmZpZyAodGFrZSBsb2NhbC91dGMvb2Zmc2V0IGZsYWdzLCBhbmRcbiAgICAgICAgICAgIC8vIGNyZWF0ZSBub3cpLlxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LkdHLCBjb25maWcuX2FbWUVBUl0sIHdlZWtPZlllYXIoY3JlYXRlTG9jYWwoKSwgMSwgNCkueWVhcik7XG4gICAgICAgICAgICB3ZWVrID0gZGVmYXVsdHMody5XLCAxKTtcbiAgICAgICAgICAgIHdlZWtkYXkgPSBkZWZhdWx0cyh3LkUsIDEpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXkgPCAxIHx8IHdlZWtkYXkgPiA3KSB7XG4gICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvdyA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRvdztcbiAgICAgICAgICAgIGRveSA9IGNvbmZpZy5fbG9jYWxlLl93ZWVrLmRveTtcblxuICAgICAgICAgICAgdmFyIGN1cldlZWsgPSB3ZWVrT2ZZZWFyKGNyZWF0ZUxvY2FsKCksIGRvdywgZG95KTtcblxuICAgICAgICAgICAgd2Vla1llYXIgPSBkZWZhdWx0cyh3LmdnLCBjb25maWcuX2FbWUVBUl0sIGN1cldlZWsueWVhcik7XG5cbiAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gY3VycmVudCB3ZWVrLlxuICAgICAgICAgICAgd2VlayA9IGRlZmF1bHRzKHcudywgY3VyV2Vlay53ZWVrKTtcblxuICAgICAgICAgICAgaWYgKHcuZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gd2Vla2RheSAtLSBsb3cgZGF5IG51bWJlcnMgYXJlIGNvbnNpZGVyZWQgbmV4dCB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZDtcbiAgICAgICAgICAgICAgICBpZiAod2Vla2RheSA8IDAgfHwgd2Vla2RheSA+IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheU92ZXJmbG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHcuZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9jYWwgd2Vla2RheSAtLSBjb3VudGluZyBzdGFydHMgZnJvbSBiZWdpbmluZyBvZiB3ZWVrXG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IHcuZSArIGRvdztcbiAgICAgICAgICAgICAgICBpZiAody5lIDwgMCB8fCB3LmUgPiA2KSB7XG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXlPdmVyZmxvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGJlZ2luaW5nIG9mIHdlZWtcbiAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gZG93O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3ZWVrIDwgMSB8fCB3ZWVrID4gd2Vla3NJblllYXIod2Vla1llYXIsIGRvdywgZG95KSkge1xuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykuX292ZXJmbG93V2Vla3MgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHdlZWtkYXlPdmVyZmxvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5fb3ZlcmZsb3dXZWVrZGF5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRlbXAgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KTtcbiAgICAgICAgICAgIGNvbmZpZy5fYVtZRUFSXSA9IHRlbXAueWVhcjtcbiAgICAgICAgICAgIGNvbmZpZy5fZGF5T2ZZZWFyID0gdGVtcC5kYXlPZlllYXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBpc28gODYwMSByZWdleFxuICAgIC8vIDAwMDAtMDAtMDAgMDAwMC1XMDAgb3IgMDAwMC1XMDAtMCArIFQgKyAwMCBvciAwMDowMCBvciAwMDowMDowMCBvciAwMDowMDowMC4wMDAgKyArMDA6MDAgb3IgKzAwMDAgb3IgKzAwKVxuICAgIHZhciBleHRlbmRlZElzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KS0oPzpcXGRcXGQtXFxkXFxkfFdcXGRcXGQtXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86OlxcZFxcZCg/OjpcXGRcXGQoPzpbLixdXFxkKyk/KT8pPykoW1xcK1xcLV1cXGRcXGQoPzo6P1xcZFxcZCk/fFxccypaKT8pPyQvO1xuICAgIHZhciBiYXNpY0lzb1JlZ2V4ID0gL15cXHMqKCg/OlsrLV1cXGR7Nn18XFxkezR9KSg/OlxcZFxcZFxcZFxcZHxXXFxkXFxkXFxkfFdcXGRcXGR8XFxkXFxkXFxkfFxcZFxcZCkpKD86KFR8ICkoXFxkXFxkKD86XFxkXFxkKD86XFxkXFxkKD86Wy4sXVxcZCspPyk/KT8pKFtcXCtcXC1dXFxkXFxkKD86Oj9cXGRcXGQpP3xcXHMqWik/KT8kLztcblxuICAgIHZhciB0elJlZ2V4ID0gL1p8WystXVxcZFxcZCg/Ojo/XFxkXFxkKT8vO1xuXG4gICAgdmFyIGlzb0RhdGVzID0gW1xuICAgICAgICBbJ1lZWVlZWS1NTS1ERCcsIC9bKy1dXFxkezZ9LVxcZFxcZC1cXGRcXGQvXSxcbiAgICAgICAgWydZWVlZLU1NLUREJywgL1xcZHs0fS1cXGRcXGQtXFxkXFxkL10sXG4gICAgICAgIFsnR0dHRy1bV11XVy1FJywgL1xcZHs0fS1XXFxkXFxkLVxcZC9dLFxuICAgICAgICBbJ0dHR0ctW1ddV1cnLCAvXFxkezR9LVdcXGRcXGQvLCBmYWxzZV0sXG4gICAgICAgIFsnWVlZWS1EREQnLCAvXFxkezR9LVxcZHszfS9dLFxuICAgICAgICBbJ1lZWVktTU0nLCAvXFxkezR9LVxcZFxcZC8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZWVlNTUREJywgL1srLV1cXGR7MTB9L10sXG4gICAgICAgIFsnWVlZWU1NREQnLCAvXFxkezh9L10sXG4gICAgICAgIC8vIFlZWVlNTSBpcyBOT1QgYWxsb3dlZCBieSB0aGUgc3RhbmRhcmRcbiAgICAgICAgWydHR0dHW1ddV1dFJywgL1xcZHs0fVdcXGR7M30vXSxcbiAgICAgICAgWydHR0dHW1ddV1cnLCAvXFxkezR9V1xcZHsyfS8sIGZhbHNlXSxcbiAgICAgICAgWydZWVlZREREJywgL1xcZHs3fS9dXG4gICAgXTtcblxuICAgIC8vIGlzbyB0aW1lIGZvcm1hdHMgYW5kIHJlZ2V4ZXNcbiAgICB2YXIgaXNvVGltZXMgPSBbXG4gICAgICAgIFsnSEg6bW06c3MuU1NTUycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZFxcLlxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcyxTU1NTJywgL1xcZFxcZDpcXGRcXGQ6XFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISDptbTpzcycsIC9cXGRcXGQ6XFxkXFxkOlxcZFxcZC9dLFxuICAgICAgICBbJ0hIOm1tJywgL1xcZFxcZDpcXGRcXGQvXSxcbiAgICAgICAgWydISG1tc3MuU1NTUycsIC9cXGRcXGRcXGRcXGRcXGRcXGRcXC5cXGQrL10sXG4gICAgICAgIFsnSEhtbXNzLFNTU1MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkLFxcZCsvXSxcbiAgICAgICAgWydISG1tc3MnLCAvXFxkXFxkXFxkXFxkXFxkXFxkL10sXG4gICAgICAgIFsnSEhtbScsIC9cXGRcXGRcXGRcXGQvXSxcbiAgICAgICAgWydISCcsIC9cXGRcXGQvXVxuICAgIF07XG5cbiAgICB2YXIgYXNwTmV0SnNvblJlZ2V4ID0gL15cXC8/RGF0ZVxcKChcXC0/XFxkKykvaTtcblxuICAgIC8vIGRhdGUgZnJvbSBpc28gZm9ybWF0XG4gICAgZnVuY3Rpb24gY29uZmlnRnJvbUlTTyhjb25maWcpIHtcbiAgICAgICAgdmFyIGksIGwsXG4gICAgICAgICAgICBzdHJpbmcgPSBjb25maWcuX2ksXG4gICAgICAgICAgICBtYXRjaCA9IGV4dGVuZGVkSXNvUmVnZXguZXhlYyhzdHJpbmcpIHx8IGJhc2ljSXNvUmVnZXguZXhlYyhzdHJpbmcpLFxuICAgICAgICAgICAgYWxsb3dUaW1lLCBkYXRlRm9ybWF0LCB0aW1lRm9ybWF0LCB0ekZvcm1hdDtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmlzbyA9IHRydWU7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IDAsIGwgPSBpc29EYXRlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNvRGF0ZXNbaV1bMV0uZXhlYyhtYXRjaFsxXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdCA9IGlzb0RhdGVzW2ldWzBdO1xuICAgICAgICAgICAgICAgICAgICBhbGxvd1RpbWUgPSBpc29EYXRlc1tpXVsyXSAhPT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRlRm9ybWF0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25maWcuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobWF0Y2hbM10pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwLCBsID0gaXNvVGltZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc29UaW1lc1tpXVsxXS5leGVjKG1hdGNoWzNdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2hbMl0gc2hvdWxkIGJlICdUJyBvciBzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZUZvcm1hdCA9IChtYXRjaFsyXSB8fCAnICcpICsgaXNvVGltZXNbaV1bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGltZUZvcm1hdCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhbGxvd1RpbWUgJiYgdGltZUZvcm1hdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoWzRdKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR6UmVnZXguZXhlYyhtYXRjaFs0XSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHpGb3JtYXQgPSAnWic7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25maWcuX2YgPSBkYXRlRm9ybWF0ICsgKHRpbWVGb3JtYXQgfHwgJycpICsgKHR6Rm9ybWF0IHx8ICcnKTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy5faXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gUkZDIDI4MjIgcmVnZXg6IEZvciBkZXRhaWxzIHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjgyMiNzZWN0aW9uLTMuM1xuICAgIHZhciByZmMyODIyID0gL14oPzooTW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXR8U3VuKSw/XFxzKT8oXFxkezEsMn0pXFxzKEphbnxGZWJ8TWFyfEFwcnxNYXl8SnVufEp1bHxBdWd8U2VwfE9jdHxOb3Z8RGVjKVxccyhcXGR7Miw0fSlcXHMoXFxkXFxkKTooXFxkXFxkKSg/OjooXFxkXFxkKSk/XFxzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfChbKy1dXFxkezR9KSkkLztcblxuICAgIGZ1bmN0aW9uIGV4dHJhY3RGcm9tUkZDMjgyMlN0cmluZ3MoeWVhclN0ciwgbW9udGhTdHIsIGRheVN0ciwgaG91clN0ciwgbWludXRlU3RyLCBzZWNvbmRTdHIpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtcbiAgICAgICAgICAgIHVudHJ1bmNhdGVZZWFyKHllYXJTdHIpLFxuICAgICAgICAgICAgZGVmYXVsdExvY2FsZU1vbnRoc1Nob3J0LmluZGV4T2YobW9udGhTdHIpLFxuICAgICAgICAgICAgcGFyc2VJbnQoZGF5U3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChob3VyU3RyLCAxMCksXG4gICAgICAgICAgICBwYXJzZUludChtaW51dGVTdHIsIDEwKVxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChzZWNvbmRTdHIpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlSW50KHNlY29uZFN0ciwgMTApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdW50cnVuY2F0ZVllYXIoeWVhclN0cikge1xuICAgICAgICB2YXIgeWVhciA9IHBhcnNlSW50KHllYXJTdHIsIDEwKTtcbiAgICAgICAgaWYgKHllYXIgPD0gNDkpIHtcbiAgICAgICAgICAgIHJldHVybiAyMDAwICsgeWVhcjtcbiAgICAgICAgfSBlbHNlIGlmICh5ZWFyIDw9IDk5OSkge1xuICAgICAgICAgICAgcmV0dXJuIDE5MDAgKyB5ZWFyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5ZWFyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByZXByb2Nlc3NSRkMyODIyKHMpIHtcbiAgICAgICAgLy8gUmVtb3ZlIGNvbW1lbnRzIGFuZCBmb2xkaW5nIHdoaXRlc3BhY2UgYW5kIHJlcGxhY2UgbXVsdGlwbGUtc3BhY2VzIHdpdGggYSBzaW5nbGUgc3BhY2VcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXFwoW14pXSpcXCl8W1xcblxcdF0vZywgJyAnKS5yZXBsYWNlKC8oXFxzXFxzKykvZywgJyAnKS5yZXBsYWNlKC9eXFxzXFxzKi8sICcnKS5yZXBsYWNlKC9cXHNcXHMqJC8sICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja1dlZWtkYXkod2Vla2RheVN0ciwgcGFyc2VkSW5wdXQsIGNvbmZpZykge1xuICAgICAgICBpZiAod2Vla2RheVN0cikge1xuICAgICAgICAgICAgLy8gVE9ETzogUmVwbGFjZSB0aGUgdmFuaWxsYSBKUyBEYXRlIG9iamVjdCB3aXRoIGFuIGluZGVwZW50ZW50IGRheS1vZi13ZWVrIGNoZWNrLlxuICAgICAgICAgICAgdmFyIHdlZWtkYXlQcm92aWRlZCA9IGRlZmF1bHRMb2NhbGVXZWVrZGF5c1Nob3J0LmluZGV4T2Yod2Vla2RheVN0ciksXG4gICAgICAgICAgICAgICAgd2Vla2RheUFjdHVhbCA9IG5ldyBEYXRlKHBhcnNlZElucHV0WzBdLCBwYXJzZWRJbnB1dFsxXSwgcGFyc2VkSW5wdXRbMl0pLmdldERheSgpO1xuICAgICAgICAgICAgaWYgKHdlZWtkYXlQcm92aWRlZCAhPT0gd2Vla2RheUFjdHVhbCkge1xuICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLndlZWtkYXlNaXNtYXRjaCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBvYnNPZmZzZXRzID0ge1xuICAgICAgICBVVDogMCxcbiAgICAgICAgR01UOiAwLFxuICAgICAgICBFRFQ6IC00ICogNjAsXG4gICAgICAgIEVTVDogLTUgKiA2MCxcbiAgICAgICAgQ0RUOiAtNSAqIDYwLFxuICAgICAgICBDU1Q6IC02ICogNjAsXG4gICAgICAgIE1EVDogLTYgKiA2MCxcbiAgICAgICAgTVNUOiAtNyAqIDYwLFxuICAgICAgICBQRFQ6IC03ICogNjAsXG4gICAgICAgIFBTVDogLTggKiA2MFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBjYWxjdWxhdGVPZmZzZXQob2JzT2Zmc2V0LCBtaWxpdGFyeU9mZnNldCwgbnVtT2Zmc2V0KSB7XG4gICAgICAgIGlmIChvYnNPZmZzZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBvYnNPZmZzZXRzW29ic09mZnNldF07XG4gICAgICAgIH0gZWxzZSBpZiAobWlsaXRhcnlPZmZzZXQpIHtcbiAgICAgICAgICAgIC8vIHRoZSBvbmx5IGFsbG93ZWQgbWlsaXRhcnkgdHogaXMgWlxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgaG0gPSBwYXJzZUludChudW1PZmZzZXQsIDEwKTtcbiAgICAgICAgICAgIHZhciBtID0gaG0gJSAxMDAsIGggPSAoaG0gLSBtKSAvIDEwMDtcbiAgICAgICAgICAgIHJldHVybiBoICogNjAgKyBtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gZGF0ZSBhbmQgdGltZSBmcm9tIHJlZiAyODIyIGZvcm1hdFxuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZykge1xuICAgICAgICB2YXIgbWF0Y2ggPSByZmMyODIyLmV4ZWMocHJlcHJvY2Vzc1JGQzI4MjIoY29uZmlnLl9pKSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgdmFyIHBhcnNlZEFycmF5ID0gZXh0cmFjdEZyb21SRkMyODIyU3RyaW5ncyhtYXRjaFs0XSwgbWF0Y2hbM10sIG1hdGNoWzJdLCBtYXRjaFs1XSwgbWF0Y2hbNl0sIG1hdGNoWzddKTtcbiAgICAgICAgICAgIGlmICghY2hlY2tXZWVrZGF5KG1hdGNoWzFdLCBwYXJzZWRBcnJheSwgY29uZmlnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uZmlnLl9hID0gcGFyc2VkQXJyYXk7XG4gICAgICAgICAgICBjb25maWcuX3R6bSA9IGNhbGN1bGF0ZU9mZnNldChtYXRjaFs4XSwgbWF0Y2hbOV0sIG1hdGNoWzEwXSk7XG5cbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IGNyZWF0ZVVUQ0RhdGUuYXBwbHkobnVsbCwgY29uZmlnLl9hKTtcbiAgICAgICAgICAgIGNvbmZpZy5fZC5zZXRVVENNaW51dGVzKGNvbmZpZy5fZC5nZXRVVENNaW51dGVzKCkgLSBjb25maWcuX3R6bSk7XG5cbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnJmYzI4MjIgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gaXNvIGZvcm1hdCBvciBmYWxsYmFja1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmcoY29uZmlnKSB7XG4gICAgICAgIHZhciBtYXRjaGVkID0gYXNwTmV0SnNvblJlZ2V4LmV4ZWMoY29uZmlnLl9pKTtcblxuICAgICAgICBpZiAobWF0Y2hlZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoK21hdGNoZWRbMV0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICBpZiAoY29uZmlnLl9pc1ZhbGlkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgZGVsZXRlIGNvbmZpZy5faXNWYWxpZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0Zyb21SRkMyODIyKGNvbmZpZyk7XG4gICAgICAgIGlmIChjb25maWcuX2lzVmFsaWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBkZWxldGUgY29uZmlnLl9pc1ZhbGlkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmluYWwgYXR0ZW1wdCwgdXNlIElucHV0IEZhbGxiYWNrXG4gICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgfVxuXG4gICAgaG9va3MuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2sgPSBkZXByZWNhdGUoXG4gICAgICAgICd2YWx1ZSBwcm92aWRlZCBpcyBub3QgaW4gYSByZWNvZ25pemVkIFJGQzI4MjIgb3IgSVNPIGZvcm1hdC4gbW9tZW50IGNvbnN0cnVjdGlvbiBmYWxscyBiYWNrIHRvIGpzIERhdGUoKSwgJyArXG4gICAgICAgICd3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlICcgK1xuICAgICAgICAnZGlzY291cmFnZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhbiB1cGNvbWluZyBtYWpvciByZWxlYXNlLiBQbGVhc2UgcmVmZXIgdG8gJyArXG4gICAgICAgICdodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2pzLWRhdGUvIGZvciBtb3JlIGluZm8uJyxcbiAgICAgICAgZnVuY3Rpb24gKGNvbmZpZykge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoY29uZmlnLl9pICsgKGNvbmZpZy5fdXNlVVRDID8gJyBVVEMnIDogJycpKTtcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBjb25zdGFudCB0aGF0IHJlZmVycyB0byB0aGUgSVNPIHN0YW5kYXJkXG4gICAgaG9va3MuSVNPXzg2MDEgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIHRoZSBSRkMgMjgyMiBmb3JtXG4gICAgaG9va3MuUkZDXzI4MjIgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIGRhdGUgZnJvbSBzdHJpbmcgYW5kIGZvcm1hdCBzdHJpbmdcbiAgICBmdW5jdGlvbiBjb25maWdGcm9tU3RyaW5nQW5kRm9ybWF0KGNvbmZpZykge1xuICAgICAgICAvLyBUT0RPOiBNb3ZlIHRoaXMgdG8gYW5vdGhlciBwYXJ0IG9mIHRoZSBjcmVhdGlvbiBmbG93IHRvIHByZXZlbnQgY2lyY3VsYXIgZGVwc1xuICAgICAgICBpZiAoY29uZmlnLl9mID09PSBob29rcy5JU09fODYwMSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbUlTTyhjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb25maWcuX2YgPT09IGhvb2tzLlJGQ18yODIyKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tUkZDMjgyMihjb25maWcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZy5fYSA9IFtdO1xuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IHRydWU7XG5cbiAgICAgICAgLy8gVGhpcyBhcnJheSBpcyB1c2VkIHRvIG1ha2UgYSBEYXRlLCBlaXRoZXIgd2l0aCBgbmV3IERhdGVgIG9yIGBEYXRlLlVUQ2BcbiAgICAgICAgdmFyIHN0cmluZyA9ICcnICsgY29uZmlnLl9pLFxuICAgICAgICAgICAgaSwgcGFyc2VkSW5wdXQsIHRva2VucywgdG9rZW4sIHNraXBwZWQsXG4gICAgICAgICAgICBzdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuICAgICAgICAgICAgdG90YWxQYXJzZWRJbnB1dExlbmd0aCA9IDA7XG5cbiAgICAgICAgdG9rZW5zID0gZXhwYW5kRm9ybWF0KGNvbmZpZy5fZiwgY29uZmlnLl9sb2NhbGUpLm1hdGNoKGZvcm1hdHRpbmdUb2tlbnMpIHx8IFtdO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgcGFyc2VkSW5wdXQgPSAoc3RyaW5nLm1hdGNoKGdldFBhcnNlUmVnZXhGb3JUb2tlbih0b2tlbiwgY29uZmlnKSkgfHwgW10pWzBdO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3Rva2VuJywgdG9rZW4sICdwYXJzZWRJbnB1dCcsIHBhcnNlZElucHV0LFxuICAgICAgICAgICAgLy8gICAgICAgICAncmVnZXgnLCBnZXRQYXJzZVJlZ2V4Rm9yVG9rZW4odG9rZW4sIGNvbmZpZykpO1xuICAgICAgICAgICAgaWYgKHBhcnNlZElucHV0KSB7XG4gICAgICAgICAgICAgICAgc2tpcHBlZCA9IHN0cmluZy5zdWJzdHIoMCwgc3RyaW5nLmluZGV4T2YocGFyc2VkSW5wdXQpKTtcbiAgICAgICAgICAgICAgICBpZiAoc2tpcHBlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc2tpcHBlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0cmluZyA9IHN0cmluZy5zbGljZShzdHJpbmcuaW5kZXhPZihwYXJzZWRJbnB1dCkgKyBwYXJzZWRJbnB1dC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRvdGFsUGFyc2VkSW5wdXRMZW5ndGggKz0gcGFyc2VkSW5wdXQubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZG9uJ3QgcGFyc2UgaWYgaXQncyBub3QgYSBrbm93biB0b2tlblxuICAgICAgICAgICAgaWYgKGZvcm1hdFRva2VuRnVuY3Rpb25zW3Rva2VuXSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJzZWRJbnB1dCkge1xuICAgICAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5lbXB0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKGNvbmZpZykudW51c2VkVG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZGRUaW1lVG9BcnJheUZyb21Ub2tlbih0b2tlbiwgcGFyc2VkSW5wdXQsIGNvbmZpZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb25maWcuX3N0cmljdCAmJiAhcGFyc2VkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS51bnVzZWRUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhZGQgcmVtYWluaW5nIHVucGFyc2VkIGlucHV0IGxlbmd0aCB0byB0aGUgc3RyaW5nXG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmNoYXJzTGVmdE92ZXIgPSBzdHJpbmdMZW5ndGggLSB0b3RhbFBhcnNlZElucHV0TGVuZ3RoO1xuICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLnVudXNlZElucHV0LnB1c2goc3RyaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNsZWFyIF8xMmggZmxhZyBpZiBob3VyIGlzIDw9IDEyXG4gICAgICAgIGlmIChjb25maWcuX2FbSE9VUl0gPD0gMTIgJiZcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPT09IHRydWUgJiZcbiAgICAgICAgICAgIGNvbmZpZy5fYVtIT1VSXSA+IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmJpZ0hvdXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBnZXRQYXJzaW5nRmxhZ3MoY29uZmlnKS5wYXJzZWREYXRlUGFydHMgPSBjb25maWcuX2Euc2xpY2UoMCk7XG4gICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLm1lcmlkaWVtID0gY29uZmlnLl9tZXJpZGllbTtcbiAgICAgICAgLy8gaGFuZGxlIG1lcmlkaWVtXG4gICAgICAgIGNvbmZpZy5fYVtIT1VSXSA9IG1lcmlkaWVtRml4V3JhcChjb25maWcuX2xvY2FsZSwgY29uZmlnLl9hW0hPVVJdLCBjb25maWcuX21lcmlkaWVtKTtcblxuICAgICAgICBjb25maWdGcm9tQXJyYXkoY29uZmlnKTtcbiAgICAgICAgY2hlY2tPdmVyZmxvdyhjb25maWcpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gbWVyaWRpZW1GaXhXcmFwIChsb2NhbGUsIGhvdXIsIG1lcmlkaWVtKSB7XG4gICAgICAgIHZhciBpc1BtO1xuXG4gICAgICAgIGlmIChtZXJpZGllbSA9PSBudWxsKSB7XG4gICAgICAgICAgICAvLyBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlLm1lcmlkaWVtSG91ciAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLm1lcmlkaWVtSG91cihob3VyLCBtZXJpZGllbSk7XG4gICAgICAgIH0gZWxzZSBpZiAobG9jYWxlLmlzUE0gIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gRmFsbGJhY2tcbiAgICAgICAgICAgIGlzUG0gPSBsb2NhbGUuaXNQTShtZXJpZGllbSk7XG4gICAgICAgICAgICBpZiAoaXNQbSAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgICAgICBob3VyICs9IDEyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1BtICYmIGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgbm90IHN1cHBvc2VkIHRvIGhhcHBlblxuICAgICAgICAgICAgcmV0dXJuIGhvdXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBkYXRlIGZyb20gc3RyaW5nIGFuZCBhcnJheSBvZiBmb3JtYXQgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGNvbmZpZ0Zyb21TdHJpbmdBbmRBcnJheShjb25maWcpIHtcbiAgICAgICAgdmFyIHRlbXBDb25maWcsXG4gICAgICAgICAgICBiZXN0TW9tZW50LFxuXG4gICAgICAgICAgICBzY29yZVRvQmVhdCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICBjdXJyZW50U2NvcmU7XG5cbiAgICAgICAgaWYgKGNvbmZpZy5fZi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGdldFBhcnNpbmdGbGFncyhjb25maWcpLmludmFsaWRGb3JtYXQgPSB0cnVlO1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoTmFOKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb25maWcuX2YubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGN1cnJlbnRTY29yZSA9IDA7XG4gICAgICAgICAgICB0ZW1wQ29uZmlnID0gY29weUNvbmZpZyh7fSwgY29uZmlnKTtcbiAgICAgICAgICAgIGlmIChjb25maWcuX3VzZVVUQyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGVtcENvbmZpZy5fdXNlVVRDID0gY29uZmlnLl91c2VVVEM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ZW1wQ29uZmlnLl9mID0gY29uZmlnLl9mW2ldO1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZ0FuZEZvcm1hdCh0ZW1wQ29uZmlnKTtcblxuICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKHRlbXBDb25maWcpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlzIGFueSBpbnB1dCB0aGF0IHdhcyBub3QgcGFyc2VkIGFkZCBhIHBlbmFsdHkgZm9yIHRoYXQgZm9ybWF0XG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLmNoYXJzTGVmdE92ZXI7XG5cbiAgICAgICAgICAgIC8vb3IgdG9rZW5zXG4gICAgICAgICAgICBjdXJyZW50U2NvcmUgKz0gZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnVudXNlZFRva2Vucy5sZW5ndGggKiAxMDtcblxuICAgICAgICAgICAgZ2V0UGFyc2luZ0ZsYWdzKHRlbXBDb25maWcpLnNjb3JlID0gY3VycmVudFNjb3JlO1xuXG4gICAgICAgICAgICBpZiAoc2NvcmVUb0JlYXQgPT0gbnVsbCB8fCBjdXJyZW50U2NvcmUgPCBzY29yZVRvQmVhdCkge1xuICAgICAgICAgICAgICAgIHNjb3JlVG9CZWF0ID0gY3VycmVudFNjb3JlO1xuICAgICAgICAgICAgICAgIGJlc3RNb21lbnQgPSB0ZW1wQ29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZXh0ZW5kKGNvbmZpZywgYmVzdE1vbWVudCB8fCB0ZW1wQ29uZmlnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tT2JqZWN0KGNvbmZpZykge1xuICAgICAgICBpZiAoY29uZmlnLl9kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSA9IG5vcm1hbGl6ZU9iamVjdFVuaXRzKGNvbmZpZy5faSk7XG4gICAgICAgIGNvbmZpZy5fYSA9IG1hcChbaS55ZWFyLCBpLm1vbnRoLCBpLmRheSB8fCBpLmRhdGUsIGkuaG91ciwgaS5taW51dGUsIGkuc2Vjb25kLCBpLm1pbGxpc2Vjb25kXSwgZnVuY3Rpb24gKG9iaikge1xuICAgICAgICAgICAgcmV0dXJuIG9iaiAmJiBwYXJzZUludChvYmosIDEwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uZmlnRnJvbUFycmF5KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlRnJvbUNvbmZpZyAoY29uZmlnKSB7XG4gICAgICAgIHZhciByZXMgPSBuZXcgTW9tZW50KGNoZWNrT3ZlcmZsb3cocHJlcGFyZUNvbmZpZyhjb25maWcpKSk7XG4gICAgICAgIGlmIChyZXMuX25leHREYXkpIHtcbiAgICAgICAgICAgIC8vIEFkZGluZyBpcyBzbWFydCBlbm91Z2ggYXJvdW5kIERTVFxuICAgICAgICAgICAgcmVzLmFkZCgxLCAnZCcpO1xuICAgICAgICAgICAgcmVzLl9uZXh0RGF5ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVwYXJlQ29uZmlnIChjb25maWcpIHtcbiAgICAgICAgdmFyIGlucHV0ID0gY29uZmlnLl9pLFxuICAgICAgICAgICAgZm9ybWF0ID0gY29uZmlnLl9mO1xuXG4gICAgICAgIGNvbmZpZy5fbG9jYWxlID0gY29uZmlnLl9sb2NhbGUgfHwgZ2V0TG9jYWxlKGNvbmZpZy5fbCk7XG5cbiAgICAgICAgaWYgKGlucHV0ID09PSBudWxsIHx8IChmb3JtYXQgPT09IHVuZGVmaW5lZCAmJiBpbnB1dCA9PT0gJycpKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCh7bnVsbElucHV0OiB0cnVlfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnLl9pID0gaW5wdXQgPSBjb25maWcuX2xvY2FsZS5wcmVwYXJzZShpbnB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNNb21lbnQoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1vbWVudChjaGVja092ZXJmbG93KGlucHV0KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEYXRlKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gaW5wdXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShmb3JtYXQpKSB7XG4gICAgICAgICAgICBjb25maWdGcm9tU3RyaW5nQW5kQXJyYXkoY29uZmlnKTtcbiAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21TdHJpbmdBbmRGb3JtYXQoY29uZmlnKTtcbiAgICAgICAgfSAgZWxzZSB7XG4gICAgICAgICAgICBjb25maWdGcm9tSW5wdXQoY29uZmlnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNWYWxpZChjb25maWcpKSB7XG4gICAgICAgICAgICBjb25maWcuX2QgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb25maWdGcm9tSW5wdXQoY29uZmlnKSB7XG4gICAgICAgIHZhciBpbnB1dCA9IGNvbmZpZy5faTtcbiAgICAgICAgaWYgKGlzVW5kZWZpbmVkKGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUoaG9va3Mubm93KCkpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShpbnB1dCkpIHtcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0LnZhbHVlT2YoKSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uZmlnRnJvbVN0cmluZyhjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICAgICAgICBjb25maWcuX2EgPSBtYXAoaW5wdXQuc2xpY2UoMCksIGZ1bmN0aW9uIChvYmopIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VJbnQob2JqLCAxMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbmZpZ0Zyb21BcnJheShjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgY29uZmlnRnJvbU9iamVjdChjb25maWcpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgLy8gZnJvbSBtaWxsaXNlY29uZHNcbiAgICAgICAgICAgIGNvbmZpZy5fZCA9IG5ldyBEYXRlKGlucHV0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGhvb2tzLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVMb2NhbE9yVVRDIChpbnB1dCwgZm9ybWF0LCBsb2NhbGUsIHN0cmljdCwgaXNVVEMpIHtcbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBpZiAobG9jYWxlID09PSB0cnVlIHx8IGxvY2FsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHN0cmljdCA9IGxvY2FsZTtcbiAgICAgICAgICAgIGxvY2FsZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoaXNPYmplY3QoaW5wdXQpICYmIGlzT2JqZWN0RW1wdHkoaW5wdXQpKSB8fFxuICAgICAgICAgICAgICAgIChpc0FycmF5KGlucHV0KSAmJiBpbnB1dC5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICBpbnB1dCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvLyBvYmplY3QgY29uc3RydWN0aW9uIG11c3QgYmUgZG9uZSB0aGlzIHdheS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE0MjNcbiAgICAgICAgYy5faXNBTW9tZW50T2JqZWN0ID0gdHJ1ZTtcbiAgICAgICAgYy5fdXNlVVRDID0gYy5faXNVVEMgPSBpc1VUQztcbiAgICAgICAgYy5fbCA9IGxvY2FsZTtcbiAgICAgICAgYy5faSA9IGlucHV0O1xuICAgICAgICBjLl9mID0gZm9ybWF0O1xuICAgICAgICBjLl9zdHJpY3QgPSBzdHJpY3Q7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUZyb21Db25maWcoYyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlTG9jYWwgKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0KSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVMb2NhbE9yVVRDKGlucHV0LCBmb3JtYXQsIGxvY2FsZSwgc3RyaWN0LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgdmFyIHByb3RvdHlwZU1pbiA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1heCBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvJyxcbiAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPCB0aGlzID8gdGhpcyA6IG90aGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlSW52YWxpZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgKTtcblxuICAgIHZhciBwcm90b3R5cGVNYXggPSBkZXByZWNhdGUoXG4gICAgICAgICdtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5taW4gaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LycsXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUxvY2FsLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKCkgJiYgb3RoZXIuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID4gdGhpcyA/IHRoaXMgOiBvdGhlcjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUludmFsaWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICAvLyBQaWNrIGEgbW9tZW50IG0gZnJvbSBtb21lbnRzIHNvIHRoYXQgbVtmbl0ob3RoZXIpIGlzIHRydWUgZm9yIGFsbFxuICAgIC8vIG90aGVyLiBUaGlzIHJlbGllcyBvbiB0aGUgZnVuY3Rpb24gZm4gdG8gYmUgdHJhbnNpdGl2ZS5cbiAgICAvL1xuICAgIC8vIG1vbWVudHMgc2hvdWxkIGVpdGhlciBiZSBhbiBhcnJheSBvZiBtb21lbnQgb2JqZWN0cyBvciBhbiBhcnJheSwgd2hvc2VcbiAgICAvLyBmaXJzdCBlbGVtZW50IGlzIGFuIGFycmF5IG9mIG1vbWVudCBvYmplY3RzLlxuICAgIGZ1bmN0aW9uIHBpY2tCeShmbiwgbW9tZW50cykge1xuICAgICAgICB2YXIgcmVzLCBpO1xuICAgICAgICBpZiAobW9tZW50cy5sZW5ndGggPT09IDEgJiYgaXNBcnJheShtb21lbnRzWzBdKSkge1xuICAgICAgICAgICAgbW9tZW50cyA9IG1vbWVudHNbMF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtb21lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxvY2FsKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzID0gbW9tZW50c1swXTtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IG1vbWVudHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmICghbW9tZW50c1tpXS5pc1ZhbGlkKCkgfHwgbW9tZW50c1tpXVtmbl0ocmVzKSkge1xuICAgICAgICAgICAgICAgIHJlcyA9IG1vbWVudHNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiBVc2UgW10uc29ydCBpbnN0ZWFkP1xuICAgIGZ1bmN0aW9uIG1pbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDApO1xuXG4gICAgICAgIHJldHVybiBwaWNrQnkoJ2lzQmVmb3JlJywgYXJncyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF4ICgpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG5cbiAgICAgICAgcmV0dXJuIHBpY2tCeSgnaXNBZnRlcicsIGFyZ3MpO1xuICAgIH1cblxuICAgIHZhciBub3cgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdyA/IERhdGUubm93KCkgOiArKG5ldyBEYXRlKCkpO1xuICAgIH07XG5cbiAgICB2YXIgb3JkZXJpbmcgPSBbJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLCAnbWlsbGlzZWNvbmQnXTtcblxuICAgIGZ1bmN0aW9uIGlzRHVyYXRpb25WYWxpZChtKSB7XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBtKSB7XG4gICAgICAgICAgICBpZiAoIShpbmRleE9mLmNhbGwob3JkZXJpbmcsIGtleSkgIT09IC0xICYmIChtW2tleV0gPT0gbnVsbCB8fCAhaXNOYU4obVtrZXldKSkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHVuaXRIYXNEZWNpbWFsID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3JkZXJpbmcubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgIGlmIChtW29yZGVyaW5nW2ldXSkge1xuICAgICAgICAgICAgICAgIGlmICh1bml0SGFzRGVjaW1hbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG9ubHkgYWxsb3cgbm9uLWludGVnZXJzIGZvciBzbWFsbGVzdCB1bml0XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUZsb2F0KG1bb3JkZXJpbmdbaV1dKSAhPT0gdG9JbnQobVtvcmRlcmluZ1tpXV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaXRIYXNEZWNpbWFsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1ZhbGlkJDEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUludmFsaWQkMSgpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKE5hTik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gRHVyYXRpb24gKGR1cmF0aW9uKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkSW5wdXQgPSBub3JtYWxpemVPYmplY3RVbml0cyhkdXJhdGlvbiksXG4gICAgICAgICAgICB5ZWFycyA9IG5vcm1hbGl6ZWRJbnB1dC55ZWFyIHx8IDAsXG4gICAgICAgICAgICBxdWFydGVycyA9IG5vcm1hbGl6ZWRJbnB1dC5xdWFydGVyIHx8IDAsXG4gICAgICAgICAgICBtb250aHMgPSBub3JtYWxpemVkSW5wdXQubW9udGggfHwgMCxcbiAgICAgICAgICAgIHdlZWtzID0gbm9ybWFsaXplZElucHV0LndlZWsgfHwgMCxcbiAgICAgICAgICAgIGRheXMgPSBub3JtYWxpemVkSW5wdXQuZGF5IHx8IDAsXG4gICAgICAgICAgICBob3VycyA9IG5vcm1hbGl6ZWRJbnB1dC5ob3VyIHx8IDAsXG4gICAgICAgICAgICBtaW51dGVzID0gbm9ybWFsaXplZElucHV0Lm1pbnV0ZSB8fCAwLFxuICAgICAgICAgICAgc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5zZWNvbmQgfHwgMCxcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyA9IG5vcm1hbGl6ZWRJbnB1dC5taWxsaXNlY29uZCB8fCAwO1xuXG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSBpc0R1cmF0aW9uVmFsaWQobm9ybWFsaXplZElucHV0KTtcblxuICAgICAgICAvLyByZXByZXNlbnRhdGlvbiBmb3IgZGF0ZUFkZFJlbW92ZVxuICAgICAgICB0aGlzLl9taWxsaXNlY29uZHMgPSArbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHNlY29uZHMgKiAxZTMgKyAvLyAxMDAwXG4gICAgICAgICAgICBtaW51dGVzICogNmU0ICsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBob3VycyAqIDEwMDAgKiA2MCAqIDYwOyAvL3VzaW5nIDEwMDAgKiA2MCAqIDYwIGluc3RlYWQgb2YgMzZlNSB0byBhdm9pZCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBlcnJvcnMgaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzI5NzhcbiAgICAgICAgLy8gQmVjYXVzZSBvZiBkYXRlQWRkUmVtb3ZlIHRyZWF0cyAyNCBob3VycyBhcyBkaWZmZXJlbnQgZnJvbSBhXG4gICAgICAgIC8vIGRheSB3aGVuIHdvcmtpbmcgYXJvdW5kIERTVCwgd2UgbmVlZCB0byBzdG9yZSB0aGVtIHNlcGFyYXRlbHlcbiAgICAgICAgdGhpcy5fZGF5cyA9ICtkYXlzICtcbiAgICAgICAgICAgIHdlZWtzICogNztcbiAgICAgICAgLy8gSXQgaXMgaW1wb3NzaWJsZSB0byB0cmFuc2xhdGUgbW9udGhzIGludG8gZGF5cyB3aXRob3V0IGtub3dpbmdcbiAgICAgICAgLy8gd2hpY2ggbW9udGhzIHlvdSBhcmUgYXJlIHRhbGtpbmcgYWJvdXQsIHNvIHdlIGhhdmUgdG8gc3RvcmVcbiAgICAgICAgLy8gaXQgc2VwYXJhdGVseS5cbiAgICAgICAgdGhpcy5fbW9udGhzID0gK21vbnRocyArXG4gICAgICAgICAgICBxdWFydGVycyAqIDMgK1xuICAgICAgICAgICAgeWVhcnMgKiAxMjtcblxuICAgICAgICB0aGlzLl9kYXRhID0ge307XG5cbiAgICAgICAgdGhpcy5fbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG5cbiAgICAgICAgdGhpcy5fYnViYmxlKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEdXJhdGlvbiAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBEdXJhdGlvbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhYnNSb3VuZCAobnVtYmVyKSB7XG4gICAgICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgtMSAqIG51bWJlcikgKiAtMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBmdW5jdGlvbiBvZmZzZXQgKHRva2VuLCBzZXBhcmF0b3IpIHtcbiAgICAgICAgYWRkRm9ybWF0VG9rZW4odG9rZW4sIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLnV0Y09mZnNldCgpO1xuICAgICAgICAgICAgdmFyIHNpZ24gPSAnKyc7XG4gICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCkge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IC1vZmZzZXQ7XG4gICAgICAgICAgICAgICAgc2lnbiA9ICctJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaWduICsgemVyb0ZpbGwofn4ob2Zmc2V0IC8gNjApLCAyKSArIHNlcGFyYXRvciArIHplcm9GaWxsKH5+KG9mZnNldCkgJSA2MCwgMik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9mZnNldCgnWicsICc6Jyk7XG4gICAgb2Zmc2V0KCdaWicsICcnKTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1onLCAgbWF0Y2hTaG9ydE9mZnNldCk7XG4gICAgYWRkUmVnZXhUb2tlbignWlonLCBtYXRjaFNob3J0T2Zmc2V0KTtcbiAgICBhZGRQYXJzZVRva2VuKFsnWicsICdaWiddLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl91c2VVVEMgPSB0cnVlO1xuICAgICAgICBjb25maWcuX3R6bSA9IG9mZnNldEZyb21TdHJpbmcobWF0Y2hTaG9ydE9mZnNldCwgaW5wdXQpO1xuICAgIH0pO1xuXG4gICAgLy8gSEVMUEVSU1xuXG4gICAgLy8gdGltZXpvbmUgY2h1bmtlclxuICAgIC8vICcrMTA6MDAnID4gWycxMCcsICAnMDAnXVxuICAgIC8vICctMTUzMCcgID4gWyctMTUnLCAnMzAnXVxuICAgIHZhciBjaHVua09mZnNldCA9IC8oW1xcK1xcLV18XFxkXFxkKS9naTtcblxuICAgIGZ1bmN0aW9uIG9mZnNldEZyb21TdHJpbmcobWF0Y2hlciwgc3RyaW5nKSB7XG4gICAgICAgIHZhciBtYXRjaGVzID0gKHN0cmluZyB8fCAnJykubWF0Y2gobWF0Y2hlcik7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNodW5rICAgPSBtYXRjaGVzW21hdGNoZXMubGVuZ3RoIC0gMV0gfHwgW107XG4gICAgICAgIHZhciBwYXJ0cyAgID0gKGNodW5rICsgJycpLm1hdGNoKGNodW5rT2Zmc2V0KSB8fCBbJy0nLCAwLCAwXTtcbiAgICAgICAgdmFyIG1pbnV0ZXMgPSArKHBhcnRzWzFdICogNjApICsgdG9JbnQocGFydHNbMl0pO1xuXG4gICAgICAgIHJldHVybiBtaW51dGVzID09PSAwID9cbiAgICAgICAgICAwIDpcbiAgICAgICAgICBwYXJ0c1swXSA9PT0gJysnID8gbWludXRlcyA6IC1taW51dGVzO1xuICAgIH1cblxuICAgIC8vIFJldHVybiBhIG1vbWVudCBmcm9tIGlucHV0LCB0aGF0IGlzIGxvY2FsL3V0Yy96b25lIGVxdWl2YWxlbnQgdG8gbW9kZWwuXG4gICAgZnVuY3Rpb24gY2xvbmVXaXRoT2Zmc2V0KGlucHV0LCBtb2RlbCkge1xuICAgICAgICB2YXIgcmVzLCBkaWZmO1xuICAgICAgICBpZiAobW9kZWwuX2lzVVRDKSB7XG4gICAgICAgICAgICByZXMgPSBtb2RlbC5jbG9uZSgpO1xuICAgICAgICAgICAgZGlmZiA9IChpc01vbWVudChpbnB1dCkgfHwgaXNEYXRlKGlucHV0KSA/IGlucHV0LnZhbHVlT2YoKSA6IGNyZWF0ZUxvY2FsKGlucHV0KS52YWx1ZU9mKCkpIC0gcmVzLnZhbHVlT2YoKTtcbiAgICAgICAgICAgIC8vIFVzZSBsb3ctbGV2ZWwgYXBpLCBiZWNhdXNlIHRoaXMgZm4gaXMgbG93LWxldmVsIGFwaS5cbiAgICAgICAgICAgIHJlcy5fZC5zZXRUaW1lKHJlcy5fZC52YWx1ZU9mKCkgKyBkaWZmKTtcbiAgICAgICAgICAgIGhvb2tzLnVwZGF0ZU9mZnNldChyZXMsIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQpLmxvY2FsKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREYXRlT2Zmc2V0IChtKSB7XG4gICAgICAgIC8vIE9uIEZpcmVmb3guMjQgRGF0ZSNnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIGEgZmxvYXRpbmcgcG9pbnQuXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50L3B1bGwvMTg3MVxuICAgICAgICByZXR1cm4gLU1hdGgucm91bmQobS5fZC5nZXRUaW1lem9uZU9mZnNldCgpIC8gMTUpICogMTU7XG4gICAgfVxuXG4gICAgLy8gSE9PS1NcblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBtb21lbnQgaXMgbXV0YXRlZC5cbiAgICAvLyBJdCBpcyBpbnRlbmRlZCB0byBrZWVwIHRoZSBvZmZzZXQgaW4gc3luYyB3aXRoIHRoZSB0aW1lem9uZS5cbiAgICBob29rcy51cGRhdGVPZmZzZXQgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIC8vIGtlZXBMb2NhbFRpbWUgPSB0cnVlIG1lYW5zIG9ubHkgY2hhbmdlIHRoZSB0aW1lem9uZSwgd2l0aG91dFxuICAgIC8vIGFmZmVjdGluZyB0aGUgbG9jYWwgaG91ci4gU28gNTozMToyNiArMDMwMCAtLVt1dGNPZmZzZXQoMiwgdHJ1ZSldLS0+XG4gICAgLy8gNTozMToyNiArMDIwMCBJdCBpcyBwb3NzaWJsZSB0aGF0IDU6MzE6MjYgZG9lc24ndCBleGlzdCB3aXRoIG9mZnNldFxuICAgIC8vICswMjAwLCBzbyB3ZSBhZGp1c3QgdGhlIHRpbWUgYXMgbmVlZGVkLCB0byBiZSB2YWxpZC5cbiAgICAvL1xuICAgIC8vIEtlZXBpbmcgdGhlIHRpbWUgYWN0dWFsbHkgYWRkcy9zdWJ0cmFjdHMgKG9uZSBob3VyKVxuICAgIC8vIGZyb20gdGhlIGFjdHVhbCByZXByZXNlbnRlZCB0aW1lLiBUaGF0IGlzIHdoeSB3ZSBjYWxsIHVwZGF0ZU9mZnNldFxuICAgIC8vIGEgc2Vjb25kIHRpbWUuIEluIGNhc2UgaXQgd2FudHMgdXMgdG8gY2hhbmdlIHRoZSBvZmZzZXQgYWdhaW5cbiAgICAvLyBfY2hhbmdlSW5Qcm9ncmVzcyA9PSB0cnVlIGNhc2UsIHRoZW4gd2UgaGF2ZSB0byBhZGp1c3QsIGJlY2F1c2VcbiAgICAvLyB0aGVyZSBpcyBubyBzdWNoIHRpbWUgaW4gdGhlIGdpdmVuIHRpbWV6b25lLlxuICAgIGZ1bmN0aW9uIGdldFNldE9mZnNldCAoaW5wdXQsIGtlZXBMb2NhbFRpbWUsIGtlZXBNaW51dGVzKSB7XG4gICAgICAgIHZhciBvZmZzZXQgPSB0aGlzLl9vZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIGxvY2FsQWRqdXN0O1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5wdXQgIT0gbnVsbCA/IHRoaXMgOiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoU2hvcnRPZmZzZXQsIGlucHV0KTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChNYXRoLmFicyhpbnB1dCkgPCAxNiAmJiAha2VlcE1pbnV0ZXMpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0ICogNjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzVVRDICYmIGtlZXBMb2NhbFRpbWUpIHtcbiAgICAgICAgICAgICAgICBsb2NhbEFkanVzdCA9IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vZmZzZXQgPSBpbnB1dDtcbiAgICAgICAgICAgIHRoaXMuX2lzVVRDID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChsb2NhbEFkanVzdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGQobG9jYWxBZGp1c3QsICdtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBpbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmICgha2VlcExvY2FsVGltZSB8fCB0aGlzLl9jaGFuZ2VJblByb2dyZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZFN1YnRyYWN0KHRoaXMsIGNyZWF0ZUR1cmF0aW9uKGlucHV0IC0gb2Zmc2V0LCAnbScpLCAxLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KHRoaXMsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VJblByb2dyZXNzID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/IG9mZnNldCA6IGdldERhdGVPZmZzZXQodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRab25lIChpbnB1dCwga2VlcExvY2FsVGltZSkge1xuICAgICAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBpbnB1dCA9IC1pbnB1dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoaW5wdXQsIGtlZXBMb2NhbFRpbWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAtdGhpcy51dGNPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldE9mZnNldFRvVVRDIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnV0Y09mZnNldCgwLCBrZWVwTG9jYWxUaW1lKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb0xvY2FsIChrZWVwTG9jYWxUaW1lKSB7XG4gICAgICAgIGlmICh0aGlzLl9pc1VUQykge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwga2VlcExvY2FsVGltZSk7XG4gICAgICAgICAgICB0aGlzLl9pc1VUQyA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoa2VlcExvY2FsVGltZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3VidHJhY3QoZ2V0RGF0ZU9mZnNldCh0aGlzKSwgJ20nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldCAoKSB7XG4gICAgICAgIGlmICh0aGlzLl90em0gIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodGhpcy5fdHptLCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX2kgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YXIgdFpvbmUgPSBvZmZzZXRGcm9tU3RyaW5nKG1hdGNoT2Zmc2V0LCB0aGlzLl9pKTtcbiAgICAgICAgICAgIGlmICh0Wm9uZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQodFpvbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy51dGNPZmZzZXQoMCwgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzQWxpZ25lZEhvdXJPZmZzZXQgKGlucHV0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dCA9IGlucHV0ID8gY3JlYXRlTG9jYWwoaW5wdXQpLnV0Y09mZnNldCgpIDogMDtcblxuICAgICAgICByZXR1cm4gKHRoaXMudXRjT2Zmc2V0KCkgLSBpbnB1dCkgJSA2MCA9PT0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RheWxpZ2h0U2F2aW5nVGltZSAoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpIHx8XG4gICAgICAgICAgICB0aGlzLnV0Y09mZnNldCgpID4gdGhpcy5jbG9uZSgpLm1vbnRoKDUpLnV0Y09mZnNldCgpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNEYXlsaWdodFNhdmluZ1RpbWVTaGlmdGVkICgpIHtcbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9pc0RTVFNoaWZ0ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faXNEU1RTaGlmdGVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGMgPSB7fTtcblxuICAgICAgICBjb3B5Q29uZmlnKGMsIHRoaXMpO1xuICAgICAgICBjID0gcHJlcGFyZUNvbmZpZyhjKTtcblxuICAgICAgICBpZiAoYy5fYSkge1xuICAgICAgICAgICAgdmFyIG90aGVyID0gYy5faXNVVEMgPyBjcmVhdGVVVEMoYy5fYSkgOiBjcmVhdGVMb2NhbChjLl9hKTtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgY29tcGFyZUFycmF5cyhjLl9hLCBvdGhlci50b0FycmF5KCkpID4gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lzRFNUU2hpZnRlZCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0xvY2FsICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gIXRoaXMuX2lzVVRDIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVdGNPZmZzZXQgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9pc1VUQyA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVXRjICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZCgpID8gdGhpcy5faXNVVEMgJiYgdGhpcy5fb2Zmc2V0ID09PSAwIDogZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQVNQLk5FVCBqc29uIGRhdGUgZm9ybWF0IHJlZ2V4XG4gICAgdmFyIGFzcE5ldFJlZ2V4ID0gL14oXFwtfFxcKyk/KD86KFxcZCopWy4gXSk/KFxcZCspXFw6KFxcZCspKD86XFw6KFxcZCspKFxcLlxcZCopPyk/JC87XG5cbiAgICAvLyBmcm9tIGh0dHA6Ly9kb2NzLmNsb3N1cmUtbGlicmFyeS5nb29nbGVjb2RlLmNvbS9naXQvY2xvc3VyZV9nb29nX2RhdGVfZGF0ZS5qcy5zb3VyY2UuaHRtbFxuICAgIC8vIHNvbWV3aGF0IG1vcmUgaW4gbGluZSB3aXRoIDQuNC4zLjIgMjAwNCBzcGVjLCBidXQgYWxsb3dzIGRlY2ltYWwgYW55d2hlcmVcbiAgICAvLyBhbmQgZnVydGhlciBtb2RpZmllZCB0byBhbGxvdyBmb3Igc3RyaW5ncyBjb250YWluaW5nIGJvdGggd2VlayBhbmQgZGF5XG4gICAgdmFyIGlzb1JlZ2V4ID0gL14oLXxcXCspP1AoPzooWy0rXT9bMC05LC5dKilZKT8oPzooWy0rXT9bMC05LC5dKilNKT8oPzooWy0rXT9bMC05LC5dKilXKT8oPzooWy0rXT9bMC05LC5dKilEKT8oPzpUKD86KFstK10/WzAtOSwuXSopSCk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopUyk/KT8kLztcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUR1cmF0aW9uIChpbnB1dCwga2V5KSB7XG4gICAgICAgIHZhciBkdXJhdGlvbiA9IGlucHV0LFxuICAgICAgICAgICAgLy8gbWF0Y2hpbmcgYWdhaW5zdCByZWdleHAgaXMgZXhwZW5zaXZlLCBkbyBpdCBvbiBkZW1hbmRcbiAgICAgICAgICAgIG1hdGNoID0gbnVsbCxcbiAgICAgICAgICAgIHNpZ24sXG4gICAgICAgICAgICByZXQsXG4gICAgICAgICAgICBkaWZmUmVzO1xuXG4gICAgICAgIGlmIChpc0R1cmF0aW9uKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgbXMgOiBpbnB1dC5fbWlsbGlzZWNvbmRzLFxuICAgICAgICAgICAgICAgIGQgIDogaW5wdXQuX2RheXMsXG4gICAgICAgICAgICAgICAgTSAgOiBpbnB1dC5fbW9udGhzXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGlucHV0KSkge1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7fTtcbiAgICAgICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbltrZXldID0gaW5wdXQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uLm1pbGxpc2Vjb25kcyA9IGlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gYXNwTmV0UmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAxO1xuICAgICAgICAgICAgZHVyYXRpb24gPSB7XG4gICAgICAgICAgICAgICAgeSAgOiAwLFxuICAgICAgICAgICAgICAgIGQgIDogdG9JbnQobWF0Y2hbREFURV0pICAgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBoICA6IHRvSW50KG1hdGNoW0hPVVJdKSAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpZ24sXG4gICAgICAgICAgICAgICAgbSAgOiB0b0ludChtYXRjaFtNSU5VVEVdKSAgICAgICAgICAgICAgICAgICAgICAgKiBzaWduLFxuICAgICAgICAgICAgICAgIHMgIDogdG9JbnQobWF0Y2hbU0VDT05EXSkgICAgICAgICAgICAgICAgICAgICAgICogc2lnbixcbiAgICAgICAgICAgICAgICBtcyA6IHRvSW50KGFic1JvdW5kKG1hdGNoW01JTExJU0VDT05EXSAqIDEwMDApKSAqIHNpZ24gLy8gdGhlIG1pbGxpc2Vjb25kIGRlY2ltYWwgcG9pbnQgaXMgaW5jbHVkZWQgaW4gdGhlIG1hdGNoXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKCEhKG1hdGNoID0gaXNvUmVnZXguZXhlYyhpbnB1dCkpKSB7XG4gICAgICAgICAgICBzaWduID0gKG1hdGNoWzFdID09PSAnLScpID8gLTEgOiAobWF0Y2hbMV0gPT09ICcrJykgPyAxIDogMTtcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge1xuICAgICAgICAgICAgICAgIHkgOiBwYXJzZUlzbyhtYXRjaFsyXSwgc2lnbiksXG4gICAgICAgICAgICAgICAgTSA6IHBhcnNlSXNvKG1hdGNoWzNdLCBzaWduKSxcbiAgICAgICAgICAgICAgICB3IDogcGFyc2VJc28obWF0Y2hbNF0sIHNpZ24pLFxuICAgICAgICAgICAgICAgIGQgOiBwYXJzZUlzbyhtYXRjaFs1XSwgc2lnbiksXG4gICAgICAgICAgICAgICAgaCA6IHBhcnNlSXNvKG1hdGNoWzZdLCBzaWduKSxcbiAgICAgICAgICAgICAgICBtIDogcGFyc2VJc28obWF0Y2hbN10sIHNpZ24pLFxuICAgICAgICAgICAgICAgIHMgOiBwYXJzZUlzbyhtYXRjaFs4XSwgc2lnbilcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoZHVyYXRpb24gPT0gbnVsbCkgey8vIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGR1cmF0aW9uID09PSAnb2JqZWN0JyAmJiAoJ2Zyb20nIGluIGR1cmF0aW9uIHx8ICd0bycgaW4gZHVyYXRpb24pKSB7XG4gICAgICAgICAgICBkaWZmUmVzID0gbW9tZW50c0RpZmZlcmVuY2UoY3JlYXRlTG9jYWwoZHVyYXRpb24uZnJvbSksIGNyZWF0ZUxvY2FsKGR1cmF0aW9uLnRvKSk7XG5cbiAgICAgICAgICAgIGR1cmF0aW9uID0ge307XG4gICAgICAgICAgICBkdXJhdGlvbi5tcyA9IGRpZmZSZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgZHVyYXRpb24uTSA9IGRpZmZSZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0ID0gbmV3IER1cmF0aW9uKGR1cmF0aW9uKTtcblxuICAgICAgICBpZiAoaXNEdXJhdGlvbihpbnB1dCkgJiYgaGFzT3duUHJvcChpbnB1dCwgJ19sb2NhbGUnKSkge1xuICAgICAgICAgICAgcmV0Ll9sb2NhbGUgPSBpbnB1dC5fbG9jYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBjcmVhdGVEdXJhdGlvbi5mbiA9IER1cmF0aW9uLnByb3RvdHlwZTtcbiAgICBjcmVhdGVEdXJhdGlvbi5pbnZhbGlkID0gY3JlYXRlSW52YWxpZCQxO1xuXG4gICAgZnVuY3Rpb24gcGFyc2VJc28gKGlucCwgc2lnbikge1xuICAgICAgICAvLyBXZSdkIG5vcm1hbGx5IHVzZSB+fmlucCBmb3IgdGhpcywgYnV0IHVuZm9ydHVuYXRlbHkgaXQgYWxzb1xuICAgICAgICAvLyBjb252ZXJ0cyBmbG9hdHMgdG8gaW50cy5cbiAgICAgICAgLy8gaW5wIG1heSBiZSB1bmRlZmluZWQsIHNvIGNhcmVmdWwgY2FsbGluZyByZXBsYWNlIG9uIGl0LlxuICAgICAgICB2YXIgcmVzID0gaW5wICYmIHBhcnNlRmxvYXQoaW5wLnJlcGxhY2UoJywnLCAnLicpKTtcbiAgICAgICAgLy8gYXBwbHkgc2lnbiB3aGlsZSB3ZSdyZSBhdCBpdFxuICAgICAgICByZXR1cm4gKGlzTmFOKHJlcykgPyAwIDogcmVzKSAqIHNpZ247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9zaXRpdmVNb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzID0ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwfTtcblxuICAgICAgICByZXMubW9udGhzID0gb3RoZXIubW9udGgoKSAtIGJhc2UubW9udGgoKSArXG4gICAgICAgICAgICAob3RoZXIueWVhcigpIC0gYmFzZS55ZWFyKCkpICogMTI7XG4gICAgICAgIGlmIChiYXNlLmNsb25lKCkuYWRkKHJlcy5tb250aHMsICdNJykuaXNBZnRlcihvdGhlcikpIHtcbiAgICAgICAgICAgIC0tcmVzLm1vbnRocztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5taWxsaXNlY29uZHMgPSArb3RoZXIgLSArKGJhc2UuY2xvbmUoKS5hZGQocmVzLm1vbnRocywgJ00nKSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb21lbnRzRGlmZmVyZW5jZShiYXNlLCBvdGhlcikge1xuICAgICAgICB2YXIgcmVzO1xuICAgICAgICBpZiAoIShiYXNlLmlzVmFsaWQoKSAmJiBvdGhlci5pc1ZhbGlkKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4ge21pbGxpc2Vjb25kczogMCwgbW9udGhzOiAwfTtcbiAgICAgICAgfVxuXG4gICAgICAgIG90aGVyID0gY2xvbmVXaXRoT2Zmc2V0KG90aGVyLCBiYXNlKTtcbiAgICAgICAgaWYgKGJhc2UuaXNCZWZvcmUob3RoZXIpKSB7XG4gICAgICAgICAgICByZXMgPSBwb3NpdGl2ZU1vbWVudHNEaWZmZXJlbmNlKGJhc2UsIG90aGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyA9IHBvc2l0aXZlTW9tZW50c0RpZmZlcmVuY2Uob3RoZXIsIGJhc2UpO1xuICAgICAgICAgICAgcmVzLm1pbGxpc2Vjb25kcyA9IC1yZXMubWlsbGlzZWNvbmRzO1xuICAgICAgICAgICAgcmVzLm1vbnRocyA9IC1yZXMubW9udGhzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICAvLyBUT0RPOiByZW1vdmUgJ25hbWUnIGFyZyBhZnRlciBkZXByZWNhdGlvbiBpcyByZW1vdmVkXG4gICAgZnVuY3Rpb24gY3JlYXRlQWRkZXIoZGlyZWN0aW9uLCBuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsLCBwZXJpb2QpIHtcbiAgICAgICAgICAgIHZhciBkdXIsIHRtcDtcbiAgICAgICAgICAgIC8vaW52ZXJ0IHRoZSBhcmd1bWVudHMsIGJ1dCBjb21wbGFpbiBhYm91dCBpdFxuICAgICAgICAgICAgaWYgKHBlcmlvZCAhPT0gbnVsbCAmJiAhaXNOYU4oK3BlcmlvZCkpIHtcbiAgICAgICAgICAgICAgICBkZXByZWNhdGVTaW1wbGUobmFtZSwgJ21vbWVudCgpLicgKyBuYW1lICArICcocGVyaW9kLCBudW1iZXIpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgbW9tZW50KCkuJyArIG5hbWUgKyAnKG51bWJlciwgcGVyaW9kKS4gJyArXG4gICAgICAgICAgICAgICAgJ1NlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4nKTtcbiAgICAgICAgICAgICAgICB0bXAgPSB2YWw7IHZhbCA9IHBlcmlvZDsgcGVyaW9kID0gdG1wO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YWwgPSB0eXBlb2YgdmFsID09PSAnc3RyaW5nJyA/ICt2YWwgOiB2YWw7XG4gICAgICAgICAgICBkdXIgPSBjcmVhdGVEdXJhdGlvbih2YWwsIHBlcmlvZCk7XG4gICAgICAgICAgICBhZGRTdWJ0cmFjdCh0aGlzLCBkdXIsIGRpcmVjdGlvbik7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRTdWJ0cmFjdCAobW9tLCBkdXJhdGlvbiwgaXNBZGRpbmcsIHVwZGF0ZU9mZnNldCkge1xuICAgICAgICB2YXIgbWlsbGlzZWNvbmRzID0gZHVyYXRpb24uX21pbGxpc2Vjb25kcyxcbiAgICAgICAgICAgIGRheXMgPSBhYnNSb3VuZChkdXJhdGlvbi5fZGF5cyksXG4gICAgICAgICAgICBtb250aHMgPSBhYnNSb3VuZChkdXJhdGlvbi5fbW9udGhzKTtcblxuICAgICAgICBpZiAoIW1vbS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIC8vIE5vIG9wXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVPZmZzZXQgPSB1cGRhdGVPZmZzZXQgPT0gbnVsbCA/IHRydWUgOiB1cGRhdGVPZmZzZXQ7XG5cbiAgICAgICAgaWYgKG1vbnRocykge1xuICAgICAgICAgICAgc2V0TW9udGgobW9tLCBnZXQobW9tLCAnTW9udGgnKSArIG1vbnRocyAqIGlzQWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF5cykge1xuICAgICAgICAgICAgc2V0JDEobW9tLCAnRGF0ZScsIGdldChtb20sICdEYXRlJykgKyBkYXlzICogaXNBZGRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgICAgIG1vbS5fZC5zZXRUaW1lKG1vbS5fZC52YWx1ZU9mKCkgKyBtaWxsaXNlY29uZHMgKiBpc0FkZGluZyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVwZGF0ZU9mZnNldCkge1xuICAgICAgICAgICAgaG9va3MudXBkYXRlT2Zmc2V0KG1vbSwgZGF5cyB8fCBtb250aHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFkZCAgICAgID0gY3JlYXRlQWRkZXIoMSwgJ2FkZCcpO1xuICAgIHZhciBzdWJ0cmFjdCA9IGNyZWF0ZUFkZGVyKC0xLCAnc3VidHJhY3QnKTtcblxuICAgIGZ1bmN0aW9uIGdldENhbGVuZGFyRm9ybWF0KG15TW9tZW50LCBub3cpIHtcbiAgICAgICAgdmFyIGRpZmYgPSBteU1vbWVudC5kaWZmKG5vdywgJ2RheXMnLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGRpZmYgPCAtNiA/ICdzYW1lRWxzZScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAtMSA/ICdsYXN0V2VlaycgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCAwID8gJ2xhc3REYXknIDpcbiAgICAgICAgICAgICAgICBkaWZmIDwgMSA/ICdzYW1lRGF5JyA6XG4gICAgICAgICAgICAgICAgZGlmZiA8IDIgPyAnbmV4dERheScgOlxuICAgICAgICAgICAgICAgIGRpZmYgPCA3ID8gJ25leHRXZWVrJyA6ICdzYW1lRWxzZSc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FsZW5kYXIkMSAodGltZSwgZm9ybWF0cykge1xuICAgICAgICAvLyBXZSB3YW50IHRvIGNvbXBhcmUgdGhlIHN0YXJ0IG9mIHRvZGF5LCB2cyB0aGlzLlxuICAgICAgICAvLyBHZXR0aW5nIHN0YXJ0LW9mLXRvZGF5IGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBsb2NhbC91dGMvb2Zmc2V0IG9yIG5vdC5cbiAgICAgICAgdmFyIG5vdyA9IHRpbWUgfHwgY3JlYXRlTG9jYWwoKSxcbiAgICAgICAgICAgIHNvZCA9IGNsb25lV2l0aE9mZnNldChub3csIHRoaXMpLnN0YXJ0T2YoJ2RheScpLFxuICAgICAgICAgICAgZm9ybWF0ID0gaG9va3MuY2FsZW5kYXJGb3JtYXQodGhpcywgc29kKSB8fCAnc2FtZUVsc2UnO1xuXG4gICAgICAgIHZhciBvdXRwdXQgPSBmb3JtYXRzICYmIChpc0Z1bmN0aW9uKGZvcm1hdHNbZm9ybWF0XSkgPyBmb3JtYXRzW2Zvcm1hdF0uY2FsbCh0aGlzLCBub3cpIDogZm9ybWF0c1tmb3JtYXRdKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXQob3V0cHV0IHx8IHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKGZvcm1hdCwgdGhpcywgY3JlYXRlTG9jYWwobm93KSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNb21lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNBZnRlciAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCk7XG4gICAgICAgIGlmICghKHRoaXMuaXNWYWxpZCgpICYmIGxvY2FsSW5wdXQuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHVuaXRzID0gbm9ybWFsaXplVW5pdHMoIWlzVW5kZWZpbmVkKHVuaXRzKSA/IHVuaXRzIDogJ21pbGxpc2Vjb25kJyk7XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ21pbGxpc2Vjb25kJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVPZigpID4gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxJbnB1dC52YWx1ZU9mKCkgPCB0aGlzLmNsb25lKCkuc3RhcnRPZih1bml0cykudmFsdWVPZigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCZWZvcmUgKGlucHV0LCB1bml0cykge1xuICAgICAgICB2YXIgbG9jYWxJbnB1dCA9IGlzTW9tZW50KGlucHV0KSA/IGlucHV0IDogY3JlYXRlTG9jYWwoaW5wdXQpO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKCFpc1VuZGVmaW5lZCh1bml0cykgPyB1bml0cyA6ICdtaWxsaXNlY29uZCcpO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA8IGxvY2FsSW5wdXQudmFsdWVPZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5lbmRPZih1bml0cykudmFsdWVPZigpIDwgbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0JldHdlZW4gKGZyb20sIHRvLCB1bml0cywgaW5jbHVzaXZpdHkpIHtcbiAgICAgICAgaW5jbHVzaXZpdHkgPSBpbmNsdXNpdml0eSB8fCAnKCknO1xuICAgICAgICByZXR1cm4gKGluY2x1c2l2aXR5WzBdID09PSAnKCcgPyB0aGlzLmlzQWZ0ZXIoZnJvbSwgdW5pdHMpIDogIXRoaXMuaXNCZWZvcmUoZnJvbSwgdW5pdHMpKSAmJlxuICAgICAgICAgICAgKGluY2x1c2l2aXR5WzFdID09PSAnKScgPyB0aGlzLmlzQmVmb3JlKHRvLCB1bml0cykgOiAhdGhpcy5pc0FmdGVyKHRvLCB1bml0cykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzU2FtZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHZhciBsb2NhbElucHV0ID0gaXNNb21lbnQoaW5wdXQpID8gaW5wdXQgOiBjcmVhdGVMb2NhbChpbnB1dCksXG4gICAgICAgICAgICBpbnB1dE1zO1xuICAgICAgICBpZiAoISh0aGlzLmlzVmFsaWQoKSAmJiBsb2NhbElucHV0LmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzIHx8ICdtaWxsaXNlY29uZCcpO1xuICAgICAgICBpZiAodW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKSA9PT0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnB1dE1zID0gbG9jYWxJbnB1dC52YWx1ZU9mKCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLnN0YXJ0T2YodW5pdHMpLnZhbHVlT2YoKSA8PSBpbnB1dE1zICYmIGlucHV0TXMgPD0gdGhpcy5jbG9uZSgpLmVuZE9mKHVuaXRzKS52YWx1ZU9mKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckFmdGVyIChpbnB1dCwgdW5pdHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNTYW1lKGlucHV0LCB1bml0cykgfHwgdGhpcy5pc0FmdGVyKGlucHV0LHVuaXRzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1NhbWVPckJlZm9yZSAoaW5wdXQsIHVuaXRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2FtZShpbnB1dCwgdW5pdHMpIHx8IHRoaXMuaXNCZWZvcmUoaW5wdXQsdW5pdHMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRpZmYgKGlucHV0LCB1bml0cywgYXNGbG9hdCkge1xuICAgICAgICB2YXIgdGhhdCxcbiAgICAgICAgICAgIHpvbmVEZWx0YSxcbiAgICAgICAgICAgIG91dHB1dDtcblxuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhhdCA9IGNsb25lV2l0aE9mZnNldChpbnB1dCwgdGhpcyk7XG5cbiAgICAgICAgaWYgKCF0aGF0LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuXG4gICAgICAgIHpvbmVEZWx0YSA9ICh0aGF0LnV0Y09mZnNldCgpIC0gdGhpcy51dGNPZmZzZXQoKSkgKiA2ZTQ7XG5cbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG5cbiAgICAgICAgc3dpdGNoICh1bml0cykge1xuICAgICAgICAgICAgY2FzZSAneWVhcic6IG91dHB1dCA9IG1vbnRoRGlmZih0aGlzLCB0aGF0KSAvIDEyOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzogb3V0cHV0ID0gbW9udGhEaWZmKHRoaXMsIHRoYXQpOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3F1YXJ0ZXInOiBvdXRwdXQgPSBtb250aERpZmYodGhpcywgdGhhdCkgLyAzOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCkgLyAxZTM7IGJyZWFrOyAvLyAxMDAwXG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOiBvdXRwdXQgPSAodGhpcyAtIHRoYXQpIC8gNmU0OyBicmVhazsgLy8gMTAwMCAqIDYwXG4gICAgICAgICAgICBjYXNlICdob3VyJzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0KSAvIDM2ZTU7IGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MFxuICAgICAgICAgICAgY2FzZSAnZGF5Jzogb3V0cHV0ID0gKHRoaXMgLSB0aGF0IC0gem9uZURlbHRhKSAvIDg2NGU1OyBicmVhazsgLy8gMTAwMCAqIDYwICogNjAgKiAyNCwgbmVnYXRlIGRzdFxuICAgICAgICAgICAgY2FzZSAnd2Vlayc6IG91dHB1dCA9ICh0aGlzIC0gdGhhdCAtIHpvbmVEZWx0YSkgLyA2MDQ4ZTU7IGJyZWFrOyAvLyAxMDAwICogNjAgKiA2MCAqIDI0ICogNywgbmVnYXRlIGRzdFxuICAgICAgICAgICAgZGVmYXVsdDogb3V0cHV0ID0gdGhpcyAtIHRoYXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXNGbG9hdCA/IG91dHB1dCA6IGFic0Zsb29yKG91dHB1dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbW9udGhEaWZmIChhLCBiKSB7XG4gICAgICAgIC8vIGRpZmZlcmVuY2UgaW4gbW9udGhzXG4gICAgICAgIHZhciB3aG9sZU1vbnRoRGlmZiA9ICgoYi55ZWFyKCkgLSBhLnllYXIoKSkgKiAxMikgKyAoYi5tb250aCgpIC0gYS5tb250aCgpKSxcbiAgICAgICAgICAgIC8vIGIgaXMgaW4gKGFuY2hvciAtIDEgbW9udGgsIGFuY2hvciArIDEgbW9udGgpXG4gICAgICAgICAgICBhbmNob3IgPSBhLmNsb25lKCkuYWRkKHdob2xlTW9udGhEaWZmLCAnbW9udGhzJyksXG4gICAgICAgICAgICBhbmNob3IyLCBhZGp1c3Q7XG5cbiAgICAgICAgaWYgKGIgLSBhbmNob3IgPCAwKSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiAtIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yIC0gYW5jaG9yMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmNob3IyID0gYS5jbG9uZSgpLmFkZCh3aG9sZU1vbnRoRGlmZiArIDEsICdtb250aHMnKTtcbiAgICAgICAgICAgIC8vIGxpbmVhciBhY3Jvc3MgdGhlIG1vbnRoXG4gICAgICAgICAgICBhZGp1c3QgPSAoYiAtIGFuY2hvcikgLyAoYW5jaG9yMiAtIGFuY2hvcik7XG4gICAgICAgIH1cblxuICAgICAgICAvL2NoZWNrIGZvciBuZWdhdGl2ZSB6ZXJvLCByZXR1cm4gemVybyBpZiBuZWdhdGl2ZSB6ZXJvXG4gICAgICAgIHJldHVybiAtKHdob2xlTW9udGhEaWZmICsgYWRqdXN0KSB8fCAwO1xuICAgIH1cblxuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXQgPSAnWVlZWS1NTS1ERFRISDptbTpzc1onO1xuICAgIGhvb2tzLmRlZmF1bHRGb3JtYXRVdGMgPSAnWVlZWS1NTS1ERFRISDptbTpzc1taXSc7XG5cbiAgICBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCdlbicpLmZvcm1hdCgnZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWlonKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0lTT1N0cmluZyhrZWVwT2Zmc2V0KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHZhciB1dGMgPSBrZWVwT2Zmc2V0ICE9PSB0cnVlO1xuICAgICAgICB2YXIgbSA9IHV0YyA/IHRoaXMuY2xvbmUoKS51dGMoKSA6IHRoaXM7XG4gICAgICAgIGlmIChtLnllYXIoKSA8IDAgfHwgbS55ZWFyKCkgPiA5OTk5KSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0TW9tZW50KG0sIHV0YyA/ICdZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nIDogJ1lZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1onKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNGdW5jdGlvbihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZykpIHtcbiAgICAgICAgICAgIC8vIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpcyB+NTB4IGZhc3RlciwgdXNlIGl0IHdoZW4gd2UgY2FuXG4gICAgICAgICAgICBpZiAodXRjKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpICsgdGhpcy51dGNPZmZzZXQoKSAqIDYwICogMTAwMCkudG9JU09TdHJpbmcoKS5yZXBsYWNlKCdaJywgZm9ybWF0TW9tZW50KG0sICdaJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXRNb21lbnQobSwgdXRjID8gJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0nIDogJ1lZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgaHVtYW4gcmVhZGFibGUgcmVwcmVzZW50YXRpb24gb2YgYSBtb21lbnQgdGhhdCBjYW5cbiAgICAgKiBhbHNvIGJlIGV2YWx1YXRlZCB0byBnZXQgYSBuZXcgbW9tZW50IHdoaWNoIGlzIHRoZSBzYW1lXG4gICAgICpcbiAgICAgKiBAbGluayBodHRwczovL25vZGVqcy5vcmcvZGlzdC9sYXRlc3QvZG9jcy9hcGkvdXRpbC5odG1sI3V0aWxfY3VzdG9tX2luc3BlY3RfZnVuY3Rpb25fb25fb2JqZWN0c1xuICAgICAqL1xuICAgIGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gJ21vbWVudC5pbnZhbGlkKC8qICcgKyB0aGlzLl9pICsgJyAqLyknO1xuICAgICAgICB9XG4gICAgICAgIHZhciBmdW5jID0gJ21vbWVudCc7XG4gICAgICAgIHZhciB6b25lID0gJyc7XG4gICAgICAgIGlmICghdGhpcy5pc0xvY2FsKCkpIHtcbiAgICAgICAgICAgIGZ1bmMgPSB0aGlzLnV0Y09mZnNldCgpID09PSAwID8gJ21vbWVudC51dGMnIDogJ21vbWVudC5wYXJzZVpvbmUnO1xuICAgICAgICAgICAgem9uZSA9ICdaJztcbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJlZml4ID0gJ1snICsgZnVuYyArICcoXCJdJztcbiAgICAgICAgdmFyIHllYXIgPSAoMCA8PSB0aGlzLnllYXIoKSAmJiB0aGlzLnllYXIoKSA8PSA5OTk5KSA/ICdZWVlZJyA6ICdZWVlZWVknO1xuICAgICAgICB2YXIgZGF0ZXRpbWUgPSAnLU1NLUREW1RdSEg6bW06c3MuU1NTJztcbiAgICAgICAgdmFyIHN1ZmZpeCA9IHpvbmUgKyAnW1wiKV0nO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdChwcmVmaXggKyB5ZWFyICsgZGF0ZXRpbWUgKyBzdWZmaXgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZvcm1hdCAoaW5wdXRTdHJpbmcpIHtcbiAgICAgICAgaWYgKCFpbnB1dFN0cmluZykge1xuICAgICAgICAgICAgaW5wdXRTdHJpbmcgPSB0aGlzLmlzVXRjKCkgPyBob29rcy5kZWZhdWx0Rm9ybWF0VXRjIDogaG9va3MuZGVmYXVsdEZvcm1hdDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb3V0cHV0ID0gZm9ybWF0TW9tZW50KHRoaXMsIGlucHV0U3RyaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLnBvc3Rmb3JtYXQob3V0cHV0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmcm9tICh0aW1lLCB3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWQoKSAmJlxuICAgICAgICAgICAgICAgICgoaXNNb21lbnQodGltZSkgJiYgdGltZS5pc1ZhbGlkKCkpIHx8XG4gICAgICAgICAgICAgICAgIGNyZWF0ZUxvY2FsKHRpbWUpLmlzVmFsaWQoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih7dG86IHRoaXMsIGZyb206IHRpbWV9KS5sb2NhbGUodGhpcy5sb2NhbGUoKSkuaHVtYW5pemUoIXdpdGhvdXRTdWZmaXgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmcm9tTm93ICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb20oY3JlYXRlTG9jYWwoKSwgd2l0aG91dFN1ZmZpeCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG8gKHRpbWUsIHdpdGhvdXRTdWZmaXgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCgpICYmXG4gICAgICAgICAgICAgICAgKChpc01vbWVudCh0aW1lKSAmJiB0aW1lLmlzVmFsaWQoKSkgfHxcbiAgICAgICAgICAgICAgICAgY3JlYXRlTG9jYWwodGltZSkuaXNWYWxpZCgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUR1cmF0aW9uKHtmcm9tOiB0aGlzLCB0bzogdGltZX0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghd2l0aG91dFN1ZmZpeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTm93ICh3aXRob3V0U3VmZml4KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvKGNyZWF0ZUxvY2FsKCksIHdpdGhvdXRTdWZmaXgpO1xuICAgIH1cblxuICAgIC8vIElmIHBhc3NlZCBhIGxvY2FsZSBrZXksIGl0IHdpbGwgc2V0IHRoZSBsb2NhbGUgZm9yIHRoaXNcbiAgICAvLyBpbnN0YW5jZS4gIE90aGVyd2lzZSwgaXQgd2lsbCByZXR1cm4gdGhlIGxvY2FsZSBjb25maWd1cmF0aW9uXG4gICAgLy8gdmFyaWFibGVzIGZvciB0aGlzIGluc3RhbmNlLlxuICAgIGZ1bmN0aW9uIGxvY2FsZSAoa2V5KSB7XG4gICAgICAgIHZhciBuZXdMb2NhbGVEYXRhO1xuXG4gICAgICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZS5fYWJicjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0xvY2FsZURhdGEgPSBnZXRMb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIGlmIChuZXdMb2NhbGVEYXRhICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sb2NhbGUgPSBuZXdMb2NhbGVEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFuZyA9IGRlcHJlY2F0ZShcbiAgICAgICAgJ21vbWVudCgpLmxhbmcoKSBpcyBkZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2UgbW9tZW50KCkubG9jYWxlRGF0YSgpIHRvIGdldCB0aGUgbGFuZ3VhZ2UgY29uZmlndXJhdGlvbi4gVXNlIG1vbWVudCgpLmxvY2FsZSgpIHRvIGNoYW5nZSBsYW5ndWFnZXMuJyxcbiAgICAgICAgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICk7XG5cbiAgICBmdW5jdGlvbiBsb2NhbGVEYXRhICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGFydE9mICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgLy8gdGhlIGZvbGxvd2luZyBzd2l0Y2ggaW50ZW50aW9uYWxseSBvbWl0cyBicmVhayBrZXl3b3Jkc1xuICAgICAgICAvLyB0byB1dGlsaXplIGZhbGxpbmcgdGhyb3VnaCB0aGUgY2FzZXMuXG4gICAgICAgIHN3aXRjaCAodW5pdHMpIHtcbiAgICAgICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgICAgICAgIHRoaXMubW9udGgoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAncXVhcnRlcic6XG4gICAgICAgICAgICBjYXNlICdtb250aCc6XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlKDEpO1xuICAgICAgICAgICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAgICAgY2FzZSAnaXNvV2Vlayc6XG4gICAgICAgICAgICBjYXNlICdkYXknOlxuICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5ob3VycygwKTtcbiAgICAgICAgICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICAgICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgICAgICAgICB0aGlzLm1pbnV0ZXMoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgICAgICAgICB0aGlzLnNlY29uZHMoMCk7XG4gICAgICAgICAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgICAgICAgICB0aGlzLm1pbGxpc2Vjb25kcygwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdlZWtzIGFyZSBhIHNwZWNpYWwgY2FzZVxuICAgICAgICBpZiAodW5pdHMgPT09ICd3ZWVrJykge1xuICAgICAgICAgICAgdGhpcy53ZWVrZGF5KDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1bml0cyA9PT0gJ2lzb1dlZWsnKSB7XG4gICAgICAgICAgICB0aGlzLmlzb1dlZWtkYXkoMSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBxdWFydGVycyBhcmUgYWxzbyBzcGVjaWFsXG4gICAgICAgIGlmICh1bml0cyA9PT0gJ3F1YXJ0ZXInKSB7XG4gICAgICAgICAgICB0aGlzLm1vbnRoKE1hdGguZmxvb3IodGhpcy5tb250aCgpIC8gMykgKiAzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mICh1bml0cykge1xuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcbiAgICAgICAgaWYgKHVuaXRzID09PSB1bmRlZmluZWQgfHwgdW5pdHMgPT09ICdtaWxsaXNlY29uZCcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gJ2RhdGUnIGlzIGFuIGFsaWFzIGZvciAnZGF5Jywgc28gaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgc3VjaC5cbiAgICAgICAgaWYgKHVuaXRzID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIHVuaXRzID0gJ2RheSc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zdGFydE9mKHVuaXRzKS5hZGQoMSwgKHVuaXRzID09PSAnaXNvV2VlaycgPyAnd2VlaycgOiB1bml0cykpLnN1YnRyYWN0KDEsICdtcycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbHVlT2YgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCkgLSAoKHRoaXMuX29mZnNldCB8fCAwKSAqIDYwMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bml4ICgpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodGhpcy52YWx1ZU9mKCkgLyAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0RhdGUgKCkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodGhpcy52YWx1ZU9mKCkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQXJyYXkgKCkge1xuICAgICAgICB2YXIgbSA9IHRoaXM7XG4gICAgICAgIHJldHVybiBbbS55ZWFyKCksIG0ubW9udGgoKSwgbS5kYXRlKCksIG0uaG91cigpLCBtLm1pbnV0ZSgpLCBtLnNlY29uZCgpLCBtLm1pbGxpc2Vjb25kKCldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvT2JqZWN0ICgpIHtcbiAgICAgICAgdmFyIG0gPSB0aGlzO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeWVhcnM6IG0ueWVhcigpLFxuICAgICAgICAgICAgbW9udGhzOiBtLm1vbnRoKCksXG4gICAgICAgICAgICBkYXRlOiBtLmRhdGUoKSxcbiAgICAgICAgICAgIGhvdXJzOiBtLmhvdXJzKCksXG4gICAgICAgICAgICBtaW51dGVzOiBtLm1pbnV0ZXMoKSxcbiAgICAgICAgICAgIHNlY29uZHM6IG0uc2Vjb25kcygpLFxuICAgICAgICAgICAgbWlsbGlzZWNvbmRzOiBtLm1pbGxpc2Vjb25kcygpXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICAgICAgLy8gbmV3IERhdGUoTmFOKS50b0pTT04oKSA9PT0gbnVsbFxuICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLnRvSVNPU3RyaW5nKCkgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVmFsaWQkMiAoKSB7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkKHRoaXMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcnNpbmdGbGFncyAoKSB7XG4gICAgICAgIHJldHVybiBleHRlbmQoe30sIGdldFBhcnNpbmdGbGFncyh0aGlzKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW52YWxpZEF0ICgpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhcnNpbmdGbGFncyh0aGlzKS5vdmVyZmxvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGlvbkRhdGEoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbnB1dDogdGhpcy5faSxcbiAgICAgICAgICAgIGZvcm1hdDogdGhpcy5fZixcbiAgICAgICAgICAgIGxvY2FsZTogdGhpcy5fbG9jYWxlLFxuICAgICAgICAgICAgaXNVVEM6IHRoaXMuX2lzVVRDLFxuICAgICAgICAgICAgc3RyaWN0OiB0aGlzLl9zdHJpY3RcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ2dnJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2Vla1llYXIoKSAlIDEwMDtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnR0cnLCAyXSwgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pc29XZWVrWWVhcigpICUgMTAwO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gYWRkV2Vla1llYXJGb3JtYXRUb2tlbiAodG9rZW4sIGdldHRlcikge1xuICAgICAgICBhZGRGb3JtYXRUb2tlbigwLCBbdG9rZW4sIHRva2VuLmxlbmd0aF0sIDAsIGdldHRlcik7XG4gICAgfVxuXG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignZ2dnZycsICAgICAnd2Vla1llYXInKTtcbiAgICBhZGRXZWVrWWVhckZvcm1hdFRva2VuKCdnZ2dnZycsICAgICd3ZWVrWWVhcicpO1xuICAgIGFkZFdlZWtZZWFyRm9ybWF0VG9rZW4oJ0dHR0cnLCAgJ2lzb1dlZWtZZWFyJyk7XG4gICAgYWRkV2Vla1llYXJGb3JtYXRUb2tlbignR0dHR0cnLCAnaXNvV2Vla1llYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnd2Vla1llYXInLCAnZ2cnKTtcbiAgICBhZGRVbml0QWxpYXMoJ2lzb1dlZWtZZWFyJywgJ0dHJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCd3ZWVrWWVhcicsIDEpO1xuICAgIGFkZFVuaXRQcmlvcml0eSgnaXNvV2Vla1llYXInLCAxKTtcblxuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignRycsICAgICAgbWF0Y2hTaWduZWQpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2cnLCAgICAgIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdHRycsICAgICBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignZ2cnLCAgICAgbWF0Y2gxdG8yLCBtYXRjaDIpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ0dHR0cnLCAgIG1hdGNoMXRvNCwgbWF0Y2g0KTtcbiAgICBhZGRSZWdleFRva2VuKCdnZ2dnJywgICBtYXRjaDF0bzQsIG1hdGNoNCk7XG4gICAgYWRkUmVnZXhUb2tlbignR0dHR0cnLCAgbWF0Y2gxdG82LCBtYXRjaDYpO1xuICAgIGFkZFJlZ2V4VG9rZW4oJ2dnZ2dnJywgIG1hdGNoMXRvNiwgbWF0Y2g2KTtcblxuICAgIGFkZFdlZWtQYXJzZVRva2VuKFsnZ2dnZycsICdnZ2dnZycsICdHR0dHJywgJ0dHR0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuLnN1YnN0cigwLCAyKV0gPSB0b0ludChpbnB1dCk7XG4gICAgfSk7XG5cbiAgICBhZGRXZWVrUGFyc2VUb2tlbihbJ2dnJywgJ0dHJ10sIGZ1bmN0aW9uIChpbnB1dCwgd2VlaywgY29uZmlnLCB0b2tlbikge1xuICAgICAgICB3ZWVrW3Rva2VuXSA9IGhvb2tzLnBhcnNlVHdvRGlnaXRZZWFyKGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldFdlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIHRoaXMud2VlaygpLFxuICAgICAgICAgICAgICAgIHRoaXMud2Vla2RheSgpLFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyxcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNldElTT1dlZWtZZWFyIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gZ2V0U2V0V2Vla1llYXJIZWxwZXIuY2FsbCh0aGlzLFxuICAgICAgICAgICAgICAgIGlucHV0LCB0aGlzLmlzb1dlZWsoKSwgdGhpcy5pc29XZWVrZGF5KCksIDEsIDQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldElTT1dlZWtzSW5ZZWFyICgpIHtcbiAgICAgICAgcmV0dXJuIHdlZWtzSW5ZZWFyKHRoaXMueWVhcigpLCAxLCA0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXZWVrc0luWWVhciAoKSB7XG4gICAgICAgIHZhciB3ZWVrSW5mbyA9IHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO1xuICAgICAgICByZXR1cm4gd2Vla3NJblllYXIodGhpcy55ZWFyKCksIHdlZWtJbmZvLmRvdywgd2Vla0luZm8uZG95KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTZXRXZWVrWWVhckhlbHBlcihpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIHdlZWtzVGFyZ2V0O1xuICAgICAgICBpZiAoaW5wdXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHdlZWtPZlllYXIodGhpcywgZG93LCBkb3kpLnllYXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3ZWVrc1RhcmdldCA9IHdlZWtzSW5ZZWFyKGlucHV0LCBkb3csIGRveSk7XG4gICAgICAgICAgICBpZiAod2VlayA+IHdlZWtzVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgd2VlayA9IHdlZWtzVGFyZ2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldFdlZWtBbGwuY2FsbCh0aGlzLCBpbnB1dCwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2V0V2Vla0FsbCh3ZWVrWWVhciwgd2Vlaywgd2Vla2RheSwgZG93LCBkb3kpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhckRhdGEgPSBkYXlPZlllYXJGcm9tV2Vla3Mod2Vla1llYXIsIHdlZWssIHdlZWtkYXksIGRvdywgZG95KSxcbiAgICAgICAgICAgIGRhdGUgPSBjcmVhdGVVVENEYXRlKGRheU9mWWVhckRhdGEueWVhciwgMCwgZGF5T2ZZZWFyRGF0YS5kYXlPZlllYXIpO1xuXG4gICAgICAgIHRoaXMueWVhcihkYXRlLmdldFVUQ0Z1bGxZZWFyKCkpO1xuICAgICAgICB0aGlzLm1vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSk7XG4gICAgICAgIHRoaXMuZGF0ZShkYXRlLmdldFVUQ0RhdGUoKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdRJywgMCwgJ1FvJywgJ3F1YXJ0ZXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygncXVhcnRlcicsICdRJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdxdWFydGVyJywgNyk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdRJywgbWF0Y2gxKTtcbiAgICBhZGRQYXJzZVRva2VuKCdRJywgZnVuY3Rpb24gKGlucHV0LCBhcnJheSkge1xuICAgICAgICBhcnJheVtNT05USF0gPSAodG9JbnQoaW5wdXQpIC0gMSkgKiAzO1xuICAgIH0pO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgZnVuY3Rpb24gZ2V0U2V0UXVhcnRlciAoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBNYXRoLmNlaWwoKHRoaXMubW9udGgoKSArIDEpIC8gMykgOiB0aGlzLm1vbnRoKChpbnB1dCAtIDEpICogMyArIHRoaXMubW9udGgoKSAlIDMpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdEJywgWydERCcsIDJdLCAnRG8nLCAnZGF0ZScpO1xuXG4gICAgLy8gQUxJQVNFU1xuXG4gICAgYWRkVW5pdEFsaWFzKCdkYXRlJywgJ0QnKTtcblxuICAgIC8vIFBSSU9SSVRZXG4gICAgYWRkVW5pdFByaW9yaXR5KCdkYXRlJywgOSk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdEJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignREQnLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUmVnZXhUb2tlbignRG8nLCBmdW5jdGlvbiAoaXNTdHJpY3QsIGxvY2FsZSkge1xuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgXCJvcmRpbmFsUGFyc2VcIiBmYWxsYmFjayBpbiBuZXh0IG1ham9yIHJlbGVhc2UuXG4gICAgICAgIHJldHVybiBpc1N0cmljdCA/XG4gICAgICAgICAgKGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZSB8fCBsb2NhbGUuX29yZGluYWxQYXJzZSkgOlxuICAgICAgICAgIGxvY2FsZS5fZGF5T2ZNb250aE9yZGluYWxQYXJzZUxlbmllbnQ7XG4gICAgfSk7XG5cbiAgICBhZGRQYXJzZVRva2VuKFsnRCcsICdERCddLCBEQVRFKTtcbiAgICBhZGRQYXJzZVRva2VuKCdEbycsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbREFURV0gPSB0b0ludChpbnB1dC5tYXRjaChtYXRjaDF0bzIpWzBdKTtcbiAgICB9KTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXREYXlPZk1vbnRoID0gbWFrZUdldFNldCgnRGF0ZScsIHRydWUpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ0RERCcsIFsnRERERCcsIDNdLCAnREREbycsICdkYXlPZlllYXInKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnZGF5T2ZZZWFyJywgJ0RERCcpO1xuXG4gICAgLy8gUFJJT1JJVFlcbiAgICBhZGRVbml0UHJpb3JpdHkoJ2RheU9mWWVhcicsIDQpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbignREREJywgIG1hdGNoMXRvMyk7XG4gICAgYWRkUmVnZXhUb2tlbignRERERCcsIG1hdGNoMyk7XG4gICAgYWRkUGFyc2VUb2tlbihbJ0RERCcsICdEREREJ10sIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2RheU9mWWVhciA9IHRvSW50KGlucHV0KTtcbiAgICB9KTtcblxuICAgIC8vIEhFTFBFUlNcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFNldERheU9mWWVhciAoaW5wdXQpIHtcbiAgICAgICAgdmFyIGRheU9mWWVhciA9IE1hdGgucm91bmQoKHRoaXMuY2xvbmUoKS5zdGFydE9mKCdkYXknKSAtIHRoaXMuY2xvbmUoKS5zdGFydE9mKCd5ZWFyJykpIC8gODY0ZTUpICsgMTtcbiAgICAgICAgcmV0dXJuIGlucHV0ID09IG51bGwgPyBkYXlPZlllYXIgOiB0aGlzLmFkZCgoaW5wdXQgLSBkYXlPZlllYXIpLCAnZCcpO1xuICAgIH1cblxuICAgIC8vIEZPUk1BVFRJTkdcblxuICAgIGFkZEZvcm1hdFRva2VuKCdtJywgWydtbScsIDJdLCAwLCAnbWludXRlJyk7XG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbnV0ZScsICdtJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaW51dGUnLCAxNCk7XG5cbiAgICAvLyBQQVJTSU5HXG5cbiAgICBhZGRSZWdleFRva2VuKCdtJywgIG1hdGNoMXRvMik7XG4gICAgYWRkUmVnZXhUb2tlbignbW0nLCBtYXRjaDF0bzIsIG1hdGNoMik7XG4gICAgYWRkUGFyc2VUb2tlbihbJ20nLCAnbW0nXSwgTUlOVVRFKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIHZhciBnZXRTZXRNaW51dGUgPSBtYWtlR2V0U2V0KCdNaW51dGVzJywgZmFsc2UpO1xuXG4gICAgLy8gRk9STUFUVElOR1xuXG4gICAgYWRkRm9ybWF0VG9rZW4oJ3MnLCBbJ3NzJywgMl0sIDAsICdzZWNvbmQnKTtcblxuICAgIC8vIEFMSUFTRVNcblxuICAgIGFkZFVuaXRBbGlhcygnc2Vjb25kJywgJ3MnKTtcblxuICAgIC8vIFBSSU9SSVRZXG5cbiAgICBhZGRVbml0UHJpb3JpdHkoJ3NlY29uZCcsIDE1KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ3MnLCAgbWF0Y2gxdG8yKTtcbiAgICBhZGRSZWdleFRva2VuKCdzcycsIG1hdGNoMXRvMiwgbWF0Y2gyKTtcbiAgICBhZGRQYXJzZVRva2VuKFsncycsICdzcyddLCBTRUNPTkQpO1xuXG4gICAgLy8gTU9NRU5UU1xuXG4gICAgdmFyIGdldFNldFNlY29uZCA9IG1ha2VHZXRTZXQoJ1NlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignUycsIDAsIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwMCk7XG4gICAgfSk7XG5cbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTJywgMl0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIH5+KHRoaXMubWlsbGlzZWNvbmQoKSAvIDEwKTtcbiAgICB9KTtcblxuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTJywgM10sIDAsICdtaWxsaXNlY29uZCcpO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTUycsIDRdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTJywgNV0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTUycsIDZdLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwO1xuICAgIH0pO1xuICAgIGFkZEZvcm1hdFRva2VuKDAsIFsnU1NTU1NTUycsIDddLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTJywgOF0sIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWlsbGlzZWNvbmQoKSAqIDEwMDAwMDtcbiAgICB9KTtcbiAgICBhZGRGb3JtYXRUb2tlbigwLCBbJ1NTU1NTU1NTUycsIDldLCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbGxpc2Vjb25kKCkgKiAxMDAwMDAwO1xuICAgIH0pO1xuXG5cbiAgICAvLyBBTElBU0VTXG5cbiAgICBhZGRVbml0QWxpYXMoJ21pbGxpc2Vjb25kJywgJ21zJyk7XG5cbiAgICAvLyBQUklPUklUWVxuXG4gICAgYWRkVW5pdFByaW9yaXR5KCdtaWxsaXNlY29uZCcsIDE2KTtcblxuICAgIC8vIFBBUlNJTkdcblxuICAgIGFkZFJlZ2V4VG9rZW4oJ1MnLCAgICBtYXRjaDF0bzMsIG1hdGNoMSk7XG4gICAgYWRkUmVnZXhUb2tlbignU1MnLCAgIG1hdGNoMXRvMywgbWF0Y2gyKTtcbiAgICBhZGRSZWdleFRva2VuKCdTU1MnLCAgbWF0Y2gxdG8zLCBtYXRjaDMpO1xuXG4gICAgdmFyIHRva2VuO1xuICAgIGZvciAodG9rZW4gPSAnU1NTUyc7IHRva2VuLmxlbmd0aCA8PSA5OyB0b2tlbiArPSAnUycpIHtcbiAgICAgICAgYWRkUmVnZXhUb2tlbih0b2tlbiwgbWF0Y2hVbnNpZ25lZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VNcyhpbnB1dCwgYXJyYXkpIHtcbiAgICAgICAgYXJyYXlbTUlMTElTRUNPTkRdID0gdG9JbnQoKCcwLicgKyBpbnB1dCkgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmb3IgKHRva2VuID0gJ1MnOyB0b2tlbi5sZW5ndGggPD0gOTsgdG9rZW4gKz0gJ1MnKSB7XG4gICAgICAgIGFkZFBhcnNlVG9rZW4odG9rZW4sIHBhcnNlTXMpO1xuICAgIH1cbiAgICAvLyBNT01FTlRTXG5cbiAgICB2YXIgZ2V0U2V0TWlsbGlzZWNvbmQgPSBtYWtlR2V0U2V0KCdNaWxsaXNlY29uZHMnLCBmYWxzZSk7XG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbigneicsICAwLCAwLCAnem9uZUFiYnInKTtcbiAgICBhZGRGb3JtYXRUb2tlbignenonLCAwLCAwLCAnem9uZU5hbWUnKTtcblxuICAgIC8vIE1PTUVOVFNcblxuICAgIGZ1bmN0aW9uIGdldFpvbmVBYmJyICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVVRDID8gJ1VUQycgOiAnJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRab25lTmFtZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1VUQyA/ICdDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZScgOiAnJztcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8gPSBNb21lbnQucHJvdG90eXBlO1xuXG4gICAgcHJvdG8uYWRkICAgICAgICAgICAgICAgPSBhZGQ7XG4gICAgcHJvdG8uY2FsZW5kYXIgICAgICAgICAgPSBjYWxlbmRhciQxO1xuICAgIHByb3RvLmNsb25lICAgICAgICAgICAgID0gY2xvbmU7XG4gICAgcHJvdG8uZGlmZiAgICAgICAgICAgICAgPSBkaWZmO1xuICAgIHByb3RvLmVuZE9mICAgICAgICAgICAgID0gZW5kT2Y7XG4gICAgcHJvdG8uZm9ybWF0ICAgICAgICAgICAgPSBmb3JtYXQ7XG4gICAgcHJvdG8uZnJvbSAgICAgICAgICAgICAgPSBmcm9tO1xuICAgIHByb3RvLmZyb21Ob3cgICAgICAgICAgID0gZnJvbU5vdztcbiAgICBwcm90by50byAgICAgICAgICAgICAgICA9IHRvO1xuICAgIHByb3RvLnRvTm93ICAgICAgICAgICAgID0gdG9Ob3c7XG4gICAgcHJvdG8uZ2V0ICAgICAgICAgICAgICAgPSBzdHJpbmdHZXQ7XG4gICAgcHJvdG8uaW52YWxpZEF0ICAgICAgICAgPSBpbnZhbGlkQXQ7XG4gICAgcHJvdG8uaXNBZnRlciAgICAgICAgICAgPSBpc0FmdGVyO1xuICAgIHByb3RvLmlzQmVmb3JlICAgICAgICAgID0gaXNCZWZvcmU7XG4gICAgcHJvdG8uaXNCZXR3ZWVuICAgICAgICAgPSBpc0JldHdlZW47XG4gICAgcHJvdG8uaXNTYW1lICAgICAgICAgICAgPSBpc1NhbWU7XG4gICAgcHJvdG8uaXNTYW1lT3JBZnRlciAgICAgPSBpc1NhbWVPckFmdGVyO1xuICAgIHByb3RvLmlzU2FtZU9yQmVmb3JlICAgID0gaXNTYW1lT3JCZWZvcmU7XG4gICAgcHJvdG8uaXNWYWxpZCAgICAgICAgICAgPSBpc1ZhbGlkJDI7XG4gICAgcHJvdG8ubGFuZyAgICAgICAgICAgICAgPSBsYW5nO1xuICAgIHByb3RvLmxvY2FsZSAgICAgICAgICAgID0gbG9jYWxlO1xuICAgIHByb3RvLmxvY2FsZURhdGEgICAgICAgID0gbG9jYWxlRGF0YTtcbiAgICBwcm90by5tYXggICAgICAgICAgICAgICA9IHByb3RvdHlwZU1heDtcbiAgICBwcm90by5taW4gICAgICAgICAgICAgICA9IHByb3RvdHlwZU1pbjtcbiAgICBwcm90by5wYXJzaW5nRmxhZ3MgICAgICA9IHBhcnNpbmdGbGFncztcbiAgICBwcm90by5zZXQgICAgICAgICAgICAgICA9IHN0cmluZ1NldDtcbiAgICBwcm90by5zdGFydE9mICAgICAgICAgICA9IHN0YXJ0T2Y7XG4gICAgcHJvdG8uc3VidHJhY3QgICAgICAgICAgPSBzdWJ0cmFjdDtcbiAgICBwcm90by50b0FycmF5ICAgICAgICAgICA9IHRvQXJyYXk7XG4gICAgcHJvdG8udG9PYmplY3QgICAgICAgICAgPSB0b09iamVjdDtcbiAgICBwcm90by50b0RhdGUgICAgICAgICAgICA9IHRvRGF0ZTtcbiAgICBwcm90by50b0lTT1N0cmluZyAgICAgICA9IHRvSVNPU3RyaW5nO1xuICAgIHByb3RvLmluc3BlY3QgICAgICAgICAgID0gaW5zcGVjdDtcbiAgICBwcm90by50b0pTT04gICAgICAgICAgICA9IHRvSlNPTjtcbiAgICBwcm90by50b1N0cmluZyAgICAgICAgICA9IHRvU3RyaW5nO1xuICAgIHByb3RvLnVuaXggICAgICAgICAgICAgID0gdW5peDtcbiAgICBwcm90by52YWx1ZU9mICAgICAgICAgICA9IHZhbHVlT2Y7XG4gICAgcHJvdG8uY3JlYXRpb25EYXRhICAgICAgPSBjcmVhdGlvbkRhdGE7XG4gICAgcHJvdG8ueWVhciAgICAgICA9IGdldFNldFllYXI7XG4gICAgcHJvdG8uaXNMZWFwWWVhciA9IGdldElzTGVhcFllYXI7XG4gICAgcHJvdG8ud2Vla1llYXIgICAgPSBnZXRTZXRXZWVrWWVhcjtcbiAgICBwcm90by5pc29XZWVrWWVhciA9IGdldFNldElTT1dlZWtZZWFyO1xuICAgIHByb3RvLnF1YXJ0ZXIgPSBwcm90by5xdWFydGVycyA9IGdldFNldFF1YXJ0ZXI7XG4gICAgcHJvdG8ubW9udGggICAgICAgPSBnZXRTZXRNb250aDtcbiAgICBwcm90by5kYXlzSW5Nb250aCA9IGdldERheXNJbk1vbnRoO1xuICAgIHByb3RvLndlZWsgICAgICAgICAgID0gcHJvdG8ud2Vla3MgICAgICAgID0gZ2V0U2V0V2VlaztcbiAgICBwcm90by5pc29XZWVrICAgICAgICA9IHByb3RvLmlzb1dlZWtzICAgICA9IGdldFNldElTT1dlZWs7XG4gICAgcHJvdG8ud2Vla3NJblllYXIgICAgPSBnZXRXZWVrc0luWWVhcjtcbiAgICBwcm90by5pc29XZWVrc0luWWVhciA9IGdldElTT1dlZWtzSW5ZZWFyO1xuICAgIHByb3RvLmRhdGUgICAgICAgPSBnZXRTZXREYXlPZk1vbnRoO1xuICAgIHByb3RvLmRheSAgICAgICAgPSBwcm90by5kYXlzICAgICAgICAgICAgID0gZ2V0U2V0RGF5T2ZXZWVrO1xuICAgIHByb3RvLndlZWtkYXkgICAgPSBnZXRTZXRMb2NhbGVEYXlPZldlZWs7XG4gICAgcHJvdG8uaXNvV2Vla2RheSA9IGdldFNldElTT0RheU9mV2VlaztcbiAgICBwcm90by5kYXlPZlllYXIgID0gZ2V0U2V0RGF5T2ZZZWFyO1xuICAgIHByb3RvLmhvdXIgPSBwcm90by5ob3VycyA9IGdldFNldEhvdXI7XG4gICAgcHJvdG8ubWludXRlID0gcHJvdG8ubWludXRlcyA9IGdldFNldE1pbnV0ZTtcbiAgICBwcm90by5zZWNvbmQgPSBwcm90by5zZWNvbmRzID0gZ2V0U2V0U2Vjb25kO1xuICAgIHByb3RvLm1pbGxpc2Vjb25kID0gcHJvdG8ubWlsbGlzZWNvbmRzID0gZ2V0U2V0TWlsbGlzZWNvbmQ7XG4gICAgcHJvdG8udXRjT2Zmc2V0ICAgICAgICAgICAgPSBnZXRTZXRPZmZzZXQ7XG4gICAgcHJvdG8udXRjICAgICAgICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1VUQztcbiAgICBwcm90by5sb2NhbCAgICAgICAgICAgICAgICA9IHNldE9mZnNldFRvTG9jYWw7XG4gICAgcHJvdG8ucGFyc2Vab25lICAgICAgICAgICAgPSBzZXRPZmZzZXRUb1BhcnNlZE9mZnNldDtcbiAgICBwcm90by5oYXNBbGlnbmVkSG91ck9mZnNldCA9IGhhc0FsaWduZWRIb3VyT2Zmc2V0O1xuICAgIHByb3RvLmlzRFNUICAgICAgICAgICAgICAgID0gaXNEYXlsaWdodFNhdmluZ1RpbWU7XG4gICAgcHJvdG8uaXNMb2NhbCAgICAgICAgICAgICAgPSBpc0xvY2FsO1xuICAgIHByb3RvLmlzVXRjT2Zmc2V0ICAgICAgICAgID0gaXNVdGNPZmZzZXQ7XG4gICAgcHJvdG8uaXNVdGMgICAgICAgICAgICAgICAgPSBpc1V0YztcbiAgICBwcm90by5pc1VUQyAgICAgICAgICAgICAgICA9IGlzVXRjO1xuICAgIHByb3RvLnpvbmVBYmJyID0gZ2V0Wm9uZUFiYnI7XG4gICAgcHJvdG8uem9uZU5hbWUgPSBnZXRab25lTmFtZTtcbiAgICBwcm90by5kYXRlcyAgPSBkZXByZWNhdGUoJ2RhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3RlYWQuJywgZ2V0U2V0RGF5T2ZNb250aCk7XG4gICAgcHJvdG8ubW9udGhzID0gZGVwcmVjYXRlKCdtb250aHMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbnRoIGluc3RlYWQnLCBnZXRTZXRNb250aCk7XG4gICAgcHJvdG8ueWVhcnMgID0gZGVwcmVjYXRlKCd5ZWFycyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgeWVhciBpbnN0ZWFkJywgZ2V0U2V0WWVhcik7XG4gICAgcHJvdG8uem9uZSAgID0gZGVwcmVjYXRlKCdtb21lbnQoKS56b25lIGlzIGRlcHJlY2F0ZWQsIHVzZSBtb21lbnQoKS51dGNPZmZzZXQgaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy96b25lLycsIGdldFNldFpvbmUpO1xuICAgIHByb3RvLmlzRFNUU2hpZnRlZCA9IGRlcHJlY2F0ZSgnaXNEU1RTaGlmdGVkIGlzIGRlcHJlY2F0ZWQuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2RzdC1zaGlmdGVkLyBmb3IgbW9yZSBpbmZvcm1hdGlvbicsIGlzRGF5bGlnaHRTYXZpbmdUaW1lU2hpZnRlZCk7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVVbml4IChpbnB1dCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwoaW5wdXQgKiAxMDAwKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJblpvbmUgKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlTG9jYWwuYXBwbHkobnVsbCwgYXJndW1lbnRzKS5wYXJzZVpvbmUoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmVQYXJzZVBvc3RGb3JtYXQgKHN0cmluZykge1xuICAgICAgICByZXR1cm4gc3RyaW5nO1xuICAgIH1cblxuICAgIHZhciBwcm90byQxID0gTG9jYWxlLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDEuY2FsZW5kYXIgICAgICAgID0gY2FsZW5kYXI7XG4gICAgcHJvdG8kMS5sb25nRGF0ZUZvcm1hdCAgPSBsb25nRGF0ZUZvcm1hdDtcbiAgICBwcm90byQxLmludmFsaWREYXRlICAgICA9IGludmFsaWREYXRlO1xuICAgIHByb3RvJDEub3JkaW5hbCAgICAgICAgID0gb3JkaW5hbDtcbiAgICBwcm90byQxLnByZXBhcnNlICAgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnBvc3Rmb3JtYXQgICAgICA9IHByZVBhcnNlUG9zdEZvcm1hdDtcbiAgICBwcm90byQxLnJlbGF0aXZlVGltZSAgICA9IHJlbGF0aXZlVGltZTtcbiAgICBwcm90byQxLnBhc3RGdXR1cmUgICAgICA9IHBhc3RGdXR1cmU7XG4gICAgcHJvdG8kMS5zZXQgICAgICAgICAgICAgPSBzZXQ7XG5cbiAgICBwcm90byQxLm1vbnRocyAgICAgICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRocztcbiAgICBwcm90byQxLm1vbnRoc1Nob3J0ICAgICAgID0gICAgICAgIGxvY2FsZU1vbnRoc1Nob3J0O1xuICAgIHByb3RvJDEubW9udGhzUGFyc2UgICAgICAgPSAgICAgICAgbG9jYWxlTW9udGhzUGFyc2U7XG4gICAgcHJvdG8kMS5tb250aHNSZWdleCAgICAgICA9IG1vbnRoc1JlZ2V4O1xuICAgIHByb3RvJDEubW9udGhzU2hvcnRSZWdleCAgPSBtb250aHNTaG9ydFJlZ2V4O1xuICAgIHByb3RvJDEud2VlayA9IGxvY2FsZVdlZWs7XG4gICAgcHJvdG8kMS5maXJzdERheU9mWWVhciA9IGxvY2FsZUZpcnN0RGF5T2ZZZWFyO1xuICAgIHByb3RvJDEuZmlyc3REYXlPZldlZWsgPSBsb2NhbGVGaXJzdERheU9mV2VlaztcblxuICAgIHByb3RvJDEud2Vla2RheXMgICAgICAgPSAgICAgICAgbG9jYWxlV2Vla2RheXM7XG4gICAgcHJvdG8kMS53ZWVrZGF5c01pbiAgICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c01pbjtcbiAgICBwcm90byQxLndlZWtkYXlzU2hvcnQgID0gICAgICAgIGxvY2FsZVdlZWtkYXlzU2hvcnQ7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1BhcnNlICA9ICAgICAgICBsb2NhbGVXZWVrZGF5c1BhcnNlO1xuXG4gICAgcHJvdG8kMS53ZWVrZGF5c1JlZ2V4ICAgICAgID0gICAgICAgIHdlZWtkYXlzUmVnZXg7XG4gICAgcHJvdG8kMS53ZWVrZGF5c1Nob3J0UmVnZXggID0gICAgICAgIHdlZWtkYXlzU2hvcnRSZWdleDtcbiAgICBwcm90byQxLndlZWtkYXlzTWluUmVnZXggICAgPSAgICAgICAgd2Vla2RheXNNaW5SZWdleDtcblxuICAgIHByb3RvJDEuaXNQTSA9IGxvY2FsZUlzUE07XG4gICAgcHJvdG8kMS5tZXJpZGllbSA9IGxvY2FsZU1lcmlkaWVtO1xuXG4gICAgZnVuY3Rpb24gZ2V0JDEgKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCBzZXR0ZXIpIHtcbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpO1xuICAgICAgICB2YXIgdXRjID0gY3JlYXRlVVRDKCkuc2V0KHNldHRlciwgaW5kZXgpO1xuICAgICAgICByZXR1cm4gbG9jYWxlW2ZpZWxkXSh1dGMsIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRoc0ltcGwgKGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCAnJztcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgaW5kZXgsIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICBvdXRbaV0gPSBnZXQkMShmb3JtYXQsIGksIGZpZWxkLCAnbW9udGgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIC8vICgpXG4gICAgLy8gKDUpXG4gICAgLy8gKGZtdCwgNSlcbiAgICAvLyAoZm10KVxuICAgIC8vICh0cnVlKVxuICAgIC8vICh0cnVlLCA1KVxuICAgIC8vICh0cnVlLCBmbXQsIDUpXG4gICAgLy8gKHRydWUsIGZtdClcbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNJbXBsIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsIGZpZWxkKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbG9jYWxlU29ydGVkID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmIChpc051bWJlcihmb3JtYXQpKSB7XG4gICAgICAgICAgICAgICAgaW5kZXggPSBmb3JtYXQ7XG4gICAgICAgICAgICAgICAgZm9ybWF0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgfHwgJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3JtYXQgPSBsb2NhbGVTb3J0ZWQ7XG4gICAgICAgICAgICBpbmRleCA9IGZvcm1hdDtcbiAgICAgICAgICAgIGxvY2FsZVNvcnRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoaXNOdW1iZXIoZm9ybWF0KSkge1xuICAgICAgICAgICAgICAgIGluZGV4ID0gZm9ybWF0O1xuICAgICAgICAgICAgICAgIGZvcm1hdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9ybWF0ID0gZm9ybWF0IHx8ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IGdldExvY2FsZSgpLFxuICAgICAgICAgICAgc2hpZnQgPSBsb2NhbGVTb3J0ZWQgPyBsb2NhbGUuX3dlZWsuZG93IDogMDtcblxuICAgICAgICBpZiAoaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGdldCQxKGZvcm1hdCwgKGluZGV4ICsgc2hpZnQpICUgNywgZmllbGQsICdkYXknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpO1xuICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCA3OyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IGdldCQxKGZvcm1hdCwgKGkgKyBzaGlmdCkgJSA3LCBmaWVsZCwgJ2RheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdE1vbnRocyAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRocycpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RNb250aHNTaG9ydCAoZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdE1vbnRoc0ltcGwoZm9ybWF0LCBpbmRleCwgJ21vbnRoc1Nob3J0Jyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGlzdFdlZWtkYXlzIChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIGxpc3RXZWVrZGF5c0ltcGwobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4LCAnd2Vla2RheXMnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNTaG9ydCAobG9jYWxlU29ydGVkLCBmb3JtYXQsIGluZGV4KSB7XG4gICAgICAgIHJldHVybiBsaXN0V2Vla2RheXNJbXBsKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCwgJ3dlZWtkYXlzU2hvcnQnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaXN0V2Vla2RheXNNaW4gKGxvY2FsZVNvcnRlZCwgZm9ybWF0LCBpbmRleCkge1xuICAgICAgICByZXR1cm4gbGlzdFdlZWtkYXlzSW1wbChsb2NhbGVTb3J0ZWQsIGZvcm1hdCwgaW5kZXgsICd3ZWVrZGF5c01pbicpO1xuICAgIH1cblxuICAgIGdldFNldEdsb2JhbExvY2FsZSgnZW4nLCB7XG4gICAgICAgIGRheU9mTW9udGhPcmRpbmFsUGFyc2U6IC9cXGR7MSwyfSh0aHxzdHxuZHxyZCkvLFxuICAgICAgICBvcmRpbmFsIDogZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAgICAgdmFyIGIgPSBudW1iZXIgJSAxMCxcbiAgICAgICAgICAgICAgICBvdXRwdXQgPSAodG9JbnQobnVtYmVyICUgMTAwIC8gMTApID09PSAxKSA/ICd0aCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAxKSA/ICdzdCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAyKSA/ICduZCcgOlxuICAgICAgICAgICAgICAgIChiID09PSAzKSA/ICdyZCcgOiAndGgnO1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlciArIG91dHB1dDtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG4gICAgaG9va3MubGFuZyA9IGRlcHJlY2F0ZSgnbW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4nLCBnZXRTZXRHbG9iYWxMb2NhbGUpO1xuICAgIGhvb2tzLmxhbmdEYXRhID0gZGVwcmVjYXRlKCdtb21lbnQubGFuZ0RhdGEgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGVEYXRhIGluc3RlYWQuJywgZ2V0TG9jYWxlKTtcblxuICAgIHZhciBtYXRoQWJzID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBhYnMgKCkge1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgICAgPSB0aGlzLl9kYXRhO1xuXG4gICAgICAgIHRoaXMuX21pbGxpc2Vjb25kcyA9IG1hdGhBYnModGhpcy5fbWlsbGlzZWNvbmRzKTtcbiAgICAgICAgdGhpcy5fZGF5cyAgICAgICAgID0gbWF0aEFicyh0aGlzLl9kYXlzKTtcbiAgICAgICAgdGhpcy5fbW9udGhzICAgICAgID0gbWF0aEFicyh0aGlzLl9tb250aHMpO1xuXG4gICAgICAgIGRhdGEubWlsbGlzZWNvbmRzICA9IG1hdGhBYnMoZGF0YS5taWxsaXNlY29uZHMpO1xuICAgICAgICBkYXRhLnNlY29uZHMgICAgICAgPSBtYXRoQWJzKGRhdGEuc2Vjb25kcyk7XG4gICAgICAgIGRhdGEubWludXRlcyAgICAgICA9IG1hdGhBYnMoZGF0YS5taW51dGVzKTtcbiAgICAgICAgZGF0YS5ob3VycyAgICAgICAgID0gbWF0aEFicyhkYXRhLmhvdXJzKTtcbiAgICAgICAgZGF0YS5tb250aHMgICAgICAgID0gbWF0aEFicyhkYXRhLm1vbnRocyk7XG4gICAgICAgIGRhdGEueWVhcnMgICAgICAgICA9IG1hdGhBYnMoZGF0YS55ZWFycyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkU3VidHJhY3QkMSAoZHVyYXRpb24sIGlucHV0LCB2YWx1ZSwgZGlyZWN0aW9uKSB7XG4gICAgICAgIHZhciBvdGhlciA9IGNyZWF0ZUR1cmF0aW9uKGlucHV0LCB2YWx1ZSk7XG5cbiAgICAgICAgZHVyYXRpb24uX21pbGxpc2Vjb25kcyArPSBkaXJlY3Rpb24gKiBvdGhlci5fbWlsbGlzZWNvbmRzO1xuICAgICAgICBkdXJhdGlvbi5fZGF5cyAgICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9kYXlzO1xuICAgICAgICBkdXJhdGlvbi5fbW9udGhzICAgICAgICs9IGRpcmVjdGlvbiAqIG90aGVyLl9tb250aHM7XG5cbiAgICAgICAgcmV0dXJuIGR1cmF0aW9uLl9idWJibGUoKTtcbiAgICB9XG5cbiAgICAvLyBzdXBwb3J0cyBvbmx5IDIuMC1zdHlsZSBhZGQoMSwgJ3MnKSBvciBhZGQoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gYWRkJDEgKGlucHV0LCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gYWRkU3VidHJhY3QkMSh0aGlzLCBpbnB1dCwgdmFsdWUsIDEpO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnRzIG9ubHkgMi4wLXN0eWxlIHN1YnRyYWN0KDEsICdzJykgb3Igc3VidHJhY3QoZHVyYXRpb24pXG4gICAgZnVuY3Rpb24gc3VidHJhY3QkMSAoaW5wdXQsIHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBhZGRTdWJ0cmFjdCQxKHRoaXMsIGlucHV0LCB2YWx1ZSwgLTEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFic0NlaWwgKG51bWJlcikge1xuICAgICAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwobnVtYmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1YmJsZSAoKSB7XG4gICAgICAgIHZhciBtaWxsaXNlY29uZHMgPSB0aGlzLl9taWxsaXNlY29uZHM7XG4gICAgICAgIHZhciBkYXlzICAgICAgICAgPSB0aGlzLl9kYXlzO1xuICAgICAgICB2YXIgbW9udGhzICAgICAgID0gdGhpcy5fbW9udGhzO1xuICAgICAgICB2YXIgZGF0YSAgICAgICAgID0gdGhpcy5fZGF0YTtcbiAgICAgICAgdmFyIHNlY29uZHMsIG1pbnV0ZXMsIGhvdXJzLCB5ZWFycywgbW9udGhzRnJvbURheXM7XG5cbiAgICAgICAgLy8gaWYgd2UgaGF2ZSBhIG1peCBvZiBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgdmFsdWVzLCBidWJibGUgZG93biBmaXJzdFxuICAgICAgICAvLyBjaGVjazogaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzIxNjZcbiAgICAgICAgaWYgKCEoKG1pbGxpc2Vjb25kcyA+PSAwICYmIGRheXMgPj0gMCAmJiBtb250aHMgPj0gMCkgfHxcbiAgICAgICAgICAgICAgICAobWlsbGlzZWNvbmRzIDw9IDAgJiYgZGF5cyA8PSAwICYmIG1vbnRocyA8PSAwKSkpIHtcbiAgICAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBhYnNDZWlsKG1vbnRoc1RvRGF5cyhtb250aHMpICsgZGF5cykgKiA4NjRlNTtcbiAgICAgICAgICAgIGRheXMgPSAwO1xuICAgICAgICAgICAgbW9udGhzID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY29kZSBidWJibGVzIHVwIHZhbHVlcywgc2VlIHRoZSB0ZXN0cyBmb3JcbiAgICAgICAgLy8gZXhhbXBsZXMgb2Ygd2hhdCB0aGF0IG1lYW5zLlxuICAgICAgICBkYXRhLm1pbGxpc2Vjb25kcyA9IG1pbGxpc2Vjb25kcyAlIDEwMDA7XG5cbiAgICAgICAgc2Vjb25kcyAgICAgICAgICAgPSBhYnNGbG9vcihtaWxsaXNlY29uZHMgLyAxMDAwKTtcbiAgICAgICAgZGF0YS5zZWNvbmRzICAgICAgPSBzZWNvbmRzICUgNjA7XG5cbiAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBkYXRhLm1pbnV0ZXMgICAgICA9IG1pbnV0ZXMgJSA2MDtcblxuICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIGRhdGEuaG91cnMgICAgICAgID0gaG91cnMgJSAyNDtcblxuICAgICAgICBkYXlzICs9IGFic0Zsb29yKGhvdXJzIC8gMjQpO1xuXG4gICAgICAgIC8vIGNvbnZlcnQgZGF5cyB0byBtb250aHNcbiAgICAgICAgbW9udGhzRnJvbURheXMgPSBhYnNGbG9vcihkYXlzVG9Nb250aHMoZGF5cykpO1xuICAgICAgICBtb250aHMgKz0gbW9udGhzRnJvbURheXM7XG4gICAgICAgIGRheXMgLT0gYWJzQ2VpbChtb250aHNUb0RheXMobW9udGhzRnJvbURheXMpKTtcblxuICAgICAgICAvLyAxMiBtb250aHMgLT4gMSB5ZWFyXG4gICAgICAgIHllYXJzID0gYWJzRmxvb3IobW9udGhzIC8gMTIpO1xuICAgICAgICBtb250aHMgJT0gMTI7XG5cbiAgICAgICAgZGF0YS5kYXlzICAgPSBkYXlzO1xuICAgICAgICBkYXRhLm1vbnRocyA9IG1vbnRocztcbiAgICAgICAgZGF0YS55ZWFycyAgPSB5ZWFycztcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXlzVG9Nb250aHMgKGRheXMpIHtcbiAgICAgICAgLy8gNDAwIHllYXJzIGhhdmUgMTQ2MDk3IGRheXMgKHRha2luZyBpbnRvIGFjY291bnQgbGVhcCB5ZWFyIHJ1bGVzKVxuICAgICAgICAvLyA0MDAgeWVhcnMgaGF2ZSAxMiBtb250aHMgPT09IDQ4MDBcbiAgICAgICAgcmV0dXJuIGRheXMgKiA0ODAwIC8gMTQ2MDk3O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1vbnRoc1RvRGF5cyAobW9udGhzKSB7XG4gICAgICAgIC8vIHRoZSByZXZlcnNlIG9mIGRheXNUb01vbnRoc1xuICAgICAgICByZXR1cm4gbW9udGhzICogMTQ2MDk3IC8gNDgwMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcyAodW5pdHMpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZGF5cztcbiAgICAgICAgdmFyIG1vbnRocztcbiAgICAgICAgdmFyIG1pbGxpc2Vjb25kcyA9IHRoaXMuX21pbGxpc2Vjb25kcztcblxuICAgICAgICB1bml0cyA9IG5vcm1hbGl6ZVVuaXRzKHVuaXRzKTtcblxuICAgICAgICBpZiAodW5pdHMgPT09ICdtb250aCcgfHwgdW5pdHMgPT09ICd5ZWFyJykge1xuICAgICAgICAgICAgZGF5cyAgID0gdGhpcy5fZGF5cyAgICsgbWlsbGlzZWNvbmRzIC8gODY0ZTU7XG4gICAgICAgICAgICBtb250aHMgPSB0aGlzLl9tb250aHMgKyBkYXlzVG9Nb250aHMoZGF5cyk7XG4gICAgICAgICAgICByZXR1cm4gdW5pdHMgPT09ICdtb250aCcgPyBtb250aHMgOiBtb250aHMgLyAxMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGhhbmRsZSBtaWxsaXNlY29uZHMgc2VwYXJhdGVseSBiZWNhdXNlIG9mIGZsb2F0aW5nIHBvaW50IG1hdGggZXJyb3JzIChpc3N1ZSAjMTg2NylcbiAgICAgICAgICAgIGRheXMgPSB0aGlzLl9kYXlzICsgTWF0aC5yb3VuZChtb250aHNUb0RheXModGhpcy5fbW9udGhzKSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHVuaXRzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnd2VlaycgICA6IHJldHVybiBkYXlzIC8gNyAgICAgKyBtaWxsaXNlY29uZHMgLyA2MDQ4ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGF5JyAgICA6IHJldHVybiBkYXlzICAgICAgICAgKyBtaWxsaXNlY29uZHMgLyA4NjRlNTtcbiAgICAgICAgICAgICAgICBjYXNlICdob3VyJyAgIDogcmV0dXJuIGRheXMgKiAyNCAgICArIG1pbGxpc2Vjb25kcyAvIDM2ZTU7XG4gICAgICAgICAgICAgICAgY2FzZSAnbWludXRlJyA6IHJldHVybiBkYXlzICogMTQ0MCAgKyBtaWxsaXNlY29uZHMgLyA2ZTQ7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kJyA6IHJldHVybiBkYXlzICogODY0MDAgKyBtaWxsaXNlY29uZHMgLyAxMDAwO1xuICAgICAgICAgICAgICAgIC8vIE1hdGguZmxvb3IgcHJldmVudHMgZmxvYXRpbmcgcG9pbnQgbWF0aCBlcnJvcnMgaGVyZVxuICAgICAgICAgICAgICAgIGNhc2UgJ21pbGxpc2Vjb25kJzogcmV0dXJuIE1hdGguZmxvb3IoZGF5cyAqIDg2NGU1KSArIG1pbGxpc2Vjb25kcztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdW5pdCAnICsgdW5pdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogVXNlIHRoaXMuYXMoJ21zJyk/XG4gICAgZnVuY3Rpb24gdmFsdWVPZiQxICgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIE5hTjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5fbWlsbGlzZWNvbmRzICtcbiAgICAgICAgICAgIHRoaXMuX2RheXMgKiA4NjRlNSArXG4gICAgICAgICAgICAodGhpcy5fbW9udGhzICUgMTIpICogMjU5MmU2ICtcbiAgICAgICAgICAgIHRvSW50KHRoaXMuX21vbnRocyAvIDEyKSAqIDMxNTM2ZTZcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlQXMgKGFsaWFzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hcyhhbGlhcyk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGFzTWlsbGlzZWNvbmRzID0gbWFrZUFzKCdtcycpO1xuICAgIHZhciBhc1NlY29uZHMgICAgICA9IG1ha2VBcygncycpO1xuICAgIHZhciBhc01pbnV0ZXMgICAgICA9IG1ha2VBcygnbScpO1xuICAgIHZhciBhc0hvdXJzICAgICAgICA9IG1ha2VBcygnaCcpO1xuICAgIHZhciBhc0RheXMgICAgICAgICA9IG1ha2VBcygnZCcpO1xuICAgIHZhciBhc1dlZWtzICAgICAgICA9IG1ha2VBcygndycpO1xuICAgIHZhciBhc01vbnRocyAgICAgICA9IG1ha2VBcygnTScpO1xuICAgIHZhciBhc1llYXJzICAgICAgICA9IG1ha2VBcygneScpO1xuXG4gICAgZnVuY3Rpb24gY2xvbmUkMSAoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVEdXJhdGlvbih0aGlzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXQkMiAodW5pdHMpIHtcbiAgICAgICAgdW5pdHMgPSBub3JtYWxpemVVbml0cyh1bml0cyk7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWQoKSA/IHRoaXNbdW5pdHMgKyAncyddKCkgOiBOYU47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZUdldHRlcihuYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkKCkgPyB0aGlzLl9kYXRhW25hbWVdIDogTmFOO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBtaWxsaXNlY29uZHMgPSBtYWtlR2V0dGVyKCdtaWxsaXNlY29uZHMnKTtcbiAgICB2YXIgc2Vjb25kcyAgICAgID0gbWFrZUdldHRlcignc2Vjb25kcycpO1xuICAgIHZhciBtaW51dGVzICAgICAgPSBtYWtlR2V0dGVyKCdtaW51dGVzJyk7XG4gICAgdmFyIGhvdXJzICAgICAgICA9IG1ha2VHZXR0ZXIoJ2hvdXJzJyk7XG4gICAgdmFyIGRheXMgICAgICAgICA9IG1ha2VHZXR0ZXIoJ2RheXMnKTtcbiAgICB2YXIgbW9udGhzICAgICAgID0gbWFrZUdldHRlcignbW9udGhzJyk7XG4gICAgdmFyIHllYXJzICAgICAgICA9IG1ha2VHZXR0ZXIoJ3llYXJzJyk7XG5cbiAgICBmdW5jdGlvbiB3ZWVrcyAoKSB7XG4gICAgICAgIHJldHVybiBhYnNGbG9vcih0aGlzLmRheXMoKSAvIDcpO1xuICAgIH1cblxuICAgIHZhciByb3VuZCA9IE1hdGgucm91bmQ7XG4gICAgdmFyIHRocmVzaG9sZHMgPSB7XG4gICAgICAgIHNzOiA0NCwgICAgICAgICAvLyBhIGZldyBzZWNvbmRzIHRvIHNlY29uZHNcbiAgICAgICAgcyA6IDQ1LCAgICAgICAgIC8vIHNlY29uZHMgdG8gbWludXRlXG4gICAgICAgIG0gOiA0NSwgICAgICAgICAvLyBtaW51dGVzIHRvIGhvdXJcbiAgICAgICAgaCA6IDIyLCAgICAgICAgIC8vIGhvdXJzIHRvIGRheVxuICAgICAgICBkIDogMjYsICAgICAgICAgLy8gZGF5cyB0byBtb250aFxuICAgICAgICBNIDogMTEgICAgICAgICAgLy8gbW9udGhzIHRvIHllYXJcbiAgICB9O1xuXG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uIGZvciBtb21lbnQuZm4uZnJvbSwgbW9tZW50LmZuLmZyb21Ob3csIGFuZCBtb21lbnQuZHVyYXRpb24uZm4uaHVtYW5pemVcbiAgICBmdW5jdGlvbiBzdWJzdGl0dXRlVGltZUFnbyhzdHJpbmcsIG51bWJlciwgd2l0aG91dFN1ZmZpeCwgaXNGdXR1cmUsIGxvY2FsZSkge1xuICAgICAgICByZXR1cm4gbG9jYWxlLnJlbGF0aXZlVGltZShudW1iZXIgfHwgMSwgISF3aXRob3V0U3VmZml4LCBzdHJpbmcsIGlzRnV0dXJlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUkMSAocG9zTmVnRHVyYXRpb24sIHdpdGhvdXRTdWZmaXgsIGxvY2FsZSkge1xuICAgICAgICB2YXIgZHVyYXRpb24gPSBjcmVhdGVEdXJhdGlvbihwb3NOZWdEdXJhdGlvbikuYWJzKCk7XG4gICAgICAgIHZhciBzZWNvbmRzICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdzJykpO1xuICAgICAgICB2YXIgbWludXRlcyAgPSByb3VuZChkdXJhdGlvbi5hcygnbScpKTtcbiAgICAgICAgdmFyIGhvdXJzICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ2gnKSk7XG4gICAgICAgIHZhciBkYXlzICAgICA9IHJvdW5kKGR1cmF0aW9uLmFzKCdkJykpO1xuICAgICAgICB2YXIgbW9udGhzICAgPSByb3VuZChkdXJhdGlvbi5hcygnTScpKTtcbiAgICAgICAgdmFyIHllYXJzICAgID0gcm91bmQoZHVyYXRpb24uYXMoJ3knKSk7XG5cbiAgICAgICAgdmFyIGEgPSBzZWNvbmRzIDw9IHRocmVzaG9sZHMuc3MgJiYgWydzJywgc2Vjb25kc10gIHx8XG4gICAgICAgICAgICAgICAgc2Vjb25kcyA8IHRocmVzaG9sZHMucyAgICYmIFsnc3MnLCBzZWNvbmRzXSB8fFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMgPD0gMSAgICAgICAgICAgICAmJiBbJ20nXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBtaW51dGVzIDwgdGhyZXNob2xkcy5tICAgJiYgWydtbScsIG1pbnV0ZXNdIHx8XG4gICAgICAgICAgICAgICAgaG91cnMgICA8PSAxICAgICAgICAgICAgICYmIFsnaCddICAgICAgICAgICB8fFxuICAgICAgICAgICAgICAgIGhvdXJzICAgPCB0aHJlc2hvbGRzLmggICAmJiBbJ2hoJywgaG91cnNdICAgfHxcbiAgICAgICAgICAgICAgICBkYXlzICAgIDw9IDEgICAgICAgICAgICAgJiYgWydkJ10gICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgZGF5cyAgICA8IHRocmVzaG9sZHMuZCAgICYmIFsnZGQnLCBkYXlzXSAgICB8fFxuICAgICAgICAgICAgICAgIG1vbnRocyAgPD0gMSAgICAgICAgICAgICAmJiBbJ00nXSAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICBtb250aHMgIDwgdGhyZXNob2xkcy5NICAgJiYgWydNTScsIG1vbnRoc10gIHx8XG4gICAgICAgICAgICAgICAgeWVhcnMgICA8PSAxICAgICAgICAgICAgICYmIFsneSddICAgICAgICAgICB8fCBbJ3l5JywgeWVhcnNdO1xuXG4gICAgICAgIGFbMl0gPSB3aXRob3V0U3VmZml4O1xuICAgICAgICBhWzNdID0gK3Bvc05lZ0R1cmF0aW9uID4gMDtcbiAgICAgICAgYVs0XSA9IGxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHN1YnN0aXR1dGVUaW1lQWdvLmFwcGx5KG51bGwsIGEpO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgdGhlIHJvdW5kaW5nIGZ1bmN0aW9uIGZvciByZWxhdGl2ZSB0aW1lIHN0cmluZ3NcbiAgICBmdW5jdGlvbiBnZXRTZXRSZWxhdGl2ZVRpbWVSb3VuZGluZyAocm91bmRpbmdGdW5jdGlvbikge1xuICAgICAgICBpZiAocm91bmRpbmdGdW5jdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcm91bmQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZihyb3VuZGluZ0Z1bmN0aW9uKSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcm91bmQgPSByb3VuZGluZ0Z1bmN0aW9uO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byBzZXQgYSB0aHJlc2hvbGQgZm9yIHJlbGF0aXZlIHRpbWUgc3RyaW5nc1xuICAgIGZ1bmN0aW9uIGdldFNldFJlbGF0aXZlVGltZVRocmVzaG9sZCAodGhyZXNob2xkLCBsaW1pdCkge1xuICAgICAgICBpZiAodGhyZXNob2xkc1t0aHJlc2hvbGRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobGltaXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRocmVzaG9sZHNbdGhyZXNob2xkXTtcbiAgICAgICAgfVxuICAgICAgICB0aHJlc2hvbGRzW3RocmVzaG9sZF0gPSBsaW1pdDtcbiAgICAgICAgaWYgKHRocmVzaG9sZCA9PT0gJ3MnKSB7XG4gICAgICAgICAgICB0aHJlc2hvbGRzLnNzID0gbGltaXQgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGh1bWFuaXplICh3aXRoU3VmZml4KSB7XG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGxvY2FsZSA9IHRoaXMubG9jYWxlRGF0YSgpO1xuICAgICAgICB2YXIgb3V0cHV0ID0gcmVsYXRpdmVUaW1lJDEodGhpcywgIXdpdGhTdWZmaXgsIGxvY2FsZSk7XG5cbiAgICAgICAgaWYgKHdpdGhTdWZmaXgpIHtcbiAgICAgICAgICAgIG91dHB1dCA9IGxvY2FsZS5wYXN0RnV0dXJlKCt0aGlzLCBvdXRwdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxvY2FsZS5wb3N0Zm9ybWF0KG91dHB1dCk7XG4gICAgfVxuXG4gICAgdmFyIGFicyQxID0gTWF0aC5hYnM7XG5cbiAgICBmdW5jdGlvbiBzaWduKHgpIHtcbiAgICAgICAgcmV0dXJuICgoeCA+IDApIC0gKHggPCAwKSkgfHwgK3g7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9JU09TdHJpbmckMSgpIHtcbiAgICAgICAgLy8gZm9yIElTTyBzdHJpbmdzIHdlIGRvIG5vdCB1c2UgdGhlIG5vcm1hbCBidWJibGluZyBydWxlczpcbiAgICAgICAgLy8gICogbWlsbGlzZWNvbmRzIGJ1YmJsZSB1cCB1bnRpbCB0aGV5IGJlY29tZSBob3Vyc1xuICAgICAgICAvLyAgKiBkYXlzIGRvIG5vdCBidWJibGUgYXQgYWxsXG4gICAgICAgIC8vICAqIG1vbnRocyBidWJibGUgdXAgdW50aWwgdGhleSBiZWNvbWUgeWVhcnNcbiAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIHRoZXJlIGlzIG5vIGNvbnRleHQtZnJlZSBjb252ZXJzaW9uIGJldHdlZW4gaG91cnMgYW5kIGRheXNcbiAgICAgICAgLy8gKHRoaW5rIG9mIGNsb2NrIGNoYW5nZXMpXG4gICAgICAgIC8vIGFuZCBhbHNvIG5vdCBiZXR3ZWVuIGRheXMgYW5kIG1vbnRocyAoMjgtMzEgZGF5cyBwZXIgbW9udGgpXG4gICAgICAgIGlmICghdGhpcy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHNlY29uZHMgPSBhYnMkMSh0aGlzLl9taWxsaXNlY29uZHMpIC8gMTAwMDtcbiAgICAgICAgdmFyIGRheXMgICAgICAgICA9IGFicyQxKHRoaXMuX2RheXMpO1xuICAgICAgICB2YXIgbW9udGhzICAgICAgID0gYWJzJDEodGhpcy5fbW9udGhzKTtcbiAgICAgICAgdmFyIG1pbnV0ZXMsIGhvdXJzLCB5ZWFycztcblxuICAgICAgICAvLyAzNjAwIHNlY29uZHMgLT4gNjAgbWludXRlcyAtPiAxIGhvdXJcbiAgICAgICAgbWludXRlcyAgICAgICAgICAgPSBhYnNGbG9vcihzZWNvbmRzIC8gNjApO1xuICAgICAgICBob3VycyAgICAgICAgICAgICA9IGFic0Zsb29yKG1pbnV0ZXMgLyA2MCk7XG4gICAgICAgIHNlY29uZHMgJT0gNjA7XG4gICAgICAgIG1pbnV0ZXMgJT0gNjA7XG5cbiAgICAgICAgLy8gMTIgbW9udGhzIC0+IDEgeWVhclxuICAgICAgICB5ZWFycyAgPSBhYnNGbG9vcihtb250aHMgLyAxMik7XG4gICAgICAgIG1vbnRocyAlPSAxMjtcblxuXG4gICAgICAgIC8vIGluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9kb3JkaWxsZS9tb21lbnQtaXNvZHVyYXRpb24vYmxvYi9tYXN0ZXIvbW9tZW50Lmlzb2R1cmF0aW9uLmpzXG4gICAgICAgIHZhciBZID0geWVhcnM7XG4gICAgICAgIHZhciBNID0gbW9udGhzO1xuICAgICAgICB2YXIgRCA9IGRheXM7XG4gICAgICAgIHZhciBoID0gaG91cnM7XG4gICAgICAgIHZhciBtID0gbWludXRlcztcbiAgICAgICAgdmFyIHMgPSBzZWNvbmRzID8gc2Vjb25kcy50b0ZpeGVkKDMpLnJlcGxhY2UoL1xcLj8wKyQvLCAnJykgOiAnJztcbiAgICAgICAgdmFyIHRvdGFsID0gdGhpcy5hc1NlY29uZHMoKTtcblxuICAgICAgICBpZiAoIXRvdGFsKSB7XG4gICAgICAgICAgICAvLyB0aGlzIGlzIHRoZSBzYW1lIGFzIEMjJ3MgKE5vZGEpIGFuZCBweXRob24gKGlzb2RhdGUpLi4uXG4gICAgICAgICAgICAvLyBidXQgbm90IG90aGVyIEpTIChnb29nLmRhdGUpXG4gICAgICAgICAgICByZXR1cm4gJ1AwRCc7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdG90YWxTaWduID0gdG90YWwgPCAwID8gJy0nIDogJyc7XG4gICAgICAgIHZhciB5bVNpZ24gPSBzaWduKHRoaXMuX21vbnRocykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG4gICAgICAgIHZhciBkYXlzU2lnbiA9IHNpZ24odGhpcy5fZGF5cykgIT09IHNpZ24odG90YWwpID8gJy0nIDogJyc7XG4gICAgICAgIHZhciBobXNTaWduID0gc2lnbih0aGlzLl9taWxsaXNlY29uZHMpICE9PSBzaWduKHRvdGFsKSA/ICctJyA6ICcnO1xuXG4gICAgICAgIHJldHVybiB0b3RhbFNpZ24gKyAnUCcgK1xuICAgICAgICAgICAgKFkgPyB5bVNpZ24gKyBZICsgJ1knIDogJycpICtcbiAgICAgICAgICAgIChNID8geW1TaWduICsgTSArICdNJyA6ICcnKSArXG4gICAgICAgICAgICAoRCA/IGRheXNTaWduICsgRCArICdEJyA6ICcnKSArXG4gICAgICAgICAgICAoKGggfHwgbSB8fCBzKSA/ICdUJyA6ICcnKSArXG4gICAgICAgICAgICAoaCA/IGhtc1NpZ24gKyBoICsgJ0gnIDogJycpICtcbiAgICAgICAgICAgIChtID8gaG1zU2lnbiArIG0gKyAnTScgOiAnJykgK1xuICAgICAgICAgICAgKHMgPyBobXNTaWduICsgcyArICdTJyA6ICcnKTtcbiAgICB9XG5cbiAgICB2YXIgcHJvdG8kMiA9IER1cmF0aW9uLnByb3RvdHlwZTtcblxuICAgIHByb3RvJDIuaXNWYWxpZCAgICAgICAgPSBpc1ZhbGlkJDE7XG4gICAgcHJvdG8kMi5hYnMgICAgICAgICAgICA9IGFicztcbiAgICBwcm90byQyLmFkZCAgICAgICAgICAgID0gYWRkJDE7XG4gICAgcHJvdG8kMi5zdWJ0cmFjdCAgICAgICA9IHN1YnRyYWN0JDE7XG4gICAgcHJvdG8kMi5hcyAgICAgICAgICAgICA9IGFzO1xuICAgIHByb3RvJDIuYXNNaWxsaXNlY29uZHMgPSBhc01pbGxpc2Vjb25kcztcbiAgICBwcm90byQyLmFzU2Vjb25kcyAgICAgID0gYXNTZWNvbmRzO1xuICAgIHByb3RvJDIuYXNNaW51dGVzICAgICAgPSBhc01pbnV0ZXM7XG4gICAgcHJvdG8kMi5hc0hvdXJzICAgICAgICA9IGFzSG91cnM7XG4gICAgcHJvdG8kMi5hc0RheXMgICAgICAgICA9IGFzRGF5cztcbiAgICBwcm90byQyLmFzV2Vla3MgICAgICAgID0gYXNXZWVrcztcbiAgICBwcm90byQyLmFzTW9udGhzICAgICAgID0gYXNNb250aHM7XG4gICAgcHJvdG8kMi5hc1llYXJzICAgICAgICA9IGFzWWVhcnM7XG4gICAgcHJvdG8kMi52YWx1ZU9mICAgICAgICA9IHZhbHVlT2YkMTtcbiAgICBwcm90byQyLl9idWJibGUgICAgICAgID0gYnViYmxlO1xuICAgIHByb3RvJDIuY2xvbmUgICAgICAgICAgPSBjbG9uZSQxO1xuICAgIHByb3RvJDIuZ2V0ICAgICAgICAgICAgPSBnZXQkMjtcbiAgICBwcm90byQyLm1pbGxpc2Vjb25kcyAgID0gbWlsbGlzZWNvbmRzO1xuICAgIHByb3RvJDIuc2Vjb25kcyAgICAgICAgPSBzZWNvbmRzO1xuICAgIHByb3RvJDIubWludXRlcyAgICAgICAgPSBtaW51dGVzO1xuICAgIHByb3RvJDIuaG91cnMgICAgICAgICAgPSBob3VycztcbiAgICBwcm90byQyLmRheXMgICAgICAgICAgID0gZGF5cztcbiAgICBwcm90byQyLndlZWtzICAgICAgICAgID0gd2Vla3M7XG4gICAgcHJvdG8kMi5tb250aHMgICAgICAgICA9IG1vbnRocztcbiAgICBwcm90byQyLnllYXJzICAgICAgICAgID0geWVhcnM7XG4gICAgcHJvdG8kMi5odW1hbml6ZSAgICAgICA9IGh1bWFuaXplO1xuICAgIHByb3RvJDIudG9JU09TdHJpbmcgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIudG9TdHJpbmcgICAgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIudG9KU09OICAgICAgICAgPSB0b0lTT1N0cmluZyQxO1xuICAgIHByb3RvJDIubG9jYWxlICAgICAgICAgPSBsb2NhbGU7XG4gICAgcHJvdG8kMi5sb2NhbGVEYXRhICAgICA9IGxvY2FsZURhdGE7XG5cbiAgICBwcm90byQyLnRvSXNvU3RyaW5nID0gZGVwcmVjYXRlKCd0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKScsIHRvSVNPU3RyaW5nJDEpO1xuICAgIHByb3RvJDIubGFuZyA9IGxhbmc7XG5cbiAgICAvLyBTaWRlIGVmZmVjdCBpbXBvcnRzXG5cbiAgICAvLyBGT1JNQVRUSU5HXG5cbiAgICBhZGRGb3JtYXRUb2tlbignWCcsIDAsIDAsICd1bml4Jyk7XG4gICAgYWRkRm9ybWF0VG9rZW4oJ3gnLCAwLCAwLCAndmFsdWVPZicpO1xuXG4gICAgLy8gUEFSU0lOR1xuXG4gICAgYWRkUmVnZXhUb2tlbigneCcsIG1hdGNoU2lnbmVkKTtcbiAgICBhZGRSZWdleFRva2VuKCdYJywgbWF0Y2hUaW1lc3RhbXApO1xuICAgIGFkZFBhcnNlVG9rZW4oJ1gnLCBmdW5jdGlvbiAoaW5wdXQsIGFycmF5LCBjb25maWcpIHtcbiAgICAgICAgY29uZmlnLl9kID0gbmV3IERhdGUocGFyc2VGbG9hdChpbnB1dCwgMTApICogMTAwMCk7XG4gICAgfSk7XG4gICAgYWRkUGFyc2VUb2tlbigneCcsIGZ1bmN0aW9uIChpbnB1dCwgYXJyYXksIGNvbmZpZykge1xuICAgICAgICBjb25maWcuX2QgPSBuZXcgRGF0ZSh0b0ludChpbnB1dCkpO1xuICAgIH0pO1xuXG4gICAgLy8gU2lkZSBlZmZlY3QgaW1wb3J0c1xuXG5cbiAgICBob29rcy52ZXJzaW9uID0gJzIuMjIuMic7XG5cbiAgICBzZXRIb29rQ2FsbGJhY2soY3JlYXRlTG9jYWwpO1xuXG4gICAgaG9va3MuZm4gICAgICAgICAgICAgICAgICAgID0gcHJvdG87XG4gICAgaG9va3MubWluICAgICAgICAgICAgICAgICAgID0gbWluO1xuICAgIGhvb2tzLm1heCAgICAgICAgICAgICAgICAgICA9IG1heDtcbiAgICBob29rcy5ub3cgICAgICAgICAgICAgICAgICAgPSBub3c7XG4gICAgaG9va3MudXRjICAgICAgICAgICAgICAgICAgID0gY3JlYXRlVVRDO1xuICAgIGhvb2tzLnVuaXggICAgICAgICAgICAgICAgICA9IGNyZWF0ZVVuaXg7XG4gICAgaG9va3MubW9udGhzICAgICAgICAgICAgICAgID0gbGlzdE1vbnRocztcbiAgICBob29rcy5pc0RhdGUgICAgICAgICAgICAgICAgPSBpc0RhdGU7XG4gICAgaG9va3MubG9jYWxlICAgICAgICAgICAgICAgID0gZ2V0U2V0R2xvYmFsTG9jYWxlO1xuICAgIGhvb2tzLmludmFsaWQgICAgICAgICAgICAgICA9IGNyZWF0ZUludmFsaWQ7XG4gICAgaG9va3MuZHVyYXRpb24gICAgICAgICAgICAgID0gY3JlYXRlRHVyYXRpb247XG4gICAgaG9va3MuaXNNb21lbnQgICAgICAgICAgICAgID0gaXNNb21lbnQ7XG4gICAgaG9va3Mud2Vla2RheXMgICAgICAgICAgICAgID0gbGlzdFdlZWtkYXlzO1xuICAgIGhvb2tzLnBhcnNlWm9uZSAgICAgICAgICAgICA9IGNyZWF0ZUluWm9uZTtcbiAgICBob29rcy5sb2NhbGVEYXRhICAgICAgICAgICAgPSBnZXRMb2NhbGU7XG4gICAgaG9va3MuaXNEdXJhdGlvbiAgICAgICAgICAgID0gaXNEdXJhdGlvbjtcbiAgICBob29rcy5tb250aHNTaG9ydCAgICAgICAgICAgPSBsaXN0TW9udGhzU2hvcnQ7XG4gICAgaG9va3Mud2Vla2RheXNNaW4gICAgICAgICAgID0gbGlzdFdlZWtkYXlzTWluO1xuICAgIGhvb2tzLmRlZmluZUxvY2FsZSAgICAgICAgICA9IGRlZmluZUxvY2FsZTtcbiAgICBob29rcy51cGRhdGVMb2NhbGUgICAgICAgICAgPSB1cGRhdGVMb2NhbGU7XG4gICAgaG9va3MubG9jYWxlcyAgICAgICAgICAgICAgID0gbGlzdExvY2FsZXM7XG4gICAgaG9va3Mud2Vla2RheXNTaG9ydCAgICAgICAgID0gbGlzdFdlZWtkYXlzU2hvcnQ7XG4gICAgaG9va3Mubm9ybWFsaXplVW5pdHMgICAgICAgID0gbm9ybWFsaXplVW5pdHM7XG4gICAgaG9va3MucmVsYXRpdmVUaW1lUm91bmRpbmcgID0gZ2V0U2V0UmVsYXRpdmVUaW1lUm91bmRpbmc7XG4gICAgaG9va3MucmVsYXRpdmVUaW1lVGhyZXNob2xkID0gZ2V0U2V0UmVsYXRpdmVUaW1lVGhyZXNob2xkO1xuICAgIGhvb2tzLmNhbGVuZGFyRm9ybWF0ICAgICAgICA9IGdldENhbGVuZGFyRm9ybWF0O1xuICAgIGhvb2tzLnByb3RvdHlwZSAgICAgICAgICAgICA9IHByb3RvO1xuXG4gICAgLy8gY3VycmVudGx5IEhUTUw1IGlucHV0IHR5cGUgb25seSBzdXBwb3J0cyAyNC1ob3VyIGZvcm1hdHNcbiAgICBob29rcy5IVE1MNV9GTVQgPSB7XG4gICAgICAgIERBVEVUSU1FX0xPQ0FMOiAnWVlZWS1NTS1ERFRISDptbScsICAgICAgICAgICAgIC8vIDxpbnB1dCB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9TRUNPTkRTOiAnWVlZWS1NTS1ERFRISDptbTpzcycsICAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjFcIiAvPlxuICAgICAgICBEQVRFVElNRV9MT0NBTF9NUzogJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTJywgICAvLyA8aW5wdXQgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCIgc3RlcD1cIjAuMDAxXCIgLz5cbiAgICAgICAgREFURTogJ1lZWVktTU0tREQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJkYXRlXCIgLz5cbiAgICAgICAgVElNRTogJ0hIOm1tJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgLz5cbiAgICAgICAgVElNRV9TRUNPTkRTOiAnSEg6bW06c3MnLCAgICAgICAgICAgICAgICAgICAgICAgLy8gPGlucHV0IHR5cGU9XCJ0aW1lXCIgc3RlcD1cIjFcIiAvPlxuICAgICAgICBUSU1FX01TOiAnSEg6bW06c3MuU1NTJywgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cInRpbWVcIiBzdGVwPVwiMC4wMDFcIiAvPlxuICAgICAgICBXRUVLOiAnWVlZWS1bV11XVycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cIndlZWtcIiAvPlxuICAgICAgICBNT05USDogJ1lZWVktTU0nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA8aW5wdXQgdHlwZT1cIm1vbnRoXCIgLz5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGhvb2tzO1xuXG59KSkpOyIsIi8qIVxuICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2My4zLjFcbiAqIGh0dHBzOi8vanF1ZXJ5LmNvbS9cbiAqXG4gKiBJbmNsdWRlcyBTaXp6bGUuanNcbiAqIGh0dHBzOi8vc2l6emxlanMuY29tL1xuICpcbiAqIENvcHlyaWdodCBKUyBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnNcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9qcXVlcnkub3JnL2xpY2Vuc2VcbiAqXG4gKiBEYXRlOiAyMDE4LTAxLTIwVDE3OjI0WlxuICovXG4oIGZ1bmN0aW9uKCBnbG9iYWwsIGZhY3RvcnkgKSB7XG5cblx0XCJ1c2Ugc3RyaWN0XCI7XG5cblx0aWYgKCB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBtb2R1bGUuZXhwb3J0cyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIEZvciBDb21tb25KUyBhbmQgQ29tbW9uSlMtbGlrZSBlbnZpcm9ubWVudHMgd2hlcmUgYSBwcm9wZXIgYHdpbmRvd2Bcblx0XHQvLyBpcyBwcmVzZW50LCBleGVjdXRlIHRoZSBmYWN0b3J5IGFuZCBnZXQgalF1ZXJ5LlxuXHRcdC8vIEZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3QgaGF2ZSBhIGB3aW5kb3dgIHdpdGggYSBgZG9jdW1lbnRgXG5cdFx0Ly8gKHN1Y2ggYXMgTm9kZS5qcyksIGV4cG9zZSBhIGZhY3RvcnkgYXMgbW9kdWxlLmV4cG9ydHMuXG5cdFx0Ly8gVGhpcyBhY2NlbnR1YXRlcyB0aGUgbmVlZCBmb3IgdGhlIGNyZWF0aW9uIG9mIGEgcmVhbCBgd2luZG93YC5cblx0XHQvLyBlLmcuIHZhciBqUXVlcnkgPSByZXF1aXJlKFwianF1ZXJ5XCIpKHdpbmRvdyk7XG5cdFx0Ly8gU2VlIHRpY2tldCAjMTQ1NDkgZm9yIG1vcmUgaW5mby5cblx0XHRtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5kb2N1bWVudCA/XG5cdFx0XHRmYWN0b3J5KCBnbG9iYWwsIHRydWUgKSA6XG5cdFx0XHRmdW5jdGlvbiggdyApIHtcblx0XHRcdFx0aWYgKCAhdy5kb2N1bWVudCApIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoIFwialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudFwiICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhY3RvcnkoIHcgKTtcblx0XHRcdH07XG5cdH0gZWxzZSB7XG5cdFx0ZmFjdG9yeSggZ2xvYmFsICk7XG5cdH1cblxuLy8gUGFzcyB0aGlzIGlmIHdpbmRvdyBpcyBub3QgZGVmaW5lZCB5ZXRcbn0gKSggdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHRoaXMsIGZ1bmN0aW9uKCB3aW5kb3csIG5vR2xvYmFsICkge1xuXG4vLyBFZGdlIDw9IDEyIC0gMTMrLCBGaXJlZm94IDw9MTggLSA0NSssIElFIDEwIC0gMTEsIFNhZmFyaSA1LjEgLSA5KywgaU9TIDYgLSA5LjFcbi8vIHRocm93IGV4Y2VwdGlvbnMgd2hlbiBub24tc3RyaWN0IGNvZGUgKGUuZy4sIEFTUC5ORVQgNC41KSBhY2Nlc3NlcyBzdHJpY3QgbW9kZVxuLy8gYXJndW1lbnRzLmNhbGxlZS5jYWxsZXIgKHRyYWMtMTMzMzUpLiBCdXQgYXMgb2YgalF1ZXJ5IDMuMCAoMjAxNiksIHN0cmljdCBtb2RlIHNob3VsZCBiZSBjb21tb25cbi8vIGVub3VnaCB0aGF0IGFsbCBzdWNoIGF0dGVtcHRzIGFyZSBndWFyZGVkIGluIGEgdHJ5IGJsb2NrLlxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBhcnIgPSBbXTtcblxudmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50O1xuXG52YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG5cbnZhciBzbGljZSA9IGFyci5zbGljZTtcblxudmFyIGNvbmNhdCA9IGFyci5jb25jYXQ7XG5cbnZhciBwdXNoID0gYXJyLnB1c2g7XG5cbnZhciBpbmRleE9mID0gYXJyLmluZGV4T2Y7XG5cbnZhciBjbGFzczJ0eXBlID0ge307XG5cbnZhciB0b1N0cmluZyA9IGNsYXNzMnR5cGUudG9TdHJpbmc7XG5cbnZhciBoYXNPd24gPSBjbGFzczJ0eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgZm5Ub1N0cmluZyA9IGhhc093bi50b1N0cmluZztcblxudmFyIE9iamVjdEZ1bmN0aW9uU3RyaW5nID0gZm5Ub1N0cmluZy5jYWxsKCBPYmplY3QgKTtcblxudmFyIHN1cHBvcnQgPSB7fTtcblxudmFyIGlzRnVuY3Rpb24gPSBmdW5jdGlvbiBpc0Z1bmN0aW9uKCBvYmogKSB7XG5cbiAgICAgIC8vIFN1cHBvcnQ6IENocm9tZSA8PTU3LCBGaXJlZm94IDw9NTJcbiAgICAgIC8vIEluIHNvbWUgYnJvd3NlcnMsIHR5cGVvZiByZXR1cm5zIFwiZnVuY3Rpb25cIiBmb3IgSFRNTCA8b2JqZWN0PiBlbGVtZW50c1xuICAgICAgLy8gKGkuZS4sIGB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJvYmplY3RcIiApID09PSBcImZ1bmN0aW9uXCJgKS5cbiAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gY2xhc3NpZnkgKmFueSogRE9NIG5vZGUgYXMgYSBmdW5jdGlvbi5cbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIG9iai5ub2RlVHlwZSAhPT0gXCJudW1iZXJcIjtcbiAgfTtcblxuXG52YXIgaXNXaW5kb3cgPSBmdW5jdGlvbiBpc1dpbmRvdyggb2JqICkge1xuXHRcdHJldHVybiBvYmogIT0gbnVsbCAmJiBvYmogPT09IG9iai53aW5kb3c7XG5cdH07XG5cblxuXG5cblx0dmFyIHByZXNlcnZlZFNjcmlwdEF0dHJpYnV0ZXMgPSB7XG5cdFx0dHlwZTogdHJ1ZSxcblx0XHRzcmM6IHRydWUsXG5cdFx0bm9Nb2R1bGU6IHRydWVcblx0fTtcblxuXHRmdW5jdGlvbiBET01FdmFsKCBjb2RlLCBkb2MsIG5vZGUgKSB7XG5cdFx0ZG9jID0gZG9jIHx8IGRvY3VtZW50O1xuXG5cdFx0dmFyIGksXG5cdFx0XHRzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCggXCJzY3JpcHRcIiApO1xuXG5cdFx0c2NyaXB0LnRleHQgPSBjb2RlO1xuXHRcdGlmICggbm9kZSApIHtcblx0XHRcdGZvciAoIGkgaW4gcHJlc2VydmVkU2NyaXB0QXR0cmlidXRlcyApIHtcblx0XHRcdFx0aWYgKCBub2RlWyBpIF0gKSB7XG5cdFx0XHRcdFx0c2NyaXB0WyBpIF0gPSBub2RlWyBpIF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0ZG9jLmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdCApLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHNjcmlwdCApO1xuXHR9XG5cblxuZnVuY3Rpb24gdG9UeXBlKCBvYmogKSB7XG5cdGlmICggb2JqID09IG51bGwgKSB7XG5cdFx0cmV0dXJuIG9iaiArIFwiXCI7XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHkgKGZ1bmN0aW9uaXNoIFJlZ0V4cClcblx0cmV0dXJuIHR5cGVvZiBvYmogPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIG9iaiA9PT0gXCJmdW5jdGlvblwiID9cblx0XHRjbGFzczJ0eXBlWyB0b1N0cmluZy5jYWxsKCBvYmogKSBdIHx8IFwib2JqZWN0XCIgOlxuXHRcdHR5cGVvZiBvYmo7XG59XG4vKiBnbG9iYWwgU3ltYm9sICovXG4vLyBEZWZpbmluZyB0aGlzIGdsb2JhbCBpbiAuZXNsaW50cmMuanNvbiB3b3VsZCBjcmVhdGUgYSBkYW5nZXIgb2YgdXNpbmcgdGhlIGdsb2JhbFxuLy8gdW5ndWFyZGVkIGluIGFub3RoZXIgcGxhY2UsIGl0IHNlZW1zIHNhZmVyIHRvIGRlZmluZSBnbG9iYWwgb25seSBmb3IgdGhpcyBtb2R1bGVcblxuXG5cbnZhclxuXHR2ZXJzaW9uID0gXCIzLjMuMVwiLFxuXG5cdC8vIERlZmluZSBhIGxvY2FsIGNvcHkgb2YgalF1ZXJ5XG5cdGpRdWVyeSA9IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblxuXHRcdC8vIFRoZSBqUXVlcnkgb2JqZWN0IGlzIGFjdHVhbGx5IGp1c3QgdGhlIGluaXQgY29uc3RydWN0b3IgJ2VuaGFuY2VkJ1xuXHRcdC8vIE5lZWQgaW5pdCBpZiBqUXVlcnkgaXMgY2FsbGVkIChqdXN0IGFsbG93IGVycm9yIHRvIGJlIHRocm93biBpZiBub3QgaW5jbHVkZWQpXG5cdFx0cmV0dXJuIG5ldyBqUXVlcnkuZm4uaW5pdCggc2VsZWN0b3IsIGNvbnRleHQgKTtcblx0fSxcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHdlIHRyaW0gQk9NIGFuZCBOQlNQXG5cdHJ0cmltID0gL15bXFxzXFx1RkVGRlxceEEwXSt8W1xcc1xcdUZFRkZcXHhBMF0rJC9nO1xuXG5qUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0ge1xuXG5cdC8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJlaW5nIHVzZWRcblx0anF1ZXJ5OiB2ZXJzaW9uLFxuXG5cdGNvbnN0cnVjdG9yOiBqUXVlcnksXG5cblx0Ly8gVGhlIGRlZmF1bHQgbGVuZ3RoIG9mIGEgalF1ZXJ5IG9iamVjdCBpcyAwXG5cdGxlbmd0aDogMCxcblxuXHR0b0FycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHR9LFxuXG5cdC8vIEdldCB0aGUgTnRoIGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1Jcblx0Ly8gR2V0IHRoZSB3aG9sZSBtYXRjaGVkIGVsZW1lbnQgc2V0IGFzIGEgY2xlYW4gYXJyYXlcblx0Z2V0OiBmdW5jdGlvbiggbnVtICkge1xuXG5cdFx0Ly8gUmV0dXJuIGFsbCB0aGUgZWxlbWVudHMgaW4gYSBjbGVhbiBhcnJheVxuXHRcdGlmICggbnVtID09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gc2xpY2UuY2FsbCggdGhpcyApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiBqdXN0IHRoZSBvbmUgZWxlbWVudCBmcm9tIHRoZSBzZXRcblx0XHRyZXR1cm4gbnVtIDwgMCA/IHRoaXNbIG51bSArIHRoaXMubGVuZ3RoIF0gOiB0aGlzWyBudW0gXTtcblx0fSxcblxuXHQvLyBUYWtlIGFuIGFycmF5IG9mIGVsZW1lbnRzIGFuZCBwdXNoIGl0IG9udG8gdGhlIHN0YWNrXG5cdC8vIChyZXR1cm5pbmcgdGhlIG5ldyBtYXRjaGVkIGVsZW1lbnQgc2V0KVxuXHRwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblxuXHRcdC8vIEJ1aWxkIGEgbmV3IGpRdWVyeSBtYXRjaGVkIGVsZW1lbnQgc2V0XG5cdFx0dmFyIHJldCA9IGpRdWVyeS5tZXJnZSggdGhpcy5jb25zdHJ1Y3RvcigpLCBlbGVtcyApO1xuXG5cdFx0Ly8gQWRkIHRoZSBvbGQgb2JqZWN0IG9udG8gdGhlIHN0YWNrIChhcyBhIHJlZmVyZW5jZSlcblx0XHRyZXQucHJldk9iamVjdCA9IHRoaXM7XG5cblx0XHQvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNldFxuXHRcdHJldHVybiByZXQ7XG5cdH0sXG5cblx0Ly8gRXhlY3V0ZSBhIGNhbGxiYWNrIGZvciBldmVyeSBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC5cblx0ZWFjaDogZnVuY3Rpb24oIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZWFjaCggdGhpcywgY2FsbGJhY2sgKTtcblx0fSxcblxuXHRtYXA6IGZ1bmN0aW9uKCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5tYXAoIHRoaXMsIGZ1bmN0aW9uKCBlbGVtLCBpICkge1xuXHRcdFx0cmV0dXJuIGNhbGxiYWNrLmNhbGwoIGVsZW0sIGksIGVsZW0gKTtcblx0XHR9ICkgKTtcblx0fSxcblxuXHRzbGljZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBzbGljZS5hcHBseSggdGhpcywgYXJndW1lbnRzICkgKTtcblx0fSxcblxuXHRmaXJzdDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuZXEoIDAgKTtcblx0fSxcblxuXHRsYXN0OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5lcSggLTEgKTtcblx0fSxcblxuXHRlcTogZnVuY3Rpb24oIGkgKSB7XG5cdFx0dmFyIGxlbiA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0aiA9ICtpICsgKCBpIDwgMCA/IGxlbiA6IDAgKTtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGogPj0gMCAmJiBqIDwgbGVuID8gWyB0aGlzWyBqIF0gXSA6IFtdICk7XG5cdH0sXG5cblx0ZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5wcmV2T2JqZWN0IHx8IHRoaXMuY29uc3RydWN0b3IoKTtcblx0fSxcblxuXHQvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuXG5cdC8vIEJlaGF2ZXMgbGlrZSBhbiBBcnJheSdzIG1ldGhvZCwgbm90IGxpa2UgYSBqUXVlcnkgbWV0aG9kLlxuXHRwdXNoOiBwdXNoLFxuXHRzb3J0OiBhcnIuc29ydCxcblx0c3BsaWNlOiBhcnIuc3BsaWNlXG59O1xuXG5qUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuXHR2YXIgb3B0aW9ucywgbmFtZSwgc3JjLCBjb3B5LCBjb3B5SXNBcnJheSwgY2xvbmUsXG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyAwIF0gfHwge30sXG5cdFx0aSA9IDEsXG5cdFx0bGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCxcblx0XHRkZWVwID0gZmFsc2U7XG5cblx0Ly8gSGFuZGxlIGEgZGVlcCBjb3B5IHNpdHVhdGlvblxuXHRpZiAoIHR5cGVvZiB0YXJnZXQgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdGRlZXAgPSB0YXJnZXQ7XG5cblx0XHQvLyBTa2lwIHRoZSBib29sZWFuIGFuZCB0aGUgdGFyZ2V0XG5cdFx0dGFyZ2V0ID0gYXJndW1lbnRzWyBpIF0gfHwge307XG5cdFx0aSsrO1xuXHR9XG5cblx0Ly8gSGFuZGxlIGNhc2Ugd2hlbiB0YXJnZXQgaXMgYSBzdHJpbmcgb3Igc29tZXRoaW5nIChwb3NzaWJsZSBpbiBkZWVwIGNvcHkpXG5cdGlmICggdHlwZW9mIHRhcmdldCAhPT0gXCJvYmplY3RcIiAmJiAhaXNGdW5jdGlvbiggdGFyZ2V0ICkgKSB7XG5cdFx0dGFyZ2V0ID0ge307XG5cdH1cblxuXHQvLyBFeHRlbmQgalF1ZXJ5IGl0c2VsZiBpZiBvbmx5IG9uZSBhcmd1bWVudCBpcyBwYXNzZWRcblx0aWYgKCBpID09PSBsZW5ndGggKSB7XG5cdFx0dGFyZ2V0ID0gdGhpcztcblx0XHRpLS07XG5cdH1cblxuXHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblxuXHRcdC8vIE9ubHkgZGVhbCB3aXRoIG5vbi1udWxsL3VuZGVmaW5lZCB2YWx1ZXNcblx0XHRpZiAoICggb3B0aW9ucyA9IGFyZ3VtZW50c1sgaSBdICkgIT0gbnVsbCApIHtcblxuXHRcdFx0Ly8gRXh0ZW5kIHRoZSBiYXNlIG9iamVjdFxuXHRcdFx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdFx0XHRzcmMgPSB0YXJnZXRbIG5hbWUgXTtcblx0XHRcdFx0Y29weSA9IG9wdGlvbnNbIG5hbWUgXTtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG5ldmVyLWVuZGluZyBsb29wXG5cdFx0XHRcdGlmICggdGFyZ2V0ID09PSBjb3B5ICkge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5nIHBsYWluIG9iamVjdHMgb3IgYXJyYXlzXG5cdFx0XHRcdGlmICggZGVlcCAmJiBjb3B5ICYmICggalF1ZXJ5LmlzUGxhaW5PYmplY3QoIGNvcHkgKSB8fFxuXHRcdFx0XHRcdCggY29weUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KCBjb3B5ICkgKSApICkge1xuXG5cdFx0XHRcdFx0aWYgKCBjb3B5SXNBcnJheSApIHtcblx0XHRcdFx0XHRcdGNvcHlJc0FycmF5ID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRjbG9uZSA9IHNyYyAmJiBBcnJheS5pc0FycmF5KCBzcmMgKSA/IHNyYyA6IFtdO1xuXG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNsb25lID0gc3JjICYmIGpRdWVyeS5pc1BsYWluT2JqZWN0KCBzcmMgKSA/IHNyYyA6IHt9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE5ldmVyIG1vdmUgb3JpZ2luYWwgb2JqZWN0cywgY2xvbmUgdGhlbVxuXHRcdFx0XHRcdHRhcmdldFsgbmFtZSBdID0galF1ZXJ5LmV4dGVuZCggZGVlcCwgY2xvbmUsIGNvcHkgKTtcblxuXHRcdFx0XHQvLyBEb24ndCBicmluZyBpbiB1bmRlZmluZWQgdmFsdWVzXG5cdFx0XHRcdH0gZWxzZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0XHR0YXJnZXRbIG5hbWUgXSA9IGNvcHk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIG9iamVjdFxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIFVuaXF1ZSBmb3IgZWFjaCBjb3B5IG9mIGpRdWVyeSBvbiB0aGUgcGFnZVxuXHRleHBhbmRvOiBcImpRdWVyeVwiICsgKCB2ZXJzaW9uICsgTWF0aC5yYW5kb20oKSApLnJlcGxhY2UoIC9cXEQvZywgXCJcIiApLFxuXG5cdC8vIEFzc3VtZSBqUXVlcnkgaXMgcmVhZHkgd2l0aG91dCB0aGUgcmVhZHkgbW9kdWxlXG5cdGlzUmVhZHk6IHRydWUsXG5cblx0ZXJyb3I6IGZ1bmN0aW9uKCBtc2cgKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCBtc2cgKTtcblx0fSxcblxuXHRub29wOiBmdW5jdGlvbigpIHt9LFxuXG5cdGlzUGxhaW5PYmplY3Q6IGZ1bmN0aW9uKCBvYmogKSB7XG5cdFx0dmFyIHByb3RvLCBDdG9yO1xuXG5cdFx0Ly8gRGV0ZWN0IG9idmlvdXMgbmVnYXRpdmVzXG5cdFx0Ly8gVXNlIHRvU3RyaW5nIGluc3RlYWQgb2YgalF1ZXJ5LnR5cGUgdG8gY2F0Y2ggaG9zdCBvYmplY3RzXG5cdFx0aWYgKCAhb2JqIHx8IHRvU3RyaW5nLmNhbGwoIG9iaiApICE9PSBcIltvYmplY3QgT2JqZWN0XVwiICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHByb3RvID0gZ2V0UHJvdG8oIG9iaiApO1xuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIG5vIHByb3RvdHlwZSAoZS5nLiwgYE9iamVjdC5jcmVhdGUoIG51bGwgKWApIGFyZSBwbGFpblxuXHRcdGlmICggIXByb3RvICkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0Ly8gT2JqZWN0cyB3aXRoIHByb3RvdHlwZSBhcmUgcGxhaW4gaWZmIHRoZXkgd2VyZSBjb25zdHJ1Y3RlZCBieSBhIGdsb2JhbCBPYmplY3QgZnVuY3Rpb25cblx0XHRDdG9yID0gaGFzT3duLmNhbGwoIHByb3RvLCBcImNvbnN0cnVjdG9yXCIgKSAmJiBwcm90by5jb25zdHJ1Y3Rvcjtcblx0XHRyZXR1cm4gdHlwZW9mIEN0b3IgPT09IFwiZnVuY3Rpb25cIiAmJiBmblRvU3RyaW5nLmNhbGwoIEN0b3IgKSA9PT0gT2JqZWN0RnVuY3Rpb25TdHJpbmc7XG5cdH0sXG5cblx0aXNFbXB0eU9iamVjdDogZnVuY3Rpb24oIG9iaiApIHtcblxuXHRcdC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5cdFx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2lzc3Vlcy82MTI1XG5cdFx0dmFyIG5hbWU7XG5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Ly8gRXZhbHVhdGVzIGEgc2NyaXB0IGluIGEgZ2xvYmFsIGNvbnRleHRcblx0Z2xvYmFsRXZhbDogZnVuY3Rpb24oIGNvZGUgKSB7XG5cdFx0RE9NRXZhbCggY29kZSApO1xuXHR9LFxuXG5cdGVhY2g6IGZ1bmN0aW9uKCBvYmosIGNhbGxiYWNrICkge1xuXHRcdHZhciBsZW5ndGgsIGkgPSAwO1xuXG5cdFx0aWYgKCBpc0FycmF5TGlrZSggb2JqICkgKSB7XG5cdFx0XHRsZW5ndGggPSBvYmoubGVuZ3RoO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2suY2FsbCggb2JqWyBpIF0sIGksIG9ialsgaSBdICkgPT09IGZhbHNlICkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAoIGkgaW4gb2JqICkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrLmNhbGwoIG9ialsgaSBdLCBpLCBvYmpbIGkgXSApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvYmo7XG5cdH0sXG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMCBvbmx5XG5cdHRyaW06IGZ1bmN0aW9uKCB0ZXh0ICkge1xuXHRcdHJldHVybiB0ZXh0ID09IG51bGwgP1xuXHRcdFx0XCJcIiA6XG5cdFx0XHQoIHRleHQgKyBcIlwiICkucmVwbGFjZSggcnRyaW0sIFwiXCIgKTtcblx0fSxcblxuXHQvLyByZXN1bHRzIGlzIGZvciBpbnRlcm5hbCB1c2FnZSBvbmx5XG5cdG1ha2VBcnJheTogZnVuY3Rpb24oIGFyciwgcmVzdWx0cyApIHtcblx0XHR2YXIgcmV0ID0gcmVzdWx0cyB8fCBbXTtcblxuXHRcdGlmICggYXJyICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGlzQXJyYXlMaWtlKCBPYmplY3QoIGFyciApICkgKSB7XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggcmV0LFxuXHRcdFx0XHRcdHR5cGVvZiBhcnIgPT09IFwic3RyaW5nXCIgP1xuXHRcdFx0XHRcdFsgYXJyIF0gOiBhcnJcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guY2FsbCggcmV0LCBhcnIgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmV0O1xuXHR9LFxuXG5cdGluQXJyYXk6IGZ1bmN0aW9uKCBlbGVtLCBhcnIsIGkgKSB7XG5cdFx0cmV0dXJuIGFyciA9PSBudWxsID8gLTEgOiBpbmRleE9mLmNhbGwoIGFyciwgZWxlbSwgaSApO1xuXHR9LFxuXG5cdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdG1lcmdlOiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHtcblx0XHR2YXIgbGVuID0gK3NlY29uZC5sZW5ndGgsXG5cdFx0XHRqID0gMCxcblx0XHRcdGkgPSBmaXJzdC5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGogPCBsZW47IGorKyApIHtcblx0XHRcdGZpcnN0WyBpKysgXSA9IHNlY29uZFsgaiBdO1xuXHRcdH1cblxuXHRcdGZpcnN0Lmxlbmd0aCA9IGk7XG5cblx0XHRyZXR1cm4gZmlyc3Q7XG5cdH0sXG5cblx0Z3JlcDogZnVuY3Rpb24oIGVsZW1zLCBjYWxsYmFjaywgaW52ZXJ0ICkge1xuXHRcdHZhciBjYWxsYmFja0ludmVyc2UsXG5cdFx0XHRtYXRjaGVzID0gW10sXG5cdFx0XHRpID0gMCxcblx0XHRcdGxlbmd0aCA9IGVsZW1zLmxlbmd0aCxcblx0XHRcdGNhbGxiYWNrRXhwZWN0ID0gIWludmVydDtcblxuXHRcdC8vIEdvIHRocm91Z2ggdGhlIGFycmF5LCBvbmx5IHNhdmluZyB0aGUgaXRlbXNcblx0XHQvLyB0aGF0IHBhc3MgdGhlIHZhbGlkYXRvciBmdW5jdGlvblxuXHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSsrICkge1xuXHRcdFx0Y2FsbGJhY2tJbnZlcnNlID0gIWNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpICk7XG5cdFx0XHRpZiAoIGNhbGxiYWNrSW52ZXJzZSAhPT0gY2FsbGJhY2tFeHBlY3QgKSB7XG5cdFx0XHRcdG1hdGNoZXMucHVzaCggZWxlbXNbIGkgXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBtYXRjaGVzO1xuXHR9LFxuXG5cdC8vIGFyZyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seVxuXHRtYXA6IGZ1bmN0aW9uKCBlbGVtcywgY2FsbGJhY2ssIGFyZyApIHtcblx0XHR2YXIgbGVuZ3RoLCB2YWx1ZSxcblx0XHRcdGkgPSAwLFxuXHRcdFx0cmV0ID0gW107XG5cblx0XHQvLyBHbyB0aHJvdWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRlbXMgdG8gdGhlaXIgbmV3IHZhbHVlc1xuXHRcdGlmICggaXNBcnJheUxpa2UoIGVsZW1zICkgKSB7XG5cdFx0XHRsZW5ndGggPSBlbGVtcy5sZW5ndGg7XG5cdFx0XHRmb3IgKCA7IGkgPCBsZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0dmFsdWUgPSBjYWxsYmFjayggZWxlbXNbIGkgXSwgaSwgYXJnICk7XG5cblx0XHRcdFx0aWYgKCB2YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0XHRcdHJldC5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBHbyB0aHJvdWdoIGV2ZXJ5IGtleSBvbiB0aGUgb2JqZWN0LFxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKCBpIGluIGVsZW1zICkge1xuXHRcdFx0XHR2YWx1ZSA9IGNhbGxiYWNrKCBlbGVtc1sgaSBdLCBpLCBhcmcgKTtcblxuXHRcdFx0XHRpZiAoIHZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0LnB1c2goIHZhbHVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBGbGF0dGVuIGFueSBuZXN0ZWQgYXJyYXlzXG5cdFx0cmV0dXJuIGNvbmNhdC5hcHBseSggW10sIHJldCApO1xuXHR9LFxuXG5cdC8vIEEgZ2xvYmFsIEdVSUQgY291bnRlciBmb3Igb2JqZWN0c1xuXHRndWlkOiAxLFxuXG5cdC8vIGpRdWVyeS5zdXBwb3J0IGlzIG5vdCB1c2VkIGluIENvcmUgYnV0IG90aGVyIHByb2plY3RzIGF0dGFjaCB0aGVpclxuXHQvLyBwcm9wZXJ0aWVzIHRvIGl0IHNvIGl0IG5lZWRzIHRvIGV4aXN0LlxuXHRzdXBwb3J0OiBzdXBwb3J0XG59ICk7XG5cbmlmICggdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICkge1xuXHRqUXVlcnkuZm5bIFN5bWJvbC5pdGVyYXRvciBdID0gYXJyWyBTeW1ib2wuaXRlcmF0b3IgXTtcbn1cblxuLy8gUG9wdWxhdGUgdGhlIGNsYXNzMnR5cGUgbWFwXG5qUXVlcnkuZWFjaCggXCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbFwiLnNwbGl0KCBcIiBcIiApLFxuZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdGNsYXNzMnR5cGVbIFwiW29iamVjdCBcIiArIG5hbWUgKyBcIl1cIiBdID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xufSApO1xuXG5mdW5jdGlvbiBpc0FycmF5TGlrZSggb2JqICkge1xuXG5cdC8vIFN1cHBvcnQ6IHJlYWwgaU9TIDguMiBvbmx5IChub3QgcmVwcm9kdWNpYmxlIGluIHNpbXVsYXRvcilcblx0Ly8gYGluYCBjaGVjayB1c2VkIHRvIHByZXZlbnQgSklUIGVycm9yIChnaC0yMTQ1KVxuXHQvLyBoYXNPd24gaXNuJ3QgdXNlZCBoZXJlIGR1ZSB0byBmYWxzZSBuZWdhdGl2ZXNcblx0Ly8gcmVnYXJkaW5nIE5vZGVsaXN0IGxlbmd0aCBpbiBJRVxuXHR2YXIgbGVuZ3RoID0gISFvYmogJiYgXCJsZW5ndGhcIiBpbiBvYmogJiYgb2JqLmxlbmd0aCxcblx0XHR0eXBlID0gdG9UeXBlKCBvYmogKTtcblxuXHRpZiAoIGlzRnVuY3Rpb24oIG9iaiApIHx8IGlzV2luZG93KCBvYmogKSApIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRyZXR1cm4gdHlwZSA9PT0gXCJhcnJheVwiIHx8IGxlbmd0aCA9PT0gMCB8fFxuXHRcdHR5cGVvZiBsZW5ndGggPT09IFwibnVtYmVyXCIgJiYgbGVuZ3RoID4gMCAmJiAoIGxlbmd0aCAtIDEgKSBpbiBvYmo7XG59XG52YXIgU2l6emxlID1cbi8qIVxuICogU2l6emxlIENTUyBTZWxlY3RvciBFbmdpbmUgdjIuMy4zXG4gKiBodHRwczovL3NpenpsZWpzLmNvbS9cbiAqXG4gKiBDb3B5cmlnaHQgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlXG4gKlxuICogRGF0ZTogMjAxNi0wOC0wOFxuICovXG4oZnVuY3Rpb24oIHdpbmRvdyApIHtcblxudmFyIGksXG5cdHN1cHBvcnQsXG5cdEV4cHIsXG5cdGdldFRleHQsXG5cdGlzWE1MLFxuXHR0b2tlbml6ZSxcblx0Y29tcGlsZSxcblx0c2VsZWN0LFxuXHRvdXRlcm1vc3RDb250ZXh0LFxuXHRzb3J0SW5wdXQsXG5cdGhhc0R1cGxpY2F0ZSxcblxuXHQvLyBMb2NhbCBkb2N1bWVudCB2YXJzXG5cdHNldERvY3VtZW50LFxuXHRkb2N1bWVudCxcblx0ZG9jRWxlbSxcblx0ZG9jdW1lbnRJc0hUTUwsXG5cdHJidWdneVFTQSxcblx0cmJ1Z2d5TWF0Y2hlcyxcblx0bWF0Y2hlcyxcblx0Y29udGFpbnMsXG5cblx0Ly8gSW5zdGFuY2Utc3BlY2lmaWMgZGF0YVxuXHRleHBhbmRvID0gXCJzaXp6bGVcIiArIDEgKiBuZXcgRGF0ZSgpLFxuXHRwcmVmZXJyZWREb2MgPSB3aW5kb3cuZG9jdW1lbnQsXG5cdGRpcnJ1bnMgPSAwLFxuXHRkb25lID0gMCxcblx0Y2xhc3NDYWNoZSA9IGNyZWF0ZUNhY2hlKCksXG5cdHRva2VuQ2FjaGUgPSBjcmVhdGVDYWNoZSgpLFxuXHRjb21waWxlckNhY2hlID0gY3JlYXRlQ2FjaGUoKSxcblx0c29ydE9yZGVyID0gZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0aWYgKCBhID09PSBiICkge1xuXHRcdFx0aGFzRHVwbGljYXRlID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIDA7XG5cdH0sXG5cblx0Ly8gSW5zdGFuY2UgbWV0aG9kc1xuXHRoYXNPd24gPSAoe30pLmhhc093blByb3BlcnR5LFxuXHRhcnIgPSBbXSxcblx0cG9wID0gYXJyLnBvcCxcblx0cHVzaF9uYXRpdmUgPSBhcnIucHVzaCxcblx0cHVzaCA9IGFyci5wdXNoLFxuXHRzbGljZSA9IGFyci5zbGljZSxcblx0Ly8gVXNlIGEgc3RyaXBwZWQtZG93biBpbmRleE9mIGFzIGl0J3MgZmFzdGVyIHRoYW4gbmF0aXZlXG5cdC8vIGh0dHBzOi8vanNwZXJmLmNvbS90aG9yLWluZGV4b2YtdnMtZm9yLzVcblx0aW5kZXhPZiA9IGZ1bmN0aW9uKCBsaXN0LCBlbGVtICkge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdGxlbiA9IGxpc3QubGVuZ3RoO1xuXHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0aWYgKCBsaXN0W2ldID09PSBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIC0xO1xuXHR9LFxuXG5cdGJvb2xlYW5zID0gXCJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZFwiLFxuXG5cdC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnNcblxuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXNlbGVjdG9ycy8jd2hpdGVzcGFjZVxuXHR3aGl0ZXNwYWNlID0gXCJbXFxcXHgyMFxcXFx0XFxcXHJcXFxcblxcXFxmXVwiLFxuXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCN2YWx1ZS1kZWYtaWRlbnRpZmllclxuXHRpZGVudGlmaWVyID0gXCIoPzpcXFxcXFxcXC58W1xcXFx3LV18W15cXDAtXFxcXHhhMF0pK1wiLFxuXG5cdC8vIEF0dHJpYnV0ZSBzZWxlY3RvcnM6IGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jYXR0cmlidXRlLXNlbGVjdG9yc1xuXHRhdHRyaWJ1dGVzID0gXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKihcIiArIGlkZW50aWZpZXIgKyBcIikoPzpcIiArIHdoaXRlc3BhY2UgK1xuXHRcdC8vIE9wZXJhdG9yIChjYXB0dXJlIDIpXG5cdFx0XCIqKFsqXiR8IX5dPz0pXCIgKyB3aGl0ZXNwYWNlICtcblx0XHQvLyBcIkF0dHJpYnV0ZSB2YWx1ZXMgbXVzdCBiZSBDU1MgaWRlbnRpZmllcnMgW2NhcHR1cmUgNV0gb3Igc3RyaW5ncyBbY2FwdHVyZSAzIG9yIGNhcHR1cmUgNF1cIlxuXHRcdFwiKig/OicoKD86XFxcXFxcXFwufFteXFxcXFxcXFwnXSkqKSd8XFxcIigoPzpcXFxcXFxcXC58W15cXFxcXFxcXFxcXCJdKSopXFxcInwoXCIgKyBpZGVudGlmaWVyICsgXCIpKXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcIipcXFxcXVwiLFxuXG5cdHBzZXVkb3MgPSBcIjooXCIgKyBpZGVudGlmaWVyICsgXCIpKD86XFxcXCgoXCIgK1xuXHRcdC8vIFRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHNlbGVjdG9ycyBuZWVkaW5nIHRva2VuaXplIGluIHRoZSBwcmVGaWx0ZXIsIHByZWZlciBhcmd1bWVudHM6XG5cdFx0Ly8gMS4gcXVvdGVkIChjYXB0dXJlIDM7IGNhcHR1cmUgNCBvciBjYXB0dXJlIDUpXG5cdFx0XCIoJygoPzpcXFxcXFxcXC58W15cXFxcXFxcXCddKSopJ3xcXFwiKCg/OlxcXFxcXFxcLnxbXlxcXFxcXFxcXFxcIl0pKilcXFwiKXxcIiArXG5cdFx0Ly8gMi4gc2ltcGxlIChjYXB0dXJlIDYpXG5cdFx0XCIoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKVtcXFxcXV18XCIgKyBhdHRyaWJ1dGVzICsgXCIpKil8XCIgK1xuXHRcdC8vIDMuIGFueXRoaW5nIGVsc2UgKGNhcHR1cmUgMilcblx0XHRcIi4qXCIgK1xuXHRcdFwiKVxcXFwpfClcIixcblxuXHQvLyBMZWFkaW5nIGFuZCBub24tZXNjYXBlZCB0cmFpbGluZyB3aGl0ZXNwYWNlLCBjYXB0dXJpbmcgc29tZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHByZWNlZGluZyB0aGUgbGF0dGVyXG5cdHJ3aGl0ZXNwYWNlID0gbmV3IFJlZ0V4cCggd2hpdGVzcGFjZSArIFwiK1wiLCBcImdcIiApLFxuXHRydHJpbSA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiK3woKD86XnxbXlxcXFxcXFxcXSkoPzpcXFxcXFxcXC4pKilcIiArIHdoaXRlc3BhY2UgKyBcIiskXCIsIFwiZ1wiICksXG5cblx0cmNvbW1hID0gbmV3IFJlZ0V4cCggXCJeXCIgKyB3aGl0ZXNwYWNlICsgXCIqLFwiICsgd2hpdGVzcGFjZSArIFwiKlwiICksXG5cdHJjb21iaW5hdG9ycyA9IG5ldyBSZWdFeHAoIFwiXlwiICsgd2hpdGVzcGFjZSArIFwiKihbPit+XXxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIHdoaXRlc3BhY2UgKyBcIipcIiApLFxuXG5cdHJhdHRyaWJ1dGVRdW90ZXMgPSBuZXcgUmVnRXhwKCBcIj1cIiArIHdoaXRlc3BhY2UgKyBcIiooW15cXFxcXSdcXFwiXSo/KVwiICsgd2hpdGVzcGFjZSArIFwiKlxcXFxdXCIsIFwiZ1wiICksXG5cblx0cnBzZXVkbyA9IG5ldyBSZWdFeHAoIHBzZXVkb3MgKSxcblx0cmlkZW50aWZpZXIgPSBuZXcgUmVnRXhwKCBcIl5cIiArIGlkZW50aWZpZXIgKyBcIiRcIiApLFxuXG5cdG1hdGNoRXhwciA9IHtcblx0XHRcIklEXCI6IG5ldyBSZWdFeHAoIFwiXiMoXCIgKyBpZGVudGlmaWVyICsgXCIpXCIgKSxcblx0XHRcIkNMQVNTXCI6IG5ldyBSZWdFeHAoIFwiXlxcXFwuKFwiICsgaWRlbnRpZmllciArIFwiKVwiICksXG5cdFx0XCJUQUdcIjogbmV3IFJlZ0V4cCggXCJeKFwiICsgaWRlbnRpZmllciArIFwifFsqXSlcIiApLFxuXHRcdFwiQVRUUlwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIGF0dHJpYnV0ZXMgKSxcblx0XHRcIlBTRVVET1wiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHBzZXVkb3MgKSxcblx0XHRcIkNISUxEXCI6IG5ldyBSZWdFeHAoIFwiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFxcXChcIiArIHdoaXRlc3BhY2UgK1xuXHRcdFx0XCIqKGV2ZW58b2RkfCgoWystXXwpKFxcXFxkKilufClcIiArIHdoaXRlc3BhY2UgKyBcIiooPzooWystXXwpXCIgKyB3aGl0ZXNwYWNlICtcblx0XHRcdFwiKihcXFxcZCspfCkpXCIgKyB3aGl0ZXNwYWNlICsgXCIqXFxcXCl8KVwiLCBcImlcIiApLFxuXHRcdFwiYm9vbFwiOiBuZXcgUmVnRXhwKCBcIl4oPzpcIiArIGJvb2xlYW5zICsgXCIpJFwiLCBcImlcIiApLFxuXHRcdC8vIEZvciB1c2UgaW4gbGlicmFyaWVzIGltcGxlbWVudGluZyAuaXMoKVxuXHRcdC8vIFdlIHVzZSB0aGlzIGZvciBQT1MgbWF0Y2hpbmcgaW4gYHNlbGVjdGBcblx0XHRcIm5lZWRzQ29udGV4dFwiOiBuZXcgUmVnRXhwKCBcIl5cIiArIHdoaXRlc3BhY2UgKyBcIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcXFwoXCIgK1xuXHRcdFx0d2hpdGVzcGFjZSArIFwiKigoPzotXFxcXGQpP1xcXFxkKilcIiArIHdoaXRlc3BhY2UgKyBcIipcXFxcKXwpKD89W14tXXwkKVwiLCBcImlcIiApXG5cdH0sXG5cblx0cmlucHV0cyA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksXG5cdHJoZWFkZXIgPSAvXmhcXGQkL2ksXG5cblx0cm5hdGl2ZSA9IC9eW157XStcXHtcXHMqXFxbbmF0aXZlIFxcdy8sXG5cblx0Ly8gRWFzaWx5LXBhcnNlYWJsZS9yZXRyaWV2YWJsZSBJRCBvciBUQUcgb3IgQ0xBU1Mgc2VsZWN0b3JzXG5cdHJxdWlja0V4cHIgPSAvXig/OiMoW1xcdy1dKyl8KFxcdyspfFxcLihbXFx3LV0rKSkkLyxcblxuXHRyc2libGluZyA9IC9bK35dLyxcblxuXHQvLyBDU1MgZXNjYXBlc1xuXHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9zeW5kYXRhLmh0bWwjZXNjYXBlZC1jaGFyYWN0ZXJzXG5cdHJ1bmVzY2FwZSA9IG5ldyBSZWdFeHAoIFwiXFxcXFxcXFwoW1xcXFxkYS1mXXsxLDZ9XCIgKyB3aGl0ZXNwYWNlICsgXCI/fChcIiArIHdoaXRlc3BhY2UgKyBcIil8LilcIiwgXCJpZ1wiICksXG5cdGZ1bmVzY2FwZSA9IGZ1bmN0aW9uKCBfLCBlc2NhcGVkLCBlc2NhcGVkV2hpdGVzcGFjZSApIHtcblx0XHR2YXIgaGlnaCA9IFwiMHhcIiArIGVzY2FwZWQgLSAweDEwMDAwO1xuXHRcdC8vIE5hTiBtZWFucyBub24tY29kZXBvaW50XG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveDwyNFxuXHRcdC8vIFdvcmthcm91bmQgZXJyb25lb3VzIG51bWVyaWMgaW50ZXJwcmV0YXRpb24gb2YgK1wiMHhcIlxuXHRcdHJldHVybiBoaWdoICE9PSBoaWdoIHx8IGVzY2FwZWRXaGl0ZXNwYWNlID9cblx0XHRcdGVzY2FwZWQgOlxuXHRcdFx0aGlnaCA8IDAgP1xuXHRcdFx0XHQvLyBCTVAgY29kZXBvaW50XG5cdFx0XHRcdFN0cmluZy5mcm9tQ2hhckNvZGUoIGhpZ2ggKyAweDEwMDAwICkgOlxuXHRcdFx0XHQvLyBTdXBwbGVtZW50YWwgUGxhbmUgY29kZXBvaW50IChzdXJyb2dhdGUgcGFpcilcblx0XHRcdFx0U3RyaW5nLmZyb21DaGFyQ29kZSggaGlnaCA+PiAxMCB8IDB4RDgwMCwgaGlnaCAmIDB4M0ZGIHwgMHhEQzAwICk7XG5cdH0sXG5cblx0Ly8gQ1NTIHN0cmluZy9pZGVudGlmaWVyIHNlcmlhbGl6YXRpb25cblx0Ly8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLyNjb21tb24tc2VyaWFsaXppbmctaWRpb21zXG5cdHJjc3Nlc2NhcGUgPSAvKFtcXDAtXFx4MWZcXHg3Zl18Xi0/XFxkKXxeLSR8W15cXDAtXFx4MWZcXHg3Zi1cXHVGRkZGXFx3LV0vZyxcblx0ZmNzc2VzY2FwZSA9IGZ1bmN0aW9uKCBjaCwgYXNDb2RlUG9pbnQgKSB7XG5cdFx0aWYgKCBhc0NvZGVQb2ludCApIHtcblxuXHRcdFx0Ly8gVSswMDAwIE5VTEwgYmVjb21lcyBVK0ZGRkQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSXG5cdFx0XHRpZiAoIGNoID09PSBcIlxcMFwiICkge1xuXHRcdFx0XHRyZXR1cm4gXCJcXHVGRkZEXCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbnRyb2wgY2hhcmFjdGVycyBhbmQgKGRlcGVuZGVudCB1cG9uIHBvc2l0aW9uKSBudW1iZXJzIGdldCBlc2NhcGVkIGFzIGNvZGUgcG9pbnRzXG5cdFx0XHRyZXR1cm4gY2guc2xpY2UoIDAsIC0xICkgKyBcIlxcXFxcIiArIGNoLmNoYXJDb2RlQXQoIGNoLmxlbmd0aCAtIDEgKS50b1N0cmluZyggMTYgKSArIFwiIFwiO1xuXHRcdH1cblxuXHRcdC8vIE90aGVyIHBvdGVudGlhbGx5LXNwZWNpYWwgQVNDSUkgY2hhcmFjdGVycyBnZXQgYmFja3NsYXNoLWVzY2FwZWRcblx0XHRyZXR1cm4gXCJcXFxcXCIgKyBjaDtcblx0fSxcblxuXHQvLyBVc2VkIGZvciBpZnJhbWVzXG5cdC8vIFNlZSBzZXREb2N1bWVudCgpXG5cdC8vIFJlbW92aW5nIHRoZSBmdW5jdGlvbiB3cmFwcGVyIGNhdXNlcyBhIFwiUGVybWlzc2lvbiBEZW5pZWRcIlxuXHQvLyBlcnJvciBpbiBJRVxuXHR1bmxvYWRIYW5kbGVyID0gZnVuY3Rpb24oKSB7XG5cdFx0c2V0RG9jdW1lbnQoKTtcblx0fSxcblxuXHRkaXNhYmxlZEFuY2VzdG9yID0gYWRkQ29tYmluYXRvcihcblx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSB0cnVlICYmIChcImZvcm1cIiBpbiBlbGVtIHx8IFwibGFiZWxcIiBpbiBlbGVtKTtcblx0XHR9LFxuXHRcdHsgZGlyOiBcInBhcmVudE5vZGVcIiwgbmV4dDogXCJsZWdlbmRcIiB9XG5cdCk7XG5cbi8vIE9wdGltaXplIGZvciBwdXNoLmFwcGx5KCBfLCBOb2RlTGlzdCApXG50cnkge1xuXHRwdXNoLmFwcGx5KFxuXHRcdChhcnIgPSBzbGljZS5jYWxsKCBwcmVmZXJyZWREb2MuY2hpbGROb2RlcyApKSxcblx0XHRwcmVmZXJyZWREb2MuY2hpbGROb2Rlc1xuXHQpO1xuXHQvLyBTdXBwb3J0OiBBbmRyb2lkPDQuMFxuXHQvLyBEZXRlY3Qgc2lsZW50bHkgZmFpbGluZyBwdXNoLmFwcGx5XG5cdGFyclsgcHJlZmVycmVkRG9jLmNoaWxkTm9kZXMubGVuZ3RoIF0ubm9kZVR5cGU7XG59IGNhdGNoICggZSApIHtcblx0cHVzaCA9IHsgYXBwbHk6IGFyci5sZW5ndGggP1xuXG5cdFx0Ly8gTGV2ZXJhZ2Ugc2xpY2UgaWYgcG9zc2libGVcblx0XHRmdW5jdGlvbiggdGFyZ2V0LCBlbHMgKSB7XG5cdFx0XHRwdXNoX25hdGl2ZS5hcHBseSggdGFyZ2V0LCBzbGljZS5jYWxsKGVscykgKTtcblx0XHR9IDpcblxuXHRcdC8vIFN1cHBvcnQ6IElFPDlcblx0XHQvLyBPdGhlcndpc2UgYXBwZW5kIGRpcmVjdGx5XG5cdFx0ZnVuY3Rpb24oIHRhcmdldCwgZWxzICkge1xuXHRcdFx0dmFyIGogPSB0YXJnZXQubGVuZ3RoLFxuXHRcdFx0XHRpID0gMDtcblx0XHRcdC8vIENhbid0IHRydXN0IE5vZGVMaXN0Lmxlbmd0aFxuXHRcdFx0d2hpbGUgKCAodGFyZ2V0W2orK10gPSBlbHNbaSsrXSkgKSB7fVxuXHRcdFx0dGFyZ2V0Lmxlbmd0aCA9IGogLSAxO1xuXHRcdH1cblx0fTtcbn1cblxuZnVuY3Rpb24gU2l6emxlKCBzZWxlY3RvciwgY29udGV4dCwgcmVzdWx0cywgc2VlZCApIHtcblx0dmFyIG0sIGksIGVsZW0sIG5pZCwgbWF0Y2gsIGdyb3VwcywgbmV3U2VsZWN0b3IsXG5cdFx0bmV3Q29udGV4dCA9IGNvbnRleHQgJiYgY29udGV4dC5vd25lckRvY3VtZW50LFxuXG5cdFx0Ly8gbm9kZVR5cGUgZGVmYXVsdHMgdG8gOSwgc2luY2UgY29udGV4dCBkZWZhdWx0cyB0byBkb2N1bWVudFxuXHRcdG5vZGVUeXBlID0gY29udGV4dCA/IGNvbnRleHQubm9kZVR5cGUgOiA5O1xuXG5cdHJlc3VsdHMgPSByZXN1bHRzIHx8IFtdO1xuXG5cdC8vIFJldHVybiBlYXJseSBmcm9tIGNhbGxzIHdpdGggaW52YWxpZCBzZWxlY3RvciBvciBjb250ZXh0XG5cdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiIHx8ICFzZWxlY3RvciB8fFxuXHRcdG5vZGVUeXBlICE9PSAxICYmIG5vZGVUeXBlICE9PSA5ICYmIG5vZGVUeXBlICE9PSAxMSApIHtcblxuXHRcdHJldHVybiByZXN1bHRzO1xuXHR9XG5cblx0Ly8gVHJ5IHRvIHNob3J0Y3V0IGZpbmQgb3BlcmF0aW9ucyAoYXMgb3Bwb3NlZCB0byBmaWx0ZXJzKSBpbiBIVE1MIGRvY3VtZW50c1xuXHRpZiAoICFzZWVkICkge1xuXG5cdFx0aWYgKCAoIGNvbnRleHQgPyBjb250ZXh0Lm93bmVyRG9jdW1lbnQgfHwgY29udGV4dCA6IHByZWZlcnJlZERvYyApICE9PSBkb2N1bWVudCApIHtcblx0XHRcdHNldERvY3VtZW50KCBjb250ZXh0ICk7XG5cdFx0fVxuXHRcdGNvbnRleHQgPSBjb250ZXh0IHx8IGRvY3VtZW50O1xuXG5cdFx0aWYgKCBkb2N1bWVudElzSFRNTCApIHtcblxuXHRcdFx0Ly8gSWYgdGhlIHNlbGVjdG9yIGlzIHN1ZmZpY2llbnRseSBzaW1wbGUsIHRyeSB1c2luZyBhIFwiZ2V0KkJ5KlwiIERPTSBtZXRob2Rcblx0XHRcdC8vIChleGNlcHRpbmcgRG9jdW1lbnRGcmFnbWVudCBjb250ZXh0LCB3aGVyZSB0aGUgbWV0aG9kcyBkb24ndCBleGlzdClcblx0XHRcdGlmICggbm9kZVR5cGUgIT09IDExICYmIChtYXRjaCA9IHJxdWlja0V4cHIuZXhlYyggc2VsZWN0b3IgKSkgKSB7XG5cblx0XHRcdFx0Ly8gSUQgc2VsZWN0b3Jcblx0XHRcdFx0aWYgKCAobSA9IG1hdGNoWzFdKSApIHtcblxuXHRcdFx0XHRcdC8vIERvY3VtZW50IGNvbnRleHRcblx0XHRcdFx0XHRpZiAoIG5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoZWxlbSA9IGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQoIG0gKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETzogaWRlbnRpZnkgdmVyc2lvbnNcblx0XHRcdFx0XHRcdFx0Ly8gZ2V0RWxlbWVudEJ5SWQgY2FuIG1hdGNoIGVsZW1lbnRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBJRFxuXHRcdFx0XHRcdFx0XHRpZiAoIGVsZW0uaWQgPT09IG0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRWxlbWVudCBjb250ZXh0XG5cdFx0XHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUsIE9wZXJhLCBXZWJraXRcblx0XHRcdFx0XHRcdC8vIFRPRE86IGlkZW50aWZ5IHZlcnNpb25zXG5cdFx0XHRcdFx0XHQvLyBnZXRFbGVtZW50QnlJZCBjYW4gbWF0Y2ggZWxlbWVudHMgYnkgbmFtZSBpbnN0ZWFkIG9mIElEXG5cdFx0XHRcdFx0XHRpZiAoIG5ld0NvbnRleHQgJiYgKGVsZW0gPSBuZXdDb250ZXh0LmdldEVsZW1lbnRCeUlkKCBtICkpICYmXG5cdFx0XHRcdFx0XHRcdGNvbnRhaW5zKCBjb250ZXh0LCBlbGVtICkgJiZcblx0XHRcdFx0XHRcdFx0ZWxlbS5pZCA9PT0gbSApIHtcblxuXHRcdFx0XHRcdFx0XHRyZXN1bHRzLnB1c2goIGVsZW0gKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFR5cGUgc2VsZWN0b3Jcblx0XHRcdFx0fSBlbHNlIGlmICggbWF0Y2hbMl0gKSB7XG5cdFx0XHRcdFx0cHVzaC5hcHBseSggcmVzdWx0cywgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggc2VsZWN0b3IgKSApO1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXG5cdFx0XHRcdC8vIENsYXNzIHNlbGVjdG9yXG5cdFx0XHRcdH0gZWxzZSBpZiAoIChtID0gbWF0Y2hbM10pICYmIHN1cHBvcnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSAmJlxuXHRcdFx0XHRcdGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSApIHtcblxuXHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIGNvbnRleHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggbSApICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdHM7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gVGFrZSBhZHZhbnRhZ2Ugb2YgcXVlcnlTZWxlY3RvckFsbFxuXHRcdFx0aWYgKCBzdXBwb3J0LnFzYSAmJlxuXHRcdFx0XHQhY29tcGlsZXJDYWNoZVsgc2VsZWN0b3IgKyBcIiBcIiBdICYmXG5cdFx0XHRcdCghcmJ1Z2d5UVNBIHx8ICFyYnVnZ3lRU0EudGVzdCggc2VsZWN0b3IgKSkgKSB7XG5cblx0XHRcdFx0aWYgKCBub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gY29udGV4dDtcblx0XHRcdFx0XHRuZXdTZWxlY3RvciA9IHNlbGVjdG9yO1xuXG5cdFx0XHRcdC8vIHFTQSBsb29rcyBvdXRzaWRlIEVsZW1lbnQgY29udGV4dCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudFxuXHRcdFx0XHQvLyBUaGFua3MgdG8gQW5kcmV3IER1cG9udCBmb3IgdGhpcyB3b3JrYXJvdW5kIHRlY2huaXF1ZVxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8PThcblx0XHRcdFx0Ly8gRXhjbHVkZSBvYmplY3QgZWxlbWVudHNcblx0XHRcdFx0fSBlbHNlIGlmICggY29udGV4dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcIm9iamVjdFwiICkge1xuXG5cdFx0XHRcdFx0Ly8gQ2FwdHVyZSB0aGUgY29udGV4dCBJRCwgc2V0dGluZyBpdCBmaXJzdCBpZiBuZWNlc3Nhcnlcblx0XHRcdFx0XHRpZiAoIChuaWQgPSBjb250ZXh0LmdldEF0dHJpYnV0ZSggXCJpZFwiICkpICkge1xuXHRcdFx0XHRcdFx0bmlkID0gbmlkLnJlcGxhY2UoIHJjc3Nlc2NhcGUsIGZjc3Nlc2NhcGUgKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29udGV4dC5zZXRBdHRyaWJ1dGUoIFwiaWRcIiwgKG5pZCA9IGV4cGFuZG8pICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gUHJlZml4IGV2ZXJ5IHNlbGVjdG9yIGluIHRoZSBsaXN0XG5cdFx0XHRcdFx0Z3JvdXBzID0gdG9rZW5pemUoIHNlbGVjdG9yICk7XG5cdFx0XHRcdFx0aSA9IGdyb3Vwcy5sZW5ndGg7XG5cdFx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0XHRncm91cHNbaV0gPSBcIiNcIiArIG5pZCArIFwiIFwiICsgdG9TZWxlY3RvciggZ3JvdXBzW2ldICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG5ld1NlbGVjdG9yID0gZ3JvdXBzLmpvaW4oIFwiLFwiICk7XG5cblx0XHRcdFx0XHQvLyBFeHBhbmQgY29udGV4dCBmb3Igc2libGluZyBzZWxlY3RvcnNcblx0XHRcdFx0XHRuZXdDb250ZXh0ID0gcnNpYmxpbmcudGVzdCggc2VsZWN0b3IgKSAmJiB0ZXN0Q29udGV4dCggY29udGV4dC5wYXJlbnROb2RlICkgfHxcblx0XHRcdFx0XHRcdGNvbnRleHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoIG5ld1NlbGVjdG9yICkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRwdXNoLmFwcGx5KCByZXN1bHRzLFxuXHRcdFx0XHRcdFx0XHRuZXdDb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIG5ld1NlbGVjdG9yIClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblx0XHRcdFx0XHR9IGNhdGNoICggcXNhRXJyb3IgKSB7XG5cdFx0XHRcdFx0fSBmaW5hbGx5IHtcblx0XHRcdFx0XHRcdGlmICggbmlkID09PSBleHBhbmRvICkge1xuXHRcdFx0XHRcdFx0XHRjb250ZXh0LnJlbW92ZUF0dHJpYnV0ZSggXCJpZFwiICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWxsIG90aGVyc1xuXHRyZXR1cm4gc2VsZWN0KCBzZWxlY3Rvci5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUga2V5LXZhbHVlIGNhY2hlcyBvZiBsaW1pdGVkIHNpemVcbiAqIEByZXR1cm5zIHtmdW5jdGlvbihzdHJpbmcsIG9iamVjdCl9IFJldHVybnMgdGhlIE9iamVjdCBkYXRhIGFmdGVyIHN0b3JpbmcgaXQgb24gaXRzZWxmIHdpdGhcbiAqXHRwcm9wZXJ0eSBuYW1lIHRoZSAoc3BhY2Utc3VmZml4ZWQpIHN0cmluZyBhbmQgKGlmIHRoZSBjYWNoZSBpcyBsYXJnZXIgdGhhbiBFeHByLmNhY2hlTGVuZ3RoKVxuICpcdGRlbGV0aW5nIHRoZSBvbGRlc3QgZW50cnlcbiAqL1xuZnVuY3Rpb24gY3JlYXRlQ2FjaGUoKSB7XG5cdHZhciBrZXlzID0gW107XG5cblx0ZnVuY3Rpb24gY2FjaGUoIGtleSwgdmFsdWUgKSB7XG5cdFx0Ly8gVXNlIChrZXkgKyBcIiBcIikgdG8gYXZvaWQgY29sbGlzaW9uIHdpdGggbmF0aXZlIHByb3RvdHlwZSBwcm9wZXJ0aWVzIChzZWUgSXNzdWUgIzE1Nylcblx0XHRpZiAoIGtleXMucHVzaCgga2V5ICsgXCIgXCIgKSA+IEV4cHIuY2FjaGVMZW5ndGggKSB7XG5cdFx0XHQvLyBPbmx5IGtlZXAgdGhlIG1vc3QgcmVjZW50IGVudHJpZXNcblx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5cy5zaGlmdCgpIF07XG5cdFx0fVxuXHRcdHJldHVybiAoY2FjaGVbIGtleSArIFwiIFwiIF0gPSB2YWx1ZSk7XG5cdH1cblx0cmV0dXJuIGNhY2hlO1xufVxuXG4vKipcbiAqIE1hcmsgYSBmdW5jdGlvbiBmb3Igc3BlY2lhbCB1c2UgYnkgU2l6emxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gbWFya1xuICovXG5mdW5jdGlvbiBtYXJrRnVuY3Rpb24oIGZuICkge1xuXHRmblsgZXhwYW5kbyBdID0gdHJ1ZTtcblx0cmV0dXJuIGZuO1xufVxuXG4vKipcbiAqIFN1cHBvcnQgdGVzdGluZyB1c2luZyBhbiBlbGVtZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBQYXNzZWQgdGhlIGNyZWF0ZWQgZWxlbWVudCBhbmQgcmV0dXJucyBhIGJvb2xlYW4gcmVzdWx0XG4gKi9cbmZ1bmN0aW9uIGFzc2VydCggZm4gKSB7XG5cdHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmaWVsZHNldFwiKTtcblxuXHR0cnkge1xuXHRcdHJldHVybiAhIWZuKCBlbCApO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9IGZpbmFsbHkge1xuXHRcdC8vIFJlbW92ZSBmcm9tIGl0cyBwYXJlbnQgYnkgZGVmYXVsdFxuXHRcdGlmICggZWwucGFyZW50Tm9kZSApIHtcblx0XHRcdGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIGVsICk7XG5cdFx0fVxuXHRcdC8vIHJlbGVhc2UgbWVtb3J5IGluIElFXG5cdFx0ZWwgPSBudWxsO1xuXHR9XG59XG5cbi8qKlxuICogQWRkcyB0aGUgc2FtZSBoYW5kbGVyIGZvciBhbGwgb2YgdGhlIHNwZWNpZmllZCBhdHRyc1xuICogQHBhcmFtIHtTdHJpbmd9IGF0dHJzIFBpcGUtc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlciBUaGUgbWV0aG9kIHRoYXQgd2lsbCBiZSBhcHBsaWVkXG4gKi9cbmZ1bmN0aW9uIGFkZEhhbmRsZSggYXR0cnMsIGhhbmRsZXIgKSB7XG5cdHZhciBhcnIgPSBhdHRycy5zcGxpdChcInxcIiksXG5cdFx0aSA9IGFyci5sZW5ndGg7XG5cblx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0RXhwci5hdHRySGFuZGxlWyBhcnJbaV0gXSA9IGhhbmRsZXI7XG5cdH1cbn1cblxuLyoqXG4gKiBDaGVja3MgZG9jdW1lbnQgb3JkZXIgb2YgdHdvIHNpYmxpbmdzXG4gKiBAcGFyYW0ge0VsZW1lbnR9IGFcbiAqIEBwYXJhbSB7RWxlbWVudH0gYlxuICogQHJldHVybnMge051bWJlcn0gUmV0dXJucyBsZXNzIHRoYW4gMCBpZiBhIHByZWNlZGVzIGIsIGdyZWF0ZXIgdGhhbiAwIGlmIGEgZm9sbG93cyBiXG4gKi9cbmZ1bmN0aW9uIHNpYmxpbmdDaGVjayggYSwgYiApIHtcblx0dmFyIGN1ciA9IGIgJiYgYSxcblx0XHRkaWZmID0gY3VyICYmIGEubm9kZVR5cGUgPT09IDEgJiYgYi5ub2RlVHlwZSA9PT0gMSAmJlxuXHRcdFx0YS5zb3VyY2VJbmRleCAtIGIuc291cmNlSW5kZXg7XG5cblx0Ly8gVXNlIElFIHNvdXJjZUluZGV4IGlmIGF2YWlsYWJsZSBvbiBib3RoIG5vZGVzXG5cdGlmICggZGlmZiApIHtcblx0XHRyZXR1cm4gZGlmZjtcblx0fVxuXG5cdC8vIENoZWNrIGlmIGIgZm9sbG93cyBhXG5cdGlmICggY3VyICkge1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5uZXh0U2libGluZykgKSB7XG5cdFx0XHRpZiAoIGN1ciA9PT0gYiApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBhID8gMSA6IC0xO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0byB1c2UgaW4gcHNldWRvcyBmb3IgaW5wdXQgdHlwZXNcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUlucHV0UHNldWRvKCB0eXBlICkge1xuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0dmFyIG5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciBidXR0b25zXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICovXG5mdW5jdGlvbiBjcmVhdGVCdXR0b25Qc2V1ZG8oIHR5cGUgKSB7XG5cdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHR2YXIgbmFtZSA9IGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcblx0XHRyZXR1cm4gKG5hbWUgPT09IFwiaW5wdXRcIiB8fCBuYW1lID09PSBcImJ1dHRvblwiKSAmJiBlbGVtLnR5cGUgPT09IHR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRvIHVzZSBpbiBwc2V1ZG9zIGZvciA6ZW5hYmxlZC86ZGlzYWJsZWRcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gZGlzYWJsZWQgdHJ1ZSBmb3IgOmRpc2FibGVkOyBmYWxzZSBmb3IgOmVuYWJsZWRcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRGlzYWJsZWRQc2V1ZG8oIGRpc2FibGVkICkge1xuXG5cdC8vIEtub3duIDpkaXNhYmxlZCBmYWxzZSBwb3NpdGl2ZXM6IGZpZWxkc2V0W2Rpc2FibGVkXSA+IGxlZ2VuZDpudGgtb2YtdHlwZShuKzIpIDpjYW4tZGlzYWJsZVxuXHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBPbmx5IGNlcnRhaW4gZWxlbWVudHMgY2FuIG1hdGNoIDplbmFibGVkIG9yIDpkaXNhYmxlZFxuXHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NlbGVjdG9yLWVuYWJsZWRcblx0XHQvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zY3JpcHRpbmcuaHRtbCNzZWxlY3Rvci1kaXNhYmxlZFxuXHRcdGlmICggXCJmb3JtXCIgaW4gZWxlbSApIHtcblxuXHRcdFx0Ly8gQ2hlY2sgZm9yIGluaGVyaXRlZCBkaXNhYmxlZG5lc3Mgb24gcmVsZXZhbnQgbm9uLWRpc2FibGVkIGVsZW1lbnRzOlxuXHRcdFx0Ly8gKiBsaXN0ZWQgZm9ybS1hc3NvY2lhdGVkIGVsZW1lbnRzIGluIGEgZGlzYWJsZWQgZmllbGRzZXRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjYXRlZ29yeS1saXN0ZWRcblx0XHRcdC8vICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybXMuaHRtbCNjb25jZXB0LWZlLWRpc2FibGVkXG5cdFx0XHQvLyAqIG9wdGlvbiBlbGVtZW50cyBpbiBhIGRpc2FibGVkIG9wdGdyb3VwXG5cdFx0XHQvLyAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2Zvcm1zLmh0bWwjY29uY2VwdC1vcHRpb24tZGlzYWJsZWRcblx0XHRcdC8vIEFsbCBzdWNoIGVsZW1lbnRzIGhhdmUgYSBcImZvcm1cIiBwcm9wZXJ0eS5cblx0XHRcdGlmICggZWxlbS5wYXJlbnROb2RlICYmIGVsZW0uZGlzYWJsZWQgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdC8vIE9wdGlvbiBlbGVtZW50cyBkZWZlciB0byBhIHBhcmVudCBvcHRncm91cCBpZiBwcmVzZW50XG5cdFx0XHRcdGlmICggXCJsYWJlbFwiIGluIGVsZW0gKSB7XG5cdFx0XHRcdFx0aWYgKCBcImxhYmVsXCIgaW4gZWxlbS5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0ucGFyZW50Tm9kZS5kaXNhYmxlZCA9PT0gZGlzYWJsZWQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA2IC0gMTFcblx0XHRcdFx0Ly8gVXNlIHRoZSBpc0Rpc2FibGVkIHNob3J0Y3V0IHByb3BlcnR5IHRvIGNoZWNrIGZvciBkaXNhYmxlZCBmaWVsZHNldCBhbmNlc3RvcnNcblx0XHRcdFx0cmV0dXJuIGVsZW0uaXNEaXNhYmxlZCA9PT0gZGlzYWJsZWQgfHxcblxuXHRcdFx0XHRcdC8vIFdoZXJlIHRoZXJlIGlzIG5vIGlzRGlzYWJsZWQsIGNoZWNrIG1hbnVhbGx5XG5cdFx0XHRcdFx0LyoganNoaW50IC1XMDE4ICovXG5cdFx0XHRcdFx0ZWxlbS5pc0Rpc2FibGVkICE9PSAhZGlzYWJsZWQgJiZcblx0XHRcdFx0XHRcdGRpc2FibGVkQW5jZXN0b3IoIGVsZW0gKSA9PT0gZGlzYWJsZWQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblxuXHRcdC8vIFRyeSB0byB3aW5ub3cgb3V0IGVsZW1lbnRzIHRoYXQgY2FuJ3QgYmUgZGlzYWJsZWQgYmVmb3JlIHRydXN0aW5nIHRoZSBkaXNhYmxlZCBwcm9wZXJ0eS5cblx0XHQvLyBTb21lIHZpY3RpbXMgZ2V0IGNhdWdodCBpbiBvdXIgbmV0IChsYWJlbCwgbGVnZW5kLCBtZW51LCB0cmFjayksIGJ1dCBpdCBzaG91bGRuJ3Rcblx0XHQvLyBldmVuIGV4aXN0IG9uIHRoZW0sIGxldCBhbG9uZSBoYXZlIGEgYm9vbGVhbiB2YWx1ZS5cblx0XHR9IGVsc2UgaWYgKCBcImxhYmVsXCIgaW4gZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtLmRpc2FibGVkID09PSBkaXNhYmxlZDtcblx0XHR9XG5cblx0XHQvLyBSZW1haW5pbmcgZWxlbWVudHMgYXJlIG5laXRoZXIgOmVuYWJsZWQgbm9yIDpkaXNhYmxlZFxuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gdXNlIGluIHBzZXVkb3MgZm9yIHBvc2l0aW9uYWxzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICovXG5mdW5jdGlvbiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKCBmbiApIHtcblx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggYXJndW1lbnQgKSB7XG5cdFx0YXJndW1lbnQgPSArYXJndW1lbnQ7XG5cdFx0cmV0dXJuIG1hcmtGdW5jdGlvbihmdW5jdGlvbiggc2VlZCwgbWF0Y2hlcyApIHtcblx0XHRcdHZhciBqLFxuXHRcdFx0XHRtYXRjaEluZGV4ZXMgPSBmbiggW10sIHNlZWQubGVuZ3RoLCBhcmd1bWVudCApLFxuXHRcdFx0XHRpID0gbWF0Y2hJbmRleGVzLmxlbmd0aDtcblxuXHRcdFx0Ly8gTWF0Y2ggZWxlbWVudHMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBpbmRleGVzXG5cdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0aWYgKCBzZWVkWyAoaiA9IG1hdGNoSW5kZXhlc1tpXSkgXSApIHtcblx0XHRcdFx0XHRzZWVkW2pdID0gIShtYXRjaGVzW2pdID0gc2VlZFtqXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGEgbm9kZSBmb3IgdmFsaWRpdHkgYXMgYSBTaXp6bGUgY29udGV4dFxuICogQHBhcmFtIHtFbGVtZW50fE9iamVjdD19IGNvbnRleHRcbiAqIEByZXR1cm5zIHtFbGVtZW50fE9iamVjdHxCb29sZWFufSBUaGUgaW5wdXQgbm9kZSBpZiBhY2NlcHRhYmxlLCBvdGhlcndpc2UgYSBmYWxzeSB2YWx1ZVxuICovXG5mdW5jdGlvbiB0ZXN0Q29udGV4dCggY29udGV4dCApIHtcblx0cmV0dXJuIGNvbnRleHQgJiYgdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgY29udGV4dDtcbn1cblxuLy8gRXhwb3NlIHN1cHBvcnQgdmFycyBmb3IgY29udmVuaWVuY2VcbnN1cHBvcnQgPSBTaXp6bGUuc3VwcG9ydCA9IHt9O1xuXG4vKipcbiAqIERldGVjdHMgWE1MIG5vZGVzXG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBlbGVtIEFuIGVsZW1lbnQgb3IgYSBkb2N1bWVudFxuICogQHJldHVybnMge0Jvb2xlYW59IFRydWUgaWZmIGVsZW0gaXMgYSBub24tSFRNTCBYTUwgbm9kZVxuICovXG5pc1hNTCA9IFNpenpsZS5pc1hNTCA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHQvLyBkb2N1bWVudEVsZW1lbnQgaXMgdmVyaWZpZWQgZm9yIGNhc2VzIHdoZXJlIGl0IGRvZXNuJ3QgeWV0IGV4aXN0XG5cdC8vIChzdWNoIGFzIGxvYWRpbmcgaWZyYW1lcyBpbiBJRSAtICM0ODMzKVxuXHR2YXIgZG9jdW1lbnRFbGVtZW50ID0gZWxlbSAmJiAoZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0pLmRvY3VtZW50RWxlbWVudDtcblx0cmV0dXJuIGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSAhPT0gXCJIVE1MXCIgOiBmYWxzZTtcbn07XG5cbi8qKlxuICogU2V0cyBkb2N1bWVudC1yZWxhdGVkIHZhcmlhYmxlcyBvbmNlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvY3VtZW50XG4gKiBAcGFyYW0ge0VsZW1lbnR8T2JqZWN0fSBbZG9jXSBBbiBlbGVtZW50IG9yIGRvY3VtZW50IG9iamVjdCB0byB1c2UgdG8gc2V0IHRoZSBkb2N1bWVudFxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY3VycmVudCBkb2N1bWVudFxuICovXG5zZXREb2N1bWVudCA9IFNpenpsZS5zZXREb2N1bWVudCA9IGZ1bmN0aW9uKCBub2RlICkge1xuXHR2YXIgaGFzQ29tcGFyZSwgc3ViV2luZG93LFxuXHRcdGRvYyA9IG5vZGUgPyBub2RlLm93bmVyRG9jdW1lbnQgfHwgbm9kZSA6IHByZWZlcnJlZERvYztcblxuXHQvLyBSZXR1cm4gZWFybHkgaWYgZG9jIGlzIGludmFsaWQgb3IgYWxyZWFkeSBzZWxlY3RlZFxuXHRpZiAoIGRvYyA9PT0gZG9jdW1lbnQgfHwgZG9jLm5vZGVUeXBlICE9PSA5IHx8ICFkb2MuZG9jdW1lbnRFbGVtZW50ICkge1xuXHRcdHJldHVybiBkb2N1bWVudDtcblx0fVxuXG5cdC8vIFVwZGF0ZSBnbG9iYWwgdmFyaWFibGVzXG5cdGRvY3VtZW50ID0gZG9jO1xuXHRkb2NFbGVtID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXHRkb2N1bWVudElzSFRNTCA9ICFpc1hNTCggZG9jdW1lbnQgKTtcblxuXHQvLyBTdXBwb3J0OiBJRSA5LTExLCBFZGdlXG5cdC8vIEFjY2Vzc2luZyBpZnJhbWUgZG9jdW1lbnRzIGFmdGVyIHVubG9hZCB0aHJvd3MgXCJwZXJtaXNzaW9uIGRlbmllZFwiIGVycm9ycyAoalF1ZXJ5ICMxMzkzNilcblx0aWYgKCBwcmVmZXJyZWREb2MgIT09IGRvY3VtZW50ICYmXG5cdFx0KHN1YldpbmRvdyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3KSAmJiBzdWJXaW5kb3cudG9wICE9PSBzdWJXaW5kb3cgKSB7XG5cblx0XHQvLyBTdXBwb3J0OiBJRSAxMSwgRWRnZVxuXHRcdGlmICggc3ViV2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0XHRzdWJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lciggXCJ1bmxvYWRcIiwgdW5sb2FkSGFuZGxlciwgZmFsc2UgKTtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMCBvbmx5XG5cdFx0fSBlbHNlIGlmICggc3ViV2luZG93LmF0dGFjaEV2ZW50ICkge1xuXHRcdFx0c3ViV2luZG93LmF0dGFjaEV2ZW50KCBcIm9udW5sb2FkXCIsIHVubG9hZEhhbmRsZXIgKTtcblx0XHR9XG5cdH1cblxuXHQvKiBBdHRyaWJ1dGVzXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuXHQvLyBTdXBwb3J0OiBJRTw4XG5cdC8vIFZlcmlmeSB0aGF0IGdldEF0dHJpYnV0ZSByZWFsbHkgcmV0dXJucyBhdHRyaWJ1dGVzIGFuZCBub3QgcHJvcGVydGllc1xuXHQvLyAoZXhjZXB0aW5nIElFOCBib29sZWFucylcblx0c3VwcG9ydC5hdHRyaWJ1dGVzID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5jbGFzc05hbWUgPSBcImlcIjtcblx0XHRyZXR1cm4gIWVsLmdldEF0dHJpYnV0ZShcImNsYXNzTmFtZVwiKTtcblx0fSk7XG5cblx0LyogZ2V0RWxlbWVudChzKUJ5KlxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gQ2hlY2sgaWYgZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpIHJldHVybnMgb25seSBlbGVtZW50c1xuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlUYWdOYW1lID0gYXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRlbC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlQ29tbWVudChcIlwiKSApO1xuXHRcdHJldHVybiAhZWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCIqXCIpLmxlbmd0aDtcblx0fSk7XG5cblx0Ly8gU3VwcG9ydDogSUU8OVxuXHRzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgPSBybmF0aXZlLnRlc3QoIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgKTtcblxuXHQvLyBTdXBwb3J0OiBJRTwxMFxuXHQvLyBDaGVjayBpZiBnZXRFbGVtZW50QnlJZCByZXR1cm5zIGVsZW1lbnRzIGJ5IG5hbWVcblx0Ly8gVGhlIGJyb2tlbiBnZXRFbGVtZW50QnlJZCBtZXRob2RzIGRvbid0IHBpY2sgdXAgcHJvZ3JhbW1hdGljYWxseS1zZXQgbmFtZXMsXG5cdC8vIHNvIHVzZSBhIHJvdW5kYWJvdXQgZ2V0RWxlbWVudHNCeU5hbWUgdGVzdFxuXHRzdXBwb3J0LmdldEJ5SWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaWQgPSBleHBhbmRvO1xuXHRcdHJldHVybiAhZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUgfHwgIWRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCBleHBhbmRvICkubGVuZ3RoO1xuXHR9KTtcblxuXHQvLyBJRCBmaWx0ZXIgYW5kIGZpbmRcblx0aWYgKCBzdXBwb3J0LmdldEJ5SWQgKSB7XG5cdFx0RXhwci5maWx0ZXJbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoXCJpZFwiKSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXHRcdEV4cHIuZmluZFtcIklEXCJdID0gZnVuY3Rpb24oIGlkLCBjb250ZXh0ICkge1xuXHRcdFx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50QnlJZCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkb2N1bWVudElzSFRNTCApIHtcblx0XHRcdFx0dmFyIGVsZW0gPSBjb250ZXh0LmdldEVsZW1lbnRCeUlkKCBpZCApO1xuXHRcdFx0XHRyZXR1cm4gZWxlbSA/IFsgZWxlbSBdIDogW107XG5cdFx0XHR9XG5cdFx0fTtcblx0fSBlbHNlIHtcblx0XHRFeHByLmZpbHRlcltcIklEXCJdID0gIGZ1bmN0aW9uKCBpZCApIHtcblx0XHRcdHZhciBhdHRySWQgPSBpZC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHR2YXIgbm9kZSA9IHR5cGVvZiBlbGVtLmdldEF0dHJpYnV0ZU5vZGUgIT09IFwidW5kZWZpbmVkXCIgJiZcblx0XHRcdFx0XHRlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0cmV0dXJuIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gYXR0cklkO1xuXHRcdFx0fTtcblx0XHR9O1xuXG5cdFx0Ly8gU3VwcG9ydDogSUUgNiAtIDcgb25seVxuXHRcdC8vIGdldEVsZW1lbnRCeUlkIGlzIG5vdCByZWxpYWJsZSBhcyBhIGZpbmQgc2hvcnRjdXRcblx0XHRFeHByLmZpbmRbXCJJRFwiXSA9IGZ1bmN0aW9uKCBpZCwgY29udGV4dCApIHtcblx0XHRcdGlmICggdHlwZW9mIGNvbnRleHQuZ2V0RWxlbWVudEJ5SWQgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRcdHZhciBub2RlLCBpLCBlbGVtcyxcblx0XHRcdFx0XHRlbGVtID0gY29udGV4dC5nZXRFbGVtZW50QnlJZCggaWQgKTtcblxuXHRcdFx0XHRpZiAoIGVsZW0gKSB7XG5cblx0XHRcdFx0XHQvLyBWZXJpZnkgdGhlIGlkIGF0dHJpYnV0ZVxuXHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0XHRpZiAoIG5vZGUgJiYgbm9kZS52YWx1ZSA9PT0gaWQgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gWyBlbGVtIF07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gRmFsbCBiYWNrIG9uIGdldEVsZW1lbnRzQnlOYW1lXG5cdFx0XHRcdFx0ZWxlbXMgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlOYW1lKCBpZCApO1xuXHRcdFx0XHRcdGkgPSAwO1xuXHRcdFx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtc1tpKytdKSApIHtcblx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUoXCJpZFwiKTtcblx0XHRcdFx0XHRcdGlmICggbm9kZSAmJiBub2RlLnZhbHVlID09PSBpZCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIFsgZWxlbSBdO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdH1cblx0XHR9O1xuXHR9XG5cblx0Ly8gVGFnXG5cdEV4cHIuZmluZFtcIlRBR1wiXSA9IHN1cHBvcnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUgP1xuXHRcdGZ1bmN0aW9uKCB0YWcsIGNvbnRleHQgKSB7XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSggdGFnICk7XG5cblx0XHRcdC8vIERvY3VtZW50RnJhZ21lbnQgbm9kZXMgZG9uJ3QgaGF2ZSBnRUJUTlxuXHRcdFx0fSBlbHNlIGlmICggc3VwcG9ydC5xc2EgKSB7XG5cdFx0XHRcdHJldHVybiBjb250ZXh0LnF1ZXJ5U2VsZWN0b3JBbGwoIHRhZyApO1xuXHRcdFx0fVxuXHRcdH0gOlxuXG5cdFx0ZnVuY3Rpb24oIHRhZywgY29udGV4dCApIHtcblx0XHRcdHZhciBlbGVtLFxuXHRcdFx0XHR0bXAgPSBbXSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdC8vIEJ5IGhhcHB5IGNvaW5jaWRlbmNlLCBhIChicm9rZW4pIGdFQlROIGFwcGVhcnMgb24gRG9jdW1lbnRGcmFnbWVudCBub2RlcyB0b29cblx0XHRcdFx0cmVzdWx0cyA9IGNvbnRleHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIHRhZyApO1xuXG5cdFx0XHQvLyBGaWx0ZXIgb3V0IHBvc3NpYmxlIGNvbW1lbnRzXG5cdFx0XHRpZiAoIHRhZyA9PT0gXCIqXCIgKSB7XG5cdFx0XHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdFx0XHRcdHRtcC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHRtcDtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdH07XG5cblx0Ly8gQ2xhc3Ncblx0RXhwci5maW5kW1wiQ0xBU1NcIl0gPSBzdXBwb3J0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgJiYgZnVuY3Rpb24oIGNsYXNzTmFtZSwgY29udGV4dCApIHtcblx0XHRpZiAoIHR5cGVvZiBjb250ZXh0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUgIT09IFwidW5kZWZpbmVkXCIgJiYgZG9jdW1lbnRJc0hUTUwgKSB7XG5cdFx0XHRyZXR1cm4gY29udGV4dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCBjbGFzc05hbWUgKTtcblx0XHR9XG5cdH07XG5cblx0LyogUVNBL21hdGNoZXNTZWxlY3RvclxuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gUVNBIGFuZCBtYXRjaGVzU2VsZWN0b3Igc3VwcG9ydFxuXG5cdC8vIG1hdGNoZXNTZWxlY3Rvcig6YWN0aXZlKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoSUU5L09wZXJhIDExLjUpXG5cdHJidWdneU1hdGNoZXMgPSBbXTtcblxuXHQvLyBxU2EoOmZvY3VzKSByZXBvcnRzIGZhbHNlIHdoZW4gdHJ1ZSAoQ2hyb21lIDIxKVxuXHQvLyBXZSBhbGxvdyB0aGlzIGJlY2F1c2Ugb2YgYSBidWcgaW4gSUU4LzkgdGhhdCB0aHJvd3MgYW4gZXJyb3Jcblx0Ly8gd2hlbmV2ZXIgYGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRgIGlzIGFjY2Vzc2VkIG9uIGFuIGlmcmFtZVxuXHQvLyBTbywgd2UgYWxsb3cgOmZvY3VzIHRvIHBhc3MgdGhyb3VnaCBRU0EgYWxsIHRoZSB0aW1lIHRvIGF2b2lkIHRoZSBJRSBlcnJvclxuXHQvLyBTZWUgaHR0cHM6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEzMzc4XG5cdHJidWdneVFTQSA9IFtdO1xuXG5cdGlmICggKHN1cHBvcnQucXNhID0gcm5hdGl2ZS50ZXN0KCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsICkpICkge1xuXHRcdC8vIEJ1aWxkIFFTQSByZWdleFxuXHRcdC8vIFJlZ2V4IHN0cmF0ZWd5IGFkb3B0ZWQgZnJvbSBEaWVnbyBQZXJpbmlcblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0Ly8gU2VsZWN0IGlzIHNldCB0byBlbXB0eSBzdHJpbmcgb24gcHVycG9zZVxuXHRcdFx0Ly8gVGhpcyBpcyB0byB0ZXN0IElFJ3MgdHJlYXRtZW50IG9mIG5vdCBleHBsaWNpdGx5XG5cdFx0XHQvLyBzZXR0aW5nIGEgYm9vbGVhbiBjb250ZW50IGF0dHJpYnV0ZSxcblx0XHRcdC8vIHNpbmNlIGl0cyBwcmVzZW5jZSBzaG91bGQgYmUgZW5vdWdoXG5cdFx0XHQvLyBodHRwczovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzNTlcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuaW5uZXJIVE1MID0gXCI8YSBpZD0nXCIgKyBleHBhbmRvICsgXCInPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBpZD0nXCIgKyBleHBhbmRvICsgXCItXFxyXFxcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+XCIgK1xuXHRcdFx0XHRcIjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+XCI7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOCwgT3BlcmEgMTEtMTIuMTZcblx0XHRcdC8vIE5vdGhpbmcgc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gZW1wdHkgc3RyaW5ncyBmb2xsb3cgXj0gb3IgJD0gb3IgKj1cblx0XHRcdC8vIFRoZSB0ZXN0IGF0dHJpYnV0ZSBtdXN0IGJlIHVua25vd24gaW4gT3BlcmEgYnV0IFwic2FmZVwiIGZvciBXaW5SVFxuXHRcdFx0Ly8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9oaDQ2NTM4OC5hc3B4I2F0dHJpYnV0ZV9zZWN0aW9uXG5cdFx0XHRpZiAoIGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbbXNhbGxvd2NhcHR1cmVePScnXVwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKCBcIlsqXiRdPVwiICsgd2hpdGVzcGFjZSArIFwiKig/OicnfFxcXCJcXFwiKVwiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IElFOFxuXHRcdFx0Ly8gQm9vbGVhbiBhdHRyaWJ1dGVzIGFuZCBcInZhbHVlXCIgYXJlIG5vdCB0cmVhdGVkIGNvcnJlY3RseVxuXHRcdFx0aWYgKCAhZWwucXVlcnlTZWxlY3RvckFsbChcIltzZWxlY3RlZF1cIikubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaCggXCJcXFxcW1wiICsgd2hpdGVzcGFjZSArIFwiKig/OnZhbHVlfFwiICsgYm9vbGVhbnMgKyBcIilcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWU8MjksIEFuZHJvaWQ8NC40LCBTYWZhcmk8Ny4wKywgaU9TPDcuMCssIFBoYW50b21KUzwxLjkuOCtcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoIFwiW2lkfj1cIiArIGV4cGFuZG8gKyBcIi1dXCIgKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwifj1cIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFdlYmtpdC9PcGVyYSAtIDpjaGVja2VkIHNob3VsZCByZXR1cm4gc2VsZWN0ZWQgb3B0aW9uIGVsZW1lbnRzXG5cdFx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDExL1JFQy1jc3MzLXNlbGVjdG9ycy0yMDExMDkyOS8jY2hlY2tlZFxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggIWVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCI6Y2hlY2tlZFwiKS5sZW5ndGggKSB7XG5cdFx0XHRcdHJidWdneVFTQS5wdXNoKFwiOmNoZWNrZWRcIik7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN1cHBvcnQ6IFNhZmFyaSA4KywgaU9TIDgrXG5cdFx0XHQvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2ODUxXG5cdFx0XHQvLyBJbi1wYWdlIGBzZWxlY3RvciNpZCBzaWJsaW5nLWNvbWJpbmF0b3Igc2VsZWN0b3JgIGZhaWxzXG5cdFx0XHRpZiAoICFlbC5xdWVyeVNlbGVjdG9yQWxsKCBcImEjXCIgKyBleHBhbmRvICsgXCIrKlwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRyYnVnZ3lRU0EucHVzaChcIi4jLitbK35dXCIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0YXNzZXJ0KGZ1bmN0aW9uKCBlbCApIHtcblx0XHRcdGVsLmlubmVySFRNTCA9IFwiPGEgaHJlZj0nJyBkaXNhYmxlZD0nZGlzYWJsZWQnPjwvYT5cIiArXG5cdFx0XHRcdFwiPHNlbGVjdCBkaXNhYmxlZD0nZGlzYWJsZWQnPjxvcHRpb24vPjwvc2VsZWN0PlwiO1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBXaW5kb3dzIDggTmF0aXZlIEFwcHNcblx0XHRcdC8vIFRoZSB0eXBlIGFuZCBuYW1lIGF0dHJpYnV0ZXMgYXJlIHJlc3RyaWN0ZWQgZHVyaW5nIC5pbm5lckhUTUwgYXNzaWdubWVudFxuXHRcdFx0dmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuXHRcdFx0aW5wdXQuc2V0QXR0cmlidXRlKCBcInR5cGVcIiwgXCJoaWRkZW5cIiApO1xuXHRcdFx0ZWwuYXBwZW5kQ2hpbGQoIGlucHV0ICkuc2V0QXR0cmlidXRlKCBcIm5hbWVcIiwgXCJEXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUU4XG5cdFx0XHQvLyBFbmZvcmNlIGNhc2Utc2Vuc2l0aXZpdHkgb2YgbmFtZSBhdHRyaWJ1dGVcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIltuYW1lPWRdXCIpLmxlbmd0aCApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwibmFtZVwiICsgd2hpdGVzcGFjZSArIFwiKlsqXiR8IX5dPz1cIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGRiAzLjUgLSA6ZW5hYmxlZC86ZGlzYWJsZWQgYW5kIGhpZGRlbiBlbGVtZW50cyAoaGlkZGVuIGVsZW1lbnRzIGFyZSBzdGlsbCBlbmFibGVkKVxuXHRcdFx0Ly8gSUU4IHRocm93cyBlcnJvciBoZXJlIGFuZCB3aWxsIG5vdCBzZWUgbGF0ZXIgdGVzdHNcblx0XHRcdGlmICggZWwucXVlcnlTZWxlY3RvckFsbChcIjplbmFibGVkXCIpLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRTktMTErXG5cdFx0XHQvLyBJRSdzIDpkaXNhYmxlZCBzZWxlY3RvciBkb2VzIG5vdCBwaWNrIHVwIHRoZSBjaGlsZHJlbiBvZiBkaXNhYmxlZCBmaWVsZHNldHNcblx0XHRcdGRvY0VsZW0uYXBwZW5kQ2hpbGQoIGVsICkuZGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0aWYgKCBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiOmRpc2FibGVkXCIpLmxlbmd0aCAhPT0gMiApIHtcblx0XHRcdFx0cmJ1Z2d5UVNBLnB1c2goIFwiOmVuYWJsZWRcIiwgXCI6ZGlzYWJsZWRcIiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPcGVyYSAxMC0xMSBkb2VzIG5vdCB0aHJvdyBvbiBwb3N0LWNvbW1hIGludmFsaWQgcHNldWRvc1xuXHRcdFx0ZWwucXVlcnlTZWxlY3RvckFsbChcIiosOnhcIik7XG5cdFx0XHRyYnVnZ3lRU0EucHVzaChcIiwuKjpcIik7XG5cdFx0fSk7XG5cdH1cblxuXHRpZiAoIChzdXBwb3J0Lm1hdGNoZXNTZWxlY3RvciA9IHJuYXRpdmUudGVzdCggKG1hdGNoZXMgPSBkb2NFbGVtLm1hdGNoZXMgfHxcblx0XHRkb2NFbGVtLndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fFxuXHRcdGRvY0VsZW0ubW96TWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5vTWF0Y2hlc1NlbGVjdG9yIHx8XG5cdFx0ZG9jRWxlbS5tc01hdGNoZXNTZWxlY3RvcikgKSkgKSB7XG5cblx0XHRhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRcdFx0Ly8gQ2hlY2sgdG8gc2VlIGlmIGl0J3MgcG9zc2libGUgdG8gZG8gbWF0Y2hlc1NlbGVjdG9yXG5cdFx0XHQvLyBvbiBhIGRpc2Nvbm5lY3RlZCBub2RlIChJRSA5KVxuXHRcdFx0c3VwcG9ydC5kaXNjb25uZWN0ZWRNYXRjaCA9IG1hdGNoZXMuY2FsbCggZWwsIFwiKlwiICk7XG5cblx0XHRcdC8vIFRoaXMgc2hvdWxkIGZhaWwgd2l0aCBhbiBleGNlcHRpb25cblx0XHRcdC8vIEdlY2tvIGRvZXMgbm90IGVycm9yLCByZXR1cm5zIGZhbHNlIGluc3RlYWRcblx0XHRcdG1hdGNoZXMuY2FsbCggZWwsIFwiW3MhPScnXTp4XCIgKTtcblx0XHRcdHJidWdneU1hdGNoZXMucHVzaCggXCIhPVwiLCBwc2V1ZG9zICk7XG5cdFx0fSk7XG5cdH1cblxuXHRyYnVnZ3lRU0EgPSByYnVnZ3lRU0EubGVuZ3RoICYmIG5ldyBSZWdFeHAoIHJidWdneVFTQS5qb2luKFwifFwiKSApO1xuXHRyYnVnZ3lNYXRjaGVzID0gcmJ1Z2d5TWF0Y2hlcy5sZW5ndGggJiYgbmV3IFJlZ0V4cCggcmJ1Z2d5TWF0Y2hlcy5qb2luKFwifFwiKSApO1xuXG5cdC8qIENvbnRhaW5zXG5cdC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblx0aGFzQ29tcGFyZSA9IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiApO1xuXG5cdC8vIEVsZW1lbnQgY29udGFpbnMgYW5vdGhlclxuXHQvLyBQdXJwb3NlZnVsbHkgc2VsZi1leGNsdXNpdmVcblx0Ly8gQXMgaW4sIGFuIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBpdHNlbGZcblx0Y29udGFpbnMgPSBoYXNDb21wYXJlIHx8IHJuYXRpdmUudGVzdCggZG9jRWxlbS5jb250YWlucyApID9cblx0XHRmdW5jdGlvbiggYSwgYiApIHtcblx0XHRcdHZhciBhZG93biA9IGEubm9kZVR5cGUgPT09IDkgPyBhLmRvY3VtZW50RWxlbWVudCA6IGEsXG5cdFx0XHRcdGJ1cCA9IGIgJiYgYi5wYXJlbnROb2RlO1xuXHRcdFx0cmV0dXJuIGEgPT09IGJ1cCB8fCAhISggYnVwICYmIGJ1cC5ub2RlVHlwZSA9PT0gMSAmJiAoXG5cdFx0XHRcdGFkb3duLmNvbnRhaW5zID9cblx0XHRcdFx0XHRhZG93bi5jb250YWlucyggYnVwICkgOlxuXHRcdFx0XHRcdGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24gJiYgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYnVwICkgJiAxNlxuXHRcdFx0KSk7XG5cdFx0fSA6XG5cdFx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0XHRpZiAoIGIgKSB7XG5cdFx0XHRcdHdoaWxlICggKGIgPSBiLnBhcmVudE5vZGUpICkge1xuXHRcdFx0XHRcdGlmICggYiA9PT0gYSApIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cblx0LyogU29ydGluZ1xuXHQtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cblx0Ly8gRG9jdW1lbnQgb3JkZXIgc29ydGluZ1xuXHRzb3J0T3JkZXIgPSBoYXNDb21wYXJlID9cblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cblx0XHQvLyBGbGFnIGZvciBkdXBsaWNhdGUgcmVtb3ZhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHQvLyBTb3J0IG9uIG1ldGhvZCBleGlzdGVuY2UgaWYgb25seSBvbmUgaW5wdXQgaGFzIGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uXG5cdFx0dmFyIGNvbXBhcmUgPSAhYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiAtICFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO1xuXHRcdGlmICggY29tcGFyZSApIHtcblx0XHRcdHJldHVybiBjb21wYXJlO1xuXHRcdH1cblxuXHRcdC8vIENhbGN1bGF0ZSBwb3NpdGlvbiBpZiBib3RoIGlucHV0cyBiZWxvbmcgdG8gdGhlIHNhbWUgZG9jdW1lbnRcblx0XHRjb21wYXJlID0gKCBhLm93bmVyRG9jdW1lbnQgfHwgYSApID09PSAoIGIub3duZXJEb2N1bWVudCB8fCBiICkgP1xuXHRcdFx0YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiggYiApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHdlIGtub3cgdGhleSBhcmUgZGlzY29ubmVjdGVkXG5cdFx0XHQxO1xuXG5cdFx0Ly8gRGlzY29ubmVjdGVkIG5vZGVzXG5cdFx0aWYgKCBjb21wYXJlICYgMSB8fFxuXHRcdFx0KCFzdXBwb3J0LnNvcnREZXRhY2hlZCAmJiBiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBhICkgPT09IGNvbXBhcmUpICkge1xuXG5cdFx0XHQvLyBDaG9vc2UgdGhlIGZpcnN0IGVsZW1lbnQgdGhhdCBpcyByZWxhdGVkIHRvIG91ciBwcmVmZXJyZWQgZG9jdW1lbnRcblx0XHRcdGlmICggYSA9PT0gZG9jdW1lbnQgfHwgYS5vd25lckRvY3VtZW50ID09PSBwcmVmZXJyZWREb2MgJiYgY29udGFpbnMocHJlZmVycmVkRG9jLCBhKSApIHtcblx0XHRcdFx0cmV0dXJuIC0xO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBiID09PSBkb2N1bWVudCB8fCBiLm93bmVyRG9jdW1lbnQgPT09IHByZWZlcnJlZERvYyAmJiBjb250YWlucyhwcmVmZXJyZWREb2MsIGIpICkge1xuXHRcdFx0XHRyZXR1cm4gMTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTWFpbnRhaW4gb3JpZ2luYWwgb3JkZXJcblx0XHRcdHJldHVybiBzb3J0SW5wdXQgP1xuXHRcdFx0XHQoIGluZGV4T2YoIHNvcnRJbnB1dCwgYSApIC0gaW5kZXhPZiggc29ydElucHV0LCBiICkgKSA6XG5cdFx0XHRcdDA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNvbXBhcmUgJiA0ID8gLTEgOiAxO1xuXHR9IDpcblx0ZnVuY3Rpb24oIGEsIGIgKSB7XG5cdFx0Ly8gRXhpdCBlYXJseSBpZiB0aGUgbm9kZXMgYXJlIGlkZW50aWNhbFxuXHRcdGlmICggYSA9PT0gYiApIHtcblx0XHRcdGhhc0R1cGxpY2F0ZSA9IHRydWU7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHR2YXIgY3VyLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRhdXAgPSBhLnBhcmVudE5vZGUsXG5cdFx0XHRidXAgPSBiLnBhcmVudE5vZGUsXG5cdFx0XHRhcCA9IFsgYSBdLFxuXHRcdFx0YnAgPSBbIGIgXTtcblxuXHRcdC8vIFBhcmVudGxlc3Mgbm9kZXMgYXJlIGVpdGhlciBkb2N1bWVudHMgb3IgZGlzY29ubmVjdGVkXG5cdFx0aWYgKCAhYXVwIHx8ICFidXAgKSB7XG5cdFx0XHRyZXR1cm4gYSA9PT0gZG9jdW1lbnQgPyAtMSA6XG5cdFx0XHRcdGIgPT09IGRvY3VtZW50ID8gMSA6XG5cdFx0XHRcdGF1cCA/IC0xIDpcblx0XHRcdFx0YnVwID8gMSA6XG5cdFx0XHRcdHNvcnRJbnB1dCA/XG5cdFx0XHRcdCggaW5kZXhPZiggc29ydElucHV0LCBhICkgLSBpbmRleE9mKCBzb3J0SW5wdXQsIGIgKSApIDpcblx0XHRcdFx0MDtcblxuXHRcdC8vIElmIHRoZSBub2RlcyBhcmUgc2libGluZ3MsIHdlIGNhbiBkbyBhIHF1aWNrIGNoZWNrXG5cdFx0fSBlbHNlIGlmICggYXVwID09PSBidXAgKSB7XG5cdFx0XHRyZXR1cm4gc2libGluZ0NoZWNrKCBhLCBiICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlIHdlIG5lZWQgZnVsbCBsaXN0cyBvZiB0aGVpciBhbmNlc3RvcnMgZm9yIGNvbXBhcmlzb25cblx0XHRjdXIgPSBhO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGFwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblx0XHRjdXIgPSBiO1xuXHRcdHdoaWxlICggKGN1ciA9IGN1ci5wYXJlbnROb2RlKSApIHtcblx0XHRcdGJwLnVuc2hpZnQoIGN1ciApO1xuXHRcdH1cblxuXHRcdC8vIFdhbGsgZG93biB0aGUgdHJlZSBsb29raW5nIGZvciBhIGRpc2NyZXBhbmN5XG5cdFx0d2hpbGUgKCBhcFtpXSA9PT0gYnBbaV0gKSB7XG5cdFx0XHRpKys7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGkgP1xuXHRcdFx0Ly8gRG8gYSBzaWJsaW5nIGNoZWNrIGlmIHRoZSBub2RlcyBoYXZlIGEgY29tbW9uIGFuY2VzdG9yXG5cdFx0XHRzaWJsaW5nQ2hlY2soIGFwW2ldLCBicFtpXSApIDpcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIG5vZGVzIGluIG91ciBkb2N1bWVudCBzb3J0IGZpcnN0XG5cdFx0XHRhcFtpXSA9PT0gcHJlZmVycmVkRG9jID8gLTEgOlxuXHRcdFx0YnBbaV0gPT09IHByZWZlcnJlZERvYyA/IDEgOlxuXHRcdFx0MDtcblx0fTtcblxuXHRyZXR1cm4gZG9jdW1lbnQ7XG59O1xuXG5TaXp6bGUubWF0Y2hlcyA9IGZ1bmN0aW9uKCBleHByLCBlbGVtZW50cyApIHtcblx0cmV0dXJuIFNpenpsZSggZXhwciwgbnVsbCwgbnVsbCwgZWxlbWVudHMgKTtcbn07XG5cblNpenpsZS5tYXRjaGVzU2VsZWN0b3IgPSBmdW5jdGlvbiggZWxlbSwgZXhwciApIHtcblx0Ly8gU2V0IGRvY3VtZW50IHZhcnMgaWYgbmVlZGVkXG5cdGlmICggKCBlbGVtLm93bmVyRG9jdW1lbnQgfHwgZWxlbSApICE9PSBkb2N1bWVudCApIHtcblx0XHRzZXREb2N1bWVudCggZWxlbSApO1xuXHR9XG5cblx0Ly8gTWFrZSBzdXJlIHRoYXQgYXR0cmlidXRlIHNlbGVjdG9ycyBhcmUgcXVvdGVkXG5cdGV4cHIgPSBleHByLnJlcGxhY2UoIHJhdHRyaWJ1dGVRdW90ZXMsIFwiPSckMSddXCIgKTtcblxuXHRpZiAoIHN1cHBvcnQubWF0Y2hlc1NlbGVjdG9yICYmIGRvY3VtZW50SXNIVE1MICYmXG5cdFx0IWNvbXBpbGVyQ2FjaGVbIGV4cHIgKyBcIiBcIiBdICYmXG5cdFx0KCAhcmJ1Z2d5TWF0Y2hlcyB8fCAhcmJ1Z2d5TWF0Y2hlcy50ZXN0KCBleHByICkgKSAmJlxuXHRcdCggIXJidWdneVFTQSAgICAgfHwgIXJidWdneVFTQS50ZXN0KCBleHByICkgKSApIHtcblxuXHRcdHRyeSB7XG5cdFx0XHR2YXIgcmV0ID0gbWF0Y2hlcy5jYWxsKCBlbGVtLCBleHByICk7XG5cblx0XHRcdC8vIElFIDkncyBtYXRjaGVzU2VsZWN0b3IgcmV0dXJucyBmYWxzZSBvbiBkaXNjb25uZWN0ZWQgbm9kZXNcblx0XHRcdGlmICggcmV0IHx8IHN1cHBvcnQuZGlzY29ubmVjdGVkTWF0Y2ggfHxcblx0XHRcdFx0XHQvLyBBcyB3ZWxsLCBkaXNjb25uZWN0ZWQgbm9kZXMgYXJlIHNhaWQgdG8gYmUgaW4gYSBkb2N1bWVudFxuXHRcdFx0XHRcdC8vIGZyYWdtZW50IGluIElFIDlcblx0XHRcdFx0XHRlbGVtLmRvY3VtZW50ICYmIGVsZW0uZG9jdW1lbnQubm9kZVR5cGUgIT09IDExICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHt9XG5cdH1cblxuXHRyZXR1cm4gU2l6emxlKCBleHByLCBkb2N1bWVudCwgbnVsbCwgWyBlbGVtIF0gKS5sZW5ndGggPiAwO1xufTtcblxuU2l6emxlLmNvbnRhaW5zID0gZnVuY3Rpb24oIGNvbnRleHQsIGVsZW0gKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGNvbnRleHQgKTtcblx0fVxuXHRyZXR1cm4gY29udGFpbnMoIGNvbnRleHQsIGVsZW0gKTtcbn07XG5cblNpenpsZS5hdHRyID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdC8vIFNldCBkb2N1bWVudCB2YXJzIGlmIG5lZWRlZFxuXHRpZiAoICggZWxlbS5vd25lckRvY3VtZW50IHx8IGVsZW0gKSAhPT0gZG9jdW1lbnQgKSB7XG5cdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0fVxuXG5cdHZhciBmbiA9IEV4cHIuYXR0ckhhbmRsZVsgbmFtZS50b0xvd2VyQ2FzZSgpIF0sXG5cdFx0Ly8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBPYmplY3QucHJvdG90eXBlIHByb3BlcnRpZXMgKGpRdWVyeSAjMTM4MDcpXG5cdFx0dmFsID0gZm4gJiYgaGFzT3duLmNhbGwoIEV4cHIuYXR0ckhhbmRsZSwgbmFtZS50b0xvd2VyQ2FzZSgpICkgP1xuXHRcdFx0Zm4oIGVsZW0sIG5hbWUsICFkb2N1bWVudElzSFRNTCApIDpcblx0XHRcdHVuZGVmaW5lZDtcblxuXHRyZXR1cm4gdmFsICE9PSB1bmRlZmluZWQgP1xuXHRcdHZhbCA6XG5cdFx0c3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSApIDpcblx0XHRcdCh2YWwgPSBlbGVtLmdldEF0dHJpYnV0ZU5vZGUobmFtZSkpICYmIHZhbC5zcGVjaWZpZWQgP1xuXHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xufTtcblxuU2l6emxlLmVzY2FwZSA9IGZ1bmN0aW9uKCBzZWwgKSB7XG5cdHJldHVybiAoc2VsICsgXCJcIikucmVwbGFjZSggcmNzc2VzY2FwZSwgZmNzc2VzY2FwZSApO1xufTtcblxuU2l6emxlLmVycm9yID0gZnVuY3Rpb24oIG1zZyApIHtcblx0dGhyb3cgbmV3IEVycm9yKCBcIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246IFwiICsgbXNnICk7XG59O1xuXG4vKipcbiAqIERvY3VtZW50IHNvcnRpbmcgYW5kIHJlbW92aW5nIGR1cGxpY2F0ZXNcbiAqIEBwYXJhbSB7QXJyYXlMaWtlfSByZXN1bHRzXG4gKi9cblNpenpsZS51bmlxdWVTb3J0ID0gZnVuY3Rpb24oIHJlc3VsdHMgKSB7XG5cdHZhciBlbGVtLFxuXHRcdGR1cGxpY2F0ZXMgPSBbXSxcblx0XHRqID0gMCxcblx0XHRpID0gMDtcblxuXHQvLyBVbmxlc3Mgd2UgKmtub3cqIHdlIGNhbiBkZXRlY3QgZHVwbGljYXRlcywgYXNzdW1lIHRoZWlyIHByZXNlbmNlXG5cdGhhc0R1cGxpY2F0ZSA9ICFzdXBwb3J0LmRldGVjdER1cGxpY2F0ZXM7XG5cdHNvcnRJbnB1dCA9ICFzdXBwb3J0LnNvcnRTdGFibGUgJiYgcmVzdWx0cy5zbGljZSggMCApO1xuXHRyZXN1bHRzLnNvcnQoIHNvcnRPcmRlciApO1xuXG5cdGlmICggaGFzRHVwbGljYXRlICkge1xuXHRcdHdoaWxlICggKGVsZW0gPSByZXN1bHRzW2krK10pICkge1xuXHRcdFx0aWYgKCBlbGVtID09PSByZXN1bHRzWyBpIF0gKSB7XG5cdFx0XHRcdGogPSBkdXBsaWNhdGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRyZXN1bHRzLnNwbGljZSggZHVwbGljYXRlc1sgaiBdLCAxICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2xlYXIgaW5wdXQgYWZ0ZXIgc29ydGluZyB0byByZWxlYXNlIG9iamVjdHNcblx0Ly8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvc2l6emxlL3B1bGwvMjI1XG5cdHNvcnRJbnB1dCA9IG51bGw7XG5cblx0cmV0dXJuIHJlc3VsdHM7XG59O1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIHRleHQgdmFsdWUgb2YgYW4gYXJyYXkgb2YgRE9NIG5vZGVzXG4gKiBAcGFyYW0ge0FycmF5fEVsZW1lbnR9IGVsZW1cbiAqL1xuZ2V0VGV4dCA9IFNpenpsZS5nZXRUZXh0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHZhciBub2RlLFxuXHRcdHJldCA9IFwiXCIsXG5cdFx0aSA9IDAsXG5cdFx0bm9kZVR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdGlmICggIW5vZGVUeXBlICkge1xuXHRcdC8vIElmIG5vIG5vZGVUeXBlLCB0aGlzIGlzIGV4cGVjdGVkIHRvIGJlIGFuIGFycmF5XG5cdFx0d2hpbGUgKCAobm9kZSA9IGVsZW1baSsrXSkgKSB7XG5cdFx0XHQvLyBEbyBub3QgdHJhdmVyc2UgY29tbWVudCBub2Rlc1xuXHRcdFx0cmV0ICs9IGdldFRleHQoIG5vZGUgKTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoIG5vZGVUeXBlID09PSAxIHx8IG5vZGVUeXBlID09PSA5IHx8IG5vZGVUeXBlID09PSAxMSApIHtcblx0XHQvLyBVc2UgdGV4dENvbnRlbnQgZm9yIGVsZW1lbnRzXG5cdFx0Ly8gaW5uZXJUZXh0IHVzYWdlIHJlbW92ZWQgZm9yIGNvbnNpc3RlbmN5IG9mIG5ldyBsaW5lcyAoalF1ZXJ5ICMxMTE1Mylcblx0XHRpZiAoIHR5cGVvZiBlbGVtLnRleHRDb250ZW50ID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0udGV4dENvbnRlbnQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFRyYXZlcnNlIGl0cyBjaGlsZHJlblxuXHRcdFx0Zm9yICggZWxlbSA9IGVsZW0uZmlyc3RDaGlsZDsgZWxlbTsgZWxlbSA9IGVsZW0ubmV4dFNpYmxpbmcgKSB7XG5cdFx0XHRcdHJldCArPSBnZXRUZXh0KCBlbGVtICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBub2RlVHlwZSA9PT0gMyB8fCBub2RlVHlwZSA9PT0gNCApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVmFsdWU7XG5cdH1cblx0Ly8gRG8gbm90IGluY2x1ZGUgY29tbWVudCBvciBwcm9jZXNzaW5nIGluc3RydWN0aW9uIG5vZGVzXG5cblx0cmV0dXJuIHJldDtcbn07XG5cbkV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzID0ge1xuXG5cdC8vIENhbiBiZSBhZGp1c3RlZCBieSB0aGUgdXNlclxuXHRjYWNoZUxlbmd0aDogNTAsXG5cblx0Y3JlYXRlUHNldWRvOiBtYXJrRnVuY3Rpb24sXG5cblx0bWF0Y2g6IG1hdGNoRXhwcixcblxuXHRhdHRySGFuZGxlOiB7fSxcblxuXHRmaW5kOiB7fSxcblxuXHRyZWxhdGl2ZToge1xuXHRcdFwiPlwiOiB7IGRpcjogXCJwYXJlbnROb2RlXCIsIGZpcnN0OiB0cnVlIH0sXG5cdFx0XCIgXCI6IHsgZGlyOiBcInBhcmVudE5vZGVcIiB9LFxuXHRcdFwiK1wiOiB7IGRpcjogXCJwcmV2aW91c1NpYmxpbmdcIiwgZmlyc3Q6IHRydWUgfSxcblx0XHRcIn5cIjogeyBkaXI6IFwicHJldmlvdXNTaWJsaW5nXCIgfVxuXHR9LFxuXG5cdHByZUZpbHRlcjoge1xuXHRcdFwiQVRUUlwiOiBmdW5jdGlvbiggbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdC8vIE1vdmUgdGhlIGdpdmVuIHZhbHVlIHRvIG1hdGNoWzNdIHdoZXRoZXIgcXVvdGVkIG9yIHVucXVvdGVkXG5cdFx0XHRtYXRjaFszXSA9ICggbWF0Y2hbM10gfHwgbWF0Y2hbNF0gfHwgbWF0Y2hbNV0gfHwgXCJcIiApLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICk7XG5cblx0XHRcdGlmICggbWF0Y2hbMl0gPT09IFwifj1cIiApIHtcblx0XHRcdFx0bWF0Y2hbM10gPSBcIiBcIiArIG1hdGNoWzNdICsgXCIgXCI7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgNCApO1xuXHRcdH0sXG5cblx0XHRcIkNISUxEXCI6IGZ1bmN0aW9uKCBtYXRjaCApIHtcblx0XHRcdC8qIG1hdGNoZXMgZnJvbSBtYXRjaEV4cHJbXCJDSElMRFwiXVxuXHRcdFx0XHQxIHR5cGUgKG9ubHl8bnRofC4uLilcblx0XHRcdFx0MiB3aGF0IChjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHQzIGFyZ3VtZW50IChldmVufG9kZHxcXGQqfFxcZCpuKFsrLV1cXGQrKT98Li4uKVxuXHRcdFx0XHQ0IHhuLWNvbXBvbmVudCBvZiB4bit5IGFyZ3VtZW50IChbKy1dP1xcZCpufClcblx0XHRcdFx0NSBzaWduIG9mIHhuLWNvbXBvbmVudFxuXHRcdFx0XHQ2IHggb2YgeG4tY29tcG9uZW50XG5cdFx0XHRcdDcgc2lnbiBvZiB5LWNvbXBvbmVudFxuXHRcdFx0XHQ4IHkgb2YgeS1jb21wb25lbnRcblx0XHRcdCovXG5cdFx0XHRtYXRjaFsxXSA9IG1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRcdGlmICggbWF0Y2hbMV0uc2xpY2UoIDAsIDMgKSA9PT0gXCJudGhcIiApIHtcblx0XHRcdFx0Ly8gbnRoLSogcmVxdWlyZXMgYXJndW1lbnRcblx0XHRcdFx0aWYgKCAhbWF0Y2hbM10gKSB7XG5cdFx0XHRcdFx0U2l6emxlLmVycm9yKCBtYXRjaFswXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gbnVtZXJpYyB4IGFuZCB5IHBhcmFtZXRlcnMgZm9yIEV4cHIuZmlsdGVyLkNISUxEXG5cdFx0XHRcdC8vIHJlbWVtYmVyIHRoYXQgZmFsc2UvdHJ1ZSBjYXN0IHJlc3BlY3RpdmVseSB0byAwLzFcblx0XHRcdFx0bWF0Y2hbNF0gPSArKCBtYXRjaFs0XSA/IG1hdGNoWzVdICsgKG1hdGNoWzZdIHx8IDEpIDogMiAqICggbWF0Y2hbM10gPT09IFwiZXZlblwiIHx8IG1hdGNoWzNdID09PSBcIm9kZFwiICkgKTtcblx0XHRcdFx0bWF0Y2hbNV0gPSArKCAoIG1hdGNoWzddICsgbWF0Y2hbOF0gKSB8fCBtYXRjaFszXSA9PT0gXCJvZGRcIiApO1xuXG5cdFx0XHQvLyBvdGhlciB0eXBlcyBwcm9oaWJpdCBhcmd1bWVudHNcblx0XHRcdH0gZWxzZSBpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRTaXp6bGUuZXJyb3IoIG1hdGNoWzBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBtYXRjaDtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIG1hdGNoICkge1xuXHRcdFx0dmFyIGV4Y2Vzcyxcblx0XHRcdFx0dW5xdW90ZWQgPSAhbWF0Y2hbNl0gJiYgbWF0Y2hbMl07XG5cblx0XHRcdGlmICggbWF0Y2hFeHByW1wiQ0hJTERcIl0udGVzdCggbWF0Y2hbMF0gKSApIHtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdC8vIEFjY2VwdCBxdW90ZWQgYXJndW1lbnRzIGFzLWlzXG5cdFx0XHRpZiAoIG1hdGNoWzNdICkge1xuXHRcdFx0XHRtYXRjaFsyXSA9IG1hdGNoWzRdIHx8IG1hdGNoWzVdIHx8IFwiXCI7XG5cblx0XHRcdC8vIFN0cmlwIGV4Y2VzcyBjaGFyYWN0ZXJzIGZyb20gdW5xdW90ZWQgYXJndW1lbnRzXG5cdFx0XHR9IGVsc2UgaWYgKCB1bnF1b3RlZCAmJiBycHNldWRvLnRlc3QoIHVucXVvdGVkICkgJiZcblx0XHRcdFx0Ly8gR2V0IGV4Y2VzcyBmcm9tIHRva2VuaXplIChyZWN1cnNpdmVseSlcblx0XHRcdFx0KGV4Y2VzcyA9IHRva2VuaXplKCB1bnF1b3RlZCwgdHJ1ZSApKSAmJlxuXHRcdFx0XHQvLyBhZHZhbmNlIHRvIHRoZSBuZXh0IGNsb3NpbmcgcGFyZW50aGVzaXNcblx0XHRcdFx0KGV4Y2VzcyA9IHVucXVvdGVkLmluZGV4T2YoIFwiKVwiLCB1bnF1b3RlZC5sZW5ndGggLSBleGNlc3MgKSAtIHVucXVvdGVkLmxlbmd0aCkgKSB7XG5cblx0XHRcdFx0Ly8gZXhjZXNzIGlzIGEgbmVnYXRpdmUgaW5kZXhcblx0XHRcdFx0bWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCwgZXhjZXNzICk7XG5cdFx0XHRcdG1hdGNoWzJdID0gdW5xdW90ZWQuc2xpY2UoIDAsIGV4Y2VzcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXR1cm4gb25seSBjYXB0dXJlcyBuZWVkZWQgYnkgdGhlIHBzZXVkbyBmaWx0ZXIgbWV0aG9kICh0eXBlIGFuZCBhcmd1bWVudClcblx0XHRcdHJldHVybiBtYXRjaC5zbGljZSggMCwgMyApO1xuXHRcdH1cblx0fSxcblxuXHRmaWx0ZXI6IHtcblxuXHRcdFwiVEFHXCI6IGZ1bmN0aW9uKCBub2RlTmFtZVNlbGVjdG9yICkge1xuXHRcdFx0dmFyIG5vZGVOYW1lID0gbm9kZU5hbWVTZWxlY3Rvci5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gbm9kZU5hbWVTZWxlY3RvciA9PT0gXCIqXCIgP1xuXHRcdFx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0gOlxuXHRcdFx0XHRmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5vZGVOYW1lO1xuXHRcdFx0XHR9O1xuXHRcdH0sXG5cblx0XHRcIkNMQVNTXCI6IGZ1bmN0aW9uKCBjbGFzc05hbWUgKSB7XG5cdFx0XHR2YXIgcGF0dGVybiA9IGNsYXNzQ2FjaGVbIGNsYXNzTmFtZSArIFwiIFwiIF07XG5cblx0XHRcdHJldHVybiBwYXR0ZXJuIHx8XG5cdFx0XHRcdChwYXR0ZXJuID0gbmV3IFJlZ0V4cCggXCIoXnxcIiArIHdoaXRlc3BhY2UgKyBcIilcIiArIGNsYXNzTmFtZSArIFwiKFwiICsgd2hpdGVzcGFjZSArIFwifCQpXCIgKSkgJiZcblx0XHRcdFx0Y2xhc3NDYWNoZSggY2xhc3NOYW1lLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0XHRyZXR1cm4gcGF0dGVybi50ZXN0KCB0eXBlb2YgZWxlbS5jbGFzc05hbWUgPT09IFwic3RyaW5nXCIgJiYgZWxlbS5jbGFzc05hbWUgfHwgdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlICE9PSBcInVuZGVmaW5lZFwiICYmIGVsZW0uZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikgfHwgXCJcIiApO1xuXHRcdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0XCJBVFRSXCI6IGZ1bmN0aW9uKCBuYW1lLCBvcGVyYXRvciwgY2hlY2sgKSB7XG5cdFx0XHRyZXR1cm4gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciByZXN1bHQgPSBTaXp6bGUuYXR0ciggZWxlbSwgbmFtZSApO1xuXG5cdFx0XHRcdGlmICggcmVzdWx0ID09IG51bGwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9wZXJhdG9yID09PSBcIiE9XCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCAhb3BlcmF0b3IgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXN1bHQgKz0gXCJcIjtcblxuXHRcdFx0XHRyZXR1cm4gb3BlcmF0b3IgPT09IFwiPVwiID8gcmVzdWx0ID09PSBjaGVjayA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiIT1cIiA/IHJlc3VsdCAhPT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIl49XCIgPyBjaGVjayAmJiByZXN1bHQuaW5kZXhPZiggY2hlY2sgKSA9PT0gMCA6XG5cdFx0XHRcdFx0b3BlcmF0b3IgPT09IFwiKj1cIiA/IGNoZWNrICYmIHJlc3VsdC5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIiQ9XCIgPyBjaGVjayAmJiByZXN1bHQuc2xpY2UoIC1jaGVjay5sZW5ndGggKSA9PT0gY2hlY2sgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcIn49XCIgPyAoIFwiIFwiICsgcmVzdWx0LnJlcGxhY2UoIHJ3aGl0ZXNwYWNlLCBcIiBcIiApICsgXCIgXCIgKS5pbmRleE9mKCBjaGVjayApID4gLTEgOlxuXHRcdFx0XHRcdG9wZXJhdG9yID09PSBcInw9XCIgPyByZXN1bHQgPT09IGNoZWNrIHx8IHJlc3VsdC5zbGljZSggMCwgY2hlY2subGVuZ3RoICsgMSApID09PSBjaGVjayArIFwiLVwiIDpcblx0XHRcdFx0XHRmYWxzZTtcblx0XHRcdH07XG5cdFx0fSxcblxuXHRcdFwiQ0hJTERcIjogZnVuY3Rpb24oIHR5cGUsIHdoYXQsIGFyZ3VtZW50LCBmaXJzdCwgbGFzdCApIHtcblx0XHRcdHZhciBzaW1wbGUgPSB0eXBlLnNsaWNlKCAwLCAzICkgIT09IFwibnRoXCIsXG5cdFx0XHRcdGZvcndhcmQgPSB0eXBlLnNsaWNlKCAtNCApICE9PSBcImxhc3RcIixcblx0XHRcdFx0b2ZUeXBlID0gd2hhdCA9PT0gXCJvZi10eXBlXCI7XG5cblx0XHRcdHJldHVybiBmaXJzdCA9PT0gMSAmJiBsYXN0ID09PSAwID9cblxuXHRcdFx0XHQvLyBTaG9ydGN1dCBmb3IgOm50aC0qKG4pXG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdHJldHVybiAhIWVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdFx0fSA6XG5cblx0XHRcdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgY2FjaGUsIHVuaXF1ZUNhY2hlLCBvdXRlckNhY2hlLCBub2RlLCBub2RlSW5kZXgsIHN0YXJ0LFxuXHRcdFx0XHRcdFx0ZGlyID0gc2ltcGxlICE9PSBmb3J3YXJkID8gXCJuZXh0U2libGluZ1wiIDogXCJwcmV2aW91c1NpYmxpbmdcIixcblx0XHRcdFx0XHRcdHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZSxcblx0XHRcdFx0XHRcdG5hbWUgPSBvZlR5cGUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLFxuXHRcdFx0XHRcdFx0dXNlQ2FjaGUgPSAheG1sICYmICFvZlR5cGUsXG5cdFx0XHRcdFx0XHRkaWZmID0gZmFsc2U7XG5cblx0XHRcdFx0XHRpZiAoIHBhcmVudCApIHtcblxuXHRcdFx0XHRcdFx0Ly8gOihmaXJzdHxsYXN0fG9ubHkpLShjaGlsZHxvZi10eXBlKVxuXHRcdFx0XHRcdFx0aWYgKCBzaW1wbGUgKSB7XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggZGlyICkge1xuXHRcdFx0XHRcdFx0XHRcdG5vZGUgPSBlbGVtO1xuXHRcdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSBub2RlWyBkaXIgXSkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG9mVHlwZSA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbmFtZSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHQvLyBSZXZlcnNlIGRpcmVjdGlvbiBmb3IgOm9ubHktKiAoaWYgd2UgaGF2ZW4ndCB5ZXQgZG9uZSBzbylcblx0XHRcdFx0XHRcdFx0XHRzdGFydCA9IGRpciA9IHR5cGUgPT09IFwib25seVwiICYmICFzdGFydCAmJiBcIm5leHRTaWJsaW5nXCI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHN0YXJ0ID0gWyBmb3J3YXJkID8gcGFyZW50LmZpcnN0Q2hpbGQgOiBwYXJlbnQubGFzdENoaWxkIF07XG5cblx0XHRcdFx0XHRcdC8vIG5vbi14bWwgOm50aC1jaGlsZCguLi4pIHN0b3JlcyBjYWNoZSBkYXRhIG9uIGBwYXJlbnRgXG5cdFx0XHRcdFx0XHRpZiAoIGZvcndhcmQgJiYgdXNlQ2FjaGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU2VlayBgZWxlbWAgZnJvbSBhIHByZXZpb3VzbHktY2FjaGVkIGluZGV4XG5cblx0XHRcdFx0XHRcdFx0Ly8gLi4uaW4gYSBnemlwLWZyaWVuZGx5IHdheVxuXHRcdFx0XHRcdFx0XHRub2RlID0gcGFyZW50O1xuXHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHQob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdGNhY2hlID0gdW5pcXVlQ2FjaGVbIHR5cGUgXSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0bm9kZUluZGV4ID0gY2FjaGVbIDAgXSA9PT0gZGlycnVucyAmJiBjYWNoZVsgMSBdO1xuXHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4ICYmIGNhY2hlWyAyIF07XG5cdFx0XHRcdFx0XHRcdG5vZGUgPSBub2RlSW5kZXggJiYgcGFyZW50LmNoaWxkTm9kZXNbIG5vZGVJbmRleCBdO1xuXG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKG5vZGUgPSArK25vZGVJbmRleCAmJiBub2RlICYmIG5vZGVbIGRpciBdIHx8XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBGYWxsYmFjayB0byBzZWVraW5nIGBlbGVtYCBmcm9tIHRoZSBzdGFydFxuXHRcdFx0XHRcdFx0XHRcdChkaWZmID0gbm9kZUluZGV4ID0gMCkgfHwgc3RhcnQucG9wKCkpICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gV2hlbiBmb3VuZCwgY2FjaGUgaW5kZXhlcyBvbiBgcGFyZW50YCBhbmQgYnJlYWtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgKytkaWZmICYmIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBub2RlSW5kZXgsIGRpZmYgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBVc2UgcHJldmlvdXNseS1jYWNoZWQgZWxlbWVudCBpbmRleCBpZiBhdmFpbGFibGVcblx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHQvLyAuLi5pbiBhIGd6aXAtZnJpZW5kbHkgd2F5XG5cdFx0XHRcdFx0XHRcdFx0bm9kZSA9IGVsZW07XG5cdFx0XHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IG5vZGVbIGV4cGFuZG8gXSB8fCAobm9kZVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPDkgb25seVxuXHRcdFx0XHRcdFx0XHRcdC8vIERlZmVuZCBhZ2FpbnN0IGNsb25lZCBhdHRyb3BlcnRpZXMgKGpRdWVyeSBnaC0xNzA5KVxuXHRcdFx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHQob3V0ZXJDYWNoZVsgbm9kZS51bmlxdWVJRCBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHRcdFx0Y2FjaGUgPSB1bmlxdWVDYWNoZVsgdHlwZSBdIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHRcdG5vZGVJbmRleCA9IGNhY2hlWyAwIF0gPT09IGRpcnJ1bnMgJiYgY2FjaGVbIDEgXTtcblx0XHRcdFx0XHRcdFx0XHRkaWZmID0gbm9kZUluZGV4O1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Ly8geG1sIDpudGgtY2hpbGQoLi4uKVxuXHRcdFx0XHRcdFx0XHQvLyBvciA6bnRoLWxhc3QtY2hpbGQoLi4uKSBvciA6bnRoKC1sYXN0KT8tb2YtdHlwZSguLi4pXG5cdFx0XHRcdFx0XHRcdGlmICggZGlmZiA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gVXNlIHRoZSBzYW1lIGxvb3AgYXMgYWJvdmUgdG8gc2VlayBgZWxlbWAgZnJvbSB0aGUgc3RhcnRcblx0XHRcdFx0XHRcdFx0XHR3aGlsZSAoIChub2RlID0gKytub2RlSW5kZXggJiYgbm9kZSAmJiBub2RlWyBkaXIgXSB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0KGRpZmYgPSBub2RlSW5kZXggPSAwKSB8fCBzdGFydC5wb3AoKSkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGlmICggKCBvZlR5cGUgP1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09IG5hbWUgOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRub2RlLm5vZGVUeXBlID09PSAxICkgJiZcblx0XHRcdFx0XHRcdFx0XHRcdFx0KytkaWZmICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIENhY2hlIHRoZSBpbmRleCBvZiBlYWNoIGVuY291bnRlcmVkIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCB1c2VDYWNoZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvdXRlckNhY2hlID0gbm9kZVsgZXhwYW5kbyBdIHx8IChub2RlWyBleHBhbmRvIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmZW5kIGFnYWluc3QgY2xvbmVkIGF0dHJvcGVydGllcyAoalF1ZXJ5IGdoLTE3MDkpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pcXVlQ2FjaGUgPSBvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdChvdXRlckNhY2hlWyBub2RlLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsgdHlwZSBdID0gWyBkaXJydW5zLCBkaWZmIF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG5vZGUgPT09IGVsZW0gKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gSW5jb3Jwb3JhdGUgdGhlIG9mZnNldCwgdGhlbiBjaGVjayBhZ2FpbnN0IGN5Y2xlIHNpemVcblx0XHRcdFx0XHRcdGRpZmYgLT0gbGFzdDtcblx0XHRcdFx0XHRcdHJldHVybiBkaWZmID09PSBmaXJzdCB8fCAoIGRpZmYgJSBmaXJzdCA9PT0gMCAmJiBkaWZmIC8gZmlyc3QgPj0gMCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHR9LFxuXG5cdFx0XCJQU0VVRE9cIjogZnVuY3Rpb24oIHBzZXVkbywgYXJndW1lbnQgKSB7XG5cdFx0XHQvLyBwc2V1ZG8tY2xhc3MgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmVcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3NlbGVjdG9ycy8jcHNldWRvLWNsYXNzZXNcblx0XHRcdC8vIFByaW9yaXRpemUgYnkgY2FzZSBzZW5zaXRpdml0eSBpbiBjYXNlIGN1c3RvbSBwc2V1ZG9zIGFyZSBhZGRlZCB3aXRoIHVwcGVyY2FzZSBsZXR0ZXJzXG5cdFx0XHQvLyBSZW1lbWJlciB0aGF0IHNldEZpbHRlcnMgaW5oZXJpdHMgZnJvbSBwc2V1ZG9zXG5cdFx0XHR2YXIgYXJncyxcblx0XHRcdFx0Zm4gPSBFeHByLnBzZXVkb3NbIHBzZXVkbyBdIHx8IEV4cHIuc2V0RmlsdGVyc1sgcHNldWRvLnRvTG93ZXJDYXNlKCkgXSB8fFxuXHRcdFx0XHRcdFNpenpsZS5lcnJvciggXCJ1bnN1cHBvcnRlZCBwc2V1ZG86IFwiICsgcHNldWRvICk7XG5cblx0XHRcdC8vIFRoZSB1c2VyIG1heSB1c2UgY3JlYXRlUHNldWRvIHRvIGluZGljYXRlIHRoYXRcblx0XHRcdC8vIGFyZ3VtZW50cyBhcmUgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZmlsdGVyIGZ1bmN0aW9uXG5cdFx0XHQvLyBqdXN0IGFzIFNpenpsZSBkb2VzXG5cdFx0XHRpZiAoIGZuWyBleHBhbmRvIF0gKSB7XG5cdFx0XHRcdHJldHVybiBmbiggYXJndW1lbnQgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQnV0IG1haW50YWluIHN1cHBvcnQgZm9yIG9sZCBzaWduYXR1cmVzXG5cdFx0XHRpZiAoIGZuLmxlbmd0aCA+IDEgKSB7XG5cdFx0XHRcdGFyZ3MgPSBbIHBzZXVkbywgcHNldWRvLCBcIlwiLCBhcmd1bWVudCBdO1xuXHRcdFx0XHRyZXR1cm4gRXhwci5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KCBwc2V1ZG8udG9Mb3dlckNhc2UoKSApID9cblx0XHRcdFx0XHRtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMgKSB7XG5cdFx0XHRcdFx0XHR2YXIgaWR4LFxuXHRcdFx0XHRcdFx0XHRtYXRjaGVkID0gZm4oIHNlZWQsIGFyZ3VtZW50ICksXG5cdFx0XHRcdFx0XHRcdGkgPSBtYXRjaGVkLmxlbmd0aDtcblx0XHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRcdFx0XHRpZHggPSBpbmRleE9mKCBzZWVkLCBtYXRjaGVkW2ldICk7XG5cdFx0XHRcdFx0XHRcdHNlZWRbIGlkeCBdID0gISggbWF0Y2hlc1sgaWR4IF0gPSBtYXRjaGVkW2ldICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkgOlxuXHRcdFx0XHRcdGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZuKCBlbGVtLCAwLCBhcmdzICk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZuO1xuXHRcdH1cblx0fSxcblxuXHRwc2V1ZG9zOiB7XG5cdFx0Ly8gUG90ZW50aWFsbHkgY29tcGxleCBwc2V1ZG9zXG5cdFx0XCJub3RcIjogbWFya0Z1bmN0aW9uKGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHRcdC8vIFRyaW0gdGhlIHNlbGVjdG9yIHBhc3NlZCB0byBjb21waWxlXG5cdFx0XHQvLyB0byBhdm9pZCB0cmVhdGluZyBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuXHRcdFx0Ly8gc3BhY2VzIGFzIGNvbWJpbmF0b3JzXG5cdFx0XHR2YXIgaW5wdXQgPSBbXSxcblx0XHRcdFx0cmVzdWx0cyA9IFtdLFxuXHRcdFx0XHRtYXRjaGVyID0gY29tcGlsZSggc2VsZWN0b3IucmVwbGFjZSggcnRyaW0sIFwiJDFcIiApICk7XG5cblx0XHRcdHJldHVybiBtYXRjaGVyWyBleHBhbmRvIF0gP1xuXHRcdFx0XHRtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIG1hdGNoZXMsIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdFx0XHR2YXIgZWxlbSxcblx0XHRcdFx0XHRcdHVubWF0Y2hlZCA9IG1hdGNoZXIoIHNlZWQsIG51bGwsIHhtbCwgW10gKSxcblx0XHRcdFx0XHRcdGkgPSBzZWVkLmxlbmd0aDtcblxuXHRcdFx0XHRcdC8vIE1hdGNoIGVsZW1lbnRzIHVubWF0Y2hlZCBieSBgbWF0Y2hlcmBcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkge1xuXHRcdFx0XHRcdFx0XHRzZWVkW2ldID0gIShtYXRjaGVzW2ldID0gZWxlbSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSA6XG5cdFx0XHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHRcdFx0aW5wdXRbMF0gPSBlbGVtO1xuXHRcdFx0XHRcdG1hdGNoZXIoIGlucHV0LCBudWxsLCB4bWwsIHJlc3VsdHMgKTtcblx0XHRcdFx0XHQvLyBEb24ndCBrZWVwIHRoZSBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0XHRcdGlucHV0WzBdID0gbnVsbDtcblx0XHRcdFx0XHRyZXR1cm4gIXJlc3VsdHMucG9wKCk7XG5cdFx0XHRcdH07XG5cdFx0fSksXG5cblx0XHRcImhhc1wiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gU2l6emxlKCBzZWxlY3RvciwgZWxlbSApLmxlbmd0aCA+IDA7XG5cdFx0XHR9O1xuXHRcdH0pLFxuXG5cdFx0XCJjb250YWluc1wiOiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHRleHQgKSB7XG5cdFx0XHR0ZXh0ID0gdGV4dC5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApO1xuXHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0XHRyZXR1cm4gKCBlbGVtLnRleHRDb250ZW50IHx8IGVsZW0uaW5uZXJUZXh0IHx8IGdldFRleHQoIGVsZW0gKSApLmluZGV4T2YoIHRleHQgKSA+IC0xO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdC8vIFwiV2hldGhlciBhbiBlbGVtZW50IGlzIHJlcHJlc2VudGVkIGJ5IGEgOmxhbmcoKSBzZWxlY3RvclxuXHRcdC8vIGlzIGJhc2VkIHNvbGVseSBvbiB0aGUgZWxlbWVudCdzIGxhbmd1YWdlIHZhbHVlXG5cdFx0Ly8gYmVpbmcgZXF1YWwgdG8gdGhlIGlkZW50aWZpZXIgQyxcblx0XHQvLyBvciBiZWdpbm5pbmcgd2l0aCB0aGUgaWRlbnRpZmllciBDIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IFwiLVwiLlxuXHRcdC8vIFRoZSBtYXRjaGluZyBvZiBDIGFnYWluc3QgdGhlIGVsZW1lbnQncyBsYW5ndWFnZSB2YWx1ZSBpcyBwZXJmb3JtZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LlxuXHRcdC8vIFRoZSBpZGVudGlmaWVyIEMgZG9lcyBub3QgaGF2ZSB0byBiZSBhIHZhbGlkIGxhbmd1YWdlIG5hbWUuXCJcblx0XHQvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9zZWxlY3RvcnMvI2xhbmctcHNldWRvXG5cdFx0XCJsYW5nXCI6IG1hcmtGdW5jdGlvbiggZnVuY3Rpb24oIGxhbmcgKSB7XG5cdFx0XHQvLyBsYW5nIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBpZGVudGlmaWVyXG5cdFx0XHRpZiAoICFyaWRlbnRpZmllci50ZXN0KGxhbmcgfHwgXCJcIikgKSB7XG5cdFx0XHRcdFNpenpsZS5lcnJvciggXCJ1bnN1cHBvcnRlZCBsYW5nOiBcIiArIGxhbmcgKTtcblx0XHRcdH1cblx0XHRcdGxhbmcgPSBsYW5nLnJlcGxhY2UoIHJ1bmVzY2FwZSwgZnVuZXNjYXBlICkudG9Mb3dlckNhc2UoKTtcblx0XHRcdHJldHVybiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdFx0dmFyIGVsZW1MYW5nO1xuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0aWYgKCAoZWxlbUxhbmcgPSBkb2N1bWVudElzSFRNTCA/XG5cdFx0XHRcdFx0XHRlbGVtLmxhbmcgOlxuXHRcdFx0XHRcdFx0ZWxlbS5nZXRBdHRyaWJ1dGUoXCJ4bWw6bGFuZ1wiKSB8fCBlbGVtLmdldEF0dHJpYnV0ZShcImxhbmdcIikpICkge1xuXG5cdFx0XHRcdFx0XHRlbGVtTGFuZyA9IGVsZW1MYW5nLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZWxlbUxhbmcgPT09IGxhbmcgfHwgZWxlbUxhbmcuaW5kZXhPZiggbGFuZyArIFwiLVwiICkgPT09IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IHdoaWxlICggKGVsZW0gPSBlbGVtLnBhcmVudE5vZGUpICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fTtcblx0XHR9KSxcblxuXHRcdC8vIE1pc2NlbGxhbmVvdXNcblx0XHRcInRhcmdldFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHRcdFx0cmV0dXJuIGhhc2ggJiYgaGFzaC5zbGljZSggMSApID09PSBlbGVtLmlkO1xuXHRcdH0sXG5cblx0XHRcInJvb3RcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gZG9jRWxlbTtcblx0XHR9LFxuXG5cdFx0XCJmb2N1c1wiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBlbGVtID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICghZG9jdW1lbnQuaGFzRm9jdXMgfHwgZG9jdW1lbnQuaGFzRm9jdXMoKSkgJiYgISEoZWxlbS50eXBlIHx8IGVsZW0uaHJlZiB8fCB+ZWxlbS50YWJJbmRleCk7XG5cdFx0fSxcblxuXHRcdC8vIEJvb2xlYW4gcHJvcGVydGllc1xuXHRcdFwiZW5hYmxlZFwiOiBjcmVhdGVEaXNhYmxlZFBzZXVkbyggZmFsc2UgKSxcblx0XHRcImRpc2FibGVkXCI6IGNyZWF0ZURpc2FibGVkUHNldWRvKCB0cnVlICksXG5cblx0XHRcImNoZWNrZWRcIjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHQvLyBJbiBDU1MzLCA6Y2hlY2tlZCBzaG91bGQgcmV0dXJuIGJvdGggY2hlY2tlZCBhbmQgc2VsZWN0ZWQgZWxlbWVudHNcblx0XHRcdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvUkVDLWNzczMtc2VsZWN0b3JzLTIwMTEwOTI5LyNjaGVja2VkXG5cdFx0XHR2YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRyZXR1cm4gKG5vZGVOYW1lID09PSBcImlucHV0XCIgJiYgISFlbGVtLmNoZWNrZWQpIHx8IChub2RlTmFtZSA9PT0gXCJvcHRpb25cIiAmJiAhIWVsZW0uc2VsZWN0ZWQpO1xuXHRcdH0sXG5cblx0XHRcInNlbGVjdGVkXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gQWNjZXNzaW5nIHRoaXMgcHJvcGVydHkgbWFrZXMgc2VsZWN0ZWQtYnktZGVmYXVsdFxuXHRcdFx0Ly8gb3B0aW9ucyBpbiBTYWZhcmkgd29yayBwcm9wZXJseVxuXHRcdFx0aWYgKCBlbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGVsZW0ucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZWxlbS5zZWxlY3RlZCA9PT0gdHJ1ZTtcblx0XHR9LFxuXG5cdFx0Ly8gQ29udGVudHNcblx0XHRcImVtcHR5XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvc2VsZWN0b3JzLyNlbXB0eS1wc2V1ZG9cblx0XHRcdC8vIDplbXB0eSBpcyBuZWdhdGVkIGJ5IGVsZW1lbnQgKDEpIG9yIGNvbnRlbnQgbm9kZXMgKHRleHQ6IDM7IGNkYXRhOiA0OyBlbnRpdHkgcmVmOiA1KSxcblx0XHRcdC8vICAgYnV0IG5vdCBieSBvdGhlcnMgKGNvbW1lbnQ6IDg7IHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb246IDc7IGV0Yy4pXG5cdFx0XHQvLyBub2RlVHlwZSA8IDYgd29ya3MgYmVjYXVzZSBhdHRyaWJ1dGVzICgyKSBkbyBub3QgYXBwZWFyIGFzIGNoaWxkcmVuXG5cdFx0XHRmb3IgKCBlbGVtID0gZWxlbS5maXJzdENoaWxkOyBlbGVtOyBlbGVtID0gZWxlbS5uZXh0U2libGluZyApIHtcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlIDwgNiApIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0sXG5cblx0XHRcInBhcmVudFwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAhRXhwci5wc2V1ZG9zW1wiZW1wdHlcIl0oIGVsZW0gKTtcblx0XHR9LFxuXG5cdFx0Ly8gRWxlbWVudC9pbnB1dCB0eXBlc1xuXHRcdFwiaGVhZGVyXCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIHJoZWFkZXIudGVzdCggZWxlbS5ub2RlTmFtZSApO1xuXHRcdH0sXG5cblx0XHRcImlucHV0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIHJpbnB1dHMudGVzdCggZWxlbS5ub2RlTmFtZSApO1xuXHRcdH0sXG5cblx0XHRcImJ1dHRvblwiOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHZhciBuYW1lID0gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0cmV0dXJuIG5hbWUgPT09IFwiaW5wdXRcIiAmJiBlbGVtLnR5cGUgPT09IFwiYnV0dG9uXCIgfHwgbmFtZSA9PT0gXCJidXR0b25cIjtcblx0XHR9LFxuXG5cdFx0XCJ0ZXh0XCI6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIGF0dHI7XG5cdFx0XHRyZXR1cm4gZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlucHV0XCIgJiZcblx0XHRcdFx0ZWxlbS50eXBlID09PSBcInRleHRcIiAmJlxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IElFPDhcblx0XHRcdFx0Ly8gTmV3IEhUTUw1IGF0dHJpYnV0ZSB2YWx1ZXMgKGUuZy4sIFwic2VhcmNoXCIpIGFwcGVhciB3aXRoIGVsZW0udHlwZSA9PT0gXCJ0ZXh0XCJcblx0XHRcdFx0KCAoYXR0ciA9IGVsZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKSkgPT0gbnVsbCB8fCBhdHRyLnRvTG93ZXJDYXNlKCkgPT09IFwidGV4dFwiICk7XG5cdFx0fSxcblxuXHRcdC8vIFBvc2l0aW9uLWluLWNvbGxlY3Rpb25cblx0XHRcImZpcnN0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gWyAwIF07XG5cdFx0fSksXG5cblx0XHRcImxhc3RcIjogY3JlYXRlUG9zaXRpb25hbFBzZXVkbyhmdW5jdGlvbiggbWF0Y2hJbmRleGVzLCBsZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gWyBsZW5ndGggLSAxIF07XG5cdFx0fSksXG5cblx0XHRcImVxXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHJldHVybiBbIGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQgXTtcblx0XHR9KSxcblxuXHRcdFwiZXZlblwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCApIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGxlbmd0aDsgaSArPSAyICkge1xuXHRcdFx0XHRtYXRjaEluZGV4ZXMucHVzaCggaSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG1hdGNoSW5kZXhlcztcblx0XHR9KSxcblxuXHRcdFwib2RkXCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoICkge1xuXHRcdFx0dmFyIGkgPSAxO1xuXHRcdFx0Zm9yICggOyBpIDwgbGVuZ3RoOyBpICs9IDIgKSB7XG5cdFx0XHRcdG1hdGNoSW5kZXhlcy5wdXNoKCBpICk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbWF0Y2hJbmRleGVzO1xuXHRcdH0pLFxuXG5cdFx0XCJsdFwiOiBjcmVhdGVQb3NpdGlvbmFsUHNldWRvKGZ1bmN0aW9uKCBtYXRjaEluZGV4ZXMsIGxlbmd0aCwgYXJndW1lbnQgKSB7XG5cdFx0XHR2YXIgaSA9IGFyZ3VtZW50IDwgMCA/IGFyZ3VtZW50ICsgbGVuZ3RoIDogYXJndW1lbnQ7XG5cdFx0XHRmb3IgKCA7IC0taSA+PSAwOyApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSksXG5cblx0XHRcImd0XCI6IGNyZWF0ZVBvc2l0aW9uYWxQc2V1ZG8oZnVuY3Rpb24oIG1hdGNoSW5kZXhlcywgbGVuZ3RoLCBhcmd1bWVudCApIHtcblx0XHRcdHZhciBpID0gYXJndW1lbnQgPCAwID8gYXJndW1lbnQgKyBsZW5ndGggOiBhcmd1bWVudDtcblx0XHRcdGZvciAoIDsgKytpIDwgbGVuZ3RoOyApIHtcblx0XHRcdFx0bWF0Y2hJbmRleGVzLnB1c2goIGkgKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtYXRjaEluZGV4ZXM7XG5cdFx0fSlcblx0fVxufTtcblxuRXhwci5wc2V1ZG9zW1wibnRoXCJdID0gRXhwci5wc2V1ZG9zW1wiZXFcIl07XG5cbi8vIEFkZCBidXR0b24vaW5wdXQgdHlwZSBwc2V1ZG9zXG5mb3IgKCBpIGluIHsgcmFkaW86IHRydWUsIGNoZWNrYm94OiB0cnVlLCBmaWxlOiB0cnVlLCBwYXNzd29yZDogdHJ1ZSwgaW1hZ2U6IHRydWUgfSApIHtcblx0RXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVJbnB1dFBzZXVkbyggaSApO1xufVxuZm9yICggaSBpbiB7IHN1Ym1pdDogdHJ1ZSwgcmVzZXQ6IHRydWUgfSApIHtcblx0RXhwci5wc2V1ZG9zWyBpIF0gPSBjcmVhdGVCdXR0b25Qc2V1ZG8oIGkgKTtcbn1cblxuLy8gRWFzeSBBUEkgZm9yIGNyZWF0aW5nIG5ldyBzZXRGaWx0ZXJzXG5mdW5jdGlvbiBzZXRGaWx0ZXJzKCkge31cbnNldEZpbHRlcnMucHJvdG90eXBlID0gRXhwci5maWx0ZXJzID0gRXhwci5wc2V1ZG9zO1xuRXhwci5zZXRGaWx0ZXJzID0gbmV3IHNldEZpbHRlcnMoKTtcblxudG9rZW5pemUgPSBTaXp6bGUudG9rZW5pemUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIHBhcnNlT25seSApIHtcblx0dmFyIG1hdGNoZWQsIG1hdGNoLCB0b2tlbnMsIHR5cGUsXG5cdFx0c29GYXIsIGdyb3VwcywgcHJlRmlsdGVycyxcblx0XHRjYWNoZWQgPSB0b2tlbkNhY2hlWyBzZWxlY3RvciArIFwiIFwiIF07XG5cblx0aWYgKCBjYWNoZWQgKSB7XG5cdFx0cmV0dXJuIHBhcnNlT25seSA/IDAgOiBjYWNoZWQuc2xpY2UoIDAgKTtcblx0fVxuXG5cdHNvRmFyID0gc2VsZWN0b3I7XG5cdGdyb3VwcyA9IFtdO1xuXHRwcmVGaWx0ZXJzID0gRXhwci5wcmVGaWx0ZXI7XG5cblx0d2hpbGUgKCBzb0ZhciApIHtcblxuXHRcdC8vIENvbW1hIGFuZCBmaXJzdCBydW5cblx0XHRpZiAoICFtYXRjaGVkIHx8IChtYXRjaCA9IHJjb21tYS5leGVjKCBzb0ZhciApKSApIHtcblx0XHRcdGlmICggbWF0Y2ggKSB7XG5cdFx0XHRcdC8vIERvbid0IGNvbnN1bWUgdHJhaWxpbmcgY29tbWFzIGFzIHZhbGlkXG5cdFx0XHRcdHNvRmFyID0gc29GYXIuc2xpY2UoIG1hdGNoWzBdLmxlbmd0aCApIHx8IHNvRmFyO1xuXHRcdFx0fVxuXHRcdFx0Z3JvdXBzLnB1c2goICh0b2tlbnMgPSBbXSkgKTtcblx0XHR9XG5cblx0XHRtYXRjaGVkID0gZmFsc2U7XG5cblx0XHQvLyBDb21iaW5hdG9yc1xuXHRcdGlmICggKG1hdGNoID0gcmNvbWJpbmF0b3JzLmV4ZWMoIHNvRmFyICkpICkge1xuXHRcdFx0bWF0Y2hlZCA9IG1hdGNoLnNoaWZ0KCk7XG5cdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdHZhbHVlOiBtYXRjaGVkLFxuXHRcdFx0XHQvLyBDYXN0IGRlc2NlbmRhbnQgY29tYmluYXRvcnMgdG8gc3BhY2Vcblx0XHRcdFx0dHlwZTogbWF0Y2hbMF0ucmVwbGFjZSggcnRyaW0sIFwiIFwiIClcblx0XHRcdH0pO1xuXHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTtcblx0XHR9XG5cblx0XHQvLyBGaWx0ZXJzXG5cdFx0Zm9yICggdHlwZSBpbiBFeHByLmZpbHRlciApIHtcblx0XHRcdGlmICggKG1hdGNoID0gbWF0Y2hFeHByWyB0eXBlIF0uZXhlYyggc29GYXIgKSkgJiYgKCFwcmVGaWx0ZXJzWyB0eXBlIF0gfHxcblx0XHRcdFx0KG1hdGNoID0gcHJlRmlsdGVyc1sgdHlwZSBdKCBtYXRjaCApKSkgKSB7XG5cdFx0XHRcdG1hdGNoZWQgPSBtYXRjaC5zaGlmdCgpO1xuXHRcdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdFx0dmFsdWU6IG1hdGNoZWQsXG5cdFx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0XHRtYXRjaGVzOiBtYXRjaFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0c29GYXIgPSBzb0Zhci5zbGljZSggbWF0Y2hlZC5sZW5ndGggKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoICFtYXRjaGVkICkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGludmFsaWQgZXhjZXNzXG5cdC8vIGlmIHdlJ3JlIGp1c3QgcGFyc2luZ1xuXHQvLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9yIG9yIHJldHVybiB0b2tlbnNcblx0cmV0dXJuIHBhcnNlT25seSA/XG5cdFx0c29GYXIubGVuZ3RoIDpcblx0XHRzb0ZhciA/XG5cdFx0XHRTaXp6bGUuZXJyb3IoIHNlbGVjdG9yICkgOlxuXHRcdFx0Ly8gQ2FjaGUgdGhlIHRva2Vuc1xuXHRcdFx0dG9rZW5DYWNoZSggc2VsZWN0b3IsIGdyb3VwcyApLnNsaWNlKCAwICk7XG59O1xuXG5mdW5jdGlvbiB0b1NlbGVjdG9yKCB0b2tlbnMgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSB0b2tlbnMubGVuZ3RoLFxuXHRcdHNlbGVjdG9yID0gXCJcIjtcblx0Zm9yICggOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0c2VsZWN0b3IgKz0gdG9rZW5zW2ldLnZhbHVlO1xuXHR9XG5cdHJldHVybiBzZWxlY3Rvcjtcbn1cblxuZnVuY3Rpb24gYWRkQ29tYmluYXRvciggbWF0Y2hlciwgY29tYmluYXRvciwgYmFzZSApIHtcblx0dmFyIGRpciA9IGNvbWJpbmF0b3IuZGlyLFxuXHRcdHNraXAgPSBjb21iaW5hdG9yLm5leHQsXG5cdFx0a2V5ID0gc2tpcCB8fCBkaXIsXG5cdFx0Y2hlY2tOb25FbGVtZW50cyA9IGJhc2UgJiYga2V5ID09PSBcInBhcmVudE5vZGVcIixcblx0XHRkb25lTmFtZSA9IGRvbmUrKztcblxuXHRyZXR1cm4gY29tYmluYXRvci5maXJzdCA/XG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBjbG9zZXN0IGFuY2VzdG9yL3ByZWNlZGluZyBlbGVtZW50XG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHdoaWxlICggKGVsZW0gPSBlbGVtWyBkaXIgXSkgKSB7XG5cdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdHJldHVybiBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gOlxuXG5cdFx0Ly8gQ2hlY2sgYWdhaW5zdCBhbGwgYW5jZXN0b3IvcHJlY2VkaW5nIGVsZW1lbnRzXG5cdFx0ZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciBvbGRDYWNoZSwgdW5pcXVlQ2FjaGUsIG91dGVyQ2FjaGUsXG5cdFx0XHRcdG5ld0NhY2hlID0gWyBkaXJydW5zLCBkb25lTmFtZSBdO1xuXG5cdFx0XHQvLyBXZSBjYW4ndCBzZXQgYXJiaXRyYXJ5IGRhdGEgb24gWE1MIG5vZGVzLCBzbyB0aGV5IGRvbid0IGJlbmVmaXQgZnJvbSBjb21iaW5hdG9yIGNhY2hpbmdcblx0XHRcdGlmICggeG1sICkge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVyKCBlbGVtLCBjb250ZXh0LCB4bWwgKSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3aGlsZSAoIChlbGVtID0gZWxlbVsgZGlyIF0pICkge1xuXHRcdFx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBjaGVja05vbkVsZW1lbnRzICkge1xuXHRcdFx0XHRcdFx0b3V0ZXJDYWNoZSA9IGVsZW1bIGV4cGFuZG8gXSB8fCAoZWxlbVsgZXhwYW5kbyBdID0ge30pO1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA8OSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBEZWZlbmQgYWdhaW5zdCBjbG9uZWQgYXR0cm9wZXJ0aWVzIChqUXVlcnkgZ2gtMTcwOSlcblx0XHRcdFx0XHRcdHVuaXF1ZUNhY2hlID0gb3V0ZXJDYWNoZVsgZWxlbS51bmlxdWVJRCBdIHx8IChvdXRlckNhY2hlWyBlbGVtLnVuaXF1ZUlEIF0gPSB7fSk7XG5cblx0XHRcdFx0XHRcdGlmICggc2tpcCAmJiBza2lwID09PSBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgKSB7XG5cdFx0XHRcdFx0XHRcdGVsZW0gPSBlbGVtWyBkaXIgXSB8fCBlbGVtO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICggKG9sZENhY2hlID0gdW5pcXVlQ2FjaGVbIGtleSBdKSAmJlxuXHRcdFx0XHRcdFx0XHRvbGRDYWNoZVsgMCBdID09PSBkaXJydW5zICYmIG9sZENhY2hlWyAxIF0gPT09IGRvbmVOYW1lICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFzc2lnbiB0byBuZXdDYWNoZSBzbyByZXN1bHRzIGJhY2stcHJvcGFnYXRlIHRvIHByZXZpb3VzIGVsZW1lbnRzXG5cdFx0XHRcdFx0XHRcdHJldHVybiAobmV3Q2FjaGVbIDIgXSA9IG9sZENhY2hlWyAyIF0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmV1c2UgbmV3Y2FjaGUgc28gcmVzdWx0cyBiYWNrLXByb3BhZ2F0ZSB0byBwcmV2aW91cyBlbGVtZW50c1xuXHRcdFx0XHRcdFx0XHR1bmlxdWVDYWNoZVsga2V5IF0gPSBuZXdDYWNoZTtcblxuXHRcdFx0XHRcdFx0XHQvLyBBIG1hdGNoIG1lYW5zIHdlJ3JlIGRvbmU7IGEgZmFpbCBtZWFucyB3ZSBoYXZlIHRvIGtlZXAgY2hlY2tpbmdcblx0XHRcdFx0XHRcdFx0aWYgKCAobmV3Q2FjaGVbIDIgXSA9IG1hdGNoZXIoIGVsZW0sIGNvbnRleHQsIHhtbCApKSApIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG59XG5cbmZ1bmN0aW9uIGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApIHtcblx0cmV0dXJuIG1hdGNoZXJzLmxlbmd0aCA+IDEgP1xuXHRcdGZ1bmN0aW9uKCBlbGVtLCBjb250ZXh0LCB4bWwgKSB7XG5cdFx0XHR2YXIgaSA9IG1hdGNoZXJzLmxlbmd0aDtcblx0XHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0XHRpZiAoICFtYXRjaGVyc1tpXSggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IDpcblx0XHRtYXRjaGVyc1swXTtcbn1cblxuZnVuY3Rpb24gbXVsdGlwbGVDb250ZXh0cyggc2VsZWN0b3IsIGNvbnRleHRzLCByZXN1bHRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bGVuID0gY29udGV4dHMubGVuZ3RoO1xuXHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRTaXp6bGUoIHNlbGVjdG9yLCBjb250ZXh0c1tpXSwgcmVzdWx0cyApO1xuXHR9XG5cdHJldHVybiByZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBjb25kZW5zZSggdW5tYXRjaGVkLCBtYXAsIGZpbHRlciwgY29udGV4dCwgeG1sICkge1xuXHR2YXIgZWxlbSxcblx0XHRuZXdVbm1hdGNoZWQgPSBbXSxcblx0XHRpID0gMCxcblx0XHRsZW4gPSB1bm1hdGNoZWQubGVuZ3RoLFxuXHRcdG1hcHBlZCA9IG1hcCAhPSBudWxsO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKGVsZW0gPSB1bm1hdGNoZWRbaV0pICkge1xuXHRcdFx0aWYgKCAhZmlsdGVyIHx8IGZpbHRlciggZWxlbSwgY29udGV4dCwgeG1sICkgKSB7XG5cdFx0XHRcdG5ld1VubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdGlmICggbWFwcGVkICkge1xuXHRcdFx0XHRcdG1hcC5wdXNoKCBpICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gbmV3VW5tYXRjaGVkO1xufVxuXG5mdW5jdGlvbiBzZXRNYXRjaGVyKCBwcmVGaWx0ZXIsIHNlbGVjdG9yLCBtYXRjaGVyLCBwb3N0RmlsdGVyLCBwb3N0RmluZGVyLCBwb3N0U2VsZWN0b3IgKSB7XG5cdGlmICggcG9zdEZpbHRlciAmJiAhcG9zdEZpbHRlclsgZXhwYW5kbyBdICkge1xuXHRcdHBvc3RGaWx0ZXIgPSBzZXRNYXRjaGVyKCBwb3N0RmlsdGVyICk7XG5cdH1cblx0aWYgKCBwb3N0RmluZGVyICYmICFwb3N0RmluZGVyWyBleHBhbmRvIF0gKSB7XG5cdFx0cG9zdEZpbmRlciA9IHNldE1hdGNoZXIoIHBvc3RGaW5kZXIsIHBvc3RTZWxlY3RvciApO1xuXHR9XG5cdHJldHVybiBtYXJrRnVuY3Rpb24oZnVuY3Rpb24oIHNlZWQsIHJlc3VsdHMsIGNvbnRleHQsIHhtbCApIHtcblx0XHR2YXIgdGVtcCwgaSwgZWxlbSxcblx0XHRcdHByZU1hcCA9IFtdLFxuXHRcdFx0cG9zdE1hcCA9IFtdLFxuXHRcdFx0cHJlZXhpc3RpbmcgPSByZXN1bHRzLmxlbmd0aCxcblxuXHRcdFx0Ly8gR2V0IGluaXRpYWwgZWxlbWVudHMgZnJvbSBzZWVkIG9yIGNvbnRleHRcblx0XHRcdGVsZW1zID0gc2VlZCB8fCBtdWx0aXBsZUNvbnRleHRzKCBzZWxlY3RvciB8fCBcIipcIiwgY29udGV4dC5ub2RlVHlwZSA/IFsgY29udGV4dCBdIDogY29udGV4dCwgW10gKSxcblxuXHRcdFx0Ly8gUHJlZmlsdGVyIHRvIGdldCBtYXRjaGVyIGlucHV0LCBwcmVzZXJ2aW5nIGEgbWFwIGZvciBzZWVkLXJlc3VsdHMgc3luY2hyb25pemF0aW9uXG5cdFx0XHRtYXRjaGVySW4gPSBwcmVGaWx0ZXIgJiYgKCBzZWVkIHx8ICFzZWxlY3RvciApID9cblx0XHRcdFx0Y29uZGVuc2UoIGVsZW1zLCBwcmVNYXAsIHByZUZpbHRlciwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRlbGVtcyxcblxuXHRcdFx0bWF0Y2hlck91dCA9IG1hdGNoZXIgP1xuXHRcdFx0XHQvLyBJZiB3ZSBoYXZlIGEgcG9zdEZpbmRlciwgb3IgZmlsdGVyZWQgc2VlZCwgb3Igbm9uLXNlZWQgcG9zdEZpbHRlciBvciBwcmVleGlzdGluZyByZXN1bHRzLFxuXHRcdFx0XHRwb3N0RmluZGVyIHx8ICggc2VlZCA/IHByZUZpbHRlciA6IHByZWV4aXN0aW5nIHx8IHBvc3RGaWx0ZXIgKSA/XG5cblx0XHRcdFx0XHQvLyAuLi5pbnRlcm1lZGlhdGUgcHJvY2Vzc2luZyBpcyBuZWNlc3Nhcnlcblx0XHRcdFx0XHRbXSA6XG5cblx0XHRcdFx0XHQvLyAuLi5vdGhlcndpc2UgdXNlIHJlc3VsdHMgZGlyZWN0bHlcblx0XHRcdFx0XHRyZXN1bHRzIDpcblx0XHRcdFx0bWF0Y2hlckluO1xuXG5cdFx0Ly8gRmluZCBwcmltYXJ5IG1hdGNoZXNcblx0XHRpZiAoIG1hdGNoZXIgKSB7XG5cdFx0XHRtYXRjaGVyKCBtYXRjaGVySW4sIG1hdGNoZXJPdXQsIGNvbnRleHQsIHhtbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHBvc3RGaWx0ZXJcblx0XHRpZiAoIHBvc3RGaWx0ZXIgKSB7XG5cdFx0XHR0ZW1wID0gY29uZGVuc2UoIG1hdGNoZXJPdXQsIHBvc3RNYXAgKTtcblx0XHRcdHBvc3RGaWx0ZXIoIHRlbXAsIFtdLCBjb250ZXh0LCB4bWwgKTtcblxuXHRcdFx0Ly8gVW4tbWF0Y2ggZmFpbGluZyBlbGVtZW50cyBieSBtb3ZpbmcgdGhlbSBiYWNrIHRvIG1hdGNoZXJJblxuXHRcdFx0aSA9IHRlbXAubGVuZ3RoO1xuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGlmICggKGVsZW0gPSB0ZW1wW2ldKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyT3V0WyBwb3N0TWFwW2ldIF0gPSAhKG1hdGNoZXJJblsgcG9zdE1hcFtpXSBdID0gZWxlbSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoIHNlZWQgKSB7XG5cdFx0XHRpZiAoIHBvc3RGaW5kZXIgfHwgcHJlRmlsdGVyICkge1xuXHRcdFx0XHRpZiAoIHBvc3RGaW5kZXIgKSB7XG5cdFx0XHRcdFx0Ly8gR2V0IHRoZSBmaW5hbCBtYXRjaGVyT3V0IGJ5IGNvbmRlbnNpbmcgdGhpcyBpbnRlcm1lZGlhdGUgaW50byBwb3N0RmluZGVyIGNvbnRleHRzXG5cdFx0XHRcdFx0dGVtcCA9IFtdO1xuXHRcdFx0XHRcdGkgPSBtYXRjaGVyT3V0Lmxlbmd0aDtcblx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdGlmICggKGVsZW0gPSBtYXRjaGVyT3V0W2ldKSApIHtcblx0XHRcdFx0XHRcdFx0Ly8gUmVzdG9yZSBtYXRjaGVySW4gc2luY2UgZWxlbSBpcyBub3QgeWV0IGEgZmluYWwgbWF0Y2hcblx0XHRcdFx0XHRcdFx0dGVtcC5wdXNoKCAobWF0Y2hlckluW2ldID0gZWxlbSkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cG9zdEZpbmRlciggbnVsbCwgKG1hdGNoZXJPdXQgPSBbXSksIHRlbXAsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTW92ZSBtYXRjaGVkIGVsZW1lbnRzIGZyb20gc2VlZCB0byByZXN1bHRzIHRvIGtlZXAgdGhlbSBzeW5jaHJvbml6ZWRcblx0XHRcdFx0aSA9IG1hdGNoZXJPdXQubGVuZ3RoO1xuXHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRpZiAoIChlbGVtID0gbWF0Y2hlck91dFtpXSkgJiZcblx0XHRcdFx0XHRcdCh0ZW1wID0gcG9zdEZpbmRlciA/IGluZGV4T2YoIHNlZWQsIGVsZW0gKSA6IHByZU1hcFtpXSkgPiAtMSApIHtcblxuXHRcdFx0XHRcdFx0c2VlZFt0ZW1wXSA9ICEocmVzdWx0c1t0ZW1wXSA9IGVsZW0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0Ly8gQWRkIGVsZW1lbnRzIHRvIHJlc3VsdHMsIHRocm91Z2ggcG9zdEZpbmRlciBpZiBkZWZpbmVkXG5cdFx0fSBlbHNlIHtcblx0XHRcdG1hdGNoZXJPdXQgPSBjb25kZW5zZShcblx0XHRcdFx0bWF0Y2hlck91dCA9PT0gcmVzdWx0cyA/XG5cdFx0XHRcdFx0bWF0Y2hlck91dC5zcGxpY2UoIHByZWV4aXN0aW5nLCBtYXRjaGVyT3V0Lmxlbmd0aCApIDpcblx0XHRcdFx0XHRtYXRjaGVyT3V0XG5cdFx0XHQpO1xuXHRcdFx0aWYgKCBwb3N0RmluZGVyICkge1xuXHRcdFx0XHRwb3N0RmluZGVyKCBudWxsLCByZXN1bHRzLCBtYXRjaGVyT3V0LCB4bWwgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIG1hdGNoZXJPdXQgKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zICkge1xuXHR2YXIgY2hlY2tDb250ZXh0LCBtYXRjaGVyLCBqLFxuXHRcdGxlbiA9IHRva2Vucy5sZW5ndGgsXG5cdFx0bGVhZGluZ1JlbGF0aXZlID0gRXhwci5yZWxhdGl2ZVsgdG9rZW5zWzBdLnR5cGUgXSxcblx0XHRpbXBsaWNpdFJlbGF0aXZlID0gbGVhZGluZ1JlbGF0aXZlIHx8IEV4cHIucmVsYXRpdmVbXCIgXCJdLFxuXHRcdGkgPSBsZWFkaW5nUmVsYXRpdmUgPyAxIDogMCxcblxuXHRcdC8vIFRoZSBmb3VuZGF0aW9uYWwgbWF0Y2hlciBlbnN1cmVzIHRoYXQgZWxlbWVudHMgYXJlIHJlYWNoYWJsZSBmcm9tIHRvcC1sZXZlbCBjb250ZXh0KHMpXG5cdFx0bWF0Y2hDb250ZXh0ID0gYWRkQ29tYmluYXRvciggZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbSA9PT0gY2hlY2tDb250ZXh0O1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaEFueUNvbnRleHQgPSBhZGRDb21iaW5hdG9yKCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiBpbmRleE9mKCBjaGVja0NvbnRleHQsIGVsZW0gKSA+IC0xO1xuXHRcdH0sIGltcGxpY2l0UmVsYXRpdmUsIHRydWUgKSxcblx0XHRtYXRjaGVycyA9IFsgZnVuY3Rpb24oIGVsZW0sIGNvbnRleHQsIHhtbCApIHtcblx0XHRcdHZhciByZXQgPSAoICFsZWFkaW5nUmVsYXRpdmUgJiYgKCB4bWwgfHwgY29udGV4dCAhPT0gb3V0ZXJtb3N0Q29udGV4dCApICkgfHwgKFxuXHRcdFx0XHQoY2hlY2tDb250ZXh0ID0gY29udGV4dCkubm9kZVR5cGUgP1xuXHRcdFx0XHRcdG1hdGNoQ29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgOlxuXHRcdFx0XHRcdG1hdGNoQW55Q29udGV4dCggZWxlbSwgY29udGV4dCwgeG1sICkgKTtcblx0XHRcdC8vIEF2b2lkIGhhbmdpbmcgb250byBlbGVtZW50IChpc3N1ZSAjMjk5KVxuXHRcdFx0Y2hlY2tDb250ZXh0ID0gbnVsbDtcblx0XHRcdHJldHVybiByZXQ7XG5cdFx0fSBdO1xuXG5cdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdGlmICggKG1hdGNoZXIgPSBFeHByLnJlbGF0aXZlWyB0b2tlbnNbaV0udHlwZSBdKSApIHtcblx0XHRcdG1hdGNoZXJzID0gWyBhZGRDb21iaW5hdG9yKGVsZW1lbnRNYXRjaGVyKCBtYXRjaGVycyApLCBtYXRjaGVyKSBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtYXRjaGVyID0gRXhwci5maWx0ZXJbIHRva2Vuc1tpXS50eXBlIF0uYXBwbHkoIG51bGwsIHRva2Vuc1tpXS5tYXRjaGVzICk7XG5cblx0XHRcdC8vIFJldHVybiBzcGVjaWFsIHVwb24gc2VlaW5nIGEgcG9zaXRpb25hbCBtYXRjaGVyXG5cdFx0XHRpZiAoIG1hdGNoZXJbIGV4cGFuZG8gXSApIHtcblx0XHRcdFx0Ly8gRmluZCB0aGUgbmV4dCByZWxhdGl2ZSBvcGVyYXRvciAoaWYgYW55KSBmb3IgcHJvcGVyIGhhbmRsaW5nXG5cdFx0XHRcdGogPSArK2k7XG5cdFx0XHRcdGZvciAoIDsgaiA8IGxlbjsgaisrICkge1xuXHRcdFx0XHRcdGlmICggRXhwci5yZWxhdGl2ZVsgdG9rZW5zW2pdLnR5cGUgXSApIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gc2V0TWF0Y2hlcihcblx0XHRcdFx0XHRpID4gMSAmJiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKSxcblx0XHRcdFx0XHRpID4gMSAmJiB0b1NlbGVjdG9yKFxuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIHByZWNlZGluZyB0b2tlbiB3YXMgYSBkZXNjZW5kYW50IGNvbWJpbmF0b3IsIGluc2VydCBhbiBpbXBsaWNpdCBhbnktZWxlbWVudCBgKmBcblx0XHRcdFx0XHRcdHRva2Vucy5zbGljZSggMCwgaSAtIDEgKS5jb25jYXQoeyB2YWx1ZTogdG9rZW5zWyBpIC0gMiBdLnR5cGUgPT09IFwiIFwiID8gXCIqXCIgOiBcIlwiIH0pXG5cdFx0XHRcdFx0KS5yZXBsYWNlKCBydHJpbSwgXCIkMVwiICksXG5cdFx0XHRcdFx0bWF0Y2hlcixcblx0XHRcdFx0XHRpIDwgaiAmJiBtYXRjaGVyRnJvbVRva2VucyggdG9rZW5zLnNsaWNlKCBpLCBqICkgKSxcblx0XHRcdFx0XHRqIDwgbGVuICYmIG1hdGNoZXJGcm9tVG9rZW5zKCAodG9rZW5zID0gdG9rZW5zLnNsaWNlKCBqICkpICksXG5cdFx0XHRcdFx0aiA8IGxlbiAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlcnMucHVzaCggbWF0Y2hlciApO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBlbGVtZW50TWF0Y2hlciggbWF0Y2hlcnMgKTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkge1xuXHR2YXIgYnlTZXQgPSBzZXRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdGJ5RWxlbWVudCA9IGVsZW1lbnRNYXRjaGVycy5sZW5ndGggPiAwLFxuXHRcdHN1cGVyTWF0Y2hlciA9IGZ1bmN0aW9uKCBzZWVkLCBjb250ZXh0LCB4bWwsIHJlc3VsdHMsIG91dGVybW9zdCApIHtcblx0XHRcdHZhciBlbGVtLCBqLCBtYXRjaGVyLFxuXHRcdFx0XHRtYXRjaGVkQ291bnQgPSAwLFxuXHRcdFx0XHRpID0gXCIwXCIsXG5cdFx0XHRcdHVubWF0Y2hlZCA9IHNlZWQgJiYgW10sXG5cdFx0XHRcdHNldE1hdGNoZWQgPSBbXSxcblx0XHRcdFx0Y29udGV4dEJhY2t1cCA9IG91dGVybW9zdENvbnRleHQsXG5cdFx0XHRcdC8vIFdlIG11c3QgYWx3YXlzIGhhdmUgZWl0aGVyIHNlZWQgZWxlbWVudHMgb3Igb3V0ZXJtb3N0IGNvbnRleHRcblx0XHRcdFx0ZWxlbXMgPSBzZWVkIHx8IGJ5RWxlbWVudCAmJiBFeHByLmZpbmRbXCJUQUdcIl0oIFwiKlwiLCBvdXRlcm1vc3QgKSxcblx0XHRcdFx0Ly8gVXNlIGludGVnZXIgZGlycnVucyBpZmYgdGhpcyBpcyB0aGUgb3V0ZXJtb3N0IG1hdGNoZXJcblx0XHRcdFx0ZGlycnVuc1VuaXF1ZSA9IChkaXJydW5zICs9IGNvbnRleHRCYWNrdXAgPT0gbnVsbCA/IDEgOiBNYXRoLnJhbmRvbSgpIHx8IDAuMSksXG5cdFx0XHRcdGxlbiA9IGVsZW1zLmxlbmd0aDtcblxuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdG91dGVybW9zdENvbnRleHQgPSBjb250ZXh0ID09PSBkb2N1bWVudCB8fCBjb250ZXh0IHx8IG91dGVybW9zdDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIGVsZW1lbnRzIHBhc3NpbmcgZWxlbWVudE1hdGNoZXJzIGRpcmVjdGx5IHRvIHJlc3VsdHNcblx0XHRcdC8vIFN1cHBvcnQ6IElFPDksIFNhZmFyaVxuXHRcdFx0Ly8gVG9sZXJhdGUgTm9kZUxpc3QgcHJvcGVydGllcyAoSUU6IFwibGVuZ3RoXCI7IFNhZmFyaTogPG51bWJlcj4pIG1hdGNoaW5nIGVsZW1lbnRzIGJ5IGlkXG5cdFx0XHRmb3IgKCA7IGkgIT09IGxlbiAmJiAoZWxlbSA9IGVsZW1zW2ldKSAhPSBudWxsOyBpKysgKSB7XG5cdFx0XHRcdGlmICggYnlFbGVtZW50ICYmIGVsZW0gKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0aWYgKCAhY29udGV4dCAmJiBlbGVtLm93bmVyRG9jdW1lbnQgIT09IGRvY3VtZW50ICkge1xuXHRcdFx0XHRcdFx0c2V0RG9jdW1lbnQoIGVsZW0gKTtcblx0XHRcdFx0XHRcdHhtbCA9ICFkb2N1bWVudElzSFRNTDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0d2hpbGUgKCAobWF0Y2hlciA9IGVsZW1lbnRNYXRjaGVyc1tqKytdKSApIHtcblx0XHRcdFx0XHRcdGlmICggbWF0Y2hlciggZWxlbSwgY29udGV4dCB8fCBkb2N1bWVudCwgeG1sKSApIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0cy5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIG91dGVybW9zdCApIHtcblx0XHRcdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFRyYWNrIHVubWF0Y2hlZCBlbGVtZW50cyBmb3Igc2V0IGZpbHRlcnNcblx0XHRcdFx0aWYgKCBieVNldCApIHtcblx0XHRcdFx0XHQvLyBUaGV5IHdpbGwgaGF2ZSBnb25lIHRocm91Z2ggYWxsIHBvc3NpYmxlIG1hdGNoZXJzXG5cdFx0XHRcdFx0aWYgKCAoZWxlbSA9ICFtYXRjaGVyICYmIGVsZW0pICkge1xuXHRcdFx0XHRcdFx0bWF0Y2hlZENvdW50LS07XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gTGVuZ3RoZW4gdGhlIGFycmF5IGZvciBldmVyeSBlbGVtZW50LCBtYXRjaGVkIG9yIG5vdFxuXHRcdFx0XHRcdGlmICggc2VlZCApIHtcblx0XHRcdFx0XHRcdHVubWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIGBpYCBpcyBub3cgdGhlIGNvdW50IG9mIGVsZW1lbnRzIHZpc2l0ZWQgYWJvdmUsIGFuZCBhZGRpbmcgaXQgdG8gYG1hdGNoZWRDb3VudGBcblx0XHRcdC8vIG1ha2VzIHRoZSBsYXR0ZXIgbm9ubmVnYXRpdmUuXG5cdFx0XHRtYXRjaGVkQ291bnQgKz0gaTtcblxuXHRcdFx0Ly8gQXBwbHkgc2V0IGZpbHRlcnMgdG8gdW5tYXRjaGVkIGVsZW1lbnRzXG5cdFx0XHQvLyBOT1RFOiBUaGlzIGNhbiBiZSBza2lwcGVkIGlmIHRoZXJlIGFyZSBubyB1bm1hdGNoZWQgZWxlbWVudHMgKGkuZS4sIGBtYXRjaGVkQ291bnRgXG5cdFx0XHQvLyBlcXVhbHMgYGlgKSwgdW5sZXNzIHdlIGRpZG4ndCB2aXNpdCBfYW55XyBlbGVtZW50cyBpbiB0aGUgYWJvdmUgbG9vcCBiZWNhdXNlIHdlIGhhdmVcblx0XHRcdC8vIG5vIGVsZW1lbnQgbWF0Y2hlcnMgYW5kIG5vIHNlZWQuXG5cdFx0XHQvLyBJbmNyZW1lbnRpbmcgYW4gaW5pdGlhbGx5LXN0cmluZyBcIjBcIiBgaWAgYWxsb3dzIGBpYCB0byByZW1haW4gYSBzdHJpbmcgb25seSBpbiB0aGF0XG5cdFx0XHQvLyBjYXNlLCB3aGljaCB3aWxsIHJlc3VsdCBpbiBhIFwiMDBcIiBgbWF0Y2hlZENvdW50YCB0aGF0IGRpZmZlcnMgZnJvbSBgaWAgYnV0IGlzIGFsc29cblx0XHRcdC8vIG51bWVyaWNhbGx5IHplcm8uXG5cdFx0XHRpZiAoIGJ5U2V0ICYmIGkgIT09IG1hdGNoZWRDb3VudCApIHtcblx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdHdoaWxlICggKG1hdGNoZXIgPSBzZXRNYXRjaGVyc1tqKytdKSApIHtcblx0XHRcdFx0XHRtYXRjaGVyKCB1bm1hdGNoZWQsIHNldE1hdGNoZWQsIGNvbnRleHQsIHhtbCApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCBzZWVkICkge1xuXHRcdFx0XHRcdC8vIFJlaW50ZWdyYXRlIGVsZW1lbnQgbWF0Y2hlcyB0byBlbGltaW5hdGUgdGhlIG5lZWQgZm9yIHNvcnRpbmdcblx0XHRcdFx0XHRpZiAoIG1hdGNoZWRDb3VudCA+IDAgKSB7XG5cdFx0XHRcdFx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCAhKHVubWF0Y2hlZFtpXSB8fCBzZXRNYXRjaGVkW2ldKSApIHtcblx0XHRcdFx0XHRcdFx0XHRzZXRNYXRjaGVkW2ldID0gcG9wLmNhbGwoIHJlc3VsdHMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIERpc2NhcmQgaW5kZXggcGxhY2Vob2xkZXIgdmFsdWVzIHRvIGdldCBvbmx5IGFjdHVhbCBtYXRjaGVzXG5cdFx0XHRcdFx0c2V0TWF0Y2hlZCA9IGNvbmRlbnNlKCBzZXRNYXRjaGVkICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBZGQgbWF0Y2hlcyB0byByZXN1bHRzXG5cdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNldE1hdGNoZWQgKTtcblxuXHRcdFx0XHQvLyBTZWVkbGVzcyBzZXQgbWF0Y2hlcyBzdWNjZWVkaW5nIG11bHRpcGxlIHN1Y2Nlc3NmdWwgbWF0Y2hlcnMgc3RpcHVsYXRlIHNvcnRpbmdcblx0XHRcdFx0aWYgKCBvdXRlcm1vc3QgJiYgIXNlZWQgJiYgc2V0TWF0Y2hlZC5sZW5ndGggPiAwICYmXG5cdFx0XHRcdFx0KCBtYXRjaGVkQ291bnQgKyBzZXRNYXRjaGVycy5sZW5ndGggKSA+IDEgKSB7XG5cblx0XHRcdFx0XHRTaXp6bGUudW5pcXVlU29ydCggcmVzdWx0cyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIE92ZXJyaWRlIG1hbmlwdWxhdGlvbiBvZiBnbG9iYWxzIGJ5IG5lc3RlZCBtYXRjaGVyc1xuXHRcdFx0aWYgKCBvdXRlcm1vc3QgKSB7XG5cdFx0XHRcdGRpcnJ1bnMgPSBkaXJydW5zVW5pcXVlO1xuXHRcdFx0XHRvdXRlcm1vc3RDb250ZXh0ID0gY29udGV4dEJhY2t1cDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHVubWF0Y2hlZDtcblx0XHR9O1xuXG5cdHJldHVybiBieVNldCA/XG5cdFx0bWFya0Z1bmN0aW9uKCBzdXBlck1hdGNoZXIgKSA6XG5cdFx0c3VwZXJNYXRjaGVyO1xufVxuXG5jb21waWxlID0gU2l6emxlLmNvbXBpbGUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIG1hdGNoIC8qIEludGVybmFsIFVzZSBPbmx5ICovICkge1xuXHR2YXIgaSxcblx0XHRzZXRNYXRjaGVycyA9IFtdLFxuXHRcdGVsZW1lbnRNYXRjaGVycyA9IFtdLFxuXHRcdGNhY2hlZCA9IGNvbXBpbGVyQ2FjaGVbIHNlbGVjdG9yICsgXCIgXCIgXTtcblxuXHRpZiAoICFjYWNoZWQgKSB7XG5cdFx0Ly8gR2VuZXJhdGUgYSBmdW5jdGlvbiBvZiByZWN1cnNpdmUgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gY2hlY2sgZWFjaCBlbGVtZW50XG5cdFx0aWYgKCAhbWF0Y2ggKSB7XG5cdFx0XHRtYXRjaCA9IHRva2VuaXplKCBzZWxlY3RvciApO1xuXHRcdH1cblx0XHRpID0gbWF0Y2gubGVuZ3RoO1xuXHRcdHdoaWxlICggaS0tICkge1xuXHRcdFx0Y2FjaGVkID0gbWF0Y2hlckZyb21Ub2tlbnMoIG1hdGNoW2ldICk7XG5cdFx0XHRpZiAoIGNhY2hlZFsgZXhwYW5kbyBdICkge1xuXHRcdFx0XHRzZXRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVsZW1lbnRNYXRjaGVycy5wdXNoKCBjYWNoZWQgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWNoZSB0aGUgY29tcGlsZWQgZnVuY3Rpb25cblx0XHRjYWNoZWQgPSBjb21waWxlckNhY2hlKCBzZWxlY3RvciwgbWF0Y2hlckZyb21Hcm91cE1hdGNoZXJzKCBlbGVtZW50TWF0Y2hlcnMsIHNldE1hdGNoZXJzICkgKTtcblxuXHRcdC8vIFNhdmUgc2VsZWN0b3IgYW5kIHRva2VuaXphdGlvblxuXHRcdGNhY2hlZC5zZWxlY3RvciA9IHNlbGVjdG9yO1xuXHR9XG5cdHJldHVybiBjYWNoZWQ7XG59O1xuXG4vKipcbiAqIEEgbG93LWxldmVsIHNlbGVjdGlvbiBmdW5jdGlvbiB0aGF0IHdvcmtzIHdpdGggU2l6emxlJ3MgY29tcGlsZWRcbiAqICBzZWxlY3RvciBmdW5jdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBzZWxlY3RvciBBIHNlbGVjdG9yIG9yIGEgcHJlLWNvbXBpbGVkXG4gKiAgc2VsZWN0b3IgZnVuY3Rpb24gYnVpbHQgd2l0aCBTaXp6bGUuY29tcGlsZVxuICogQHBhcmFtIHtFbGVtZW50fSBjb250ZXh0XG4gKiBAcGFyYW0ge0FycmF5fSBbcmVzdWx0c11cbiAqIEBwYXJhbSB7QXJyYXl9IFtzZWVkXSBBIHNldCBvZiBlbGVtZW50cyB0byBtYXRjaCBhZ2FpbnN0XG4gKi9cbnNlbGVjdCA9IFNpenpsZS5zZWxlY3QgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJlc3VsdHMsIHNlZWQgKSB7XG5cdHZhciBpLCB0b2tlbnMsIHRva2VuLCB0eXBlLCBmaW5kLFxuXHRcdGNvbXBpbGVkID0gdHlwZW9mIHNlbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgJiYgc2VsZWN0b3IsXG5cdFx0bWF0Y2ggPSAhc2VlZCAmJiB0b2tlbml6ZSggKHNlbGVjdG9yID0gY29tcGlsZWQuc2VsZWN0b3IgfHwgc2VsZWN0b3IpICk7XG5cblx0cmVzdWx0cyA9IHJlc3VsdHMgfHwgW107XG5cblx0Ly8gVHJ5IHRvIG1pbmltaXplIG9wZXJhdGlvbnMgaWYgdGhlcmUgaXMgb25seSBvbmUgc2VsZWN0b3IgaW4gdGhlIGxpc3QgYW5kIG5vIHNlZWRcblx0Ly8gKHRoZSBsYXR0ZXIgb2Ygd2hpY2ggZ3VhcmFudGVlcyB1cyBjb250ZXh0KVxuXHRpZiAoIG1hdGNoLmxlbmd0aCA9PT0gMSApIHtcblxuXHRcdC8vIFJlZHVjZSBjb250ZXh0IGlmIHRoZSBsZWFkaW5nIGNvbXBvdW5kIHNlbGVjdG9yIGlzIGFuIElEXG5cdFx0dG9rZW5zID0gbWF0Y2hbMF0gPSBtYXRjaFswXS5zbGljZSggMCApO1xuXHRcdGlmICggdG9rZW5zLmxlbmd0aCA+IDIgJiYgKHRva2VuID0gdG9rZW5zWzBdKS50eXBlID09PSBcIklEXCIgJiZcblx0XHRcdFx0Y29udGV4dC5ub2RlVHlwZSA9PT0gOSAmJiBkb2N1bWVudElzSFRNTCAmJiBFeHByLnJlbGF0aXZlWyB0b2tlbnNbMV0udHlwZSBdICkge1xuXG5cdFx0XHRjb250ZXh0ID0gKCBFeHByLmZpbmRbXCJJRFwiXSggdG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKHJ1bmVzY2FwZSwgZnVuZXNjYXBlKSwgY29udGV4dCApIHx8IFtdIClbMF07XG5cdFx0XHRpZiAoICFjb250ZXh0ICkge1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0cztcblxuXHRcdFx0Ly8gUHJlY29tcGlsZWQgbWF0Y2hlcnMgd2lsbCBzdGlsbCB2ZXJpZnkgYW5jZXN0cnksIHNvIHN0ZXAgdXAgYSBsZXZlbFxuXHRcdFx0fSBlbHNlIGlmICggY29tcGlsZWQgKSB7XG5cdFx0XHRcdGNvbnRleHQgPSBjb250ZXh0LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cblx0XHRcdHNlbGVjdG9yID0gc2VsZWN0b3Iuc2xpY2UoIHRva2Vucy5zaGlmdCgpLnZhbHVlLmxlbmd0aCApO1xuXHRcdH1cblxuXHRcdC8vIEZldGNoIGEgc2VlZCBzZXQgZm9yIHJpZ2h0LXRvLWxlZnQgbWF0Y2hpbmdcblx0XHRpID0gbWF0Y2hFeHByW1wibmVlZHNDb250ZXh0XCJdLnRlc3QoIHNlbGVjdG9yICkgPyAwIDogdG9rZW5zLmxlbmd0aDtcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdHRva2VuID0gdG9rZW5zW2ldO1xuXG5cdFx0XHQvLyBBYm9ydCBpZiB3ZSBoaXQgYSBjb21iaW5hdG9yXG5cdFx0XHRpZiAoIEV4cHIucmVsYXRpdmVbICh0eXBlID0gdG9rZW4udHlwZSkgXSApIHtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIChmaW5kID0gRXhwci5maW5kWyB0eXBlIF0pICkge1xuXHRcdFx0XHQvLyBTZWFyY2gsIGV4cGFuZGluZyBjb250ZXh0IGZvciBsZWFkaW5nIHNpYmxpbmcgY29tYmluYXRvcnNcblx0XHRcdFx0aWYgKCAoc2VlZCA9IGZpbmQoXG5cdFx0XHRcdFx0dG9rZW4ubWF0Y2hlc1swXS5yZXBsYWNlKCBydW5lc2NhcGUsIGZ1bmVzY2FwZSApLFxuXHRcdFx0XHRcdHJzaWJsaW5nLnRlc3QoIHRva2Vuc1swXS50eXBlICkgJiYgdGVzdENvbnRleHQoIGNvbnRleHQucGFyZW50Tm9kZSApIHx8IGNvbnRleHRcblx0XHRcdFx0KSkgKSB7XG5cblx0XHRcdFx0XHQvLyBJZiBzZWVkIGlzIGVtcHR5IG9yIG5vIHRva2VucyByZW1haW4sIHdlIGNhbiByZXR1cm4gZWFybHlcblx0XHRcdFx0XHR0b2tlbnMuc3BsaWNlKCBpLCAxICk7XG5cdFx0XHRcdFx0c2VsZWN0b3IgPSBzZWVkLmxlbmd0aCAmJiB0b1NlbGVjdG9yKCB0b2tlbnMgKTtcblx0XHRcdFx0XHRpZiAoICFzZWxlY3RvciApIHtcblx0XHRcdFx0XHRcdHB1c2guYXBwbHkoIHJlc3VsdHMsIHNlZWQgKTtcblx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRzO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ29tcGlsZSBhbmQgZXhlY3V0ZSBhIGZpbHRlcmluZyBmdW5jdGlvbiBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG5cdC8vIFByb3ZpZGUgYG1hdGNoYCB0byBhdm9pZCByZXRva2VuaXphdGlvbiBpZiB3ZSBtb2RpZmllZCB0aGUgc2VsZWN0b3IgYWJvdmVcblx0KCBjb21waWxlZCB8fCBjb21waWxlKCBzZWxlY3RvciwgbWF0Y2ggKSApKFxuXHRcdHNlZWQsXG5cdFx0Y29udGV4dCxcblx0XHQhZG9jdW1lbnRJc0hUTUwsXG5cdFx0cmVzdWx0cyxcblx0XHQhY29udGV4dCB8fCByc2libGluZy50ZXN0KCBzZWxlY3RvciApICYmIHRlc3RDb250ZXh0KCBjb250ZXh0LnBhcmVudE5vZGUgKSB8fCBjb250ZXh0XG5cdCk7XG5cdHJldHVybiByZXN1bHRzO1xufTtcblxuLy8gT25lLXRpbWUgYXNzaWdubWVudHNcblxuLy8gU29ydCBzdGFiaWxpdHlcbnN1cHBvcnQuc29ydFN0YWJsZSA9IGV4cGFuZG8uc3BsaXQoXCJcIikuc29ydCggc29ydE9yZGVyICkuam9pbihcIlwiKSA9PT0gZXhwYW5kbztcblxuLy8gU3VwcG9ydDogQ2hyb21lIDE0LTM1K1xuLy8gQWx3YXlzIGFzc3VtZSBkdXBsaWNhdGVzIGlmIHRoZXkgYXJlbid0IHBhc3NlZCB0byB0aGUgY29tcGFyaXNvbiBmdW5jdGlvblxuc3VwcG9ydC5kZXRlY3REdXBsaWNhdGVzID0gISFoYXNEdXBsaWNhdGU7XG5cbi8vIEluaXRpYWxpemUgYWdhaW5zdCB0aGUgZGVmYXVsdCBkb2N1bWVudFxuc2V0RG9jdW1lbnQoKTtcblxuLy8gU3VwcG9ydDogV2Via2l0PDUzNy4zMiAtIFNhZmFyaSA2LjAuMy9DaHJvbWUgMjUgKGZpeGVkIGluIENocm9tZSAyNylcbi8vIERldGFjaGVkIG5vZGVzIGNvbmZvdW5kaW5nbHkgZm9sbG93ICplYWNoIG90aGVyKlxuc3VwcG9ydC5zb3J0RGV0YWNoZWQgPSBhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHQvLyBTaG91bGQgcmV0dXJuIDEsIGJ1dCByZXR1cm5zIDQgKGZvbGxvd2luZylcblx0cmV0dXJuIGVsLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZmllbGRzZXRcIikgKSAmIDE7XG59KTtcblxuLy8gU3VwcG9ydDogSUU8OFxuLy8gUHJldmVudCBhdHRyaWJ1dGUvcHJvcGVydHkgXCJpbnRlcnBvbGF0aW9uXCJcbi8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzY0MjklMjhWUy44NSUyOS5hc3B4XG5pZiAoICFhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRlbC5pbm5lckhUTUwgPSBcIjxhIGhyZWY9JyMnPjwvYT5cIjtcblx0cmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSA9PT0gXCIjXCIgO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggXCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoXCIsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHRpZiAoICFpc1hNTCApIHtcblx0XHRcdHJldHVybiBlbGVtLmdldEF0dHJpYnV0ZSggbmFtZSwgbmFtZS50b0xvd2VyQ2FzZSgpID09PSBcInR5cGVcIiA/IDEgOiAyICk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLy8gU3VwcG9ydDogSUU8OVxuLy8gVXNlIGRlZmF1bHRWYWx1ZSBpbiBwbGFjZSBvZiBnZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKVxuaWYgKCAhc3VwcG9ydC5hdHRyaWJ1dGVzIHx8ICFhc3NlcnQoZnVuY3Rpb24oIGVsICkge1xuXHRlbC5pbm5lckhUTUwgPSBcIjxpbnB1dC8+XCI7XG5cdGVsLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCBcInZhbHVlXCIsIFwiXCIgKTtcblx0cmV0dXJuIGVsLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCBcInZhbHVlXCIgKSA9PT0gXCJcIjtcbn0pICkge1xuXHRhZGRIYW5kbGUoIFwidmFsdWVcIiwgZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdGlmICggIWlzWE1MICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpbnB1dFwiICkge1xuXHRcdFx0cmV0dXJuIGVsZW0uZGVmYXVsdFZhbHVlO1xuXHRcdH1cblx0fSk7XG59XG5cbi8vIFN1cHBvcnQ6IElFPDlcbi8vIFVzZSBnZXRBdHRyaWJ1dGVOb2RlIHRvIGZldGNoIGJvb2xlYW5zIHdoZW4gZ2V0QXR0cmlidXRlIGxpZXNcbmlmICggIWFzc2VydChmdW5jdGlvbiggZWwgKSB7XG5cdHJldHVybiBlbC5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSA9PSBudWxsO1xufSkgKSB7XG5cdGFkZEhhbmRsZSggYm9vbGVhbnMsIGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBpc1hNTCApIHtcblx0XHR2YXIgdmFsO1xuXHRcdGlmICggIWlzWE1MICkge1xuXHRcdFx0cmV0dXJuIGVsZW1bIG5hbWUgXSA9PT0gdHJ1ZSA/IG5hbWUudG9Mb3dlckNhc2UoKSA6XG5cdFx0XHRcdFx0KHZhbCA9IGVsZW0uZ2V0QXR0cmlidXRlTm9kZSggbmFtZSApKSAmJiB2YWwuc3BlY2lmaWVkID9cblx0XHRcdFx0XHR2YWwudmFsdWUgOlxuXHRcdFx0XHRudWxsO1xuXHRcdH1cblx0fSk7XG59XG5cbnJldHVybiBTaXp6bGU7XG5cbn0pKCB3aW5kb3cgKTtcblxuXG5cbmpRdWVyeS5maW5kID0gU2l6emxlO1xualF1ZXJ5LmV4cHIgPSBTaXp6bGUuc2VsZWN0b3JzO1xuXG4vLyBEZXByZWNhdGVkXG5qUXVlcnkuZXhwclsgXCI6XCIgXSA9IGpRdWVyeS5leHByLnBzZXVkb3M7XG5qUXVlcnkudW5pcXVlU29ydCA9IGpRdWVyeS51bmlxdWUgPSBTaXp6bGUudW5pcXVlU29ydDtcbmpRdWVyeS50ZXh0ID0gU2l6emxlLmdldFRleHQ7XG5qUXVlcnkuaXNYTUxEb2MgPSBTaXp6bGUuaXNYTUw7XG5qUXVlcnkuY29udGFpbnMgPSBTaXp6bGUuY29udGFpbnM7XG5qUXVlcnkuZXNjYXBlU2VsZWN0b3IgPSBTaXp6bGUuZXNjYXBlO1xuXG5cblxuXG52YXIgZGlyID0gZnVuY3Rpb24oIGVsZW0sIGRpciwgdW50aWwgKSB7XG5cdHZhciBtYXRjaGVkID0gW10sXG5cdFx0dHJ1bmNhdGUgPSB1bnRpbCAhPT0gdW5kZWZpbmVkO1xuXG5cdHdoaWxlICggKCBlbGVtID0gZWxlbVsgZGlyIF0gKSAmJiBlbGVtLm5vZGVUeXBlICE9PSA5ICkge1xuXHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblx0XHRcdGlmICggdHJ1bmNhdGUgJiYgalF1ZXJ5KCBlbGVtICkuaXMoIHVudGlsICkgKSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0bWF0Y2hlZC5wdXNoKCBlbGVtICk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBtYXRjaGVkO1xufTtcblxuXG52YXIgc2libGluZ3MgPSBmdW5jdGlvbiggbiwgZWxlbSApIHtcblx0dmFyIG1hdGNoZWQgPSBbXTtcblxuXHRmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkge1xuXHRcdGlmICggbi5ub2RlVHlwZSA9PT0gMSAmJiBuICE9PSBlbGVtICkge1xuXHRcdFx0bWF0Y2hlZC5wdXNoKCBuICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG1hdGNoZWQ7XG59O1xuXG5cbnZhciBybmVlZHNDb250ZXh0ID0galF1ZXJ5LmV4cHIubWF0Y2gubmVlZHNDb250ZXh0O1xuXG5cblxuZnVuY3Rpb24gbm9kZU5hbWUoIGVsZW0sIG5hbWUgKSB7XG5cbiAgcmV0dXJuIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cbn07XG52YXIgcnNpbmdsZVRhZyA9ICggL148KFthLXpdW15cXC9cXDA+OlxceDIwXFx0XFxyXFxuXFxmXSopW1xceDIwXFx0XFxyXFxuXFxmXSpcXC8/Pig/OjxcXC9cXDE+fCkkL2kgKTtcblxuXG5cbi8vIEltcGxlbWVudCB0aGUgaWRlbnRpY2FsIGZ1bmN0aW9uYWxpdHkgZm9yIGZpbHRlciBhbmQgbm90XG5mdW5jdGlvbiB3aW5ub3coIGVsZW1lbnRzLCBxdWFsaWZpZXIsIG5vdCApIHtcblx0aWYgKCBpc0Z1bmN0aW9uKCBxdWFsaWZpZXIgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSwgaSApIHtcblx0XHRcdHJldHVybiAhIXF1YWxpZmllci5jYWxsKCBlbGVtLCBpLCBlbGVtICkgIT09IG5vdDtcblx0XHR9ICk7XG5cdH1cblxuXHQvLyBTaW5nbGUgZWxlbWVudFxuXHRpZiAoIHF1YWxpZmllci5ub2RlVHlwZSApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGVsZW0gPT09IHF1YWxpZmllciApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gQXJyYXlsaWtlIG9mIGVsZW1lbnRzIChqUXVlcnksIGFyZ3VtZW50cywgQXJyYXkpXG5cdGlmICggdHlwZW9mIHF1YWxpZmllciAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4galF1ZXJ5LmdyZXAoIGVsZW1lbnRzLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRcdHJldHVybiAoIGluZGV4T2YuY2FsbCggcXVhbGlmaWVyLCBlbGVtICkgPiAtMSApICE9PSBub3Q7XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gRmlsdGVyZWQgZGlyZWN0bHkgZm9yIGJvdGggc2ltcGxlIGFuZCBjb21wbGV4IHNlbGVjdG9yc1xuXHRyZXR1cm4galF1ZXJ5LmZpbHRlciggcXVhbGlmaWVyLCBlbGVtZW50cywgbm90ICk7XG59XG5cbmpRdWVyeS5maWx0ZXIgPSBmdW5jdGlvbiggZXhwciwgZWxlbXMsIG5vdCApIHtcblx0dmFyIGVsZW0gPSBlbGVtc1sgMCBdO1xuXG5cdGlmICggbm90ICkge1xuXHRcdGV4cHIgPSBcIjpub3QoXCIgKyBleHByICsgXCIpXCI7XG5cdH1cblxuXHRpZiAoIGVsZW1zLmxlbmd0aCA9PT0gMSAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdHJldHVybiBqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGVsZW0sIGV4cHIgKSA/IFsgZWxlbSBdIDogW107XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5LmZpbmQubWF0Y2hlcyggZXhwciwgalF1ZXJ5LmdyZXAoIGVsZW1zLCBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZWxlbS5ub2RlVHlwZSA9PT0gMTtcblx0fSApICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZpbmQ6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgaSwgcmV0LFxuXHRcdFx0bGVuID0gdGhpcy5sZW5ndGgsXG5cdFx0XHRzZWxmID0gdGhpcztcblxuXHRcdGlmICggdHlwZW9mIHNlbGVjdG9yICE9PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkoIHNlbGVjdG9yICkuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRpZiAoIGpRdWVyeS5jb250YWlucyggc2VsZlsgaSBdLCB0aGlzICkgKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKSApO1xuXHRcdH1cblxuXHRcdHJldCA9IHRoaXMucHVzaFN0YWNrKCBbXSApO1xuXG5cdFx0Zm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdGpRdWVyeS5maW5kKCBzZWxlY3Rvciwgc2VsZlsgaSBdLCByZXQgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbGVuID4gMSA/IGpRdWVyeS51bmlxdWVTb3J0KCByZXQgKSA6IHJldDtcblx0fSxcblx0ZmlsdGVyOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCB3aW5ub3coIHRoaXMsIHNlbGVjdG9yIHx8IFtdLCBmYWxzZSApICk7XG5cdH0sXG5cdG5vdDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggd2lubm93KCB0aGlzLCBzZWxlY3RvciB8fCBbXSwgdHJ1ZSApICk7XG5cdH0sXG5cdGlzOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuICEhd2lubm93KFxuXHRcdFx0dGhpcyxcblxuXHRcdFx0Ly8gSWYgdGhpcyBpcyBhIHBvc2l0aW9uYWwvcmVsYXRpdmUgc2VsZWN0b3IsIGNoZWNrIG1lbWJlcnNoaXAgaW4gdGhlIHJldHVybmVkIHNldFxuXHRcdFx0Ly8gc28gJChcInA6Zmlyc3RcIikuaXMoXCJwOmxhc3RcIikgd29uJ3QgcmV0dXJuIHRydWUgZm9yIGEgZG9jIHdpdGggdHdvIFwicFwiLlxuXHRcdFx0dHlwZW9mIHNlbGVjdG9yID09PSBcInN0cmluZ1wiICYmIHJuZWVkc0NvbnRleHQudGVzdCggc2VsZWN0b3IgKSA/XG5cdFx0XHRcdGpRdWVyeSggc2VsZWN0b3IgKSA6XG5cdFx0XHRcdHNlbGVjdG9yIHx8IFtdLFxuXHRcdFx0ZmFsc2Vcblx0XHQpLmxlbmd0aDtcblx0fVxufSApO1xuXG5cbi8vIEluaXRpYWxpemUgYSBqUXVlcnkgb2JqZWN0XG5cblxuLy8gQSBjZW50cmFsIHJlZmVyZW5jZSB0byB0aGUgcm9vdCBqUXVlcnkoZG9jdW1lbnQpXG52YXIgcm9vdGpRdWVyeSxcblxuXHQvLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhUTUwgc3RyaW5nc1xuXHQvLyBQcmlvcml0aXplICNpZCBvdmVyIDx0YWc+IHRvIGF2b2lkIFhTUyB2aWEgbG9jYXRpb24uaGFzaCAoIzk1MjEpXG5cdC8vIFN0cmljdCBIVE1MIHJlY29nbml0aW9uICgjMTEyOTA6IG11c3Qgc3RhcnQgd2l0aCA8KVxuXHQvLyBTaG9ydGN1dCBzaW1wbGUgI2lkIGNhc2UgZm9yIHNwZWVkXG5cdHJxdWlja0V4cHIgPSAvXig/OlxccyooPFtcXHdcXFddKz4pW14+XSp8IyhbXFx3LV0rKSkkLyxcblxuXHRpbml0ID0galF1ZXJ5LmZuLmluaXQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQsIHJvb3QgKSB7XG5cdFx0dmFyIG1hdGNoLCBlbGVtO1xuXG5cdFx0Ly8gSEFORExFOiAkKFwiXCIpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpXG5cdFx0aWYgKCAhc2VsZWN0b3IgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHQvLyBNZXRob2QgaW5pdCgpIGFjY2VwdHMgYW4gYWx0ZXJuYXRlIHJvb3RqUXVlcnlcblx0XHQvLyBzbyBtaWdyYXRlIGNhbiBzdXBwb3J0IGpRdWVyeS5zdWIgKGdoLTIxMDEpXG5cdFx0cm9vdCA9IHJvb3QgfHwgcm9vdGpRdWVyeTtcblxuXHRcdC8vIEhhbmRsZSBIVE1MIHN0cmluZ3Ncblx0XHRpZiAoIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGlmICggc2VsZWN0b3JbIDAgXSA9PT0gXCI8XCIgJiZcblx0XHRcdFx0c2VsZWN0b3JbIHNlbGVjdG9yLmxlbmd0aCAtIDEgXSA9PT0gXCI+XCIgJiZcblx0XHRcdFx0c2VsZWN0b3IubGVuZ3RoID49IDMgKSB7XG5cblx0XHRcdFx0Ly8gQXNzdW1lIHRoYXQgc3RyaW5ncyB0aGF0IHN0YXJ0IGFuZCBlbmQgd2l0aCA8PiBhcmUgSFRNTCBhbmQgc2tpcCB0aGUgcmVnZXggY2hlY2tcblx0XHRcdFx0bWF0Y2ggPSBbIG51bGwsIHNlbGVjdG9yLCBudWxsIF07XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG1hdGNoID0gcnF1aWNrRXhwci5leGVjKCBzZWxlY3RvciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYXRjaCBodG1sIG9yIG1ha2Ugc3VyZSBubyBjb250ZXh0IGlzIHNwZWNpZmllZCBmb3IgI2lkXG5cdFx0XHRpZiAoIG1hdGNoICYmICggbWF0Y2hbIDEgXSB8fCAhY29udGV4dCApICkge1xuXG5cdFx0XHRcdC8vIEhBTkRMRTogJChodG1sKSAtPiAkKGFycmF5KVxuXHRcdFx0XHRpZiAoIG1hdGNoWyAxIF0gKSB7XG5cdFx0XHRcdFx0Y29udGV4dCA9IGNvbnRleHQgaW5zdGFuY2VvZiBqUXVlcnkgPyBjb250ZXh0WyAwIF0gOiBjb250ZXh0O1xuXG5cdFx0XHRcdFx0Ly8gT3B0aW9uIHRvIHJ1biBzY3JpcHRzIGlzIHRydWUgZm9yIGJhY2stY29tcGF0XG5cdFx0XHRcdFx0Ly8gSW50ZW50aW9uYWxseSBsZXQgdGhlIGVycm9yIGJlIHRocm93biBpZiBwYXJzZUhUTUwgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0XHRqUXVlcnkubWVyZ2UoIHRoaXMsIGpRdWVyeS5wYXJzZUhUTUwoXG5cdFx0XHRcdFx0XHRtYXRjaFsgMSBdLFxuXHRcdFx0XHRcdFx0Y29udGV4dCAmJiBjb250ZXh0Lm5vZGVUeXBlID8gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHQgOiBkb2N1bWVudCxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpICk7XG5cblx0XHRcdFx0XHQvLyBIQU5ETEU6ICQoaHRtbCwgcHJvcHMpXG5cdFx0XHRcdFx0aWYgKCByc2luZ2xlVGFnLnRlc3QoIG1hdGNoWyAxIF0gKSAmJiBqUXVlcnkuaXNQbGFpbk9iamVjdCggY29udGV4dCApICkge1xuXHRcdFx0XHRcdFx0Zm9yICggbWF0Y2ggaW4gY29udGV4dCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBQcm9wZXJ0aWVzIG9mIGNvbnRleHQgYXJlIGNhbGxlZCBhcyBtZXRob2RzIGlmIHBvc3NpYmxlXG5cdFx0XHRcdFx0XHRcdGlmICggaXNGdW5jdGlvbiggdGhpc1sgbWF0Y2ggXSApICkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXNbIG1hdGNoIF0oIGNvbnRleHRbIG1hdGNoIF0gKTtcblxuXHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgb3RoZXJ3aXNlIHNldCBhcyBhdHRyaWJ1dGVzXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5hdHRyKCBtYXRjaCwgY29udGV4dFsgbWF0Y2ggXSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cblx0XHRcdFx0Ly8gSEFORExFOiAkKCNpZClcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG1hdGNoWyAyIF0gKTtcblxuXHRcdFx0XHRcdGlmICggZWxlbSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gSW5qZWN0IHRoZSBlbGVtZW50IGRpcmVjdGx5IGludG8gdGhlIGpRdWVyeSBvYmplY3Rcblx0XHRcdFx0XHRcdHRoaXNbIDAgXSA9IGVsZW07XG5cdFx0XHRcdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9XG5cblx0XHRcdC8vIEhBTkRMRTogJChleHByLCAkKC4uLikpXG5cdFx0XHR9IGVsc2UgaWYgKCAhY29udGV4dCB8fCBjb250ZXh0LmpxdWVyeSApIHtcblx0XHRcdFx0cmV0dXJuICggY29udGV4dCB8fCByb290ICkuZmluZCggc2VsZWN0b3IgKTtcblxuXHRcdFx0Ly8gSEFORExFOiAkKGV4cHIsIGNvbnRleHQpXG5cdFx0XHQvLyAod2hpY2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRleHQpLmZpbmQoZXhwcilcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLmNvbnN0cnVjdG9yKCBjb250ZXh0ICkuZmluZCggc2VsZWN0b3IgKTtcblx0XHRcdH1cblxuXHRcdC8vIEhBTkRMRTogJChET01FbGVtZW50KVxuXHRcdH0gZWxzZSBpZiAoIHNlbGVjdG9yLm5vZGVUeXBlICkge1xuXHRcdFx0dGhpc1sgMCBdID0gc2VsZWN0b3I7XG5cdFx0XHR0aGlzLmxlbmd0aCA9IDE7XG5cdFx0XHRyZXR1cm4gdGhpcztcblxuXHRcdC8vIEhBTkRMRTogJChmdW5jdGlvbilcblx0XHQvLyBTaG9ydGN1dCBmb3IgZG9jdW1lbnQgcmVhZHlcblx0XHR9IGVsc2UgaWYgKCBpc0Z1bmN0aW9uKCBzZWxlY3RvciApICkge1xuXHRcdFx0cmV0dXJuIHJvb3QucmVhZHkgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHJvb3QucmVhZHkoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIEV4ZWN1dGUgaW1tZWRpYXRlbHkgaWYgcmVhZHkgaXMgbm90IHByZXNlbnRcblx0XHRcdFx0c2VsZWN0b3IoIGpRdWVyeSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBqUXVlcnkubWFrZUFycmF5KCBzZWxlY3RvciwgdGhpcyApO1xuXHR9O1xuXG4vLyBHaXZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkgcHJvdG90eXBlIGZvciBsYXRlciBpbnN0YW50aWF0aW9uXG5pbml0LnByb3RvdHlwZSA9IGpRdWVyeS5mbjtcblxuLy8gSW5pdGlhbGl6ZSBjZW50cmFsIHJlZmVyZW5jZVxucm9vdGpRdWVyeSA9IGpRdWVyeSggZG9jdW1lbnQgKTtcblxuXG52YXIgcnBhcmVudHNwcmV2ID0gL14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sXG5cblx0Ly8gTWV0aG9kcyBndWFyYW50ZWVkIHRvIHByb2R1Y2UgYSB1bmlxdWUgc2V0IHdoZW4gc3RhcnRpbmcgZnJvbSBhIHVuaXF1ZSBzZXRcblx0Z3VhcmFudGVlZFVuaXF1ZSA9IHtcblx0XHRjaGlsZHJlbjogdHJ1ZSxcblx0XHRjb250ZW50czogdHJ1ZSxcblx0XHRuZXh0OiB0cnVlLFxuXHRcdHByZXY6IHRydWVcblx0fTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRoYXM6IGZ1bmN0aW9uKCB0YXJnZXQgKSB7XG5cdFx0dmFyIHRhcmdldHMgPSBqUXVlcnkoIHRhcmdldCwgdGhpcyApLFxuXHRcdFx0bCA9IHRhcmdldHMubGVuZ3RoO1xuXG5cdFx0cmV0dXJuIHRoaXMuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBpID0gMDtcblx0XHRcdGZvciAoIDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBqUXVlcnkuY29udGFpbnMoIHRoaXMsIHRhcmdldHNbIGkgXSApICkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGNsb3Nlc3Q6IGZ1bmN0aW9uKCBzZWxlY3RvcnMsIGNvbnRleHQgKSB7XG5cdFx0dmFyIGN1cixcblx0XHRcdGkgPSAwLFxuXHRcdFx0bCA9IHRoaXMubGVuZ3RoLFxuXHRcdFx0bWF0Y2hlZCA9IFtdLFxuXHRcdFx0dGFyZ2V0cyA9IHR5cGVvZiBzZWxlY3RvcnMgIT09IFwic3RyaW5nXCIgJiYgalF1ZXJ5KCBzZWxlY3RvcnMgKTtcblxuXHRcdC8vIFBvc2l0aW9uYWwgc2VsZWN0b3JzIG5ldmVyIG1hdGNoLCBzaW5jZSB0aGVyZSdzIG5vIF9zZWxlY3Rpb25fIGNvbnRleHRcblx0XHRpZiAoICFybmVlZHNDb250ZXh0LnRlc3QoIHNlbGVjdG9ycyApICkge1xuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRmb3IgKCBjdXIgPSB0aGlzWyBpIF07IGN1ciAmJiBjdXIgIT09IGNvbnRleHQ7IGN1ciA9IGN1ci5wYXJlbnROb2RlICkge1xuXG5cdFx0XHRcdFx0Ly8gQWx3YXlzIHNraXAgZG9jdW1lbnQgZnJhZ21lbnRzXG5cdFx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPCAxMSAmJiAoIHRhcmdldHMgP1xuXHRcdFx0XHRcdFx0dGFyZ2V0cy5pbmRleCggY3VyICkgPiAtMSA6XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IHBhc3Mgbm9uLWVsZW1lbnRzIHRvIFNpenpsZVxuXHRcdFx0XHRcdFx0Y3VyLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kLm1hdGNoZXNTZWxlY3RvciggY3VyLCBzZWxlY3RvcnMgKSApICkge1xuXG5cdFx0XHRcdFx0XHRtYXRjaGVkLnB1c2goIGN1ciApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMucHVzaFN0YWNrKCBtYXRjaGVkLmxlbmd0aCA+IDEgPyBqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApIDogbWF0Y2hlZCApO1xuXHR9LFxuXG5cdC8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRoaW4gdGhlIHNldFxuXHRpbmRleDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHQvLyBObyBhcmd1bWVudCwgcmV0dXJuIGluZGV4IGluIHBhcmVudFxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gKCB0aGlzWyAwIF0gJiYgdGhpc1sgMCBdLnBhcmVudE5vZGUgKSA/IHRoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoIDogLTE7XG5cdFx0fVxuXG5cdFx0Ly8gSW5kZXggaW4gc2VsZWN0b3Jcblx0XHRpZiAoIHR5cGVvZiBlbGVtID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0cmV0dXJuIGluZGV4T2YuY2FsbCggalF1ZXJ5KCBlbGVtICksIHRoaXNbIDAgXSApO1xuXHRcdH1cblxuXHRcdC8vIExvY2F0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRlc2lyZWQgZWxlbWVudFxuXHRcdHJldHVybiBpbmRleE9mLmNhbGwoIHRoaXMsXG5cblx0XHRcdC8vIElmIGl0IHJlY2VpdmVzIGEgalF1ZXJ5IG9iamVjdCwgdGhlIGZpcnN0IGVsZW1lbnQgaXMgdXNlZFxuXHRcdFx0ZWxlbS5qcXVlcnkgPyBlbGVtWyAwIF0gOiBlbGVtXG5cdFx0KTtcblx0fSxcblxuXHRhZGQ6IGZ1bmN0aW9uKCBzZWxlY3RvciwgY29udGV4dCApIHtcblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soXG5cdFx0XHRqUXVlcnkudW5pcXVlU29ydChcblx0XHRcdFx0alF1ZXJ5Lm1lcmdlKCB0aGlzLmdldCgpLCBqUXVlcnkoIHNlbGVjdG9yLCBjb250ZXh0ICkgKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0sXG5cblx0YWRkQmFjazogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiB0aGlzLmFkZCggc2VsZWN0b3IgPT0gbnVsbCA/XG5cdFx0XHR0aGlzLnByZXZPYmplY3QgOiB0aGlzLnByZXZPYmplY3QuZmlsdGVyKCBzZWxlY3RvciApXG5cdFx0KTtcblx0fVxufSApO1xuXG5mdW5jdGlvbiBzaWJsaW5nKCBjdXIsIGRpciApIHtcblx0d2hpbGUgKCAoIGN1ciA9IGN1clsgZGlyIF0gKSAmJiBjdXIubm9kZVR5cGUgIT09IDEgKSB7fVxuXHRyZXR1cm4gY3VyO1xufVxuXG5qUXVlcnkuZWFjaCgge1xuXHRwYXJlbnQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHZhciBwYXJlbnQgPSBlbGVtLnBhcmVudE5vZGU7XG5cdFx0cmV0dXJuIHBhcmVudCAmJiBwYXJlbnQubm9kZVR5cGUgIT09IDExID8gcGFyZW50IDogbnVsbDtcblx0fSxcblx0cGFyZW50czogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIgKTtcblx0fSxcblx0cGFyZW50c1VudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJwYXJlbnROb2RlXCIsIHVudGlsICk7XG5cdH0sXG5cdG5leHQ6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5nKCBlbGVtLCBcIm5leHRTaWJsaW5nXCIgKTtcblx0fSxcblx0cHJldjogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmcoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dEFsbDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiICk7XG5cdH0sXG5cdHByZXZBbGw6IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBkaXIoIGVsZW0sIFwicHJldmlvdXNTaWJsaW5nXCIgKTtcblx0fSxcblx0bmV4dFVudGlsOiBmdW5jdGlvbiggZWxlbSwgaSwgdW50aWwgKSB7XG5cdFx0cmV0dXJuIGRpciggZWxlbSwgXCJuZXh0U2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRwcmV2VW50aWw6IGZ1bmN0aW9uKCBlbGVtLCBpLCB1bnRpbCApIHtcblx0XHRyZXR1cm4gZGlyKCBlbGVtLCBcInByZXZpb3VzU2libGluZ1wiLCB1bnRpbCApO1xuXHR9LFxuXHRzaWJsaW5nczogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0cmV0dXJuIHNpYmxpbmdzKCAoIGVsZW0ucGFyZW50Tm9kZSB8fCB7fSApLmZpcnN0Q2hpbGQsIGVsZW0gKTtcblx0fSxcblx0Y2hpbGRyZW46IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdHJldHVybiBzaWJsaW5ncyggZWxlbS5maXJzdENoaWxkICk7XG5cdH0sXG5cdGNvbnRlbnRzOiBmdW5jdGlvbiggZWxlbSApIHtcbiAgICAgICAgaWYgKCBub2RlTmFtZSggZWxlbSwgXCJpZnJhbWVcIiApICkge1xuICAgICAgICAgICAgcmV0dXJuIGVsZW0uY29udGVudERvY3VtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU3VwcG9ydDogSUUgOSAtIDExIG9ubHksIGlPUyA3IG9ubHksIEFuZHJvaWQgQnJvd3NlciA8PTQuMyBvbmx5XG4gICAgICAgIC8vIFRyZWF0IHRoZSB0ZW1wbGF0ZSBlbGVtZW50IGFzIGEgcmVndWxhciBvbmUgaW4gYnJvd3NlcnMgdGhhdFxuICAgICAgICAvLyBkb24ndCBzdXBwb3J0IGl0LlxuICAgICAgICBpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRlbXBsYXRlXCIgKSApIHtcbiAgICAgICAgICAgIGVsZW0gPSBlbGVtLmNvbnRlbnQgfHwgZWxlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBqUXVlcnkubWVyZ2UoIFtdLCBlbGVtLmNoaWxkTm9kZXMgKTtcblx0fVxufSwgZnVuY3Rpb24oIG5hbWUsIGZuICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCB1bnRpbCwgc2VsZWN0b3IgKSB7XG5cdFx0dmFyIG1hdGNoZWQgPSBqUXVlcnkubWFwKCB0aGlzLCBmbiwgdW50aWwgKTtcblxuXHRcdGlmICggbmFtZS5zbGljZSggLTUgKSAhPT0gXCJVbnRpbFwiICkge1xuXHRcdFx0c2VsZWN0b3IgPSB1bnRpbDtcblx0XHR9XG5cblx0XHRpZiAoIHNlbGVjdG9yICYmIHR5cGVvZiBzZWxlY3RvciA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdG1hdGNoZWQgPSBqUXVlcnkuZmlsdGVyKCBzZWxlY3RvciwgbWF0Y2hlZCApO1xuXHRcdH1cblxuXHRcdGlmICggdGhpcy5sZW5ndGggPiAxICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgZHVwbGljYXRlc1xuXHRcdFx0aWYgKCAhZ3VhcmFudGVlZFVuaXF1ZVsgbmFtZSBdICkge1xuXHRcdFx0XHRqUXVlcnkudW5pcXVlU29ydCggbWF0Y2hlZCApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXZlcnNlIG9yZGVyIGZvciBwYXJlbnRzKiBhbmQgcHJldi1kZXJpdmF0aXZlc1xuXHRcdFx0aWYgKCBycGFyZW50c3ByZXYudGVzdCggbmFtZSApICkge1xuXHRcdFx0XHRtYXRjaGVkLnJldmVyc2UoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5wdXNoU3RhY2soIG1hdGNoZWQgKTtcblx0fTtcbn0gKTtcbnZhciBybm90aHRtbHdoaXRlID0gKCAvW15cXHgyMFxcdFxcclxcblxcZl0rL2cgKTtcblxuXG5cbi8vIENvbnZlcnQgU3RyaW5nLWZvcm1hdHRlZCBvcHRpb25zIGludG8gT2JqZWN0LWZvcm1hdHRlZCBvbmVzXG5mdW5jdGlvbiBjcmVhdGVPcHRpb25zKCBvcHRpb25zICkge1xuXHR2YXIgb2JqZWN0ID0ge307XG5cdGpRdWVyeS5lYWNoKCBvcHRpb25zLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW10sIGZ1bmN0aW9uKCBfLCBmbGFnICkge1xuXHRcdG9iamVjdFsgZmxhZyBdID0gdHJ1ZTtcblx0fSApO1xuXHRyZXR1cm4gb2JqZWN0O1xufVxuXG4vKlxuICogQ3JlYXRlIGEgY2FsbGJhY2sgbGlzdCB1c2luZyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4gKlxuICpcdG9wdGlvbnM6IGFuIG9wdGlvbmFsIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIG9wdGlvbnMgdGhhdCB3aWxsIGNoYW5nZSBob3dcbiAqXHRcdFx0dGhlIGNhbGxiYWNrIGxpc3QgYmVoYXZlcyBvciBhIG1vcmUgdHJhZGl0aW9uYWwgb3B0aW9uIG9iamVjdFxuICpcbiAqIEJ5IGRlZmF1bHQgYSBjYWxsYmFjayBsaXN0IHdpbGwgYWN0IGxpa2UgYW4gZXZlbnQgY2FsbGJhY2sgbGlzdCBhbmQgY2FuIGJlXG4gKiBcImZpcmVkXCIgbXVsdGlwbGUgdGltZXMuXG4gKlxuICogUG9zc2libGUgb3B0aW9uczpcbiAqXG4gKlx0b25jZTpcdFx0XHR3aWxsIGVuc3VyZSB0aGUgY2FsbGJhY2sgbGlzdCBjYW4gb25seSBiZSBmaXJlZCBvbmNlIChsaWtlIGEgRGVmZXJyZWQpXG4gKlxuICpcdG1lbW9yeTpcdFx0XHR3aWxsIGtlZXAgdHJhY2sgb2YgcHJldmlvdXMgdmFsdWVzIGFuZCB3aWxsIGNhbGwgYW55IGNhbGxiYWNrIGFkZGVkXG4gKlx0XHRcdFx0XHRhZnRlciB0aGUgbGlzdCBoYXMgYmVlbiBmaXJlZCByaWdodCBhd2F5IHdpdGggdGhlIGxhdGVzdCBcIm1lbW9yaXplZFwiXG4gKlx0XHRcdFx0XHR2YWx1ZXMgKGxpa2UgYSBEZWZlcnJlZClcbiAqXG4gKlx0dW5pcXVlOlx0XHRcdHdpbGwgZW5zdXJlIGEgY2FsbGJhY2sgY2FuIG9ubHkgYmUgYWRkZWQgb25jZSAobm8gZHVwbGljYXRlIGluIHRoZSBsaXN0KVxuICpcbiAqXHRzdG9wT25GYWxzZTpcdGludGVycnVwdCBjYWxsaW5ncyB3aGVuIGEgY2FsbGJhY2sgcmV0dXJucyBmYWxzZVxuICpcbiAqL1xualF1ZXJ5LkNhbGxiYWNrcyA9IGZ1bmN0aW9uKCBvcHRpb25zICkge1xuXG5cdC8vIENvbnZlcnQgb3B0aW9ucyBmcm9tIFN0cmluZy1mb3JtYXR0ZWQgdG8gT2JqZWN0LWZvcm1hdHRlZCBpZiBuZWVkZWRcblx0Ly8gKHdlIGNoZWNrIGluIGNhY2hlIGZpcnN0KVxuXHRvcHRpb25zID0gdHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIgP1xuXHRcdGNyZWF0ZU9wdGlvbnMoIG9wdGlvbnMgKSA6XG5cdFx0alF1ZXJ5LmV4dGVuZCgge30sIG9wdGlvbnMgKTtcblxuXHR2YXIgLy8gRmxhZyB0byBrbm93IGlmIGxpc3QgaXMgY3VycmVudGx5IGZpcmluZ1xuXHRcdGZpcmluZyxcblxuXHRcdC8vIExhc3QgZmlyZSB2YWx1ZSBmb3Igbm9uLWZvcmdldHRhYmxlIGxpc3RzXG5cdFx0bWVtb3J5LFxuXG5cdFx0Ly8gRmxhZyB0byBrbm93IGlmIGxpc3Qgd2FzIGFscmVhZHkgZmlyZWRcblx0XHRmaXJlZCxcblxuXHRcdC8vIEZsYWcgdG8gcHJldmVudCBmaXJpbmdcblx0XHRsb2NrZWQsXG5cblx0XHQvLyBBY3R1YWwgY2FsbGJhY2sgbGlzdFxuXHRcdGxpc3QgPSBbXSxcblxuXHRcdC8vIFF1ZXVlIG9mIGV4ZWN1dGlvbiBkYXRhIGZvciByZXBlYXRhYmxlIGxpc3RzXG5cdFx0cXVldWUgPSBbXSxcblxuXHRcdC8vIEluZGV4IG9mIGN1cnJlbnRseSBmaXJpbmcgY2FsbGJhY2sgKG1vZGlmaWVkIGJ5IGFkZC9yZW1vdmUgYXMgbmVlZGVkKVxuXHRcdGZpcmluZ0luZGV4ID0gLTEsXG5cblx0XHQvLyBGaXJlIGNhbGxiYWNrc1xuXHRcdGZpcmUgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0Ly8gRW5mb3JjZSBzaW5nbGUtZmlyaW5nXG5cdFx0XHRsb2NrZWQgPSBsb2NrZWQgfHwgb3B0aW9ucy5vbmNlO1xuXG5cdFx0XHQvLyBFeGVjdXRlIGNhbGxiYWNrcyBmb3IgYWxsIHBlbmRpbmcgZXhlY3V0aW9ucyxcblx0XHRcdC8vIHJlc3BlY3RpbmcgZmlyaW5nSW5kZXggb3ZlcnJpZGVzIGFuZCBydW50aW1lIGNoYW5nZXNcblx0XHRcdGZpcmVkID0gZmlyaW5nID0gdHJ1ZTtcblx0XHRcdGZvciAoIDsgcXVldWUubGVuZ3RoOyBmaXJpbmdJbmRleCA9IC0xICkge1xuXHRcdFx0XHRtZW1vcnkgPSBxdWV1ZS5zaGlmdCgpO1xuXHRcdFx0XHR3aGlsZSAoICsrZmlyaW5nSW5kZXggPCBsaXN0Lmxlbmd0aCApIHtcblxuXHRcdFx0XHRcdC8vIFJ1biBjYWxsYmFjayBhbmQgY2hlY2sgZm9yIGVhcmx5IHRlcm1pbmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBsaXN0WyBmaXJpbmdJbmRleCBdLmFwcGx5KCBtZW1vcnlbIDAgXSwgbWVtb3J5WyAxIF0gKSA9PT0gZmFsc2UgJiZcblx0XHRcdFx0XHRcdG9wdGlvbnMuc3RvcE9uRmFsc2UgKSB7XG5cblx0XHRcdFx0XHRcdC8vIEp1bXAgdG8gZW5kIGFuZCBmb3JnZXQgdGhlIGRhdGEgc28gLmFkZCBkb2Vzbid0IHJlLWZpcmVcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGg7XG5cdFx0XHRcdFx0XHRtZW1vcnkgPSBmYWxzZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gRm9yZ2V0IHRoZSBkYXRhIGlmIHdlJ3JlIGRvbmUgd2l0aCBpdFxuXHRcdFx0aWYgKCAhb3B0aW9ucy5tZW1vcnkgKSB7XG5cdFx0XHRcdG1lbW9yeSA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRmaXJpbmcgPSBmYWxzZTtcblxuXHRcdFx0Ly8gQ2xlYW4gdXAgaWYgd2UncmUgZG9uZSBmaXJpbmcgZm9yIGdvb2Rcblx0XHRcdGlmICggbG9ja2VkICkge1xuXG5cdFx0XHRcdC8vIEtlZXAgYW4gZW1wdHkgbGlzdCBpZiB3ZSBoYXZlIGRhdGEgZm9yIGZ1dHVyZSBhZGQgY2FsbHNcblx0XHRcdFx0aWYgKCBtZW1vcnkgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IFtdO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgdGhpcyBvYmplY3QgaXMgc3BlbnRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsaXN0ID0gXCJcIjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHQvLyBBY3R1YWwgQ2FsbGJhY2tzIG9iamVjdFxuXHRcdHNlbGYgPSB7XG5cblx0XHRcdC8vIEFkZCBhIGNhbGxiYWNrIG9yIGEgY29sbGVjdGlvbiBvZiBjYWxsYmFja3MgdG8gdGhlIGxpc3Rcblx0XHRcdGFkZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblxuXHRcdFx0XHRcdC8vIElmIHdlIGhhdmUgbWVtb3J5IGZyb20gYSBwYXN0IHJ1biwgd2Ugc2hvdWxkIGZpcmUgYWZ0ZXIgYWRkaW5nXG5cdFx0XHRcdFx0aWYgKCBtZW1vcnkgJiYgIWZpcmluZyApIHtcblx0XHRcdFx0XHRcdGZpcmluZ0luZGV4ID0gbGlzdC5sZW5ndGggLSAxO1xuXHRcdFx0XHRcdFx0cXVldWUucHVzaCggbWVtb3J5ICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0KCBmdW5jdGlvbiBhZGQoIGFyZ3MgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggYXJncywgZnVuY3Rpb24oIF8sIGFyZyApIHtcblx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCBhcmcgKSApIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoICFvcHRpb25zLnVuaXF1ZSB8fCAhc2VsZi5oYXMoIGFyZyApICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGlzdC5wdXNoKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIGFyZyAmJiBhcmcubGVuZ3RoICYmIHRvVHlwZSggYXJnICkgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBJbnNwZWN0IHJlY3Vyc2l2ZWx5XG5cdFx0XHRcdFx0XHRcdFx0YWRkKCBhcmcgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdH0gKSggYXJndW1lbnRzICk7XG5cblx0XHRcdFx0XHRpZiAoIG1lbW9yeSAmJiAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIFJlbW92ZSBhIGNhbGxiYWNrIGZyb20gdGhlIGxpc3Rcblx0XHRcdHJlbW92ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGpRdWVyeS5lYWNoKCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBfLCBhcmcgKSB7XG5cdFx0XHRcdFx0dmFyIGluZGV4O1xuXHRcdFx0XHRcdHdoaWxlICggKCBpbmRleCA9IGpRdWVyeS5pbkFycmF5KCBhcmcsIGxpc3QsIGluZGV4ICkgKSA+IC0xICkge1xuXHRcdFx0XHRcdFx0bGlzdC5zcGxpY2UoIGluZGV4LCAxICk7XG5cblx0XHRcdFx0XHRcdC8vIEhhbmRsZSBmaXJpbmcgaW5kZXhlc1xuXHRcdFx0XHRcdFx0aWYgKCBpbmRleCA8PSBmaXJpbmdJbmRleCApIHtcblx0XHRcdFx0XHRcdFx0ZmlyaW5nSW5kZXgtLTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gKTtcblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBDaGVjayBpZiBhIGdpdmVuIGNhbGxiYWNrIGlzIGluIHRoZSBsaXN0LlxuXHRcdFx0Ly8gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHJldHVybiB3aGV0aGVyIG9yIG5vdCBsaXN0IGhhcyBjYWxsYmFja3MgYXR0YWNoZWQuXG5cdFx0XHRoYXM6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0cmV0dXJuIGZuID9cblx0XHRcdFx0XHRqUXVlcnkuaW5BcnJheSggZm4sIGxpc3QgKSA+IC0xIDpcblx0XHRcdFx0XHRsaXN0Lmxlbmd0aCA+IDA7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBSZW1vdmUgYWxsIGNhbGxiYWNrcyBmcm9tIHRoZSBsaXN0XG5cdFx0XHRlbXB0eTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggbGlzdCApIHtcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyBEaXNhYmxlIC5maXJlIGFuZCAuYWRkXG5cdFx0XHQvLyBBYm9ydCBhbnkgY3VycmVudC9wZW5kaW5nIGV4ZWN1dGlvbnNcblx0XHRcdC8vIENsZWFyIGFsbCBjYWxsYmFja3MgYW5kIHZhbHVlc1xuXHRcdFx0ZGlzYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGxvY2tlZCA9IHF1ZXVlID0gW107XG5cdFx0XHRcdGxpc3QgPSBtZW1vcnkgPSBcIlwiO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cdFx0XHRkaXNhYmxlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhbGlzdDtcblx0XHRcdH0sXG5cblx0XHRcdC8vIERpc2FibGUgLmZpcmVcblx0XHRcdC8vIEFsc28gZGlzYWJsZSAuYWRkIHVubGVzcyB3ZSBoYXZlIG1lbW9yeSAoc2luY2UgaXQgd291bGQgaGF2ZSBubyBlZmZlY3QpXG5cdFx0XHQvLyBBYm9ydCBhbnkgcGVuZGluZyBleGVjdXRpb25zXG5cdFx0XHRsb2NrOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0bG9ja2VkID0gcXVldWUgPSBbXTtcblx0XHRcdFx0aWYgKCAhbWVtb3J5ICYmICFmaXJpbmcgKSB7XG5cdFx0XHRcdFx0bGlzdCA9IG1lbW9yeSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9LFxuXHRcdFx0bG9ja2VkOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuICEhbG9ja2VkO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gQ2FsbCBhbGwgY2FsbGJhY2tzIHdpdGggdGhlIGdpdmVuIGNvbnRleHQgYW5kIGFyZ3VtZW50c1xuXHRcdFx0ZmlyZVdpdGg6IGZ1bmN0aW9uKCBjb250ZXh0LCBhcmdzICkge1xuXHRcdFx0XHRpZiAoICFsb2NrZWQgKSB7XG5cdFx0XHRcdFx0YXJncyA9IGFyZ3MgfHwgW107XG5cdFx0XHRcdFx0YXJncyA9IFsgY29udGV4dCwgYXJncy5zbGljZSA/IGFyZ3Muc2xpY2UoKSA6IGFyZ3MgXTtcblx0XHRcdFx0XHRxdWV1ZS5wdXNoKCBhcmdzICk7XG5cdFx0XHRcdFx0aWYgKCAhZmlyaW5nICkge1xuXHRcdFx0XHRcdFx0ZmlyZSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH0sXG5cblx0XHRcdC8vIENhbGwgYWxsIHRoZSBjYWxsYmFja3Mgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzXG5cdFx0XHRmaXJlOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0c2VsZi5maXJlV2l0aCggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fSxcblxuXHRcdFx0Ly8gVG8ga25vdyBpZiB0aGUgY2FsbGJhY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGNhbGxlZCBhdCBsZWFzdCBvbmNlXG5cdFx0XHRmaXJlZDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiAhIWZpcmVkO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0cmV0dXJuIHNlbGY7XG59O1xuXG5cbmZ1bmN0aW9uIElkZW50aXR5KCB2ICkge1xuXHRyZXR1cm4gdjtcbn1cbmZ1bmN0aW9uIFRocm93ZXIoIGV4ICkge1xuXHR0aHJvdyBleDtcbn1cblxuZnVuY3Rpb24gYWRvcHRWYWx1ZSggdmFsdWUsIHJlc29sdmUsIHJlamVjdCwgbm9WYWx1ZSApIHtcblx0dmFyIG1ldGhvZDtcblxuXHR0cnkge1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIHByb21pc2UgYXNwZWN0IGZpcnN0IHRvIHByaXZpbGVnZSBzeW5jaHJvbm91cyBiZWhhdmlvclxuXHRcdGlmICggdmFsdWUgJiYgaXNGdW5jdGlvbiggKCBtZXRob2QgPSB2YWx1ZS5wcm9taXNlICkgKSApIHtcblx0XHRcdG1ldGhvZC5jYWxsKCB2YWx1ZSApLmRvbmUoIHJlc29sdmUgKS5mYWlsKCByZWplY3QgKTtcblxuXHRcdC8vIE90aGVyIHRoZW5hYmxlc1xuXHRcdH0gZWxzZSBpZiAoIHZhbHVlICYmIGlzRnVuY3Rpb24oICggbWV0aG9kID0gdmFsdWUudGhlbiApICkgKSB7XG5cdFx0XHRtZXRob2QuY2FsbCggdmFsdWUsIHJlc29sdmUsIHJlamVjdCApO1xuXG5cdFx0Ly8gT3RoZXIgbm9uLXRoZW5hYmxlc1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIENvbnRyb2wgYHJlc29sdmVgIGFyZ3VtZW50cyBieSBsZXR0aW5nIEFycmF5I3NsaWNlIGNhc3QgYm9vbGVhbiBgbm9WYWx1ZWAgdG8gaW50ZWdlcjpcblx0XHRcdC8vICogZmFsc2U6IFsgdmFsdWUgXS5zbGljZSggMCApID0+IHJlc29sdmUoIHZhbHVlIClcblx0XHRcdC8vICogdHJ1ZTogWyB2YWx1ZSBdLnNsaWNlKCAxICkgPT4gcmVzb2x2ZSgpXG5cdFx0XHRyZXNvbHZlLmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXS5zbGljZSggbm9WYWx1ZSApICk7XG5cdFx0fVxuXG5cdC8vIEZvciBQcm9taXNlcy9BKywgY29udmVydCBleGNlcHRpb25zIGludG8gcmVqZWN0aW9uc1xuXHQvLyBTaW5jZSBqUXVlcnkud2hlbiBkb2Vzbid0IHVud3JhcCB0aGVuYWJsZXMsIHdlIGNhbiBza2lwIHRoZSBleHRyYSBjaGVja3MgYXBwZWFyaW5nIGluXG5cdC8vIERlZmVycmVkI3RoZW4gdG8gY29uZGl0aW9uYWxseSBzdXBwcmVzcyByZWplY3Rpb24uXG5cdH0gY2F0Y2ggKCB2YWx1ZSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIG9ubHlcblx0XHQvLyBTdHJpY3QgbW9kZSBmdW5jdGlvbnMgaW52b2tlZCB3aXRob3V0IC5jYWxsLy5hcHBseSBnZXQgZ2xvYmFsLW9iamVjdCBjb250ZXh0XG5cdFx0cmVqZWN0LmFwcGx5KCB1bmRlZmluZWQsIFsgdmFsdWUgXSApO1xuXHR9XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHREZWZlcnJlZDogZnVuY3Rpb24oIGZ1bmMgKSB7XG5cdFx0dmFyIHR1cGxlcyA9IFtcblxuXHRcdFx0XHQvLyBhY3Rpb24sIGFkZCBsaXN0ZW5lciwgY2FsbGJhY2tzLFxuXHRcdFx0XHQvLyAuLi4gLnRoZW4gaGFuZGxlcnMsIGFyZ3VtZW50IGluZGV4LCBbZmluYWwgc3RhdGVdXG5cdFx0XHRcdFsgXCJub3RpZnlcIiwgXCJwcm9ncmVzc1wiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm1lbW9yeVwiICksXG5cdFx0XHRcdFx0alF1ZXJ5LkNhbGxiYWNrcyggXCJtZW1vcnlcIiApLCAyIF0sXG5cdFx0XHRcdFsgXCJyZXNvbHZlXCIsIFwiZG9uZVwiLCBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSxcblx0XHRcdFx0XHRqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKSwgMCwgXCJyZXNvbHZlZFwiIF0sXG5cdFx0XHRcdFsgXCJyZWplY3RcIiwgXCJmYWlsXCIsIGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXHRcdFx0XHRcdGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLCAxLCBcInJlamVjdGVkXCIgXVxuXHRcdFx0XSxcblx0XHRcdHN0YXRlID0gXCJwZW5kaW5nXCIsXG5cdFx0XHRwcm9taXNlID0ge1xuXHRcdFx0XHRzdGF0ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHN0YXRlO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRhbHdheXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGRlZmVycmVkLmRvbmUoIGFyZ3VtZW50cyApLmZhaWwoIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRcImNhdGNoXCI6IGZ1bmN0aW9uKCBmbiApIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJvbWlzZS50aGVuKCBudWxsLCBmbiApO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIEtlZXAgcGlwZSBmb3IgYmFjay1jb21wYXRcblx0XHRcdFx0cGlwZTogZnVuY3Rpb24oIC8qIGZuRG9uZSwgZm5GYWlsLCBmblByb2dyZXNzICovICkge1xuXHRcdFx0XHRcdHZhciBmbnMgPSBhcmd1bWVudHM7XG5cblx0XHRcdFx0XHRyZXR1cm4galF1ZXJ5LkRlZmVycmVkKCBmdW5jdGlvbiggbmV3RGVmZXIgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZWFjaCggdHVwbGVzLCBmdW5jdGlvbiggaSwgdHVwbGUgKSB7XG5cblx0XHRcdFx0XHRcdFx0Ly8gTWFwIHR1cGxlcyAocHJvZ3Jlc3MsIGRvbmUsIGZhaWwpIHRvIGFyZ3VtZW50cyAoZG9uZSwgZmFpbCwgcHJvZ3Jlc3MpXG5cdFx0XHRcdFx0XHRcdHZhciBmbiA9IGlzRnVuY3Rpb24oIGZuc1sgdHVwbGVbIDQgXSBdICkgJiYgZm5zWyB0dXBsZVsgNCBdIF07XG5cblx0XHRcdFx0XHRcdFx0Ly8gZGVmZXJyZWQucHJvZ3Jlc3MoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIubm90aWZ5IH0pXG5cdFx0XHRcdFx0XHRcdC8vIGRlZmVycmVkLmRvbmUoZnVuY3Rpb24oKSB7IGJpbmQgdG8gbmV3RGVmZXIgb3IgbmV3RGVmZXIucmVzb2x2ZSB9KVxuXHRcdFx0XHRcdFx0XHQvLyBkZWZlcnJlZC5mYWlsKGZ1bmN0aW9uKCkgeyBiaW5kIHRvIG5ld0RlZmVyIG9yIG5ld0RlZmVyLnJlamVjdCB9KVxuXHRcdFx0XHRcdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDEgXSBdKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQgPSBmbiAmJiBmbi5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCByZXR1cm5lZCAmJiBpc0Z1bmN0aW9uKCByZXR1cm5lZC5wcm9taXNlICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC5wcm9taXNlKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0LnByb2dyZXNzKCBuZXdEZWZlci5ub3RpZnkgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuZG9uZSggbmV3RGVmZXIucmVzb2x2ZSApXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5mYWlsKCBuZXdEZWZlci5yZWplY3QgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bmV3RGVmZXJbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmbiA/IFsgcmV0dXJuZWQgXSA6IGFyZ3VtZW50c1xuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdH0gKTtcblx0XHRcdFx0XHRcdGZucyA9IG51bGw7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhlbjogZnVuY3Rpb24oIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBvblByb2dyZXNzICkge1xuXHRcdFx0XHRcdHZhciBtYXhEZXB0aCA9IDA7XG5cdFx0XHRcdFx0ZnVuY3Rpb24gcmVzb2x2ZSggZGVwdGgsIGRlZmVycmVkLCBoYW5kbGVyLCBzcGVjaWFsICkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0XHR2YXIgdGhhdCA9IHRoaXMsXG5cdFx0XHRcdFx0XHRcdFx0YXJncyA9IGFyZ3VtZW50cyxcblx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93ID0gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmV0dXJuZWQsIHRoZW47XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjMuMy4zXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01OVxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gSWdub3JlIGRvdWJsZS1yZXNvbHV0aW9uIGF0dGVtcHRzXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoIDwgbWF4RGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQgPSBoYW5kbGVyLmFwcGx5KCB0aGF0LCBhcmdzICk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjFcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vI3BvaW50LTQ4XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHJldHVybmVkID09PSBkZWZlcnJlZC5wcm9taXNlKCkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoIFwiVGhlbmFibGUgc2VsZi1yZXNvbHV0aW9uXCIgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogUHJvbWlzZXMvQSsgc2VjdGlvbnMgMi4zLjMuMSwgMy41XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01NFxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNzVcblx0XHRcdFx0XHRcdFx0XHRcdC8vIFJldHJpZXZlIGB0aGVuYCBvbmx5IG9uY2Vcblx0XHRcdFx0XHRcdFx0XHRcdHRoZW4gPSByZXR1cm5lZCAmJlxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIFN1cHBvcnQ6IFByb21pc2VzL0ErIHNlY3Rpb24gMi4zLjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBjaGVjayBvYmplY3RzIGFuZCBmdW5jdGlvbnMgZm9yIHRoZW5hYmlsaXR5XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCggdHlwZW9mIHJldHVybmVkID09PSBcIm9iamVjdFwiIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dHlwZW9mIHJldHVybmVkID09PSBcImZ1bmN0aW9uXCIgKSAmJlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5lZC50aGVuO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBIYW5kbGUgYSByZXR1cm5lZCB0aGVuYWJsZVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCB0aGVuICkgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3BlY2lhbCBwcm9jZXNzb3JzIChub3RpZnkpIGp1c3Qgd2FpdCBmb3IgcmVzb2x1dGlvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIHNwZWNpYWwgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhlbi5jYWxsKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuZWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIFRocm93ZXIsIHNwZWNpYWwgKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTm9ybWFsIHByb2Nlc3NvcnMgKHJlc29sdmUpIGFsc28gaG9vayBpbnRvIHByb2dyZXNzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyAuLi5hbmQgZGlzcmVnYXJkIG9sZGVyIHJlc29sdXRpb24gdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWF4RGVwdGgrKztcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoZW4uY2FsbChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybmVkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBJZGVudGl0eSwgc3BlY2lhbCApLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSggbWF4RGVwdGgsIGRlZmVycmVkLCBUaHJvd2VyLCBzcGVjaWFsICksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXNvbHZlKCBtYXhEZXB0aCwgZGVmZXJyZWQsIElkZW50aXR5LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoIClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdC8vIEhhbmRsZSBhbGwgb3RoZXIgcmV0dXJuZWQgdmFsdWVzXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIE9ubHkgc3Vic3RpdHV0ZSBoYW5kbGVycyBwYXNzIG9uIGNvbnRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggaGFuZGxlciAhPT0gSWRlbnRpdHkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhhdCA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhcmdzID0gWyByZXR1cm5lZCBdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gUHJvY2VzcyB0aGUgdmFsdWUocylcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRGVmYXVsdCBwcm9jZXNzIGlzIHJlc29sdmVcblx0XHRcdFx0XHRcdFx0XHRcdFx0KCBzcGVjaWFsIHx8IGRlZmVycmVkLnJlc29sdmVXaXRoICkoIHRoYXQsIGFyZ3MgKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBub3JtYWwgcHJvY2Vzc29ycyAocmVzb2x2ZSkgY2F0Y2ggYW5kIHJlamVjdCBleGNlcHRpb25zXG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcyA9IHNwZWNpYWwgP1xuXHRcdFx0XHRcdFx0XHRcdFx0bWlnaHRUaHJvdyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtaWdodFRocm93KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gY2F0Y2ggKCBlICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rKCBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9jZXNzLnN0YWNrVHJhY2UgKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuNC4xXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8jcG9pbnQtNjFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBJZ25vcmUgcG9zdC1yZXNvbHV0aW9uIGV4Y2VwdGlvbnNcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGRlcHRoICsgMSA+PSBtYXhEZXB0aCApIHtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gT25seSBzdWJzdGl0dXRlIGhhbmRsZXJzIHBhc3Mgb24gY29udGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYW5kIG11bHRpcGxlIHZhbHVlcyAobm9uLXNwZWMgYmVoYXZpb3IpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIGhhbmRsZXIgIT09IFRocm93ZXIgKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoYXQgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGFyZ3MgPSBbIGUgXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVmZXJyZWQucmVqZWN0V2l0aCggdGhhdCwgYXJncyApO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBQcm9taXNlcy9BKyBzZWN0aW9uIDIuMy4zLjMuMVxuXHRcdFx0XHRcdFx0XHQvLyBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLyNwb2ludC01N1xuXHRcdFx0XHRcdFx0XHQvLyBSZS1yZXNvbHZlIHByb21pc2VzIGltbWVkaWF0ZWx5IHRvIGRvZGdlIGZhbHNlIHJlamVjdGlvbiBmcm9tXG5cdFx0XHRcdFx0XHRcdC8vIHN1YnNlcXVlbnQgZXJyb3JzXG5cdFx0XHRcdFx0XHRcdGlmICggZGVwdGggKSB7XG5cdFx0XHRcdFx0XHRcdFx0cHJvY2VzcygpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gQ2FsbCBhbiBvcHRpb25hbCBob29rIHRvIHJlY29yZCB0aGUgc3RhY2ssIGluIGNhc2Ugb2YgZXhjZXB0aW9uXG5cdFx0XHRcdFx0XHRcdFx0Ly8gc2luY2UgaXQncyBvdGhlcndpc2UgbG9zdCB3aGVuIGV4ZWN1dGlvbiBnb2VzIGFzeW5jXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBqUXVlcnkuRGVmZXJyZWQuZ2V0U3RhY2tIb29rICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cHJvY2Vzcy5zdGFja1RyYWNlID0galF1ZXJ5LkRlZmVycmVkLmdldFN0YWNrSG9vaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dCggcHJvY2VzcyApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBqUXVlcnkuRGVmZXJyZWQoIGZ1bmN0aW9uKCBuZXdEZWZlciApIHtcblxuXHRcdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblByb2dyZXNzICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25Qcm9ncmVzcyA6XG5cdFx0XHRcdFx0XHRcdFx0XHRJZGVudGl0eSxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlci5ub3RpZnlXaXRoXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5hZGQoIC4uLiApXG5cdFx0XHRcdFx0XHR0dXBsZXNbIDEgXVsgMyBdLmFkZChcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShcblx0XHRcdFx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdFx0XHRcdG5ld0RlZmVyLFxuXHRcdFx0XHRcdFx0XHRcdGlzRnVuY3Rpb24oIG9uRnVsZmlsbGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25GdWxmaWxsZWQgOlxuXHRcdFx0XHRcdFx0XHRcdFx0SWRlbnRpdHlcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuYWRkKCAuLi4gKVxuXHRcdFx0XHRcdFx0dHVwbGVzWyAyIF1bIDMgXS5hZGQoXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoXG5cdFx0XHRcdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRcdFx0XHRuZXdEZWZlcixcblx0XHRcdFx0XHRcdFx0XHRpc0Z1bmN0aW9uKCBvblJlamVjdGVkICkgP1xuXHRcdFx0XHRcdFx0XHRcdFx0b25SZWplY3RlZCA6XG5cdFx0XHRcdFx0XHRcdFx0XHRUaHJvd2VyXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSApLnByb21pc2UoKTtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBHZXQgYSBwcm9taXNlIGZvciB0aGlzIGRlZmVycmVkXG5cdFx0XHRcdC8vIElmIG9iaiBpcyBwcm92aWRlZCwgdGhlIHByb21pc2UgYXNwZWN0IGlzIGFkZGVkIHRvIHRoZSBvYmplY3Rcblx0XHRcdFx0cHJvbWlzZTogZnVuY3Rpb24oIG9iaiApIHtcblx0XHRcdFx0XHRyZXR1cm4gb2JqICE9IG51bGwgPyBqUXVlcnkuZXh0ZW5kKCBvYmosIHByb21pc2UgKSA6IHByb21pc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWZlcnJlZCA9IHt9O1xuXG5cdFx0Ly8gQWRkIGxpc3Qtc3BlY2lmaWMgbWV0aG9kc1xuXHRcdGpRdWVyeS5lYWNoKCB0dXBsZXMsIGZ1bmN0aW9uKCBpLCB0dXBsZSApIHtcblx0XHRcdHZhciBsaXN0ID0gdHVwbGVbIDIgXSxcblx0XHRcdFx0c3RhdGVTdHJpbmcgPSB0dXBsZVsgNSBdO1xuXG5cdFx0XHQvLyBwcm9taXNlLnByb2dyZXNzID0gbGlzdC5hZGRcblx0XHRcdC8vIHByb21pc2UuZG9uZSA9IGxpc3QuYWRkXG5cdFx0XHQvLyBwcm9taXNlLmZhaWwgPSBsaXN0LmFkZFxuXHRcdFx0cHJvbWlzZVsgdHVwbGVbIDEgXSBdID0gbGlzdC5hZGQ7XG5cblx0XHRcdC8vIEhhbmRsZSBzdGF0ZVxuXHRcdFx0aWYgKCBzdGF0ZVN0cmluZyApIHtcblx0XHRcdFx0bGlzdC5hZGQoXG5cdFx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cblx0XHRcdFx0XHRcdC8vIHN0YXRlID0gXCJyZXNvbHZlZFwiIChpLmUuLCBmdWxmaWxsZWQpXG5cdFx0XHRcdFx0XHQvLyBzdGF0ZSA9IFwicmVqZWN0ZWRcIlxuXHRcdFx0XHRcdFx0c3RhdGUgPSBzdGF0ZVN0cmluZztcblx0XHRcdFx0XHR9LFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHQvLyBmdWxmaWxsZWRfY2FsbGJhY2tzLmRpc2FibGVcblx0XHRcdFx0XHR0dXBsZXNbIDMgLSBpIF1bIDIgXS5kaXNhYmxlLFxuXG5cdFx0XHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZGlzYWJsZVxuXHRcdFx0XHRcdC8vIGZ1bGZpbGxlZF9oYW5kbGVycy5kaXNhYmxlXG5cdFx0XHRcdFx0dHVwbGVzWyAzIC0gaSBdWyAzIF0uZGlzYWJsZSxcblxuXHRcdFx0XHRcdC8vIHByb2dyZXNzX2NhbGxiYWNrcy5sb2NrXG5cdFx0XHRcdFx0dHVwbGVzWyAwIF1bIDIgXS5sb2NrLFxuXG5cdFx0XHRcdFx0Ly8gcHJvZ3Jlc3NfaGFuZGxlcnMubG9ja1xuXHRcdFx0XHRcdHR1cGxlc1sgMCBdWyAzIF0ubG9ja1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBwcm9ncmVzc19oYW5kbGVycy5maXJlXG5cdFx0XHQvLyBmdWxmaWxsZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0Ly8gcmVqZWN0ZWRfaGFuZGxlcnMuZmlyZVxuXHRcdFx0bGlzdC5hZGQoIHR1cGxlWyAzIF0uZmlyZSApO1xuXG5cdFx0XHQvLyBkZWZlcnJlZC5ub3RpZnkgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQubm90aWZ5V2l0aCguLi4pIH1cblx0XHRcdC8vIGRlZmVycmVkLnJlc29sdmUgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVzb2x2ZVdpdGgoLi4uKSB9XG5cdFx0XHQvLyBkZWZlcnJlZC5yZWplY3QgPSBmdW5jdGlvbigpIHsgZGVmZXJyZWQucmVqZWN0V2l0aCguLi4pIH1cblx0XHRcdGRlZmVycmVkWyB0dXBsZVsgMCBdIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0ZGVmZXJyZWRbIHR1cGxlWyAwIF0gKyBcIldpdGhcIiBdKCB0aGlzID09PSBkZWZlcnJlZCA/IHVuZGVmaW5lZCA6IHRoaXMsIGFyZ3VtZW50cyApO1xuXHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdH07XG5cblx0XHRcdC8vIGRlZmVycmVkLm5vdGlmeVdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHQvLyBkZWZlcnJlZC5yZXNvbHZlV2l0aCA9IGxpc3QuZmlyZVdpdGhcblx0XHRcdC8vIGRlZmVycmVkLnJlamVjdFdpdGggPSBsaXN0LmZpcmVXaXRoXG5cdFx0XHRkZWZlcnJlZFsgdHVwbGVbIDAgXSArIFwiV2l0aFwiIF0gPSBsaXN0LmZpcmVXaXRoO1xuXHRcdH0gKTtcblxuXHRcdC8vIE1ha2UgdGhlIGRlZmVycmVkIGEgcHJvbWlzZVxuXHRcdHByb21pc2UucHJvbWlzZSggZGVmZXJyZWQgKTtcblxuXHRcdC8vIENhbGwgZ2l2ZW4gZnVuYyBpZiBhbnlcblx0XHRpZiAoIGZ1bmMgKSB7XG5cdFx0XHRmdW5jLmNhbGwoIGRlZmVycmVkLCBkZWZlcnJlZCApO1xuXHRcdH1cblxuXHRcdC8vIEFsbCBkb25lIVxuXHRcdHJldHVybiBkZWZlcnJlZDtcblx0fSxcblxuXHQvLyBEZWZlcnJlZCBoZWxwZXJcblx0d2hlbjogZnVuY3Rpb24oIHNpbmdsZVZhbHVlICkge1xuXHRcdHZhclxuXG5cdFx0XHQvLyBjb3VudCBvZiB1bmNvbXBsZXRlZCBzdWJvcmRpbmF0ZXNcblx0XHRcdHJlbWFpbmluZyA9IGFyZ3VtZW50cy5sZW5ndGgsXG5cblx0XHRcdC8vIGNvdW50IG9mIHVucHJvY2Vzc2VkIGFyZ3VtZW50c1xuXHRcdFx0aSA9IHJlbWFpbmluZyxcblxuXHRcdFx0Ly8gc3Vib3JkaW5hdGUgZnVsZmlsbG1lbnQgZGF0YVxuXHRcdFx0cmVzb2x2ZUNvbnRleHRzID0gQXJyYXkoIGkgKSxcblx0XHRcdHJlc29sdmVWYWx1ZXMgPSBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSxcblxuXHRcdFx0Ly8gdGhlIG1hc3RlciBEZWZlcnJlZFxuXHRcdFx0bWFzdGVyID0galF1ZXJ5LkRlZmVycmVkKCksXG5cblx0XHRcdC8vIHN1Ym9yZGluYXRlIGNhbGxiYWNrIGZhY3Rvcnlcblx0XHRcdHVwZGF0ZUZ1bmMgPSBmdW5jdGlvbiggaSApIHtcblx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdFx0XHRyZXNvbHZlQ29udGV4dHNbIGkgXSA9IHRoaXM7XG5cdFx0XHRcdFx0cmVzb2x2ZVZhbHVlc1sgaSBdID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSA6IHZhbHVlO1xuXHRcdFx0XHRcdGlmICggISggLS1yZW1haW5pbmcgKSApIHtcblx0XHRcdFx0XHRcdG1hc3Rlci5yZXNvbHZlV2l0aCggcmVzb2x2ZUNvbnRleHRzLCByZXNvbHZlVmFsdWVzICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9O1xuXHRcdFx0fTtcblxuXHRcdC8vIFNpbmdsZS0gYW5kIGVtcHR5IGFyZ3VtZW50cyBhcmUgYWRvcHRlZCBsaWtlIFByb21pc2UucmVzb2x2ZVxuXHRcdGlmICggcmVtYWluaW5nIDw9IDEgKSB7XG5cdFx0XHRhZG9wdFZhbHVlKCBzaW5nbGVWYWx1ZSwgbWFzdGVyLmRvbmUoIHVwZGF0ZUZ1bmMoIGkgKSApLnJlc29sdmUsIG1hc3Rlci5yZWplY3QsXG5cdFx0XHRcdCFyZW1haW5pbmcgKTtcblxuXHRcdFx0Ly8gVXNlIC50aGVuKCkgdG8gdW53cmFwIHNlY29uZGFyeSB0aGVuYWJsZXMgKGNmLiBnaC0zMDAwKVxuXHRcdFx0aWYgKCBtYXN0ZXIuc3RhdGUoKSA9PT0gXCJwZW5kaW5nXCIgfHxcblx0XHRcdFx0aXNGdW5jdGlvbiggcmVzb2x2ZVZhbHVlc1sgaSBdICYmIHJlc29sdmVWYWx1ZXNbIGkgXS50aGVuICkgKSB7XG5cblx0XHRcdFx0cmV0dXJuIG1hc3Rlci50aGVuKCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gTXVsdGlwbGUgYXJndW1lbnRzIGFyZSBhZ2dyZWdhdGVkIGxpa2UgUHJvbWlzZS5hbGwgYXJyYXkgZWxlbWVudHNcblx0XHR3aGlsZSAoIGktLSApIHtcblx0XHRcdGFkb3B0VmFsdWUoIHJlc29sdmVWYWx1ZXNbIGkgXSwgdXBkYXRlRnVuYyggaSApLCBtYXN0ZXIucmVqZWN0ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1hc3Rlci5wcm9taXNlKCk7XG5cdH1cbn0gKTtcblxuXG4vLyBUaGVzZSB1c3VhbGx5IGluZGljYXRlIGEgcHJvZ3JhbW1lciBtaXN0YWtlIGR1cmluZyBkZXZlbG9wbWVudCxcbi8vIHdhcm4gYWJvdXQgdGhlbSBBU0FQIHJhdGhlciB0aGFuIHN3YWxsb3dpbmcgdGhlbSBieSBkZWZhdWx0LlxudmFyIHJlcnJvck5hbWVzID0gL14oRXZhbHxJbnRlcm5hbHxSYW5nZXxSZWZlcmVuY2V8U3ludGF4fFR5cGV8VVJJKUVycm9yJC87XG5cbmpRdWVyeS5EZWZlcnJlZC5leGNlcHRpb25Ib29rID0gZnVuY3Rpb24oIGVycm9yLCBzdGFjayApIHtcblxuXHQvLyBTdXBwb3J0OiBJRSA4IC0gOSBvbmx5XG5cdC8vIENvbnNvbGUgZXhpc3RzIHdoZW4gZGV2IHRvb2xzIGFyZSBvcGVuLCB3aGljaCBjYW4gaGFwcGVuIGF0IGFueSB0aW1lXG5cdGlmICggd2luZG93LmNvbnNvbGUgJiYgd2luZG93LmNvbnNvbGUud2FybiAmJiBlcnJvciAmJiByZXJyb3JOYW1lcy50ZXN0KCBlcnJvci5uYW1lICkgKSB7XG5cdFx0d2luZG93LmNvbnNvbGUud2FybiggXCJqUXVlcnkuRGVmZXJyZWQgZXhjZXB0aW9uOiBcIiArIGVycm9yLm1lc3NhZ2UsIGVycm9yLnN0YWNrLCBzdGFjayApO1xuXHR9XG59O1xuXG5cblxuXG5qUXVlcnkucmVhZHlFeGNlcHRpb24gPSBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHR0aHJvdyBlcnJvcjtcblx0fSApO1xufTtcblxuXG5cblxuLy8gVGhlIGRlZmVycmVkIHVzZWQgb24gRE9NIHJlYWR5XG52YXIgcmVhZHlMaXN0ID0galF1ZXJ5LkRlZmVycmVkKCk7XG5cbmpRdWVyeS5mbi5yZWFkeSA9IGZ1bmN0aW9uKCBmbiApIHtcblxuXHRyZWFkeUxpc3Rcblx0XHQudGhlbiggZm4gKVxuXG5cdFx0Ly8gV3JhcCBqUXVlcnkucmVhZHlFeGNlcHRpb24gaW4gYSBmdW5jdGlvbiBzbyB0aGF0IHRoZSBsb29rdXBcblx0XHQvLyBoYXBwZW5zIGF0IHRoZSB0aW1lIG9mIGVycm9yIGhhbmRsaW5nIGluc3RlYWQgb2YgY2FsbGJhY2tcblx0XHQvLyByZWdpc3RyYXRpb24uXG5cdFx0LmNhdGNoKCBmdW5jdGlvbiggZXJyb3IgKSB7XG5cdFx0XHRqUXVlcnkucmVhZHlFeGNlcHRpb24oIGVycm9yICk7XG5cdFx0fSApO1xuXG5cdHJldHVybiB0aGlzO1xufTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIElzIHRoZSBET00gcmVhZHkgdG8gYmUgdXNlZD8gU2V0IHRvIHRydWUgb25jZSBpdCBvY2N1cnMuXG5cdGlzUmVhZHk6IGZhbHNlLFxuXG5cdC8vIEEgY291bnRlciB0byB0cmFjayBob3cgbWFueSBpdGVtcyB0byB3YWl0IGZvciBiZWZvcmVcblx0Ly8gdGhlIHJlYWR5IGV2ZW50IGZpcmVzLiBTZWUgIzY3ODFcblx0cmVhZHlXYWl0OiAxLFxuXG5cdC8vIEhhbmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHlcblx0cmVhZHk6IGZ1bmN0aW9uKCB3YWl0ICkge1xuXG5cdFx0Ly8gQWJvcnQgaWYgdGhlcmUgYXJlIHBlbmRpbmcgaG9sZHMgb3Igd2UncmUgYWxyZWFkeSByZWFkeVxuXHRcdGlmICggd2FpdCA9PT0gdHJ1ZSA/IC0talF1ZXJ5LnJlYWR5V2FpdCA6IGpRdWVyeS5pc1JlYWR5ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIFJlbWVtYmVyIHRoYXQgdGhlIERPTSBpcyByZWFkeVxuXHRcdGpRdWVyeS5pc1JlYWR5ID0gdHJ1ZTtcblxuXHRcdC8vIElmIGEgbm9ybWFsIERPTSBSZWFkeSBldmVudCBmaXJlZCwgZGVjcmVtZW50LCBhbmQgd2FpdCBpZiBuZWVkIGJlXG5cdFx0aWYgKCB3YWl0ICE9PSB0cnVlICYmIC0talF1ZXJ5LnJlYWR5V2FpdCA+IDAgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZVxuXHRcdHJlYWR5TGlzdC5yZXNvbHZlV2l0aCggZG9jdW1lbnQsIFsgalF1ZXJ5IF0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkucmVhZHkudGhlbiA9IHJlYWR5TGlzdC50aGVuO1xuXG4vLyBUaGUgcmVhZHkgZXZlbnQgaGFuZGxlciBhbmQgc2VsZiBjbGVhbnVwIG1ldGhvZFxuZnVuY3Rpb24gY29tcGxldGVkKCkge1xuXHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkICk7XG5cdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCBcImxvYWRcIiwgY29tcGxldGVkICk7XG5cdGpRdWVyeS5yZWFkeSgpO1xufVxuXG4vLyBDYXRjaCBjYXNlcyB3aGVyZSAkKGRvY3VtZW50KS5yZWFkeSgpIGlzIGNhbGxlZFxuLy8gYWZ0ZXIgdGhlIGJyb3dzZXIgZXZlbnQgaGFzIGFscmVhZHkgb2NjdXJyZWQuXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMCBvbmx5XG4vLyBPbGRlciBJRSBzb21ldGltZXMgc2lnbmFscyBcImludGVyYWN0aXZlXCIgdG9vIHNvb25cbmlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiIHx8XG5cdCggZG9jdW1lbnQucmVhZHlTdGF0ZSAhPT0gXCJsb2FkaW5nXCIgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCApICkge1xuXG5cdC8vIEhhbmRsZSBpdCBhc3luY2hyb25vdXNseSB0byBhbGxvdyBzY3JpcHRzIHRoZSBvcHBvcnR1bml0eSB0byBkZWxheSByZWFkeVxuXHR3aW5kb3cuc2V0VGltZW91dCggalF1ZXJ5LnJlYWR5ICk7XG5cbn0gZWxzZSB7XG5cblx0Ly8gVXNlIHRoZSBoYW5keSBldmVudCBjYWxsYmFja1xuXHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCBcIkRPTUNvbnRlbnRMb2FkZWRcIiwgY29tcGxldGVkICk7XG5cblx0Ly8gQSBmYWxsYmFjayB0byB3aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmtcblx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIFwibG9hZFwiLCBjb21wbGV0ZWQgKTtcbn1cblxuXG5cblxuLy8gTXVsdGlmdW5jdGlvbmFsIG1ldGhvZCB0byBnZXQgYW5kIHNldCB2YWx1ZXMgb2YgYSBjb2xsZWN0aW9uXG4vLyBUaGUgdmFsdWUvcyBjYW4gb3B0aW9uYWxseSBiZSBleGVjdXRlZCBpZiBpdCdzIGEgZnVuY3Rpb25cbnZhciBhY2Nlc3MgPSBmdW5jdGlvbiggZWxlbXMsIGZuLCBrZXksIHZhbHVlLCBjaGFpbmFibGUsIGVtcHR5R2V0LCByYXcgKSB7XG5cdHZhciBpID0gMCxcblx0XHRsZW4gPSBlbGVtcy5sZW5ndGgsXG5cdFx0YnVsayA9IGtleSA9PSBudWxsO1xuXG5cdC8vIFNldHMgbWFueSB2YWx1ZXNcblx0aWYgKCB0b1R5cGUoIGtleSApID09PSBcIm9iamVjdFwiICkge1xuXHRcdGNoYWluYWJsZSA9IHRydWU7XG5cdFx0Zm9yICggaSBpbiBrZXkgKSB7XG5cdFx0XHRhY2Nlc3MoIGVsZW1zLCBmbiwgaSwga2V5WyBpIF0sIHRydWUsIGVtcHR5R2V0LCByYXcgKTtcblx0XHR9XG5cblx0Ly8gU2V0cyBvbmUgdmFsdWVcblx0fSBlbHNlIGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRjaGFpbmFibGUgPSB0cnVlO1xuXG5cdFx0aWYgKCAhaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJhdyA9IHRydWU7XG5cdFx0fVxuXG5cdFx0aWYgKCBidWxrICkge1xuXG5cdFx0XHQvLyBCdWxrIG9wZXJhdGlvbnMgcnVuIGFnYWluc3QgdGhlIGVudGlyZSBzZXRcblx0XHRcdGlmICggcmF3ICkge1xuXHRcdFx0XHRmbi5jYWxsKCBlbGVtcywgdmFsdWUgKTtcblx0XHRcdFx0Zm4gPSBudWxsO1xuXG5cdFx0XHQvLyAuLi5leGNlcHQgd2hlbiBleGVjdXRpbmcgZnVuY3Rpb24gdmFsdWVzXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRidWxrID0gZm47XG5cdFx0XHRcdGZuID0gZnVuY3Rpb24oIGVsZW0sIGtleSwgdmFsdWUgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGJ1bGsuY2FsbCggalF1ZXJ5KCBlbGVtICksIHZhbHVlICk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblx0XHRcdGZvciAoIDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHRmbihcblx0XHRcdFx0XHRlbGVtc1sgaSBdLCBrZXksIHJhdyA/XG5cdFx0XHRcdFx0dmFsdWUgOlxuXHRcdFx0XHRcdHZhbHVlLmNhbGwoIGVsZW1zWyBpIF0sIGksIGZuKCBlbGVtc1sgaSBdLCBrZXkgKSApXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBjaGFpbmFibGUgKSB7XG5cdFx0cmV0dXJuIGVsZW1zO1xuXHR9XG5cblx0Ly8gR2V0c1xuXHRpZiAoIGJ1bGsgKSB7XG5cdFx0cmV0dXJuIGZuLmNhbGwoIGVsZW1zICk7XG5cdH1cblxuXHRyZXR1cm4gbGVuID8gZm4oIGVsZW1zWyAwIF0sIGtleSApIDogZW1wdHlHZXQ7XG59O1xuXG5cbi8vIE1hdGNoZXMgZGFzaGVkIHN0cmluZyBmb3IgY2FtZWxpemluZ1xudmFyIHJtc1ByZWZpeCA9IC9eLW1zLS8sXG5cdHJkYXNoQWxwaGEgPSAvLShbYS16XSkvZztcblxuLy8gVXNlZCBieSBjYW1lbENhc2UgYXMgY2FsbGJhY2sgdG8gcmVwbGFjZSgpXG5mdW5jdGlvbiBmY2FtZWxDYXNlKCBhbGwsIGxldHRlciApIHtcblx0cmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xufVxuXG4vLyBDb252ZXJ0IGRhc2hlZCB0byBjYW1lbENhc2U7IHVzZWQgYnkgdGhlIGNzcyBhbmQgZGF0YSBtb2R1bGVzXG4vLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSwgRWRnZSAxMiAtIDE1XG4vLyBNaWNyb3NvZnQgZm9yZ290IHRvIGh1bXAgdGhlaXIgdmVuZG9yIHByZWZpeCAoIzk1NzIpXG5mdW5jdGlvbiBjYW1lbENhc2UoIHN0cmluZyApIHtcblx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKCBybXNQcmVmaXgsIFwibXMtXCIgKS5yZXBsYWNlKCByZGFzaEFscGhhLCBmY2FtZWxDYXNlICk7XG59XG52YXIgYWNjZXB0RGF0YSA9IGZ1bmN0aW9uKCBvd25lciApIHtcblxuXHQvLyBBY2NlcHRzIG9ubHk6XG5cdC8vICAtIE5vZGVcblx0Ly8gICAgLSBOb2RlLkVMRU1FTlRfTk9ERVxuXHQvLyAgICAtIE5vZGUuRE9DVU1FTlRfTk9ERVxuXHQvLyAgLSBPYmplY3Rcblx0Ly8gICAgLSBBbnlcblx0cmV0dXJuIG93bmVyLm5vZGVUeXBlID09PSAxIHx8IG93bmVyLm5vZGVUeXBlID09PSA5IHx8ICEoICtvd25lci5ub2RlVHlwZSApO1xufTtcblxuXG5cblxuZnVuY3Rpb24gRGF0YSgpIHtcblx0dGhpcy5leHBhbmRvID0galF1ZXJ5LmV4cGFuZG8gKyBEYXRhLnVpZCsrO1xufVxuXG5EYXRhLnVpZCA9IDE7XG5cbkRhdGEucHJvdG90eXBlID0ge1xuXG5cdGNhY2hlOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cblx0XHQvLyBDaGVjayBpZiB0aGUgb3duZXIgb2JqZWN0IGFscmVhZHkgaGFzIGEgY2FjaGVcblx0XHR2YXIgdmFsdWUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHQvLyBJZiBub3QsIGNyZWF0ZSBvbmVcblx0XHRpZiAoICF2YWx1ZSApIHtcblx0XHRcdHZhbHVlID0ge307XG5cblx0XHRcdC8vIFdlIGNhbiBhY2NlcHQgZGF0YSBmb3Igbm9uLWVsZW1lbnQgbm9kZXMgaW4gbW9kZXJuIGJyb3dzZXJzLFxuXHRcdFx0Ly8gYnV0IHdlIHNob3VsZCBub3QsIHNlZSAjODMzNS5cblx0XHRcdC8vIEFsd2F5cyByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LlxuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBvd25lciApICkge1xuXG5cdFx0XHRcdC8vIElmIGl0IGlzIGEgbm9kZSB1bmxpa2VseSB0byBiZSBzdHJpbmdpZnktZWQgb3IgbG9vcGVkIG92ZXJcblx0XHRcdFx0Ly8gdXNlIHBsYWluIGFzc2lnbm1lbnRcblx0XHRcdFx0aWYgKCBvd25lci5ub2RlVHlwZSApIHtcblx0XHRcdFx0XHRvd25lclsgdGhpcy5leHBhbmRvIF0gPSB2YWx1ZTtcblxuXHRcdFx0XHQvLyBPdGhlcndpc2Ugc2VjdXJlIGl0IGluIGEgbm9uLWVudW1lcmFibGUgcHJvcGVydHlcblx0XHRcdFx0Ly8gY29uZmlndXJhYmxlIG11c3QgYmUgdHJ1ZSB0byBhbGxvdyB0aGUgcHJvcGVydHkgdG8gYmVcblx0XHRcdFx0Ly8gZGVsZXRlZCB3aGVuIGRhdGEgaXMgcmVtb3ZlZFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggb3duZXIsIHRoaXMuZXhwYW5kbywge1xuXHRcdFx0XHRcdFx0dmFsdWU6IHZhbHVlLFxuXHRcdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlXG5cdFx0XHRcdFx0fSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9LFxuXHRzZXQ6IGZ1bmN0aW9uKCBvd25lciwgZGF0YSwgdmFsdWUgKSB7XG5cdFx0dmFyIHByb3AsXG5cdFx0XHRjYWNoZSA9IHRoaXMuY2FjaGUoIG93bmVyICk7XG5cblx0XHQvLyBIYW5kbGU6IFsgb3duZXIsIGtleSwgdmFsdWUgXSBhcmdzXG5cdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdGlmICggdHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBkYXRhICkgXSA9IHZhbHVlO1xuXG5cdFx0Ly8gSGFuZGxlOiBbIG93bmVyLCB7IHByb3BlcnRpZXMgfSBdIGFyZ3Ncblx0XHR9IGVsc2Uge1xuXG5cdFx0XHQvLyBDb3B5IHRoZSBwcm9wZXJ0aWVzIG9uZS1ieS1vbmUgdG8gdGhlIGNhY2hlIG9iamVjdFxuXHRcdFx0Zm9yICggcHJvcCBpbiBkYXRhICkge1xuXHRcdFx0XHRjYWNoZVsgY2FtZWxDYXNlKCBwcm9wICkgXSA9IGRhdGFbIHByb3AgXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNhY2hlO1xuXHR9LFxuXHRnZXQ6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHJldHVybiBrZXkgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHR0aGlzLmNhY2hlKCBvd25lciApIDpcblxuXHRcdFx0Ly8gQWx3YXlzIHVzZSBjYW1lbENhc2Uga2V5IChnaC0yMjU3KVxuXHRcdFx0b3duZXJbIHRoaXMuZXhwYW5kbyBdICYmIG93bmVyWyB0aGlzLmV4cGFuZG8gXVsgY2FtZWxDYXNlKCBrZXkgKSBdO1xuXHR9LFxuXHRhY2Nlc3M6IGZ1bmN0aW9uKCBvd25lciwga2V5LCB2YWx1ZSApIHtcblxuXHRcdC8vIEluIGNhc2VzIHdoZXJlIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gTm8ga2V5IHdhcyBzcGVjaWZpZWRcblx0XHQvLyAgIDIuIEEgc3RyaW5nIGtleSB3YXMgc3BlY2lmaWVkLCBidXQgbm8gdmFsdWUgcHJvdmlkZWRcblx0XHQvL1xuXHRcdC8vIFRha2UgdGhlIFwicmVhZFwiIHBhdGggYW5kIGFsbG93IHRoZSBnZXQgbWV0aG9kIHRvIGRldGVybWluZVxuXHRcdC8vIHdoaWNoIHZhbHVlIHRvIHJldHVybiwgcmVzcGVjdGl2ZWx5IGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gVGhlIGVudGlyZSBjYWNoZSBvYmplY3Rcblx0XHQvLyAgIDIuIFRoZSBkYXRhIHN0b3JlZCBhdCB0aGUga2V5XG5cdFx0Ly9cblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdCggKCBrZXkgJiYgdHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIiApICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSApIHtcblxuXHRcdFx0cmV0dXJuIHRoaXMuZ2V0KCBvd25lciwga2V5ICk7XG5cdFx0fVxuXG5cdFx0Ly8gV2hlbiB0aGUga2V5IGlzIG5vdCBhIHN0cmluZywgb3IgYm90aCBhIGtleSBhbmQgdmFsdWVcblx0XHQvLyBhcmUgc3BlY2lmaWVkLCBzZXQgb3IgZXh0ZW5kIChleGlzdGluZyBvYmplY3RzKSB3aXRoIGVpdGhlcjpcblx0XHQvL1xuXHRcdC8vICAgMS4gQW4gb2JqZWN0IG9mIHByb3BlcnRpZXNcblx0XHQvLyAgIDIuIEEga2V5IGFuZCB2YWx1ZVxuXHRcdC8vXG5cdFx0dGhpcy5zZXQoIG93bmVyLCBrZXksIHZhbHVlICk7XG5cblx0XHQvLyBTaW5jZSB0aGUgXCJzZXRcIiBwYXRoIGNhbiBoYXZlIHR3byBwb3NzaWJsZSBlbnRyeSBwb2ludHNcblx0XHQvLyByZXR1cm4gdGhlIGV4cGVjdGVkIGRhdGEgYmFzZWQgb24gd2hpY2ggcGF0aCB3YXMgdGFrZW5bKl1cblx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoga2V5O1xuXHR9LFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBvd25lciwga2V5ICkge1xuXHRcdHZhciBpLFxuXHRcdFx0Y2FjaGUgPSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cblx0XHRpZiAoIGNhY2hlID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBrZXkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0Ly8gU3VwcG9ydCBhcnJheSBvciBzcGFjZSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGtleXNcblx0XHRcdGlmICggQXJyYXkuaXNBcnJheSgga2V5ICkgKSB7XG5cblx0XHRcdFx0Ly8gSWYga2V5IGlzIGFuIGFycmF5IG9mIGtleXMuLi5cblx0XHRcdFx0Ly8gV2UgYWx3YXlzIHNldCBjYW1lbENhc2Uga2V5cywgc28gcmVtb3ZlIHRoYXQuXG5cdFx0XHRcdGtleSA9IGtleS5tYXAoIGNhbWVsQ2FzZSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0a2V5ID0gY2FtZWxDYXNlKCBrZXkgKTtcblxuXHRcdFx0XHQvLyBJZiBhIGtleSB3aXRoIHRoZSBzcGFjZXMgZXhpc3RzLCB1c2UgaXQuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSwgY3JlYXRlIGFuIGFycmF5IGJ5IG1hdGNoaW5nIG5vbi13aGl0ZXNwYWNlXG5cdFx0XHRcdGtleSA9IGtleSBpbiBjYWNoZSA/XG5cdFx0XHRcdFx0WyBrZXkgXSA6XG5cdFx0XHRcdFx0KCBrZXkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXSApO1xuXHRcdFx0fVxuXG5cdFx0XHRpID0ga2V5Lmxlbmd0aDtcblxuXHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdGRlbGV0ZSBjYWNoZVsga2V5WyBpIF0gXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgdGhlIGV4cGFuZG8gaWYgdGhlcmUncyBubyBtb3JlIGRhdGFcblx0XHRpZiAoIGtleSA9PT0gdW5kZWZpbmVkIHx8IGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBjYWNoZSApICkge1xuXG5cdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1XG5cdFx0XHQvLyBXZWJraXQgJiBCbGluayBwZXJmb3JtYW5jZSBzdWZmZXJzIHdoZW4gZGVsZXRpbmcgcHJvcGVydGllc1xuXHRcdFx0Ly8gZnJvbSBET00gbm9kZXMsIHNvIHNldCB0byB1bmRlZmluZWQgaW5zdGVhZFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Mzc4NjA3IChidWcgcmVzdHJpY3RlZClcblx0XHRcdGlmICggb3duZXIubm9kZVR5cGUgKSB7XG5cdFx0XHRcdG93bmVyWyB0aGlzLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRlbGV0ZSBvd25lclsgdGhpcy5leHBhbmRvIF07XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRoYXNEYXRhOiBmdW5jdGlvbiggb3duZXIgKSB7XG5cdFx0dmFyIGNhY2hlID0gb3duZXJbIHRoaXMuZXhwYW5kbyBdO1xuXHRcdHJldHVybiBjYWNoZSAhPT0gdW5kZWZpbmVkICYmICFqUXVlcnkuaXNFbXB0eU9iamVjdCggY2FjaGUgKTtcblx0fVxufTtcbnZhciBkYXRhUHJpdiA9IG5ldyBEYXRhKCk7XG5cbnZhciBkYXRhVXNlciA9IG5ldyBEYXRhKCk7XG5cblxuXG4vL1x0SW1wbGVtZW50YXRpb24gU3VtbWFyeVxuLy9cbi8vXHQxLiBFbmZvcmNlIEFQSSBzdXJmYWNlIGFuZCBzZW1hbnRpYyBjb21wYXRpYmlsaXR5IHdpdGggMS45LnggYnJhbmNoXG4vL1x0Mi4gSW1wcm92ZSB0aGUgbW9kdWxlJ3MgbWFpbnRhaW5hYmlsaXR5IGJ5IHJlZHVjaW5nIHRoZSBzdG9yYWdlXG4vL1x0XHRwYXRocyB0byBhIHNpbmdsZSBtZWNoYW5pc20uXG4vL1x0My4gVXNlIHRoZSBzYW1lIHNpbmdsZSBtZWNoYW5pc20gdG8gc3VwcG9ydCBcInByaXZhdGVcIiBhbmQgXCJ1c2VyXCIgZGF0YS5cbi8vXHQ0LiBfTmV2ZXJfIGV4cG9zZSBcInByaXZhdGVcIiBkYXRhIHRvIHVzZXIgY29kZSAoVE9ETzogRHJvcCBfZGF0YSwgX3JlbW92ZURhdGEpXG4vL1x0NS4gQXZvaWQgZXhwb3NpbmcgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvbiB1c2VyIG9iamVjdHMgKGVnLiBleHBhbmRvIHByb3BlcnRpZXMpXG4vL1x0Ni4gUHJvdmlkZSBhIGNsZWFyIHBhdGggZm9yIGltcGxlbWVudGF0aW9uIHVwZ3JhZGUgdG8gV2Vha01hcCBpbiAyMDE0XG5cbnZhciByYnJhY2UgPSAvXig/Olxce1tcXHdcXFddKlxcfXxcXFtbXFx3XFxXXSpcXF0pJC8sXG5cdHJtdWx0aURhc2ggPSAvW0EtWl0vZztcblxuZnVuY3Rpb24gZ2V0RGF0YSggZGF0YSApIHtcblx0aWYgKCBkYXRhID09PSBcInRydWVcIiApIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJmYWxzZVwiICkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGlmICggZGF0YSA9PT0gXCJudWxsXCIgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvLyBPbmx5IGNvbnZlcnQgdG8gYSBudW1iZXIgaWYgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIHN0cmluZ1xuXHRpZiAoIGRhdGEgPT09ICtkYXRhICsgXCJcIiApIHtcblx0XHRyZXR1cm4gK2RhdGE7XG5cdH1cblxuXHRpZiAoIHJicmFjZS50ZXN0KCBkYXRhICkgKSB7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2UoIGRhdGEgKTtcblx0fVxuXG5cdHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBkYXRhQXR0ciggZWxlbSwga2V5LCBkYXRhICkge1xuXHR2YXIgbmFtZTtcblxuXHQvLyBJZiBub3RoaW5nIHdhcyBmb3VuZCBpbnRlcm5hbGx5LCB0cnkgdG8gZmV0Y2ggYW55XG5cdC8vIGRhdGEgZnJvbSB0aGUgSFRNTDUgZGF0YS0qIGF0dHJpYnV0ZVxuXHRpZiAoIGRhdGEgPT09IHVuZGVmaW5lZCAmJiBlbGVtLm5vZGVUeXBlID09PSAxICkge1xuXHRcdG5hbWUgPSBcImRhdGEtXCIgKyBrZXkucmVwbGFjZSggcm11bHRpRGFzaCwgXCItJCZcIiApLnRvTG93ZXJDYXNlKCk7XG5cdFx0ZGF0YSA9IGVsZW0uZ2V0QXR0cmlidXRlKCBuYW1lICk7XG5cblx0XHRpZiAoIHR5cGVvZiBkYXRhID09PSBcInN0cmluZ1wiICkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0ZGF0YSA9IGdldERhdGEoIGRhdGEgKTtcblx0XHRcdH0gY2F0Y2ggKCBlICkge31cblxuXHRcdFx0Ly8gTWFrZSBzdXJlIHdlIHNldCB0aGUgZGF0YSBzbyBpdCBpc24ndCBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRkYXRhVXNlci5zZXQoIGVsZW0sIGtleSwgZGF0YSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZGF0YTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXHRoYXNEYXRhOiBmdW5jdGlvbiggZWxlbSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuaGFzRGF0YSggZWxlbSApIHx8IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKTtcblx0fSxcblxuXHRkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVVzZXIuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGVsZW0sIG5hbWUgKSB7XG5cdFx0ZGF0YVVzZXIucmVtb3ZlKCBlbGVtLCBuYW1lICk7XG5cdH0sXG5cblx0Ly8gVE9ETzogTm93IHRoYXQgYWxsIGNhbGxzIHRvIF9kYXRhIGFuZCBfcmVtb3ZlRGF0YSBoYXZlIGJlZW4gcmVwbGFjZWRcblx0Ly8gd2l0aCBkaXJlY3QgY2FsbHMgdG8gZGF0YVByaXYgbWV0aG9kcywgdGhlc2UgY2FuIGJlIGRlcHJlY2F0ZWQuXG5cdF9kYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBuYW1lLCBkYXRhICk7XG5cdH0sXG5cblx0X3JlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkge1xuXHRcdGRhdGFQcml2LnJlbW92ZSggZWxlbSwgbmFtZSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0ZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7XG5cdFx0dmFyIGksIG5hbWUsIGRhdGEsXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdLFxuXHRcdFx0YXR0cnMgPSBlbGVtICYmIGVsZW0uYXR0cmlidXRlcztcblxuXHRcdC8vIEdldHMgYWxsIHZhbHVlc1xuXHRcdGlmICgga2V5ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIHRoaXMubGVuZ3RoICkge1xuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtICk7XG5cblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmICFkYXRhUHJpdi5nZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIgKSApIHtcblx0XHRcdFx0XHRpID0gYXR0cnMubGVuZ3RoO1xuXHRcdFx0XHRcdHdoaWxlICggaS0tICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBJRSAxMSBvbmx5XG5cdFx0XHRcdFx0XHQvLyBUaGUgYXR0cnMgZWxlbWVudHMgY2FuIGJlIG51bGwgKCMxNDg5NClcblx0XHRcdFx0XHRcdGlmICggYXR0cnNbIGkgXSApIHtcblx0XHRcdFx0XHRcdFx0bmFtZSA9IGF0dHJzWyBpIF0ubmFtZTtcblx0XHRcdFx0XHRcdFx0aWYgKCBuYW1lLmluZGV4T2YoIFwiZGF0YS1cIiApID09PSAwICkge1xuXHRcdFx0XHRcdFx0XHRcdG5hbWUgPSBjYW1lbENhc2UoIG5hbWUuc2xpY2UoIDUgKSApO1xuXHRcdFx0XHRcdFx0XHRcdGRhdGFBdHRyKCBlbGVtLCBuYW1lLCBkYXRhWyBuYW1lIF0gKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkYXRhUHJpdi5zZXQoIGVsZW0sIFwiaGFzRGF0YUF0dHJzXCIsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZGF0YTtcblx0XHR9XG5cblx0XHQvLyBTZXRzIG11bHRpcGxlIHZhbHVlc1xuXHRcdGlmICggdHlwZW9mIGtleSA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhVXNlci5zZXQoIHRoaXMsIGtleSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHJldHVybiBhY2Nlc3MoIHRoaXMsIGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBkYXRhO1xuXG5cdFx0XHQvLyBUaGUgY2FsbGluZyBqUXVlcnkgb2JqZWN0IChlbGVtZW50IG1hdGNoZXMpIGlzIG5vdCBlbXB0eVxuXHRcdFx0Ly8gKGFuZCB0aGVyZWZvcmUgaGFzIGFuIGVsZW1lbnQgYXBwZWFycyBhdCB0aGlzWyAwIF0pIGFuZCB0aGVcblx0XHRcdC8vIGB2YWx1ZWAgcGFyYW1ldGVyIHdhcyBub3QgdW5kZWZpbmVkLiBBbiBlbXB0eSBqUXVlcnkgb2JqZWN0XG5cdFx0XHQvLyB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBmb3IgZWxlbSA9IHRoaXNbIDAgXSB3aGljaCB3aWxsXG5cdFx0XHQvLyB0aHJvdyBhbiBleGNlcHRpb24gaWYgYW4gYXR0ZW1wdCB0byByZWFkIGEgZGF0YSBjYWNoZSBpcyBtYWRlLlxuXHRcdFx0aWYgKCBlbGVtICYmIHZhbHVlID09PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0Ly8gQXR0ZW1wdCB0byBnZXQgZGF0YSBmcm9tIHRoZSBjYWNoZVxuXHRcdFx0XHQvLyBUaGUga2V5IHdpbGwgYWx3YXlzIGJlIGNhbWVsQ2FzZWQgaW4gRGF0YVxuXHRcdFx0XHRkYXRhID0gZGF0YVVzZXIuZ2V0KCBlbGVtLCBrZXkgKTtcblx0XHRcdFx0aWYgKCBkYXRhICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRhdGE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBBdHRlbXB0IHRvIFwiZGlzY292ZXJcIiB0aGUgZGF0YSBpblxuXHRcdFx0XHQvLyBIVE1MNSBjdXN0b20gZGF0YS0qIGF0dHJzXG5cdFx0XHRcdGRhdGEgPSBkYXRhQXR0ciggZWxlbSwga2V5ICk7XG5cdFx0XHRcdGlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gV2UgdHJpZWQgcmVhbGx5IGhhcmQsIGJ1dCB0aGUgZGF0YSBkb2Vzbid0IGV4aXN0LlxuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIFNldCB0aGUgZGF0YS4uLlxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBXZSBhbHdheXMgc3RvcmUgdGhlIGNhbWVsQ2FzZWQga2V5XG5cdFx0XHRcdGRhdGFVc2VyLnNldCggdGhpcywga2V5LCB2YWx1ZSApO1xuXHRcdFx0fSApO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSwgbnVsbCwgdHJ1ZSApO1xuXHR9LFxuXG5cdHJlbW92ZURhdGE6IGZ1bmN0aW9uKCBrZXkgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkYXRhVXNlci5yZW1vdmUoIHRoaXMsIGtleSApO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBkYXRhICkge1xuXHRcdHZhciBxdWV1ZTtcblxuXHRcdGlmICggZWxlbSApIHtcblx0XHRcdHR5cGUgPSAoIHR5cGUgfHwgXCJmeFwiICkgKyBcInF1ZXVlXCI7XG5cdFx0XHRxdWV1ZSA9IGRhdGFQcml2LmdldCggZWxlbSwgdHlwZSApO1xuXG5cdFx0XHQvLyBTcGVlZCB1cCBkZXF1ZXVlIGJ5IGdldHRpbmcgb3V0IHF1aWNrbHkgaWYgdGhpcyBpcyBqdXN0IGEgbG9va3VwXG5cdFx0XHRpZiAoIGRhdGEgKSB7XG5cdFx0XHRcdGlmICggIXF1ZXVlIHx8IEFycmF5LmlzQXJyYXkoIGRhdGEgKSApIHtcblx0XHRcdFx0XHRxdWV1ZSA9IGRhdGFQcml2LmFjY2VzcyggZWxlbSwgdHlwZSwgalF1ZXJ5Lm1ha2VBcnJheSggZGF0YSApICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cXVldWUucHVzaCggZGF0YSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcXVldWUgfHwgW107XG5cdFx0fVxuXHR9LFxuXG5cdGRlcXVldWU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHR5cGUgPSB0eXBlIHx8IFwiZnhcIjtcblxuXHRcdHZhciBxdWV1ZSA9IGpRdWVyeS5xdWV1ZSggZWxlbSwgdHlwZSApLFxuXHRcdFx0c3RhcnRMZW5ndGggPSBxdWV1ZS5sZW5ndGgsXG5cdFx0XHRmbiA9IHF1ZXVlLnNoaWZ0KCksXG5cdFx0XHRob29rcyA9IGpRdWVyeS5fcXVldWVIb29rcyggZWxlbSwgdHlwZSApLFxuXHRcdFx0bmV4dCA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRqUXVlcnkuZGVxdWV1ZSggZWxlbSwgdHlwZSApO1xuXHRcdFx0fTtcblxuXHRcdC8vIElmIHRoZSBmeCBxdWV1ZSBpcyBkZXF1ZXVlZCwgYWx3YXlzIHJlbW92ZSB0aGUgcHJvZ3Jlc3Mgc2VudGluZWxcblx0XHRpZiAoIGZuID09PSBcImlucHJvZ3Jlc3NcIiApIHtcblx0XHRcdGZuID0gcXVldWUuc2hpZnQoKTtcblx0XHRcdHN0YXJ0TGVuZ3RoLS07XG5cdFx0fVxuXG5cdFx0aWYgKCBmbiApIHtcblxuXHRcdFx0Ly8gQWRkIGEgcHJvZ3Jlc3Mgc2VudGluZWwgdG8gcHJldmVudCB0aGUgZnggcXVldWUgZnJvbSBiZWluZ1xuXHRcdFx0Ly8gYXV0b21hdGljYWxseSBkZXF1ZXVlZFxuXHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgKSB7XG5cdFx0XHRcdHF1ZXVlLnVuc2hpZnQoIFwiaW5wcm9ncmVzc1wiICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENsZWFyIHVwIHRoZSBsYXN0IHF1ZXVlIHN0b3AgZnVuY3Rpb25cblx0XHRcdGRlbGV0ZSBob29rcy5zdG9wO1xuXHRcdFx0Zm4uY2FsbCggZWxlbSwgbmV4dCwgaG9va3MgKTtcblx0XHR9XG5cblx0XHRpZiAoICFzdGFydExlbmd0aCAmJiBob29rcyApIHtcblx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gTm90IHB1YmxpYyAtIGdlbmVyYXRlIGEgcXVldWVIb29rcyBvYmplY3QsIG9yIHJldHVybiB0aGUgY3VycmVudCBvbmVcblx0X3F1ZXVlSG9va3M6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlICkge1xuXHRcdHZhciBrZXkgPSB0eXBlICsgXCJxdWV1ZUhvb2tzXCI7XG5cdFx0cmV0dXJuIGRhdGFQcml2LmdldCggZWxlbSwga2V5ICkgfHwgZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBrZXksIHtcblx0XHRcdGVtcHR5OiBqUXVlcnkuQ2FsbGJhY2tzKCBcIm9uY2UgbWVtb3J5XCIgKS5hZGQoIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFsgdHlwZSArIFwicXVldWVcIiwga2V5IF0gKTtcblx0XHRcdH0gKVxuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHF1ZXVlOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHR2YXIgc2V0dGVyID0gMjtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRkYXRhID0gdHlwZTtcblx0XHRcdHR5cGUgPSBcImZ4XCI7XG5cdFx0XHRzZXR0ZXItLTtcblx0XHR9XG5cblx0XHRpZiAoIGFyZ3VtZW50cy5sZW5ndGggPCBzZXR0ZXIgKSB7XG5cdFx0XHRyZXR1cm4galF1ZXJ5LnF1ZXVlKCB0aGlzWyAwIF0sIHR5cGUgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZGF0YSA9PT0gdW5kZWZpbmVkID9cblx0XHRcdHRoaXMgOlxuXHRcdFx0dGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIHF1ZXVlID0galF1ZXJ5LnF1ZXVlKCB0aGlzLCB0eXBlLCBkYXRhICk7XG5cblx0XHRcdFx0Ly8gRW5zdXJlIGEgaG9va3MgZm9yIHRoaXMgcXVldWVcblx0XHRcdFx0alF1ZXJ5Ll9xdWV1ZUhvb2tzKCB0aGlzLCB0eXBlICk7XG5cblx0XHRcdFx0aWYgKCB0eXBlID09PSBcImZ4XCIgJiYgcXVldWVbIDAgXSAhPT0gXCJpbnByb2dyZXNzXCIgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmRlcXVldWUoIHRoaXMsIHR5cGUgKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHR9LFxuXHRkZXF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0fSApO1xuXHR9LFxuXHRjbGVhclF1ZXVlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRyZXR1cm4gdGhpcy5xdWV1ZSggdHlwZSB8fCBcImZ4XCIsIFtdICk7XG5cdH0sXG5cblx0Ly8gR2V0IGEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHF1ZXVlcyBvZiBhIGNlcnRhaW4gdHlwZVxuXHQvLyBhcmUgZW1wdGllZCAoZnggaXMgdGhlIHR5cGUgYnkgZGVmYXVsdClcblx0cHJvbWlzZTogZnVuY3Rpb24oIHR5cGUsIG9iaiApIHtcblx0XHR2YXIgdG1wLFxuXHRcdFx0Y291bnQgPSAxLFxuXHRcdFx0ZGVmZXIgPSBqUXVlcnkuRGVmZXJyZWQoKSxcblx0XHRcdGVsZW1lbnRzID0gdGhpcyxcblx0XHRcdGkgPSB0aGlzLmxlbmd0aCxcblx0XHRcdHJlc29sdmUgPSBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAhKCAtLWNvdW50ICkgKSB7XG5cdFx0XHRcdFx0ZGVmZXIucmVzb2x2ZVdpdGgoIGVsZW1lbnRzLCBbIGVsZW1lbnRzIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdGlmICggdHlwZW9mIHR5cGUgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRvYmogPSB0eXBlO1xuXHRcdFx0dHlwZSA9IHVuZGVmaW5lZDtcblx0XHR9XG5cdFx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHR0bXAgPSBkYXRhUHJpdi5nZXQoIGVsZW1lbnRzWyBpIF0sIHR5cGUgKyBcInF1ZXVlSG9va3NcIiApO1xuXHRcdFx0aWYgKCB0bXAgJiYgdG1wLmVtcHR5ICkge1xuXHRcdFx0XHRjb3VudCsrO1xuXHRcdFx0XHR0bXAuZW1wdHkuYWRkKCByZXNvbHZlICk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJlc29sdmUoKTtcblx0XHRyZXR1cm4gZGVmZXIucHJvbWlzZSggb2JqICk7XG5cdH1cbn0gKTtcbnZhciBwbnVtID0gKCAvWystXT8oPzpcXGQqXFwufClcXGQrKD86W2VFXVsrLV0/XFxkK3wpLyApLnNvdXJjZTtcblxudmFyIHJjc3NOdW0gPSBuZXcgUmVnRXhwKCBcIl4oPzooWystXSk9fCkoXCIgKyBwbnVtICsgXCIpKFthLXolXSopJFwiLCBcImlcIiApO1xuXG5cbnZhciBjc3NFeHBhbmQgPSBbIFwiVG9wXCIsIFwiUmlnaHRcIiwgXCJCb3R0b21cIiwgXCJMZWZ0XCIgXTtcblxudmFyIGlzSGlkZGVuV2l0aGluVHJlZSA9IGZ1bmN0aW9uKCBlbGVtLCBlbCApIHtcblxuXHRcdC8vIGlzSGlkZGVuV2l0aGluVHJlZSBtaWdodCBiZSBjYWxsZWQgZnJvbSBqUXVlcnkjZmlsdGVyIGZ1bmN0aW9uO1xuXHRcdC8vIGluIHRoYXQgY2FzZSwgZWxlbWVudCB3aWxsIGJlIHNlY29uZCBhcmd1bWVudFxuXHRcdGVsZW0gPSBlbCB8fCBlbGVtO1xuXG5cdFx0Ly8gSW5saW5lIHN0eWxlIHRydW1wcyBhbGxcblx0XHRyZXR1cm4gZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIm5vbmVcIiB8fFxuXHRcdFx0ZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmXG5cblx0XHRcdC8vIE90aGVyd2lzZSwgY2hlY2sgY29tcHV0ZWQgc3R5bGVcblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MyAtIDQ1XG5cdFx0XHQvLyBEaXNjb25uZWN0ZWQgZWxlbWVudHMgY2FuIGhhdmUgY29tcHV0ZWQgZGlzcGxheTogbm9uZSwgc28gZmlyc3QgY29uZmlybSB0aGF0IGVsZW0gaXNcblx0XHRcdC8vIGluIHRoZSBkb2N1bWVudC5cblx0XHRcdGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICkgJiZcblxuXHRcdFx0alF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSA9PT0gXCJub25lXCI7XG5cdH07XG5cbnZhciBzd2FwID0gZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIGNhbGxiYWNrLCBhcmdzICkge1xuXHR2YXIgcmV0LCBuYW1lLFxuXHRcdG9sZCA9IHt9O1xuXG5cdC8vIFJlbWVtYmVyIHRoZSBvbGQgdmFsdWVzLCBhbmQgaW5zZXJ0IHRoZSBuZXcgb25lc1xuXHRmb3IgKCBuYW1lIGluIG9wdGlvbnMgKSB7XG5cdFx0b2xkWyBuYW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07XG5cdFx0ZWxlbS5zdHlsZVsgbmFtZSBdID0gb3B0aW9uc1sgbmFtZSBdO1xuXHR9XG5cblx0cmV0ID0gY2FsbGJhY2suYXBwbHkoIGVsZW0sIGFyZ3MgfHwgW10gKTtcblxuXHQvLyBSZXZlcnQgdGhlIG9sZCB2YWx1ZXNcblx0Zm9yICggbmFtZSBpbiBvcHRpb25zICkge1xuXHRcdGVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBdO1xuXHR9XG5cblx0cmV0dXJuIHJldDtcbn07XG5cblxuXG5cbmZ1bmN0aW9uIGFkanVzdENTUyggZWxlbSwgcHJvcCwgdmFsdWVQYXJ0cywgdHdlZW4gKSB7XG5cdHZhciBhZGp1c3RlZCwgc2NhbGUsXG5cdFx0bWF4SXRlcmF0aW9ucyA9IDIwLFxuXHRcdGN1cnJlbnRWYWx1ZSA9IHR3ZWVuID9cblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gdHdlZW4uY3VyKCk7XG5cdFx0XHR9IDpcblx0XHRcdGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5LmNzcyggZWxlbSwgcHJvcCwgXCJcIiApO1xuXHRcdFx0fSxcblx0XHRpbml0aWFsID0gY3VycmVudFZhbHVlKCksXG5cdFx0dW5pdCA9IHZhbHVlUGFydHMgJiYgdmFsdWVQYXJ0c1sgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApLFxuXG5cdFx0Ly8gU3RhcnRpbmcgdmFsdWUgY29tcHV0YXRpb24gaXMgcmVxdWlyZWQgZm9yIHBvdGVudGlhbCB1bml0IG1pc21hdGNoZXNcblx0XHRpbml0aWFsSW5Vbml0ID0gKCBqUXVlcnkuY3NzTnVtYmVyWyBwcm9wIF0gfHwgdW5pdCAhPT0gXCJweFwiICYmICtpbml0aWFsICkgJiZcblx0XHRcdHJjc3NOdW0uZXhlYyggalF1ZXJ5LmNzcyggZWxlbSwgcHJvcCApICk7XG5cblx0aWYgKCBpbml0aWFsSW5Vbml0ICYmIGluaXRpYWxJblVuaXRbIDMgXSAhPT0gdW5pdCApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD01NFxuXHRcdC8vIEhhbHZlIHRoZSBpdGVyYXRpb24gdGFyZ2V0IHZhbHVlIHRvIHByZXZlbnQgaW50ZXJmZXJlbmNlIGZyb20gQ1NTIHVwcGVyIGJvdW5kcyAoZ2gtMjE0NClcblx0XHRpbml0aWFsID0gaW5pdGlhbCAvIDI7XG5cblx0XHQvLyBUcnVzdCB1bml0cyByZXBvcnRlZCBieSBqUXVlcnkuY3NzXG5cdFx0dW5pdCA9IHVuaXQgfHwgaW5pdGlhbEluVW5pdFsgMyBdO1xuXG5cdFx0Ly8gSXRlcmF0aXZlbHkgYXBwcm94aW1hdGUgZnJvbSBhIG5vbnplcm8gc3RhcnRpbmcgcG9pbnRcblx0XHRpbml0aWFsSW5Vbml0ID0gK2luaXRpYWwgfHwgMTtcblxuXHRcdHdoaWxlICggbWF4SXRlcmF0aW9ucy0tICkge1xuXG5cdFx0XHQvLyBFdmFsdWF0ZSBhbmQgdXBkYXRlIG91ciBiZXN0IGd1ZXNzIChkb3VibGluZyBndWVzc2VzIHRoYXQgemVybyBvdXQpLlxuXHRcdFx0Ly8gRmluaXNoIGlmIHRoZSBzY2FsZSBlcXVhbHMgb3IgY3Jvc3NlcyAxIChtYWtpbmcgdGhlIG9sZCpuZXcgcHJvZHVjdCBub24tcG9zaXRpdmUpLlxuXHRcdFx0alF1ZXJ5LnN0eWxlKCBlbGVtLCBwcm9wLCBpbml0aWFsSW5Vbml0ICsgdW5pdCApO1xuXHRcdFx0aWYgKCAoIDEgLSBzY2FsZSApICogKCAxIC0gKCBzY2FsZSA9IGN1cnJlbnRWYWx1ZSgpIC8gaW5pdGlhbCB8fCAwLjUgKSApIDw9IDAgKSB7XG5cdFx0XHRcdG1heEl0ZXJhdGlvbnMgPSAwO1xuXHRcdFx0fVxuXHRcdFx0aW5pdGlhbEluVW5pdCA9IGluaXRpYWxJblVuaXQgLyBzY2FsZTtcblxuXHRcdH1cblxuXHRcdGluaXRpYWxJblVuaXQgPSBpbml0aWFsSW5Vbml0ICogMjtcblx0XHRqUXVlcnkuc3R5bGUoIGVsZW0sIHByb3AsIGluaXRpYWxJblVuaXQgKyB1bml0ICk7XG5cblx0XHQvLyBNYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSB0d2VlbiBwcm9wZXJ0aWVzIGxhdGVyIG9uXG5cdFx0dmFsdWVQYXJ0cyA9IHZhbHVlUGFydHMgfHwgW107XG5cdH1cblxuXHRpZiAoIHZhbHVlUGFydHMgKSB7XG5cdFx0aW5pdGlhbEluVW5pdCA9ICtpbml0aWFsSW5Vbml0IHx8ICtpbml0aWFsIHx8IDA7XG5cblx0XHQvLyBBcHBseSByZWxhdGl2ZSBvZmZzZXQgKCs9Ly09KSBpZiBzcGVjaWZpZWRcblx0XHRhZGp1c3RlZCA9IHZhbHVlUGFydHNbIDEgXSA/XG5cdFx0XHRpbml0aWFsSW5Vbml0ICsgKCB2YWx1ZVBhcnRzWyAxIF0gKyAxICkgKiB2YWx1ZVBhcnRzWyAyIF0gOlxuXHRcdFx0K3ZhbHVlUGFydHNbIDIgXTtcblx0XHRpZiAoIHR3ZWVuICkge1xuXHRcdFx0dHdlZW4udW5pdCA9IHVuaXQ7XG5cdFx0XHR0d2Vlbi5zdGFydCA9IGluaXRpYWxJblVuaXQ7XG5cdFx0XHR0d2Vlbi5lbmQgPSBhZGp1c3RlZDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGFkanVzdGVkO1xufVxuXG5cbnZhciBkZWZhdWx0RGlzcGxheU1hcCA9IHt9O1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApIHtcblx0dmFyIHRlbXAsXG5cdFx0ZG9jID0gZWxlbS5vd25lckRvY3VtZW50LFxuXHRcdG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZSxcblx0XHRkaXNwbGF5ID0gZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF07XG5cblx0aWYgKCBkaXNwbGF5ICkge1xuXHRcdHJldHVybiBkaXNwbGF5O1xuXHR9XG5cblx0dGVtcCA9IGRvYy5ib2R5LmFwcGVuZENoaWxkKCBkb2MuY3JlYXRlRWxlbWVudCggbm9kZU5hbWUgKSApO1xuXHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggdGVtcCwgXCJkaXNwbGF5XCIgKTtcblxuXHR0ZW1wLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHRlbXAgKTtcblxuXHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdGRpc3BsYXkgPSBcImJsb2NrXCI7XG5cdH1cblx0ZGVmYXVsdERpc3BsYXlNYXBbIG5vZGVOYW1lIF0gPSBkaXNwbGF5O1xuXG5cdHJldHVybiBkaXNwbGF5O1xufVxuXG5mdW5jdGlvbiBzaG93SGlkZSggZWxlbWVudHMsIHNob3cgKSB7XG5cdHZhciBkaXNwbGF5LCBlbGVtLFxuXHRcdHZhbHVlcyA9IFtdLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBlbGVtZW50cy5sZW5ndGg7XG5cblx0Ly8gRGV0ZXJtaW5lIG5ldyBkaXNwbGF5IHZhbHVlIGZvciBlbGVtZW50cyB0aGF0IG5lZWQgdG8gY2hhbmdlXG5cdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0ZWxlbSA9IGVsZW1lbnRzWyBpbmRleCBdO1xuXHRcdGlmICggIWVsZW0uc3R5bGUgKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRkaXNwbGF5ID0gZWxlbS5zdHlsZS5kaXNwbGF5O1xuXHRcdGlmICggc2hvdyApIHtcblxuXHRcdFx0Ly8gU2luY2Ugd2UgZm9yY2UgdmlzaWJpbGl0eSB1cG9uIGNhc2NhZGUtaGlkZGVuIGVsZW1lbnRzLCBhbiBpbW1lZGlhdGUgKGFuZCBzbG93KVxuXHRcdFx0Ly8gY2hlY2sgaXMgcmVxdWlyZWQgaW4gdGhpcyBmaXJzdCBsb29wIHVubGVzcyB3ZSBoYXZlIGEgbm9uZW1wdHkgZGlzcGxheSB2YWx1ZSAoZWl0aGVyXG5cdFx0XHQvLyBpbmxpbmUgb3IgYWJvdXQtdG8tYmUtcmVzdG9yZWQpXG5cdFx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBkYXRhUHJpdi5nZXQoIGVsZW0sIFwiZGlzcGxheVwiICkgfHwgbnVsbDtcblx0XHRcdFx0aWYgKCAhdmFsdWVzWyBpbmRleCBdICkge1xuXHRcdFx0XHRcdGVsZW0uc3R5bGUuZGlzcGxheSA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICggZWxlbS5zdHlsZS5kaXNwbGF5ID09PSBcIlwiICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBnZXREZWZhdWx0RGlzcGxheSggZWxlbSApO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZiAoIGRpc3BsYXkgIT09IFwibm9uZVwiICkge1xuXHRcdFx0XHR2YWx1ZXNbIGluZGV4IF0gPSBcIm5vbmVcIjtcblxuXHRcdFx0XHQvLyBSZW1lbWJlciB3aGF0IHdlJ3JlIG92ZXJ3cml0aW5nXG5cdFx0XHRcdGRhdGFQcml2LnNldCggZWxlbSwgXCJkaXNwbGF5XCIsIGRpc3BsYXkgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvLyBTZXQgdGhlIGRpc3BsYXkgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2Vjb25kIGxvb3AgdG8gYXZvaWQgY29uc3RhbnQgcmVmbG93XG5cdGZvciAoIGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0aWYgKCB2YWx1ZXNbIGluZGV4IF0gIT0gbnVsbCApIHtcblx0XHRcdGVsZW1lbnRzWyBpbmRleCBdLnN0eWxlLmRpc3BsYXkgPSB2YWx1ZXNbIGluZGV4IF07XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW1lbnRzO1xufVxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNob3c6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBzaG93SGlkZSggdGhpcywgdHJ1ZSApO1xuXHR9LFxuXHRoaWRlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gc2hvd0hpZGUoIHRoaXMgKTtcblx0fSxcblx0dG9nZ2xlOiBmdW5jdGlvbiggc3RhdGUgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGUgPT09IFwiYm9vbGVhblwiICkge1xuXHRcdFx0cmV0dXJuIHN0YXRlID8gdGhpcy5zaG93KCkgOiB0aGlzLmhpZGUoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggaXNIaWRkZW5XaXRoaW5UcmVlKCB0aGlzICkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLnNob3coKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLmhpZGUoKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcbnZhciByY2hlY2thYmxlVHlwZSA9ICggL14oPzpjaGVja2JveHxyYWRpbykkL2kgKTtcblxudmFyIHJ0YWdOYW1lID0gKCAvPChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSspL2kgKTtcblxudmFyIHJzY3JpcHRUeXBlID0gKCAvXiR8Xm1vZHVsZSR8XFwvKD86amF2YXxlY21hKXNjcmlwdC9pICk7XG5cblxuXG4vLyBXZSBoYXZlIHRvIGNsb3NlIHRoZXNlIHRhZ3MgdG8gc3VwcG9ydCBYSFRNTCAoIzEzMjAwKVxudmFyIHdyYXBNYXAgPSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0b3B0aW9uOiBbIDEsIFwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPlwiLCBcIjwvc2VsZWN0PlwiIF0sXG5cblx0Ly8gWEhUTUwgcGFyc2VycyBkbyBub3QgbWFnaWNhbGx5IGluc2VydCBlbGVtZW50cyBpbiB0aGVcblx0Ly8gc2FtZSB3YXkgdGhhdCB0YWcgc291cCBwYXJzZXJzIGRvLiBTbyB3ZSBjYW5ub3Qgc2hvcnRlblxuXHQvLyB0aGlzIGJ5IG9taXR0aW5nIDx0Ym9keT4gb3Igb3RoZXIgcmVxdWlyZWQgZWxlbWVudHMuXG5cdHRoZWFkOiBbIDEsIFwiPHRhYmxlPlwiLCBcIjwvdGFibGU+XCIgXSxcblx0Y29sOiBbIDIsIFwiPHRhYmxlPjxjb2xncm91cD5cIiwgXCI8L2NvbGdyb3VwPjwvdGFibGU+XCIgXSxcblx0dHI6IFsgMiwgXCI8dGFibGU+PHRib2R5PlwiLCBcIjwvdGJvZHk+PC90YWJsZT5cIiBdLFxuXHR0ZDogWyAzLCBcIjx0YWJsZT48dGJvZHk+PHRyPlwiLCBcIjwvdHI+PC90Ym9keT48L3RhYmxlPlwiIF0sXG5cblx0X2RlZmF1bHQ6IFsgMCwgXCJcIiwgXCJcIiBdXG59O1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxud3JhcE1hcC5vcHRncm91cCA9IHdyYXBNYXAub3B0aW9uO1xuXG53cmFwTWFwLnRib2R5ID0gd3JhcE1hcC50Zm9vdCA9IHdyYXBNYXAuY29sZ3JvdXAgPSB3cmFwTWFwLmNhcHRpb24gPSB3cmFwTWFwLnRoZWFkO1xud3JhcE1hcC50aCA9IHdyYXBNYXAudGQ7XG5cblxuZnVuY3Rpb24gZ2V0QWxsKCBjb250ZXh0LCB0YWcgKSB7XG5cblx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHQvLyBVc2UgdHlwZW9mIHRvIGF2b2lkIHplcm8tYXJndW1lbnQgbWV0aG9kIGludm9jYXRpb24gb24gaG9zdCBvYmplY3RzICgjMTUxNTEpXG5cdHZhciByZXQ7XG5cblx0aWYgKCB0eXBlb2YgY29udGV4dC5nZXRFbGVtZW50c0J5VGFnTmFtZSAhPT0gXCJ1bmRlZmluZWRcIiApIHtcblx0XHRyZXQgPSBjb250ZXh0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCB0YWcgfHwgXCIqXCIgKTtcblxuXHR9IGVsc2UgaWYgKCB0eXBlb2YgY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsICE9PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdHJldCA9IGNvbnRleHQucXVlcnlTZWxlY3RvckFsbCggdGFnIHx8IFwiKlwiICk7XG5cblx0fSBlbHNlIHtcblx0XHRyZXQgPSBbXTtcblx0fVxuXG5cdGlmICggdGFnID09PSB1bmRlZmluZWQgfHwgdGFnICYmIG5vZGVOYW1lKCBjb250ZXh0LCB0YWcgKSApIHtcblx0XHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbIGNvbnRleHQgXSwgcmV0ICk7XG5cdH1cblxuXHRyZXR1cm4gcmV0O1xufVxuXG5cbi8vIE1hcmsgc2NyaXB0cyBhcyBoYXZpbmcgYWxyZWFkeSBiZWVuIGV2YWx1YXRlZFxuZnVuY3Rpb24gc2V0R2xvYmFsRXZhbCggZWxlbXMsIHJlZkVsZW1lbnRzICkge1xuXHR2YXIgaSA9IDAsXG5cdFx0bCA9IGVsZW1zLmxlbmd0aDtcblxuXHRmb3IgKCA7IGkgPCBsOyBpKysgKSB7XG5cdFx0ZGF0YVByaXYuc2V0KFxuXHRcdFx0ZWxlbXNbIGkgXSxcblx0XHRcdFwiZ2xvYmFsRXZhbFwiLFxuXHRcdFx0IXJlZkVsZW1lbnRzIHx8IGRhdGFQcml2LmdldCggcmVmRWxlbWVudHNbIGkgXSwgXCJnbG9iYWxFdmFsXCIgKVxuXHRcdCk7XG5cdH1cbn1cblxuXG52YXIgcmh0bWwgPSAvPHwmIz9cXHcrOy87XG5cbmZ1bmN0aW9uIGJ1aWxkRnJhZ21lbnQoIGVsZW1zLCBjb250ZXh0LCBzY3JpcHRzLCBzZWxlY3Rpb24sIGlnbm9yZWQgKSB7XG5cdHZhciBlbGVtLCB0bXAsIHRhZywgd3JhcCwgY29udGFpbnMsIGosXG5cdFx0ZnJhZ21lbnQgPSBjb250ZXh0LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRub2RlcyA9IFtdLFxuXHRcdGkgPSAwLFxuXHRcdGwgPSBlbGVtcy5sZW5ndGg7XG5cblx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdGVsZW0gPSBlbGVtc1sgaSBdO1xuXG5cdFx0aWYgKCBlbGVtIHx8IGVsZW0gPT09IDAgKSB7XG5cblx0XHRcdC8vIEFkZCBub2RlcyBkaXJlY3RseVxuXHRcdFx0aWYgKCB0b1R5cGUoIGVsZW0gKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0Ly8gcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0XHRqUXVlcnkubWVyZ2UoIG5vZGVzLCBlbGVtLm5vZGVUeXBlID8gWyBlbGVtIF0gOiBlbGVtICk7XG5cblx0XHRcdC8vIENvbnZlcnQgbm9uLWh0bWwgaW50byBhIHRleHQgbm9kZVxuXHRcdFx0fSBlbHNlIGlmICggIXJodG1sLnRlc3QoIGVsZW0gKSApIHtcblx0XHRcdFx0bm9kZXMucHVzaCggY29udGV4dC5jcmVhdGVUZXh0Tm9kZSggZWxlbSApICk7XG5cblx0XHRcdC8vIENvbnZlcnQgaHRtbCBpbnRvIERPTSBub2Rlc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dG1wID0gdG1wIHx8IGZyYWdtZW50LmFwcGVuZENoaWxkKCBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiZGl2XCIgKSApO1xuXG5cdFx0XHRcdC8vIERlc2VyaWFsaXplIGEgc3RhbmRhcmQgcmVwcmVzZW50YXRpb25cblx0XHRcdFx0dGFnID0gKCBydGFnTmFtZS5leGVjKCBlbGVtICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCk7XG5cdFx0XHRcdHdyYXAgPSB3cmFwTWFwWyB0YWcgXSB8fCB3cmFwTWFwLl9kZWZhdWx0O1xuXHRcdFx0XHR0bXAuaW5uZXJIVE1MID0gd3JhcFsgMSBdICsgalF1ZXJ5Lmh0bWxQcmVmaWx0ZXIoIGVsZW0gKSArIHdyYXBbIDIgXTtcblxuXHRcdFx0XHQvLyBEZXNjZW5kIHRocm91Z2ggd3JhcHBlcnMgdG8gdGhlIHJpZ2h0IGNvbnRlbnRcblx0XHRcdFx0aiA9IHdyYXBbIDAgXTtcblx0XHRcdFx0d2hpbGUgKCBqLS0gKSB7XG5cdFx0XHRcdFx0dG1wID0gdG1wLmxhc3RDaGlsZDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0XHQvLyBwdXNoLmFwcGx5KF8sIGFycmF5bGlrZSkgdGhyb3dzIG9uIGFuY2llbnQgV2ViS2l0XG5cdFx0XHRcdGpRdWVyeS5tZXJnZSggbm9kZXMsIHRtcC5jaGlsZE5vZGVzICk7XG5cblx0XHRcdFx0Ly8gUmVtZW1iZXIgdGhlIHRvcC1sZXZlbCBjb250YWluZXJcblx0XHRcdFx0dG1wID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdFx0XHQvLyBFbnN1cmUgdGhlIGNyZWF0ZWQgbm9kZXMgYXJlIG9ycGhhbmVkICgjMTIzOTIpXG5cdFx0XHRcdHRtcC50ZXh0Q29udGVudCA9IFwiXCI7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVtb3ZlIHdyYXBwZXIgZnJvbSBmcmFnbWVudFxuXHRmcmFnbWVudC50ZXh0Q29udGVudCA9IFwiXCI7XG5cblx0aSA9IDA7XG5cdHdoaWxlICggKCBlbGVtID0gbm9kZXNbIGkrKyBdICkgKSB7XG5cblx0XHQvLyBTa2lwIGVsZW1lbnRzIGFscmVhZHkgaW4gdGhlIGNvbnRleHQgY29sbGVjdGlvbiAodHJhYy00MDg3KVxuXHRcdGlmICggc2VsZWN0aW9uICYmIGpRdWVyeS5pbkFycmF5KCBlbGVtLCBzZWxlY3Rpb24gKSA+IC0xICkge1xuXHRcdFx0aWYgKCBpZ25vcmVkICkge1xuXHRcdFx0XHRpZ25vcmVkLnB1c2goIGVsZW0gKTtcblx0XHRcdH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnRhaW5zID0galF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKTtcblxuXHRcdC8vIEFwcGVuZCB0byBmcmFnbWVudFxuXHRcdHRtcCA9IGdldEFsbCggZnJhZ21lbnQuYXBwZW5kQ2hpbGQoIGVsZW0gKSwgXCJzY3JpcHRcIiApO1xuXG5cdFx0Ly8gUHJlc2VydmUgc2NyaXB0IGV2YWx1YXRpb24gaGlzdG9yeVxuXHRcdGlmICggY29udGFpbnMgKSB7XG5cdFx0XHRzZXRHbG9iYWxFdmFsKCB0bXAgKTtcblx0XHR9XG5cblx0XHQvLyBDYXB0dXJlIGV4ZWN1dGFibGVzXG5cdFx0aWYgKCBzY3JpcHRzICkge1xuXHRcdFx0aiA9IDA7XG5cdFx0XHR3aGlsZSAoICggZWxlbSA9IHRtcFsgaisrIF0gKSApIHtcblx0XHRcdFx0aWYgKCByc2NyaXB0VHlwZS50ZXN0KCBlbGVtLnR5cGUgfHwgXCJcIiApICkge1xuXHRcdFx0XHRcdHNjcmlwdHMucHVzaCggZWxlbSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZyYWdtZW50O1xufVxuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxcblx0XHRkaXYgPSBmcmFnbWVudC5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApICksXG5cdFx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5XG5cdC8vIENoZWNrIHN0YXRlIGxvc3QgaWYgdGhlIG5hbWUgaXMgc2V0ICgjMTEyMTcpXG5cdC8vIFN1cHBvcnQ6IFdpbmRvd3MgV2ViIEFwcHMgKFdXQSlcblx0Ly8gYG5hbWVgIGFuZCBgdHlwZWAgbXVzdCB1c2UgLnNldEF0dHJpYnV0ZSBmb3IgV1dBICgjMTQ5MDEpXG5cdGlucHV0LnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIFwicmFkaW9cIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwiY2hlY2tlZFwiLCBcImNoZWNrZWRcIiApO1xuXHRpbnB1dC5zZXRBdHRyaWJ1dGUoIFwibmFtZVwiLCBcInRcIiApO1xuXG5cdGRpdi5hcHBlbmRDaGlsZCggaW5wdXQgKTtcblxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIG9ubHlcblx0Ly8gT2xkZXIgV2ViS2l0IGRvZXNuJ3QgY2xvbmUgY2hlY2tlZCBzdGF0ZSBjb3JyZWN0bHkgaW4gZnJhZ21lbnRzXG5cdHN1cHBvcnQuY2hlY2tDbG9uZSA9IGRpdi5jbG9uZU5vZGUoIHRydWUgKS5jbG9uZU5vZGUoIHRydWUgKS5sYXN0Q2hpbGQuY2hlY2tlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTWFrZSBzdXJlIHRleHRhcmVhIChhbmQgY2hlY2tib3gpIGRlZmF1bHRWYWx1ZSBpcyBwcm9wZXJseSBjbG9uZWRcblx0ZGl2LmlubmVySFRNTCA9IFwiPHRleHRhcmVhPng8L3RleHRhcmVhPlwiO1xuXHRzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkID0gISFkaXYuY2xvbmVOb2RlKCB0cnVlICkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZTtcbn0gKSgpO1xudmFyIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXG5cbnZhclxuXHRya2V5RXZlbnQgPSAvXmtleS8sXG5cdHJtb3VzZUV2ZW50ID0gL14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLFxuXHRydHlwZW5hbWVzcGFjZSA9IC9eKFteLl0qKSg/OlxcLiguKyl8KS87XG5cbmZ1bmN0aW9uIHJldHVyblRydWUoKSB7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiByZXR1cm5GYWxzZSgpIHtcblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gU2VlICMxMzM5MyBmb3IgbW9yZSBpbmZvXG5mdW5jdGlvbiBzYWZlQWN0aXZlRWxlbWVudCgpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblx0fSBjYXRjaCAoIGVyciApIHsgfVxufVxuXG5mdW5jdGlvbiBvbiggZWxlbSwgdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiwgb25lICkge1xuXHR2YXIgb3JpZ0ZuLCB0eXBlO1xuXG5cdC8vIFR5cGVzIGNhbiBiZSBhIG1hcCBvZiB0eXBlcy9oYW5kbGVyc1xuXHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vICggdHlwZXMtT2JqZWN0LCBzZWxlY3RvciwgZGF0YSApXG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMtT2JqZWN0LCBkYXRhIClcblx0XHRcdGRhdGEgPSBkYXRhIHx8IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRvbiggZWxlbSwgdHlwZSwgc2VsZWN0b3IsIGRhdGEsIHR5cGVzWyB0eXBlIF0sIG9uZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gZWxlbTtcblx0fVxuXG5cdGlmICggZGF0YSA9PSBudWxsICYmIGZuID09IG51bGwgKSB7XG5cblx0XHQvLyAoIHR5cGVzLCBmbiApXG5cdFx0Zm4gPSBzZWxlY3Rvcjtcblx0XHRkYXRhID0gc2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdH0gZWxzZSBpZiAoIGZuID09IG51bGwgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT09IFwic3RyaW5nXCIgKSB7XG5cblx0XHRcdC8vICggdHlwZXMsIHNlbGVjdG9yLCBmbiApXG5cdFx0XHRmbiA9IGRhdGE7XG5cdFx0XHRkYXRhID0gdW5kZWZpbmVkO1xuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vICggdHlwZXMsIGRhdGEsIGZuIClcblx0XHRcdGZuID0gZGF0YTtcblx0XHRcdGRhdGEgPSBzZWxlY3Rvcjtcblx0XHRcdHNlbGVjdG9yID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRpZiAoIGZuID09PSBmYWxzZSApIHtcblx0XHRmbiA9IHJldHVybkZhbHNlO1xuXHR9IGVsc2UgaWYgKCAhZm4gKSB7XG5cdFx0cmV0dXJuIGVsZW07XG5cdH1cblxuXHRpZiAoIG9uZSA9PT0gMSApIHtcblx0XHRvcmlnRm4gPSBmbjtcblx0XHRmbiA9IGZ1bmN0aW9uKCBldmVudCApIHtcblxuXHRcdFx0Ly8gQ2FuIHVzZSBhbiBlbXB0eSBzZXQsIHNpbmNlIGV2ZW50IGNvbnRhaW5zIHRoZSBpbmZvXG5cdFx0XHRqUXVlcnkoKS5vZmYoIGV2ZW50ICk7XG5cdFx0XHRyZXR1cm4gb3JpZ0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9O1xuXG5cdFx0Ly8gVXNlIHNhbWUgZ3VpZCBzbyBjYWxsZXIgY2FuIHJlbW92ZSB1c2luZyBvcmlnRm5cblx0XHRmbi5ndWlkID0gb3JpZ0ZuLmd1aWQgfHwgKCBvcmlnRm4uZ3VpZCA9IGpRdWVyeS5ndWlkKysgKTtcblx0fVxuXHRyZXR1cm4gZWxlbS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlcywgZm4sIGRhdGEsIHNlbGVjdG9yICk7XG5cdH0gKTtcbn1cblxuLypcbiAqIEhlbHBlciBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIGV2ZW50cyAtLSBub3QgcGFydCBvZiB0aGUgcHVibGljIGludGVyZmFjZS5cbiAqIFByb3BzIHRvIERlYW4gRWR3YXJkcycgYWRkRXZlbnQgbGlicmFyeSBmb3IgbWFueSBvZiB0aGUgaWRlYXMuXG4gKi9cbmpRdWVyeS5ldmVudCA9IHtcblxuXHRnbG9iYWw6IHt9LFxuXG5cdGFkZDogZnVuY3Rpb24oIGVsZW0sIHR5cGVzLCBoYW5kbGVyLCBkYXRhLCBzZWxlY3RvciApIHtcblxuXHRcdHZhciBoYW5kbGVPYmpJbiwgZXZlbnRIYW5kbGUsIHRtcCxcblx0XHRcdGV2ZW50cywgdCwgaGFuZGxlT2JqLFxuXHRcdFx0c3BlY2lhbCwgaGFuZGxlcnMsIHR5cGUsIG5hbWVzcGFjZXMsIG9yaWdUeXBlLFxuXHRcdFx0ZWxlbURhdGEgPSBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdC8vIERvbid0IGF0dGFjaCBldmVudHMgdG8gbm9EYXRhIG9yIHRleHQvY29tbWVudCBub2RlcyAoYnV0IGFsbG93IHBsYWluIG9iamVjdHMpXG5cdFx0aWYgKCAhZWxlbURhdGEgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbGVyIGNhbiBwYXNzIGluIGFuIG9iamVjdCBvZiBjdXN0b20gZGF0YSBpbiBsaWV1IG9mIHRoZSBoYW5kbGVyXG5cdFx0aWYgKCBoYW5kbGVyLmhhbmRsZXIgKSB7XG5cdFx0XHRoYW5kbGVPYmpJbiA9IGhhbmRsZXI7XG5cdFx0XHRoYW5kbGVyID0gaGFuZGxlT2JqSW4uaGFuZGxlcjtcblx0XHRcdHNlbGVjdG9yID0gaGFuZGxlT2JqSW4uc2VsZWN0b3I7XG5cdFx0fVxuXG5cdFx0Ly8gRW5zdXJlIHRoYXQgaW52YWxpZCBzZWxlY3RvcnMgdGhyb3cgZXhjZXB0aW9ucyBhdCBhdHRhY2ggdGltZVxuXHRcdC8vIEV2YWx1YXRlIGFnYWluc3QgZG9jdW1lbnRFbGVtZW50IGluIGNhc2UgZWxlbSBpcyBhIG5vbi1lbGVtZW50IG5vZGUgKGUuZy4sIGRvY3VtZW50KVxuXHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRqUXVlcnkuZmluZC5tYXRjaGVzU2VsZWN0b3IoIGRvY3VtZW50RWxlbWVudCwgc2VsZWN0b3IgKTtcblx0XHR9XG5cblx0XHQvLyBNYWtlIHN1cmUgdGhhdCB0aGUgaGFuZGxlciBoYXMgYSB1bmlxdWUgSUQsIHVzZWQgdG8gZmluZC9yZW1vdmUgaXQgbGF0ZXJcblx0XHRpZiAoICFoYW5kbGVyLmd1aWQgKSB7XG5cdFx0XHRoYW5kbGVyLmd1aWQgPSBqUXVlcnkuZ3VpZCsrO1xuXHRcdH1cblxuXHRcdC8vIEluaXQgdGhlIGVsZW1lbnQncyBldmVudCBzdHJ1Y3R1cmUgYW5kIG1haW4gaGFuZGxlciwgaWYgdGhpcyBpcyB0aGUgZmlyc3Rcblx0XHRpZiAoICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0ZXZlbnRzID0gZWxlbURhdGEuZXZlbnRzID0ge307XG5cdFx0fVxuXHRcdGlmICggISggZXZlbnRIYW5kbGUgPSBlbGVtRGF0YS5oYW5kbGUgKSApIHtcblx0XHRcdGV2ZW50SGFuZGxlID0gZWxlbURhdGEuaGFuZGxlID0gZnVuY3Rpb24oIGUgKSB7XG5cblx0XHRcdFx0Ly8gRGlzY2FyZCB0aGUgc2Vjb25kIGV2ZW50IG9mIGEgalF1ZXJ5LmV2ZW50LnRyaWdnZXIoKSBhbmRcblx0XHRcdFx0Ly8gd2hlbiBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdlIGhhcyB1bmxvYWRlZFxuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIGpRdWVyeSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICE9PSBlLnR5cGUgP1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5kaXNwYXRjaC5hcHBseSggZWxlbSwgYXJndW1lbnRzICkgOiB1bmRlZmluZWQ7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBtdWx0aXBsZSBldmVudHMgc2VwYXJhdGVkIGJ5IGEgc3BhY2Vcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVGhlcmUgKm11c3QqIGJlIGEgdHlwZSwgbm8gYXR0YWNoaW5nIG5hbWVzcGFjZS1vbmx5IGhhbmRsZXJzXG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgZXZlbnQgY2hhbmdlcyBpdHMgdHlwZSwgdXNlIHRoZSBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzIGZvciB0aGUgY2hhbmdlZCB0eXBlXG5cdFx0XHRzcGVjaWFsID0galF1ZXJ5LmV2ZW50LnNwZWNpYWxbIHR5cGUgXSB8fCB7fTtcblxuXHRcdFx0Ly8gSWYgc2VsZWN0b3IgZGVmaW5lZCwgZGV0ZXJtaW5lIHNwZWNpYWwgZXZlbnQgYXBpIHR5cGUsIG90aGVyd2lzZSBnaXZlbiB0eXBlXG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cblx0XHRcdC8vIFVwZGF0ZSBzcGVjaWFsIGJhc2VkIG9uIG5ld2x5IHJlc2V0IHR5cGVcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgdHlwZSBdIHx8IHt9O1xuXG5cdFx0XHQvLyBoYW5kbGVPYmogaXMgcGFzc2VkIHRvIGFsbCBldmVudCBoYW5kbGVyc1xuXHRcdFx0aGFuZGxlT2JqID0galF1ZXJ5LmV4dGVuZCgge1xuXHRcdFx0XHR0eXBlOiB0eXBlLFxuXHRcdFx0XHRvcmlnVHlwZTogb3JpZ1R5cGUsXG5cdFx0XHRcdGRhdGE6IGRhdGEsXG5cdFx0XHRcdGhhbmRsZXI6IGhhbmRsZXIsXG5cdFx0XHRcdGd1aWQ6IGhhbmRsZXIuZ3VpZCxcblx0XHRcdFx0c2VsZWN0b3I6IHNlbGVjdG9yLFxuXHRcdFx0XHRuZWVkc0NvbnRleHQ6IHNlbGVjdG9yICYmIGpRdWVyeS5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KCBzZWxlY3RvciApLFxuXHRcdFx0XHRuYW1lc3BhY2U6IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKVxuXHRcdFx0fSwgaGFuZGxlT2JqSW4gKTtcblxuXHRcdFx0Ly8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZSBpZiB3ZSdyZSB0aGUgZmlyc3Rcblx0XHRcdGlmICggISggaGFuZGxlcnMgPSBldmVudHNbIHR5cGUgXSApICkge1xuXHRcdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdID0gW107XG5cdFx0XHRcdGhhbmRsZXJzLmRlbGVnYXRlQ291bnQgPSAwO1xuXG5cdFx0XHRcdC8vIE9ubHkgdXNlIGFkZEV2ZW50TGlzdGVuZXIgaWYgdGhlIHNwZWNpYWwgZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZVxuXHRcdFx0XHRpZiAoICFzcGVjaWFsLnNldHVwIHx8XG5cdFx0XHRcdFx0c3BlY2lhbC5zZXR1cC5jYWxsKCBlbGVtLCBkYXRhLCBuYW1lc3BhY2VzLCBldmVudEhhbmRsZSApID09PSBmYWxzZSApIHtcblxuXHRcdFx0XHRcdGlmICggZWxlbS5hZGRFdmVudExpc3RlbmVyICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5hZGRFdmVudExpc3RlbmVyKCB0eXBlLCBldmVudEhhbmRsZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHNwZWNpYWwuYWRkICkge1xuXHRcdFx0XHRzcGVjaWFsLmFkZC5jYWxsKCBlbGVtLCBoYW5kbGVPYmogKTtcblxuXHRcdFx0XHRpZiAoICFoYW5kbGVPYmouaGFuZGxlci5ndWlkICkge1xuXHRcdFx0XHRcdGhhbmRsZU9iai5oYW5kbGVyLmd1aWQgPSBoYW5kbGVyLmd1aWQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIHRvIHRoZSBlbGVtZW50J3MgaGFuZGxlciBsaXN0LCBkZWxlZ2F0ZXMgaW4gZnJvbnRcblx0XHRcdGlmICggc2VsZWN0b3IgKSB7XG5cdFx0XHRcdGhhbmRsZXJzLnNwbGljZSggaGFuZGxlcnMuZGVsZWdhdGVDb3VudCsrLCAwLCBoYW5kbGVPYmogKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGhhbmRsZXJzLnB1c2goIGhhbmRsZU9iaiApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBLZWVwIHRyYWNrIG9mIHdoaWNoIGV2ZW50cyBoYXZlIGV2ZXIgYmVlbiB1c2VkLCBmb3IgZXZlbnQgb3B0aW1pemF0aW9uXG5cdFx0XHRqUXVlcnkuZXZlbnQuZ2xvYmFsWyB0eXBlIF0gPSB0cnVlO1xuXHRcdH1cblxuXHR9LFxuXG5cdC8vIERldGFjaCBhbiBldmVudCBvciBzZXQgb2YgZXZlbnRzIGZyb20gYW4gZWxlbWVudFxuXHRyZW1vdmU6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlcywgaGFuZGxlciwgc2VsZWN0b3IsIG1hcHBlZFR5cGVzICkge1xuXG5cdFx0dmFyIGosIG9yaWdDb3VudCwgdG1wLFxuXHRcdFx0ZXZlbnRzLCB0LCBoYW5kbGVPYmosXG5cdFx0XHRzcGVjaWFsLCBoYW5kbGVycywgdHlwZSwgbmFtZXNwYWNlcywgb3JpZ1R5cGUsXG5cdFx0XHRlbGVtRGF0YSA9IGRhdGFQcml2Lmhhc0RhdGEoIGVsZW0gKSAmJiBkYXRhUHJpdi5nZXQoIGVsZW0gKTtcblxuXHRcdGlmICggIWVsZW1EYXRhIHx8ICEoIGV2ZW50cyA9IGVsZW1EYXRhLmV2ZW50cyApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE9uY2UgZm9yIGVhY2ggdHlwZS5uYW1lc3BhY2UgaW4gdHlwZXM7IHR5cGUgbWF5IGJlIG9taXR0ZWRcblx0XHR0eXBlcyA9ICggdHlwZXMgfHwgXCJcIiApLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgWyBcIlwiIF07XG5cdFx0dCA9IHR5cGVzLmxlbmd0aDtcblx0XHR3aGlsZSAoIHQtLSApIHtcblx0XHRcdHRtcCA9IHJ0eXBlbmFtZXNwYWNlLmV4ZWMoIHR5cGVzWyB0IF0gKSB8fCBbXTtcblx0XHRcdHR5cGUgPSBvcmlnVHlwZSA9IHRtcFsgMSBdO1xuXHRcdFx0bmFtZXNwYWNlcyA9ICggdG1wWyAyIF0gfHwgXCJcIiApLnNwbGl0KCBcIi5cIiApLnNvcnQoKTtcblxuXHRcdFx0Ly8gVW5iaW5kIGFsbCBldmVudHMgKG9uIHRoaXMgbmFtZXNwYWNlLCBpZiBwcm92aWRlZCkgZm9yIHRoZSBlbGVtZW50XG5cdFx0XHRpZiAoICF0eXBlICkge1xuXHRcdFx0XHRmb3IgKCB0eXBlIGluIGV2ZW50cyApIHtcblx0XHRcdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCBlbGVtLCB0eXBlICsgdHlwZXNbIHQgXSwgaGFuZGxlciwgc2VsZWN0b3IsIHRydWUgKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0XHR0eXBlID0gKCBzZWxlY3RvciA/IHNwZWNpYWwuZGVsZWdhdGVUeXBlIDogc3BlY2lhbC5iaW5kVHlwZSApIHx8IHR5cGU7XG5cdFx0XHRoYW5kbGVycyA9IGV2ZW50c1sgdHlwZSBdIHx8IFtdO1xuXHRcdFx0dG1wID0gdG1wWyAyIF0gJiZcblx0XHRcdFx0bmV3IFJlZ0V4cCggXCIoXnxcXFxcLilcIiArIG5hbWVzcGFjZXMuam9pbiggXCJcXFxcLig/Oi4qXFxcXC58KVwiICkgKyBcIihcXFxcLnwkKVwiICk7XG5cblx0XHRcdC8vIFJlbW92ZSBtYXRjaGluZyBldmVudHNcblx0XHRcdG9yaWdDb3VudCA9IGogPSBoYW5kbGVycy5sZW5ndGg7XG5cdFx0XHR3aGlsZSAoIGotLSApIHtcblx0XHRcdFx0aGFuZGxlT2JqID0gaGFuZGxlcnNbIGogXTtcblxuXHRcdFx0XHRpZiAoICggbWFwcGVkVHlwZXMgfHwgb3JpZ1R5cGUgPT09IGhhbmRsZU9iai5vcmlnVHlwZSApICYmXG5cdFx0XHRcdFx0KCAhaGFuZGxlciB8fCBoYW5kbGVyLmd1aWQgPT09IGhhbmRsZU9iai5ndWlkICkgJiZcblx0XHRcdFx0XHQoICF0bXAgfHwgdG1wLnRlc3QoIGhhbmRsZU9iai5uYW1lc3BhY2UgKSApICYmXG5cdFx0XHRcdFx0KCAhc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09IGhhbmRsZU9iai5zZWxlY3RvciB8fFxuXHRcdFx0XHRcdFx0c2VsZWN0b3IgPT09IFwiKipcIiAmJiBoYW5kbGVPYmouc2VsZWN0b3IgKSApIHtcblx0XHRcdFx0XHRoYW5kbGVycy5zcGxpY2UoIGosIDEgKTtcblxuXHRcdFx0XHRcdGlmICggaGFuZGxlT2JqLnNlbGVjdG9yICkge1xuXHRcdFx0XHRcdFx0aGFuZGxlcnMuZGVsZWdhdGVDb3VudC0tO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoIHNwZWNpYWwucmVtb3ZlICkge1xuXHRcdFx0XHRcdFx0c3BlY2lhbC5yZW1vdmUuY2FsbCggZWxlbSwgaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJlbW92ZSBnZW5lcmljIGV2ZW50IGhhbmRsZXIgaWYgd2UgcmVtb3ZlZCBzb21ldGhpbmcgYW5kIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3Rcblx0XHRcdC8vIChhdm9pZHMgcG90ZW50aWFsIGZvciBlbmRsZXNzIHJlY3Vyc2lvbiBkdXJpbmcgcmVtb3ZhbCBvZiBzcGVjaWFsIGV2ZW50IGhhbmRsZXJzKVxuXHRcdFx0aWYgKCBvcmlnQ291bnQgJiYgIWhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0aWYgKCAhc3BlY2lhbC50ZWFyZG93biB8fFxuXHRcdFx0XHRcdHNwZWNpYWwudGVhcmRvd24uY2FsbCggZWxlbSwgbmFtZXNwYWNlcywgZWxlbURhdGEuaGFuZGxlICkgPT09IGZhbHNlICkge1xuXG5cdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBlbGVtRGF0YS5oYW5kbGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGRlbGV0ZSBldmVudHNbIHR5cGUgXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBSZW1vdmUgZGF0YSBhbmQgdGhlIGV4cGFuZG8gaWYgaXQncyBubyBsb25nZXIgdXNlZFxuXHRcdGlmICggalF1ZXJ5LmlzRW1wdHlPYmplY3QoIGV2ZW50cyApICkge1xuXHRcdFx0ZGF0YVByaXYucmVtb3ZlKCBlbGVtLCBcImhhbmRsZSBldmVudHNcIiApO1xuXHRcdH1cblx0fSxcblxuXHRkaXNwYXRjaDogZnVuY3Rpb24oIG5hdGl2ZUV2ZW50ICkge1xuXG5cdFx0Ly8gTWFrZSBhIHdyaXRhYmxlIGpRdWVyeS5FdmVudCBmcm9tIHRoZSBuYXRpdmUgZXZlbnQgb2JqZWN0XG5cdFx0dmFyIGV2ZW50ID0galF1ZXJ5LmV2ZW50LmZpeCggbmF0aXZlRXZlbnQgKTtcblxuXHRcdHZhciBpLCBqLCByZXQsIG1hdGNoZWQsIGhhbmRsZU9iaiwgaGFuZGxlclF1ZXVlLFxuXHRcdFx0YXJncyA9IG5ldyBBcnJheSggYXJndW1lbnRzLmxlbmd0aCApLFxuXHRcdFx0aGFuZGxlcnMgPSAoIGRhdGFQcml2LmdldCggdGhpcywgXCJldmVudHNcIiApIHx8IHt9IClbIGV2ZW50LnR5cGUgXSB8fCBbXSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZXZlbnQudHlwZSBdIHx8IHt9O1xuXG5cdFx0Ly8gVXNlIHRoZSBmaXgtZWQgalF1ZXJ5LkV2ZW50IHJhdGhlciB0aGFuIHRoZSAocmVhZC1vbmx5KSBuYXRpdmUgZXZlbnRcblx0XHRhcmdzWyAwIF0gPSBldmVudDtcblxuXHRcdGZvciAoIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0YXJnc1sgaSBdID0gYXJndW1lbnRzWyBpIF07XG5cdFx0fVxuXG5cdFx0ZXZlbnQuZGVsZWdhdGVUYXJnZXQgPSB0aGlzO1xuXG5cdFx0Ly8gQ2FsbCB0aGUgcHJlRGlzcGF0Y2ggaG9vayBmb3IgdGhlIG1hcHBlZCB0eXBlLCBhbmQgbGV0IGl0IGJhaWwgaWYgZGVzaXJlZFxuXHRcdGlmICggc3BlY2lhbC5wcmVEaXNwYXRjaCAmJiBzcGVjaWFsLnByZURpc3BhdGNoLmNhbGwoIHRoaXMsIGV2ZW50ICkgPT09IGZhbHNlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIERldGVybWluZSBoYW5kbGVyc1xuXHRcdGhhbmRsZXJRdWV1ZSA9IGpRdWVyeS5ldmVudC5oYW5kbGVycy5jYWxsKCB0aGlzLCBldmVudCwgaGFuZGxlcnMgKTtcblxuXHRcdC8vIFJ1biBkZWxlZ2F0ZXMgZmlyc3Q7IHRoZXkgbWF5IHdhbnQgdG8gc3RvcCBwcm9wYWdhdGlvbiBiZW5lYXRoIHVzXG5cdFx0aSA9IDA7XG5cdFx0d2hpbGUgKCAoIG1hdGNoZWQgPSBoYW5kbGVyUXVldWVbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRldmVudC5jdXJyZW50VGFyZ2V0ID0gbWF0Y2hlZC5lbGVtO1xuXG5cdFx0XHRqID0gMDtcblx0XHRcdHdoaWxlICggKCBoYW5kbGVPYmogPSBtYXRjaGVkLmhhbmRsZXJzWyBqKysgXSApICYmXG5cdFx0XHRcdCFldmVudC5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXG5cdFx0XHRcdC8vIFRyaWdnZXJlZCBldmVudCBtdXN0IGVpdGhlciAxKSBoYXZlIG5vIG5hbWVzcGFjZSwgb3IgMikgaGF2ZSBuYW1lc3BhY2Uocylcblx0XHRcdFx0Ly8gYSBzdWJzZXQgb3IgZXF1YWwgdG8gdGhvc2UgaW4gdGhlIGJvdW5kIGV2ZW50IChib3RoIGNhbiBoYXZlIG5vIG5hbWVzcGFjZSkuXG5cdFx0XHRcdGlmICggIWV2ZW50LnJuYW1lc3BhY2UgfHwgZXZlbnQucm5hbWVzcGFjZS50ZXN0KCBoYW5kbGVPYmoubmFtZXNwYWNlICkgKSB7XG5cblx0XHRcdFx0XHRldmVudC5oYW5kbGVPYmogPSBoYW5kbGVPYmo7XG5cdFx0XHRcdFx0ZXZlbnQuZGF0YSA9IGhhbmRsZU9iai5kYXRhO1xuXG5cdFx0XHRcdFx0cmV0ID0gKCAoIGpRdWVyeS5ldmVudC5zcGVjaWFsWyBoYW5kbGVPYmoub3JpZ1R5cGUgXSB8fCB7fSApLmhhbmRsZSB8fFxuXHRcdFx0XHRcdFx0aGFuZGxlT2JqLmhhbmRsZXIgKS5hcHBseSggbWF0Y2hlZC5lbGVtLCBhcmdzICk7XG5cblx0XHRcdFx0XHRpZiAoIHJldCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0aWYgKCAoIGV2ZW50LnJlc3VsdCA9IHJldCApID09PSBmYWxzZSApIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ2FsbCB0aGUgcG9zdERpc3BhdGNoIGhvb2sgZm9yIHRoZSBtYXBwZWQgdHlwZVxuXHRcdGlmICggc3BlY2lhbC5wb3N0RGlzcGF0Y2ggKSB7XG5cdFx0XHRzcGVjaWFsLnBvc3REaXNwYXRjaC5jYWxsKCB0aGlzLCBldmVudCApO1xuXHRcdH1cblxuXHRcdHJldHVybiBldmVudC5yZXN1bHQ7XG5cdH0sXG5cblx0aGFuZGxlcnM6IGZ1bmN0aW9uKCBldmVudCwgaGFuZGxlcnMgKSB7XG5cdFx0dmFyIGksIGhhbmRsZU9iaiwgc2VsLCBtYXRjaGVkSGFuZGxlcnMsIG1hdGNoZWRTZWxlY3RvcnMsXG5cdFx0XHRoYW5kbGVyUXVldWUgPSBbXSxcblx0XHRcdGRlbGVnYXRlQ291bnQgPSBoYW5kbGVycy5kZWxlZ2F0ZUNvdW50LFxuXHRcdFx0Y3VyID0gZXZlbnQudGFyZ2V0O1xuXG5cdFx0Ly8gRmluZCBkZWxlZ2F0ZSBoYW5kbGVyc1xuXHRcdGlmICggZGVsZWdhdGVDb3VudCAmJlxuXG5cdFx0XHQvLyBTdXBwb3J0OiBJRSA8PTlcblx0XHRcdC8vIEJsYWNrLWhvbGUgU1ZHIDx1c2U+IGluc3RhbmNlIHRyZWVzICh0cmFjLTEzMTgwKVxuXHRcdFx0Y3VyLm5vZGVUeXBlICYmXG5cblx0XHRcdC8vIFN1cHBvcnQ6IEZpcmVmb3ggPD00MlxuXHRcdFx0Ly8gU3VwcHJlc3Mgc3BlYy12aW9sYXRpbmcgY2xpY2tzIGluZGljYXRpbmcgYSBub24tcHJpbWFyeSBwb2ludGVyIGJ1dHRvbiAodHJhYy0zODYxKVxuXHRcdFx0Ly8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnQtdHlwZS1jbGlja1xuXHRcdFx0Ly8gU3VwcG9ydDogSUUgMTEgb25seVxuXHRcdFx0Ly8gLi4uYnV0IG5vdCBhcnJvdyBrZXkgXCJjbGlja3NcIiBvZiByYWRpbyBpbnB1dHMsIHdoaWNoIGNhbiBoYXZlIGBidXR0b25gIC0xIChnaC0yMzQzKVxuXHRcdFx0ISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGV2ZW50LmJ1dHRvbiA+PSAxICkgKSB7XG5cblx0XHRcdGZvciAoIDsgY3VyICE9PSB0aGlzOyBjdXIgPSBjdXIucGFyZW50Tm9kZSB8fCB0aGlzICkge1xuXG5cdFx0XHRcdC8vIERvbid0IGNoZWNrIG5vbi1lbGVtZW50cyAoIzEzMjA4KVxuXHRcdFx0XHQvLyBEb24ndCBwcm9jZXNzIGNsaWNrcyBvbiBkaXNhYmxlZCBlbGVtZW50cyAoIzY5MTEsICM4MTY1LCAjMTEzODIsICMxMTc2NClcblx0XHRcdFx0aWYgKCBjdXIubm9kZVR5cGUgPT09IDEgJiYgISggZXZlbnQudHlwZSA9PT0gXCJjbGlja1wiICYmIGN1ci5kaXNhYmxlZCA9PT0gdHJ1ZSApICkge1xuXHRcdFx0XHRcdG1hdGNoZWRIYW5kbGVycyA9IFtdO1xuXHRcdFx0XHRcdG1hdGNoZWRTZWxlY3RvcnMgPSB7fTtcblx0XHRcdFx0XHRmb3IgKCBpID0gMDsgaSA8IGRlbGVnYXRlQ291bnQ7IGkrKyApIHtcblx0XHRcdFx0XHRcdGhhbmRsZU9iaiA9IGhhbmRsZXJzWyBpIF07XG5cblx0XHRcdFx0XHRcdC8vIERvbid0IGNvbmZsaWN0IHdpdGggT2JqZWN0LnByb3RvdHlwZSBwcm9wZXJ0aWVzICgjMTMyMDMpXG5cdFx0XHRcdFx0XHRzZWwgPSBoYW5kbGVPYmouc2VsZWN0b3IgKyBcIiBcIjtcblxuXHRcdFx0XHRcdFx0aWYgKCBtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkU2VsZWN0b3JzWyBzZWwgXSA9IGhhbmRsZU9iai5uZWVkc0NvbnRleHQgP1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeSggc2VsLCB0aGlzICkuaW5kZXgoIGN1ciApID4gLTEgOlxuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5maW5kKCBzZWwsIHRoaXMsIG51bGwsIFsgY3VyIF0gKS5sZW5ndGg7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZiAoIG1hdGNoZWRTZWxlY3RvcnNbIHNlbCBdICkge1xuXHRcdFx0XHRcdFx0XHRtYXRjaGVkSGFuZGxlcnMucHVzaCggaGFuZGxlT2JqICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmICggbWF0Y2hlZEhhbmRsZXJzLmxlbmd0aCApIHtcblx0XHRcdFx0XHRcdGhhbmRsZXJRdWV1ZS5wdXNoKCB7IGVsZW06IGN1ciwgaGFuZGxlcnM6IG1hdGNoZWRIYW5kbGVycyB9ICk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQWRkIHRoZSByZW1haW5pbmcgKGRpcmVjdGx5LWJvdW5kKSBoYW5kbGVyc1xuXHRcdGN1ciA9IHRoaXM7XG5cdFx0aWYgKCBkZWxlZ2F0ZUNvdW50IDwgaGFuZGxlcnMubGVuZ3RoICkge1xuXHRcdFx0aGFuZGxlclF1ZXVlLnB1c2goIHsgZWxlbTogY3VyLCBoYW5kbGVyczogaGFuZGxlcnMuc2xpY2UoIGRlbGVnYXRlQ291bnQgKSB9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGhhbmRsZXJRdWV1ZTtcblx0fSxcblxuXHRhZGRQcm9wOiBmdW5jdGlvbiggbmFtZSwgaG9vayApIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoIGpRdWVyeS5FdmVudC5wcm90b3R5cGUsIG5hbWUsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cblx0XHRcdGdldDogaXNGdW5jdGlvbiggaG9vayApID9cblx0XHRcdFx0ZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBob29rKCB0aGlzLm9yaWdpbmFsRXZlbnQgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gOlxuXHRcdFx0XHRmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRpZiAoIHRoaXMub3JpZ2luYWxFdmVudCApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFsgbmFtZSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblxuXHRcdFx0c2V0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eSggdGhpcywgbmFtZSwge1xuXHRcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXG5cdGZpeDogZnVuY3Rpb24oIG9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0cmV0dXJuIG9yaWdpbmFsRXZlbnRbIGpRdWVyeS5leHBhbmRvIF0gP1xuXHRcdFx0b3JpZ2luYWxFdmVudCA6XG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCBvcmlnaW5hbEV2ZW50ICk7XG5cdH0sXG5cblx0c3BlY2lhbDoge1xuXHRcdGxvYWQ6IHtcblxuXHRcdFx0Ly8gUHJldmVudCB0cmlnZ2VyZWQgaW1hZ2UubG9hZCBldmVudHMgZnJvbSBidWJibGluZyB0byB3aW5kb3cubG9hZFxuXHRcdFx0bm9CdWJibGU6IHRydWVcblx0XHR9LFxuXHRcdGZvY3VzOiB7XG5cblx0XHRcdC8vIEZpcmUgbmF0aXZlIGV2ZW50IGlmIHBvc3NpYmxlIHNvIGJsdXIvZm9jdXMgc2VxdWVuY2UgaXMgY29ycmVjdFxuXHRcdFx0dHJpZ2dlcjogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggdGhpcyAhPT0gc2FmZUFjdGl2ZUVsZW1lbnQoKSAmJiB0aGlzLmZvY3VzICkge1xuXHRcdFx0XHRcdHRoaXMuZm9jdXMoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNpblwiXG5cdFx0fSxcblx0XHRibHVyOiB7XG5cdFx0XHR0cmlnZ2VyOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCB0aGlzID09PSBzYWZlQWN0aXZlRWxlbWVudCgpICYmIHRoaXMuYmx1ciApIHtcblx0XHRcdFx0XHR0aGlzLmJsdXIoKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkZWxlZ2F0ZVR5cGU6IFwiZm9jdXNvdXRcIlxuXHRcdH0sXG5cdFx0Y2xpY2s6IHtcblxuXHRcdFx0Ly8gRm9yIGNoZWNrYm94LCBmaXJlIG5hdGl2ZSBldmVudCBzbyBjaGVja2VkIHN0YXRlIHdpbGwgYmUgcmlnaHRcblx0XHRcdHRyaWdnZXI6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIHRoaXMudHlwZSA9PT0gXCJjaGVja2JveFwiICYmIHRoaXMuY2xpY2sgJiYgbm9kZU5hbWUoIHRoaXMsIFwiaW5wdXRcIiApICkge1xuXHRcdFx0XHRcdHRoaXMuY2xpY2soKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cblx0XHRcdC8vIEZvciBjcm9zcy1icm93c2VyIGNvbnNpc3RlbmN5LCBkb24ndCBmaXJlIG5hdGl2ZSAuY2xpY2soKSBvbiBsaW5rc1xuXHRcdFx0X2RlZmF1bHQ6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdFx0cmV0dXJuIG5vZGVOYW1lKCBldmVudC50YXJnZXQsIFwiYVwiICk7XG5cdFx0XHR9XG5cdFx0fSxcblxuXHRcdGJlZm9yZXVubG9hZDoge1xuXHRcdFx0cG9zdERpc3BhdGNoOiBmdW5jdGlvbiggZXZlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogRmlyZWZveCAyMCtcblx0XHRcdFx0Ly8gRmlyZWZveCBkb2Vzbid0IGFsZXJ0IGlmIHRoZSByZXR1cm5WYWx1ZSBmaWVsZCBpcyBub3Qgc2V0LlxuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCAhPT0gdW5kZWZpbmVkICYmIGV2ZW50Lm9yaWdpbmFsRXZlbnQgKSB7XG5cdFx0XHRcdFx0ZXZlbnQub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZSA9IGV2ZW50LnJlc3VsdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxualF1ZXJ5LnJlbW92ZUV2ZW50ID0gZnVuY3Rpb24oIGVsZW0sIHR5cGUsIGhhbmRsZSApIHtcblxuXHQvLyBUaGlzIFwiaWZcIiBpcyBuZWVkZWQgZm9yIHBsYWluIG9iamVjdHNcblx0aWYgKCBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIgKSB7XG5cdFx0ZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKCB0eXBlLCBoYW5kbGUgKTtcblx0fVxufTtcblxualF1ZXJ5LkV2ZW50ID0gZnVuY3Rpb24oIHNyYywgcHJvcHMgKSB7XG5cblx0Ly8gQWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IHRoZSAnbmV3JyBrZXl3b3JkXG5cdGlmICggISggdGhpcyBpbnN0YW5jZW9mIGpRdWVyeS5FdmVudCApICkge1xuXHRcdHJldHVybiBuZXcgalF1ZXJ5LkV2ZW50KCBzcmMsIHByb3BzICk7XG5cdH1cblxuXHQvLyBFdmVudCBvYmplY3Rcblx0aWYgKCBzcmMgJiYgc3JjLnR5cGUgKSB7XG5cdFx0dGhpcy5vcmlnaW5hbEV2ZW50ID0gc3JjO1xuXHRcdHRoaXMudHlwZSA9IHNyYy50eXBlO1xuXG5cdFx0Ly8gRXZlbnRzIGJ1YmJsaW5nIHVwIHRoZSBkb2N1bWVudCBtYXkgaGF2ZSBiZWVuIG1hcmtlZCBhcyBwcmV2ZW50ZWRcblx0XHQvLyBieSBhIGhhbmRsZXIgbG93ZXIgZG93biB0aGUgdHJlZTsgcmVmbGVjdCB0aGUgY29ycmVjdCB2YWx1ZS5cblx0XHR0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IHNyYy5kZWZhdWx0UHJldmVudGVkIHx8XG5cdFx0XHRcdHNyYy5kZWZhdWx0UHJldmVudGVkID09PSB1bmRlZmluZWQgJiZcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9Mi4zIG9ubHlcblx0XHRcdFx0c3JjLnJldHVyblZhbHVlID09PSBmYWxzZSA/XG5cdFx0XHRyZXR1cm5UcnVlIDpcblx0XHRcdHJldHVybkZhbHNlO1xuXG5cdFx0Ly8gQ3JlYXRlIHRhcmdldCBwcm9wZXJ0aWVzXG5cdFx0Ly8gU3VwcG9ydDogU2FmYXJpIDw9NiAtIDcgb25seVxuXHRcdC8vIFRhcmdldCBzaG91bGQgbm90IGJlIGEgdGV4dCBub2RlICgjNTA0LCAjMTMxNDMpXG5cdFx0dGhpcy50YXJnZXQgPSAoIHNyYy50YXJnZXQgJiYgc3JjLnRhcmdldC5ub2RlVHlwZSA9PT0gMyApID9cblx0XHRcdHNyYy50YXJnZXQucGFyZW50Tm9kZSA6XG5cdFx0XHRzcmMudGFyZ2V0O1xuXG5cdFx0dGhpcy5jdXJyZW50VGFyZ2V0ID0gc3JjLmN1cnJlbnRUYXJnZXQ7XG5cdFx0dGhpcy5yZWxhdGVkVGFyZ2V0ID0gc3JjLnJlbGF0ZWRUYXJnZXQ7XG5cblx0Ly8gRXZlbnQgdHlwZVxuXHR9IGVsc2Uge1xuXHRcdHRoaXMudHlwZSA9IHNyYztcblx0fVxuXG5cdC8vIFB1dCBleHBsaWNpdGx5IHByb3ZpZGVkIHByb3BlcnRpZXMgb250byB0aGUgZXZlbnQgb2JqZWN0XG5cdGlmICggcHJvcHMgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdGhpcywgcHJvcHMgKTtcblx0fVxuXG5cdC8vIENyZWF0ZSBhIHRpbWVzdGFtcCBpZiBpbmNvbWluZyBldmVudCBkb2Vzbid0IGhhdmUgb25lXG5cdHRoaXMudGltZVN0YW1wID0gc3JjICYmIHNyYy50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTtcblxuXHQvLyBNYXJrIGl0IGFzIGZpeGVkXG5cdHRoaXNbIGpRdWVyeS5leHBhbmRvIF0gPSB0cnVlO1xufTtcblxuLy8galF1ZXJ5LkV2ZW50IGlzIGJhc2VkIG9uIERPTTMgRXZlbnRzIGFzIHNwZWNpZmllZCBieSB0aGUgRUNNQVNjcmlwdCBMYW5ndWFnZSBCaW5kaW5nXG4vLyBodHRwczovL3d3dy53My5vcmcvVFIvMjAwMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAwMzAzMzEvZWNtYS1zY3JpcHQtYmluZGluZy5odG1sXG5qUXVlcnkuRXZlbnQucHJvdG90eXBlID0ge1xuXHRjb25zdHJ1Y3RvcjogalF1ZXJ5LkV2ZW50LFxuXHRpc0RlZmF1bHRQcmV2ZW50ZWQ6IHJldHVybkZhbHNlLFxuXHRpc1Byb3BhZ2F0aW9uU3RvcHBlZDogcmV0dXJuRmFsc2UsXG5cdGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOiByZXR1cm5GYWxzZSxcblx0aXNTaW11bGF0ZWQ6IGZhbHNlLFxuXG5cdHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpIHtcblx0XHR2YXIgZSA9IHRoaXMub3JpZ2luYWxFdmVudDtcblxuXHRcdHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHR9XG5cdH0sXG5cdHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGUgPSB0aGlzLm9yaWdpbmFsRXZlbnQ7XG5cblx0XHR0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gcmV0dXJuVHJ1ZTtcblxuXHRcdGlmICggZSAmJiAhdGhpcy5pc1NpbXVsYXRlZCApIHtcblx0XHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0fVxuXHR9LFxuXHRzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlID0gdGhpcy5vcmlnaW5hbEV2ZW50O1xuXG5cdFx0dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCA9IHJldHVyblRydWU7XG5cblx0XHRpZiAoIGUgJiYgIXRoaXMuaXNTaW11bGF0ZWQgKSB7XG5cdFx0XHRlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXHRcdH1cblxuXHRcdHRoaXMuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdH1cbn07XG5cbi8vIEluY2x1ZGVzIGFsbCBjb21tb24gZXZlbnQgcHJvcHMgaW5jbHVkaW5nIEtleUV2ZW50IGFuZCBNb3VzZUV2ZW50IHNwZWNpZmljIHByb3BzXG5qUXVlcnkuZWFjaCgge1xuXHRhbHRLZXk6IHRydWUsXG5cdGJ1YmJsZXM6IHRydWUsXG5cdGNhbmNlbGFibGU6IHRydWUsXG5cdGNoYW5nZWRUb3VjaGVzOiB0cnVlLFxuXHRjdHJsS2V5OiB0cnVlLFxuXHRkZXRhaWw6IHRydWUsXG5cdGV2ZW50UGhhc2U6IHRydWUsXG5cdG1ldGFLZXk6IHRydWUsXG5cdHBhZ2VYOiB0cnVlLFxuXHRwYWdlWTogdHJ1ZSxcblx0c2hpZnRLZXk6IHRydWUsXG5cdHZpZXc6IHRydWUsXG5cdFwiY2hhclwiOiB0cnVlLFxuXHRjaGFyQ29kZTogdHJ1ZSxcblx0a2V5OiB0cnVlLFxuXHRrZXlDb2RlOiB0cnVlLFxuXHRidXR0b246IHRydWUsXG5cdGJ1dHRvbnM6IHRydWUsXG5cdGNsaWVudFg6IHRydWUsXG5cdGNsaWVudFk6IHRydWUsXG5cdG9mZnNldFg6IHRydWUsXG5cdG9mZnNldFk6IHRydWUsXG5cdHBvaW50ZXJJZDogdHJ1ZSxcblx0cG9pbnRlclR5cGU6IHRydWUsXG5cdHNjcmVlblg6IHRydWUsXG5cdHNjcmVlblk6IHRydWUsXG5cdHRhcmdldFRvdWNoZXM6IHRydWUsXG5cdHRvRWxlbWVudDogdHJ1ZSxcblx0dG91Y2hlczogdHJ1ZSxcblxuXHR3aGljaDogZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdHZhciBidXR0b24gPSBldmVudC5idXR0b247XG5cblx0XHQvLyBBZGQgd2hpY2ggZm9yIGtleSBldmVudHNcblx0XHRpZiAoIGV2ZW50LndoaWNoID09IG51bGwgJiYgcmtleUV2ZW50LnRlc3QoIGV2ZW50LnR5cGUgKSApIHtcblx0XHRcdHJldHVybiBldmVudC5jaGFyQ29kZSAhPSBudWxsID8gZXZlbnQuY2hhckNvZGUgOiBldmVudC5rZXlDb2RlO1xuXHRcdH1cblxuXHRcdC8vIEFkZCB3aGljaCBmb3IgY2xpY2s6IDEgPT09IGxlZnQ7IDIgPT09IG1pZGRsZTsgMyA9PT0gcmlnaHRcblx0XHRpZiAoICFldmVudC53aGljaCAmJiBidXR0b24gIT09IHVuZGVmaW5lZCAmJiBybW91c2VFdmVudC50ZXN0KCBldmVudC50eXBlICkgKSB7XG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDEgKSB7XG5cdFx0XHRcdHJldHVybiAxO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDIgKSB7XG5cdFx0XHRcdHJldHVybiAzO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIGJ1dHRvbiAmIDQgKSB7XG5cdFx0XHRcdHJldHVybiAyO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHRyZXR1cm4gZXZlbnQud2hpY2g7XG5cdH1cbn0sIGpRdWVyeS5ldmVudC5hZGRQcm9wICk7XG5cbi8vIENyZWF0ZSBtb3VzZWVudGVyL2xlYXZlIGV2ZW50cyB1c2luZyBtb3VzZW92ZXIvb3V0IGFuZCBldmVudC10aW1lIGNoZWNrc1xuLy8gc28gdGhhdCBldmVudCBkZWxlZ2F0aW9uIHdvcmtzIGluIGpRdWVyeS5cbi8vIERvIHRoZSBzYW1lIGZvciBwb2ludGVyZW50ZXIvcG9pbnRlcmxlYXZlIGFuZCBwb2ludGVyb3Zlci9wb2ludGVyb3V0XG4vL1xuLy8gU3VwcG9ydDogU2FmYXJpIDcgb25seVxuLy8gU2FmYXJpIHNlbmRzIG1vdXNlZW50ZXIgdG9vIG9mdGVuOyBzZWU6XG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD00NzAyNThcbi8vIGZvciB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGJ1ZyAoaXQgZXhpc3RlZCBpbiBvbGRlciBDaHJvbWUgdmVyc2lvbnMgYXMgd2VsbCkuXG5qUXVlcnkuZWFjaCgge1xuXHRtb3VzZWVudGVyOiBcIm1vdXNlb3ZlclwiLFxuXHRtb3VzZWxlYXZlOiBcIm1vdXNlb3V0XCIsXG5cdHBvaW50ZXJlbnRlcjogXCJwb2ludGVyb3ZlclwiLFxuXHRwb2ludGVybGVhdmU6IFwicG9pbnRlcm91dFwiXG59LCBmdW5jdGlvbiggb3JpZywgZml4ICkge1xuXHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgb3JpZyBdID0ge1xuXHRcdGRlbGVnYXRlVHlwZTogZml4LFxuXHRcdGJpbmRUeXBlOiBmaXgsXG5cblx0XHRoYW5kbGU6IGZ1bmN0aW9uKCBldmVudCApIHtcblx0XHRcdHZhciByZXQsXG5cdFx0XHRcdHRhcmdldCA9IHRoaXMsXG5cdFx0XHRcdHJlbGF0ZWQgPSBldmVudC5yZWxhdGVkVGFyZ2V0LFxuXHRcdFx0XHRoYW5kbGVPYmogPSBldmVudC5oYW5kbGVPYmo7XG5cblx0XHRcdC8vIEZvciBtb3VzZWVudGVyL2xlYXZlIGNhbGwgdGhlIGhhbmRsZXIgaWYgcmVsYXRlZCBpcyBvdXRzaWRlIHRoZSB0YXJnZXQuXG5cdFx0XHQvLyBOQjogTm8gcmVsYXRlZFRhcmdldCBpZiB0aGUgbW91c2UgbGVmdC9lbnRlcmVkIHRoZSBicm93c2VyIHdpbmRvd1xuXHRcdFx0aWYgKCAhcmVsYXRlZCB8fCAoIHJlbGF0ZWQgIT09IHRhcmdldCAmJiAhalF1ZXJ5LmNvbnRhaW5zKCB0YXJnZXQsIHJlbGF0ZWQgKSApICkge1xuXHRcdFx0XHRldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuXHRcdFx0XHRyZXQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSggdGhpcywgYXJndW1lbnRzICk7XG5cdFx0XHRcdGV2ZW50LnR5cGUgPSBmaXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXG5cdG9uOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4gKTtcblx0fSxcblx0b25lOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gb24oIHRoaXMsIHR5cGVzLCBzZWxlY3RvciwgZGF0YSwgZm4sIDEgKTtcblx0fSxcblx0b2ZmOiBmdW5jdGlvbiggdHlwZXMsIHNlbGVjdG9yLCBmbiApIHtcblx0XHR2YXIgaGFuZGxlT2JqLCB0eXBlO1xuXHRcdGlmICggdHlwZXMgJiYgdHlwZXMucHJldmVudERlZmF1bHQgJiYgdHlwZXMuaGFuZGxlT2JqICkge1xuXG5cdFx0XHQvLyAoIGV2ZW50ICkgIGRpc3BhdGNoZWQgalF1ZXJ5LkV2ZW50XG5cdFx0XHRoYW5kbGVPYmogPSB0eXBlcy5oYW5kbGVPYmo7XG5cdFx0XHRqUXVlcnkoIHR5cGVzLmRlbGVnYXRlVGFyZ2V0ICkub2ZmKFxuXHRcdFx0XHRoYW5kbGVPYmoubmFtZXNwYWNlID9cblx0XHRcdFx0XHRoYW5kbGVPYmoub3JpZ1R5cGUgKyBcIi5cIiArIGhhbmRsZU9iai5uYW1lc3BhY2UgOlxuXHRcdFx0XHRcdGhhbmRsZU9iai5vcmlnVHlwZSxcblx0XHRcdFx0aGFuZGxlT2JqLnNlbGVjdG9yLFxuXHRcdFx0XHRoYW5kbGVPYmouaGFuZGxlclxuXHRcdFx0KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0XHRpZiAoIHR5cGVvZiB0eXBlcyA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdFx0Ly8gKCB0eXBlcy1vYmplY3QgWywgc2VsZWN0b3JdIClcblx0XHRcdGZvciAoIHR5cGUgaW4gdHlwZXMgKSB7XG5cdFx0XHRcdHRoaXMub2ZmKCB0eXBlLCBzZWxlY3RvciwgdHlwZXNbIHR5cGUgXSApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICggc2VsZWN0b3IgPT09IGZhbHNlIHx8IHR5cGVvZiBzZWxlY3RvciA9PT0gXCJmdW5jdGlvblwiICkge1xuXG5cdFx0XHQvLyAoIHR5cGVzIFssIGZuXSApXG5cdFx0XHRmbiA9IHNlbGVjdG9yO1xuXHRcdFx0c2VsZWN0b3IgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGlmICggZm4gPT09IGZhbHNlICkge1xuXHRcdFx0Zm4gPSByZXR1cm5GYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRqUXVlcnkuZXZlbnQucmVtb3ZlKCB0aGlzLCB0eXBlcywgZm4sIHNlbGVjdG9yICk7XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cblxudmFyXG5cblx0LyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuXG5cdC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXNsaW50L2VzbGludC9pc3N1ZXMvMzIyOVxuXHRyeGh0bWxUYWcgPSAvPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbYS16XVteXFwvXFwwPlxceDIwXFx0XFxyXFxuXFxmXSopW14+XSopXFwvPi9naSxcblxuXHQvKiBlc2xpbnQtZW5hYmxlICovXG5cblx0Ly8gU3VwcG9ydDogSUUgPD0xMCAtIDExLCBFZGdlIDEyIC0gMTMgb25seVxuXHQvLyBJbiBJRS9FZGdlIHVzaW5nIHJlZ2V4IGdyb3VwcyBoZXJlIGNhdXNlcyBzZXZlcmUgc2xvd2Rvd25zLlxuXHQvLyBTZWUgaHR0cHM6Ly9jb25uZWN0Lm1pY3Jvc29mdC5jb20vSUUvZmVlZGJhY2svZGV0YWlscy8xNzM2NTEyL1xuXHRybm9Jbm5lcmh0bWwgPSAvPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxcblxuXHQvLyBjaGVja2VkPVwiY2hlY2tlZFwiIG9yIGNoZWNrZWRcblx0cmNoZWNrZWQgPSAvY2hlY2tlZFxccyooPzpbXj1dfD1cXHMqLmNoZWNrZWQuKS9pLFxuXHRyY2xlYW5TY3JpcHQgPSAvXlxccyo8ISg/OlxcW0NEQVRBXFxbfC0tKXwoPzpcXF1cXF18LS0pPlxccyokL2c7XG5cbi8vIFByZWZlciBhIHRib2R5IG92ZXIgaXRzIHBhcmVudCB0YWJsZSBmb3IgY29udGFpbmluZyBuZXcgcm93c1xuZnVuY3Rpb24gbWFuaXB1bGF0aW9uVGFyZ2V0KCBlbGVtLCBjb250ZW50ICkge1xuXHRpZiAoIG5vZGVOYW1lKCBlbGVtLCBcInRhYmxlXCIgKSAmJlxuXHRcdG5vZGVOYW1lKCBjb250ZW50Lm5vZGVUeXBlICE9PSAxMSA/IGNvbnRlbnQgOiBjb250ZW50LmZpcnN0Q2hpbGQsIFwidHJcIiApICkge1xuXG5cdFx0cmV0dXJuIGpRdWVyeSggZWxlbSApLmNoaWxkcmVuKCBcInRib2R5XCIgKVsgMCBdIHx8IGVsZW07XG5cdH1cblxuXHRyZXR1cm4gZWxlbTtcbn1cblxuLy8gUmVwbGFjZS9yZXN0b3JlIHRoZSB0eXBlIGF0dHJpYnV0ZSBvZiBzY3JpcHQgZWxlbWVudHMgZm9yIHNhZmUgRE9NIG1hbmlwdWxhdGlvblxuZnVuY3Rpb24gZGlzYWJsZVNjcmlwdCggZWxlbSApIHtcblx0ZWxlbS50eXBlID0gKCBlbGVtLmdldEF0dHJpYnV0ZSggXCJ0eXBlXCIgKSAhPT0gbnVsbCApICsgXCIvXCIgKyBlbGVtLnR5cGU7XG5cdHJldHVybiBlbGVtO1xufVxuZnVuY3Rpb24gcmVzdG9yZVNjcmlwdCggZWxlbSApIHtcblx0aWYgKCAoIGVsZW0udHlwZSB8fCBcIlwiICkuc2xpY2UoIDAsIDUgKSA9PT0gXCJ0cnVlL1wiICkge1xuXHRcdGVsZW0udHlwZSA9IGVsZW0udHlwZS5zbGljZSggNSApO1xuXHR9IGVsc2Uge1xuXHRcdGVsZW0ucmVtb3ZlQXR0cmlidXRlKCBcInR5cGVcIiApO1xuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmZ1bmN0aW9uIGNsb25lQ29weUV2ZW50KCBzcmMsIGRlc3QgKSB7XG5cdHZhciBpLCBsLCB0eXBlLCBwZGF0YU9sZCwgcGRhdGFDdXIsIHVkYXRhT2xkLCB1ZGF0YUN1ciwgZXZlbnRzO1xuXG5cdGlmICggZGVzdC5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyAxLiBDb3B5IHByaXZhdGUgZGF0YTogZXZlbnRzLCBoYW5kbGVycywgZXRjLlxuXHRpZiAoIGRhdGFQcml2Lmhhc0RhdGEoIHNyYyApICkge1xuXHRcdHBkYXRhT2xkID0gZGF0YVByaXYuYWNjZXNzKCBzcmMgKTtcblx0XHRwZGF0YUN1ciA9IGRhdGFQcml2LnNldCggZGVzdCwgcGRhdGFPbGQgKTtcblx0XHRldmVudHMgPSBwZGF0YU9sZC5ldmVudHM7XG5cblx0XHRpZiAoIGV2ZW50cyApIHtcblx0XHRcdGRlbGV0ZSBwZGF0YUN1ci5oYW5kbGU7XG5cdFx0XHRwZGF0YUN1ci5ldmVudHMgPSB7fTtcblxuXHRcdFx0Zm9yICggdHlwZSBpbiBldmVudHMgKSB7XG5cdFx0XHRcdGZvciAoIGkgPSAwLCBsID0gZXZlbnRzWyB0eXBlIF0ubGVuZ3RoOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC5hZGQoIGRlc3QsIHR5cGUsIGV2ZW50c1sgdHlwZSBdWyBpIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIDIuIENvcHkgdXNlciBkYXRhXG5cdGlmICggZGF0YVVzZXIuaGFzRGF0YSggc3JjICkgKSB7XG5cdFx0dWRhdGFPbGQgPSBkYXRhVXNlci5hY2Nlc3MoIHNyYyApO1xuXHRcdHVkYXRhQ3VyID0galF1ZXJ5LmV4dGVuZCgge30sIHVkYXRhT2xkICk7XG5cblx0XHRkYXRhVXNlci5zZXQoIGRlc3QsIHVkYXRhQ3VyICk7XG5cdH1cbn1cblxuLy8gRml4IElFIGJ1Z3MsIHNlZSBzdXBwb3J0IHRlc3RzXG5mdW5jdGlvbiBmaXhJbnB1dCggc3JjLCBkZXN0ICkge1xuXHR2YXIgbm9kZU5hbWUgPSBkZXN0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0Ly8gRmFpbHMgdG8gcGVyc2lzdCB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBhIGNsb25lZCBjaGVja2JveCBvciByYWRpbyBidXR0b24uXG5cdGlmICggbm9kZU5hbWUgPT09IFwiaW5wdXRcIiAmJiByY2hlY2thYmxlVHlwZS50ZXN0KCBzcmMudHlwZSApICkge1xuXHRcdGRlc3QuY2hlY2tlZCA9IHNyYy5jaGVja2VkO1xuXG5cdC8vIEZhaWxzIHRvIHJldHVybiB0aGUgc2VsZWN0ZWQgb3B0aW9uIHRvIHRoZSBkZWZhdWx0IHNlbGVjdGVkIHN0YXRlIHdoZW4gY2xvbmluZyBvcHRpb25zXG5cdH0gZWxzZSBpZiAoIG5vZGVOYW1lID09PSBcImlucHV0XCIgfHwgbm9kZU5hbWUgPT09IFwidGV4dGFyZWFcIiApIHtcblx0XHRkZXN0LmRlZmF1bHRWYWx1ZSA9IHNyYy5kZWZhdWx0VmFsdWU7XG5cdH1cbn1cblxuZnVuY3Rpb24gZG9tTWFuaXAoIGNvbGxlY3Rpb24sIGFyZ3MsIGNhbGxiYWNrLCBpZ25vcmVkICkge1xuXG5cdC8vIEZsYXR0ZW4gYW55IG5lc3RlZCBhcnJheXNcblx0YXJncyA9IGNvbmNhdC5hcHBseSggW10sIGFyZ3MgKTtcblxuXHR2YXIgZnJhZ21lbnQsIGZpcnN0LCBzY3JpcHRzLCBoYXNTY3JpcHRzLCBub2RlLCBkb2MsXG5cdFx0aSA9IDAsXG5cdFx0bCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuXHRcdGlOb0Nsb25lID0gbCAtIDEsXG5cdFx0dmFsdWUgPSBhcmdzWyAwIF0sXG5cdFx0dmFsdWVJc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiggdmFsdWUgKTtcblxuXHQvLyBXZSBjYW4ndCBjbG9uZU5vZGUgZnJhZ21lbnRzIHRoYXQgY29udGFpbiBjaGVja2VkLCBpbiBXZWJLaXRcblx0aWYgKCB2YWx1ZUlzRnVuY3Rpb24gfHxcblx0XHRcdCggbCA+IDEgJiYgdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmXG5cdFx0XHRcdCFzdXBwb3J0LmNoZWNrQ2xvbmUgJiYgcmNoZWNrZWQudGVzdCggdmFsdWUgKSApICkge1xuXHRcdHJldHVybiBjb2xsZWN0aW9uLmVhY2goIGZ1bmN0aW9uKCBpbmRleCApIHtcblx0XHRcdHZhciBzZWxmID0gY29sbGVjdGlvbi5lcSggaW5kZXggKTtcblx0XHRcdGlmICggdmFsdWVJc0Z1bmN0aW9uICkge1xuXHRcdFx0XHRhcmdzWyAwIF0gPSB2YWx1ZS5jYWxsKCB0aGlzLCBpbmRleCwgc2VsZi5odG1sKCkgKTtcblx0XHRcdH1cblx0XHRcdGRvbU1hbmlwKCBzZWxmLCBhcmdzLCBjYWxsYmFjaywgaWdub3JlZCApO1xuXHRcdH0gKTtcblx0fVxuXG5cdGlmICggbCApIHtcblx0XHRmcmFnbWVudCA9IGJ1aWxkRnJhZ21lbnQoIGFyZ3MsIGNvbGxlY3Rpb25bIDAgXS5vd25lckRvY3VtZW50LCBmYWxzZSwgY29sbGVjdGlvbiwgaWdub3JlZCApO1xuXHRcdGZpcnN0ID0gZnJhZ21lbnQuZmlyc3RDaGlsZDtcblxuXHRcdGlmICggZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgKSB7XG5cdFx0XHRmcmFnbWVudCA9IGZpcnN0O1xuXHRcdH1cblxuXHRcdC8vIFJlcXVpcmUgZWl0aGVyIG5ldyBjb250ZW50IG9yIGFuIGludGVyZXN0IGluIGlnbm9yZWQgZWxlbWVudHMgdG8gaW52b2tlIHRoZSBjYWxsYmFja1xuXHRcdGlmICggZmlyc3QgfHwgaWdub3JlZCApIHtcblx0XHRcdHNjcmlwdHMgPSBqUXVlcnkubWFwKCBnZXRBbGwoIGZyYWdtZW50LCBcInNjcmlwdFwiICksIGRpc2FibGVTY3JpcHQgKTtcblx0XHRcdGhhc1NjcmlwdHMgPSBzY3JpcHRzLmxlbmd0aDtcblxuXHRcdFx0Ly8gVXNlIHRoZSBvcmlnaW5hbCBmcmFnbWVudCBmb3IgdGhlIGxhc3QgaXRlbVxuXHRcdFx0Ly8gaW5zdGVhZCBvZiB0aGUgZmlyc3QgYmVjYXVzZSBpdCBjYW4gZW5kIHVwXG5cdFx0XHQvLyBiZWluZyBlbXB0aWVkIGluY29ycmVjdGx5IGluIGNlcnRhaW4gc2l0dWF0aW9ucyAoIzgwNzApLlxuXHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRub2RlID0gZnJhZ21lbnQ7XG5cblx0XHRcdFx0aWYgKCBpICE9PSBpTm9DbG9uZSApIHtcblx0XHRcdFx0XHRub2RlID0galF1ZXJ5LmNsb25lKCBub2RlLCB0cnVlLCB0cnVlICk7XG5cblx0XHRcdFx0XHQvLyBLZWVwIHJlZmVyZW5jZXMgdG8gY2xvbmVkIHNjcmlwdHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uXG5cdFx0XHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4wIG9ubHksIFBoYW50b21KUyAxIG9ubHlcblx0XHRcdFx0XHRcdC8vIHB1c2guYXBwbHkoXywgYXJyYXlsaWtlKSB0aHJvd3Mgb24gYW5jaWVudCBXZWJLaXRcblx0XHRcdFx0XHRcdGpRdWVyeS5tZXJnZSggc2NyaXB0cywgZ2V0QWxsKCBub2RlLCBcInNjcmlwdFwiICkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjYWxsYmFjay5jYWxsKCBjb2xsZWN0aW9uWyBpIF0sIG5vZGUsIGkgKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBoYXNTY3JpcHRzICkge1xuXHRcdFx0XHRkb2MgPSBzY3JpcHRzWyBzY3JpcHRzLmxlbmd0aCAtIDEgXS5vd25lckRvY3VtZW50O1xuXG5cdFx0XHRcdC8vIFJlZW5hYmxlIHNjcmlwdHNcblx0XHRcdFx0alF1ZXJ5Lm1hcCggc2NyaXB0cywgcmVzdG9yZVNjcmlwdCApO1xuXG5cdFx0XHRcdC8vIEV2YWx1YXRlIGV4ZWN1dGFibGUgc2NyaXB0cyBvbiBmaXJzdCBkb2N1bWVudCBpbnNlcnRpb25cblx0XHRcdFx0Zm9yICggaSA9IDA7IGkgPCBoYXNTY3JpcHRzOyBpKysgKSB7XG5cdFx0XHRcdFx0bm9kZSA9IHNjcmlwdHNbIGkgXTtcblx0XHRcdFx0XHRpZiAoIHJzY3JpcHRUeXBlLnRlc3QoIG5vZGUudHlwZSB8fCBcIlwiICkgJiZcblx0XHRcdFx0XHRcdCFkYXRhUHJpdi5hY2Nlc3MoIG5vZGUsIFwiZ2xvYmFsRXZhbFwiICkgJiZcblx0XHRcdFx0XHRcdGpRdWVyeS5jb250YWlucyggZG9jLCBub2RlICkgKSB7XG5cblx0XHRcdFx0XHRcdGlmICggbm9kZS5zcmMgJiYgKCBub2RlLnR5cGUgfHwgXCJcIiApLnRvTG93ZXJDYXNlKCkgICE9PSBcIm1vZHVsZVwiICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIE9wdGlvbmFsIEFKQVggZGVwZW5kZW5jeSwgYnV0IHdvbid0IHJ1biBzY3JpcHRzIGlmIG5vdCBwcmVzZW50XG5cdFx0XHRcdFx0XHRcdGlmICggalF1ZXJ5Ll9ldmFsVXJsICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5fZXZhbFVybCggbm9kZS5zcmMgKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0RE9NRXZhbCggbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKCByY2xlYW5TY3JpcHQsIFwiXCIgKSwgZG9jLCBub2RlICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGNvbGxlY3Rpb247XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSggZWxlbSwgc2VsZWN0b3IsIGtlZXBEYXRhICkge1xuXHR2YXIgbm9kZSxcblx0XHRub2RlcyA9IHNlbGVjdG9yID8galF1ZXJ5LmZpbHRlciggc2VsZWN0b3IsIGVsZW0gKSA6IGVsZW0sXG5cdFx0aSA9IDA7XG5cblx0Zm9yICggOyAoIG5vZGUgPSBub2Rlc1sgaSBdICkgIT0gbnVsbDsgaSsrICkge1xuXHRcdGlmICggIWtlZXBEYXRhICYmIG5vZGUubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIG5vZGUgKSApO1xuXHRcdH1cblxuXHRcdGlmICggbm9kZS5wYXJlbnROb2RlICkge1xuXHRcdFx0aWYgKCBrZWVwRGF0YSAmJiBqUXVlcnkuY29udGFpbnMoIG5vZGUub3duZXJEb2N1bWVudCwgbm9kZSApICkge1xuXHRcdFx0XHRzZXRHbG9iYWxFdmFsKCBnZXRBbGwoIG5vZGUsIFwic2NyaXB0XCIgKSApO1xuXHRcdFx0fVxuXHRcdFx0bm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKCBub2RlICk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGVsZW07XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0aHRtbFByZWZpbHRlcjogZnVuY3Rpb24oIGh0bWwgKSB7XG5cdFx0cmV0dXJuIGh0bWwucmVwbGFjZSggcnhodG1sVGFnLCBcIjwkMT48LyQyPlwiICk7XG5cdH0sXG5cblx0Y2xvbmU6IGZ1bmN0aW9uKCBlbGVtLCBkYXRhQW5kRXZlbnRzLCBkZWVwRGF0YUFuZEV2ZW50cyApIHtcblx0XHR2YXIgaSwgbCwgc3JjRWxlbWVudHMsIGRlc3RFbGVtZW50cyxcblx0XHRcdGNsb25lID0gZWxlbS5jbG9uZU5vZGUoIHRydWUgKSxcblx0XHRcdGluUGFnZSA9IGpRdWVyeS5jb250YWlucyggZWxlbS5vd25lckRvY3VtZW50LCBlbGVtICk7XG5cblx0XHQvLyBGaXggSUUgY2xvbmluZyBpc3N1ZXNcblx0XHRpZiAoICFzdXBwb3J0Lm5vQ2xvbmVDaGVja2VkICYmICggZWxlbS5ub2RlVHlwZSA9PT0gMSB8fCBlbGVtLm5vZGVUeXBlID09PSAxMSApICYmXG5cdFx0XHRcdCFqUXVlcnkuaXNYTUxEb2MoIGVsZW0gKSApIHtcblxuXHRcdFx0Ly8gV2UgZXNjaGV3IFNpenpsZSBoZXJlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zOiBodHRwczovL2pzcGVyZi5jb20vZ2V0YWxsLXZzLXNpenpsZS8yXG5cdFx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lICk7XG5cdFx0XHRzcmNFbGVtZW50cyA9IGdldEFsbCggZWxlbSApO1xuXG5cdFx0XHRmb3IgKCBpID0gMCwgbCA9IHNyY0VsZW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKyApIHtcblx0XHRcdFx0Zml4SW5wdXQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gQ29weSB0aGUgZXZlbnRzIGZyb20gdGhlIG9yaWdpbmFsIHRvIHRoZSBjbG9uZVxuXHRcdGlmICggZGF0YUFuZEV2ZW50cyApIHtcblx0XHRcdGlmICggZGVlcERhdGFBbmRFdmVudHMgKSB7XG5cdFx0XHRcdHNyY0VsZW1lbnRzID0gc3JjRWxlbWVudHMgfHwgZ2V0QWxsKCBlbGVtICk7XG5cdFx0XHRcdGRlc3RFbGVtZW50cyA9IGRlc3RFbGVtZW50cyB8fCBnZXRBbGwoIGNsb25lICk7XG5cblx0XHRcdFx0Zm9yICggaSA9IDAsIGwgPSBzcmNFbGVtZW50cy5sZW5ndGg7IGkgPCBsOyBpKysgKSB7XG5cdFx0XHRcdFx0Y2xvbmVDb3B5RXZlbnQoIHNyY0VsZW1lbnRzWyBpIF0sIGRlc3RFbGVtZW50c1sgaSBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNsb25lQ29weUV2ZW50KCBlbGVtLCBjbG9uZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFByZXNlcnZlIHNjcmlwdCBldmFsdWF0aW9uIGhpc3Rvcnlcblx0XHRkZXN0RWxlbWVudHMgPSBnZXRBbGwoIGNsb25lLCBcInNjcmlwdFwiICk7XG5cdFx0aWYgKCBkZXN0RWxlbWVudHMubGVuZ3RoID4gMCApIHtcblx0XHRcdHNldEdsb2JhbEV2YWwoIGRlc3RFbGVtZW50cywgIWluUGFnZSAmJiBnZXRBbGwoIGVsZW0sIFwic2NyaXB0XCIgKSApO1xuXHRcdH1cblxuXHRcdC8vIFJldHVybiB0aGUgY2xvbmVkIHNldFxuXHRcdHJldHVybiBjbG9uZTtcblx0fSxcblxuXHRjbGVhbkRhdGE6IGZ1bmN0aW9uKCBlbGVtcyApIHtcblx0XHR2YXIgZGF0YSwgZWxlbSwgdHlwZSxcblx0XHRcdHNwZWNpYWwgPSBqUXVlcnkuZXZlbnQuc3BlY2lhbCxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyAoIGVsZW0gPSBlbGVtc1sgaSBdICkgIT09IHVuZGVmaW5lZDsgaSsrICkge1xuXHRcdFx0aWYgKCBhY2NlcHREYXRhKCBlbGVtICkgKSB7XG5cdFx0XHRcdGlmICggKCBkYXRhID0gZWxlbVsgZGF0YVByaXYuZXhwYW5kbyBdICkgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhLmV2ZW50cyApIHtcblx0XHRcdFx0XHRcdGZvciAoIHR5cGUgaW4gZGF0YS5ldmVudHMgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggc3BlY2lhbFsgdHlwZSBdICkge1xuXHRcdFx0XHRcdFx0XHRcdGpRdWVyeS5ldmVudC5yZW1vdmUoIGVsZW0sIHR5cGUgKTtcblxuXHRcdFx0XHRcdFx0XHQvLyBUaGlzIGlzIGEgc2hvcnRjdXQgdG8gYXZvaWQgalF1ZXJ5LmV2ZW50LnJlbW92ZSdzIG92ZXJoZWFkXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0alF1ZXJ5LnJlbW92ZUV2ZW50KCBlbGVtLCB0eXBlLCBkYXRhLmhhbmRsZSApO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogQ2hyb21lIDw9MzUgLSA0NStcblx0XHRcdFx0XHQvLyBBc3NpZ24gdW5kZWZpbmVkIGluc3RlYWQgb2YgdXNpbmcgZGVsZXRlLCBzZWUgRGF0YSNyZW1vdmVcblx0XHRcdFx0XHRlbGVtWyBkYXRhUHJpdi5leHBhbmRvIF0gPSB1bmRlZmluZWQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBlbGVtWyBkYXRhVXNlci5leHBhbmRvIF0gKSB7XG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBDaHJvbWUgPD0zNSAtIDQ1K1xuXHRcdFx0XHRcdC8vIEFzc2lnbiB1bmRlZmluZWQgaW5zdGVhZCBvZiB1c2luZyBkZWxldGUsIHNlZSBEYXRhI3JlbW92ZVxuXHRcdFx0XHRcdGVsZW1bIGRhdGFVc2VyLmV4cGFuZG8gXSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGRldGFjaDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHJldHVybiByZW1vdmUoIHRoaXMsIHNlbGVjdG9yLCB0cnVlICk7XG5cdH0sXG5cblx0cmVtb3ZlOiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7XG5cdFx0cmV0dXJuIHJlbW92ZSggdGhpcywgc2VsZWN0b3IgKTtcblx0fSxcblxuXHR0ZXh0OiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXHRcdFx0XHRqUXVlcnkudGV4dCggdGhpcyApIDpcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSA9PT0gMSB8fCB0aGlzLm5vZGVUeXBlID09PSAxMSB8fCB0aGlzLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdFx0dGhpcy50ZXh0Q29udGVudCA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdH0sIG51bGwsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoICk7XG5cdH0sXG5cblx0YXBwZW5kOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMubm9kZVR5cGUgPT09IDEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gMTEgfHwgdGhpcy5ub2RlVHlwZSA9PT0gOSApIHtcblx0XHRcdFx0dmFyIHRhcmdldCA9IG1hbmlwdWxhdGlvblRhcmdldCggdGhpcywgZWxlbSApO1xuXHRcdFx0XHR0YXJnZXQuYXBwZW5kQ2hpbGQoIGVsZW0gKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0cHJlcGVuZDogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLm5vZGVUeXBlID09PSAxIHx8IHRoaXMubm9kZVR5cGUgPT09IDExIHx8IHRoaXMubm9kZVR5cGUgPT09IDkgKSB7XG5cdFx0XHRcdHZhciB0YXJnZXQgPSBtYW5pcHVsYXRpb25UYXJnZXQoIHRoaXMsIGVsZW0gKTtcblx0XHRcdFx0dGFyZ2V0Lmluc2VydEJlZm9yZSggZWxlbSwgdGFyZ2V0LmZpcnN0Q2hpbGQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0YmVmb3JlOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gZG9tTWFuaXAoIHRoaXMsIGFyZ3VtZW50cywgZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRpZiAoIHRoaXMucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcyApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHRhZnRlcjogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0aWYgKCB0aGlzLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIGVsZW0sIHRoaXMubmV4dFNpYmxpbmcgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0ZW1wdHk6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRmb3IgKCA7ICggZWxlbSA9IHRoaXNbIGkgXSApICE9IG51bGw7IGkrKyApIHtcblx0XHRcdGlmICggZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdFx0XHQvLyBQcmV2ZW50IG1lbW9yeSBsZWFrc1xuXHRcdFx0XHRqUXVlcnkuY2xlYW5EYXRhKCBnZXRBbGwoIGVsZW0sIGZhbHNlICkgKTtcblxuXHRcdFx0XHQvLyBSZW1vdmUgYW55IHJlbWFpbmluZyBub2Rlc1xuXHRcdFx0XHRlbGVtLnRleHRDb250ZW50ID0gXCJcIjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHRjbG9uZTogZnVuY3Rpb24oIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICkge1xuXHRcdGRhdGFBbmRFdmVudHMgPSBkYXRhQW5kRXZlbnRzID09IG51bGwgPyBmYWxzZSA6IGRhdGFBbmRFdmVudHM7XG5cdFx0ZGVlcERhdGFBbmRFdmVudHMgPSBkZWVwRGF0YUFuZEV2ZW50cyA9PSBudWxsID8gZGF0YUFuZEV2ZW50cyA6IGRlZXBEYXRhQW5kRXZlbnRzO1xuXG5cdFx0cmV0dXJuIHRoaXMubWFwKCBmdW5jdGlvbigpIHtcblx0XHRcdHJldHVybiBqUXVlcnkuY2xvbmUoIHRoaXMsIGRhdGFBbmRFdmVudHMsIGRlZXBEYXRhQW5kRXZlbnRzICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdGh0bWw6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0XHR2YXIgZWxlbSA9IHRoaXNbIDAgXSB8fCB7fSxcblx0XHRcdFx0aSA9IDAsXG5cdFx0XHRcdGwgPSB0aGlzLmxlbmd0aDtcblxuXHRcdFx0aWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdHJldHVybiBlbGVtLmlubmVySFRNTDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2VlIGlmIHdlIGNhbiB0YWtlIGEgc2hvcnRjdXQgYW5kIGp1c3QgdXNlIGlubmVySFRNTFxuXHRcdFx0aWYgKCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgIXJub0lubmVyaHRtbC50ZXN0KCB2YWx1ZSApICYmXG5cdFx0XHRcdCF3cmFwTWFwWyAoIHJ0YWdOYW1lLmV4ZWMoIHZhbHVlICkgfHwgWyBcIlwiLCBcIlwiIF0gKVsgMSBdLnRvTG93ZXJDYXNlKCkgXSApIHtcblxuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5odG1sUHJlZmlsdGVyKCB2YWx1ZSApO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Zm9yICggOyBpIDwgbDsgaSsrICkge1xuXHRcdFx0XHRcdFx0ZWxlbSA9IHRoaXNbIGkgXSB8fCB7fTtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5IGxlYWtzXG5cdFx0XHRcdFx0XHRpZiAoIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHRcdFx0XHRcdGpRdWVyeS5jbGVhbkRhdGEoIGdldEFsbCggZWxlbSwgZmFsc2UgKSApO1xuXHRcdFx0XHRcdFx0XHRlbGVtLmlubmVySFRNTCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGVsZW0gPSAwO1xuXG5cdFx0XHRcdC8vIElmIHVzaW5nIGlubmVySFRNTCB0aHJvd3MgYW4gZXhjZXB0aW9uLCB1c2UgdGhlIGZhbGxiYWNrIG1ldGhvZFxuXHRcdFx0XHR9IGNhdGNoICggZSApIHt9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0dGhpcy5lbXB0eSgpLmFwcGVuZCggdmFsdWUgKTtcblx0XHRcdH1cblx0XHR9LCBudWxsLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9LFxuXG5cdHJlcGxhY2VXaXRoOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgaWdub3JlZCA9IFtdO1xuXG5cdFx0Ly8gTWFrZSB0aGUgY2hhbmdlcywgcmVwbGFjaW5nIGVhY2ggbm9uLWlnbm9yZWQgY29udGV4dCBlbGVtZW50IHdpdGggdGhlIG5ldyBjb250ZW50XG5cdFx0cmV0dXJuIGRvbU1hbmlwKCB0aGlzLCBhcmd1bWVudHMsIGZ1bmN0aW9uKCBlbGVtICkge1xuXHRcdFx0dmFyIHBhcmVudCA9IHRoaXMucGFyZW50Tm9kZTtcblxuXHRcdFx0aWYgKCBqUXVlcnkuaW5BcnJheSggdGhpcywgaWdub3JlZCApIDwgMCApIHtcblx0XHRcdFx0alF1ZXJ5LmNsZWFuRGF0YSggZ2V0QWxsKCB0aGlzICkgKTtcblx0XHRcdFx0aWYgKCBwYXJlbnQgKSB7XG5cdFx0XHRcdFx0cGFyZW50LnJlcGxhY2VDaGlsZCggZWxlbSwgdGhpcyApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHQvLyBGb3JjZSBjYWxsYmFjayBpbnZvY2F0aW9uXG5cdFx0fSwgaWdub3JlZCApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCB7XG5cdGFwcGVuZFRvOiBcImFwcGVuZFwiLFxuXHRwcmVwZW5kVG86IFwicHJlcGVuZFwiLFxuXHRpbnNlcnRCZWZvcmU6IFwiYmVmb3JlXCIsXG5cdGluc2VydEFmdGVyOiBcImFmdGVyXCIsXG5cdHJlcGxhY2VBbGw6IFwicmVwbGFjZVdpdGhcIlxufSwgZnVuY3Rpb24oIG5hbWUsIG9yaWdpbmFsICkge1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgZWxlbXMsXG5cdFx0XHRyZXQgPSBbXSxcblx0XHRcdGluc2VydCA9IGpRdWVyeSggc2VsZWN0b3IgKSxcblx0XHRcdGxhc3QgPSBpbnNlcnQubGVuZ3RoIC0gMSxcblx0XHRcdGkgPSAwO1xuXG5cdFx0Zm9yICggOyBpIDw9IGxhc3Q7IGkrKyApIHtcblx0XHRcdGVsZW1zID0gaSA9PT0gbGFzdCA/IHRoaXMgOiB0aGlzLmNsb25lKCB0cnVlICk7XG5cdFx0XHRqUXVlcnkoIGluc2VydFsgaSBdIClbIG9yaWdpbmFsIF0oIGVsZW1zICk7XG5cblx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgPD00LjAgb25seSwgUGhhbnRvbUpTIDEgb25seVxuXHRcdFx0Ly8gLmdldCgpIGJlY2F1c2UgcHVzaC5hcHBseShfLCBhcnJheWxpa2UpIHRocm93cyBvbiBhbmNpZW50IFdlYktpdFxuXHRcdFx0cHVzaC5hcHBseSggcmV0LCBlbGVtcy5nZXQoKSApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnB1c2hTdGFjayggcmV0ICk7XG5cdH07XG59ICk7XG52YXIgcm51bW5vbnB4ID0gbmV3IFJlZ0V4cCggXCJeKFwiICsgcG51bSArIFwiKSg/IXB4KVthLXolXSskXCIsIFwiaVwiICk7XG5cbnZhciBnZXRTdHlsZXMgPSBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seSwgRmlyZWZveCA8PTMwICgjMTUwOTgsICMxNDE1MClcblx0XHQvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBpbiBwb3B1cHNcblx0XHQvLyBGRiBtZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggXCJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlXCJcblx0XHR2YXIgdmlldyA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztcblxuXHRcdGlmICggIXZpZXcgfHwgIXZpZXcub3BlbmVyICkge1xuXHRcdFx0dmlldyA9IHdpbmRvdztcblx0XHR9XG5cblx0XHRyZXR1cm4gdmlldy5nZXRDb21wdXRlZFN0eWxlKCBlbGVtICk7XG5cdH07XG5cbnZhciByYm94U3R5bGUgPSBuZXcgUmVnRXhwKCBjc3NFeHBhbmQuam9pbiggXCJ8XCIgKSwgXCJpXCIgKTtcblxuXG5cbiggZnVuY3Rpb24oKSB7XG5cblx0Ly8gRXhlY3V0aW5nIGJvdGggcGl4ZWxQb3NpdGlvbiAmIGJveFNpemluZ1JlbGlhYmxlIHRlc3RzIHJlcXVpcmUgb25seSBvbmUgbGF5b3V0XG5cdC8vIHNvIHRoZXkncmUgZXhlY3V0ZWQgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHRoZSBzZWNvbmQgY29tcHV0YXRpb24uXG5cdGZ1bmN0aW9uIGNvbXB1dGVTdHlsZVRlc3RzKCkge1xuXG5cdFx0Ly8gVGhpcyBpcyBhIHNpbmdsZXRvbiwgd2UgbmVlZCB0byBleGVjdXRlIGl0IG9ubHkgb25jZVxuXHRcdGlmICggIWRpdiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb250YWluZXIuc3R5bGUuY3NzVGV4dCA9IFwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweDt3aWR0aDo2MHB4O1wiICtcblx0XHRcdFwibWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowXCI7XG5cdFx0ZGl2LnN0eWxlLmNzc1RleHQgPVxuXHRcdFx0XCJwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO2JveC1zaXppbmc6Ym9yZGVyLWJveDtvdmVyZmxvdzpzY3JvbGw7XCIgK1xuXHRcdFx0XCJtYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O1wiICtcblx0XHRcdFwid2lkdGg6NjAlO3RvcDoxJVwiO1xuXHRcdGRvY3VtZW50RWxlbWVudC5hcHBlbmRDaGlsZCggY29udGFpbmVyICkuYXBwZW5kQ2hpbGQoIGRpdiApO1xuXG5cdFx0dmFyIGRpdlN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoIGRpdiApO1xuXHRcdHBpeGVsUG9zaXRpb25WYWwgPSBkaXZTdHlsZS50b3AgIT09IFwiMSVcIjtcblxuXHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgNC4wIC0gNC4zIG9ubHksIEZpcmVmb3ggPD0zIC0gNDRcblx0XHRyZWxpYWJsZU1hcmdpbkxlZnRWYWwgPSByb3VuZFBpeGVsTWVhc3VyZXMoIGRpdlN0eWxlLm1hcmdpbkxlZnQgKSA9PT0gMTI7XG5cblx0XHQvLyBTdXBwb3J0OiBBbmRyb2lkIDQuMCAtIDQuMyBvbmx5LCBTYWZhcmkgPD05LjEgLSAxMC4xLCBpT1MgPD03LjAgLSA5LjNcblx0XHQvLyBTb21lIHN0eWxlcyBjb21lIGJhY2sgd2l0aCBwZXJjZW50YWdlIHZhbHVlcywgZXZlbiB0aG91Z2ggdGhleSBzaG91bGRuJ3Rcblx0XHRkaXYuc3R5bGUucmlnaHQgPSBcIjYwJVwiO1xuXHRcdHBpeGVsQm94U3R5bGVzVmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS5yaWdodCApID09PSAzNjtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdFx0Ly8gRGV0ZWN0IG1pc3JlcG9ydGluZyBvZiBjb250ZW50IGRpbWVuc2lvbnMgZm9yIGJveC1zaXppbmc6Ym9yZGVyLWJveCBlbGVtZW50c1xuXHRcdGJveFNpemluZ1JlbGlhYmxlVmFsID0gcm91bmRQaXhlbE1lYXN1cmVzKCBkaXZTdHlsZS53aWR0aCApID09PSAzNjtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDkgb25seVxuXHRcdC8vIERldGVjdCBvdmVyZmxvdzpzY3JvbGwgc2NyZXdpbmVzcyAoZ2gtMzY5OSlcblx0XHRkaXYuc3R5bGUucG9zaXRpb24gPSBcImFic29sdXRlXCI7XG5cdFx0c2Nyb2xsYm94U2l6ZVZhbCA9IGRpdi5vZmZzZXRXaWR0aCA9PT0gMzYgfHwgXCJhYnNvbHV0ZVwiO1xuXG5cdFx0ZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKCBjb250YWluZXIgKTtcblxuXHRcdC8vIE51bGxpZnkgdGhlIGRpdiBzbyBpdCB3b3VsZG4ndCBiZSBzdG9yZWQgaW4gdGhlIG1lbW9yeSBhbmRcblx0XHQvLyBpdCB3aWxsIGFsc28gYmUgYSBzaWduIHRoYXQgY2hlY2tzIGFscmVhZHkgcGVyZm9ybWVkXG5cdFx0ZGl2ID0gbnVsbDtcblx0fVxuXG5cdGZ1bmN0aW9uIHJvdW5kUGl4ZWxNZWFzdXJlcyggbWVhc3VyZSApIHtcblx0XHRyZXR1cm4gTWF0aC5yb3VuZCggcGFyc2VGbG9hdCggbWVhc3VyZSApICk7XG5cdH1cblxuXHR2YXIgcGl4ZWxQb3NpdGlvblZhbCwgYm94U2l6aW5nUmVsaWFibGVWYWwsIHNjcm9sbGJveFNpemVWYWwsIHBpeGVsQm94U3R5bGVzVmFsLFxuXHRcdHJlbGlhYmxlTWFyZ2luTGVmdFZhbCxcblx0XHRjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImRpdlwiICksXG5cdFx0ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApO1xuXG5cdC8vIEZpbmlzaCBlYXJseSBpbiBsaW1pdGVkIChub24tYnJvd3NlcikgZW52aXJvbm1lbnRzXG5cdGlmICggIWRpdi5zdHlsZSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdC8vIFN0eWxlIG9mIGNsb25lZCBlbGVtZW50IGFmZmVjdHMgc291cmNlIGVsZW1lbnQgY2xvbmVkICgjODkwOClcblx0ZGl2LnN0eWxlLmJhY2tncm91bmRDbGlwID0gXCJjb250ZW50LWJveFwiO1xuXHRkaXYuY2xvbmVOb2RlKCB0cnVlICkuc3R5bGUuYmFja2dyb3VuZENsaXAgPSBcIlwiO1xuXHRzdXBwb3J0LmNsZWFyQ2xvbmVTdHlsZSA9IGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCA9PT0gXCJjb250ZW50LWJveFwiO1xuXG5cdGpRdWVyeS5leHRlbmQoIHN1cHBvcnQsIHtcblx0XHRib3hTaXppbmdSZWxpYWJsZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIGJveFNpemluZ1JlbGlhYmxlVmFsO1xuXHRcdH0sXG5cdFx0cGl4ZWxCb3hTdHlsZXM6IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbEJveFN0eWxlc1ZhbDtcblx0XHR9LFxuXHRcdHBpeGVsUG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdFx0Y29tcHV0ZVN0eWxlVGVzdHMoKTtcblx0XHRcdHJldHVybiBwaXhlbFBvc2l0aW9uVmFsO1xuXHRcdH0sXG5cdFx0cmVsaWFibGVNYXJnaW5MZWZ0OiBmdW5jdGlvbigpIHtcblx0XHRcdGNvbXB1dGVTdHlsZVRlc3RzKCk7XG5cdFx0XHRyZXR1cm4gcmVsaWFibGVNYXJnaW5MZWZ0VmFsO1xuXHRcdH0sXG5cdFx0c2Nyb2xsYm94U2l6ZTogZnVuY3Rpb24oKSB7XG5cdFx0XHRjb21wdXRlU3R5bGVUZXN0cygpO1xuXHRcdFx0cmV0dXJuIHNjcm9sbGJveFNpemVWYWw7XG5cdFx0fVxuXHR9ICk7XG59ICkoKTtcblxuXG5mdW5jdGlvbiBjdXJDU1MoIGVsZW0sIG5hbWUsIGNvbXB1dGVkICkge1xuXHR2YXIgd2lkdGgsIG1pbldpZHRoLCBtYXhXaWR0aCwgcmV0LFxuXG5cdFx0Ly8gU3VwcG9ydDogRmlyZWZveCA1MStcblx0XHQvLyBSZXRyaWV2aW5nIHN0eWxlIGJlZm9yZSBjb21wdXRlZCBzb21laG93XG5cdFx0Ly8gZml4ZXMgYW4gaXNzdWUgd2l0aCBnZXR0aW5nIHdyb25nIHZhbHVlc1xuXHRcdC8vIG9uIGRldGFjaGVkIGVsZW1lbnRzXG5cdFx0c3R5bGUgPSBlbGVtLnN0eWxlO1xuXG5cdGNvbXB1dGVkID0gY29tcHV0ZWQgfHwgZ2V0U3R5bGVzKCBlbGVtICk7XG5cblx0Ly8gZ2V0UHJvcGVydHlWYWx1ZSBpcyBuZWVkZWQgZm9yOlxuXHQvLyAgIC5jc3MoJ2ZpbHRlcicpIChJRSA5IG9ubHksICMxMjUzNylcblx0Ly8gICAuY3NzKCctLWN1c3RvbVByb3BlcnR5KSAoIzMxNDQpXG5cdGlmICggY29tcHV0ZWQgKSB7XG5cdFx0cmV0ID0gY29tcHV0ZWQuZ2V0UHJvcGVydHlWYWx1ZSggbmFtZSApIHx8IGNvbXB1dGVkWyBuYW1lIF07XG5cblx0XHRpZiAoIHJldCA9PT0gXCJcIiAmJiAhalF1ZXJ5LmNvbnRhaW5zKCBlbGVtLm93bmVyRG9jdW1lbnQsIGVsZW0gKSApIHtcblx0XHRcdHJldCA9IGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSApO1xuXHRcdH1cblxuXHRcdC8vIEEgdHJpYnV0ZSB0byB0aGUgXCJhd2Vzb21lIGhhY2sgYnkgRGVhbiBFZHdhcmRzXCJcblx0XHQvLyBBbmRyb2lkIEJyb3dzZXIgcmV0dXJucyBwZXJjZW50YWdlIGZvciBzb21lIHZhbHVlcyxcblx0XHQvLyBidXQgd2lkdGggc2VlbXMgdG8gYmUgcmVsaWFibHkgcGl4ZWxzLlxuXHRcdC8vIFRoaXMgaXMgYWdhaW5zdCB0aGUgQ1NTT00gZHJhZnQgc3BlYzpcblx0XHQvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20vI3Jlc29sdmVkLXZhbHVlc1xuXHRcdGlmICggIXN1cHBvcnQucGl4ZWxCb3hTdHlsZXMoKSAmJiBybnVtbm9ucHgudGVzdCggcmV0ICkgJiYgcmJveFN0eWxlLnRlc3QoIG5hbWUgKSApIHtcblxuXHRcdFx0Ly8gUmVtZW1iZXIgdGhlIG9yaWdpbmFsIHZhbHVlc1xuXHRcdFx0d2lkdGggPSBzdHlsZS53aWR0aDtcblx0XHRcdG1pbldpZHRoID0gc3R5bGUubWluV2lkdGg7XG5cdFx0XHRtYXhXaWR0aCA9IHN0eWxlLm1heFdpZHRoO1xuXG5cdFx0XHQvLyBQdXQgaW4gdGhlIG5ldyB2YWx1ZXMgdG8gZ2V0IGEgY29tcHV0ZWQgdmFsdWUgb3V0XG5cdFx0XHRzdHlsZS5taW5XaWR0aCA9IHN0eWxlLm1heFdpZHRoID0gc3R5bGUud2lkdGggPSByZXQ7XG5cdFx0XHRyZXQgPSBjb21wdXRlZC53aWR0aDtcblxuXHRcdFx0Ly8gUmV2ZXJ0IHRoZSBjaGFuZ2VkIHZhbHVlc1xuXHRcdFx0c3R5bGUud2lkdGggPSB3aWR0aDtcblx0XHRcdHN0eWxlLm1pbldpZHRoID0gbWluV2lkdGg7XG5cdFx0XHRzdHlsZS5tYXhXaWR0aCA9IG1heFdpZHRoO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXQgIT09IHVuZGVmaW5lZCA/XG5cblx0XHQvLyBTdXBwb3J0OiBJRSA8PTkgLSAxMSBvbmx5XG5cdFx0Ly8gSUUgcmV0dXJucyB6SW5kZXggdmFsdWUgYXMgYW4gaW50ZWdlci5cblx0XHRyZXQgKyBcIlwiIDpcblx0XHRyZXQ7XG59XG5cblxuZnVuY3Rpb24gYWRkR2V0SG9va0lmKCBjb25kaXRpb25GbiwgaG9va0ZuICkge1xuXG5cdC8vIERlZmluZSB0aGUgaG9vaywgd2UnbGwgY2hlY2sgb24gdGhlIGZpcnN0IHJ1biBpZiBpdCdzIHJlYWxseSBuZWVkZWQuXG5cdHJldHVybiB7XG5cdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggY29uZGl0aW9uRm4oKSApIHtcblxuXHRcdFx0XHQvLyBIb29rIG5vdCBuZWVkZWQgKG9yIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBpdCBkdWVcblx0XHRcdFx0Ly8gdG8gbWlzc2luZyBkZXBlbmRlbmN5KSwgcmVtb3ZlIGl0LlxuXHRcdFx0XHRkZWxldGUgdGhpcy5nZXQ7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSG9vayBuZWVkZWQ7IHJlZGVmaW5lIGl0IHNvIHRoYXQgdGhlIHN1cHBvcnQgdGVzdCBpcyBub3QgZXhlY3V0ZWQgYWdhaW4uXG5cdFx0XHRyZXR1cm4gKCB0aGlzLmdldCA9IGhvb2tGbiApLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTtcblx0XHR9XG5cdH07XG59XG5cblxudmFyXG5cblx0Ly8gU3dhcHBhYmxlIGlmIGRpc3BsYXkgaXMgbm9uZSBvciBzdGFydHMgd2l0aCB0YWJsZVxuXHQvLyBleGNlcHQgXCJ0YWJsZVwiLCBcInRhYmxlLWNlbGxcIiwgb3IgXCJ0YWJsZS1jYXB0aW9uXCJcblx0Ly8gU2VlIGhlcmUgZm9yIGRpc3BsYXkgdmFsdWVzOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0NTUy9kaXNwbGF5XG5cdHJkaXNwbGF5c3dhcCA9IC9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxcblx0cmN1c3RvbVByb3AgPSAvXi0tLyxcblx0Y3NzU2hvdyA9IHsgcG9zaXRpb246IFwiYWJzb2x1dGVcIiwgdmlzaWJpbGl0eTogXCJoaWRkZW5cIiwgZGlzcGxheTogXCJibG9ja1wiIH0sXG5cdGNzc05vcm1hbFRyYW5zZm9ybSA9IHtcblx0XHRsZXR0ZXJTcGFjaW5nOiBcIjBcIixcblx0XHRmb250V2VpZ2h0OiBcIjQwMFwiXG5cdH0sXG5cblx0Y3NzUHJlZml4ZXMgPSBbIFwiV2Via2l0XCIsIFwiTW96XCIsIFwibXNcIiBdLFxuXHRlbXB0eVN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJkaXZcIiApLnN0eWxlO1xuXG4vLyBSZXR1cm4gYSBjc3MgcHJvcGVydHkgbWFwcGVkIHRvIGEgcG90ZW50aWFsbHkgdmVuZG9yIHByZWZpeGVkIHByb3BlcnR5XG5mdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHtcblxuXHQvLyBTaG9ydGN1dCBmb3IgbmFtZXMgdGhhdCBhcmUgbm90IHZlbmRvciBwcmVmaXhlZFxuXHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRyZXR1cm4gbmFtZTtcblx0fVxuXG5cdC8vIENoZWNrIGZvciB2ZW5kb3IgcHJlZml4ZWQgbmFtZXNcblx0dmFyIGNhcE5hbWUgPSBuYW1lWyAwIF0udG9VcHBlckNhc2UoKSArIG5hbWUuc2xpY2UoIDEgKSxcblx0XHRpID0gY3NzUHJlZml4ZXMubGVuZ3RoO1xuXG5cdHdoaWxlICggaS0tICkge1xuXHRcdG5hbWUgPSBjc3NQcmVmaXhlc1sgaSBdICsgY2FwTmFtZTtcblx0XHRpZiAoIG5hbWUgaW4gZW1wdHlTdHlsZSApIHtcblx0XHRcdHJldHVybiBuYW1lO1xuXHRcdH1cblx0fVxufVxuXG4vLyBSZXR1cm4gYSBwcm9wZXJ0eSBtYXBwZWQgYWxvbmcgd2hhdCBqUXVlcnkuY3NzUHJvcHMgc3VnZ2VzdHMgb3IgdG9cbi8vIGEgdmVuZG9yIHByZWZpeGVkIHByb3BlcnR5LlxuZnVuY3Rpb24gZmluYWxQcm9wTmFtZSggbmFtZSApIHtcblx0dmFyIHJldCA9IGpRdWVyeS5jc3NQcm9wc1sgbmFtZSBdO1xuXHRpZiAoICFyZXQgKSB7XG5cdFx0cmV0ID0galF1ZXJ5LmNzc1Byb3BzWyBuYW1lIF0gPSB2ZW5kb3JQcm9wTmFtZSggbmFtZSApIHx8IG5hbWU7XG5cdH1cblx0cmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApIHtcblxuXHQvLyBBbnkgcmVsYXRpdmUgKCsvLSkgdmFsdWVzIGhhdmUgYWxyZWFkeSBiZWVuXG5cdC8vIG5vcm1hbGl6ZWQgYXQgdGhpcyBwb2ludFxuXHR2YXIgbWF0Y2hlcyA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKTtcblx0cmV0dXJuIG1hdGNoZXMgP1xuXG5cdFx0Ly8gR3VhcmQgYWdhaW5zdCB1bmRlZmluZWQgXCJzdWJ0cmFjdFwiLCBlLmcuLCB3aGVuIHVzZWQgYXMgaW4gY3NzSG9va3Ncblx0XHRNYXRoLm1heCggMCwgbWF0Y2hlc1sgMiBdIC0gKCBzdWJ0cmFjdCB8fCAwICkgKSArICggbWF0Y2hlc1sgMyBdIHx8IFwicHhcIiApIDpcblx0XHR2YWx1ZTtcbn1cblxuZnVuY3Rpb24gYm94TW9kZWxBZGp1c3RtZW50KCBlbGVtLCBkaW1lbnNpb24sIGJveCwgaXNCb3JkZXJCb3gsIHN0eWxlcywgY29tcHV0ZWRWYWwgKSB7XG5cdHZhciBpID0gZGltZW5zaW9uID09PSBcIndpZHRoXCIgPyAxIDogMCxcblx0XHRleHRyYSA9IDAsXG5cdFx0ZGVsdGEgPSAwO1xuXG5cdC8vIEFkanVzdG1lbnQgbWF5IG5vdCBiZSBuZWNlc3Nhcnlcblx0aWYgKCBib3ggPT09ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSApIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGZvciAoIDsgaSA8IDQ7IGkgKz0gMiApIHtcblxuXHRcdC8vIEJvdGggYm94IG1vZGVscyBleGNsdWRlIG1hcmdpblxuXHRcdGlmICggYm94ID09PSBcIm1hcmdpblwiICkge1xuXHRcdFx0ZGVsdGEgKz0galF1ZXJ5LmNzcyggZWxlbSwgYm94ICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBjb250ZW50LWJveCwgd2UncmUgc2Vla2luZyBcInBhZGRpbmdcIiBvciBcImJvcmRlclwiIG9yIFwibWFyZ2luXCJcblx0XHRpZiAoICFpc0JvcmRlckJveCApIHtcblxuXHRcdFx0Ly8gQWRkIHBhZGRpbmdcblx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXG5cdFx0XHQvLyBGb3IgXCJib3JkZXJcIiBvciBcIm1hcmdpblwiLCBhZGQgYm9yZGVyXG5cdFx0XHRpZiAoIGJveCAhPT0gXCJwYWRkaW5nXCIgKSB7XG5cdFx0XHRcdGRlbHRhICs9IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cblx0XHRcdC8vIEJ1dCBzdGlsbCBrZWVwIHRyYWNrIG9mIGl0IG90aGVyd2lzZVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZXh0cmEgKz0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3JkZXJcIiArIGNzc0V4cGFuZFsgaSBdICsgXCJXaWR0aFwiLCB0cnVlLCBzdHlsZXMgKTtcblx0XHRcdH1cblxuXHRcdC8vIElmIHdlIGdldCBoZXJlIHdpdGggYSBib3JkZXItYm94IChjb250ZW50ICsgcGFkZGluZyArIGJvcmRlciksIHdlJ3JlIHNlZWtpbmcgXCJjb250ZW50XCIgb3Jcblx0XHQvLyBcInBhZGRpbmdcIiBvciBcIm1hcmdpblwiXG5cdFx0fSBlbHNlIHtcblxuXHRcdFx0Ly8gRm9yIFwiY29udGVudFwiLCBzdWJ0cmFjdCBwYWRkaW5nXG5cdFx0XHRpZiAoIGJveCA9PT0gXCJjb250ZW50XCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwicGFkZGluZ1wiICsgY3NzRXhwYW5kWyBpIF0sIHRydWUsIHN0eWxlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBGb3IgXCJjb250ZW50XCIgb3IgXCJwYWRkaW5nXCIsIHN1YnRyYWN0IGJvcmRlclxuXHRcdFx0aWYgKCBib3ggIT09IFwibWFyZ2luXCIgKSB7XG5cdFx0XHRcdGRlbHRhIC09IGpRdWVyeS5jc3MoIGVsZW0sIFwiYm9yZGVyXCIgKyBjc3NFeHBhbmRbIGkgXSArIFwiV2lkdGhcIiwgdHJ1ZSwgc3R5bGVzICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQWNjb3VudCBmb3IgcG9zaXRpdmUgY29udGVudC1ib3ggc2Nyb2xsIGd1dHRlciB3aGVuIHJlcXVlc3RlZCBieSBwcm92aWRpbmcgY29tcHV0ZWRWYWxcblx0aWYgKCAhaXNCb3JkZXJCb3ggJiYgY29tcHV0ZWRWYWwgPj0gMCApIHtcblxuXHRcdC8vIG9mZnNldFdpZHRoL29mZnNldEhlaWdodCBpcyBhIHJvdW5kZWQgc3VtIG9mIGNvbnRlbnQsIHBhZGRpbmcsIHNjcm9sbCBndXR0ZXIsIGFuZCBib3JkZXJcblx0XHQvLyBBc3N1bWluZyBpbnRlZ2VyIHNjcm9sbCBndXR0ZXIsIHN1YnRyYWN0IHRoZSByZXN0IGFuZCByb3VuZCBkb3duXG5cdFx0ZGVsdGEgKz0gTWF0aC5tYXgoIDAsIE1hdGguY2VpbChcblx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRjb21wdXRlZFZhbCAtXG5cdFx0XHRkZWx0YSAtXG5cdFx0XHRleHRyYSAtXG5cdFx0XHQwLjVcblx0XHQpICk7XG5cdH1cblxuXHRyZXR1cm4gZGVsdGE7XG59XG5cbmZ1bmN0aW9uIGdldFdpZHRoT3JIZWlnaHQoIGVsZW0sIGRpbWVuc2lvbiwgZXh0cmEgKSB7XG5cblx0Ly8gU3RhcnQgd2l0aCBjb21wdXRlZCBzdHlsZVxuXHR2YXIgc3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBkaW1lbnNpb24sIHN0eWxlcyApLFxuXHRcdGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHR2YWx1ZUlzQm9yZGVyQm94ID0gaXNCb3JkZXJCb3g7XG5cblx0Ly8gU3VwcG9ydDogRmlyZWZveCA8PTU0XG5cdC8vIFJldHVybiBhIGNvbmZvdW5kaW5nIG5vbi1waXhlbCB2YWx1ZSBvciBmZWlnbiBpZ25vcmFuY2UsIGFzIGFwcHJvcHJpYXRlLlxuXHRpZiAoIHJudW1ub25weC50ZXN0KCB2YWwgKSApIHtcblx0XHRpZiAoICFleHRyYSApIHtcblx0XHRcdHJldHVybiB2YWw7XG5cdFx0fVxuXHRcdHZhbCA9IFwiYXV0b1wiO1xuXHR9XG5cblx0Ly8gQ2hlY2sgZm9yIHN0eWxlIGluIGNhc2UgYSBicm93c2VyIHdoaWNoIHJldHVybnMgdW5yZWxpYWJsZSB2YWx1ZXNcblx0Ly8gZm9yIGdldENvbXB1dGVkU3R5bGUgc2lsZW50bHkgZmFsbHMgYmFjayB0byB0aGUgcmVsaWFibGUgZWxlbS5zdHlsZVxuXHR2YWx1ZUlzQm9yZGVyQm94ID0gdmFsdWVJc0JvcmRlckJveCAmJlxuXHRcdCggc3VwcG9ydC5ib3hTaXppbmdSZWxpYWJsZSgpIHx8IHZhbCA9PT0gZWxlbS5zdHlsZVsgZGltZW5zaW9uIF0gKTtcblxuXHQvLyBGYWxsIGJhY2sgdG8gb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IHdoZW4gdmFsdWUgaXMgXCJhdXRvXCJcblx0Ly8gVGhpcyBoYXBwZW5zIGZvciBpbmxpbmUgZWxlbWVudHMgd2l0aCBubyBleHBsaWNpdCBzZXR0aW5nIChnaC0zNTcxKVxuXHQvLyBTdXBwb3J0OiBBbmRyb2lkIDw9NC4xIC0gNC4zIG9ubHlcblx0Ly8gQWxzbyB1c2Ugb2Zmc2V0V2lkdGgvb2Zmc2V0SGVpZ2h0IGZvciBtaXNyZXBvcnRlZCBpbmxpbmUgZGltZW5zaW9ucyAoZ2gtMzYwMilcblx0aWYgKCB2YWwgPT09IFwiYXV0b1wiIHx8XG5cdFx0IXBhcnNlRmxvYXQoIHZhbCApICYmIGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiLCBmYWxzZSwgc3R5bGVzICkgPT09IFwiaW5saW5lXCIgKSB7XG5cblx0XHR2YWwgPSBlbGVtWyBcIm9mZnNldFwiICsgZGltZW5zaW9uWyAwIF0udG9VcHBlckNhc2UoKSArIGRpbWVuc2lvbi5zbGljZSggMSApIF07XG5cblx0XHQvLyBvZmZzZXRXaWR0aC9vZmZzZXRIZWlnaHQgcHJvdmlkZSBib3JkZXItYm94IHZhbHVlc1xuXHRcdHZhbHVlSXNCb3JkZXJCb3ggPSB0cnVlO1xuXHR9XG5cblx0Ly8gTm9ybWFsaXplIFwiXCIgYW5kIGF1dG9cblx0dmFsID0gcGFyc2VGbG9hdCggdmFsICkgfHwgMDtcblxuXHQvLyBBZGp1c3QgZm9yIHRoZSBlbGVtZW50J3MgYm94IG1vZGVsXG5cdHJldHVybiAoIHZhbCArXG5cdFx0Ym94TW9kZWxBZGp1c3RtZW50KFxuXHRcdFx0ZWxlbSxcblx0XHRcdGRpbWVuc2lvbixcblx0XHRcdGV4dHJhIHx8ICggaXNCb3JkZXJCb3ggPyBcImJvcmRlclwiIDogXCJjb250ZW50XCIgKSxcblx0XHRcdHZhbHVlSXNCb3JkZXJCb3gsXG5cdFx0XHRzdHlsZXMsXG5cblx0XHRcdC8vIFByb3ZpZGUgdGhlIGN1cnJlbnQgY29tcHV0ZWQgc2l6ZSB0byByZXF1ZXN0IHNjcm9sbCBndXR0ZXIgY2FsY3VsYXRpb24gKGdoLTM1ODkpXG5cdFx0XHR2YWxcblx0XHQpXG5cdCkgKyBcInB4XCI7XG59XG5cbmpRdWVyeS5leHRlbmQoIHtcblxuXHQvLyBBZGQgaW4gc3R5bGUgcHJvcGVydHkgaG9va3MgZm9yIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHRcblx0Ly8gYmVoYXZpb3Igb2YgZ2V0dGluZyBhbmQgc2V0dGluZyBhIHN0eWxlIHByb3BlcnR5XG5cdGNzc0hvb2tzOiB7XG5cdFx0b3BhY2l0eToge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0XHQvLyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0eVxuXHRcdFx0XHRcdHZhciByZXQgPSBjdXJDU1MoIGVsZW0sIFwib3BhY2l0eVwiICk7XG5cdFx0XHRcdFx0cmV0dXJuIHJldCA9PT0gXCJcIiA/IFwiMVwiIDogcmV0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8vIERvbid0IGF1dG9tYXRpY2FsbHkgYWRkIFwicHhcIiB0byB0aGVzZSBwb3NzaWJseS11bml0bGVzcyBwcm9wZXJ0aWVzXG5cdGNzc051bWJlcjoge1xuXHRcdFwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnRcIjogdHJ1ZSxcblx0XHRcImNvbHVtbkNvdW50XCI6IHRydWUsXG5cdFx0XCJmaWxsT3BhY2l0eVwiOiB0cnVlLFxuXHRcdFwiZmxleEdyb3dcIjogdHJ1ZSxcblx0XHRcImZsZXhTaHJpbmtcIjogdHJ1ZSxcblx0XHRcImZvbnRXZWlnaHRcIjogdHJ1ZSxcblx0XHRcImxpbmVIZWlnaHRcIjogdHJ1ZSxcblx0XHRcIm9wYWNpdHlcIjogdHJ1ZSxcblx0XHRcIm9yZGVyXCI6IHRydWUsXG5cdFx0XCJvcnBoYW5zXCI6IHRydWUsXG5cdFx0XCJ3aWRvd3NcIjogdHJ1ZSxcblx0XHRcInpJbmRleFwiOiB0cnVlLFxuXHRcdFwiem9vbVwiOiB0cnVlXG5cdH0sXG5cblx0Ly8gQWRkIGluIHByb3BlcnRpZXMgd2hvc2UgbmFtZXMgeW91IHdpc2ggdG8gZml4IGJlZm9yZVxuXHQvLyBzZXR0aW5nIG9yIGdldHRpbmcgdGhlIHZhbHVlXG5cdGNzc1Byb3BzOiB7fSxcblxuXHQvLyBHZXQgYW5kIHNldCB0aGUgc3R5bGUgcHJvcGVydHkgb24gYSBET00gTm9kZVxuXHRzdHlsZTogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlLCBleHRyYSApIHtcblxuXHRcdC8vIERvbid0IHNldCBzdHlsZXMgb24gdGV4dCBhbmQgY29tbWVudCBub2Rlc1xuXHRcdGlmICggIWVsZW0gfHwgZWxlbS5ub2RlVHlwZSA9PT0gMyB8fCBlbGVtLm5vZGVUeXBlID09PSA4IHx8ICFlbGVtLnN0eWxlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZVxuXHRcdHZhciByZXQsIHR5cGUsIGhvb2tzLFxuXHRcdFx0b3JpZ05hbWUgPSBjYW1lbENhc2UoIG5hbWUgKSxcblx0XHRcdGlzQ3VzdG9tUHJvcCA9IHJjdXN0b21Qcm9wLnRlc3QoIG5hbWUgKSxcblx0XHRcdHN0eWxlID0gZWxlbS5zdHlsZTtcblxuXHRcdC8vIE1ha2Ugc3VyZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCB0aGUgcmlnaHQgbmFtZS4gV2UgZG9uJ3Rcblx0XHQvLyB3YW50IHRvIHF1ZXJ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0cyBob29rIGZvciB0aGUgcHJlZml4ZWQgdmVyc2lvbiwgdGhlbiB1bnByZWZpeGVkIHZlcnNpb25cblx0XHRob29rcyA9IGpRdWVyeS5jc3NIb29rc1sgbmFtZSBdIHx8IGpRdWVyeS5jc3NIb29rc1sgb3JpZ05hbWUgXTtcblxuXHRcdC8vIENoZWNrIGlmIHdlJ3JlIHNldHRpbmcgYSB2YWx1ZVxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdHR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cblx0XHRcdC8vIENvbnZlcnQgXCIrPVwiIG9yIFwiLT1cIiB0byByZWxhdGl2ZSBudW1iZXJzICgjNzM0NSlcblx0XHRcdGlmICggdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAoIHJldCA9IHJjc3NOdW0uZXhlYyggdmFsdWUgKSApICYmIHJldFsgMSBdICkge1xuXHRcdFx0XHR2YWx1ZSA9IGFkanVzdENTUyggZWxlbSwgbmFtZSwgcmV0ICk7XG5cblx0XHRcdFx0Ly8gRml4ZXMgYnVnICM5MjM3XG5cdFx0XHRcdHR5cGUgPSBcIm51bWJlclwiO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBNYWtlIHN1cmUgdGhhdCBudWxsIGFuZCBOYU4gdmFsdWVzIGFyZW4ndCBzZXQgKCM3MTE2KVxuXHRcdFx0aWYgKCB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlICE9PSB2YWx1ZSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiBhIG51bWJlciB3YXMgcGFzc2VkIGluLCBhZGQgdGhlIHVuaXQgKGV4Y2VwdCBmb3IgY2VydGFpbiBDU1MgcHJvcGVydGllcylcblx0XHRcdGlmICggdHlwZSA9PT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0dmFsdWUgKz0gcmV0ICYmIHJldFsgMyBdIHx8ICggalF1ZXJ5LmNzc051bWJlclsgb3JpZ05hbWUgXSA/IFwiXCIgOiBcInB4XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gYmFja2dyb3VuZC0qIHByb3BzIGFmZmVjdCBvcmlnaW5hbCBjbG9uZSdzIHZhbHVlc1xuXHRcdFx0aWYgKCAhc3VwcG9ydC5jbGVhckNsb25lU3R5bGUgJiYgdmFsdWUgPT09IFwiXCIgJiYgbmFtZS5pbmRleE9mKCBcImJhY2tncm91bmRcIiApID09PSAwICkge1xuXHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gXCJpbmhlcml0XCI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQsIHVzZSB0aGF0IHZhbHVlLCBvdGhlcndpc2UganVzdCBzZXQgdGhlIHNwZWNpZmllZCB2YWx1ZVxuXHRcdFx0aWYgKCAhaG9va3MgfHwgISggXCJzZXRcIiBpbiBob29rcyApIHx8XG5cdFx0XHRcdCggdmFsdWUgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBleHRyYSApICkgIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdFx0XHRpZiAoIGlzQ3VzdG9tUHJvcCApIHtcblx0XHRcdFx0XHRzdHlsZS5zZXRQcm9wZXJ0eSggbmFtZSwgdmFsdWUgKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzdHlsZVsgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0gZWxzZSB7XG5cblx0XHRcdC8vIElmIGEgaG9vayB3YXMgcHJvdmlkZWQgZ2V0IHRoZSBub24tY29tcHV0ZWQgdmFsdWUgZnJvbSB0aGVyZVxuXHRcdFx0aWYgKCBob29rcyAmJiBcImdldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBmYWxzZSwgZXh0cmEgKSApICE9PSB1bmRlZmluZWQgKSB7XG5cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIGp1c3QgZ2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSBzdHlsZSBvYmplY3Rcblx0XHRcdHJldHVybiBzdHlsZVsgbmFtZSBdO1xuXHRcdH1cblx0fSxcblxuXHRjc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBleHRyYSwgc3R5bGVzICkge1xuXHRcdHZhciB2YWwsIG51bSwgaG9va3MsXG5cdFx0XHRvcmlnTmFtZSA9IGNhbWVsQ2FzZSggbmFtZSApLFxuXHRcdFx0aXNDdXN0b21Qcm9wID0gcmN1c3RvbVByb3AudGVzdCggbmFtZSApO1xuXG5cdFx0Ly8gTWFrZSBzdXJlIHRoYXQgd2UncmUgd29ya2luZyB3aXRoIHRoZSByaWdodCBuYW1lLiBXZSBkb24ndFxuXHRcdC8vIHdhbnQgdG8gbW9kaWZ5IHRoZSB2YWx1ZSBpZiBpdCBpcyBhIENTUyBjdXN0b20gcHJvcGVydHlcblx0XHQvLyBzaW5jZSB0aGV5IGFyZSB1c2VyLWRlZmluZWQuXG5cdFx0aWYgKCAhaXNDdXN0b21Qcm9wICkge1xuXHRcdFx0bmFtZSA9IGZpbmFsUHJvcE5hbWUoIG9yaWdOYW1lICk7XG5cdFx0fVxuXG5cdFx0Ly8gVHJ5IHByZWZpeGVkIG5hbWUgZm9sbG93ZWQgYnkgdGhlIHVucHJlZml4ZWQgbmFtZVxuXHRcdGhvb2tzID0galF1ZXJ5LmNzc0hvb2tzWyBuYW1lIF0gfHwgalF1ZXJ5LmNzc0hvb2tzWyBvcmlnTmFtZSBdO1xuXG5cdFx0Ly8gSWYgYSBob29rIHdhcyBwcm92aWRlZCBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGZyb20gdGhlcmVcblx0XHRpZiAoIGhvb2tzICYmIFwiZ2V0XCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWwgPSBob29rcy5nZXQoIGVsZW0sIHRydWUsIGV4dHJhICk7XG5cdFx0fVxuXG5cdFx0Ly8gT3RoZXJ3aXNlLCBpZiBhIHdheSB0byBnZXQgdGhlIGNvbXB1dGVkIHZhbHVlIGV4aXN0cywgdXNlIHRoYXRcblx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0dmFsID0gY3VyQ1NTKCBlbGVtLCBuYW1lLCBzdHlsZXMgKTtcblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IFwibm9ybWFsXCIgdG8gY29tcHV0ZWQgdmFsdWVcblx0XHRpZiAoIHZhbCA9PT0gXCJub3JtYWxcIiAmJiBuYW1lIGluIGNzc05vcm1hbFRyYW5zZm9ybSApIHtcblx0XHRcdHZhbCA9IGNzc05vcm1hbFRyYW5zZm9ybVsgbmFtZSBdO1xuXHRcdH1cblxuXHRcdC8vIE1ha2UgbnVtZXJpYyBpZiBmb3JjZWQgb3IgYSBxdWFsaWZpZXIgd2FzIHByb3ZpZGVkIGFuZCB2YWwgbG9va3MgbnVtZXJpY1xuXHRcdGlmICggZXh0cmEgPT09IFwiXCIgfHwgZXh0cmEgKSB7XG5cdFx0XHRudW0gPSBwYXJzZUZsb2F0KCB2YWwgKTtcblx0XHRcdHJldHVybiBleHRyYSA9PT0gdHJ1ZSB8fCBpc0Zpbml0ZSggbnVtICkgPyBudW0gfHwgMCA6IHZhbDtcblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiaGVpZ2h0XCIsIFwid2lkdGhcIiBdLCBmdW5jdGlvbiggaSwgZGltZW5zaW9uICkge1xuXHRqUXVlcnkuY3NzSG9va3NbIGRpbWVuc2lvbiBdID0ge1xuXHRcdGdldDogZnVuY3Rpb24oIGVsZW0sIGNvbXB1dGVkLCBleHRyYSApIHtcblx0XHRcdGlmICggY29tcHV0ZWQgKSB7XG5cblx0XHRcdFx0Ly8gQ2VydGFpbiBlbGVtZW50cyBjYW4gaGF2ZSBkaW1lbnNpb24gaW5mbyBpZiB3ZSBpbnZpc2libHkgc2hvdyB0aGVtXG5cdFx0XHRcdC8vIGJ1dCBpdCBtdXN0IGhhdmUgYSBjdXJyZW50IGRpc3BsYXkgc3R5bGUgdGhhdCB3b3VsZCBiZW5lZml0XG5cdFx0XHRcdHJldHVybiByZGlzcGxheXN3YXAudGVzdCggalF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKSApICYmXG5cblx0XHRcdFx0XHQvLyBTdXBwb3J0OiBTYWZhcmkgOCtcblx0XHRcdFx0XHQvLyBUYWJsZSBjb2x1bW5zIGluIFNhZmFyaSBoYXZlIG5vbi16ZXJvIG9mZnNldFdpZHRoICYgemVyb1xuXHRcdFx0XHRcdC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHVubGVzcyBkaXNwbGF5IGlzIGNoYW5nZWQuXG5cdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0XHRcdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYSBkaXNjb25uZWN0ZWQgbm9kZVxuXHRcdFx0XHRcdC8vIGluIElFIHRocm93cyBhbiBlcnJvci5cblx0XHRcdFx0XHQoICFlbGVtLmdldENsaWVudFJlY3RzKCkubGVuZ3RoIHx8ICFlbGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoICkgP1xuXHRcdFx0XHRcdFx0c3dhcCggZWxlbSwgY3NzU2hvdywgZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBnZXRXaWR0aE9ySGVpZ2h0KCBlbGVtLCBkaW1lbnNpb24sIGV4dHJhICk7XG5cdFx0XHRcdFx0XHR9ICkgOlxuXHRcdFx0XHRcdFx0Z2V0V2lkdGhPckhlaWdodCggZWxlbSwgZGltZW5zaW9uLCBleHRyYSApO1xuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSwgZXh0cmEgKSB7XG5cdFx0XHR2YXIgbWF0Y2hlcyxcblx0XHRcdFx0c3R5bGVzID0gZ2V0U3R5bGVzKCBlbGVtICksXG5cdFx0XHRcdGlzQm9yZGVyQm94ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJib3hTaXppbmdcIiwgZmFsc2UsIHN0eWxlcyApID09PSBcImJvcmRlci1ib3hcIixcblx0XHRcdFx0c3VidHJhY3QgPSBleHRyYSAmJiBib3hNb2RlbEFkanVzdG1lbnQoXG5cdFx0XHRcdFx0ZWxlbSxcblx0XHRcdFx0XHRkaW1lbnNpb24sXG5cdFx0XHRcdFx0ZXh0cmEsXG5cdFx0XHRcdFx0aXNCb3JkZXJCb3gsXG5cdFx0XHRcdFx0c3R5bGVzXG5cdFx0XHRcdCk7XG5cblx0XHRcdC8vIEFjY291bnQgZm9yIHVucmVsaWFibGUgYm9yZGVyLWJveCBkaW1lbnNpb25zIGJ5IGNvbXBhcmluZyBvZmZzZXQqIHRvIGNvbXB1dGVkIGFuZFxuXHRcdFx0Ly8gZmFraW5nIGEgY29udGVudC1ib3ggdG8gZ2V0IGJvcmRlciBhbmQgcGFkZGluZyAoZ2gtMzY5OSlcblx0XHRcdGlmICggaXNCb3JkZXJCb3ggJiYgc3VwcG9ydC5zY3JvbGxib3hTaXplKCkgPT09IHN0eWxlcy5wb3NpdGlvbiApIHtcblx0XHRcdFx0c3VidHJhY3QgLT0gTWF0aC5jZWlsKFxuXHRcdFx0XHRcdGVsZW1bIFwib2Zmc2V0XCIgKyBkaW1lbnNpb25bIDAgXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKCAxICkgXSAtXG5cdFx0XHRcdFx0cGFyc2VGbG9hdCggc3R5bGVzWyBkaW1lbnNpb24gXSApIC1cblx0XHRcdFx0XHRib3hNb2RlbEFkanVzdG1lbnQoIGVsZW0sIGRpbWVuc2lvbiwgXCJib3JkZXJcIiwgZmFsc2UsIHN0eWxlcyApIC1cblx0XHRcdFx0XHQwLjVcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ29udmVydCB0byBwaXhlbHMgaWYgdmFsdWUgYWRqdXN0bWVudCBpcyBuZWVkZWRcblx0XHRcdGlmICggc3VidHJhY3QgJiYgKCBtYXRjaGVzID0gcmNzc051bS5leGVjKCB2YWx1ZSApICkgJiZcblx0XHRcdFx0KCBtYXRjaGVzWyAzIF0gfHwgXCJweFwiICkgIT09IFwicHhcIiApIHtcblxuXHRcdFx0XHRlbGVtLnN0eWxlWyBkaW1lbnNpb24gXSA9IHZhbHVlO1xuXHRcdFx0XHR2YWx1ZSA9IGpRdWVyeS5jc3MoIGVsZW0sIGRpbWVuc2lvbiApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gc2V0UG9zaXRpdmVOdW1iZXIoIGVsZW0sIHZhbHVlLCBzdWJ0cmFjdCApO1xuXHRcdH1cblx0fTtcbn0gKTtcblxualF1ZXJ5LmNzc0hvb2tzLm1hcmdpbkxlZnQgPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucmVsaWFibGVNYXJnaW5MZWZ0LFxuXHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0aWYgKCBjb21wdXRlZCApIHtcblx0XHRcdHJldHVybiAoIHBhcnNlRmxvYXQoIGN1ckNTUyggZWxlbSwgXCJtYXJnaW5MZWZ0XCIgKSApIHx8XG5cdFx0XHRcdGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCAtXG5cdFx0XHRcdFx0c3dhcCggZWxlbSwgeyBtYXJnaW5MZWZ0OiAwIH0sIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcblx0XHRcdFx0XHR9IClcblx0XHRcdFx0KSArIFwicHhcIjtcblx0XHR9XG5cdH1cbik7XG5cbi8vIFRoZXNlIGhvb2tzIGFyZSB1c2VkIGJ5IGFuaW1hdGUgdG8gZXhwYW5kIHByb3BlcnRpZXNcbmpRdWVyeS5lYWNoKCB7XG5cdG1hcmdpbjogXCJcIixcblx0cGFkZGluZzogXCJcIixcblx0Ym9yZGVyOiBcIldpZHRoXCJcbn0sIGZ1bmN0aW9uKCBwcmVmaXgsIHN1ZmZpeCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcmVmaXggKyBzdWZmaXggXSA9IHtcblx0XHRleHBhbmQ6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHRcdHZhciBpID0gMCxcblx0XHRcdFx0ZXhwYW5kZWQgPSB7fSxcblxuXHRcdFx0XHQvLyBBc3N1bWVzIGEgc2luZ2xlIG51bWJlciBpZiBub3QgYSBzdHJpbmdcblx0XHRcdFx0cGFydHMgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyB2YWx1ZS5zcGxpdCggXCIgXCIgKSA6IFsgdmFsdWUgXTtcblxuXHRcdFx0Zm9yICggOyBpIDwgNDsgaSsrICkge1xuXHRcdFx0XHRleHBhbmRlZFsgcHJlZml4ICsgY3NzRXhwYW5kWyBpIF0gKyBzdWZmaXggXSA9XG5cdFx0XHRcdFx0cGFydHNbIGkgXSB8fCBwYXJ0c1sgaSAtIDIgXSB8fCBwYXJ0c1sgMCBdO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZXhwYW5kZWQ7XG5cdFx0fVxuXHR9O1xuXG5cdGlmICggcHJlZml4ICE9PSBcIm1hcmdpblwiICkge1xuXHRcdGpRdWVyeS5jc3NIb29rc1sgcHJlZml4ICsgc3VmZml4IF0uc2V0ID0gc2V0UG9zaXRpdmVOdW1iZXI7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRjc3M6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0XHR2YXIgc3R5bGVzLCBsZW4sXG5cdFx0XHRcdG1hcCA9IHt9LFxuXHRcdFx0XHRpID0gMDtcblxuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBuYW1lICkgKSB7XG5cdFx0XHRcdHN0eWxlcyA9IGdldFN0eWxlcyggZWxlbSApO1xuXHRcdFx0XHRsZW4gPSBuYW1lLmxlbmd0aDtcblxuXHRcdFx0XHRmb3IgKCA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0XHRtYXBbIG5hbWVbIGkgXSBdID0galF1ZXJ5LmNzcyggZWxlbSwgbmFtZVsgaSBdLCBmYWxzZSwgc3R5bGVzICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gbWFwO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgbmFtZSwgdmFsdWUgKSA6XG5cdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIG5hbWUgKTtcblx0XHR9LCBuYW1lLCB2YWx1ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgKTtcblx0fVxufSApO1xuXG5cbmZ1bmN0aW9uIFR3ZWVuKCBlbGVtLCBvcHRpb25zLCBwcm9wLCBlbmQsIGVhc2luZyApIHtcblx0cmV0dXJuIG5ldyBUd2Vlbi5wcm90b3R5cGUuaW5pdCggZWxlbSwgb3B0aW9ucywgcHJvcCwgZW5kLCBlYXNpbmcgKTtcbn1cbmpRdWVyeS5Ud2VlbiA9IFR3ZWVuO1xuXG5Ud2Vlbi5wcm90b3R5cGUgPSB7XG5cdGNvbnN0cnVjdG9yOiBUd2Vlbixcblx0aW5pdDogZnVuY3Rpb24oIGVsZW0sIG9wdGlvbnMsIHByb3AsIGVuZCwgZWFzaW5nLCB1bml0ICkge1xuXHRcdHRoaXMuZWxlbSA9IGVsZW07XG5cdFx0dGhpcy5wcm9wID0gcHJvcDtcblx0XHR0aGlzLmVhc2luZyA9IGVhc2luZyB8fCBqUXVlcnkuZWFzaW5nLl9kZWZhdWx0O1xuXHRcdHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cdFx0dGhpcy5zdGFydCA9IHRoaXMubm93ID0gdGhpcy5jdXIoKTtcblx0XHR0aGlzLmVuZCA9IGVuZDtcblx0XHR0aGlzLnVuaXQgPSB1bml0IHx8ICggalF1ZXJ5LmNzc051bWJlclsgcHJvcCBdID8gXCJcIiA6IFwicHhcIiApO1xuXHR9LFxuXHRjdXI6IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRyZXR1cm4gaG9va3MgJiYgaG9va3MuZ2V0ID9cblx0XHRcdGhvb2tzLmdldCggdGhpcyApIDpcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5nZXQoIHRoaXMgKTtcblx0fSxcblx0cnVuOiBmdW5jdGlvbiggcGVyY2VudCApIHtcblx0XHR2YXIgZWFzZWQsXG5cdFx0XHRob29rcyA9IFR3ZWVuLnByb3BIb29rc1sgdGhpcy5wcm9wIF07XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5kdXJhdGlvbiApIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBqUXVlcnkuZWFzaW5nWyB0aGlzLmVhc2luZyBdKFxuXHRcdFx0XHRwZXJjZW50LCB0aGlzLm9wdGlvbnMuZHVyYXRpb24gKiBwZXJjZW50LCAwLCAxLCB0aGlzLm9wdGlvbnMuZHVyYXRpb25cblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMucG9zID0gZWFzZWQgPSBwZXJjZW50O1xuXHRcdH1cblx0XHR0aGlzLm5vdyA9ICggdGhpcy5lbmQgLSB0aGlzLnN0YXJ0ICkgKiBlYXNlZCArIHRoaXMuc3RhcnQ7XG5cblx0XHRpZiAoIHRoaXMub3B0aW9ucy5zdGVwICkge1xuXHRcdFx0dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCggdGhpcy5lbGVtLCB0aGlzLm5vdywgdGhpcyApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgaG9va3Muc2V0ICkge1xuXHRcdFx0aG9va3Muc2V0KCB0aGlzICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdFR3ZWVuLnByb3BIb29rcy5fZGVmYXVsdC5zZXQoIHRoaXMgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn07XG5cblR3ZWVuLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZSA9IFR3ZWVuLnByb3RvdHlwZTtcblxuVHdlZW4ucHJvcEhvb2tzID0ge1xuXHRfZGVmYXVsdDoge1xuXHRcdGdldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdFx0dmFyIHJlc3VsdDtcblxuXHRcdFx0Ly8gVXNlIGEgcHJvcGVydHkgb24gdGhlIGVsZW1lbnQgZGlyZWN0bHkgd2hlbiBpdCBpcyBub3QgYSBET00gZWxlbWVudCxcblx0XHRcdC8vIG9yIHdoZW4gdGhlcmUgaXMgbm8gbWF0Y2hpbmcgc3R5bGUgcHJvcGVydHkgdGhhdCBleGlzdHMuXG5cdFx0XHRpZiAoIHR3ZWVuLmVsZW0ubm9kZVR5cGUgIT09IDEgfHxcblx0XHRcdFx0dHdlZW4uZWxlbVsgdHdlZW4ucHJvcCBdICE9IG51bGwgJiYgdHdlZW4uZWxlbS5zdHlsZVsgdHdlZW4ucHJvcCBdID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiB0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF07XG5cdFx0XHR9XG5cblx0XHRcdC8vIFBhc3NpbmcgYW4gZW1wdHkgc3RyaW5nIGFzIGEgM3JkIHBhcmFtZXRlciB0byAuY3NzIHdpbGwgYXV0b21hdGljYWxseVxuXHRcdFx0Ly8gYXR0ZW1wdCBhIHBhcnNlRmxvYXQgYW5kIGZhbGxiYWNrIHRvIGEgc3RyaW5nIGlmIHRoZSBwYXJzZSBmYWlscy5cblx0XHRcdC8vIFNpbXBsZSB2YWx1ZXMgc3VjaCBhcyBcIjEwcHhcIiBhcmUgcGFyc2VkIHRvIEZsb2F0O1xuXHRcdFx0Ly8gY29tcGxleCB2YWx1ZXMgc3VjaCBhcyBcInJvdGF0ZSgxcmFkKVwiIGFyZSByZXR1cm5lZCBhcy1pcy5cblx0XHRcdHJlc3VsdCA9IGpRdWVyeS5jc3MoIHR3ZWVuLmVsZW0sIHR3ZWVuLnByb3AsIFwiXCIgKTtcblxuXHRcdFx0Ly8gRW1wdHkgc3RyaW5ncywgbnVsbCwgdW5kZWZpbmVkIGFuZCBcImF1dG9cIiBhcmUgY29udmVydGVkIHRvIDAuXG5cdFx0XHRyZXR1cm4gIXJlc3VsdCB8fCByZXN1bHQgPT09IFwiYXV0b1wiID8gMCA6IHJlc3VsdDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXG5cdFx0XHQvLyBVc2Ugc3RlcCBob29rIGZvciBiYWNrIGNvbXBhdC5cblx0XHRcdC8vIFVzZSBjc3NIb29rIGlmIGl0cyB0aGVyZS5cblx0XHRcdC8vIFVzZSAuc3R5bGUgaWYgYXZhaWxhYmxlIGFuZCB1c2UgcGxhaW4gcHJvcGVydGllcyB3aGVyZSBhdmFpbGFibGUuXG5cdFx0XHRpZiAoIGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0gKSB7XG5cdFx0XHRcdGpRdWVyeS5meC5zdGVwWyB0d2Vlbi5wcm9wIF0oIHR3ZWVuICk7XG5cdFx0XHR9IGVsc2UgaWYgKCB0d2Vlbi5lbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggdHdlZW4uZWxlbS5zdHlsZVsgalF1ZXJ5LmNzc1Byb3BzWyB0d2Vlbi5wcm9wIF0gXSAhPSBudWxsIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LmNzc0hvb2tzWyB0d2Vlbi5wcm9wIF0gKSApIHtcblx0XHRcdFx0alF1ZXJ5LnN0eWxlKCB0d2Vlbi5lbGVtLCB0d2Vlbi5wcm9wLCB0d2Vlbi5ub3cgKyB0d2Vlbi51bml0ICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBTdXBwb3J0OiBJRSA8PTkgb25seVxuLy8gUGFuaWMgYmFzZWQgYXBwcm9hY2ggdG8gc2V0dGluZyB0aGluZ3Mgb24gZGlzY29ubmVjdGVkIG5vZGVzXG5Ud2Vlbi5wcm9wSG9va3Muc2Nyb2xsVG9wID0gVHdlZW4ucHJvcEhvb2tzLnNjcm9sbExlZnQgPSB7XG5cdHNldDogZnVuY3Rpb24oIHR3ZWVuICkge1xuXHRcdGlmICggdHdlZW4uZWxlbS5ub2RlVHlwZSAmJiB0d2Vlbi5lbGVtLnBhcmVudE5vZGUgKSB7XG5cdFx0XHR0d2Vlbi5lbGVtWyB0d2Vlbi5wcm9wIF0gPSB0d2Vlbi5ub3c7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZWFzaW5nID0ge1xuXHRsaW5lYXI6IGZ1bmN0aW9uKCBwICkge1xuXHRcdHJldHVybiBwO1xuXHR9LFxuXHRzd2luZzogZnVuY3Rpb24oIHAgKSB7XG5cdFx0cmV0dXJuIDAuNSAtIE1hdGguY29zKCBwICogTWF0aC5QSSApIC8gMjtcblx0fSxcblx0X2RlZmF1bHQ6IFwic3dpbmdcIlxufTtcblxualF1ZXJ5LmZ4ID0gVHdlZW4ucHJvdG90eXBlLmluaXQ7XG5cbi8vIEJhY2sgY29tcGF0IDwxLjggZXh0ZW5zaW9uIHBvaW50XG5qUXVlcnkuZnguc3RlcCA9IHt9O1xuXG5cblxuXG52YXJcblx0ZnhOb3csIGluUHJvZ3Jlc3MsXG5cdHJmeHR5cGVzID0gL14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLFxuXHRycnVuID0gL3F1ZXVlSG9va3MkLztcblxuZnVuY3Rpb24gc2NoZWR1bGUoKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRpZiAoIGRvY3VtZW50LmhpZGRlbiA9PT0gZmFsc2UgJiYgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSApIHtcblx0XHRcdHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIHNjaGVkdWxlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBzY2hlZHVsZSwgalF1ZXJ5LmZ4LmludGVydmFsICk7XG5cdFx0fVxuXG5cdFx0alF1ZXJ5LmZ4LnRpY2soKTtcblx0fVxufVxuXG4vLyBBbmltYXRpb25zIGNyZWF0ZWQgc3luY2hyb25vdXNseSB3aWxsIHJ1biBzeW5jaHJvbm91c2x5XG5mdW5jdGlvbiBjcmVhdGVGeE5vdygpIHtcblx0d2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uKCkge1xuXHRcdGZ4Tm93ID0gdW5kZWZpbmVkO1xuXHR9ICk7XG5cdHJldHVybiAoIGZ4Tm93ID0gRGF0ZS5ub3coKSApO1xufVxuXG4vLyBHZW5lcmF0ZSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBhIHN0YW5kYXJkIGFuaW1hdGlvblxuZnVuY3Rpb24gZ2VuRngoIHR5cGUsIGluY2x1ZGVXaWR0aCApIHtcblx0dmFyIHdoaWNoLFxuXHRcdGkgPSAwLFxuXHRcdGF0dHJzID0geyBoZWlnaHQ6IHR5cGUgfTtcblxuXHQvLyBJZiB3ZSBpbmNsdWRlIHdpZHRoLCBzdGVwIHZhbHVlIGlzIDEgdG8gZG8gYWxsIGNzc0V4cGFuZCB2YWx1ZXMsXG5cdC8vIG90aGVyd2lzZSBzdGVwIHZhbHVlIGlzIDIgdG8gc2tpcCBvdmVyIExlZnQgYW5kIFJpZ2h0XG5cdGluY2x1ZGVXaWR0aCA9IGluY2x1ZGVXaWR0aCA/IDEgOiAwO1xuXHRmb3IgKCA7IGkgPCA0OyBpICs9IDIgLSBpbmNsdWRlV2lkdGggKSB7XG5cdFx0d2hpY2ggPSBjc3NFeHBhbmRbIGkgXTtcblx0XHRhdHRyc1sgXCJtYXJnaW5cIiArIHdoaWNoIF0gPSBhdHRyc1sgXCJwYWRkaW5nXCIgKyB3aGljaCBdID0gdHlwZTtcblx0fVxuXG5cdGlmICggaW5jbHVkZVdpZHRoICkge1xuXHRcdGF0dHJzLm9wYWNpdHkgPSBhdHRycy53aWR0aCA9IHR5cGU7XG5cdH1cblxuXHRyZXR1cm4gYXR0cnM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVR3ZWVuKCB2YWx1ZSwgcHJvcCwgYW5pbWF0aW9uICkge1xuXHR2YXIgdHdlZW4sXG5cdFx0Y29sbGVjdGlvbiA9ICggQW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gfHwgW10gKS5jb25jYXQoIEFuaW1hdGlvbi50d2VlbmVyc1sgXCIqXCIgXSApLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBjb2xsZWN0aW9uLmxlbmd0aDtcblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRpZiAoICggdHdlZW4gPSBjb2xsZWN0aW9uWyBpbmRleCBdLmNhbGwoIGFuaW1hdGlvbiwgcHJvcCwgdmFsdWUgKSApICkge1xuXG5cdFx0XHQvLyBXZSdyZSBkb25lIHdpdGggdGhpcyBwcm9wZXJ0eVxuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0UHJlZmlsdGVyKCBlbGVtLCBwcm9wcywgb3B0cyApIHtcblx0dmFyIHByb3AsIHZhbHVlLCB0b2dnbGUsIGhvb2tzLCBvbGRmaXJlLCBwcm9wVHdlZW4sIHJlc3RvcmVEaXNwbGF5LCBkaXNwbGF5LFxuXHRcdGlzQm94ID0gXCJ3aWR0aFwiIGluIHByb3BzIHx8IFwiaGVpZ2h0XCIgaW4gcHJvcHMsXG5cdFx0YW5pbSA9IHRoaXMsXG5cdFx0b3JpZyA9IHt9LFxuXHRcdHN0eWxlID0gZWxlbS5zdHlsZSxcblx0XHRoaWRkZW4gPSBlbGVtLm5vZGVUeXBlICYmIGlzSGlkZGVuV2l0aGluVHJlZSggZWxlbSApLFxuXHRcdGRhdGFTaG93ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImZ4c2hvd1wiICk7XG5cblx0Ly8gUXVldWUtc2tpcHBpbmcgYW5pbWF0aW9ucyBoaWphY2sgdGhlIGZ4IGhvb2tzXG5cdGlmICggIW9wdHMucXVldWUgKSB7XG5cdFx0aG9va3MgPSBqUXVlcnkuX3F1ZXVlSG9va3MoIGVsZW0sIFwiZnhcIiApO1xuXHRcdGlmICggaG9va3MudW5xdWV1ZWQgPT0gbnVsbCApIHtcblx0XHRcdGhvb2tzLnVucXVldWVkID0gMDtcblx0XHRcdG9sZGZpcmUgPSBob29rcy5lbXB0eS5maXJlO1xuXHRcdFx0aG9va3MuZW1wdHkuZmlyZSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoICFob29rcy51bnF1ZXVlZCApIHtcblx0XHRcdFx0XHRvbGRmaXJlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHRcdGhvb2tzLnVucXVldWVkKys7XG5cblx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8vIEVuc3VyZSB0aGUgY29tcGxldGUgaGFuZGxlciBpcyBjYWxsZWQgYmVmb3JlIHRoaXMgY29tcGxldGVzXG5cdFx0XHRhbmltLmFsd2F5cyggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGhvb2tzLnVucXVldWVkLS07XG5cdFx0XHRcdGlmICggIWpRdWVyeS5xdWV1ZSggZWxlbSwgXCJmeFwiICkubGVuZ3RoICkge1xuXHRcdFx0XHRcdGhvb2tzLmVtcHR5LmZpcmUoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8vIERldGVjdCBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRmb3IgKCBwcm9wIGluIHByb3BzICkge1xuXHRcdHZhbHVlID0gcHJvcHNbIHByb3AgXTtcblx0XHRpZiAoIHJmeHR5cGVzLnRlc3QoIHZhbHVlICkgKSB7XG5cdFx0XHRkZWxldGUgcHJvcHNbIHByb3AgXTtcblx0XHRcdHRvZ2dsZSA9IHRvZ2dsZSB8fCB2YWx1ZSA9PT0gXCJ0b2dnbGVcIjtcblx0XHRcdGlmICggdmFsdWUgPT09ICggaGlkZGVuID8gXCJoaWRlXCIgOiBcInNob3dcIiApICkge1xuXG5cdFx0XHRcdC8vIFByZXRlbmQgdG8gYmUgaGlkZGVuIGlmIHRoaXMgaXMgYSBcInNob3dcIiBhbmRcblx0XHRcdFx0Ly8gdGhlcmUgaXMgc3RpbGwgZGF0YSBmcm9tIGEgc3RvcHBlZCBzaG93L2hpZGVcblx0XHRcdFx0aWYgKCB2YWx1ZSA9PT0gXCJzaG93XCIgJiYgZGF0YVNob3cgJiYgZGF0YVNob3dbIHByb3AgXSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdGhpZGRlbiA9IHRydWU7XG5cblx0XHRcdFx0Ly8gSWdub3JlIGFsbCBvdGhlciBuby1vcCBzaG93L2hpZGUgZGF0YVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRvcmlnWyBwcm9wIF0gPSBkYXRhU2hvdyAmJiBkYXRhU2hvd1sgcHJvcCBdIHx8IGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCApO1xuXHRcdH1cblx0fVxuXG5cdC8vIEJhaWwgb3V0IGlmIHRoaXMgaXMgYSBuby1vcCBsaWtlIC5oaWRlKCkuaGlkZSgpXG5cdHByb3BUd2VlbiA9ICFqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcHMgKTtcblx0aWYgKCAhcHJvcFR3ZWVuICYmIGpRdWVyeS5pc0VtcHR5T2JqZWN0KCBvcmlnICkgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gUmVzdHJpY3QgXCJvdmVyZmxvd1wiIGFuZCBcImRpc3BsYXlcIiBzdHlsZXMgZHVyaW5nIGJveCBhbmltYXRpb25zXG5cdGlmICggaXNCb3ggJiYgZWxlbS5ub2RlVHlwZSA9PT0gMSApIHtcblxuXHRcdC8vIFN1cHBvcnQ6IElFIDw9OSAtIDExLCBFZGdlIDEyIC0gMTVcblx0XHQvLyBSZWNvcmQgYWxsIDMgb3ZlcmZsb3cgYXR0cmlidXRlcyBiZWNhdXNlIElFIGRvZXMgbm90IGluZmVyIHRoZSBzaG9ydGhhbmRcblx0XHQvLyBmcm9tIGlkZW50aWNhbGx5LXZhbHVlZCBvdmVyZmxvd1ggYW5kIG92ZXJmbG93WSBhbmQgRWRnZSBqdXN0IG1pcnJvcnNcblx0XHQvLyB0aGUgb3ZlcmZsb3dYIHZhbHVlIHRoZXJlLlxuXHRcdG9wdHMub3ZlcmZsb3cgPSBbIHN0eWxlLm92ZXJmbG93LCBzdHlsZS5vdmVyZmxvd1gsIHN0eWxlLm92ZXJmbG93WSBdO1xuXG5cdFx0Ly8gSWRlbnRpZnkgYSBkaXNwbGF5IHR5cGUsIHByZWZlcnJpbmcgb2xkIHNob3cvaGlkZSBkYXRhIG92ZXIgdGhlIENTUyBjYXNjYWRlXG5cdFx0cmVzdG9yZURpc3BsYXkgPSBkYXRhU2hvdyAmJiBkYXRhU2hvdy5kaXNwbGF5O1xuXHRcdGlmICggcmVzdG9yZURpc3BsYXkgPT0gbnVsbCApIHtcblx0XHRcdHJlc3RvcmVEaXNwbGF5ID0gZGF0YVByaXYuZ2V0KCBlbGVtLCBcImRpc3BsYXlcIiApO1xuXHRcdH1cblx0XHRkaXNwbGF5ID0galF1ZXJ5LmNzcyggZWxlbSwgXCJkaXNwbGF5XCIgKTtcblx0XHRpZiAoIGRpc3BsYXkgPT09IFwibm9uZVwiICkge1xuXHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSApIHtcblx0XHRcdFx0ZGlzcGxheSA9IHJlc3RvcmVEaXNwbGF5O1xuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBHZXQgbm9uZW1wdHkgdmFsdWUocykgYnkgdGVtcG9yYXJpbHkgZm9yY2luZyB2aXNpYmlsaXR5XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSwgdHJ1ZSApO1xuXHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGVsZW0uc3R5bGUuZGlzcGxheSB8fCByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0ZGlzcGxheSA9IGpRdWVyeS5jc3MoIGVsZW0sIFwiZGlzcGxheVwiICk7XG5cdFx0XHRcdHNob3dIaWRlKCBbIGVsZW0gXSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEFuaW1hdGUgaW5saW5lIGVsZW1lbnRzIGFzIGlubGluZS1ibG9ja1xuXHRcdGlmICggZGlzcGxheSA9PT0gXCJpbmxpbmVcIiB8fCBkaXNwbGF5ID09PSBcImlubGluZS1ibG9ja1wiICYmIHJlc3RvcmVEaXNwbGF5ICE9IG51bGwgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwiZmxvYXRcIiApID09PSBcIm5vbmVcIiApIHtcblxuXHRcdFx0XHQvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBkaXNwbGF5IHZhbHVlIGF0IHRoZSBlbmQgb2YgcHVyZSBzaG93L2hpZGUgYW5pbWF0aW9uc1xuXHRcdFx0XHRpZiAoICFwcm9wVHdlZW4gKSB7XG5cdFx0XHRcdFx0YW5pbS5kb25lKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSByZXN0b3JlRGlzcGxheTtcblx0XHRcdFx0XHR9ICk7XG5cdFx0XHRcdFx0aWYgKCByZXN0b3JlRGlzcGxheSA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0ZGlzcGxheSA9IHN0eWxlLmRpc3BsYXk7XG5cdFx0XHRcdFx0XHRyZXN0b3JlRGlzcGxheSA9IGRpc3BsYXkgPT09IFwibm9uZVwiID8gXCJcIiA6IGRpc3BsYXk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN0eWxlLmRpc3BsYXkgPSBcImlubGluZS1ibG9ja1wiO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmICggb3B0cy5vdmVyZmxvdyApIHtcblx0XHRzdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG5cdFx0YW5pbS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXHRcdFx0c3R5bGUub3ZlcmZsb3cgPSBvcHRzLm92ZXJmbG93WyAwIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1ggPSBvcHRzLm92ZXJmbG93WyAxIF07XG5cdFx0XHRzdHlsZS5vdmVyZmxvd1kgPSBvcHRzLm92ZXJmbG93WyAyIF07XG5cdFx0fSApO1xuXHR9XG5cblx0Ly8gSW1wbGVtZW50IHNob3cvaGlkZSBhbmltYXRpb25zXG5cdHByb3BUd2VlbiA9IGZhbHNlO1xuXHRmb3IgKCBwcm9wIGluIG9yaWcgKSB7XG5cblx0XHQvLyBHZW5lcmFsIHNob3cvaGlkZSBzZXR1cCBmb3IgdGhpcyBlbGVtZW50IGFuaW1hdGlvblxuXHRcdGlmICggIXByb3BUd2VlbiApIHtcblx0XHRcdGlmICggZGF0YVNob3cgKSB7XG5cdFx0XHRcdGlmICggXCJoaWRkZW5cIiBpbiBkYXRhU2hvdyApIHtcblx0XHRcdFx0XHRoaWRkZW4gPSBkYXRhU2hvdy5oaWRkZW47XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRhdGFTaG93ID0gZGF0YVByaXYuYWNjZXNzKCBlbGVtLCBcImZ4c2hvd1wiLCB7IGRpc3BsYXk6IHJlc3RvcmVEaXNwbGF5IH0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RvcmUgaGlkZGVuL3Zpc2libGUgZm9yIHRvZ2dsZSBzbyBgLnN0b3AoKS50b2dnbGUoKWAgXCJyZXZlcnNlc1wiXG5cdFx0XHRpZiAoIHRvZ2dsZSApIHtcblx0XHRcdFx0ZGF0YVNob3cuaGlkZGVuID0gIWhpZGRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2hvdyBlbGVtZW50cyBiZWZvcmUgYW5pbWF0aW5nIHRoZW1cblx0XHRcdGlmICggaGlkZGVuICkge1xuXHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0sIHRydWUgKTtcblx0XHRcdH1cblxuXHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdGFuaW0uZG9uZSggZnVuY3Rpb24oKSB7XG5cblx0XHRcdC8qIGVzbGludC1lbmFibGUgbm8tbG9vcC1mdW5jICovXG5cblx0XHRcdFx0Ly8gVGhlIGZpbmFsIHN0ZXAgb2YgYSBcImhpZGVcIiBhbmltYXRpb24gaXMgYWN0dWFsbHkgaGlkaW5nIHRoZSBlbGVtZW50XG5cdFx0XHRcdGlmICggIWhpZGRlbiApIHtcblx0XHRcdFx0XHRzaG93SGlkZSggWyBlbGVtIF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkYXRhUHJpdi5yZW1vdmUoIGVsZW0sIFwiZnhzaG93XCIgKTtcblx0XHRcdFx0Zm9yICggcHJvcCBpbiBvcmlnICkge1xuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgcHJvcCwgb3JpZ1sgcHJvcCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHQvLyBQZXItcHJvcGVydHkgc2V0dXBcblx0XHRwcm9wVHdlZW4gPSBjcmVhdGVUd2VlbiggaGlkZGVuID8gZGF0YVNob3dbIHByb3AgXSA6IDAsIHByb3AsIGFuaW0gKTtcblx0XHRpZiAoICEoIHByb3AgaW4gZGF0YVNob3cgKSApIHtcblx0XHRcdGRhdGFTaG93WyBwcm9wIF0gPSBwcm9wVHdlZW4uc3RhcnQ7XG5cdFx0XHRpZiAoIGhpZGRlbiApIHtcblx0XHRcdFx0cHJvcFR3ZWVuLmVuZCA9IHByb3BUd2Vlbi5zdGFydDtcblx0XHRcdFx0cHJvcFR3ZWVuLnN0YXJ0ID0gMDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcHJvcEZpbHRlciggcHJvcHMsIHNwZWNpYWxFYXNpbmcgKSB7XG5cdHZhciBpbmRleCwgbmFtZSwgZWFzaW5nLCB2YWx1ZSwgaG9va3M7XG5cblx0Ly8gY2FtZWxDYXNlLCBzcGVjaWFsRWFzaW5nIGFuZCBleHBhbmQgY3NzSG9vayBwYXNzXG5cdGZvciAoIGluZGV4IGluIHByb3BzICkge1xuXHRcdG5hbWUgPSBjYW1lbENhc2UoIGluZGV4ICk7XG5cdFx0ZWFzaW5nID0gc3BlY2lhbEVhc2luZ1sgbmFtZSBdO1xuXHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF07XG5cdFx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdFx0ZWFzaW5nID0gdmFsdWVbIDEgXTtcblx0XHRcdHZhbHVlID0gcHJvcHNbIGluZGV4IF0gPSB2YWx1ZVsgMCBdO1xuXHRcdH1cblxuXHRcdGlmICggaW5kZXggIT09IG5hbWUgKSB7XG5cdFx0XHRwcm9wc1sgbmFtZSBdID0gdmFsdWU7XG5cdFx0XHRkZWxldGUgcHJvcHNbIGluZGV4IF07XG5cdFx0fVxuXG5cdFx0aG9va3MgPSBqUXVlcnkuY3NzSG9va3NbIG5hbWUgXTtcblx0XHRpZiAoIGhvb2tzICYmIFwiZXhwYW5kXCIgaW4gaG9va3MgKSB7XG5cdFx0XHR2YWx1ZSA9IGhvb2tzLmV4cGFuZCggdmFsdWUgKTtcblx0XHRcdGRlbGV0ZSBwcm9wc1sgbmFtZSBdO1xuXG5cdFx0XHQvLyBOb3QgcXVpdGUgJC5leHRlbmQsIHRoaXMgd29uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGtleXMuXG5cdFx0XHQvLyBSZXVzaW5nICdpbmRleCcgYmVjYXVzZSB3ZSBoYXZlIHRoZSBjb3JyZWN0IFwibmFtZVwiXG5cdFx0XHRmb3IgKCBpbmRleCBpbiB2YWx1ZSApIHtcblx0XHRcdFx0aWYgKCAhKCBpbmRleCBpbiBwcm9wcyApICkge1xuXHRcdFx0XHRcdHByb3BzWyBpbmRleCBdID0gdmFsdWVbIGluZGV4IF07XG5cdFx0XHRcdFx0c3BlY2lhbEVhc2luZ1sgaW5kZXggXSA9IGVhc2luZztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzcGVjaWFsRWFzaW5nWyBuYW1lIF0gPSBlYXNpbmc7XG5cdFx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIEFuaW1hdGlvbiggZWxlbSwgcHJvcGVydGllcywgb3B0aW9ucyApIHtcblx0dmFyIHJlc3VsdCxcblx0XHRzdG9wcGVkLFxuXHRcdGluZGV4ID0gMCxcblx0XHRsZW5ndGggPSBBbmltYXRpb24ucHJlZmlsdGVycy5sZW5ndGgsXG5cdFx0ZGVmZXJyZWQgPSBqUXVlcnkuRGVmZXJyZWQoKS5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBEb24ndCBtYXRjaCBlbGVtIGluIHRoZSA6YW5pbWF0ZWQgc2VsZWN0b3Jcblx0XHRcdGRlbGV0ZSB0aWNrLmVsZW07XG5cdFx0fSApLFxuXHRcdHRpY2sgPSBmdW5jdGlvbigpIHtcblx0XHRcdGlmICggc3RvcHBlZCApIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGN1cnJlbnRUaW1lID0gZnhOb3cgfHwgY3JlYXRlRnhOb3coKSxcblx0XHRcdFx0cmVtYWluaW5nID0gTWF0aC5tYXgoIDAsIGFuaW1hdGlvbi5zdGFydFRpbWUgKyBhbmltYXRpb24uZHVyYXRpb24gLSBjdXJyZW50VGltZSApLFxuXG5cdFx0XHRcdC8vIFN1cHBvcnQ6IEFuZHJvaWQgMi4zIG9ubHlcblx0XHRcdFx0Ly8gQXJjaGFpYyBjcmFzaCBidWcgd29uJ3QgYWxsb3cgdXMgdG8gdXNlIGAxIC0gKCAwLjUgfHwgMCApYCAoIzEyNDk3KVxuXHRcdFx0XHR0ZW1wID0gcmVtYWluaW5nIC8gYW5pbWF0aW9uLmR1cmF0aW9uIHx8IDAsXG5cdFx0XHRcdHBlcmNlbnQgPSAxIC0gdGVtcCxcblx0XHRcdFx0aW5kZXggPSAwLFxuXHRcdFx0XHRsZW5ndGggPSBhbmltYXRpb24udHdlZW5zLmxlbmd0aDtcblxuXHRcdFx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIHBlcmNlbnQgKTtcblx0XHRcdH1cblxuXHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIHBlcmNlbnQsIHJlbWFpbmluZyBdICk7XG5cblx0XHRcdC8vIElmIHRoZXJlJ3MgbW9yZSB0byBkbywgeWllbGRcblx0XHRcdGlmICggcGVyY2VudCA8IDEgJiYgbGVuZ3RoICkge1xuXHRcdFx0XHRyZXR1cm4gcmVtYWluaW5nO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBJZiB0aGlzIHdhcyBhbiBlbXB0eSBhbmltYXRpb24sIHN5bnRoZXNpemUgYSBmaW5hbCBwcm9ncmVzcyBub3RpZmljYXRpb25cblx0XHRcdGlmICggIWxlbmd0aCApIHtcblx0XHRcdFx0ZGVmZXJyZWQubm90aWZ5V2l0aCggZWxlbSwgWyBhbmltYXRpb24sIDEsIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBSZXNvbHZlIHRoZSBhbmltYXRpb24gYW5kIHJlcG9ydCBpdHMgY29uY2x1c2lvblxuXHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uIF0gKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9LFxuXHRcdGFuaW1hdGlvbiA9IGRlZmVycmVkLnByb21pc2UoIHtcblx0XHRcdGVsZW06IGVsZW0sXG5cdFx0XHRwcm9wczogalF1ZXJ5LmV4dGVuZCgge30sIHByb3BlcnRpZXMgKSxcblx0XHRcdG9wdHM6IGpRdWVyeS5leHRlbmQoIHRydWUsIHtcblx0XHRcdFx0c3BlY2lhbEVhc2luZzoge30sXG5cdFx0XHRcdGVhc2luZzogalF1ZXJ5LmVhc2luZy5fZGVmYXVsdFxuXHRcdFx0fSwgb3B0aW9ucyApLFxuXHRcdFx0b3JpZ2luYWxQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxuXHRcdFx0b3JpZ2luYWxPcHRpb25zOiBvcHRpb25zLFxuXHRcdFx0c3RhcnRUaW1lOiBmeE5vdyB8fCBjcmVhdGVGeE5vdygpLFxuXHRcdFx0ZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sXG5cdFx0XHR0d2VlbnM6IFtdLFxuXHRcdFx0Y3JlYXRlVHdlZW46IGZ1bmN0aW9uKCBwcm9wLCBlbmQgKSB7XG5cdFx0XHRcdHZhciB0d2VlbiA9IGpRdWVyeS5Ud2VlbiggZWxlbSwgYW5pbWF0aW9uLm9wdHMsIHByb3AsIGVuZCxcblx0XHRcdFx0XHRcdGFuaW1hdGlvbi5vcHRzLnNwZWNpYWxFYXNpbmdbIHByb3AgXSB8fCBhbmltYXRpb24ub3B0cy5lYXNpbmcgKTtcblx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVucy5wdXNoKCB0d2VlbiApO1xuXHRcdFx0XHRyZXR1cm4gdHdlZW47XG5cdFx0XHR9LFxuXHRcdFx0c3RvcDogZnVuY3Rpb24oIGdvdG9FbmQgKSB7XG5cdFx0XHRcdHZhciBpbmRleCA9IDAsXG5cblx0XHRcdFx0XHQvLyBJZiB3ZSBhcmUgZ29pbmcgdG8gdGhlIGVuZCwgd2Ugd2FudCB0byBydW4gYWxsIHRoZSB0d2VlbnNcblx0XHRcdFx0XHQvLyBvdGhlcndpc2Ugd2Ugc2tpcCB0aGlzIHBhcnRcblx0XHRcdFx0XHRsZW5ndGggPSBnb3RvRW5kID8gYW5pbWF0aW9uLnR3ZWVucy5sZW5ndGggOiAwO1xuXHRcdFx0XHRpZiAoIHN0b3BwZWQgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdH1cblx0XHRcdFx0c3RvcHBlZCA9IHRydWU7XG5cdFx0XHRcdGZvciAoIDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KysgKSB7XG5cdFx0XHRcdFx0YW5pbWF0aW9uLnR3ZWVuc1sgaW5kZXggXS5ydW4oIDEgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFJlc29sdmUgd2hlbiB3ZSBwbGF5ZWQgdGhlIGxhc3QgZnJhbWU7IG90aGVyd2lzZSwgcmVqZWN0XG5cdFx0XHRcdGlmICggZ290b0VuZCApIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5ub3RpZnlXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgMSwgMCBdICk7XG5cdFx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGVsZW0sIFsgYW5pbWF0aW9uLCBnb3RvRW5kIF0gKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBlbGVtLCBbIGFuaW1hdGlvbiwgZ290b0VuZCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHR9XG5cdFx0fSApLFxuXHRcdHByb3BzID0gYW5pbWF0aW9uLnByb3BzO1xuXG5cdHByb3BGaWx0ZXIoIHByb3BzLCBhbmltYXRpb24ub3B0cy5zcGVjaWFsRWFzaW5nICk7XG5cblx0Zm9yICggOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRyZXN1bHQgPSBBbmltYXRpb24ucHJlZmlsdGVyc1sgaW5kZXggXS5jYWxsKCBhbmltYXRpb24sIGVsZW0sIHByb3BzLCBhbmltYXRpb24ub3B0cyApO1xuXHRcdGlmICggcmVzdWx0ICkge1xuXHRcdFx0aWYgKCBpc0Z1bmN0aW9uKCByZXN1bHQuc3RvcCApICkge1xuXHRcdFx0XHRqUXVlcnkuX3F1ZXVlSG9va3MoIGFuaW1hdGlvbi5lbGVtLCBhbmltYXRpb24ub3B0cy5xdWV1ZSApLnN0b3AgPVxuXHRcdFx0XHRcdHJlc3VsdC5zdG9wLmJpbmQoIHJlc3VsdCApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cdH1cblxuXHRqUXVlcnkubWFwKCBwcm9wcywgY3JlYXRlVHdlZW4sIGFuaW1hdGlvbiApO1xuXG5cdGlmICggaXNGdW5jdGlvbiggYW5pbWF0aW9uLm9wdHMuc3RhcnQgKSApIHtcblx0XHRhbmltYXRpb24ub3B0cy5zdGFydC5jYWxsKCBlbGVtLCBhbmltYXRpb24gKTtcblx0fVxuXG5cdC8vIEF0dGFjaCBjYWxsYmFja3MgZnJvbSBvcHRpb25zXG5cdGFuaW1hdGlvblxuXHRcdC5wcm9ncmVzcyggYW5pbWF0aW9uLm9wdHMucHJvZ3Jlc3MgKVxuXHRcdC5kb25lKCBhbmltYXRpb24ub3B0cy5kb25lLCBhbmltYXRpb24ub3B0cy5jb21wbGV0ZSApXG5cdFx0LmZhaWwoIGFuaW1hdGlvbi5vcHRzLmZhaWwgKVxuXHRcdC5hbHdheXMoIGFuaW1hdGlvbi5vcHRzLmFsd2F5cyApO1xuXG5cdGpRdWVyeS5meC50aW1lcihcblx0XHRqUXVlcnkuZXh0ZW5kKCB0aWNrLCB7XG5cdFx0XHRlbGVtOiBlbGVtLFxuXHRcdFx0YW5pbTogYW5pbWF0aW9uLFxuXHRcdFx0cXVldWU6IGFuaW1hdGlvbi5vcHRzLnF1ZXVlXG5cdFx0fSApXG5cdCk7XG5cblx0cmV0dXJuIGFuaW1hdGlvbjtcbn1cblxualF1ZXJ5LkFuaW1hdGlvbiA9IGpRdWVyeS5leHRlbmQoIEFuaW1hdGlvbiwge1xuXG5cdHR3ZWVuZXJzOiB7XG5cdFx0XCIqXCI6IFsgZnVuY3Rpb24oIHByb3AsIHZhbHVlICkge1xuXHRcdFx0dmFyIHR3ZWVuID0gdGhpcy5jcmVhdGVUd2VlbiggcHJvcCwgdmFsdWUgKTtcblx0XHRcdGFkanVzdENTUyggdHdlZW4uZWxlbSwgcHJvcCwgcmNzc051bS5leGVjKCB2YWx1ZSApLCB0d2VlbiApO1xuXHRcdFx0cmV0dXJuIHR3ZWVuO1xuXHRcdH0gXVxuXHR9LFxuXG5cdHR3ZWVuZXI6IGZ1bmN0aW9uKCBwcm9wcywgY2FsbGJhY2sgKSB7XG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBwcm9wcyApICkge1xuXHRcdFx0Y2FsbGJhY2sgPSBwcm9wcztcblx0XHRcdHByb3BzID0gWyBcIipcIiBdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRwcm9wcyA9IHByb3BzLm1hdGNoKCBybm90aHRtbHdoaXRlICk7XG5cdFx0fVxuXG5cdFx0dmFyIHByb3AsXG5cdFx0XHRpbmRleCA9IDAsXG5cdFx0XHRsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cblx0XHRmb3IgKCA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrICkge1xuXHRcdFx0cHJvcCA9IHByb3BzWyBpbmRleCBdO1xuXHRcdFx0QW5pbWF0aW9uLnR3ZWVuZXJzWyBwcm9wIF0gPSBBbmltYXRpb24udHdlZW5lcnNbIHByb3AgXSB8fCBbXTtcblx0XHRcdEFuaW1hdGlvbi50d2VlbmVyc1sgcHJvcCBdLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9LFxuXG5cdHByZWZpbHRlcnM6IFsgZGVmYXVsdFByZWZpbHRlciBdLFxuXG5cdHByZWZpbHRlcjogZnVuY3Rpb24oIGNhbGxiYWNrLCBwcmVwZW5kICkge1xuXHRcdGlmICggcHJlcGVuZCApIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnVuc2hpZnQoIGNhbGxiYWNrICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdEFuaW1hdGlvbi5wcmVmaWx0ZXJzLnB1c2goIGNhbGxiYWNrICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cbmpRdWVyeS5zcGVlZCA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBmbiApIHtcblx0dmFyIG9wdCA9IHNwZWVkICYmIHR5cGVvZiBzcGVlZCA9PT0gXCJvYmplY3RcIiA/IGpRdWVyeS5leHRlbmQoIHt9LCBzcGVlZCApIDoge1xuXHRcdGNvbXBsZXRlOiBmbiB8fCAhZm4gJiYgZWFzaW5nIHx8XG5cdFx0XHRpc0Z1bmN0aW9uKCBzcGVlZCApICYmIHNwZWVkLFxuXHRcdGR1cmF0aW9uOiBzcGVlZCxcblx0XHRlYXNpbmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgIWlzRnVuY3Rpb24oIGVhc2luZyApICYmIGVhc2luZ1xuXHR9O1xuXG5cdC8vIEdvIHRvIHRoZSBlbmQgc3RhdGUgaWYgZnggYXJlIG9mZlxuXHRpZiAoIGpRdWVyeS5meC5vZmYgKSB7XG5cdFx0b3B0LmR1cmF0aW9uID0gMDtcblxuXHR9IGVsc2Uge1xuXHRcdGlmICggdHlwZW9mIG9wdC5kdXJhdGlvbiAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdGlmICggb3B0LmR1cmF0aW9uIGluIGpRdWVyeS5meC5zcGVlZHMgKSB7XG5cdFx0XHRcdG9wdC5kdXJhdGlvbiA9IGpRdWVyeS5meC5zcGVlZHNbIG9wdC5kdXJhdGlvbiBdO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvcHQuZHVyYXRpb24gPSBqUXVlcnkuZnguc3BlZWRzLl9kZWZhdWx0O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8vIE5vcm1hbGl6ZSBvcHQucXVldWUgLSB0cnVlL3VuZGVmaW5lZC9udWxsIC0+IFwiZnhcIlxuXHRpZiAoIG9wdC5xdWV1ZSA9PSBudWxsIHx8IG9wdC5xdWV1ZSA9PT0gdHJ1ZSApIHtcblx0XHRvcHQucXVldWUgPSBcImZ4XCI7XG5cdH1cblxuXHQvLyBRdWV1ZWluZ1xuXHRvcHQub2xkID0gb3B0LmNvbXBsZXRlO1xuXG5cdG9wdC5jb21wbGV0ZSA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggb3B0Lm9sZCApICkge1xuXHRcdFx0b3B0Lm9sZC5jYWxsKCB0aGlzICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHQucXVldWUgKSB7XG5cdFx0XHRqUXVlcnkuZGVxdWV1ZSggdGhpcywgb3B0LnF1ZXVlICk7XG5cdFx0fVxuXHR9O1xuXG5cdHJldHVybiBvcHQ7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGZhZGVUbzogZnVuY3Rpb24oIHNwZWVkLCB0bywgZWFzaW5nLCBjYWxsYmFjayApIHtcblxuXHRcdC8vIFNob3cgYW55IGhpZGRlbiBlbGVtZW50cyBhZnRlciBzZXR0aW5nIG9wYWNpdHkgdG8gMFxuXHRcdHJldHVybiB0aGlzLmZpbHRlciggaXNIaWRkZW5XaXRoaW5UcmVlICkuY3NzKCBcIm9wYWNpdHlcIiwgMCApLnNob3coKVxuXG5cdFx0XHQvLyBBbmltYXRlIHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWRcblx0XHRcdC5lbmQoKS5hbmltYXRlKCB7IG9wYWNpdHk6IHRvIH0sIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH0sXG5cdGFuaW1hdGU6IGZ1bmN0aW9uKCBwcm9wLCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHR2YXIgZW1wdHkgPSBqUXVlcnkuaXNFbXB0eU9iamVjdCggcHJvcCApLFxuXHRcdFx0b3B0YWxsID0galF1ZXJ5LnNwZWVkKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApLFxuXHRcdFx0ZG9BbmltYXRpb24gPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHQvLyBPcGVyYXRlIG9uIGEgY29weSBvZiBwcm9wIHNvIHBlci1wcm9wZXJ0eSBlYXNpbmcgd29uJ3QgYmUgbG9zdFxuXHRcdFx0XHR2YXIgYW5pbSA9IEFuaW1hdGlvbiggdGhpcywgalF1ZXJ5LmV4dGVuZCgge30sIHByb3AgKSwgb3B0YWxsICk7XG5cblx0XHRcdFx0Ly8gRW1wdHkgYW5pbWF0aW9ucywgb3IgZmluaXNoaW5nIHJlc29sdmVzIGltbWVkaWF0ZWx5XG5cdFx0XHRcdGlmICggZW1wdHkgfHwgZGF0YVByaXYuZ2V0KCB0aGlzLCBcImZpbmlzaFwiICkgKSB7XG5cdFx0XHRcdFx0YW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRkb0FuaW1hdGlvbi5maW5pc2ggPSBkb0FuaW1hdGlvbjtcblxuXHRcdHJldHVybiBlbXB0eSB8fCBvcHRhbGwucXVldWUgPT09IGZhbHNlID9cblx0XHRcdHRoaXMuZWFjaCggZG9BbmltYXRpb24gKSA6XG5cdFx0XHR0aGlzLnF1ZXVlKCBvcHRhbGwucXVldWUsIGRvQW5pbWF0aW9uICk7XG5cdH0sXG5cdHN0b3A6IGZ1bmN0aW9uKCB0eXBlLCBjbGVhclF1ZXVlLCBnb3RvRW5kICkge1xuXHRcdHZhciBzdG9wUXVldWUgPSBmdW5jdGlvbiggaG9va3MgKSB7XG5cdFx0XHR2YXIgc3RvcCA9IGhvb2tzLnN0b3A7XG5cdFx0XHRkZWxldGUgaG9va3Muc3RvcDtcblx0XHRcdHN0b3AoIGdvdG9FbmQgKTtcblx0XHR9O1xuXG5cdFx0aWYgKCB0eXBlb2YgdHlwZSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGdvdG9FbmQgPSBjbGVhclF1ZXVlO1xuXHRcdFx0Y2xlYXJRdWV1ZSA9IHR5cGU7XG5cdFx0XHR0eXBlID0gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRpZiAoIGNsZWFyUXVldWUgJiYgdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0aGlzLnF1ZXVlKCB0eXBlIHx8IFwiZnhcIiwgW10gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBkZXF1ZXVlID0gdHJ1ZSxcblx0XHRcdFx0aW5kZXggPSB0eXBlICE9IG51bGwgJiYgdHlwZSArIFwicXVldWVIb29rc1wiLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICk7XG5cblx0XHRcdGlmICggaW5kZXggKSB7XG5cdFx0XHRcdGlmICggZGF0YVsgaW5kZXggXSAmJiBkYXRhWyBpbmRleCBdLnN0b3AgKSB7XG5cdFx0XHRcdFx0c3RvcFF1ZXVlKCBkYXRhWyBpbmRleCBdICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvciAoIGluZGV4IGluIGRhdGEgKSB7XG5cdFx0XHRcdFx0aWYgKCBkYXRhWyBpbmRleCBdICYmIGRhdGFbIGluZGV4IF0uc3RvcCAmJiBycnVuLnRlc3QoIGluZGV4ICkgKSB7XG5cdFx0XHRcdFx0XHRzdG9wUXVldWUoIGRhdGFbIGluZGV4IF0gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yICggaW5kZXggPSB0aW1lcnMubGVuZ3RoOyBpbmRleC0tOyApIHtcblx0XHRcdFx0aWYgKCB0aW1lcnNbIGluZGV4IF0uZWxlbSA9PT0gdGhpcyAmJlxuXHRcdFx0XHRcdCggdHlwZSA9PSBudWxsIHx8IHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApICkge1xuXG5cdFx0XHRcdFx0dGltZXJzWyBpbmRleCBdLmFuaW0uc3RvcCggZ290b0VuZCApO1xuXHRcdFx0XHRcdGRlcXVldWUgPSBmYWxzZTtcblx0XHRcdFx0XHR0aW1lcnMuc3BsaWNlKCBpbmRleCwgMSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC8vIFN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBzdGVwIHdhc24ndCBmb3JjZWQuXG5cdFx0XHQvLyBUaW1lcnMgY3VycmVudGx5IHdpbGwgY2FsbCB0aGVpciBjb21wbGV0ZSBjYWxsYmFja3MsIHdoaWNoXG5cdFx0XHQvLyB3aWxsIGRlcXVldWUgYnV0IG9ubHkgaWYgdGhleSB3ZXJlIGdvdG9FbmQuXG5cdFx0XHRpZiAoIGRlcXVldWUgfHwgIWdvdG9FbmQgKSB7XG5cdFx0XHRcdGpRdWVyeS5kZXF1ZXVlKCB0aGlzLCB0eXBlICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9LFxuXHRmaW5pc2g6IGZ1bmN0aW9uKCB0eXBlICkge1xuXHRcdGlmICggdHlwZSAhPT0gZmFsc2UgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBcImZ4XCI7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIGluZGV4LFxuXHRcdFx0XHRkYXRhID0gZGF0YVByaXYuZ2V0KCB0aGlzICksXG5cdFx0XHRcdHF1ZXVlID0gZGF0YVsgdHlwZSArIFwicXVldWVcIiBdLFxuXHRcdFx0XHRob29rcyA9IGRhdGFbIHR5cGUgKyBcInF1ZXVlSG9va3NcIiBdLFxuXHRcdFx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzLFxuXHRcdFx0XHRsZW5ndGggPSBxdWV1ZSA/IHF1ZXVlLmxlbmd0aCA6IDA7XG5cblx0XHRcdC8vIEVuYWJsZSBmaW5pc2hpbmcgZmxhZyBvbiBwcml2YXRlIGRhdGFcblx0XHRcdGRhdGEuZmluaXNoID0gdHJ1ZTtcblxuXHRcdFx0Ly8gRW1wdHkgdGhlIHF1ZXVlIGZpcnN0XG5cdFx0XHRqUXVlcnkucXVldWUoIHRoaXMsIHR5cGUsIFtdICk7XG5cblx0XHRcdGlmICggaG9va3MgJiYgaG9va3Muc3RvcCApIHtcblx0XHRcdFx0aG9va3Muc3RvcC5jYWxsKCB0aGlzLCB0cnVlICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIExvb2sgZm9yIGFueSBhY3RpdmUgYW5pbWF0aW9ucywgYW5kIGZpbmlzaCB0aGVtXG5cdFx0XHRmb3IgKCBpbmRleCA9IHRpbWVycy5sZW5ndGg7IGluZGV4LS07ICkge1xuXHRcdFx0XHRpZiAoIHRpbWVyc1sgaW5kZXggXS5lbGVtID09PSB0aGlzICYmIHRpbWVyc1sgaW5kZXggXS5xdWV1ZSA9PT0gdHlwZSApIHtcblx0XHRcdFx0XHR0aW1lcnNbIGluZGV4IF0uYW5pbS5zdG9wKCB0cnVlICk7XG5cdFx0XHRcdFx0dGltZXJzLnNwbGljZSggaW5kZXgsIDEgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBMb29rIGZvciBhbnkgYW5pbWF0aW9ucyBpbiB0aGUgb2xkIHF1ZXVlIGFuZCBmaW5pc2ggdGhlbVxuXHRcdFx0Zm9yICggaW5kZXggPSAwOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKyApIHtcblx0XHRcdFx0aWYgKCBxdWV1ZVsgaW5kZXggXSAmJiBxdWV1ZVsgaW5kZXggXS5maW5pc2ggKSB7XG5cdFx0XHRcdFx0cXVldWVbIGluZGV4IF0uZmluaXNoLmNhbGwoIHRoaXMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBUdXJuIG9mZiBmaW5pc2hpbmcgZmxhZ1xuXHRcdFx0ZGVsZXRlIGRhdGEuZmluaXNoO1xuXHRcdH0gKTtcblx0fVxufSApO1xuXG5qUXVlcnkuZWFjaCggWyBcInRvZ2dsZVwiLCBcInNob3dcIiwgXCJoaWRlXCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7XG5cdHZhciBjc3NGbiA9IGpRdWVyeS5mblsgbmFtZSBdO1xuXHRqUXVlcnkuZm5bIG5hbWUgXSA9IGZ1bmN0aW9uKCBzcGVlZCwgZWFzaW5nLCBjYWxsYmFjayApIHtcblx0XHRyZXR1cm4gc3BlZWQgPT0gbnVsbCB8fCB0eXBlb2Ygc3BlZWQgPT09IFwiYm9vbGVhblwiID9cblx0XHRcdGNzc0ZuLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKSA6XG5cdFx0XHR0aGlzLmFuaW1hdGUoIGdlbkZ4KCBuYW1lLCB0cnVlICksIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbi8vIEdlbmVyYXRlIHNob3J0Y3V0cyBmb3IgY3VzdG9tIGFuaW1hdGlvbnNcbmpRdWVyeS5lYWNoKCB7XG5cdHNsaWRlRG93bjogZ2VuRngoIFwic2hvd1wiICksXG5cdHNsaWRlVXA6IGdlbkZ4KCBcImhpZGVcIiApLFxuXHRzbGlkZVRvZ2dsZTogZ2VuRngoIFwidG9nZ2xlXCIgKSxcblx0ZmFkZUluOiB7IG9wYWNpdHk6IFwic2hvd1wiIH0sXG5cdGZhZGVPdXQ6IHsgb3BhY2l0eTogXCJoaWRlXCIgfSxcblx0ZmFkZVRvZ2dsZTogeyBvcGFjaXR5OiBcInRvZ2dsZVwiIH1cbn0sIGZ1bmN0aW9uKCBuYW1lLCBwcm9wcyApIHtcblx0alF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbiggc3BlZWQsIGVhc2luZywgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIHRoaXMuYW5pbWF0ZSggcHJvcHMsIHNwZWVkLCBlYXNpbmcsIGNhbGxiYWNrICk7XG5cdH07XG59ICk7XG5cbmpRdWVyeS50aW1lcnMgPSBbXTtcbmpRdWVyeS5meC50aWNrID0gZnVuY3Rpb24oKSB7XG5cdHZhciB0aW1lcixcblx0XHRpID0gMCxcblx0XHR0aW1lcnMgPSBqUXVlcnkudGltZXJzO1xuXG5cdGZ4Tm93ID0gRGF0ZS5ub3coKTtcblxuXHRmb3IgKCA7IGkgPCB0aW1lcnMubGVuZ3RoOyBpKysgKSB7XG5cdFx0dGltZXIgPSB0aW1lcnNbIGkgXTtcblxuXHRcdC8vIFJ1biB0aGUgdGltZXIgYW5kIHNhZmVseSByZW1vdmUgaXQgd2hlbiBkb25lIChhbGxvd2luZyBmb3IgZXh0ZXJuYWwgcmVtb3ZhbClcblx0XHRpZiAoICF0aW1lcigpICYmIHRpbWVyc1sgaSBdID09PSB0aW1lciApIHtcblx0XHRcdHRpbWVycy5zcGxpY2UoIGktLSwgMSApO1xuXHRcdH1cblx0fVxuXG5cdGlmICggIXRpbWVycy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5LmZ4LnN0b3AoKTtcblx0fVxuXHRmeE5vdyA9IHVuZGVmaW5lZDtcbn07XG5cbmpRdWVyeS5meC50aW1lciA9IGZ1bmN0aW9uKCB0aW1lciApIHtcblx0alF1ZXJ5LnRpbWVycy5wdXNoKCB0aW1lciApO1xuXHRqUXVlcnkuZnguc3RhcnQoKTtcbn07XG5cbmpRdWVyeS5meC5pbnRlcnZhbCA9IDEzO1xualF1ZXJ5LmZ4LnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG5cdGlmICggaW5Qcm9ncmVzcyApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpblByb2dyZXNzID0gdHJ1ZTtcblx0c2NoZWR1bGUoKTtcbn07XG5cbmpRdWVyeS5meC5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdGluUHJvZ3Jlc3MgPSBudWxsO1xufTtcblxualF1ZXJ5LmZ4LnNwZWVkcyA9IHtcblx0c2xvdzogNjAwLFxuXHRmYXN0OiAyMDAsXG5cblx0Ly8gRGVmYXVsdCBzcGVlZFxuXHRfZGVmYXVsdDogNDAwXG59O1xuXG5cbi8vIEJhc2VkIG9mZiBvZiB0aGUgcGx1Z2luIGJ5IENsaW50IEhlbGZlcnMsIHdpdGggcGVybWlzc2lvbi5cbi8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDEwMDMyNDAxNDc0Ny9odHRwOi8vYmxpbmRzaWduYWxzLmNvbS9pbmRleC5waHAvMjAwOS8wNy9qcXVlcnktZGVsYXkvXG5qUXVlcnkuZm4uZGVsYXkgPSBmdW5jdGlvbiggdGltZSwgdHlwZSApIHtcblx0dGltZSA9IGpRdWVyeS5meCA/IGpRdWVyeS5meC5zcGVlZHNbIHRpbWUgXSB8fCB0aW1lIDogdGltZTtcblx0dHlwZSA9IHR5cGUgfHwgXCJmeFwiO1xuXG5cdHJldHVybiB0aGlzLnF1ZXVlKCB0eXBlLCBmdW5jdGlvbiggbmV4dCwgaG9va3MgKSB7XG5cdFx0dmFyIHRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCggbmV4dCwgdGltZSApO1xuXHRcdGhvb2tzLnN0b3AgPSBmdW5jdGlvbigpIHtcblx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXQgKTtcblx0XHR9O1xuXHR9ICk7XG59O1xuXG5cbiggZnVuY3Rpb24oKSB7XG5cdHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiaW5wdXRcIiApLFxuXHRcdHNlbGVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwic2VsZWN0XCIgKSxcblx0XHRvcHQgPSBzZWxlY3QuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwib3B0aW9uXCIgKSApO1xuXG5cdGlucHV0LnR5cGUgPSBcImNoZWNrYm94XCI7XG5cblx0Ly8gU3VwcG9ydDogQW5kcm9pZCA8PTQuMyBvbmx5XG5cdC8vIERlZmF1bHQgdmFsdWUgZm9yIGEgY2hlY2tib3ggc2hvdWxkIGJlIFwib25cIlxuXHRzdXBwb3J0LmNoZWNrT24gPSBpbnB1dC52YWx1ZSAhPT0gXCJcIjtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gTXVzdCBhY2Nlc3Mgc2VsZWN0ZWRJbmRleCB0byBtYWtlIGRlZmF1bHQgb3B0aW9ucyBzZWxlY3Rcblx0c3VwcG9ydC5vcHRTZWxlY3RlZCA9IG9wdC5zZWxlY3RlZDtcblxuXHQvLyBTdXBwb3J0OiBJRSA8PTExIG9ubHlcblx0Ly8gQW4gaW5wdXQgbG9zZXMgaXRzIHZhbHVlIGFmdGVyIGJlY29taW5nIGEgcmFkaW9cblx0aW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCBcImlucHV0XCIgKTtcblx0aW5wdXQudmFsdWUgPSBcInRcIjtcblx0aW5wdXQudHlwZSA9IFwicmFkaW9cIjtcblx0c3VwcG9ydC5yYWRpb1ZhbHVlID0gaW5wdXQudmFsdWUgPT09IFwidFwiO1xufSApKCk7XG5cblxudmFyIGJvb2xIb29rLFxuXHRhdHRySGFuZGxlID0galF1ZXJ5LmV4cHIuYXR0ckhhbmRsZTtcblxualF1ZXJ5LmZuLmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggbmFtZSwgdmFsdWUgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgalF1ZXJ5LmF0dHIsIG5hbWUsIHZhbHVlLCBhcmd1bWVudHMubGVuZ3RoID4gMSApO1xuXHR9LFxuXG5cdHJlbW92ZUF0dHI6IGZ1bmN0aW9uKCBuYW1lICkge1xuXHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0alF1ZXJ5LnJlbW92ZUF0dHIoIHRoaXMsIG5hbWUgKTtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHRhdHRyOiBmdW5jdGlvbiggZWxlbSwgbmFtZSwgdmFsdWUgKSB7XG5cdFx0dmFyIHJldCwgaG9va3MsXG5cdFx0XHRuVHlwZSA9IGVsZW0ubm9kZVR5cGU7XG5cblx0XHQvLyBEb24ndCBnZXQvc2V0IGF0dHJpYnV0ZXMgb24gdGV4dCwgY29tbWVudCBhbmQgYXR0cmlidXRlIG5vZGVzXG5cdFx0aWYgKCBuVHlwZSA9PT0gMyB8fCBuVHlwZSA9PT0gOCB8fCBuVHlwZSA9PT0gMiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBGYWxsYmFjayB0byBwcm9wIHdoZW4gYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZFxuXHRcdGlmICggdHlwZW9mIGVsZW0uZ2V0QXR0cmlidXRlID09PSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5wcm9wKCBlbGVtLCBuYW1lLCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdC8vIEF0dHJpYnV0ZSBob29rcyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgbG93ZXJjYXNlIHZlcnNpb25cblx0XHQvLyBHcmFiIG5lY2Vzc2FyeSBob29rIGlmIG9uZSBpcyBkZWZpbmVkXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5hdHRySG9va3NbIG5hbWUudG9Mb3dlckNhc2UoKSBdIHx8XG5cdFx0XHRcdCggalF1ZXJ5LmV4cHIubWF0Y2guYm9vbC50ZXN0KCBuYW1lICkgPyBib29sSG9vayA6IHVuZGVmaW5lZCApO1xuXHRcdH1cblxuXHRcdGlmICggdmFsdWUgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdGlmICggdmFsdWUgPT09IG51bGwgKSB7XG5cdFx0XHRcdGpRdWVyeS5yZW1vdmVBdHRyKCBlbGVtLCBuYW1lICk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCBob29rcyAmJiBcInNldFwiIGluIGhvb2tzICYmXG5cdFx0XHRcdCggcmV0ID0gaG9va3Muc2V0KCBlbGVtLCB2YWx1ZSwgbmFtZSApICkgIT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH1cblxuXHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsIHZhbHVlICsgXCJcIiApO1xuXHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldCA9IGpRdWVyeS5maW5kLmF0dHIoIGVsZW0sIG5hbWUgKTtcblxuXHRcdC8vIE5vbi1leGlzdGVudCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZpbmVkXG5cdFx0cmV0dXJuIHJldCA9PSBudWxsID8gdW5kZWZpbmVkIDogcmV0O1xuXHR9LFxuXG5cdGF0dHJIb29rczoge1xuXHRcdHR5cGU6IHtcblx0XHRcdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdFx0XHRpZiAoICFzdXBwb3J0LnJhZGlvVmFsdWUgJiYgdmFsdWUgPT09IFwicmFkaW9cIiAmJlxuXHRcdFx0XHRcdG5vZGVOYW1lKCBlbGVtLCBcImlucHV0XCIgKSApIHtcblx0XHRcdFx0XHR2YXIgdmFsID0gZWxlbS52YWx1ZTtcblx0XHRcdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggXCJ0eXBlXCIsIHZhbHVlICk7XG5cdFx0XHRcdFx0aWYgKCB2YWwgKSB7XG5cdFx0XHRcdFx0XHRlbGVtLnZhbHVlID0gdmFsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cmVtb3ZlQXR0cjogZnVuY3Rpb24oIGVsZW0sIHZhbHVlICkge1xuXHRcdHZhciBuYW1lLFxuXHRcdFx0aSA9IDAsXG5cblx0XHRcdC8vIEF0dHJpYnV0ZSBuYW1lcyBjYW4gY29udGFpbiBub24tSFRNTCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcblx0XHRcdC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2F0dHJpYnV0ZXMtMlxuXHRcdFx0YXR0ck5hbWVzID0gdmFsdWUgJiYgdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKTtcblxuXHRcdGlmICggYXR0ck5hbWVzICYmIGVsZW0ubm9kZVR5cGUgPT09IDEgKSB7XG5cdFx0XHR3aGlsZSAoICggbmFtZSA9IGF0dHJOYW1lc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0ZWxlbS5yZW1vdmVBdHRyaWJ1dGUoIG5hbWUgKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSG9va3MgZm9yIGJvb2xlYW4gYXR0cmlidXRlc1xuYm9vbEhvb2sgPSB7XG5cdHNldDogZnVuY3Rpb24oIGVsZW0sIHZhbHVlLCBuYW1lICkge1xuXHRcdGlmICggdmFsdWUgPT09IGZhbHNlICkge1xuXG5cdFx0XHQvLyBSZW1vdmUgYm9vbGVhbiBhdHRyaWJ1dGVzIHdoZW4gc2V0IHRvIGZhbHNlXG5cdFx0XHRqUXVlcnkucmVtb3ZlQXR0ciggZWxlbSwgbmFtZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtLnNldEF0dHJpYnV0ZSggbmFtZSwgbmFtZSApO1xuXHRcdH1cblx0XHRyZXR1cm4gbmFtZTtcblx0fVxufTtcblxualF1ZXJ5LmVhY2goIGpRdWVyeS5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKCAvXFx3Ky9nICksIGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXHR2YXIgZ2V0dGVyID0gYXR0ckhhbmRsZVsgbmFtZSBdIHx8IGpRdWVyeS5maW5kLmF0dHI7XG5cblx0YXR0ckhhbmRsZVsgbmFtZSBdID0gZnVuY3Rpb24oIGVsZW0sIG5hbWUsIGlzWE1MICkge1xuXHRcdHZhciByZXQsIGhhbmRsZSxcblx0XHRcdGxvd2VyY2FzZU5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRpZiAoICFpc1hNTCApIHtcblxuXHRcdFx0Ly8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBieSB0ZW1wb3JhcmlseSByZW1vdmluZyB0aGlzIGZ1bmN0aW9uIGZyb20gdGhlIGdldHRlclxuXHRcdFx0aGFuZGxlID0gYXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdO1xuXHRcdFx0YXR0ckhhbmRsZVsgbG93ZXJjYXNlTmFtZSBdID0gcmV0O1xuXHRcdFx0cmV0ID0gZ2V0dGVyKCBlbGVtLCBuYW1lLCBpc1hNTCApICE9IG51bGwgP1xuXHRcdFx0XHRsb3dlcmNhc2VOYW1lIDpcblx0XHRcdFx0bnVsbDtcblx0XHRcdGF0dHJIYW5kbGVbIGxvd2VyY2FzZU5hbWUgXSA9IGhhbmRsZTtcblx0XHR9XG5cdFx0cmV0dXJuIHJldDtcblx0fTtcbn0gKTtcblxuXG5cblxudmFyIHJmb2N1c2FibGUgPSAvXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFxuXHRyY2xpY2thYmxlID0gL14oPzphfGFyZWEpJC9pO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHByb3A6IGZ1bmN0aW9uKCBuYW1lLCB2YWx1ZSApIHtcblx0XHRyZXR1cm4gYWNjZXNzKCB0aGlzLCBqUXVlcnkucHJvcCwgbmFtZSwgdmFsdWUsIGFyZ3VtZW50cy5sZW5ndGggPiAxICk7XG5cdH0sXG5cblx0cmVtb3ZlUHJvcDogZnVuY3Rpb24oIG5hbWUgKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRkZWxldGUgdGhpc1sgalF1ZXJ5LnByb3BGaXhbIG5hbWUgXSB8fCBuYW1lIF07XG5cdFx0fSApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5leHRlbmQoIHtcblx0cHJvcDogZnVuY3Rpb24oIGVsZW0sIG5hbWUsIHZhbHVlICkge1xuXHRcdHZhciByZXQsIGhvb2tzLFxuXHRcdFx0blR5cGUgPSBlbGVtLm5vZGVUeXBlO1xuXG5cdFx0Ly8gRG9uJ3QgZ2V0L3NldCBwcm9wZXJ0aWVzIG9uIHRleHQsIGNvbW1lbnQgYW5kIGF0dHJpYnV0ZSBub2Rlc1xuXHRcdGlmICggblR5cGUgPT09IDMgfHwgblR5cGUgPT09IDggfHwgblR5cGUgPT09IDIgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBuVHlwZSAhPT0gMSB8fCAhalF1ZXJ5LmlzWE1MRG9jKCBlbGVtICkgKSB7XG5cblx0XHRcdC8vIEZpeCBuYW1lIGFuZCBhdHRhY2ggaG9va3Ncblx0XHRcdG5hbWUgPSBqUXVlcnkucHJvcEZpeFsgbmFtZSBdIHx8IG5hbWU7XG5cdFx0XHRob29rcyA9IGpRdWVyeS5wcm9wSG9va3NbIG5hbWUgXTtcblx0XHR9XG5cblx0XHRpZiAoIHZhbHVlICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRpZiAoIGhvb2tzICYmIFwic2V0XCIgaW4gaG9va3MgJiZcblx0XHRcdFx0KCByZXQgPSBob29rcy5zZXQoIGVsZW0sIHZhbHVlLCBuYW1lICkgKSAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gcmV0O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gKCBlbGVtWyBuYW1lIF0gPSB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaG9va3MgJiYgXCJnZXRcIiBpbiBob29rcyAmJiAoIHJldCA9IGhvb2tzLmdldCggZWxlbSwgbmFtZSApICkgIT09IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gcmV0O1xuXHRcdH1cblxuXHRcdHJldHVybiBlbGVtWyBuYW1lIF07XG5cdH0sXG5cblx0cHJvcEhvb2tzOiB7XG5cdFx0dGFiSW5kZXg6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IC0gMTEgb25seVxuXHRcdFx0XHQvLyBlbGVtLnRhYkluZGV4IGRvZXNuJ3QgYWx3YXlzIHJldHVybiB0aGVcblx0XHRcdFx0Ly8gY29ycmVjdCB2YWx1ZSB3aGVuIGl0IGhhc24ndCBiZWVuIGV4cGxpY2l0bHkgc2V0XG5cdFx0XHRcdC8vIGh0dHBzOi8vd2ViLmFyY2hpdmUub3JnL3dlYi8yMDE0MTExNjIzMzM0Ny9odHRwOi8vZmx1aWRwcm9qZWN0Lm9yZy9ibG9nLzIwMDgvMDEvMDkvZ2V0dGluZy1zZXR0aW5nLWFuZC1yZW1vdmluZy10YWJpbmRleC12YWx1ZXMtd2l0aC1qYXZhc2NyaXB0L1xuXHRcdFx0XHQvLyBVc2UgcHJvcGVyIGF0dHJpYnV0ZSByZXRyaWV2YWwoIzEyMDcyKVxuXHRcdFx0XHR2YXIgdGFiaW5kZXggPSBqUXVlcnkuZmluZC5hdHRyKCBlbGVtLCBcInRhYmluZGV4XCIgKTtcblxuXHRcdFx0XHRpZiAoIHRhYmluZGV4ICkge1xuXHRcdFx0XHRcdHJldHVybiBwYXJzZUludCggdGFiaW5kZXgsIDEwICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0cmZvY3VzYWJsZS50ZXN0KCBlbGVtLm5vZGVOYW1lICkgfHxcblx0XHRcdFx0XHRyY2xpY2thYmxlLnRlc3QoIGVsZW0ubm9kZU5hbWUgKSAmJlxuXHRcdFx0XHRcdGVsZW0uaHJlZlxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gMDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiAtMTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0cHJvcEZpeDoge1xuXHRcdFwiZm9yXCI6IFwiaHRtbEZvclwiLFxuXHRcdFwiY2xhc3NcIjogXCJjbGFzc05hbWVcIlxuXHR9XG59ICk7XG5cbi8vIFN1cHBvcnQ6IElFIDw9MTEgb25seVxuLy8gQWNjZXNzaW5nIHRoZSBzZWxlY3RlZEluZGV4IHByb3BlcnR5XG4vLyBmb3JjZXMgdGhlIGJyb3dzZXIgdG8gcmVzcGVjdCBzZXR0aW5nIHNlbGVjdGVkXG4vLyBvbiB0aGUgb3B0aW9uXG4vLyBUaGUgZ2V0dGVyIGVuc3VyZXMgYSBkZWZhdWx0IG9wdGlvbiBpcyBzZWxlY3RlZFxuLy8gd2hlbiBpbiBhbiBvcHRncm91cFxuLy8gZXNsaW50IHJ1bGUgXCJuby11bnVzZWQtZXhwcmVzc2lvbnNcIiBpcyBkaXNhYmxlZCBmb3IgdGhpcyBjb2RlXG4vLyBzaW5jZSBpdCBjb25zaWRlcnMgc3VjaCBhY2Nlc3Npb25zIG5vb3BcbmlmICggIXN1cHBvcnQub3B0U2VsZWN0ZWQgKSB7XG5cdGpRdWVyeS5wcm9wSG9va3Muc2VsZWN0ZWQgPSB7XG5cdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0LyogZXNsaW50IG5vLXVudXNlZC1leHByZXNzaW9uczogXCJvZmZcIiAqL1xuXG5cdFx0XHR2YXIgcGFyZW50ID0gZWxlbS5wYXJlbnROb2RlO1xuXHRcdFx0aWYgKCBwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9LFxuXHRcdHNldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cblx0XHRcdC8qIGVzbGludCBuby11bnVzZWQtZXhwcmVzc2lvbnM6IFwib2ZmXCIgKi9cblxuXHRcdFx0dmFyIHBhcmVudCA9IGVsZW0ucGFyZW50Tm9kZTtcblx0XHRcdGlmICggcGFyZW50ICkge1xuXHRcdFx0XHRwYXJlbnQuc2VsZWN0ZWRJbmRleDtcblxuXHRcdFx0XHRpZiAoIHBhcmVudC5wYXJlbnROb2RlICkge1xuXHRcdFx0XHRcdHBhcmVudC5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbmpRdWVyeS5lYWNoKCBbXG5cdFwidGFiSW5kZXhcIixcblx0XCJyZWFkT25seVwiLFxuXHRcIm1heExlbmd0aFwiLFxuXHRcImNlbGxTcGFjaW5nXCIsXG5cdFwiY2VsbFBhZGRpbmdcIixcblx0XCJyb3dTcGFuXCIsXG5cdFwiY29sU3BhblwiLFxuXHRcInVzZU1hcFwiLFxuXHRcImZyYW1lQm9yZGVyXCIsXG5cdFwiY29udGVudEVkaXRhYmxlXCJcbl0sIGZ1bmN0aW9uKCkge1xuXHRqUXVlcnkucHJvcEZpeFsgdGhpcy50b0xvd2VyQ2FzZSgpIF0gPSB0aGlzO1xufSApO1xuXG5cblxuXG5cdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlIGFjY29yZGluZyB0byBIVE1MIHNwZWNcblx0Ly8gaHR0cHM6Ly9pbmZyYS5zcGVjLndoYXR3Zy5vcmcvI3N0cmlwLWFuZC1jb2xsYXBzZS1hc2NpaS13aGl0ZXNwYWNlXG5cdGZ1bmN0aW9uIHN0cmlwQW5kQ29sbGFwc2UoIHZhbHVlICkge1xuXHRcdHZhciB0b2tlbnMgPSB2YWx1ZS5tYXRjaCggcm5vdGh0bWx3aGl0ZSApIHx8IFtdO1xuXHRcdHJldHVybiB0b2tlbnMuam9pbiggXCIgXCIgKTtcblx0fVxuXG5cbmZ1bmN0aW9uIGdldENsYXNzKCBlbGVtICkge1xuXHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUgJiYgZWxlbS5nZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiApIHx8IFwiXCI7XG59XG5cbmZ1bmN0aW9uIGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApIHtcblx0aWYgKCBBcnJheS5pc0FycmF5KCB2YWx1ZSApICkge1xuXHRcdHJldHVybiB2YWx1ZTtcblx0fVxuXHRpZiAoIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gdmFsdWUubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbXTtcblx0fVxuXHRyZXR1cm4gW107XG59XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblx0YWRkQ2xhc3M6IGZ1bmN0aW9uKCB2YWx1ZSApIHtcblx0XHR2YXIgY2xhc3NlcywgZWxlbSwgY3VyLCBjdXJWYWx1ZSwgY2xhenosIGosIGZpbmFsVmFsdWUsXG5cdFx0XHRpID0gMDtcblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBqICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS5hZGRDbGFzcyggdmFsdWUuY2FsbCggdGhpcywgaiwgZ2V0Q2xhc3MoIHRoaXMgKSApICk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0Y2xhc3NlcyA9IGNsYXNzZXNUb0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCBjbGFzc2VzLmxlbmd0aCApIHtcblx0XHRcdHdoaWxlICggKCBlbGVtID0gdGhpc1sgaSsrIF0gKSApIHtcblx0XHRcdFx0Y3VyVmFsdWUgPSBnZXRDbGFzcyggZWxlbSApO1xuXHRcdFx0XHRjdXIgPSBlbGVtLm5vZGVUeXBlID09PSAxICYmICggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBjdXJWYWx1ZSApICsgXCIgXCIgKTtcblxuXHRcdFx0XHRpZiAoIGN1ciApIHtcblx0XHRcdFx0XHRqID0gMDtcblx0XHRcdFx0XHR3aGlsZSAoICggY2xhenogPSBjbGFzc2VzWyBqKysgXSApICkge1xuXHRcdFx0XHRcdFx0aWYgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPCAwICkge1xuXHRcdFx0XHRcdFx0XHRjdXIgKz0gY2xhenogKyBcIiBcIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHJlbW92ZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUgKSB7XG5cdFx0dmFyIGNsYXNzZXMsIGVsZW0sIGN1ciwgY3VyVmFsdWUsIGNsYXp6LCBqLCBmaW5hbFZhbHVlLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIHZhbHVlICkgKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaiApIHtcblx0XHRcdFx0alF1ZXJ5KCB0aGlzICkucmVtb3ZlQ2xhc3MoIHZhbHVlLmNhbGwoIHRoaXMsIGosIGdldENsYXNzKCB0aGlzICkgKSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGlmICggIWFyZ3VtZW50cy5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hdHRyKCBcImNsYXNzXCIsIFwiXCIgKTtcblx0XHR9XG5cblx0XHRjbGFzc2VzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRpZiAoIGNsYXNzZXMubGVuZ3RoICkge1xuXHRcdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0XHRjdXJWYWx1ZSA9IGdldENsYXNzKCBlbGVtICk7XG5cblx0XHRcdFx0Ly8gVGhpcyBleHByZXNzaW9uIGlzIGhlcmUgZm9yIGJldHRlciBjb21wcmVzc2liaWxpdHkgKHNlZSBhZGRDbGFzcylcblx0XHRcdFx0Y3VyID0gZWxlbS5ub2RlVHlwZSA9PT0gMSAmJiAoIFwiIFwiICsgc3RyaXBBbmRDb2xsYXBzZSggY3VyVmFsdWUgKSArIFwiIFwiICk7XG5cblx0XHRcdFx0aWYgKCBjdXIgKSB7XG5cdFx0XHRcdFx0aiA9IDA7XG5cdFx0XHRcdFx0d2hpbGUgKCAoIGNsYXp6ID0gY2xhc3Nlc1sgaisrIF0gKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gUmVtb3ZlICphbGwqIGluc3RhbmNlc1xuXHRcdFx0XHRcdFx0d2hpbGUgKCBjdXIuaW5kZXhPZiggXCIgXCIgKyBjbGF6eiArIFwiIFwiICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdFx0Y3VyID0gY3VyLnJlcGxhY2UoIFwiIFwiICsgY2xhenogKyBcIiBcIiwgXCIgXCIgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBPbmx5IGFzc2lnbiBpZiBkaWZmZXJlbnQgdG8gYXZvaWQgdW5uZWVkZWQgcmVuZGVyaW5nLlxuXHRcdFx0XHRcdGZpbmFsVmFsdWUgPSBzdHJpcEFuZENvbGxhcHNlKCBjdXIgKTtcblx0XHRcdFx0XHRpZiAoIGN1clZhbHVlICE9PSBmaW5hbFZhbHVlICkge1xuXHRcdFx0XHRcdFx0ZWxlbS5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIiwgZmluYWxWYWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzO1xuXHR9LFxuXG5cdHRvZ2dsZUNsYXNzOiBmdW5jdGlvbiggdmFsdWUsIHN0YXRlVmFsICkge1xuXHRcdHZhciB0eXBlID0gdHlwZW9mIHZhbHVlLFxuXHRcdFx0aXNWYWxpZFZhbHVlID0gdHlwZSA9PT0gXCJzdHJpbmdcIiB8fCBBcnJheS5pc0FycmF5KCB2YWx1ZSApO1xuXG5cdFx0aWYgKCB0eXBlb2Ygc3RhdGVWYWwgPT09IFwiYm9vbGVhblwiICYmIGlzVmFsaWRWYWx1ZSApIHtcblx0XHRcdHJldHVybiBzdGF0ZVZhbCA/IHRoaXMuYWRkQ2xhc3MoIHZhbHVlICkgOiB0aGlzLnJlbW92ZUNsYXNzKCB2YWx1ZSApO1xuXHRcdH1cblxuXHRcdGlmICggaXNGdW5jdGlvbiggdmFsdWUgKSApIHtcblx0XHRcdHJldHVybiB0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRqUXVlcnkoIHRoaXMgKS50b2dnbGVDbGFzcyhcblx0XHRcdFx0XHR2YWx1ZS5jYWxsKCB0aGlzLCBpLCBnZXRDbGFzcyggdGhpcyApLCBzdGF0ZVZhbCApLFxuXHRcdFx0XHRcdHN0YXRlVmFsXG5cdFx0XHRcdCk7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgY2xhc3NOYW1lLCBpLCBzZWxmLCBjbGFzc05hbWVzO1xuXG5cdFx0XHRpZiAoIGlzVmFsaWRWYWx1ZSApIHtcblxuXHRcdFx0XHQvLyBUb2dnbGUgaW5kaXZpZHVhbCBjbGFzcyBuYW1lc1xuXHRcdFx0XHRpID0gMDtcblx0XHRcdFx0c2VsZiA9IGpRdWVyeSggdGhpcyApO1xuXHRcdFx0XHRjbGFzc05hbWVzID0gY2xhc3Nlc1RvQXJyYXkoIHZhbHVlICk7XG5cblx0XHRcdFx0d2hpbGUgKCAoIGNsYXNzTmFtZSA9IGNsYXNzTmFtZXNbIGkrKyBdICkgKSB7XG5cblx0XHRcdFx0XHQvLyBDaGVjayBlYWNoIGNsYXNzTmFtZSBnaXZlbiwgc3BhY2Ugc2VwYXJhdGVkIGxpc3Rcblx0XHRcdFx0XHRpZiAoIHNlbGYuaGFzQ2xhc3MoIGNsYXNzTmFtZSApICkge1xuXHRcdFx0XHRcdFx0c2VsZi5yZW1vdmVDbGFzcyggY2xhc3NOYW1lICk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNlbGYuYWRkQ2xhc3MoIGNsYXNzTmFtZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHQvLyBUb2dnbGUgd2hvbGUgY2xhc3MgbmFtZVxuXHRcdFx0fSBlbHNlIGlmICggdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlID09PSBcImJvb2xlYW5cIiApIHtcblx0XHRcdFx0Y2xhc3NOYW1lID0gZ2V0Q2xhc3MoIHRoaXMgKTtcblx0XHRcdFx0aWYgKCBjbGFzc05hbWUgKSB7XG5cblx0XHRcdFx0XHQvLyBTdG9yZSBjbGFzc05hbWUgaWYgc2V0XG5cdFx0XHRcdFx0ZGF0YVByaXYuc2V0KCB0aGlzLCBcIl9fY2xhc3NOYW1lX19cIiwgY2xhc3NOYW1lICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBJZiB0aGUgZWxlbWVudCBoYXMgYSBjbGFzcyBuYW1lIG9yIGlmIHdlJ3JlIHBhc3NlZCBgZmFsc2VgLFxuXHRcdFx0XHQvLyB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgY2xhc3NuYW1lIChpZiB0aGVyZSB3YXMgb25lLCB0aGUgYWJvdmUgc2F2ZWQgaXQpLlxuXHRcdFx0XHQvLyBPdGhlcndpc2UgYnJpbmcgYmFjayB3aGF0ZXZlciB3YXMgcHJldmlvdXNseSBzYXZlZCAoaWYgYW55dGhpbmcpLFxuXHRcdFx0XHQvLyBmYWxsaW5nIGJhY2sgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBub3RoaW5nIHdhcyBzdG9yZWQuXG5cdFx0XHRcdGlmICggdGhpcy5zZXRBdHRyaWJ1dGUgKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRBdHRyaWJ1dGUoIFwiY2xhc3NcIixcblx0XHRcdFx0XHRcdGNsYXNzTmFtZSB8fCB2YWx1ZSA9PT0gZmFsc2UgP1xuXHRcdFx0XHRcdFx0XCJcIiA6XG5cdFx0XHRcdFx0XHRkYXRhUHJpdi5nZXQoIHRoaXMsIFwiX19jbGFzc05hbWVfX1wiICkgfHwgXCJcIlxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9ICk7XG5cdH0sXG5cblx0aGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHtcblx0XHR2YXIgY2xhc3NOYW1lLCBlbGVtLFxuXHRcdFx0aSA9IDA7XG5cblx0XHRjbGFzc05hbWUgPSBcIiBcIiArIHNlbGVjdG9yICsgXCIgXCI7XG5cdFx0d2hpbGUgKCAoIGVsZW0gPSB0aGlzWyBpKysgXSApICkge1xuXHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAxICYmXG5cdFx0XHRcdCggXCIgXCIgKyBzdHJpcEFuZENvbGxhcHNlKCBnZXRDbGFzcyggZWxlbSApICkgKyBcIiBcIiApLmluZGV4T2YoIGNsYXNzTmFtZSApID4gLTEgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBycmV0dXJuID0gL1xcci9nO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHZhbDogZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdHZhciBob29rcywgcmV0LCB2YWx1ZUlzRnVuY3Rpb24sXG5cdFx0XHRlbGVtID0gdGhpc1sgMCBdO1xuXG5cdFx0aWYgKCAhYXJndW1lbnRzLmxlbmd0aCApIHtcblx0XHRcdGlmICggZWxlbSApIHtcblx0XHRcdFx0aG9va3MgPSBqUXVlcnkudmFsSG9va3NbIGVsZW0udHlwZSBdIHx8XG5cdFx0XHRcdFx0alF1ZXJ5LnZhbEhvb2tzWyBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0XHRpZiAoIGhvb2tzICYmXG5cdFx0XHRcdFx0XCJnZXRcIiBpbiBob29rcyAmJlxuXHRcdFx0XHRcdCggcmV0ID0gaG9va3MuZ2V0KCBlbGVtLCBcInZhbHVlXCIgKSApICE9PSB1bmRlZmluZWRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldCA9IGVsZW0udmFsdWU7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIG1vc3QgY29tbW9uIHN0cmluZyBjYXNlc1xuXHRcdFx0XHRpZiAoIHR5cGVvZiByZXQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJldC5yZXBsYWNlKCBycmV0dXJuLCBcIlwiICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBIYW5kbGUgY2FzZXMgd2hlcmUgdmFsdWUgaXMgbnVsbC91bmRlZiBvciBudW1iZXJcblx0XHRcdFx0cmV0dXJuIHJldCA9PSBudWxsID8gXCJcIiA6IHJldDtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHZhbHVlSXNGdW5jdGlvbiA9IGlzRnVuY3Rpb24oIHZhbHVlICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdHZhciB2YWw7XG5cblx0XHRcdGlmICggdGhpcy5ub2RlVHlwZSAhPT0gMSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbHVlSXNGdW5jdGlvbiApIHtcblx0XHRcdFx0dmFsID0gdmFsdWUuY2FsbCggdGhpcywgaSwgalF1ZXJ5KCB0aGlzICkudmFsKCkgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhbCA9IHZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBUcmVhdCBudWxsL3VuZGVmaW5lZCBhcyBcIlwiOyBjb252ZXJ0IG51bWJlcnMgdG8gc3RyaW5nXG5cdFx0XHRpZiAoIHZhbCA9PSBudWxsICkge1xuXHRcdFx0XHR2YWwgPSBcIlwiO1xuXG5cdFx0XHR9IGVsc2UgaWYgKCB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICkge1xuXHRcdFx0XHR2YWwgKz0gXCJcIjtcblxuXHRcdFx0fSBlbHNlIGlmICggQXJyYXkuaXNBcnJheSggdmFsICkgKSB7XG5cdFx0XHRcdHZhbCA9IGpRdWVyeS5tYXAoIHZhbCwgZnVuY3Rpb24oIHZhbHVlICkge1xuXHRcdFx0XHRcdHJldHVybiB2YWx1ZSA9PSBudWxsID8gXCJcIiA6IHZhbHVlICsgXCJcIjtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHRob29rcyA9IGpRdWVyeS52YWxIb29rc1sgdGhpcy50eXBlIF0gfHwgalF1ZXJ5LnZhbEhvb2tzWyB0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgXTtcblxuXHRcdFx0Ly8gSWYgc2V0IHJldHVybnMgdW5kZWZpbmVkLCBmYWxsIGJhY2sgdG8gbm9ybWFsIHNldHRpbmdcblx0XHRcdGlmICggIWhvb2tzIHx8ICEoIFwic2V0XCIgaW4gaG9va3MgKSB8fCBob29rcy5zZXQoIHRoaXMsIHZhbCwgXCJ2YWx1ZVwiICkgPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0dGhpcy52YWx1ZSA9IHZhbDtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cbn0gKTtcblxualF1ZXJ5LmV4dGVuZCgge1xuXHR2YWxIb29rczoge1xuXHRcdG9wdGlvbjoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbiggZWxlbSApIHtcblxuXHRcdFx0XHR2YXIgdmFsID0galF1ZXJ5LmZpbmQuYXR0ciggZWxlbSwgXCJ2YWx1ZVwiICk7XG5cdFx0XHRcdHJldHVybiB2YWwgIT0gbnVsbCA/XG5cdFx0XHRcdFx0dmFsIDpcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9MTAgLSAxMSBvbmx5XG5cdFx0XHRcdFx0Ly8gb3B0aW9uLnRleHQgdGhyb3dzIGV4Y2VwdGlvbnMgKCMxNDY4NiwgIzE0ODU4KVxuXHRcdFx0XHRcdC8vIFN0cmlwIGFuZCBjb2xsYXBzZSB3aGl0ZXNwYWNlXG5cdFx0XHRcdFx0Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jc3RyaXAtYW5kLWNvbGxhcHNlLXdoaXRlc3BhY2Vcblx0XHRcdFx0XHRzdHJpcEFuZENvbGxhcHNlKCBqUXVlcnkudGV4dCggZWxlbSApICk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzZWxlY3Q6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRcdHZhciB2YWx1ZSwgb3B0aW9uLCBpLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0aW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsXG5cdFx0XHRcdFx0b25lID0gZWxlbS50eXBlID09PSBcInNlbGVjdC1vbmVcIixcblx0XHRcdFx0XHR2YWx1ZXMgPSBvbmUgPyBudWxsIDogW10sXG5cdFx0XHRcdFx0bWF4ID0gb25lID8gaW5kZXggKyAxIDogb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0aWYgKCBpbmRleCA8IDAgKSB7XG5cdFx0XHRcdFx0aSA9IG1heDtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGkgPSBvbmUgPyBpbmRleCA6IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBMb29wIHRocm91Z2ggYWxsIHRoZSBzZWxlY3RlZCBvcHRpb25zXG5cdFx0XHRcdGZvciAoIDsgaSA8IG1heDsgaSsrICkge1xuXHRcdFx0XHRcdG9wdGlvbiA9IG9wdGlvbnNbIGkgXTtcblxuXHRcdFx0XHRcdC8vIFN1cHBvcnQ6IElFIDw9OSBvbmx5XG5cdFx0XHRcdFx0Ly8gSUU4LTkgZG9lc24ndCB1cGRhdGUgc2VsZWN0ZWQgYWZ0ZXIgZm9ybSByZXNldCAoIzI1NTEpXG5cdFx0XHRcdFx0aWYgKCAoIG9wdGlvbi5zZWxlY3RlZCB8fCBpID09PSBpbmRleCApICYmXG5cblx0XHRcdFx0XHRcdFx0Ly8gRG9uJ3QgcmV0dXJuIG9wdGlvbnMgdGhhdCBhcmUgZGlzYWJsZWQgb3IgaW4gYSBkaXNhYmxlZCBvcHRncm91cFxuXHRcdFx0XHRcdFx0XHQhb3B0aW9uLmRpc2FibGVkICYmXG5cdFx0XHRcdFx0XHRcdCggIW9wdGlvbi5wYXJlbnROb2RlLmRpc2FibGVkIHx8XG5cdFx0XHRcdFx0XHRcdFx0IW5vZGVOYW1lKCBvcHRpb24ucGFyZW50Tm9kZSwgXCJvcHRncm91cFwiICkgKSApIHtcblxuXHRcdFx0XHRcdFx0Ly8gR2V0IHRoZSBzcGVjaWZpYyB2YWx1ZSBmb3IgdGhlIG9wdGlvblxuXHRcdFx0XHRcdFx0dmFsdWUgPSBqUXVlcnkoIG9wdGlvbiApLnZhbCgpO1xuXG5cdFx0XHRcdFx0XHQvLyBXZSBkb24ndCBuZWVkIGFuIGFycmF5IGZvciBvbmUgc2VsZWN0c1xuXHRcdFx0XHRcdFx0aWYgKCBvbmUgKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0Ly8gTXVsdGktU2VsZWN0cyByZXR1cm4gYW4gYXJyYXlcblx0XHRcdFx0XHRcdHZhbHVlcy5wdXNoKCB2YWx1ZSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9LFxuXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKCBlbGVtLCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIG9wdGlvblNldCwgb3B0aW9uLFxuXHRcdFx0XHRcdG9wdGlvbnMgPSBlbGVtLm9wdGlvbnMsXG5cdFx0XHRcdFx0dmFsdWVzID0galF1ZXJ5Lm1ha2VBcnJheSggdmFsdWUgKSxcblx0XHRcdFx0XHRpID0gb3B0aW9ucy5sZW5ndGg7XG5cblx0XHRcdFx0d2hpbGUgKCBpLS0gKSB7XG5cdFx0XHRcdFx0b3B0aW9uID0gb3B0aW9uc1sgaSBdO1xuXG5cdFx0XHRcdFx0LyogZXNsaW50LWRpc2FibGUgbm8tY29uZC1hc3NpZ24gKi9cblxuXHRcdFx0XHRcdGlmICggb3B0aW9uLnNlbGVjdGVkID1cblx0XHRcdFx0XHRcdGpRdWVyeS5pbkFycmF5KCBqUXVlcnkudmFsSG9va3Mub3B0aW9uLmdldCggb3B0aW9uICksIHZhbHVlcyApID4gLTFcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG9wdGlvblNldCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0LyogZXNsaW50LWVuYWJsZSBuby1jb25kLWFzc2lnbiAqL1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gRm9yY2UgYnJvd3NlcnMgdG8gYmVoYXZlIGNvbnNpc3RlbnRseSB3aGVuIG5vbi1tYXRjaGluZyB2YWx1ZSBpcyBzZXRcblx0XHRcdFx0aWYgKCAhb3B0aW9uU2V0ICkge1xuXHRcdFx0XHRcdGVsZW0uc2VsZWN0ZWRJbmRleCA9IC0xO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB2YWx1ZXM7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59ICk7XG5cbi8vIFJhZGlvcyBhbmQgY2hlY2tib3hlcyBnZXR0ZXIvc2V0dGVyXG5qUXVlcnkuZWFjaCggWyBcInJhZGlvXCIsIFwiY2hlY2tib3hcIiBdLCBmdW5jdGlvbigpIHtcblx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0gPSB7XG5cdFx0c2V0OiBmdW5jdGlvbiggZWxlbSwgdmFsdWUgKSB7XG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbHVlICkgKSB7XG5cdFx0XHRcdHJldHVybiAoIGVsZW0uY2hlY2tlZCA9IGpRdWVyeS5pbkFycmF5KCBqUXVlcnkoIGVsZW0gKS52YWwoKSwgdmFsdWUgKSA+IC0xICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRpZiAoICFzdXBwb3J0LmNoZWNrT24gKSB7XG5cdFx0alF1ZXJ5LnZhbEhvb2tzWyB0aGlzIF0uZ2V0ID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdFx0XHRyZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoIFwidmFsdWVcIiApID09PSBudWxsID8gXCJvblwiIDogZWxlbS52YWx1ZTtcblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbi8vIFJldHVybiBqUXVlcnkgZm9yIGF0dHJpYnV0ZXMtb25seSBpbmNsdXNpb25cblxuXG5zdXBwb3J0LmZvY3VzaW4gPSBcIm9uZm9jdXNpblwiIGluIHdpbmRvdztcblxuXG52YXIgcmZvY3VzTW9ycGggPSAvXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sXG5cdHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrID0gZnVuY3Rpb24oIGUgKSB7XG5cdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcblx0fTtcblxualF1ZXJ5LmV4dGVuZCggalF1ZXJ5LmV2ZW50LCB7XG5cblx0dHJpZ2dlcjogZnVuY3Rpb24oIGV2ZW50LCBkYXRhLCBlbGVtLCBvbmx5SGFuZGxlcnMgKSB7XG5cblx0XHR2YXIgaSwgY3VyLCB0bXAsIGJ1YmJsZVR5cGUsIG9udHlwZSwgaGFuZGxlLCBzcGVjaWFsLCBsYXN0RWxlbWVudCxcblx0XHRcdGV2ZW50UGF0aCA9IFsgZWxlbSB8fCBkb2N1bWVudCBdLFxuXHRcdFx0dHlwZSA9IGhhc093bi5jYWxsKCBldmVudCwgXCJ0eXBlXCIgKSA/IGV2ZW50LnR5cGUgOiBldmVudCxcblx0XHRcdG5hbWVzcGFjZXMgPSBoYXNPd24uY2FsbCggZXZlbnQsIFwibmFtZXNwYWNlXCIgKSA/IGV2ZW50Lm5hbWVzcGFjZS5zcGxpdCggXCIuXCIgKSA6IFtdO1xuXG5cdFx0Y3VyID0gbGFzdEVsZW1lbnQgPSB0bXAgPSBlbGVtID0gZWxlbSB8fCBkb2N1bWVudDtcblxuXHRcdC8vIERvbid0IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzXG5cdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT09IDggKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gZm9jdXMvYmx1ciBtb3JwaHMgdG8gZm9jdXNpbi9vdXQ7IGVuc3VyZSB3ZSdyZSBub3QgZmlyaW5nIHRoZW0gcmlnaHQgbm93XG5cdFx0aWYgKCByZm9jdXNNb3JwaC50ZXN0KCB0eXBlICsgalF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggdHlwZS5pbmRleE9mKCBcIi5cIiApID4gLTEgKSB7XG5cblx0XHRcdC8vIE5hbWVzcGFjZWQgdHJpZ2dlcjsgY3JlYXRlIGEgcmVnZXhwIHRvIG1hdGNoIGV2ZW50IHR5cGUgaW4gaGFuZGxlKClcblx0XHRcdG5hbWVzcGFjZXMgPSB0eXBlLnNwbGl0KCBcIi5cIiApO1xuXHRcdFx0dHlwZSA9IG5hbWVzcGFjZXMuc2hpZnQoKTtcblx0XHRcdG5hbWVzcGFjZXMuc29ydCgpO1xuXHRcdH1cblx0XHRvbnR5cGUgPSB0eXBlLmluZGV4T2YoIFwiOlwiICkgPCAwICYmIFwib25cIiArIHR5cGU7XG5cblx0XHQvLyBDYWxsZXIgY2FuIHBhc3MgaW4gYSBqUXVlcnkuRXZlbnQgb2JqZWN0LCBPYmplY3QsIG9yIGp1c3QgYW4gZXZlbnQgdHlwZSBzdHJpbmdcblx0XHRldmVudCA9IGV2ZW50WyBqUXVlcnkuZXhwYW5kbyBdID9cblx0XHRcdGV2ZW50IDpcblx0XHRcdG5ldyBqUXVlcnkuRXZlbnQoIHR5cGUsIHR5cGVvZiBldmVudCA9PT0gXCJvYmplY3RcIiAmJiBldmVudCApO1xuXG5cdFx0Ly8gVHJpZ2dlciBiaXRtYXNrOiAmIDEgZm9yIG5hdGl2ZSBoYW5kbGVyczsgJiAyIGZvciBqUXVlcnkgKGFsd2F5cyB0cnVlKVxuXHRcdGV2ZW50LmlzVHJpZ2dlciA9IG9ubHlIYW5kbGVycyA/IDIgOiAzO1xuXHRcdGV2ZW50Lm5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuam9pbiggXCIuXCIgKTtcblx0XHRldmVudC5ybmFtZXNwYWNlID0gZXZlbnQubmFtZXNwYWNlID9cblx0XHRcdG5ldyBSZWdFeHAoIFwiKF58XFxcXC4pXCIgKyBuYW1lc3BhY2VzLmpvaW4oIFwiXFxcXC4oPzouKlxcXFwufClcIiApICsgXCIoXFxcXC58JClcIiApIDpcblx0XHRcdG51bGw7XG5cblx0XHQvLyBDbGVhbiB1cCB0aGUgZXZlbnQgaW4gY2FzZSBpdCBpcyBiZWluZyByZXVzZWRcblx0XHRldmVudC5yZXN1bHQgPSB1bmRlZmluZWQ7XG5cdFx0aWYgKCAhZXZlbnQudGFyZ2V0ICkge1xuXHRcdFx0ZXZlbnQudGFyZ2V0ID0gZWxlbTtcblx0XHR9XG5cblx0XHQvLyBDbG9uZSBhbnkgaW5jb21pbmcgZGF0YSBhbmQgcHJlcGVuZCB0aGUgZXZlbnQsIGNyZWF0aW5nIHRoZSBoYW5kbGVyIGFyZyBsaXN0XG5cdFx0ZGF0YSA9IGRhdGEgPT0gbnVsbCA/XG5cdFx0XHRbIGV2ZW50IF0gOlxuXHRcdFx0alF1ZXJ5Lm1ha2VBcnJheSggZGF0YSwgWyBldmVudCBdICk7XG5cblx0XHQvLyBBbGxvdyBzcGVjaWFsIGV2ZW50cyB0byBkcmF3IG91dHNpZGUgdGhlIGxpbmVzXG5cdFx0c3BlY2lhbCA9IGpRdWVyeS5ldmVudC5zcGVjaWFsWyB0eXBlIF0gfHwge307XG5cdFx0aWYgKCAhb25seUhhbmRsZXJzICYmIHNwZWNpYWwudHJpZ2dlciAmJiBzcGVjaWFsLnRyaWdnZXIuYXBwbHkoIGVsZW0sIGRhdGEgKSA9PT0gZmFsc2UgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gRGV0ZXJtaW5lIGV2ZW50IHByb3BhZ2F0aW9uIHBhdGggaW4gYWR2YW5jZSwgcGVyIFczQyBldmVudHMgc3BlYyAoIzk5NTEpXG5cdFx0Ly8gQnViYmxlIHVwIHRvIGRvY3VtZW50LCB0aGVuIHRvIHdpbmRvdzsgd2F0Y2ggZm9yIGEgZ2xvYmFsIG93bmVyRG9jdW1lbnQgdmFyICgjOTcyNClcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIXNwZWNpYWwubm9CdWJibGUgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdGJ1YmJsZVR5cGUgPSBzcGVjaWFsLmRlbGVnYXRlVHlwZSB8fCB0eXBlO1xuXHRcdFx0aWYgKCAhcmZvY3VzTW9ycGgudGVzdCggYnViYmxlVHlwZSArIHR5cGUgKSApIHtcblx0XHRcdFx0Y3VyID0gY3VyLnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKCA7IGN1cjsgY3VyID0gY3VyLnBhcmVudE5vZGUgKSB7XG5cdFx0XHRcdGV2ZW50UGF0aC5wdXNoKCBjdXIgKTtcblx0XHRcdFx0dG1wID0gY3VyO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBPbmx5IGFkZCB3aW5kb3cgaWYgd2UgZ290IHRvIGRvY3VtZW50IChlLmcuLCBub3QgcGxhaW4gb2JqIG9yIGRldGFjaGVkIERPTSlcblx0XHRcdGlmICggdG1wID09PSAoIGVsZW0ub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudCApICkge1xuXHRcdFx0XHRldmVudFBhdGgucHVzaCggdG1wLmRlZmF1bHRWaWV3IHx8IHRtcC5wYXJlbnRXaW5kb3cgfHwgd2luZG93ICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gRmlyZSBoYW5kbGVycyBvbiB0aGUgZXZlbnQgcGF0aFxuXHRcdGkgPSAwO1xuXHRcdHdoaWxlICggKCBjdXIgPSBldmVudFBhdGhbIGkrKyBdICkgJiYgIWV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgKSB7XG5cdFx0XHRsYXN0RWxlbWVudCA9IGN1cjtcblx0XHRcdGV2ZW50LnR5cGUgPSBpID4gMSA/XG5cdFx0XHRcdGJ1YmJsZVR5cGUgOlxuXHRcdFx0XHRzcGVjaWFsLmJpbmRUeXBlIHx8IHR5cGU7XG5cblx0XHRcdC8vIGpRdWVyeSBoYW5kbGVyXG5cdFx0XHRoYW5kbGUgPSAoIGRhdGFQcml2LmdldCggY3VyLCBcImV2ZW50c1wiICkgfHwge30gKVsgZXZlbnQudHlwZSBdICYmXG5cdFx0XHRcdGRhdGFQcml2LmdldCggY3VyLCBcImhhbmRsZVwiICk7XG5cdFx0XHRpZiAoIGhhbmRsZSApIHtcblx0XHRcdFx0aGFuZGxlLmFwcGx5KCBjdXIsIGRhdGEgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gTmF0aXZlIGhhbmRsZXJcblx0XHRcdGhhbmRsZSA9IG9udHlwZSAmJiBjdXJbIG9udHlwZSBdO1xuXHRcdFx0aWYgKCBoYW5kbGUgJiYgaGFuZGxlLmFwcGx5ICYmIGFjY2VwdERhdGEoIGN1ciApICkge1xuXHRcdFx0XHRldmVudC5yZXN1bHQgPSBoYW5kbGUuYXBwbHkoIGN1ciwgZGF0YSApO1xuXHRcdFx0XHRpZiAoIGV2ZW50LnJlc3VsdCA9PT0gZmFsc2UgKSB7XG5cdFx0XHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRldmVudC50eXBlID0gdHlwZTtcblxuXHRcdC8vIElmIG5vYm9keSBwcmV2ZW50ZWQgdGhlIGRlZmF1bHQgYWN0aW9uLCBkbyBpdCBub3dcblx0XHRpZiAoICFvbmx5SGFuZGxlcnMgJiYgIWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICkge1xuXG5cdFx0XHRpZiAoICggIXNwZWNpYWwuX2RlZmF1bHQgfHxcblx0XHRcdFx0c3BlY2lhbC5fZGVmYXVsdC5hcHBseSggZXZlbnRQYXRoLnBvcCgpLCBkYXRhICkgPT09IGZhbHNlICkgJiZcblx0XHRcdFx0YWNjZXB0RGF0YSggZWxlbSApICkge1xuXG5cdFx0XHRcdC8vIENhbGwgYSBuYXRpdmUgRE9NIG1ldGhvZCBvbiB0aGUgdGFyZ2V0IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgZXZlbnQuXG5cdFx0XHRcdC8vIERvbid0IGRvIGRlZmF1bHQgYWN0aW9ucyBvbiB3aW5kb3csIHRoYXQncyB3aGVyZSBnbG9iYWwgdmFyaWFibGVzIGJlICgjNjE3MClcblx0XHRcdFx0aWYgKCBvbnR5cGUgJiYgaXNGdW5jdGlvbiggZWxlbVsgdHlwZSBdICkgJiYgIWlzV2luZG93KCBlbGVtICkgKSB7XG5cblx0XHRcdFx0XHQvLyBEb24ndCByZS10cmlnZ2VyIGFuIG9uRk9PIGV2ZW50IHdoZW4gd2UgY2FsbCBpdHMgRk9PKCkgbWV0aG9kXG5cdFx0XHRcdFx0dG1wID0gZWxlbVsgb250eXBlIF07XG5cblx0XHRcdFx0XHRpZiAoIHRtcCApIHtcblx0XHRcdFx0XHRcdGVsZW1bIG9udHlwZSBdID0gbnVsbDtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyBQcmV2ZW50IHJlLXRyaWdnZXJpbmcgb2YgdGhlIHNhbWUgZXZlbnQsIHNpbmNlIHdlIGFscmVhZHkgYnViYmxlZCBpdCBhYm92ZVxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyZWQgPSB0eXBlO1xuXG5cdFx0XHRcdFx0aWYgKCBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpICkge1xuXHRcdFx0XHRcdFx0bGFzdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgc3RvcFByb3BhZ2F0aW9uQ2FsbGJhY2sgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbGVtWyB0eXBlIF0oKTtcblxuXHRcdFx0XHRcdGlmICggZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSApIHtcblx0XHRcdFx0XHRcdGxhc3RFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIHR5cGUsIHN0b3BQcm9wYWdhdGlvbkNhbGxiYWNrICk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXJlZCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0XHRcdGlmICggdG1wICkge1xuXHRcdFx0XHRcdFx0ZWxlbVsgb250eXBlIF0gPSB0bXA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGV2ZW50LnJlc3VsdDtcblx0fSxcblxuXHQvLyBQaWdneWJhY2sgb24gYSBkb25vciBldmVudCB0byBzaW11bGF0ZSBhIGRpZmZlcmVudCBvbmVcblx0Ly8gVXNlZCBvbmx5IGZvciBgZm9jdXMoaW4gfCBvdXQpYCBldmVudHNcblx0c2ltdWxhdGU6IGZ1bmN0aW9uKCB0eXBlLCBlbGVtLCBldmVudCApIHtcblx0XHR2YXIgZSA9IGpRdWVyeS5leHRlbmQoXG5cdFx0XHRuZXcgalF1ZXJ5LkV2ZW50KCksXG5cdFx0XHRldmVudCxcblx0XHRcdHtcblx0XHRcdFx0dHlwZTogdHlwZSxcblx0XHRcdFx0aXNTaW11bGF0ZWQ6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXG5cdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIGUsIG51bGwsIGVsZW0gKTtcblx0fVxuXG59ICk7XG5cbmpRdWVyeS5mbi5leHRlbmQoIHtcblxuXHR0cmlnZ2VyOiBmdW5jdGlvbiggdHlwZSwgZGF0YSApIHtcblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCB0aGlzICk7XG5cdFx0fSApO1xuXHR9LFxuXHR0cmlnZ2VySGFuZGxlcjogZnVuY3Rpb24oIHR5cGUsIGRhdGEgKSB7XG5cdFx0dmFyIGVsZW0gPSB0aGlzWyAwIF07XG5cdFx0aWYgKCBlbGVtICkge1xuXHRcdFx0cmV0dXJuIGpRdWVyeS5ldmVudC50cmlnZ2VyKCB0eXBlLCBkYXRhLCBlbGVtLCB0cnVlICk7XG5cdFx0fVxuXHR9XG59ICk7XG5cblxuLy8gU3VwcG9ydDogRmlyZWZveCA8PTQ0XG4vLyBGaXJlZm94IGRvZXNuJ3QgaGF2ZSBmb2N1cyhpbiB8IG91dCkgZXZlbnRzXG4vLyBSZWxhdGVkIHRpY2tldCAtIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY4Nzc4N1xuLy9cbi8vIFN1cHBvcnQ6IENocm9tZSA8PTQ4IC0gNDksIFNhZmFyaSA8PTkuMCAtIDkuMVxuLy8gZm9jdXMoaW4gfCBvdXQpIGV2ZW50cyBmaXJlIGFmdGVyIGZvY3VzICYgYmx1ciBldmVudHMsXG4vLyB3aGljaCBpcyBzcGVjIHZpb2xhdGlvbiAtIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWZvY3VzZXZlbnQtZXZlbnQtb3JkZXJcbi8vIFJlbGF0ZWQgdGlja2V0IC0gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDQ5ODU3XG5pZiAoICFzdXBwb3J0LmZvY3VzaW4gKSB7XG5cdGpRdWVyeS5lYWNoKCB7IGZvY3VzOiBcImZvY3VzaW5cIiwgYmx1cjogXCJmb2N1c291dFwiIH0sIGZ1bmN0aW9uKCBvcmlnLCBmaXggKSB7XG5cblx0XHQvLyBBdHRhY2ggYSBzaW5nbGUgY2FwdHVyaW5nIGhhbmRsZXIgb24gdGhlIGRvY3VtZW50IHdoaWxlIHNvbWVvbmUgd2FudHMgZm9jdXNpbi9mb2N1c291dFxuXHRcdHZhciBoYW5kbGVyID0gZnVuY3Rpb24oIGV2ZW50ICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnNpbXVsYXRlKCBmaXgsIGV2ZW50LnRhcmdldCwgalF1ZXJ5LmV2ZW50LmZpeCggZXZlbnQgKSApO1xuXHRcdH07XG5cblx0XHRqUXVlcnkuZXZlbnQuc3BlY2lhbFsgZml4IF0gPSB7XG5cdFx0XHRzZXR1cDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBkb2MgPSB0aGlzLm93bmVyRG9jdW1lbnQgfHwgdGhpcyxcblx0XHRcdFx0XHRhdHRhY2hlcyA9IGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXggKTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MuYWRkRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsICggYXR0YWNoZXMgfHwgMCApICsgMSApO1xuXHRcdFx0fSxcblx0XHRcdHRlYXJkb3duOiBmdW5jdGlvbigpIHtcblx0XHRcdFx0dmFyIGRvYyA9IHRoaXMub3duZXJEb2N1bWVudCB8fCB0aGlzLFxuXHRcdFx0XHRcdGF0dGFjaGVzID0gZGF0YVByaXYuYWNjZXNzKCBkb2MsIGZpeCApIC0gMTtcblxuXHRcdFx0XHRpZiAoICFhdHRhY2hlcyApIHtcblx0XHRcdFx0XHRkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lciggb3JpZywgaGFuZGxlciwgdHJ1ZSApO1xuXHRcdFx0XHRcdGRhdGFQcml2LnJlbW92ZSggZG9jLCBmaXggKTtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFQcml2LmFjY2VzcyggZG9jLCBmaXgsIGF0dGFjaGVzICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9ICk7XG59XG52YXIgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb247XG5cbnZhciBub25jZSA9IERhdGUubm93KCk7XG5cbnZhciBycXVlcnkgPSAoIC9cXD8vICk7XG5cblxuXG4vLyBDcm9zcy1icm93c2VyIHhtbCBwYXJzaW5nXG5qUXVlcnkucGFyc2VYTUwgPSBmdW5jdGlvbiggZGF0YSApIHtcblx0dmFyIHhtbDtcblx0aWYgKCAhZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8vIFN1cHBvcnQ6IElFIDkgLSAxMSBvbmx5XG5cdC8vIElFIHRocm93cyBvbiBwYXJzZUZyb21TdHJpbmcgd2l0aCBpbnZhbGlkIGlucHV0LlxuXHR0cnkge1xuXHRcdHhtbCA9ICggbmV3IHdpbmRvdy5ET01QYXJzZXIoKSApLnBhcnNlRnJvbVN0cmluZyggZGF0YSwgXCJ0ZXh0L3htbFwiICk7XG5cdH0gY2F0Y2ggKCBlICkge1xuXHRcdHhtbCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmICggIXhtbCB8fCB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIFwicGFyc2VyZXJyb3JcIiApLmxlbmd0aCApIHtcblx0XHRqUXVlcnkuZXJyb3IoIFwiSW52YWxpZCBYTUw6IFwiICsgZGF0YSApO1xuXHR9XG5cdHJldHVybiB4bWw7XG59O1xuXG5cbnZhclxuXHRyYnJhY2tldCA9IC9cXFtcXF0kLyxcblx0ckNSTEYgPSAvXFxyP1xcbi9nLFxuXHRyc3VibWl0dGVyVHlwZXMgPSAvXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksXG5cdHJzdWJtaXR0YWJsZSA9IC9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtcblxuZnVuY3Rpb24gYnVpbGRQYXJhbXMoIHByZWZpeCwgb2JqLCB0cmFkaXRpb25hbCwgYWRkICkge1xuXHR2YXIgbmFtZTtcblxuXHRpZiAoIEFycmF5LmlzQXJyYXkoIG9iaiApICkge1xuXG5cdFx0Ly8gU2VyaWFsaXplIGFycmF5IGl0ZW0uXG5cdFx0alF1ZXJ5LmVhY2goIG9iaiwgZnVuY3Rpb24oIGksIHYgKSB7XG5cdFx0XHRpZiAoIHRyYWRpdGlvbmFsIHx8IHJicmFja2V0LnRlc3QoIHByZWZpeCApICkge1xuXG5cdFx0XHRcdC8vIFRyZWF0IGVhY2ggYXJyYXkgaXRlbSBhcyBhIHNjYWxhci5cblx0XHRcdFx0YWRkKCBwcmVmaXgsIHYgKTtcblxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBJdGVtIGlzIG5vbi1zY2FsYXIgKGFycmF5IG9yIG9iamVjdCksIGVuY29kZSBpdHMgbnVtZXJpYyBpbmRleC5cblx0XHRcdFx0YnVpbGRQYXJhbXMoXG5cdFx0XHRcdFx0cHJlZml4ICsgXCJbXCIgKyAoIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT0gbnVsbCA/IGkgOiBcIlwiICkgKyBcIl1cIixcblx0XHRcdFx0XHR2LFxuXHRcdFx0XHRcdHRyYWRpdGlvbmFsLFxuXHRcdFx0XHRcdGFkZFxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHR9IGVsc2UgaWYgKCAhdHJhZGl0aW9uYWwgJiYgdG9UeXBlKCBvYmogKSA9PT0gXCJvYmplY3RcIiApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBvYmplY3QgaXRlbS5cblx0XHRmb3IgKCBuYW1lIGluIG9iaiApIHtcblx0XHRcdGJ1aWxkUGFyYW1zKCBwcmVmaXggKyBcIltcIiArIG5hbWUgKyBcIl1cIiwgb2JqWyBuYW1lIF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cblx0fSBlbHNlIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSBzY2FsYXIgaXRlbS5cblx0XHRhZGQoIHByZWZpeCwgb2JqICk7XG5cdH1cbn1cblxuLy8gU2VyaWFsaXplIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBzZXQgb2Zcbi8vIGtleS92YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZ1xualF1ZXJ5LnBhcmFtID0gZnVuY3Rpb24oIGEsIHRyYWRpdGlvbmFsICkge1xuXHR2YXIgcHJlZml4LFxuXHRcdHMgPSBbXSxcblx0XHRhZGQgPSBmdW5jdGlvbigga2V5LCB2YWx1ZU9yRnVuY3Rpb24gKSB7XG5cblx0XHRcdC8vIElmIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGludm9rZSBpdCBhbmQgdXNlIGl0cyByZXR1cm4gdmFsdWVcblx0XHRcdHZhciB2YWx1ZSA9IGlzRnVuY3Rpb24oIHZhbHVlT3JGdW5jdGlvbiApID9cblx0XHRcdFx0dmFsdWVPckZ1bmN0aW9uKCkgOlxuXHRcdFx0XHR2YWx1ZU9yRnVuY3Rpb247XG5cblx0XHRcdHNbIHMubGVuZ3RoIF0gPSBlbmNvZGVVUklDb21wb25lbnQoIGtleSApICsgXCI9XCIgK1xuXHRcdFx0XHRlbmNvZGVVUklDb21wb25lbnQoIHZhbHVlID09IG51bGwgPyBcIlwiIDogdmFsdWUgKTtcblx0XHR9O1xuXG5cdC8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQgaW4sIGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMuXG5cdGlmICggQXJyYXkuaXNBcnJheSggYSApIHx8ICggYS5qcXVlcnkgJiYgIWpRdWVyeS5pc1BsYWluT2JqZWN0KCBhICkgKSApIHtcblxuXHRcdC8vIFNlcmlhbGl6ZSB0aGUgZm9ybSBlbGVtZW50c1xuXHRcdGpRdWVyeS5lYWNoKCBhLCBmdW5jdGlvbigpIHtcblx0XHRcdGFkZCggdGhpcy5uYW1lLCB0aGlzLnZhbHVlICk7XG5cdFx0fSApO1xuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBJZiB0cmFkaXRpb25hbCwgZW5jb2RlIHRoZSBcIm9sZFwiIHdheSAodGhlIHdheSAxLjMuMiBvciBvbGRlclxuXHRcdC8vIGRpZCBpdCksIG90aGVyd2lzZSBlbmNvZGUgcGFyYW1zIHJlY3Vyc2l2ZWx5LlxuXHRcdGZvciAoIHByZWZpeCBpbiBhICkge1xuXHRcdFx0YnVpbGRQYXJhbXMoIHByZWZpeCwgYVsgcHJlZml4IF0sIHRyYWRpdGlvbmFsLCBhZGQgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBSZXR1cm4gdGhlIHJlc3VsdGluZyBzZXJpYWxpemF0aW9uXG5cdHJldHVybiBzLmpvaW4oIFwiJlwiICk7XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHNlcmlhbGl6ZTogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5wYXJhbSggdGhpcy5zZXJpYWxpemVBcnJheSgpICk7XG5cdH0sXG5cdHNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBDYW4gYWRkIHByb3BIb29rIGZvciBcImVsZW1lbnRzXCIgdG8gZmlsdGVyIG9yIGFkZCBmb3JtIGVsZW1lbnRzXG5cdFx0XHR2YXIgZWxlbWVudHMgPSBqUXVlcnkucHJvcCggdGhpcywgXCJlbGVtZW50c1wiICk7XG5cdFx0XHRyZXR1cm4gZWxlbWVudHMgPyBqUXVlcnkubWFrZUFycmF5KCBlbGVtZW50cyApIDogdGhpcztcblx0XHR9IClcblx0XHQuZmlsdGVyKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciB0eXBlID0gdGhpcy50eXBlO1xuXG5cdFx0XHQvLyBVc2UgLmlzKCBcIjpkaXNhYmxlZFwiICkgc28gdGhhdCBmaWVsZHNldFtkaXNhYmxlZF0gd29ya3Ncblx0XHRcdHJldHVybiB0aGlzLm5hbWUgJiYgIWpRdWVyeSggdGhpcyApLmlzKCBcIjpkaXNhYmxlZFwiICkgJiZcblx0XHRcdFx0cnN1Ym1pdHRhYmxlLnRlc3QoIHRoaXMubm9kZU5hbWUgKSAmJiAhcnN1Ym1pdHRlclR5cGVzLnRlc3QoIHR5cGUgKSAmJlxuXHRcdFx0XHQoIHRoaXMuY2hlY2tlZCB8fCAhcmNoZWNrYWJsZVR5cGUudGVzdCggdHlwZSApICk7XG5cdFx0fSApXG5cdFx0Lm1hcCggZnVuY3Rpb24oIGksIGVsZW0gKSB7XG5cdFx0XHR2YXIgdmFsID0galF1ZXJ5KCB0aGlzICkudmFsKCk7XG5cblx0XHRcdGlmICggdmFsID09IG51bGwgKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIEFycmF5LmlzQXJyYXkoIHZhbCApICkge1xuXHRcdFx0XHRyZXR1cm4galF1ZXJ5Lm1hcCggdmFsLCBmdW5jdGlvbiggdmFsICkge1xuXHRcdFx0XHRcdHJldHVybiB7IG5hbWU6IGVsZW0ubmFtZSwgdmFsdWU6IHZhbC5yZXBsYWNlKCByQ1JMRiwgXCJcXHJcXG5cIiApIH07XG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHsgbmFtZTogZWxlbS5uYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UoIHJDUkxGLCBcIlxcclxcblwiICkgfTtcblx0XHR9ICkuZ2V0KCk7XG5cdH1cbn0gKTtcblxuXG52YXJcblx0cjIwID0gLyUyMC9nLFxuXHRyaGFzaCA9IC8jLiokLyxcblx0cmFudGlDYWNoZSA9IC8oWz8mXSlfPVteJl0qLyxcblx0cmhlYWRlcnMgPSAvXiguKj8pOlsgXFx0XSooW15cXHJcXG5dKikkL21nLFxuXG5cdC8vICM3NjUzLCAjODEyNSwgIzgxNTI6IGxvY2FsIHByb3RvY29sIGRldGVjdGlvblxuXHRybG9jYWxQcm90b2NvbCA9IC9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLFxuXHRybm9Db250ZW50ID0gL14oPzpHRVR8SEVBRCkkLyxcblx0cnByb3RvY29sID0gL15cXC9cXC8vLFxuXG5cdC8qIFByZWZpbHRlcnNcblx0ICogMSkgVGhleSBhcmUgdXNlZnVsIHRvIGludHJvZHVjZSBjdXN0b20gZGF0YVR5cGVzIChzZWUgYWpheC9qc29ucC5qcyBmb3IgYW4gZXhhbXBsZSlcblx0ICogMikgVGhlc2UgYXJlIGNhbGxlZDpcblx0ICogICAgLSBCRUZPUkUgYXNraW5nIGZvciBhIHRyYW5zcG9ydFxuXHQgKiAgICAtIEFGVEVSIHBhcmFtIHNlcmlhbGl6YXRpb24gKHMuZGF0YSBpcyBhIHN0cmluZyBpZiBzLnByb2Nlc3NEYXRhIGlzIHRydWUpXG5cdCAqIDMpIGtleSBpcyB0aGUgZGF0YVR5cGVcblx0ICogNCkgdGhlIGNhdGNoYWxsIHN5bWJvbCBcIipcIiBjYW4gYmUgdXNlZFxuXHQgKiA1KSBleGVjdXRpb24gd2lsbCBzdGFydCB3aXRoIHRyYW5zcG9ydCBkYXRhVHlwZSBhbmQgVEhFTiBjb250aW51ZSBkb3duIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0cHJlZmlsdGVycyA9IHt9LFxuXG5cdC8qIFRyYW5zcG9ydHMgYmluZGluZ3Ncblx0ICogMSkga2V5IGlzIHRoZSBkYXRhVHlwZVxuXHQgKiAyKSB0aGUgY2F0Y2hhbGwgc3ltYm9sIFwiKlwiIGNhbiBiZSB1c2VkXG5cdCAqIDMpIHNlbGVjdGlvbiB3aWxsIHN0YXJ0IHdpdGggdHJhbnNwb3J0IGRhdGFUeXBlIGFuZCBUSEVOIGdvIHRvIFwiKlwiIGlmIG5lZWRlZFxuXHQgKi9cblx0dHJhbnNwb3J0cyA9IHt9LFxuXG5cdC8vIEF2b2lkIGNvbW1lbnQtcHJvbG9nIGNoYXIgc2VxdWVuY2UgKCMxMDA5OCk7IG11c3QgYXBwZWFzZSBsaW50IGFuZCBldmFkZSBjb21wcmVzc2lvblxuXHRhbGxUeXBlcyA9IFwiKi9cIi5jb25jYXQoIFwiKlwiICksXG5cblx0Ly8gQW5jaG9yIHRhZyBmb3IgcGFyc2luZyB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9yaWdpbkFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIFwiYVwiICk7XG5cdG9yaWdpbkFuY2hvci5ocmVmID0gbG9jYXRpb24uaHJlZjtcblxuLy8gQmFzZSBcImNvbnN0cnVjdG9yXCIgZm9yIGpRdWVyeS5hamF4UHJlZmlsdGVyIGFuZCBqUXVlcnkuYWpheFRyYW5zcG9ydFxuZnVuY3Rpb24gYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBzdHJ1Y3R1cmUgKSB7XG5cblx0Ly8gZGF0YVR5cGVFeHByZXNzaW9uIGlzIG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byBcIipcIlxuXHRyZXR1cm4gZnVuY3Rpb24oIGRhdGFUeXBlRXhwcmVzc2lvbiwgZnVuYyApIHtcblxuXHRcdGlmICggdHlwZW9mIGRhdGFUeXBlRXhwcmVzc2lvbiAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRcdGZ1bmMgPSBkYXRhVHlwZUV4cHJlc3Npb247XG5cdFx0XHRkYXRhVHlwZUV4cHJlc3Npb24gPSBcIipcIjtcblx0XHR9XG5cblx0XHR2YXIgZGF0YVR5cGUsXG5cdFx0XHRpID0gMCxcblx0XHRcdGRhdGFUeXBlcyA9IGRhdGFUeXBlRXhwcmVzc2lvbi50b0xvd2VyQ2FzZSgpLm1hdGNoKCBybm90aHRtbHdoaXRlICkgfHwgW107XG5cblx0XHRpZiAoIGlzRnVuY3Rpb24oIGZ1bmMgKSApIHtcblxuXHRcdFx0Ly8gRm9yIGVhY2ggZGF0YVR5cGUgaW4gdGhlIGRhdGFUeXBlRXhwcmVzc2lvblxuXHRcdFx0d2hpbGUgKCAoIGRhdGFUeXBlID0gZGF0YVR5cGVzWyBpKysgXSApICkge1xuXG5cdFx0XHRcdC8vIFByZXBlbmQgaWYgcmVxdWVzdGVkXG5cdFx0XHRcdGlmICggZGF0YVR5cGVbIDAgXSA9PT0gXCIrXCIgKSB7XG5cdFx0XHRcdFx0ZGF0YVR5cGUgPSBkYXRhVHlwZS5zbGljZSggMSApIHx8IFwiKlwiO1xuXHRcdFx0XHRcdCggc3RydWN0dXJlWyBkYXRhVHlwZSBdID0gc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdICkudW5zaGlmdCggZnVuYyApO1xuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSBhcHBlbmRcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQoIHN0cnVjdHVyZVsgZGF0YVR5cGUgXSA9IHN0cnVjdHVyZVsgZGF0YVR5cGUgXSB8fCBbXSApLnB1c2goIGZ1bmMgKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcbn1cblxuLy8gQmFzZSBpbnNwZWN0aW9uIGZ1bmN0aW9uIGZvciBwcmVmaWx0ZXJzIGFuZCB0cmFuc3BvcnRzXG5mdW5jdGlvbiBpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggc3RydWN0dXJlLCBvcHRpb25zLCBvcmlnaW5hbE9wdGlvbnMsIGpxWEhSICkge1xuXG5cdHZhciBpbnNwZWN0ZWQgPSB7fSxcblx0XHRzZWVraW5nVHJhbnNwb3J0ID0gKCBzdHJ1Y3R1cmUgPT09IHRyYW5zcG9ydHMgKTtcblxuXHRmdW5jdGlvbiBpbnNwZWN0KCBkYXRhVHlwZSApIHtcblx0XHR2YXIgc2VsZWN0ZWQ7XG5cdFx0aW5zcGVjdGVkWyBkYXRhVHlwZSBdID0gdHJ1ZTtcblx0XHRqUXVlcnkuZWFjaCggc3RydWN0dXJlWyBkYXRhVHlwZSBdIHx8IFtdLCBmdW5jdGlvbiggXywgcHJlZmlsdGVyT3JGYWN0b3J5ICkge1xuXHRcdFx0dmFyIGRhdGFUeXBlT3JUcmFuc3BvcnQgPSBwcmVmaWx0ZXJPckZhY3RvcnkoIG9wdGlvbnMsIG9yaWdpbmFsT3B0aW9ucywganFYSFIgKTtcblx0XHRcdGlmICggdHlwZW9mIGRhdGFUeXBlT3JUcmFuc3BvcnQgPT09IFwic3RyaW5nXCIgJiZcblx0XHRcdFx0IXNlZWtpbmdUcmFuc3BvcnQgJiYgIWluc3BlY3RlZFsgZGF0YVR5cGVPclRyYW5zcG9ydCBdICkge1xuXG5cdFx0XHRcdG9wdGlvbnMuZGF0YVR5cGVzLnVuc2hpZnQoIGRhdGFUeXBlT3JUcmFuc3BvcnQgKTtcblx0XHRcdFx0aW5zcGVjdCggZGF0YVR5cGVPclRyYW5zcG9ydCApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKCBzZWVraW5nVHJhbnNwb3J0ICkge1xuXHRcdFx0XHRyZXR1cm4gISggc2VsZWN0ZWQgPSBkYXRhVHlwZU9yVHJhbnNwb3J0ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHJldHVybiBzZWxlY3RlZDtcblx0fVxuXG5cdHJldHVybiBpbnNwZWN0KCBvcHRpb25zLmRhdGFUeXBlc1sgMCBdICkgfHwgIWluc3BlY3RlZFsgXCIqXCIgXSAmJiBpbnNwZWN0KCBcIipcIiApO1xufVxuXG4vLyBBIHNwZWNpYWwgZXh0ZW5kIGZvciBhamF4IG9wdGlvbnNcbi8vIHRoYXQgdGFrZXMgXCJmbGF0XCIgb3B0aW9ucyAobm90IHRvIGJlIGRlZXAgZXh0ZW5kZWQpXG4vLyBGaXhlcyAjOTg4N1xuZnVuY3Rpb24gYWpheEV4dGVuZCggdGFyZ2V0LCBzcmMgKSB7XG5cdHZhciBrZXksIGRlZXAsXG5cdFx0ZmxhdE9wdGlvbnMgPSBqUXVlcnkuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zIHx8IHt9O1xuXG5cdGZvciAoIGtleSBpbiBzcmMgKSB7XG5cdFx0aWYgKCBzcmNbIGtleSBdICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHQoIGZsYXRPcHRpb25zWyBrZXkgXSA/IHRhcmdldCA6ICggZGVlcCB8fCAoIGRlZXAgPSB7fSApICkgKVsga2V5IF0gPSBzcmNbIGtleSBdO1xuXHRcdH1cblx0fVxuXHRpZiAoIGRlZXAgKSB7XG5cdFx0alF1ZXJ5LmV4dGVuZCggdHJ1ZSwgdGFyZ2V0LCBkZWVwICk7XG5cdH1cblxuXHRyZXR1cm4gdGFyZ2V0O1xufVxuXG4vKiBIYW5kbGVzIHJlc3BvbnNlcyB0byBhbiBhamF4IHJlcXVlc3Q6XG4gKiAtIGZpbmRzIHRoZSByaWdodCBkYXRhVHlwZSAobWVkaWF0ZXMgYmV0d2VlbiBjb250ZW50LXR5cGUgYW5kIGV4cGVjdGVkIGRhdGFUeXBlKVxuICogLSByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlXG4gKi9cbmZ1bmN0aW9uIGFqYXhIYW5kbGVSZXNwb25zZXMoIHMsIGpxWEhSLCByZXNwb25zZXMgKSB7XG5cblx0dmFyIGN0LCB0eXBlLCBmaW5hbERhdGFUeXBlLCBmaXJzdERhdGFUeXBlLFxuXHRcdGNvbnRlbnRzID0gcy5jb250ZW50cyxcblx0XHRkYXRhVHlwZXMgPSBzLmRhdGFUeXBlcztcblxuXHQvLyBSZW1vdmUgYXV0byBkYXRhVHlwZSBhbmQgZ2V0IGNvbnRlbnQtdHlwZSBpbiB0aGUgcHJvY2Vzc1xuXHR3aGlsZSAoIGRhdGFUeXBlc1sgMCBdID09PSBcIipcIiApIHtcblx0XHRkYXRhVHlwZXMuc2hpZnQoKTtcblx0XHRpZiAoIGN0ID09PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRjdCA9IHMubWltZVR5cGUgfHwganFYSFIuZ2V0UmVzcG9uc2VIZWFkZXIoIFwiQ29udGVudC1UeXBlXCIgKTtcblx0XHR9XG5cdH1cblxuXHQvLyBDaGVjayBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBrbm93biBjb250ZW50LXR5cGVcblx0aWYgKCBjdCApIHtcblx0XHRmb3IgKCB0eXBlIGluIGNvbnRlbnRzICkge1xuXHRcdFx0aWYgKCBjb250ZW50c1sgdHlwZSBdICYmIGNvbnRlbnRzWyB0eXBlIF0udGVzdCggY3QgKSApIHtcblx0XHRcdFx0ZGF0YVR5cGVzLnVuc2hpZnQoIHR5cGUgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Ly8gQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgYSByZXNwb25zZSBmb3IgdGhlIGV4cGVjdGVkIGRhdGFUeXBlXG5cdGlmICggZGF0YVR5cGVzWyAwIF0gaW4gcmVzcG9uc2VzICkge1xuXHRcdGZpbmFsRGF0YVR5cGUgPSBkYXRhVHlwZXNbIDAgXTtcblx0fSBlbHNlIHtcblxuXHRcdC8vIFRyeSBjb252ZXJ0aWJsZSBkYXRhVHlwZXNcblx0XHRmb3IgKCB0eXBlIGluIHJlc3BvbnNlcyApIHtcblx0XHRcdGlmICggIWRhdGFUeXBlc1sgMCBdIHx8IHMuY29udmVydGVyc1sgdHlwZSArIFwiIFwiICsgZGF0YVR5cGVzWyAwIF0gXSApIHtcblx0XHRcdFx0ZmluYWxEYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCAhZmlyc3REYXRhVHlwZSApIHtcblx0XHRcdFx0Zmlyc3REYXRhVHlwZSA9IHR5cGU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gT3IganVzdCB1c2UgZmlyc3Qgb25lXG5cdFx0ZmluYWxEYXRhVHlwZSA9IGZpbmFsRGF0YVR5cGUgfHwgZmlyc3REYXRhVHlwZTtcblx0fVxuXG5cdC8vIElmIHdlIGZvdW5kIGEgZGF0YVR5cGVcblx0Ly8gV2UgYWRkIHRoZSBkYXRhVHlwZSB0byB0aGUgbGlzdCBpZiBuZWVkZWRcblx0Ly8gYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyByZXNwb25zZVxuXHRpZiAoIGZpbmFsRGF0YVR5cGUgKSB7XG5cdFx0aWYgKCBmaW5hbERhdGFUeXBlICE9PSBkYXRhVHlwZXNbIDAgXSApIHtcblx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCBmaW5hbERhdGFUeXBlICk7XG5cdFx0fVxuXHRcdHJldHVybiByZXNwb25zZXNbIGZpbmFsRGF0YVR5cGUgXTtcblx0fVxufVxuXG4vKiBDaGFpbiBjb252ZXJzaW9ucyBnaXZlbiB0aGUgcmVxdWVzdCBhbmQgdGhlIG9yaWdpbmFsIHJlc3BvbnNlXG4gKiBBbHNvIHNldHMgdGhlIHJlc3BvbnNlWFhYIGZpZWxkcyBvbiB0aGUganFYSFIgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gYWpheENvbnZlcnQoIHMsIHJlc3BvbnNlLCBqcVhIUiwgaXNTdWNjZXNzICkge1xuXHR2YXIgY29udjIsIGN1cnJlbnQsIGNvbnYsIHRtcCwgcHJldixcblx0XHRjb252ZXJ0ZXJzID0ge30sXG5cblx0XHQvLyBXb3JrIHdpdGggYSBjb3B5IG9mIGRhdGFUeXBlcyBpbiBjYXNlIHdlIG5lZWQgdG8gbW9kaWZ5IGl0IGZvciBjb252ZXJzaW9uXG5cdFx0ZGF0YVR5cGVzID0gcy5kYXRhVHlwZXMuc2xpY2UoKTtcblxuXHQvLyBDcmVhdGUgY29udmVydGVycyBtYXAgd2l0aCBsb3dlcmNhc2VkIGtleXNcblx0aWYgKCBkYXRhVHlwZXNbIDEgXSApIHtcblx0XHRmb3IgKCBjb252IGluIHMuY29udmVydGVycyApIHtcblx0XHRcdGNvbnZlcnRlcnNbIGNvbnYudG9Mb3dlckNhc2UoKSBdID0gcy5jb252ZXJ0ZXJzWyBjb252IF07XG5cdFx0fVxuXHR9XG5cblx0Y3VycmVudCA9IGRhdGFUeXBlcy5zaGlmdCgpO1xuXG5cdC8vIENvbnZlcnQgdG8gZWFjaCBzZXF1ZW50aWFsIGRhdGFUeXBlXG5cdHdoaWxlICggY3VycmVudCApIHtcblxuXHRcdGlmICggcy5yZXNwb25zZUZpZWxkc1sgY3VycmVudCBdICkge1xuXHRcdFx0anFYSFJbIHMucmVzcG9uc2VGaWVsZHNbIGN1cnJlbnQgXSBdID0gcmVzcG9uc2U7XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgdGhlIGRhdGFGaWx0ZXIgaWYgcHJvdmlkZWRcblx0XHRpZiAoICFwcmV2ICYmIGlzU3VjY2VzcyAmJiBzLmRhdGFGaWx0ZXIgKSB7XG5cdFx0XHRyZXNwb25zZSA9IHMuZGF0YUZpbHRlciggcmVzcG9uc2UsIHMuZGF0YVR5cGUgKTtcblx0XHR9XG5cblx0XHRwcmV2ID0gY3VycmVudDtcblx0XHRjdXJyZW50ID0gZGF0YVR5cGVzLnNoaWZ0KCk7XG5cblx0XHRpZiAoIGN1cnJlbnQgKSB7XG5cblx0XHRcdC8vIFRoZXJlJ3Mgb25seSB3b3JrIHRvIGRvIGlmIGN1cnJlbnQgZGF0YVR5cGUgaXMgbm9uLWF1dG9cblx0XHRcdGlmICggY3VycmVudCA9PT0gXCIqXCIgKSB7XG5cblx0XHRcdFx0Y3VycmVudCA9IHByZXY7XG5cblx0XHRcdC8vIENvbnZlcnQgcmVzcG9uc2UgaWYgcHJldiBkYXRhVHlwZSBpcyBub24tYXV0byBhbmQgZGlmZmVycyBmcm9tIGN1cnJlbnRcblx0XHRcdH0gZWxzZSBpZiAoIHByZXYgIT09IFwiKlwiICYmIHByZXYgIT09IGN1cnJlbnQgKSB7XG5cblx0XHRcdFx0Ly8gU2VlayBhIGRpcmVjdCBjb252ZXJ0ZXJcblx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIGN1cnJlbnQgXSB8fCBjb252ZXJ0ZXJzWyBcIiogXCIgKyBjdXJyZW50IF07XG5cblx0XHRcdFx0Ly8gSWYgbm9uZSBmb3VuZCwgc2VlayBhIHBhaXJcblx0XHRcdFx0aWYgKCAhY29udiApIHtcblx0XHRcdFx0XHRmb3IgKCBjb252MiBpbiBjb252ZXJ0ZXJzICkge1xuXG5cdFx0XHRcdFx0XHQvLyBJZiBjb252MiBvdXRwdXRzIGN1cnJlbnRcblx0XHRcdFx0XHRcdHRtcCA9IGNvbnYyLnNwbGl0KCBcIiBcIiApO1xuXHRcdFx0XHRcdFx0aWYgKCB0bXBbIDEgXSA9PT0gY3VycmVudCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBJZiBwcmV2IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYWNjZXB0ZWQgaW5wdXRcblx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIHByZXYgKyBcIiBcIiArIHRtcFsgMCBdIF0gfHxcblx0XHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJzWyBcIiogXCIgKyB0bXBbIDAgXSBdO1xuXHRcdFx0XHRcdFx0XHRpZiAoIGNvbnYgKSB7XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBDb25kZW5zZSBlcXVpdmFsZW5jZSBjb252ZXJ0ZXJzXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCBjb252ID09PSB0cnVlICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udiA9IGNvbnZlcnRlcnNbIGNvbnYyIF07XG5cblx0XHRcdFx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGluc2VydCB0aGUgaW50ZXJtZWRpYXRlIGRhdGFUeXBlXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggY29udmVydGVyc1sgY29udjIgXSAhPT0gdHJ1ZSApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGN1cnJlbnQgPSB0bXBbIDAgXTtcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFUeXBlcy51bnNoaWZ0KCB0bXBbIDEgXSApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEFwcGx5IGNvbnZlcnRlciAoaWYgbm90IGFuIGVxdWl2YWxlbmNlKVxuXHRcdFx0XHRpZiAoIGNvbnYgIT09IHRydWUgKSB7XG5cblx0XHRcdFx0XHQvLyBVbmxlc3MgZXJyb3JzIGFyZSBhbGxvd2VkIHRvIGJ1YmJsZSwgY2F0Y2ggYW5kIHJldHVybiB0aGVtXG5cdFx0XHRcdFx0aWYgKCBjb252ICYmIHMudGhyb3dzICkge1xuXHRcdFx0XHRcdFx0cmVzcG9uc2UgPSBjb252KCByZXNwb25zZSApO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRyZXNwb25zZSA9IGNvbnYoIHJlc3BvbnNlICk7XG5cdFx0XHRcdFx0XHR9IGNhdGNoICggZSApIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRzdGF0ZTogXCJwYXJzZXJlcnJvclwiLFxuXHRcdFx0XHRcdFx0XHRcdGVycm9yOiBjb252ID8gZSA6IFwiTm8gY29udmVyc2lvbiBmcm9tIFwiICsgcHJldiArIFwiIHRvIFwiICsgY3VycmVudFxuXHRcdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHN0YXRlOiBcInN1Y2Nlc3NcIiwgZGF0YTogcmVzcG9uc2UgfTtcbn1cblxualF1ZXJ5LmV4dGVuZCgge1xuXG5cdC8vIENvdW50ZXIgZm9yIGhvbGRpbmcgdGhlIG51bWJlciBvZiBhY3RpdmUgcXVlcmllc1xuXHRhY3RpdmU6IDAsXG5cblx0Ly8gTGFzdC1Nb2RpZmllZCBoZWFkZXIgY2FjaGUgZm9yIG5leHQgcmVxdWVzdFxuXHRsYXN0TW9kaWZpZWQ6IHt9LFxuXHRldGFnOiB7fSxcblxuXHRhamF4U2V0dGluZ3M6IHtcblx0XHR1cmw6IGxvY2F0aW9uLmhyZWYsXG5cdFx0dHlwZTogXCJHRVRcIixcblx0XHRpc0xvY2FsOiBybG9jYWxQcm90b2NvbC50ZXN0KCBsb2NhdGlvbi5wcm90b2NvbCApLFxuXHRcdGdsb2JhbDogdHJ1ZSxcblx0XHRwcm9jZXNzRGF0YTogdHJ1ZSxcblx0XHRhc3luYzogdHJ1ZSxcblx0XHRjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLThcIixcblxuXHRcdC8qXG5cdFx0dGltZW91dDogMCxcblx0XHRkYXRhOiBudWxsLFxuXHRcdGRhdGFUeXBlOiBudWxsLFxuXHRcdHVzZXJuYW1lOiBudWxsLFxuXHRcdHBhc3N3b3JkOiBudWxsLFxuXHRcdGNhY2hlOiBudWxsLFxuXHRcdHRocm93czogZmFsc2UsXG5cdFx0dHJhZGl0aW9uYWw6IGZhbHNlLFxuXHRcdGhlYWRlcnM6IHt9LFxuXHRcdCovXG5cblx0XHRhY2NlcHRzOiB7XG5cdFx0XHRcIipcIjogYWxsVHlwZXMsXG5cdFx0XHR0ZXh0OiBcInRleHQvcGxhaW5cIixcblx0XHRcdGh0bWw6IFwidGV4dC9odG1sXCIsXG5cdFx0XHR4bWw6IFwiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbFwiLFxuXHRcdFx0anNvbjogXCJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L2phdmFzY3JpcHRcIlxuXHRcdH0sXG5cblx0XHRjb250ZW50czoge1xuXHRcdFx0eG1sOiAvXFxieG1sXFxiLyxcblx0XHRcdGh0bWw6IC9cXGJodG1sLyxcblx0XHRcdGpzb246IC9cXGJqc29uXFxiL1xuXHRcdH0sXG5cblx0XHRyZXNwb25zZUZpZWxkczoge1xuXHRcdFx0eG1sOiBcInJlc3BvbnNlWE1MXCIsXG5cdFx0XHR0ZXh0OiBcInJlc3BvbnNlVGV4dFwiLFxuXHRcdFx0anNvbjogXCJyZXNwb25zZUpTT05cIlxuXHRcdH0sXG5cblx0XHQvLyBEYXRhIGNvbnZlcnRlcnNcblx0XHQvLyBLZXlzIHNlcGFyYXRlIHNvdXJjZSAob3IgY2F0Y2hhbGwgXCIqXCIpIGFuZCBkZXN0aW5hdGlvbiB0eXBlcyB3aXRoIGEgc2luZ2xlIHNwYWNlXG5cdFx0Y29udmVydGVyczoge1xuXG5cdFx0XHQvLyBDb252ZXJ0IGFueXRoaW5nIHRvIHRleHRcblx0XHRcdFwiKiB0ZXh0XCI6IFN0cmluZyxcblxuXHRcdFx0Ly8gVGV4dCB0byBodG1sICh0cnVlID0gbm8gdHJhbnNmb3JtYXRpb24pXG5cdFx0XHRcInRleHQgaHRtbFwiOiB0cnVlLFxuXG5cdFx0XHQvLyBFdmFsdWF0ZSB0ZXh0IGFzIGEganNvbiBleHByZXNzaW9uXG5cdFx0XHRcInRleHQganNvblwiOiBKU09OLnBhcnNlLFxuXG5cdFx0XHQvLyBQYXJzZSB0ZXh0IGFzIHhtbFxuXHRcdFx0XCJ0ZXh0IHhtbFwiOiBqUXVlcnkucGFyc2VYTUxcblx0XHR9LFxuXG5cdFx0Ly8gRm9yIG9wdGlvbnMgdGhhdCBzaG91bGRuJ3QgYmUgZGVlcCBleHRlbmRlZDpcblx0XHQvLyB5b3UgY2FuIGFkZCB5b3VyIG93biBjdXN0b20gb3B0aW9ucyBoZXJlIGlmXG5cdFx0Ly8gYW5kIHdoZW4geW91IGNyZWF0ZSBvbmUgdGhhdCBzaG91bGRuJ3QgYmVcblx0XHQvLyBkZWVwIGV4dGVuZGVkIChzZWUgYWpheEV4dGVuZClcblx0XHRmbGF0T3B0aW9uczoge1xuXHRcdFx0dXJsOiB0cnVlLFxuXHRcdFx0Y29udGV4dDogdHJ1ZVxuXHRcdH1cblx0fSxcblxuXHQvLyBDcmVhdGVzIGEgZnVsbCBmbGVkZ2VkIHNldHRpbmdzIG9iamVjdCBpbnRvIHRhcmdldFxuXHQvLyB3aXRoIGJvdGggYWpheFNldHRpbmdzIGFuZCBzZXR0aW5ncyBmaWVsZHMuXG5cdC8vIElmIHRhcmdldCBpcyBvbWl0dGVkLCB3cml0ZXMgaW50byBhamF4U2V0dGluZ3MuXG5cdGFqYXhTZXR1cDogZnVuY3Rpb24oIHRhcmdldCwgc2V0dGluZ3MgKSB7XG5cdFx0cmV0dXJuIHNldHRpbmdzID9cblxuXHRcdFx0Ly8gQnVpbGRpbmcgYSBzZXR0aW5ncyBvYmplY3Rcblx0XHRcdGFqYXhFeHRlbmQoIGFqYXhFeHRlbmQoIHRhcmdldCwgalF1ZXJ5LmFqYXhTZXR0aW5ncyApLCBzZXR0aW5ncyApIDpcblxuXHRcdFx0Ly8gRXh0ZW5kaW5nIGFqYXhTZXR0aW5nc1xuXHRcdFx0YWpheEV4dGVuZCggalF1ZXJ5LmFqYXhTZXR0aW5ncywgdGFyZ2V0ICk7XG5cdH0sXG5cblx0YWpheFByZWZpbHRlcjogYWRkVG9QcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCBwcmVmaWx0ZXJzICksXG5cdGFqYXhUcmFuc3BvcnQ6IGFkZFRvUHJlZmlsdGVyc09yVHJhbnNwb3J0cyggdHJhbnNwb3J0cyApLFxuXG5cdC8vIE1haW4gbWV0aG9kXG5cdGFqYXg6IGZ1bmN0aW9uKCB1cmwsIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBJZiB1cmwgaXMgYW4gb2JqZWN0LCBzaW11bGF0ZSBwcmUtMS41IHNpZ25hdHVyZVxuXHRcdGlmICggdHlwZW9mIHVybCA9PT0gXCJvYmplY3RcIiApIHtcblx0XHRcdG9wdGlvbnMgPSB1cmw7XG5cdFx0XHR1cmwgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gRm9yY2Ugb3B0aW9ucyB0byBiZSBhbiBvYmplY3Rcblx0XHRvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuXHRcdHZhciB0cmFuc3BvcnQsXG5cblx0XHRcdC8vIFVSTCB3aXRob3V0IGFudGktY2FjaGUgcGFyYW1cblx0XHRcdGNhY2hlVVJMLFxuXG5cdFx0XHQvLyBSZXNwb25zZSBoZWFkZXJzXG5cdFx0XHRyZXNwb25zZUhlYWRlcnNTdHJpbmcsXG5cdFx0XHRyZXNwb25zZUhlYWRlcnMsXG5cblx0XHRcdC8vIHRpbWVvdXQgaGFuZGxlXG5cdFx0XHR0aW1lb3V0VGltZXIsXG5cblx0XHRcdC8vIFVybCBjbGVhbnVwIHZhclxuXHRcdFx0dXJsQW5jaG9yLFxuXG5cdFx0XHQvLyBSZXF1ZXN0IHN0YXRlIChiZWNvbWVzIGZhbHNlIHVwb24gc2VuZCBhbmQgdHJ1ZSB1cG9uIGNvbXBsZXRpb24pXG5cdFx0XHRjb21wbGV0ZWQsXG5cblx0XHRcdC8vIFRvIGtub3cgaWYgZ2xvYmFsIGV2ZW50cyBhcmUgdG8gYmUgZGlzcGF0Y2hlZFxuXHRcdFx0ZmlyZUdsb2JhbHMsXG5cblx0XHRcdC8vIExvb3AgdmFyaWFibGVcblx0XHRcdGksXG5cblx0XHRcdC8vIHVuY2FjaGVkIHBhcnQgb2YgdGhlIHVybFxuXHRcdFx0dW5jYWNoZWQsXG5cblx0XHRcdC8vIENyZWF0ZSB0aGUgZmluYWwgb3B0aW9ucyBvYmplY3Rcblx0XHRcdHMgPSBqUXVlcnkuYWpheFNldHVwKCB7fSwgb3B0aW9ucyApLFxuXG5cdFx0XHQvLyBDYWxsYmFja3MgY29udGV4dFxuXHRcdFx0Y2FsbGJhY2tDb250ZXh0ID0gcy5jb250ZXh0IHx8IHMsXG5cblx0XHRcdC8vIENvbnRleHQgZm9yIGdsb2JhbCBldmVudHMgaXMgY2FsbGJhY2tDb250ZXh0IGlmIGl0IGlzIGEgRE9NIG5vZGUgb3IgalF1ZXJ5IGNvbGxlY3Rpb25cblx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dCA9IHMuY29udGV4dCAmJlxuXHRcdFx0XHQoIGNhbGxiYWNrQ29udGV4dC5ub2RlVHlwZSB8fCBjYWxsYmFja0NvbnRleHQuanF1ZXJ5ICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggY2FsbGJhY2tDb250ZXh0ICkgOlxuXHRcdFx0XHRcdGpRdWVyeS5ldmVudCxcblxuXHRcdFx0Ly8gRGVmZXJyZWRzXG5cdFx0XHRkZWZlcnJlZCA9IGpRdWVyeS5EZWZlcnJlZCgpLFxuXHRcdFx0Y29tcGxldGVEZWZlcnJlZCA9IGpRdWVyeS5DYWxsYmFja3MoIFwib25jZSBtZW1vcnlcIiApLFxuXG5cdFx0XHQvLyBTdGF0dXMtZGVwZW5kZW50IGNhbGxiYWNrc1xuXHRcdFx0c3RhdHVzQ29kZSA9IHMuc3RhdHVzQ29kZSB8fCB7fSxcblxuXHRcdFx0Ly8gSGVhZGVycyAodGhleSBhcmUgc2VudCBhbGwgYXQgb25jZSlcblx0XHRcdHJlcXVlc3RIZWFkZXJzID0ge30sXG5cdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzID0ge30sXG5cblx0XHRcdC8vIERlZmF1bHQgYWJvcnQgbWVzc2FnZVxuXHRcdFx0c3RyQWJvcnQgPSBcImNhbmNlbGVkXCIsXG5cblx0XHRcdC8vIEZha2UgeGhyXG5cdFx0XHRqcVhIUiA9IHtcblx0XHRcdFx0cmVhZHlTdGF0ZTogMCxcblxuXHRcdFx0XHQvLyBCdWlsZHMgaGVhZGVycyBoYXNodGFibGUgaWYgbmVlZGVkXG5cdFx0XHRcdGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigga2V5ICkge1xuXHRcdFx0XHRcdHZhciBtYXRjaDtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0XHRcdGlmICggIXJlc3BvbnNlSGVhZGVycyApIHtcblx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzID0ge307XG5cdFx0XHRcdFx0XHRcdHdoaWxlICggKCBtYXRjaCA9IHJoZWFkZXJzLmV4ZWMoIHJlc3BvbnNlSGVhZGVyc1N0cmluZyApICkgKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2VIZWFkZXJzWyBtYXRjaFsgMSBdLnRvTG93ZXJDYXNlKCkgXSA9IG1hdGNoWyAyIF07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdG1hdGNoID0gcmVzcG9uc2VIZWFkZXJzWyBrZXkudG9Mb3dlckNhc2UoKSBdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gbWF0Y2ggPT0gbnVsbCA/IG51bGwgOiBtYXRjaDtcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBSYXcgc3RyaW5nXG5cdFx0XHRcdGdldEFsbFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGNvbXBsZXRlZCA/IHJlc3BvbnNlSGVhZGVyc1N0cmluZyA6IG51bGw7XG5cdFx0XHRcdH0sXG5cblx0XHRcdFx0Ly8gQ2FjaGVzIHRoZSBoZWFkZXJcblx0XHRcdFx0c2V0UmVxdWVzdEhlYWRlcjogZnVuY3Rpb24oIG5hbWUsIHZhbHVlICkge1xuXHRcdFx0XHRcdGlmICggY29tcGxldGVkID09IG51bGwgKSB7XG5cdFx0XHRcdFx0XHRuYW1lID0gcmVxdWVzdEhlYWRlcnNOYW1lc1sgbmFtZS50b0xvd2VyQ2FzZSgpIF0gPVxuXHRcdFx0XHRcdFx0XHRyZXF1ZXN0SGVhZGVyc05hbWVzWyBuYW1lLnRvTG93ZXJDYXNlKCkgXSB8fCBuYW1lO1xuXHRcdFx0XHRcdFx0cmVxdWVzdEhlYWRlcnNbIG5hbWUgXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSxcblxuXHRcdFx0XHQvLyBPdmVycmlkZXMgcmVzcG9uc2UgY29udGVudC10eXBlIGhlYWRlclxuXHRcdFx0XHRvdmVycmlkZU1pbWVUeXBlOiBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCA9PSBudWxsICkge1xuXHRcdFx0XHRcdFx0cy5taW1lVHlwZSA9IHR5cGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIFN0YXR1cy1kZXBlbmRlbnQgY2FsbGJhY2tzXG5cdFx0XHRcdHN0YXR1c0NvZGU6IGZ1bmN0aW9uKCBtYXAgKSB7XG5cdFx0XHRcdFx0dmFyIGNvZGU7XG5cdFx0XHRcdFx0aWYgKCBtYXAgKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblxuXHRcdFx0XHRcdFx0XHQvLyBFeGVjdXRlIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3Ncblx0XHRcdFx0XHRcdFx0anFYSFIuYWx3YXlzKCBtYXBbIGpxWEhSLnN0YXR1cyBdICk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXG5cdFx0XHRcdFx0XHRcdC8vIExhenktYWRkIHRoZSBuZXcgY2FsbGJhY2tzIGluIGEgd2F5IHRoYXQgcHJlc2VydmVzIG9sZCBvbmVzXG5cdFx0XHRcdFx0XHRcdGZvciAoIGNvZGUgaW4gbWFwICkge1xuXHRcdFx0XHRcdFx0XHRcdHN0YXR1c0NvZGVbIGNvZGUgXSA9IFsgc3RhdHVzQ29kZVsgY29kZSBdLCBtYXBbIGNvZGUgXSBdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0XHR9LFxuXG5cdFx0XHRcdC8vIENhbmNlbCB0aGUgcmVxdWVzdFxuXHRcdFx0XHRhYm9ydDogZnVuY3Rpb24oIHN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0dmFyIGZpbmFsVGV4dCA9IHN0YXR1c1RleHQgfHwgc3RyQWJvcnQ7XG5cdFx0XHRcdFx0aWYgKCB0cmFuc3BvcnQgKSB7XG5cdFx0XHRcdFx0XHR0cmFuc3BvcnQuYWJvcnQoIGZpbmFsVGV4dCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRkb25lKCAwLCBmaW5hbFRleHQgKTtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdC8vIEF0dGFjaCBkZWZlcnJlZHNcblx0XHRkZWZlcnJlZC5wcm9taXNlKCBqcVhIUiApO1xuXG5cdFx0Ly8gQWRkIHByb3RvY29sIGlmIG5vdCBwcm92aWRlZCAocHJlZmlsdGVycyBtaWdodCBleHBlY3QgaXQpXG5cdFx0Ly8gSGFuZGxlIGZhbHN5IHVybCBpbiB0aGUgc2V0dGluZ3Mgb2JqZWN0ICgjMTAwOTM6IGNvbnNpc3RlbmN5IHdpdGggb2xkIHNpZ25hdHVyZSlcblx0XHQvLyBXZSBhbHNvIHVzZSB0aGUgdXJsIHBhcmFtZXRlciBpZiBhdmFpbGFibGVcblx0XHRzLnVybCA9ICggKCB1cmwgfHwgcy51cmwgfHwgbG9jYXRpb24uaHJlZiApICsgXCJcIiApXG5cdFx0XHQucmVwbGFjZSggcnByb3RvY29sLCBsb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiApO1xuXG5cdFx0Ly8gQWxpYXMgbWV0aG9kIG9wdGlvbiB0byB0eXBlIGFzIHBlciB0aWNrZXQgIzEyMDA0XG5cdFx0cy50eXBlID0gb3B0aW9ucy5tZXRob2QgfHwgb3B0aW9ucy50eXBlIHx8IHMubWV0aG9kIHx8IHMudHlwZTtcblxuXHRcdC8vIEV4dHJhY3QgZGF0YVR5cGVzIGxpc3Rcblx0XHRzLmRhdGFUeXBlcyA9ICggcy5kYXRhVHlwZSB8fCBcIipcIiApLnRvTG93ZXJDYXNlKCkubWF0Y2goIHJub3RodG1sd2hpdGUgKSB8fCBbIFwiXCIgXTtcblxuXHRcdC8vIEEgY3Jvc3MtZG9tYWluIHJlcXVlc3QgaXMgaW4gb3JkZXIgd2hlbiB0aGUgb3JpZ2luIGRvZXNuJ3QgbWF0Y2ggdGhlIGN1cnJlbnQgb3JpZ2luLlxuXHRcdGlmICggcy5jcm9zc0RvbWFpbiA9PSBudWxsICkge1xuXHRcdFx0dXJsQW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggXCJhXCIgKTtcblxuXHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEsIEVkZ2UgMTIgLSAxNVxuXHRcdFx0Ly8gSUUgdGhyb3dzIGV4Y2VwdGlvbiBvbiBhY2Nlc3NpbmcgdGhlIGhyZWYgcHJvcGVydHkgaWYgdXJsIGlzIG1hbGZvcm1lZCxcblx0XHRcdC8vIGUuZy4gaHR0cDovL2V4YW1wbGUuY29tOjgweC9cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHVybEFuY2hvci5ocmVmID0gcy51cmw7XG5cblx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD04IC0gMTEgb25seVxuXHRcdFx0XHQvLyBBbmNob3IncyBob3N0IHByb3BlcnR5IGlzbid0IGNvcnJlY3RseSBzZXQgd2hlbiBzLnVybCBpcyByZWxhdGl2ZVxuXHRcdFx0XHR1cmxBbmNob3IuaHJlZiA9IHVybEFuY2hvci5ocmVmO1xuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gb3JpZ2luQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgb3JpZ2luQW5jaG9yLmhvc3QgIT09XG5cdFx0XHRcdFx0dXJsQW5jaG9yLnByb3RvY29sICsgXCIvL1wiICsgdXJsQW5jaG9yLmhvc3Q7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciBwYXJzaW5nIHRoZSBVUkwsIGFzc3VtZSBpdCBpcyBjcm9zc0RvbWFpbixcblx0XHRcdFx0Ly8gaXQgY2FuIGJlIHJlamVjdGVkIGJ5IHRoZSB0cmFuc3BvcnQgaWYgaXQgaXMgaW52YWxpZFxuXHRcdFx0XHRzLmNyb3NzRG9tYWluID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDb252ZXJ0IGRhdGEgaWYgbm90IGFscmVhZHkgYSBzdHJpbmdcblx0XHRpZiAoIHMuZGF0YSAmJiBzLnByb2Nlc3NEYXRhICYmIHR5cGVvZiBzLmRhdGEgIT09IFwic3RyaW5nXCIgKSB7XG5cdFx0XHRzLmRhdGEgPSBqUXVlcnkucGFyYW0oIHMuZGF0YSwgcy50cmFkaXRpb25hbCApO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHByZWZpbHRlcnNcblx0XHRpbnNwZWN0UHJlZmlsdGVyc09yVHJhbnNwb3J0cyggcHJlZmlsdGVycywgcywgb3B0aW9ucywganFYSFIgKTtcblxuXHRcdC8vIElmIHJlcXVlc3Qgd2FzIGFib3J0ZWQgaW5zaWRlIGEgcHJlZmlsdGVyLCBzdG9wIHRoZXJlXG5cdFx0aWYgKCBjb21wbGV0ZWQgKSB7XG5cdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0fVxuXG5cdFx0Ly8gV2UgY2FuIGZpcmUgZ2xvYmFsIGV2ZW50cyBhcyBvZiBub3cgaWYgYXNrZWQgdG9cblx0XHQvLyBEb24ndCBmaXJlIGV2ZW50cyBpZiBqUXVlcnkuZXZlbnQgaXMgdW5kZWZpbmVkIGluIGFuIEFNRC11c2FnZSBzY2VuYXJpbyAoIzE1MTE4KVxuXHRcdGZpcmVHbG9iYWxzID0galF1ZXJ5LmV2ZW50ICYmIHMuZ2xvYmFsO1xuXG5cdFx0Ly8gV2F0Y2ggZm9yIGEgbmV3IHNldCBvZiByZXF1ZXN0c1xuXHRcdGlmICggZmlyZUdsb2JhbHMgJiYgalF1ZXJ5LmFjdGl2ZSsrID09PSAwICkge1xuXHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0YXJ0XCIgKTtcblx0XHR9XG5cblx0XHQvLyBVcHBlcmNhc2UgdGhlIHR5cGVcblx0XHRzLnR5cGUgPSBzLnR5cGUudG9VcHBlckNhc2UoKTtcblxuXHRcdC8vIERldGVybWluZSBpZiByZXF1ZXN0IGhhcyBjb250ZW50XG5cdFx0cy5oYXNDb250ZW50ID0gIXJub0NvbnRlbnQudGVzdCggcy50eXBlICk7XG5cblx0XHQvLyBTYXZlIHRoZSBVUkwgaW4gY2FzZSB3ZSdyZSB0b3lpbmcgd2l0aCB0aGUgSWYtTW9kaWZpZWQtU2luY2Vcblx0XHQvLyBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIgbGF0ZXIgb25cblx0XHQvLyBSZW1vdmUgaGFzaCB0byBzaW1wbGlmeSB1cmwgbWFuaXB1bGF0aW9uXG5cdFx0Y2FjaGVVUkwgPSBzLnVybC5yZXBsYWNlKCByaGFzaCwgXCJcIiApO1xuXG5cdFx0Ly8gTW9yZSBvcHRpb25zIGhhbmRsaW5nIGZvciByZXF1ZXN0cyB3aXRoIG5vIGNvbnRlbnRcblx0XHRpZiAoICFzLmhhc0NvbnRlbnQgKSB7XG5cblx0XHRcdC8vIFJlbWVtYmVyIHRoZSBoYXNoIHNvIHdlIGNhbiBwdXQgaXQgYmFja1xuXHRcdFx0dW5jYWNoZWQgPSBzLnVybC5zbGljZSggY2FjaGVVUkwubGVuZ3RoICk7XG5cblx0XHRcdC8vIElmIGRhdGEgaXMgYXZhaWxhYmxlIGFuZCBzaG91bGQgYmUgcHJvY2Vzc2VkLCBhcHBlbmQgZGF0YSB0byB1cmxcblx0XHRcdGlmICggcy5kYXRhICYmICggcy5wcm9jZXNzRGF0YSB8fCB0eXBlb2Ygcy5kYXRhID09PSBcInN0cmluZ1wiICkgKSB7XG5cdFx0XHRcdGNhY2hlVVJMICs9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBzLmRhdGE7XG5cblx0XHRcdFx0Ly8gIzk2ODI6IHJlbW92ZSBkYXRhIHNvIHRoYXQgaXQncyBub3QgdXNlZCBpbiBhbiBldmVudHVhbCByZXRyeVxuXHRcdFx0XHRkZWxldGUgcy5kYXRhO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgb3IgdXBkYXRlIGFudGktY2FjaGUgcGFyYW0gaWYgbmVlZGVkXG5cdFx0XHRpZiAoIHMuY2FjaGUgPT09IGZhbHNlICkge1xuXHRcdFx0XHRjYWNoZVVSTCA9IGNhY2hlVVJMLnJlcGxhY2UoIHJhbnRpQ2FjaGUsIFwiJDFcIiApO1xuXHRcdFx0XHR1bmNhY2hlZCA9ICggcnF1ZXJ5LnRlc3QoIGNhY2hlVVJMICkgPyBcIiZcIiA6IFwiP1wiICkgKyBcIl89XCIgKyAoIG5vbmNlKysgKSArIHVuY2FjaGVkO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBQdXQgaGFzaCBhbmQgYW50aS1jYWNoZSBvbiB0aGUgVVJMIHRoYXQgd2lsbCBiZSByZXF1ZXN0ZWQgKGdoLTE3MzIpXG5cdFx0XHRzLnVybCA9IGNhY2hlVVJMICsgdW5jYWNoZWQ7XG5cblx0XHQvLyBDaGFuZ2UgJyUyMCcgdG8gJysnIGlmIHRoaXMgaXMgZW5jb2RlZCBmb3JtIGJvZHkgY29udGVudCAoZ2gtMjY1OClcblx0XHR9IGVsc2UgaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAmJlxuXHRcdFx0KCBzLmNvbnRlbnRUeXBlIHx8IFwiXCIgKS5pbmRleE9mKCBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiICkgPT09IDAgKSB7XG5cdFx0XHRzLmRhdGEgPSBzLmRhdGEucmVwbGFjZSggcjIwLCBcIitcIiApO1xuXHRcdH1cblxuXHRcdC8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgYW5kL29yIElmLU5vbmUtTWF0Y2ggaGVhZGVyLCBpZiBpbiBpZk1vZGlmaWVkIG1vZGUuXG5cdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRpZiAoIGpRdWVyeS5sYXN0TW9kaWZpZWRbIGNhY2hlVVJMIF0gKSB7XG5cdFx0XHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoIFwiSWYtTW9kaWZpZWQtU2luY2VcIiwgalF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCBqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSApIHtcblx0XHRcdFx0anFYSFIuc2V0UmVxdWVzdEhlYWRlciggXCJJZi1Ob25lLU1hdGNoXCIsIGpRdWVyeS5ldGFnWyBjYWNoZVVSTCBdICk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBjb3JyZWN0IGhlYWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50XG5cdFx0aWYgKCBzLmRhdGEgJiYgcy5oYXNDb250ZW50ICYmIHMuY29udGVudFR5cGUgIT09IGZhbHNlIHx8IG9wdGlvbnMuY29udGVudFR5cGUgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBcIkNvbnRlbnQtVHlwZVwiLCBzLmNvbnRlbnRUeXBlICk7XG5cdFx0fVxuXG5cdFx0Ly8gU2V0IHRoZSBBY2NlcHRzIGhlYWRlciBmb3IgdGhlIHNlcnZlciwgZGVwZW5kaW5nIG9uIHRoZSBkYXRhVHlwZVxuXHRcdGpxWEhSLnNldFJlcXVlc3RIZWFkZXIoXG5cdFx0XHRcIkFjY2VwdFwiLFxuXHRcdFx0cy5kYXRhVHlwZXNbIDAgXSAmJiBzLmFjY2VwdHNbIHMuZGF0YVR5cGVzWyAwIF0gXSA/XG5cdFx0XHRcdHMuYWNjZXB0c1sgcy5kYXRhVHlwZXNbIDAgXSBdICtcblx0XHRcdFx0XHQoIHMuZGF0YVR5cGVzWyAwIF0gIT09IFwiKlwiID8gXCIsIFwiICsgYWxsVHlwZXMgKyBcIjsgcT0wLjAxXCIgOiBcIlwiICkgOlxuXHRcdFx0XHRzLmFjY2VwdHNbIFwiKlwiIF1cblx0XHQpO1xuXG5cdFx0Ly8gQ2hlY2sgZm9yIGhlYWRlcnMgb3B0aW9uXG5cdFx0Zm9yICggaSBpbiBzLmhlYWRlcnMgKSB7XG5cdFx0XHRqcVhIUi5zZXRSZXF1ZXN0SGVhZGVyKCBpLCBzLmhlYWRlcnNbIGkgXSApO1xuXHRcdH1cblxuXHRcdC8vIEFsbG93IGN1c3RvbSBoZWFkZXJzL21pbWV0eXBlcyBhbmQgZWFybHkgYWJvcnRcblx0XHRpZiAoIHMuYmVmb3JlU2VuZCAmJlxuXHRcdFx0KCBzLmJlZm9yZVNlbmQuY2FsbCggY2FsbGJhY2tDb250ZXh0LCBqcVhIUiwgcyApID09PSBmYWxzZSB8fCBjb21wbGV0ZWQgKSApIHtcblxuXHRcdFx0Ly8gQWJvcnQgaWYgbm90IGRvbmUgYWxyZWFkeSBhbmQgcmV0dXJuXG5cdFx0XHRyZXR1cm4ganFYSFIuYWJvcnQoKTtcblx0XHR9XG5cblx0XHQvLyBBYm9ydGluZyBpcyBubyBsb25nZXIgYSBjYW5jZWxsYXRpb25cblx0XHRzdHJBYm9ydCA9IFwiYWJvcnRcIjtcblxuXHRcdC8vIEluc3RhbGwgY2FsbGJhY2tzIG9uIGRlZmVycmVkc1xuXHRcdGNvbXBsZXRlRGVmZXJyZWQuYWRkKCBzLmNvbXBsZXRlICk7XG5cdFx0anFYSFIuZG9uZSggcy5zdWNjZXNzICk7XG5cdFx0anFYSFIuZmFpbCggcy5lcnJvciApO1xuXG5cdFx0Ly8gR2V0IHRyYW5zcG9ydFxuXHRcdHRyYW5zcG9ydCA9IGluc3BlY3RQcmVmaWx0ZXJzT3JUcmFuc3BvcnRzKCB0cmFuc3BvcnRzLCBzLCBvcHRpb25zLCBqcVhIUiApO1xuXG5cdFx0Ly8gSWYgbm8gdHJhbnNwb3J0LCB3ZSBhdXRvLWFib3J0XG5cdFx0aWYgKCAhdHJhbnNwb3J0ICkge1xuXHRcdFx0ZG9uZSggLTEsIFwiTm8gVHJhbnNwb3J0XCIgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IDE7XG5cblx0XHRcdC8vIFNlbmQgZ2xvYmFsIGV2ZW50XG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4U2VuZFwiLCBbIGpxWEhSLCBzIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gSWYgcmVxdWVzdCB3YXMgYWJvcnRlZCBpbnNpZGUgYWpheFNlbmQsIHN0b3AgdGhlcmVcblx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRyZXR1cm4ganFYSFI7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRpbWVvdXRcblx0XHRcdGlmICggcy5hc3luYyAmJiBzLnRpbWVvdXQgPiAwICkge1xuXHRcdFx0XHR0aW1lb3V0VGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0anFYSFIuYWJvcnQoIFwidGltZW91dFwiICk7XG5cdFx0XHRcdH0sIHMudGltZW91dCApO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRjb21wbGV0ZWQgPSBmYWxzZTtcblx0XHRcdFx0dHJhbnNwb3J0LnNlbmQoIHJlcXVlc3RIZWFkZXJzLCBkb25lICk7XG5cdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHQvLyBSZXRocm93IHBvc3QtY29tcGxldGlvbiBleGNlcHRpb25zXG5cdFx0XHRcdGlmICggY29tcGxldGVkICkge1xuXHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBQcm9wYWdhdGUgb3RoZXJzIGFzIHJlc3VsdHNcblx0XHRcdFx0ZG9uZSggLTEsIGUgKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBDYWxsYmFjayBmb3Igd2hlbiBldmVyeXRoaW5nIGlzIGRvbmVcblx0XHRmdW5jdGlvbiBkb25lKCBzdGF0dXMsIG5hdGl2ZVN0YXR1c1RleHQsIHJlc3BvbnNlcywgaGVhZGVycyApIHtcblx0XHRcdHZhciBpc1N1Y2Nlc3MsIHN1Y2Nlc3MsIGVycm9yLCByZXNwb25zZSwgbW9kaWZpZWQsXG5cdFx0XHRcdHN0YXR1c1RleHQgPSBuYXRpdmVTdGF0dXNUZXh0O1xuXG5cdFx0XHQvLyBJZ25vcmUgcmVwZWF0IGludm9jYXRpb25zXG5cdFx0XHRpZiAoIGNvbXBsZXRlZCApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjb21wbGV0ZWQgPSB0cnVlO1xuXG5cdFx0XHQvLyBDbGVhciB0aW1lb3V0IGlmIGl0IGV4aXN0c1xuXHRcdFx0aWYgKCB0aW1lb3V0VGltZXIgKSB7XG5cdFx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQoIHRpbWVvdXRUaW1lciApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBEZXJlZmVyZW5jZSB0cmFuc3BvcnQgZm9yIGVhcmx5IGdhcmJhZ2UgY29sbGVjdGlvblxuXHRcdFx0Ly8gKG5vIG1hdHRlciBob3cgbG9uZyB0aGUganFYSFIgb2JqZWN0IHdpbGwgYmUgdXNlZClcblx0XHRcdHRyYW5zcG9ydCA9IHVuZGVmaW5lZDtcblxuXHRcdFx0Ly8gQ2FjaGUgcmVzcG9uc2UgaGVhZGVyc1xuXHRcdFx0cmVzcG9uc2VIZWFkZXJzU3RyaW5nID0gaGVhZGVycyB8fCBcIlwiO1xuXG5cdFx0XHQvLyBTZXQgcmVhZHlTdGF0ZVxuXHRcdFx0anFYSFIucmVhZHlTdGF0ZSA9IHN0YXR1cyA+IDAgPyA0IDogMDtcblxuXHRcdFx0Ly8gRGV0ZXJtaW5lIGlmIHN1Y2Nlc3NmdWxcblx0XHRcdGlzU3VjY2VzcyA9IHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwIHx8IHN0YXR1cyA9PT0gMzA0O1xuXG5cdFx0XHQvLyBHZXQgcmVzcG9uc2UgZGF0YVxuXHRcdFx0aWYgKCByZXNwb25zZXMgKSB7XG5cdFx0XHRcdHJlc3BvbnNlID0gYWpheEhhbmRsZVJlc3BvbnNlcyggcywganFYSFIsIHJlc3BvbnNlcyApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBDb252ZXJ0IG5vIG1hdHRlciB3aGF0ICh0aGF0IHdheSByZXNwb25zZVhYWCBmaWVsZHMgYXJlIGFsd2F5cyBzZXQpXG5cdFx0XHRyZXNwb25zZSA9IGFqYXhDb252ZXJ0KCBzLCByZXNwb25zZSwganFYSFIsIGlzU3VjY2VzcyApO1xuXG5cdFx0XHQvLyBJZiBzdWNjZXNzZnVsLCBoYW5kbGUgdHlwZSBjaGFpbmluZ1xuXHRcdFx0aWYgKCBpc1N1Y2Nlc3MgKSB7XG5cblx0XHRcdFx0Ly8gU2V0IHRoZSBJZi1Nb2RpZmllZC1TaW5jZSBhbmQvb3IgSWYtTm9uZS1NYXRjaCBoZWFkZXIsIGlmIGluIGlmTW9kaWZpZWQgbW9kZS5cblx0XHRcdFx0aWYgKCBzLmlmTW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0bW9kaWZpZWQgPSBqcVhIUi5nZXRSZXNwb25zZUhlYWRlciggXCJMYXN0LU1vZGlmaWVkXCIgKTtcblx0XHRcdFx0XHRpZiAoIG1vZGlmaWVkICkge1xuXHRcdFx0XHRcdFx0alF1ZXJ5Lmxhc3RNb2RpZmllZFsgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRtb2RpZmllZCA9IGpxWEhSLmdldFJlc3BvbnNlSGVhZGVyKCBcImV0YWdcIiApO1xuXHRcdFx0XHRcdGlmICggbW9kaWZpZWQgKSB7XG5cdFx0XHRcdFx0XHRqUXVlcnkuZXRhZ1sgY2FjaGVVUkwgXSA9IG1vZGlmaWVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGlmIG5vIGNvbnRlbnRcblx0XHRcdFx0aWYgKCBzdGF0dXMgPT09IDIwNCB8fCBzLnR5cGUgPT09IFwiSEVBRFwiICkge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSBcIm5vY29udGVudFwiO1xuXG5cdFx0XHRcdC8vIGlmIG5vdCBtb2RpZmllZFxuXHRcdFx0XHR9IGVsc2UgaWYgKCBzdGF0dXMgPT09IDMwNCApIHtcblx0XHRcdFx0XHRzdGF0dXNUZXh0ID0gXCJub3Rtb2RpZmllZFwiO1xuXG5cdFx0XHRcdC8vIElmIHdlIGhhdmUgZGF0YSwgbGV0J3MgY29udmVydCBpdFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0ZTtcblx0XHRcdFx0XHRzdWNjZXNzID0gcmVzcG9uc2UuZGF0YTtcblx0XHRcdFx0XHRlcnJvciA9IHJlc3BvbnNlLmVycm9yO1xuXHRcdFx0XHRcdGlzU3VjY2VzcyA9ICFlcnJvcjtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblxuXHRcdFx0XHQvLyBFeHRyYWN0IGVycm9yIGZyb20gc3RhdHVzVGV4dCBhbmQgbm9ybWFsaXplIGZvciBub24tYWJvcnRzXG5cdFx0XHRcdGVycm9yID0gc3RhdHVzVGV4dDtcblx0XHRcdFx0aWYgKCBzdGF0dXMgfHwgIXN0YXR1c1RleHQgKSB7XG5cdFx0XHRcdFx0c3RhdHVzVGV4dCA9IFwiZXJyb3JcIjtcblx0XHRcdFx0XHRpZiAoIHN0YXR1cyA8IDAgKSB7XG5cdFx0XHRcdFx0XHRzdGF0dXMgPSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBTZXQgZGF0YSBmb3IgdGhlIGZha2UgeGhyIG9iamVjdFxuXHRcdFx0anFYSFIuc3RhdHVzID0gc3RhdHVzO1xuXHRcdFx0anFYSFIuc3RhdHVzVGV4dCA9ICggbmF0aXZlU3RhdHVzVGV4dCB8fCBzdGF0dXNUZXh0ICkgKyBcIlwiO1xuXG5cdFx0XHQvLyBTdWNjZXNzL0Vycm9yXG5cdFx0XHRpZiAoIGlzU3VjY2VzcyApIHtcblx0XHRcdFx0ZGVmZXJyZWQucmVzb2x2ZVdpdGgoIGNhbGxiYWNrQ29udGV4dCwgWyBzdWNjZXNzLCBzdGF0dXNUZXh0LCBqcVhIUiBdICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRkZWZlcnJlZC5yZWplY3RXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQsIGVycm9yIF0gKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU3RhdHVzLWRlcGVuZGVudCBjYWxsYmFja3Ncblx0XHRcdGpxWEhSLnN0YXR1c0NvZGUoIHN0YXR1c0NvZGUgKTtcblx0XHRcdHN0YXR1c0NvZGUgPSB1bmRlZmluZWQ7XG5cblx0XHRcdGlmICggZmlyZUdsb2JhbHMgKSB7XG5cdFx0XHRcdGdsb2JhbEV2ZW50Q29udGV4dC50cmlnZ2VyKCBpc1N1Y2Nlc3MgPyBcImFqYXhTdWNjZXNzXCIgOiBcImFqYXhFcnJvclwiLFxuXHRcdFx0XHRcdFsganFYSFIsIHMsIGlzU3VjY2VzcyA/IHN1Y2Nlc3MgOiBlcnJvciBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIENvbXBsZXRlXG5cdFx0XHRjb21wbGV0ZURlZmVycmVkLmZpcmVXaXRoKCBjYWxsYmFja0NvbnRleHQsIFsganFYSFIsIHN0YXR1c1RleHQgXSApO1xuXG5cdFx0XHRpZiAoIGZpcmVHbG9iYWxzICkge1xuXHRcdFx0XHRnbG9iYWxFdmVudENvbnRleHQudHJpZ2dlciggXCJhamF4Q29tcGxldGVcIiwgWyBqcVhIUiwgcyBdICk7XG5cblx0XHRcdFx0Ly8gSGFuZGxlIHRoZSBnbG9iYWwgQUpBWCBjb3VudGVyXG5cdFx0XHRcdGlmICggISggLS1qUXVlcnkuYWN0aXZlICkgKSB7XG5cdFx0XHRcdFx0alF1ZXJ5LmV2ZW50LnRyaWdnZXIoIFwiYWpheFN0b3BcIiApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGpxWEhSO1xuXHR9LFxuXG5cdGdldEpTT046IGZ1bmN0aW9uKCB1cmwsIGRhdGEsIGNhbGxiYWNrICkge1xuXHRcdHJldHVybiBqUXVlcnkuZ2V0KCB1cmwsIGRhdGEsIGNhbGxiYWNrLCBcImpzb25cIiApO1xuXHR9LFxuXG5cdGdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwgY2FsbGJhY2sgKSB7XG5cdFx0cmV0dXJuIGpRdWVyeS5nZXQoIHVybCwgdW5kZWZpbmVkLCBjYWxsYmFjaywgXCJzY3JpcHRcIiApO1xuXHR9XG59ICk7XG5cbmpRdWVyeS5lYWNoKCBbIFwiZ2V0XCIsIFwicG9zdFwiIF0sIGZ1bmN0aW9uKCBpLCBtZXRob2QgKSB7XG5cdGpRdWVyeVsgbWV0aG9kIF0gPSBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxsYmFjaywgdHlwZSApIHtcblxuXHRcdC8vIFNoaWZ0IGFyZ3VtZW50cyBpZiBkYXRhIGFyZ3VtZW50IHdhcyBvbWl0dGVkXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBkYXRhICkgKSB7XG5cdFx0XHR0eXBlID0gdHlwZSB8fCBjYWxsYmFjaztcblx0XHRcdGNhbGxiYWNrID0gZGF0YTtcblx0XHRcdGRhdGEgPSB1bmRlZmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gVGhlIHVybCBjYW4gYmUgYW4gb3B0aW9ucyBvYmplY3QgKHdoaWNoIHRoZW4gbXVzdCBoYXZlIC51cmwpXG5cdFx0cmV0dXJuIGpRdWVyeS5hamF4KCBqUXVlcnkuZXh0ZW5kKCB7XG5cdFx0XHR1cmw6IHVybCxcblx0XHRcdHR5cGU6IG1ldGhvZCxcblx0XHRcdGRhdGFUeXBlOiB0eXBlLFxuXHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdHN1Y2Nlc3M6IGNhbGxiYWNrXG5cdFx0fSwgalF1ZXJ5LmlzUGxhaW5PYmplY3QoIHVybCApICYmIHVybCApICk7XG5cdH07XG59ICk7XG5cblxualF1ZXJ5Ll9ldmFsVXJsID0gZnVuY3Rpb24oIHVybCApIHtcblx0cmV0dXJuIGpRdWVyeS5hamF4KCB7XG5cdFx0dXJsOiB1cmwsXG5cblx0XHQvLyBNYWtlIHRoaXMgZXhwbGljaXQsIHNpbmNlIHVzZXIgY2FuIG92ZXJyaWRlIHRoaXMgdGhyb3VnaCBhamF4U2V0dXAgKCMxMTI2NClcblx0XHR0eXBlOiBcIkdFVFwiLFxuXHRcdGRhdGFUeXBlOiBcInNjcmlwdFwiLFxuXHRcdGNhY2hlOiB0cnVlLFxuXHRcdGFzeW5jOiBmYWxzZSxcblx0XHRnbG9iYWw6IGZhbHNlLFxuXHRcdFwidGhyb3dzXCI6IHRydWVcblx0fSApO1xufTtcblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdHdyYXBBbGw6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdHZhciB3cmFwO1xuXG5cdFx0aWYgKCB0aGlzWyAwIF0gKSB7XG5cdFx0XHRpZiAoIGlzRnVuY3Rpb24oIGh0bWwgKSApIHtcblx0XHRcdFx0aHRtbCA9IGh0bWwuY2FsbCggdGhpc1sgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFRoZSBlbGVtZW50cyB0byB3cmFwIHRoZSB0YXJnZXQgYXJvdW5kXG5cdFx0XHR3cmFwID0galF1ZXJ5KCBodG1sLCB0aGlzWyAwIF0ub3duZXJEb2N1bWVudCApLmVxKCAwICkuY2xvbmUoIHRydWUgKTtcblxuXHRcdFx0aWYgKCB0aGlzWyAwIF0ucGFyZW50Tm9kZSApIHtcblx0XHRcdFx0d3JhcC5pbnNlcnRCZWZvcmUoIHRoaXNbIDAgXSApO1xuXHRcdFx0fVxuXG5cdFx0XHR3cmFwLm1hcCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHZhciBlbGVtID0gdGhpcztcblxuXHRcdFx0XHR3aGlsZSAoIGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQgKSB7XG5cdFx0XHRcdFx0ZWxlbSA9IGVsZW0uZmlyc3RFbGVtZW50Q2hpbGQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZWxlbTtcblx0XHRcdH0gKS5hcHBlbmQoIHRoaXMgKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fSxcblxuXHR3cmFwSW5uZXI6IGZ1bmN0aW9uKCBodG1sICkge1xuXHRcdGlmICggaXNGdW5jdGlvbiggaHRtbCApICkge1xuXHRcdFx0cmV0dXJuIHRoaXMuZWFjaCggZnVuY3Rpb24oIGkgKSB7XG5cdFx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBJbm5lciggaHRtbC5jYWxsKCB0aGlzLCBpICkgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdHZhciBzZWxmID0galF1ZXJ5KCB0aGlzICksXG5cdFx0XHRcdGNvbnRlbnRzID0gc2VsZi5jb250ZW50cygpO1xuXG5cdFx0XHRpZiAoIGNvbnRlbnRzLmxlbmd0aCApIHtcblx0XHRcdFx0Y29udGVudHMud3JhcEFsbCggaHRtbCApO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZWxmLmFwcGVuZCggaHRtbCApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSxcblxuXHR3cmFwOiBmdW5jdGlvbiggaHRtbCApIHtcblx0XHR2YXIgaHRtbElzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uKCBodG1sICk7XG5cblx0XHRyZXR1cm4gdGhpcy5lYWNoKCBmdW5jdGlvbiggaSApIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLndyYXBBbGwoIGh0bWxJc0Z1bmN0aW9uID8gaHRtbC5jYWxsKCB0aGlzLCBpICkgOiBodG1sICk7XG5cdFx0fSApO1xuXHR9LFxuXG5cdHVud3JhcDogZnVuY3Rpb24oIHNlbGVjdG9yICkge1xuXHRcdHRoaXMucGFyZW50KCBzZWxlY3RvciApLm5vdCggXCJib2R5XCIgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdGpRdWVyeSggdGhpcyApLnJlcGxhY2VXaXRoKCB0aGlzLmNoaWxkTm9kZXMgKTtcblx0XHR9ICk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn0gKTtcblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmhpZGRlbiA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gIWpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSggZWxlbSApO1xufTtcbmpRdWVyeS5leHByLnBzZXVkb3MudmlzaWJsZSA9IGZ1bmN0aW9uKCBlbGVtICkge1xuXHRyZXR1cm4gISEoIGVsZW0ub2Zmc2V0V2lkdGggfHwgZWxlbS5vZmZzZXRIZWlnaHQgfHwgZWxlbS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCApO1xufTtcblxuXG5cblxualF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIgPSBmdW5jdGlvbigpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVzdCgpO1xuXHR9IGNhdGNoICggZSApIHt9XG59O1xuXG52YXIgeGhyU3VjY2Vzc1N0YXR1cyA9IHtcblxuXHRcdC8vIEZpbGUgcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgY29kZSAwLCBhc3N1bWUgMjAwXG5cdFx0MDogMjAwLFxuXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHQvLyAjMTQ1MDogc29tZXRpbWVzIElFIHJldHVybnMgMTIyMyB3aGVuIGl0IHNob3VsZCBiZSAyMDRcblx0XHQxMjIzOiAyMDRcblx0fSxcblx0eGhyU3VwcG9ydGVkID0galF1ZXJ5LmFqYXhTZXR0aW5ncy54aHIoKTtcblxuc3VwcG9ydC5jb3JzID0gISF4aHJTdXBwb3J0ZWQgJiYgKCBcIndpdGhDcmVkZW50aWFsc1wiIGluIHhoclN1cHBvcnRlZCApO1xuc3VwcG9ydC5hamF4ID0geGhyU3VwcG9ydGVkID0gISF4aHJTdXBwb3J0ZWQ7XG5cbmpRdWVyeS5hamF4VHJhbnNwb3J0KCBmdW5jdGlvbiggb3B0aW9ucyApIHtcblx0dmFyIGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrO1xuXG5cdC8vIENyb3NzIGRvbWFpbiBvbmx5IGFsbG93ZWQgaWYgc3VwcG9ydGVkIHRocm91Z2ggWE1MSHR0cFJlcXVlc3Rcblx0aWYgKCBzdXBwb3J0LmNvcnMgfHwgeGhyU3VwcG9ydGVkICYmICFvcHRpb25zLmNyb3NzRG9tYWluICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzZW5kOiBmdW5jdGlvbiggaGVhZGVycywgY29tcGxldGUgKSB7XG5cdFx0XHRcdHZhciBpLFxuXHRcdFx0XHRcdHhociA9IG9wdGlvbnMueGhyKCk7XG5cblx0XHRcdFx0eGhyLm9wZW4oXG5cdFx0XHRcdFx0b3B0aW9ucy50eXBlLFxuXHRcdFx0XHRcdG9wdGlvbnMudXJsLFxuXHRcdFx0XHRcdG9wdGlvbnMuYXN5bmMsXG5cdFx0XHRcdFx0b3B0aW9ucy51c2VybmFtZSxcblx0XHRcdFx0XHRvcHRpb25zLnBhc3N3b3JkXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gQXBwbHkgY3VzdG9tIGZpZWxkcyBpZiBwcm92aWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMueGhyRmllbGRzICkge1xuXHRcdFx0XHRcdGZvciAoIGkgaW4gb3B0aW9ucy54aHJGaWVsZHMgKSB7XG5cdFx0XHRcdFx0XHR4aHJbIGkgXSA9IG9wdGlvbnMueGhyRmllbGRzWyBpIF07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gT3ZlcnJpZGUgbWltZSB0eXBlIGlmIG5lZWRlZFxuXHRcdFx0XHRpZiAoIG9wdGlvbnMubWltZVR5cGUgJiYgeGhyLm92ZXJyaWRlTWltZVR5cGUgKSB7XG5cdFx0XHRcdFx0eGhyLm92ZXJyaWRlTWltZVR5cGUoIG9wdGlvbnMubWltZVR5cGUgKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIFgtUmVxdWVzdGVkLVdpdGggaGVhZGVyXG5cdFx0XHRcdC8vIEZvciBjcm9zcy1kb21haW4gcmVxdWVzdHMsIHNlZWluZyBhcyBjb25kaXRpb25zIGZvciBhIHByZWZsaWdodCBhcmVcblx0XHRcdFx0Ly8gYWtpbiB0byBhIGppZ3NhdyBwdXp6bGUsIHdlIHNpbXBseSBuZXZlciBzZXQgaXQgdG8gYmUgc3VyZS5cblx0XHRcdFx0Ly8gKGl0IGNhbiBhbHdheXMgYmUgc2V0IG9uIGEgcGVyLXJlcXVlc3QgYmFzaXMgb3IgZXZlbiB1c2luZyBhamF4U2V0dXApXG5cdFx0XHRcdC8vIEZvciBzYW1lLWRvbWFpbiByZXF1ZXN0cywgd29uJ3QgY2hhbmdlIGhlYWRlciBpZiBhbHJlYWR5IHByb3ZpZGVkLlxuXHRcdFx0XHRpZiAoICFvcHRpb25zLmNyb3NzRG9tYWluICYmICFoZWFkZXJzWyBcIlgtUmVxdWVzdGVkLVdpdGhcIiBdICkge1xuXHRcdFx0XHRcdGhlYWRlcnNbIFwiWC1SZXF1ZXN0ZWQtV2l0aFwiIF0gPSBcIlhNTEh0dHBSZXF1ZXN0XCI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBTZXQgaGVhZGVyc1xuXHRcdFx0XHRmb3IgKCBpIGluIGhlYWRlcnMgKSB7XG5cdFx0XHRcdFx0eGhyLnNldFJlcXVlc3RIZWFkZXIoIGksIGhlYWRlcnNbIGkgXSApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gQ2FsbGJhY2tcblx0XHRcdFx0Y2FsbGJhY2sgPSBmdW5jdGlvbiggdHlwZSApIHtcblx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRjYWxsYmFjayA9IGVycm9yQ2FsbGJhY2sgPSB4aHIub25sb2FkID1cblx0XHRcdFx0XHRcdFx0XHR4aHIub25lcnJvciA9IHhoci5vbmFib3J0ID0geGhyLm9udGltZW91dCA9XG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIHR5cGUgPT09IFwiYWJvcnRcIiApIHtcblx0XHRcdFx0XHRcdFx0XHR4aHIuYWJvcnQoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICggdHlwZSA9PT0gXCJlcnJvclwiICkge1xuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHRcdFx0XHQvLyBPbiBhIG1hbnVhbCBuYXRpdmUgYWJvcnQsIElFOSB0aHJvd3Ncblx0XHRcdFx0XHRcdFx0XHQvLyBlcnJvcnMgb24gYW55IHByb3BlcnR5IGFjY2VzcyB0aGF0IGlzIG5vdCByZWFkeVN0YXRlXG5cdFx0XHRcdFx0XHRcdFx0aWYgKCB0eXBlb2YgeGhyLnN0YXR1cyAhPT0gXCJudW1iZXJcIiApIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKCAwLCBcImVycm9yXCIgKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29tcGxldGUoXG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gRmlsZTogcHJvdG9jb2wgYWx3YXlzIHlpZWxkcyBzdGF0dXMgMDsgc2VlICM4NjA1LCAjMTQyMDdcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1cyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eGhyLnN0YXR1c1RleHRcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbXBsZXRlKFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyU3VjY2Vzc1N0YXR1c1sgeGhyLnN0YXR1cyBdIHx8IHhoci5zdGF0dXMsXG5cdFx0XHRcdFx0XHRcdFx0XHR4aHIuc3RhdHVzVGV4dCxcblxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gU3VwcG9ydDogSUUgPD05IG9ubHlcblx0XHRcdFx0XHRcdFx0XHRcdC8vIElFOSBoYXMgbm8gWEhSMiBidXQgdGhyb3dzIG9uIGJpbmFyeSAodHJhYy0xMTQyNilcblx0XHRcdFx0XHRcdFx0XHRcdC8vIEZvciBYSFIyIG5vbi10ZXh0LCBsZXQgdGhlIGNhbGxlciBoYW5kbGUgaXQgKGdoLTI0OTgpXG5cdFx0XHRcdFx0XHRcdFx0XHQoIHhoci5yZXNwb25zZVR5cGUgfHwgXCJ0ZXh0XCIgKSAhPT0gXCJ0ZXh0XCIgIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCAhPT0gXCJzdHJpbmdcIiA/XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgYmluYXJ5OiB4aHIucmVzcG9uc2UgfSA6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHsgdGV4dDogeGhyLnJlc3BvbnNlVGV4dCB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0eGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0Ly8gTGlzdGVuIHRvIGV2ZW50c1xuXHRcdFx0XHR4aHIub25sb2FkID0gY2FsbGJhY2soKTtcblx0XHRcdFx0ZXJyb3JDYWxsYmFjayA9IHhoci5vbmVycm9yID0geGhyLm9udGltZW91dCA9IGNhbGxiYWNrKCBcImVycm9yXCIgKTtcblxuXHRcdFx0XHQvLyBTdXBwb3J0OiBJRSA5IG9ubHlcblx0XHRcdFx0Ly8gVXNlIG9ucmVhZHlzdGF0ZWNoYW5nZSB0byByZXBsYWNlIG9uYWJvcnRcblx0XHRcdFx0Ly8gdG8gaGFuZGxlIHVuY2F1Z2h0IGFib3J0c1xuXHRcdFx0XHRpZiAoIHhoci5vbmFib3J0ICE9PSB1bmRlZmluZWQgKSB7XG5cdFx0XHRcdFx0eGhyLm9uYWJvcnQgPSBlcnJvckNhbGxiYWNrO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcblxuXHRcdFx0XHRcdFx0Ly8gQ2hlY2sgcmVhZHlTdGF0ZSBiZWZvcmUgdGltZW91dCBhcyBpdCBjaGFuZ2VzXG5cdFx0XHRcdFx0XHRpZiAoIHhoci5yZWFkeVN0YXRlID09PSA0ICkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIEFsbG93IG9uZXJyb3IgdG8gYmUgY2FsbGVkIGZpcnN0LFxuXHRcdFx0XHRcdFx0XHQvLyBidXQgdGhhdCB3aWxsIG5vdCBoYW5kbGUgYSBuYXRpdmUgYWJvcnRcblx0XHRcdFx0XHRcdFx0Ly8gQWxzbywgc2F2ZSBlcnJvckNhbGxiYWNrIHRvIGEgdmFyaWFibGVcblx0XHRcdFx0XHRcdFx0Ly8gYXMgeGhyLm9uZXJyb3IgY2Fubm90IGJlIGFjY2Vzc2VkXG5cdFx0XHRcdFx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3JDYWxsYmFjaygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIGFib3J0IGNhbGxiYWNrXG5cdFx0XHRcdGNhbGxiYWNrID0gY2FsbGJhY2soIFwiYWJvcnRcIiApO1xuXG5cdFx0XHRcdHRyeSB7XG5cblx0XHRcdFx0XHQvLyBEbyBzZW5kIHRoZSByZXF1ZXN0ICh0aGlzIG1heSByYWlzZSBhbiBleGNlcHRpb24pXG5cdFx0XHRcdFx0eGhyLnNlbmQoIG9wdGlvbnMuaGFzQ29udGVudCAmJiBvcHRpb25zLmRhdGEgfHwgbnVsbCApO1xuXHRcdFx0XHR9IGNhdGNoICggZSApIHtcblxuXHRcdFx0XHRcdC8vICMxNDY4MzogT25seSByZXRocm93IGlmIHRoaXMgaGFzbid0IGJlZW4gbm90aWZpZWQgYXMgYW4gZXJyb3IgeWV0XG5cdFx0XHRcdFx0aWYgKCBjYWxsYmFjayApIHtcblx0XHRcdFx0XHRcdHRocm93IGU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cdFx0XHRhYm9ydDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGlmICggY2FsbGJhY2sgKSB7XG5cdFx0XHRcdFx0Y2FsbGJhY2soKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gUHJldmVudCBhdXRvLWV4ZWN1dGlvbiBvZiBzY3JpcHRzIHdoZW4gbm8gZXhwbGljaXQgZGF0YVR5cGUgd2FzIHByb3ZpZGVkIChTZWUgZ2gtMjQzMilcbmpRdWVyeS5hamF4UHJlZmlsdGVyKCBmdW5jdGlvbiggcyApIHtcblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMuY29udGVudHMuc2NyaXB0ID0gZmFsc2U7XG5cdH1cbn0gKTtcblxuLy8gSW5zdGFsbCBzY3JpcHQgZGF0YVR5cGVcbmpRdWVyeS5hamF4U2V0dXAoIHtcblx0YWNjZXB0czoge1xuXHRcdHNjcmlwdDogXCJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIFwiICtcblx0XHRcdFwiYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0XCJcblx0fSxcblx0Y29udGVudHM6IHtcblx0XHRzY3JpcHQ6IC9cXGIoPzpqYXZhfGVjbWEpc2NyaXB0XFxiL1xuXHR9LFxuXHRjb252ZXJ0ZXJzOiB7XG5cdFx0XCJ0ZXh0IHNjcmlwdFwiOiBmdW5jdGlvbiggdGV4dCApIHtcblx0XHRcdGpRdWVyeS5nbG9iYWxFdmFsKCB0ZXh0ICk7XG5cdFx0XHRyZXR1cm4gdGV4dDtcblx0XHR9XG5cdH1cbn0gKTtcblxuLy8gSGFuZGxlIGNhY2hlJ3Mgc3BlY2lhbCBjYXNlIGFuZCBjcm9zc0RvbWFpblxualF1ZXJ5LmFqYXhQcmVmaWx0ZXIoIFwic2NyaXB0XCIsIGZ1bmN0aW9uKCBzICkge1xuXHRpZiAoIHMuY2FjaGUgPT09IHVuZGVmaW5lZCApIHtcblx0XHRzLmNhY2hlID0gZmFsc2U7XG5cdH1cblx0aWYgKCBzLmNyb3NzRG9tYWluICkge1xuXHRcdHMudHlwZSA9IFwiR0VUXCI7XG5cdH1cbn0gKTtcblxuLy8gQmluZCBzY3JpcHQgdGFnIGhhY2sgdHJhbnNwb3J0XG5qUXVlcnkuYWpheFRyYW5zcG9ydCggXCJzY3JpcHRcIiwgZnVuY3Rpb24oIHMgKSB7XG5cblx0Ly8gVGhpcyB0cmFuc3BvcnQgb25seSBkZWFscyB3aXRoIGNyb3NzIGRvbWFpbiByZXF1ZXN0c1xuXHRpZiAoIHMuY3Jvc3NEb21haW4gKSB7XG5cdFx0dmFyIHNjcmlwdCwgY2FsbGJhY2s7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHNlbmQ6IGZ1bmN0aW9uKCBfLCBjb21wbGV0ZSApIHtcblx0XHRcdFx0c2NyaXB0ID0galF1ZXJ5KCBcIjxzY3JpcHQ+XCIgKS5wcm9wKCB7XG5cdFx0XHRcdFx0Y2hhcnNldDogcy5zY3JpcHRDaGFyc2V0LFxuXHRcdFx0XHRcdHNyYzogcy51cmxcblx0XHRcdFx0fSApLm9uKFxuXHRcdFx0XHRcdFwibG9hZCBlcnJvclwiLFxuXHRcdFx0XHRcdGNhbGxiYWNrID0gZnVuY3Rpb24oIGV2dCApIHtcblx0XHRcdFx0XHRcdHNjcmlwdC5yZW1vdmUoKTtcblx0XHRcdFx0XHRcdGNhbGxiYWNrID0gbnVsbDtcblx0XHRcdFx0XHRcdGlmICggZXZ0ICkge1xuXHRcdFx0XHRcdFx0XHRjb21wbGV0ZSggZXZ0LnR5cGUgPT09IFwiZXJyb3JcIiA/IDQwNCA6IDIwMCwgZXZ0LnR5cGUgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0Ly8gVXNlIG5hdGl2ZSBET00gbWFuaXB1bGF0aW9uIHRvIGF2b2lkIG91ciBkb21NYW5pcCBBSkFYIHRyaWNrZXJ5XG5cdFx0XHRcdGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoIHNjcmlwdFsgMCBdICk7XG5cdFx0XHR9LFxuXHRcdFx0YWJvcnQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIGNhbGxiYWNrICkge1xuXHRcdFx0XHRcdGNhbGxiYWNrKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHR9XG59ICk7XG5cblxuXG5cbnZhciBvbGRDYWxsYmFja3MgPSBbXSxcblx0cmpzb25wID0gLyg9KVxcPyg/PSZ8JCl8XFw/XFw/LztcblxuLy8gRGVmYXVsdCBqc29ucCBzZXR0aW5nc1xualF1ZXJ5LmFqYXhTZXR1cCgge1xuXHRqc29ucDogXCJjYWxsYmFja1wiLFxuXHRqc29ucENhbGxiYWNrOiBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2FsbGJhY2sgPSBvbGRDYWxsYmFja3MucG9wKCkgfHwgKCBqUXVlcnkuZXhwYW5kbyArIFwiX1wiICsgKCBub25jZSsrICkgKTtcblx0XHR0aGlzWyBjYWxsYmFjayBdID0gdHJ1ZTtcblx0XHRyZXR1cm4gY2FsbGJhY2s7XG5cdH1cbn0gKTtcblxuLy8gRGV0ZWN0LCBub3JtYWxpemUgb3B0aW9ucyBhbmQgaW5zdGFsbCBjYWxsYmFja3MgZm9yIGpzb25wIHJlcXVlc3RzXG5qUXVlcnkuYWpheFByZWZpbHRlciggXCJqc29uIGpzb25wXCIsIGZ1bmN0aW9uKCBzLCBvcmlnaW5hbFNldHRpbmdzLCBqcVhIUiApIHtcblxuXHR2YXIgY2FsbGJhY2tOYW1lLCBvdmVyd3JpdHRlbiwgcmVzcG9uc2VDb250YWluZXIsXG5cdFx0anNvblByb3AgPSBzLmpzb25wICE9PSBmYWxzZSAmJiAoIHJqc29ucC50ZXN0KCBzLnVybCApID9cblx0XHRcdFwidXJsXCIgOlxuXHRcdFx0dHlwZW9mIHMuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuXHRcdFx0XHQoIHMuY29udGVudFR5cGUgfHwgXCJcIiApXG5cdFx0XHRcdFx0LmluZGV4T2YoIFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIgKSA9PT0gMCAmJlxuXHRcdFx0XHRyanNvbnAudGVzdCggcy5kYXRhICkgJiYgXCJkYXRhXCJcblx0XHQpO1xuXG5cdC8vIEhhbmRsZSBpZmYgdGhlIGV4cGVjdGVkIGRhdGEgdHlwZSBpcyBcImpzb25wXCIgb3Igd2UgaGF2ZSBhIHBhcmFtZXRlciB0byBzZXRcblx0aWYgKCBqc29uUHJvcCB8fCBzLmRhdGFUeXBlc1sgMCBdID09PSBcImpzb25wXCIgKSB7XG5cblx0XHQvLyBHZXQgY2FsbGJhY2sgbmFtZSwgcmVtZW1iZXJpbmcgcHJlZXhpc3RpbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGl0XG5cdFx0Y2FsbGJhY2tOYW1lID0gcy5qc29ucENhbGxiYWNrID0gaXNGdW5jdGlvbiggcy5qc29ucENhbGxiYWNrICkgP1xuXHRcdFx0cy5qc29ucENhbGxiYWNrKCkgOlxuXHRcdFx0cy5qc29ucENhbGxiYWNrO1xuXG5cdFx0Ly8gSW5zZXJ0IGNhbGxiYWNrIGludG8gdXJsIG9yIGZvcm0gZGF0YVxuXHRcdGlmICgganNvblByb3AgKSB7XG5cdFx0XHRzWyBqc29uUHJvcCBdID0gc1sganNvblByb3AgXS5yZXBsYWNlKCByanNvbnAsIFwiJDFcIiArIGNhbGxiYWNrTmFtZSApO1xuXHRcdH0gZWxzZSBpZiAoIHMuanNvbnAgIT09IGZhbHNlICkge1xuXHRcdFx0cy51cmwgKz0gKCBycXVlcnkudGVzdCggcy51cmwgKSA/IFwiJlwiIDogXCI/XCIgKSArIHMuanNvbnAgKyBcIj1cIiArIGNhbGxiYWNrTmFtZTtcblx0XHR9XG5cblx0XHQvLyBVc2UgZGF0YSBjb252ZXJ0ZXIgdG8gcmV0cmlldmUganNvbiBhZnRlciBzY3JpcHQgZXhlY3V0aW9uXG5cdFx0cy5jb252ZXJ0ZXJzWyBcInNjcmlwdCBqc29uXCIgXSA9IGZ1bmN0aW9uKCkge1xuXHRcdFx0aWYgKCAhcmVzcG9uc2VDb250YWluZXIgKSB7XG5cdFx0XHRcdGpRdWVyeS5lcnJvciggY2FsbGJhY2tOYW1lICsgXCIgd2FzIG5vdCBjYWxsZWRcIiApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3BvbnNlQ29udGFpbmVyWyAwIF07XG5cdFx0fTtcblxuXHRcdC8vIEZvcmNlIGpzb24gZGF0YVR5cGVcblx0XHRzLmRhdGFUeXBlc1sgMCBdID0gXCJqc29uXCI7XG5cblx0XHQvLyBJbnN0YWxsIGNhbGxiYWNrXG5cdFx0b3ZlcndyaXR0ZW4gPSB3aW5kb3dbIGNhbGxiYWNrTmFtZSBdO1xuXHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBmdW5jdGlvbigpIHtcblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gYXJndW1lbnRzO1xuXHRcdH07XG5cblx0XHQvLyBDbGVhbi11cCBmdW5jdGlvbiAoZmlyZXMgYWZ0ZXIgY29udmVydGVycylcblx0XHRqcVhIUi5hbHdheXMoIGZ1bmN0aW9uKCkge1xuXG5cdFx0XHQvLyBJZiBwcmV2aW91cyB2YWx1ZSBkaWRuJ3QgZXhpc3QgLSByZW1vdmUgaXRcblx0XHRcdGlmICggb3ZlcndyaXR0ZW4gPT09IHVuZGVmaW5lZCApIHtcblx0XHRcdFx0alF1ZXJ5KCB3aW5kb3cgKS5yZW1vdmVQcm9wKCBjYWxsYmFja05hbWUgKTtcblxuXHRcdFx0Ly8gT3RoZXJ3aXNlIHJlc3RvcmUgcHJlZXhpc3RpbmcgdmFsdWVcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHdpbmRvd1sgY2FsbGJhY2tOYW1lIF0gPSBvdmVyd3JpdHRlbjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gU2F2ZSBiYWNrIGFzIGZyZWVcblx0XHRcdGlmICggc1sgY2FsbGJhY2tOYW1lIF0gKSB7XG5cblx0XHRcdFx0Ly8gTWFrZSBzdXJlIHRoYXQgcmUtdXNpbmcgdGhlIG9wdGlvbnMgZG9lc24ndCBzY3JldyB0aGluZ3MgYXJvdW5kXG5cdFx0XHRcdHMuanNvbnBDYWxsYmFjayA9IG9yaWdpbmFsU2V0dGluZ3MuanNvbnBDYWxsYmFjaztcblxuXHRcdFx0XHQvLyBTYXZlIHRoZSBjYWxsYmFjayBuYW1lIGZvciBmdXR1cmUgdXNlXG5cdFx0XHRcdG9sZENhbGxiYWNrcy5wdXNoKCBjYWxsYmFja05hbWUgKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gQ2FsbCBpZiBpdCB3YXMgYSBmdW5jdGlvbiBhbmQgd2UgaGF2ZSBhIHJlc3BvbnNlXG5cdFx0XHRpZiAoIHJlc3BvbnNlQ29udGFpbmVyICYmIGlzRnVuY3Rpb24oIG92ZXJ3cml0dGVuICkgKSB7XG5cdFx0XHRcdG92ZXJ3cml0dGVuKCByZXNwb25zZUNvbnRhaW5lclsgMCBdICk7XG5cdFx0XHR9XG5cblx0XHRcdHJlc3BvbnNlQ29udGFpbmVyID0gb3ZlcndyaXR0ZW4gPSB1bmRlZmluZWQ7XG5cdFx0fSApO1xuXG5cdFx0Ly8gRGVsZWdhdGUgdG8gc2NyaXB0XG5cdFx0cmV0dXJuIFwic2NyaXB0XCI7XG5cdH1cbn0gKTtcblxuXG5cblxuLy8gU3VwcG9ydDogU2FmYXJpIDggb25seVxuLy8gSW4gU2FmYXJpIDggZG9jdW1lbnRzIGNyZWF0ZWQgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudFxuLy8gY29sbGFwc2Ugc2libGluZyBmb3JtczogdGhlIHNlY29uZCBvbmUgYmVjb21lcyBhIGNoaWxkIG9mIHRoZSBmaXJzdCBvbmUuXG4vLyBCZWNhdXNlIG9mIHRoYXQsIHRoaXMgc2VjdXJpdHkgbWVhc3VyZSBoYXMgdG8gYmUgZGlzYWJsZWQgaW4gU2FmYXJpIDguXG4vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MzM3XG5zdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCA9ICggZnVuY3Rpb24oKSB7XG5cdHZhciBib2R5ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCBcIlwiICkuYm9keTtcblx0Ym9keS5pbm5lckhUTUwgPSBcIjxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+XCI7XG5cdHJldHVybiBib2R5LmNoaWxkTm9kZXMubGVuZ3RoID09PSAyO1xufSApKCk7XG5cblxuLy8gQXJndW1lbnQgXCJkYXRhXCIgc2hvdWxkIGJlIHN0cmluZyBvZiBodG1sXG4vLyBjb250ZXh0IChvcHRpb25hbCk6IElmIHNwZWNpZmllZCwgdGhlIGZyYWdtZW50IHdpbGwgYmUgY3JlYXRlZCBpbiB0aGlzIGNvbnRleHQsXG4vLyBkZWZhdWx0cyB0byBkb2N1bWVudFxuLy8ga2VlcFNjcmlwdHMgKG9wdGlvbmFsKTogSWYgdHJ1ZSwgd2lsbCBpbmNsdWRlIHNjcmlwdHMgcGFzc2VkIGluIHRoZSBodG1sIHN0cmluZ1xualF1ZXJ5LnBhcnNlSFRNTCA9IGZ1bmN0aW9uKCBkYXRhLCBjb250ZXh0LCBrZWVwU2NyaXB0cyApIHtcblx0aWYgKCB0eXBlb2YgZGF0YSAhPT0gXCJzdHJpbmdcIiApIHtcblx0XHRyZXR1cm4gW107XG5cdH1cblx0aWYgKCB0eXBlb2YgY29udGV4dCA9PT0gXCJib29sZWFuXCIgKSB7XG5cdFx0a2VlcFNjcmlwdHMgPSBjb250ZXh0O1xuXHRcdGNvbnRleHQgPSBmYWxzZTtcblx0fVxuXG5cdHZhciBiYXNlLCBwYXJzZWQsIHNjcmlwdHM7XG5cblx0aWYgKCAhY29udGV4dCApIHtcblxuXHRcdC8vIFN0b3Agc2NyaXB0cyBvciBpbmxpbmUgZXZlbnQgaGFuZGxlcnMgZnJvbSBiZWluZyBleGVjdXRlZCBpbW1lZGlhdGVseVxuXHRcdC8vIGJ5IHVzaW5nIGRvY3VtZW50LmltcGxlbWVudGF0aW9uXG5cdFx0aWYgKCBzdXBwb3J0LmNyZWF0ZUhUTUxEb2N1bWVudCApIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIFwiXCIgKTtcblxuXHRcdFx0Ly8gU2V0IHRoZSBiYXNlIGhyZWYgZm9yIHRoZSBjcmVhdGVkIGRvY3VtZW50XG5cdFx0XHQvLyBzbyBhbnkgcGFyc2VkIGVsZW1lbnRzIHdpdGggVVJMc1xuXHRcdFx0Ly8gYXJlIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIFVSTCAoZ2gtMjk2NSlcblx0XHRcdGJhc2UgPSBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoIFwiYmFzZVwiICk7XG5cdFx0XHRiYXNlLmhyZWYgPSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmO1xuXHRcdFx0Y29udGV4dC5oZWFkLmFwcGVuZENoaWxkKCBiYXNlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnRleHQgPSBkb2N1bWVudDtcblx0XHR9XG5cdH1cblxuXHRwYXJzZWQgPSByc2luZ2xlVGFnLmV4ZWMoIGRhdGEgKTtcblx0c2NyaXB0cyA9ICFrZWVwU2NyaXB0cyAmJiBbXTtcblxuXHQvLyBTaW5nbGUgdGFnXG5cdGlmICggcGFyc2VkICkge1xuXHRcdHJldHVybiBbIGNvbnRleHQuY3JlYXRlRWxlbWVudCggcGFyc2VkWyAxIF0gKSBdO1xuXHR9XG5cblx0cGFyc2VkID0gYnVpbGRGcmFnbWVudCggWyBkYXRhIF0sIGNvbnRleHQsIHNjcmlwdHMgKTtcblxuXHRpZiAoIHNjcmlwdHMgJiYgc2NyaXB0cy5sZW5ndGggKSB7XG5cdFx0alF1ZXJ5KCBzY3JpcHRzICkucmVtb3ZlKCk7XG5cdH1cblxuXHRyZXR1cm4galF1ZXJ5Lm1lcmdlKCBbXSwgcGFyc2VkLmNoaWxkTm9kZXMgKTtcbn07XG5cblxuLyoqXG4gKiBMb2FkIGEgdXJsIGludG8gYSBwYWdlXG4gKi9cbmpRdWVyeS5mbi5sb2FkID0gZnVuY3Rpb24oIHVybCwgcGFyYW1zLCBjYWxsYmFjayApIHtcblx0dmFyIHNlbGVjdG9yLCB0eXBlLCByZXNwb25zZSxcblx0XHRzZWxmID0gdGhpcyxcblx0XHRvZmYgPSB1cmwuaW5kZXhPZiggXCIgXCIgKTtcblxuXHRpZiAoIG9mZiA+IC0xICkge1xuXHRcdHNlbGVjdG9yID0gc3RyaXBBbmRDb2xsYXBzZSggdXJsLnNsaWNlKCBvZmYgKSApO1xuXHRcdHVybCA9IHVybC5zbGljZSggMCwgb2ZmICk7XG5cdH1cblxuXHQvLyBJZiBpdCdzIGEgZnVuY3Rpb25cblx0aWYgKCBpc0Z1bmN0aW9uKCBwYXJhbXMgKSApIHtcblxuXHRcdC8vIFdlIGFzc3VtZSB0aGF0IGl0J3MgdGhlIGNhbGxiYWNrXG5cdFx0Y2FsbGJhY2sgPSBwYXJhbXM7XG5cdFx0cGFyYW1zID0gdW5kZWZpbmVkO1xuXG5cdC8vIE90aGVyd2lzZSwgYnVpbGQgYSBwYXJhbSBzdHJpbmdcblx0fSBlbHNlIGlmICggcGFyYW1zICYmIHR5cGVvZiBwYXJhbXMgPT09IFwib2JqZWN0XCIgKSB7XG5cdFx0dHlwZSA9IFwiUE9TVFwiO1xuXHR9XG5cblx0Ly8gSWYgd2UgaGF2ZSBlbGVtZW50cyB0byBtb2RpZnksIG1ha2UgdGhlIHJlcXVlc3Rcblx0aWYgKCBzZWxmLmxlbmd0aCA+IDAgKSB7XG5cdFx0alF1ZXJ5LmFqYXgoIHtcblx0XHRcdHVybDogdXJsLFxuXG5cdFx0XHQvLyBJZiBcInR5cGVcIiB2YXJpYWJsZSBpcyB1bmRlZmluZWQsIHRoZW4gXCJHRVRcIiBtZXRob2Qgd2lsbCBiZSB1c2VkLlxuXHRcdFx0Ly8gTWFrZSB2YWx1ZSBvZiB0aGlzIGZpZWxkIGV4cGxpY2l0IHNpbmNlXG5cdFx0XHQvLyB1c2VyIGNhbiBvdmVycmlkZSBpdCB0aHJvdWdoIGFqYXhTZXR1cCBtZXRob2Rcblx0XHRcdHR5cGU6IHR5cGUgfHwgXCJHRVRcIixcblx0XHRcdGRhdGFUeXBlOiBcImh0bWxcIixcblx0XHRcdGRhdGE6IHBhcmFtc1xuXHRcdH0gKS5kb25lKCBmdW5jdGlvbiggcmVzcG9uc2VUZXh0ICkge1xuXG5cdFx0XHQvLyBTYXZlIHJlc3BvbnNlIGZvciB1c2UgaW4gY29tcGxldGUgY2FsbGJhY2tcblx0XHRcdHJlc3BvbnNlID0gYXJndW1lbnRzO1xuXG5cdFx0XHRzZWxmLmh0bWwoIHNlbGVjdG9yID9cblxuXHRcdFx0XHQvLyBJZiBhIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQsIGxvY2F0ZSB0aGUgcmlnaHQgZWxlbWVudHMgaW4gYSBkdW1teSBkaXZcblx0XHRcdFx0Ly8gRXhjbHVkZSBzY3JpcHRzIHRvIGF2b2lkIElFICdQZXJtaXNzaW9uIERlbmllZCcgZXJyb3JzXG5cdFx0XHRcdGpRdWVyeSggXCI8ZGl2PlwiICkuYXBwZW5kKCBqUXVlcnkucGFyc2VIVE1MKCByZXNwb25zZVRleHQgKSApLmZpbmQoIHNlbGVjdG9yICkgOlxuXG5cdFx0XHRcdC8vIE90aGVyd2lzZSB1c2UgdGhlIGZ1bGwgcmVzdWx0XG5cdFx0XHRcdHJlc3BvbnNlVGV4dCApO1xuXG5cdFx0Ly8gSWYgdGhlIHJlcXVlc3Qgc3VjY2VlZHMsIHRoaXMgZnVuY3Rpb24gZ2V0cyBcImRhdGFcIiwgXCJzdGF0dXNcIiwgXCJqcVhIUlwiXG5cdFx0Ly8gYnV0IHRoZXkgYXJlIGlnbm9yZWQgYmVjYXVzZSByZXNwb25zZSB3YXMgc2V0IGFib3ZlLlxuXHRcdC8vIElmIGl0IGZhaWxzLCB0aGlzIGZ1bmN0aW9uIGdldHMgXCJqcVhIUlwiLCBcInN0YXR1c1wiLCBcImVycm9yXCJcblx0XHR9ICkuYWx3YXlzKCBjYWxsYmFjayAmJiBmdW5jdGlvbigganFYSFIsIHN0YXR1cyApIHtcblx0XHRcdHNlbGYuZWFjaCggZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGNhbGxiYWNrLmFwcGx5KCB0aGlzLCByZXNwb25zZSB8fCBbIGpxWEhSLnJlc3BvbnNlVGV4dCwgc3RhdHVzLCBqcVhIUiBdICk7XG5cdFx0XHR9ICk7XG5cdFx0fSApO1xuXHR9XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5cblxuXG4vLyBBdHRhY2ggYSBidW5jaCBvZiBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGNvbW1vbiBBSkFYIGV2ZW50c1xualF1ZXJ5LmVhY2goIFtcblx0XCJhamF4U3RhcnRcIixcblx0XCJhamF4U3RvcFwiLFxuXHRcImFqYXhDb21wbGV0ZVwiLFxuXHRcImFqYXhFcnJvclwiLFxuXHRcImFqYXhTdWNjZXNzXCIsXG5cdFwiYWpheFNlbmRcIlxuXSwgZnVuY3Rpb24oIGksIHR5cGUgKSB7XG5cdGpRdWVyeS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiB0aGlzLm9uKCB0eXBlLCBmbiApO1xuXHR9O1xufSApO1xuXG5cblxuXG5qUXVlcnkuZXhwci5wc2V1ZG9zLmFuaW1hdGVkID0gZnVuY3Rpb24oIGVsZW0gKSB7XG5cdHJldHVybiBqUXVlcnkuZ3JlcCggalF1ZXJ5LnRpbWVycywgZnVuY3Rpb24oIGZuICkge1xuXHRcdHJldHVybiBlbGVtID09PSBmbi5lbGVtO1xuXHR9ICkubGVuZ3RoO1xufTtcblxuXG5cblxualF1ZXJ5Lm9mZnNldCA9IHtcblx0c2V0T2Zmc2V0OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgaSApIHtcblx0XHR2YXIgY3VyUG9zaXRpb24sIGN1ckxlZnQsIGN1ckNTU1RvcCwgY3VyVG9wLCBjdXJPZmZzZXQsIGN1ckNTU0xlZnQsIGNhbGN1bGF0ZVBvc2l0aW9uLFxuXHRcdFx0cG9zaXRpb24gPSBqUXVlcnkuY3NzKCBlbGVtLCBcInBvc2l0aW9uXCIgKSxcblx0XHRcdGN1ckVsZW0gPSBqUXVlcnkoIGVsZW0gKSxcblx0XHRcdHByb3BzID0ge307XG5cblx0XHQvLyBTZXQgcG9zaXRpb24gZmlyc3QsIGluLWNhc2UgdG9wL2xlZnQgYXJlIHNldCBldmVuIG9uIHN0YXRpYyBlbGVtXG5cdFx0aWYgKCBwb3NpdGlvbiA9PT0gXCJzdGF0aWNcIiApIHtcblx0XHRcdGVsZW0uc3R5bGUucG9zaXRpb24gPSBcInJlbGF0aXZlXCI7XG5cdFx0fVxuXG5cdFx0Y3VyT2Zmc2V0ID0gY3VyRWxlbS5vZmZzZXQoKTtcblx0XHRjdXJDU1NUb3AgPSBqUXVlcnkuY3NzKCBlbGVtLCBcInRvcFwiICk7XG5cdFx0Y3VyQ1NTTGVmdCA9IGpRdWVyeS5jc3MoIGVsZW0sIFwibGVmdFwiICk7XG5cdFx0Y2FsY3VsYXRlUG9zaXRpb24gPSAoIHBvc2l0aW9uID09PSBcImFic29sdXRlXCIgfHwgcG9zaXRpb24gPT09IFwiZml4ZWRcIiApICYmXG5cdFx0XHQoIGN1ckNTU1RvcCArIGN1ckNTU0xlZnQgKS5pbmRleE9mKCBcImF1dG9cIiApID4gLTE7XG5cblx0XHQvLyBOZWVkIHRvIGJlIGFibGUgdG8gY2FsY3VsYXRlIHBvc2l0aW9uIGlmIGVpdGhlclxuXHRcdC8vIHRvcCBvciBsZWZ0IGlzIGF1dG8gYW5kIHBvc2l0aW9uIGlzIGVpdGhlciBhYnNvbHV0ZSBvciBmaXhlZFxuXHRcdGlmICggY2FsY3VsYXRlUG9zaXRpb24gKSB7XG5cdFx0XHRjdXJQb3NpdGlvbiA9IGN1ckVsZW0ucG9zaXRpb24oKTtcblx0XHRcdGN1clRvcCA9IGN1clBvc2l0aW9uLnRvcDtcblx0XHRcdGN1ckxlZnQgPSBjdXJQb3NpdGlvbi5sZWZ0O1xuXG5cdFx0fSBlbHNlIHtcblx0XHRcdGN1clRvcCA9IHBhcnNlRmxvYXQoIGN1ckNTU1RvcCApIHx8IDA7XG5cdFx0XHRjdXJMZWZ0ID0gcGFyc2VGbG9hdCggY3VyQ1NTTGVmdCApIHx8IDA7XG5cdFx0fVxuXG5cdFx0aWYgKCBpc0Z1bmN0aW9uKCBvcHRpb25zICkgKSB7XG5cblx0XHRcdC8vIFVzZSBqUXVlcnkuZXh0ZW5kIGhlcmUgdG8gYWxsb3cgbW9kaWZpY2F0aW9uIG9mIGNvb3JkaW5hdGVzIGFyZ3VtZW50IChnaC0xODQ4KVxuXHRcdFx0b3B0aW9ucyA9IG9wdGlvbnMuY2FsbCggZWxlbSwgaSwgalF1ZXJ5LmV4dGVuZCgge30sIGN1ck9mZnNldCApICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBvcHRpb25zLnRvcCAhPSBudWxsICkge1xuXHRcdFx0cHJvcHMudG9wID0gKCBvcHRpb25zLnRvcCAtIGN1ck9mZnNldC50b3AgKSArIGN1clRvcDtcblx0XHR9XG5cdFx0aWYgKCBvcHRpb25zLmxlZnQgIT0gbnVsbCApIHtcblx0XHRcdHByb3BzLmxlZnQgPSAoIG9wdGlvbnMubGVmdCAtIGN1ck9mZnNldC5sZWZ0ICkgKyBjdXJMZWZ0O1xuXHRcdH1cblxuXHRcdGlmICggXCJ1c2luZ1wiIGluIG9wdGlvbnMgKSB7XG5cdFx0XHRvcHRpb25zLnVzaW5nLmNhbGwoIGVsZW0sIHByb3BzICk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3VyRWxlbS5jc3MoIHByb3BzICk7XG5cdFx0fVxuXHR9XG59O1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0Ly8gb2Zmc2V0KCkgcmVsYXRlcyBhbiBlbGVtZW50J3MgYm9yZGVyIGJveCB0byB0aGUgZG9jdW1lbnQgb3JpZ2luXG5cdG9mZnNldDogZnVuY3Rpb24oIG9wdGlvbnMgKSB7XG5cblx0XHQvLyBQcmVzZXJ2ZSBjaGFpbmluZyBmb3Igc2V0dGVyXG5cdFx0aWYgKCBhcmd1bWVudHMubGVuZ3RoICkge1xuXHRcdFx0cmV0dXJuIG9wdGlvbnMgPT09IHVuZGVmaW5lZCA/XG5cdFx0XHRcdHRoaXMgOlxuXHRcdFx0XHR0aGlzLmVhY2goIGZ1bmN0aW9uKCBpICkge1xuXHRcdFx0XHRcdGpRdWVyeS5vZmZzZXQuc2V0T2Zmc2V0KCB0aGlzLCBvcHRpb25zLCBpICk7XG5cdFx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHR2YXIgcmVjdCwgd2luLFxuXHRcdFx0ZWxlbSA9IHRoaXNbIDAgXTtcblxuXHRcdGlmICggIWVsZW0gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gUmV0dXJuIHplcm9zIGZvciBkaXNjb25uZWN0ZWQgYW5kIGhpZGRlbiAoZGlzcGxheTogbm9uZSkgZWxlbWVudHMgKGdoLTIzMTApXG5cdFx0Ly8gU3VwcG9ydDogSUUgPD0xMSBvbmx5XG5cdFx0Ly8gUnVubmluZyBnZXRCb3VuZGluZ0NsaWVudFJlY3Qgb24gYVxuXHRcdC8vIGRpc2Nvbm5lY3RlZCBub2RlIGluIElFIHRocm93cyBhbiBlcnJvclxuXHRcdGlmICggIWVsZW0uZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggKSB7XG5cdFx0XHRyZXR1cm4geyB0b3A6IDAsIGxlZnQ6IDAgfTtcblx0XHR9XG5cblx0XHQvLyBHZXQgZG9jdW1lbnQtcmVsYXRpdmUgcG9zaXRpb24gYnkgYWRkaW5nIHZpZXdwb3J0IHNjcm9sbCB0byB2aWV3cG9ydC1yZWxhdGl2ZSBnQkNSXG5cdFx0cmVjdCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0d2luID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXHRcdHJldHVybiB7XG5cdFx0XHR0b3A6IHJlY3QudG9wICsgd2luLnBhZ2VZT2Zmc2V0LFxuXHRcdFx0bGVmdDogcmVjdC5sZWZ0ICsgd2luLnBhZ2VYT2Zmc2V0XG5cdFx0fTtcblx0fSxcblxuXHQvLyBwb3NpdGlvbigpIHJlbGF0ZXMgYW4gZWxlbWVudCdzIG1hcmdpbiBib3ggdG8gaXRzIG9mZnNldCBwYXJlbnQncyBwYWRkaW5nIGJveFxuXHQvLyBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZSBiZWhhdmlvciBvZiBDU1MgYWJzb2x1dGUgcG9zaXRpb25pbmdcblx0cG9zaXRpb246IGZ1bmN0aW9uKCkge1xuXHRcdGlmICggIXRoaXNbIDAgXSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR2YXIgb2Zmc2V0UGFyZW50LCBvZmZzZXQsIGRvYyxcblx0XHRcdGVsZW0gPSB0aGlzWyAwIF0sXG5cdFx0XHRwYXJlbnRPZmZzZXQgPSB7IHRvcDogMCwgbGVmdDogMCB9O1xuXG5cdFx0Ly8gcG9zaXRpb246Zml4ZWQgZWxlbWVudHMgYXJlIG9mZnNldCBmcm9tIHRoZSB2aWV3cG9ydCwgd2hpY2ggaXRzZWxmIGFsd2F5cyBoYXMgemVybyBvZmZzZXRcblx0XHRpZiAoIGpRdWVyeS5jc3MoIGVsZW0sIFwicG9zaXRpb25cIiApID09PSBcImZpeGVkXCIgKSB7XG5cblx0XHRcdC8vIEFzc3VtZSBwb3NpdGlvbjpmaXhlZCBpbXBsaWVzIGF2YWlsYWJpbGl0eSBvZiBnZXRCb3VuZGluZ0NsaWVudFJlY3Rcblx0XHRcdG9mZnNldCA9IGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cblx0XHR9IGVsc2Uge1xuXHRcdFx0b2Zmc2V0ID0gdGhpcy5vZmZzZXQoKTtcblxuXHRcdFx0Ly8gQWNjb3VudCBmb3IgdGhlICpyZWFsKiBvZmZzZXQgcGFyZW50LCB3aGljaCBjYW4gYmUgdGhlIGRvY3VtZW50IG9yIGl0cyByb290IGVsZW1lbnRcblx0XHRcdC8vIHdoZW4gYSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudCBpcyBpZGVudGlmaWVkXG5cdFx0XHRkb2MgPSBlbGVtLm93bmVyRG9jdW1lbnQ7XG5cdFx0XHRvZmZzZXRQYXJlbnQgPSBlbGVtLm9mZnNldFBhcmVudCB8fCBkb2MuZG9jdW1lbnRFbGVtZW50O1xuXHRcdFx0d2hpbGUgKCBvZmZzZXRQYXJlbnQgJiZcblx0XHRcdFx0KCBvZmZzZXRQYXJlbnQgPT09IGRvYy5ib2R5IHx8IG9mZnNldFBhcmVudCA9PT0gZG9jLmRvY3VtZW50RWxlbWVudCApICYmXG5cdFx0XHRcdGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJwb3NpdGlvblwiICkgPT09IFwic3RhdGljXCIgKSB7XG5cblx0XHRcdFx0b2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50LnBhcmVudE5vZGU7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIG9mZnNldFBhcmVudCAmJiBvZmZzZXRQYXJlbnQgIT09IGVsZW0gJiYgb2Zmc2V0UGFyZW50Lm5vZGVUeXBlID09PSAxICkge1xuXG5cdFx0XHRcdC8vIEluY29ycG9yYXRlIGJvcmRlcnMgaW50byBpdHMgb2Zmc2V0LCBzaW5jZSB0aGV5IGFyZSBvdXRzaWRlIGl0cyBjb250ZW50IG9yaWdpblxuXHRcdFx0XHRwYXJlbnRPZmZzZXQgPSBqUXVlcnkoIG9mZnNldFBhcmVudCApLm9mZnNldCgpO1xuXHRcdFx0XHRwYXJlbnRPZmZzZXQudG9wICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJUb3BXaWR0aFwiLCB0cnVlICk7XG5cdFx0XHRcdHBhcmVudE9mZnNldC5sZWZ0ICs9IGpRdWVyeS5jc3MoIG9mZnNldFBhcmVudCwgXCJib3JkZXJMZWZ0V2lkdGhcIiwgdHJ1ZSApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIFN1YnRyYWN0IHBhcmVudCBvZmZzZXRzIGFuZCBlbGVtZW50IG1hcmdpbnNcblx0XHRyZXR1cm4ge1xuXHRcdFx0dG9wOiBvZmZzZXQudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGpRdWVyeS5jc3MoIGVsZW0sIFwibWFyZ2luVG9wXCIsIHRydWUgKSxcblx0XHRcdGxlZnQ6IG9mZnNldC5sZWZ0IC0gcGFyZW50T2Zmc2V0LmxlZnQgLSBqUXVlcnkuY3NzKCBlbGVtLCBcIm1hcmdpbkxlZnRcIiwgdHJ1ZSApXG5cdFx0fTtcblx0fSxcblxuXHQvLyBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBkb2N1bWVudEVsZW1lbnQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczpcblx0Ly8gMSkgRm9yIHRoZSBlbGVtZW50IGluc2lkZSB0aGUgaWZyYW1lIHdpdGhvdXQgb2Zmc2V0UGFyZW50LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVyblxuXHQvLyAgICBkb2N1bWVudEVsZW1lbnQgb2YgdGhlIHBhcmVudCB3aW5kb3dcblx0Ly8gMikgRm9yIHRoZSBoaWRkZW4gb3IgZGV0YWNoZWQgZWxlbWVudFxuXHQvLyAzKSBGb3IgYm9keSBvciBodG1sIGVsZW1lbnQsIGkuZS4gaW4gY2FzZSBvZiB0aGUgaHRtbCBub2RlIC0gaXQgd2lsbCByZXR1cm4gaXRzZWxmXG5cdC8vXG5cdC8vIGJ1dCB0aG9zZSBleGNlcHRpb25zIHdlcmUgbmV2ZXIgcHJlc2VudGVkIGFzIGEgcmVhbCBsaWZlIHVzZS1jYXNlc1xuXHQvLyBhbmQgbWlnaHQgYmUgY29uc2lkZXJlZCBhcyBtb3JlIHByZWZlcmFibGUgcmVzdWx0cy5cblx0Ly9cblx0Ly8gVGhpcyBsb2dpYywgaG93ZXZlciwgaXMgbm90IGd1YXJhbnRlZWQgYW5kIGNhbiBjaGFuZ2UgYXQgYW55IHBvaW50IGluIHRoZSBmdXR1cmVcblx0b2Zmc2V0UGFyZW50OiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5tYXAoIGZ1bmN0aW9uKCkge1xuXHRcdFx0dmFyIG9mZnNldFBhcmVudCA9IHRoaXMub2Zmc2V0UGFyZW50O1xuXG5cdFx0XHR3aGlsZSAoIG9mZnNldFBhcmVudCAmJiBqUXVlcnkuY3NzKCBvZmZzZXRQYXJlbnQsIFwicG9zaXRpb25cIiApID09PSBcInN0YXRpY1wiICkge1xuXHRcdFx0XHRvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQub2Zmc2V0UGFyZW50O1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gb2Zmc2V0UGFyZW50IHx8IGRvY3VtZW50RWxlbWVudDtcblx0XHR9ICk7XG5cdH1cbn0gKTtcblxuLy8gQ3JlYXRlIHNjcm9sbExlZnQgYW5kIHNjcm9sbFRvcCBtZXRob2RzXG5qUXVlcnkuZWFjaCggeyBzY3JvbGxMZWZ0OiBcInBhZ2VYT2Zmc2V0XCIsIHNjcm9sbFRvcDogXCJwYWdlWU9mZnNldFwiIH0sIGZ1bmN0aW9uKCBtZXRob2QsIHByb3AgKSB7XG5cdHZhciB0b3AgPSBcInBhZ2VZT2Zmc2V0XCIgPT09IHByb3A7XG5cblx0alF1ZXJ5LmZuWyBtZXRob2QgXSA9IGZ1bmN0aW9uKCB2YWwgKSB7XG5cdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIG1ldGhvZCwgdmFsICkge1xuXG5cdFx0XHQvLyBDb2FsZXNjZSBkb2N1bWVudHMgYW5kIHdpbmRvd3Ncblx0XHRcdHZhciB3aW47XG5cdFx0XHRpZiAoIGlzV2luZG93KCBlbGVtICkgKSB7XG5cdFx0XHRcdHdpbiA9IGVsZW07XG5cdFx0XHR9IGVsc2UgaWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHR3aW4gPSBlbGVtLmRlZmF1bHRWaWV3O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIHZhbCA9PT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRyZXR1cm4gd2luID8gd2luWyBwcm9wIF0gOiBlbGVtWyBtZXRob2QgXTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB3aW4gKSB7XG5cdFx0XHRcdHdpbi5zY3JvbGxUbyhcblx0XHRcdFx0XHQhdG9wID8gdmFsIDogd2luLnBhZ2VYT2Zmc2V0LFxuXHRcdFx0XHRcdHRvcCA/IHZhbCA6IHdpbi5wYWdlWU9mZnNldFxuXHRcdFx0XHQpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtWyBtZXRob2QgXSA9IHZhbDtcblx0XHRcdH1cblx0XHR9LCBtZXRob2QsIHZhbCwgYXJndW1lbnRzLmxlbmd0aCApO1xuXHR9O1xufSApO1xuXG4vLyBTdXBwb3J0OiBTYWZhcmkgPD03IC0gOS4xLCBDaHJvbWUgPD0zNyAtIDQ5XG4vLyBBZGQgdGhlIHRvcC9sZWZ0IGNzc0hvb2tzIHVzaW5nIGpRdWVyeS5mbi5wb3NpdGlvblxuLy8gV2Via2l0IGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MDg0XG4vLyBCbGluayBidWc6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU4OTM0N1xuLy8gZ2V0Q29tcHV0ZWRTdHlsZSByZXR1cm5zIHBlcmNlbnQgd2hlbiBzcGVjaWZpZWQgZm9yIHRvcC9sZWZ0L2JvdHRvbS9yaWdodDtcbi8vIHJhdGhlciB0aGFuIG1ha2UgdGhlIGNzcyBtb2R1bGUgZGVwZW5kIG9uIHRoZSBvZmZzZXQgbW9kdWxlLCBqdXN0IGNoZWNrIGZvciBpdCBoZXJlXG5qUXVlcnkuZWFjaCggWyBcInRvcFwiLCBcImxlZnRcIiBdLCBmdW5jdGlvbiggaSwgcHJvcCApIHtcblx0alF1ZXJ5LmNzc0hvb2tzWyBwcm9wIF0gPSBhZGRHZXRIb29rSWYoIHN1cHBvcnQucGl4ZWxQb3NpdGlvbixcblx0XHRmdW5jdGlvbiggZWxlbSwgY29tcHV0ZWQgKSB7XG5cdFx0XHRpZiAoIGNvbXB1dGVkICkge1xuXHRcdFx0XHRjb21wdXRlZCA9IGN1ckNTUyggZWxlbSwgcHJvcCApO1xuXG5cdFx0XHRcdC8vIElmIGN1ckNTUyByZXR1cm5zIHBlcmNlbnRhZ2UsIGZhbGxiYWNrIHRvIG9mZnNldFxuXHRcdFx0XHRyZXR1cm4gcm51bW5vbnB4LnRlc3QoIGNvbXB1dGVkICkgP1xuXHRcdFx0XHRcdGpRdWVyeSggZWxlbSApLnBvc2l0aW9uKClbIHByb3AgXSArIFwicHhcIiA6XG5cdFx0XHRcdFx0Y29tcHV0ZWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xufSApO1xuXG5cbi8vIENyZWF0ZSBpbm5lckhlaWdodCwgaW5uZXJXaWR0aCwgaGVpZ2h0LCB3aWR0aCwgb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lkdGggbWV0aG9kc1xualF1ZXJ5LmVhY2goIHsgSGVpZ2h0OiBcImhlaWdodFwiLCBXaWR0aDogXCJ3aWR0aFwiIH0sIGZ1bmN0aW9uKCBuYW1lLCB0eXBlICkge1xuXHRqUXVlcnkuZWFjaCggeyBwYWRkaW5nOiBcImlubmVyXCIgKyBuYW1lLCBjb250ZW50OiB0eXBlLCBcIlwiOiBcIm91dGVyXCIgKyBuYW1lIH0sXG5cdFx0ZnVuY3Rpb24oIGRlZmF1bHRFeHRyYSwgZnVuY05hbWUgKSB7XG5cblx0XHQvLyBNYXJnaW4gaXMgb25seSBmb3Igb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGhcblx0XHRqUXVlcnkuZm5bIGZ1bmNOYW1lIF0gPSBmdW5jdGlvbiggbWFyZ2luLCB2YWx1ZSApIHtcblx0XHRcdHZhciBjaGFpbmFibGUgPSBhcmd1bWVudHMubGVuZ3RoICYmICggZGVmYXVsdEV4dHJhIHx8IHR5cGVvZiBtYXJnaW4gIT09IFwiYm9vbGVhblwiICksXG5cdFx0XHRcdGV4dHJhID0gZGVmYXVsdEV4dHJhIHx8ICggbWFyZ2luID09PSB0cnVlIHx8IHZhbHVlID09PSB0cnVlID8gXCJtYXJnaW5cIiA6IFwiYm9yZGVyXCIgKTtcblxuXHRcdFx0cmV0dXJuIGFjY2VzcyggdGhpcywgZnVuY3Rpb24oIGVsZW0sIHR5cGUsIHZhbHVlICkge1xuXHRcdFx0XHR2YXIgZG9jO1xuXG5cdFx0XHRcdGlmICggaXNXaW5kb3coIGVsZW0gKSApIHtcblxuXHRcdFx0XHRcdC8vICQoIHdpbmRvdyApLm91dGVyV2lkdGgvSGVpZ2h0IHJldHVybiB3L2ggaW5jbHVkaW5nIHNjcm9sbGJhcnMgKGdoLTE3MjkpXG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmNOYW1lLmluZGV4T2YoIFwib3V0ZXJcIiApID09PSAwID9cblx0XHRcdFx0XHRcdGVsZW1bIFwiaW5uZXJcIiArIG5hbWUgXSA6XG5cdFx0XHRcdFx0XHRlbGVtLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsgXCJjbGllbnRcIiArIG5hbWUgXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEdldCBkb2N1bWVudCB3aWR0aCBvciBoZWlnaHRcblx0XHRcdFx0aWYgKCBlbGVtLm5vZGVUeXBlID09PSA5ICkge1xuXHRcdFx0XHRcdGRvYyA9IGVsZW0uZG9jdW1lbnRFbGVtZW50O1xuXG5cdFx0XHRcdFx0Ly8gRWl0aGVyIHNjcm9sbFtXaWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdIG9yIGNsaWVudFtXaWR0aC9IZWlnaHRdLFxuXHRcdFx0XHRcdC8vIHdoaWNoZXZlciBpcyBncmVhdGVzdFxuXHRcdFx0XHRcdHJldHVybiBNYXRoLm1heChcblx0XHRcdFx0XHRcdGVsZW0uYm9keVsgXCJzY3JvbGxcIiArIG5hbWUgXSwgZG9jWyBcInNjcm9sbFwiICsgbmFtZSBdLFxuXHRcdFx0XHRcdFx0ZWxlbS5ib2R5WyBcIm9mZnNldFwiICsgbmFtZSBdLCBkb2NbIFwib2Zmc2V0XCIgKyBuYW1lIF0sXG5cdFx0XHRcdFx0XHRkb2NbIFwiY2xpZW50XCIgKyBuYW1lIF1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgP1xuXG5cdFx0XHRcdFx0Ly8gR2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudCwgcmVxdWVzdGluZyBidXQgbm90IGZvcmNpbmcgcGFyc2VGbG9hdFxuXHRcdFx0XHRcdGpRdWVyeS5jc3MoIGVsZW0sIHR5cGUsIGV4dHJhICkgOlxuXG5cdFx0XHRcdFx0Ly8gU2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudFxuXHRcdFx0XHRcdGpRdWVyeS5zdHlsZSggZWxlbSwgdHlwZSwgdmFsdWUsIGV4dHJhICk7XG5cdFx0XHR9LCB0eXBlLCBjaGFpbmFibGUgPyBtYXJnaW4gOiB1bmRlZmluZWQsIGNoYWluYWJsZSApO1xuXHRcdH07XG5cdH0gKTtcbn0gKTtcblxuXG5qUXVlcnkuZWFjaCggKCBcImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCByZXNpemUgc2Nyb2xsIGNsaWNrIGRibGNsaWNrIFwiICtcblx0XCJtb3VzZWRvd24gbW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBcIiArXG5cdFwiY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudVwiICkuc3BsaXQoIFwiIFwiICksXG5cdGZ1bmN0aW9uKCBpLCBuYW1lICkge1xuXG5cdC8vIEhhbmRsZSBldmVudCBiaW5kaW5nXG5cdGpRdWVyeS5mblsgbmFtZSBdID0gZnVuY3Rpb24oIGRhdGEsIGZuICkge1xuXHRcdHJldHVybiBhcmd1bWVudHMubGVuZ3RoID4gMCA/XG5cdFx0XHR0aGlzLm9uKCBuYW1lLCBudWxsLCBkYXRhLCBmbiApIDpcblx0XHRcdHRoaXMudHJpZ2dlciggbmFtZSApO1xuXHR9O1xufSApO1xuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cdGhvdmVyOiBmdW5jdGlvbiggZm5PdmVyLCBmbk91dCApIHtcblx0XHRyZXR1cm4gdGhpcy5tb3VzZWVudGVyKCBmbk92ZXIgKS5tb3VzZWxlYXZlKCBmbk91dCB8fCBmbk92ZXIgKTtcblx0fVxufSApO1xuXG5cblxuXG5qUXVlcnkuZm4uZXh0ZW5kKCB7XG5cblx0YmluZDogZnVuY3Rpb24oIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIG51bGwsIGRhdGEsIGZuICk7XG5cdH0sXG5cdHVuYmluZDogZnVuY3Rpb24oIHR5cGVzLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vZmYoIHR5cGVzLCBudWxsLCBmbiApO1xuXHR9LFxuXG5cdGRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBkYXRhLCBmbiApIHtcblx0XHRyZXR1cm4gdGhpcy5vbiggdHlwZXMsIHNlbGVjdG9yLCBkYXRhLCBmbiApO1xuXHR9LFxuXHR1bmRlbGVnYXRlOiBmdW5jdGlvbiggc2VsZWN0b3IsIHR5cGVzLCBmbiApIHtcblxuXHRcdC8vICggbmFtZXNwYWNlICkgb3IgKCBzZWxlY3RvciwgdHlwZXMgWywgZm5dIClcblx0XHRyZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA9PT0gMSA/XG5cdFx0XHR0aGlzLm9mZiggc2VsZWN0b3IsIFwiKipcIiApIDpcblx0XHRcdHRoaXMub2ZmKCB0eXBlcywgc2VsZWN0b3IgfHwgXCIqKlwiLCBmbiApO1xuXHR9XG59ICk7XG5cbi8vIEJpbmQgYSBmdW5jdGlvbiB0byBhIGNvbnRleHQsIG9wdGlvbmFsbHkgcGFydGlhbGx5IGFwcGx5aW5nIGFueVxuLy8gYXJndW1lbnRzLlxuLy8galF1ZXJ5LnByb3h5IGlzIGRlcHJlY2F0ZWQgdG8gcHJvbW90ZSBzdGFuZGFyZHMgKHNwZWNpZmljYWxseSBGdW5jdGlvbiNiaW5kKVxuLy8gSG93ZXZlciwgaXQgaXMgbm90IHNsYXRlZCBmb3IgcmVtb3ZhbCBhbnkgdGltZSBzb29uXG5qUXVlcnkucHJveHkgPSBmdW5jdGlvbiggZm4sIGNvbnRleHQgKSB7XG5cdHZhciB0bXAsIGFyZ3MsIHByb3h5O1xuXG5cdGlmICggdHlwZW9mIGNvbnRleHQgPT09IFwic3RyaW5nXCIgKSB7XG5cdFx0dG1wID0gZm5bIGNvbnRleHQgXTtcblx0XHRjb250ZXh0ID0gZm47XG5cdFx0Zm4gPSB0bXA7XG5cdH1cblxuXHQvLyBRdWljayBjaGVjayB0byBkZXRlcm1pbmUgaWYgdGFyZ2V0IGlzIGNhbGxhYmxlLCBpbiB0aGUgc3BlY1xuXHQvLyB0aGlzIHRocm93cyBhIFR5cGVFcnJvciwgYnV0IHdlIHdpbGwganVzdCByZXR1cm4gdW5kZWZpbmVkLlxuXHRpZiAoICFpc0Z1bmN0aW9uKCBmbiApICkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblxuXHQvLyBTaW11bGF0ZWQgYmluZFxuXHRhcmdzID0gc2xpY2UuY2FsbCggYXJndW1lbnRzLCAyICk7XG5cdHByb3h5ID0gZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGZuLmFwcGx5KCBjb250ZXh0IHx8IHRoaXMsIGFyZ3MuY29uY2F0KCBzbGljZS5jYWxsKCBhcmd1bWVudHMgKSApICk7XG5cdH07XG5cblx0Ly8gU2V0IHRoZSBndWlkIG9mIHVuaXF1ZSBoYW5kbGVyIHRvIHRoZSBzYW1lIG9mIG9yaWdpbmFsIGhhbmRsZXIsIHNvIGl0IGNhbiBiZSByZW1vdmVkXG5cdHByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBqUXVlcnkuZ3VpZCsrO1xuXG5cdHJldHVybiBwcm94eTtcbn07XG5cbmpRdWVyeS5ob2xkUmVhZHkgPSBmdW5jdGlvbiggaG9sZCApIHtcblx0aWYgKCBob2xkICkge1xuXHRcdGpRdWVyeS5yZWFkeVdhaXQrKztcblx0fSBlbHNlIHtcblx0XHRqUXVlcnkucmVhZHkoIHRydWUgKTtcblx0fVxufTtcbmpRdWVyeS5pc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcbmpRdWVyeS5wYXJzZUpTT04gPSBKU09OLnBhcnNlO1xualF1ZXJ5Lm5vZGVOYW1lID0gbm9kZU5hbWU7XG5qUXVlcnkuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5qUXVlcnkuaXNXaW5kb3cgPSBpc1dpbmRvdztcbmpRdWVyeS5jYW1lbENhc2UgPSBjYW1lbENhc2U7XG5qUXVlcnkudHlwZSA9IHRvVHlwZTtcblxualF1ZXJ5Lm5vdyA9IERhdGUubm93O1xuXG5qUXVlcnkuaXNOdW1lcmljID0gZnVuY3Rpb24oIG9iaiApIHtcblxuXHQvLyBBcyBvZiBqUXVlcnkgMy4wLCBpc051bWVyaWMgaXMgbGltaXRlZCB0b1xuXHQvLyBzdHJpbmdzIGFuZCBudW1iZXJzIChwcmltaXRpdmVzIG9yIG9iamVjdHMpXG5cdC8vIHRoYXQgY2FuIGJlIGNvZXJjZWQgdG8gZmluaXRlIG51bWJlcnMgKGdoLTI2NjIpXG5cdHZhciB0eXBlID0galF1ZXJ5LnR5cGUoIG9iaiApO1xuXHRyZXR1cm4gKCB0eXBlID09PSBcIm51bWJlclwiIHx8IHR5cGUgPT09IFwic3RyaW5nXCIgKSAmJlxuXG5cdFx0Ly8gcGFyc2VGbG9hdCBOYU5zIG51bWVyaWMtY2FzdCBmYWxzZSBwb3NpdGl2ZXMgKFwiXCIpXG5cdFx0Ly8gLi4uYnV0IG1pc2ludGVycHJldHMgbGVhZGluZy1udW1iZXIgc3RyaW5ncywgcGFydGljdWxhcmx5IGhleCBsaXRlcmFscyAoXCIweC4uLlwiKVxuXHRcdC8vIHN1YnRyYWN0aW9uIGZvcmNlcyBpbmZpbml0aWVzIHRvIE5hTlxuXHRcdCFpc05hTiggb2JqIC0gcGFyc2VGbG9hdCggb2JqICkgKTtcbn07XG5cblxuXG5cbi8vIFJlZ2lzdGVyIGFzIGEgbmFtZWQgQU1EIG1vZHVsZSwgc2luY2UgalF1ZXJ5IGNhbiBiZSBjb25jYXRlbmF0ZWQgd2l0aCBvdGhlclxuLy8gZmlsZXMgdGhhdCBtYXkgdXNlIGRlZmluZSwgYnV0IG5vdCB2aWEgYSBwcm9wZXIgY29uY2F0ZW5hdGlvbiBzY3JpcHQgdGhhdFxuLy8gdW5kZXJzdGFuZHMgYW5vbnltb3VzIEFNRCBtb2R1bGVzLiBBIG5hbWVkIEFNRCBpcyBzYWZlc3QgYW5kIG1vc3Qgcm9idXN0XG4vLyB3YXkgdG8gcmVnaXN0ZXIuIExvd2VyY2FzZSBqcXVlcnkgaXMgdXNlZCBiZWNhdXNlIEFNRCBtb2R1bGUgbmFtZXMgYXJlXG4vLyBkZXJpdmVkIGZyb20gZmlsZSBuYW1lcywgYW5kIGpRdWVyeSBpcyBub3JtYWxseSBkZWxpdmVyZWQgaW4gYSBsb3dlcmNhc2Vcbi8vIGZpbGUgbmFtZS4gRG8gdGhpcyBhZnRlciBjcmVhdGluZyB0aGUgZ2xvYmFsIHNvIHRoYXQgaWYgYW4gQU1EIG1vZHVsZSB3YW50c1xuLy8gdG8gY2FsbCBub0NvbmZsaWN0IHRvIGhpZGUgdGhpcyB2ZXJzaW9uIG9mIGpRdWVyeSwgaXQgd2lsbCB3b3JrLlxuXG4vLyBOb3RlIHRoYXQgZm9yIG1heGltdW0gcG9ydGFiaWxpdHksIGxpYnJhcmllcyB0aGF0IGFyZSBub3QgalF1ZXJ5IHNob3VsZFxuLy8gZGVjbGFyZSB0aGVtc2VsdmVzIGFzIGFub255bW91cyBtb2R1bGVzLCBhbmQgYXZvaWQgc2V0dGluZyBhIGdsb2JhbCBpZiBhblxuLy8gQU1EIGxvYWRlciBpcyBwcmVzZW50LiBqUXVlcnkgaXMgYSBzcGVjaWFsIGNhc2UuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcy93aWtpL1VwZGF0aW5nLWV4aXN0aW5nLWxpYnJhcmllcyN3aWtpLWFub25cblxuaWYgKCB0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCApIHtcblx0ZGVmaW5lKCBcImpxdWVyeVwiLCBbXSwgZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGpRdWVyeTtcblx0fSApO1xufVxuXG5cblxuXG52YXJcblxuXHQvLyBNYXAgb3ZlciBqUXVlcnkgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0X2pRdWVyeSA9IHdpbmRvdy5qUXVlcnksXG5cblx0Ly8gTWFwIG92ZXIgdGhlICQgaW4gY2FzZSBvZiBvdmVyd3JpdGVcblx0XyQgPSB3aW5kb3cuJDtcblxualF1ZXJ5Lm5vQ29uZmxpY3QgPSBmdW5jdGlvbiggZGVlcCApIHtcblx0aWYgKCB3aW5kb3cuJCA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy4kID0gXyQ7XG5cdH1cblxuXHRpZiAoIGRlZXAgJiYgd2luZG93LmpRdWVyeSA9PT0galF1ZXJ5ICkge1xuXHRcdHdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5O1xuXHR9XG5cblx0cmV0dXJuIGpRdWVyeTtcbn07XG5cbi8vIEV4cG9zZSBqUXVlcnkgYW5kICQgaWRlbnRpZmllcnMsIGV2ZW4gaW4gQU1EXG4vLyAoIzcxMDIjY29tbWVudDoxMCwgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvcHVsbC81NTcpXG4vLyBhbmQgQ29tbW9uSlMgZm9yIGJyb3dzZXIgZW11bGF0b3JzICgjMTM1NjYpXG5pZiAoICFub0dsb2JhbCApIHtcblx0d2luZG93LmpRdWVyeSA9IHdpbmRvdy4kID0galF1ZXJ5O1xufVxuXG5cblxuXG5yZXR1cm4galF1ZXJ5O1xufSApO1xuIiwiLy8hIG1vbWVudC10aW1lem9uZS5qc1xuLy8hIHZlcnNpb24gOiAwLjUuMTdcbi8vISBDb3B5cmlnaHQgKGMpIEpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9yc1xuLy8hIGxpY2Vuc2UgOiBNSVRcbi8vISBnaXRodWIuY29tL21vbWVudC9tb21lbnQtdGltZXpvbmVcblxuKGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7XG5cdFwidXNlIHN0cmljdFwiO1xuXG5cdC8qZ2xvYmFsIGRlZmluZSovXG5cdGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcblx0XHRkZWZpbmUoWydtb21lbnQnXSwgZmFjdG9yeSk7ICAgICAgICAgICAgICAgICAvLyBBTURcblx0fSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKCdtb21lbnQnKSk7IC8vIE5vZGVcblx0fSBlbHNlIHtcblx0XHRmYWN0b3J5KHJvb3QubW9tZW50KTsgICAgICAgICAgICAgICAgICAgICAgICAvLyBCcm93c2VyXG5cdH1cbn0odGhpcywgZnVuY3Rpb24gKG1vbWVudCkge1xuXHRcInVzZSBzdHJpY3RcIjtcblxuXHQvLyBEbyBub3QgbG9hZCBtb21lbnQtdGltZXpvbmUgYSBzZWNvbmQgdGltZS5cblx0Ly8gaWYgKG1vbWVudC50eiAhPT0gdW5kZWZpbmVkKSB7XG5cdC8vIFx0bG9nRXJyb3IoJ01vbWVudCBUaW1lem9uZSAnICsgbW9tZW50LnR6LnZlcnNpb24gKyAnIHdhcyBhbHJlYWR5IGxvYWRlZCAnICsgKG1vbWVudC50ei5kYXRhVmVyc2lvbiA/ICd3aXRoIGRhdGEgZnJvbSAnIDogJ3dpdGhvdXQgYW55IGRhdGEnKSArIG1vbWVudC50ei5kYXRhVmVyc2lvbik7XG5cdC8vIFx0cmV0dXJuIG1vbWVudDtcblx0Ly8gfVxuXG5cdHZhciBWRVJTSU9OID0gXCIwLjUuMTdcIixcblx0XHR6b25lcyA9IHt9LFxuXHRcdGxpbmtzID0ge30sXG5cdFx0bmFtZXMgPSB7fSxcblx0XHRndWVzc2VzID0ge30sXG5cdFx0Y2FjaGVkR3Vlc3MsXG5cblx0XHRtb21lbnRWZXJzaW9uID0gbW9tZW50LnZlcnNpb24uc3BsaXQoJy4nKSxcblx0XHRtYWpvciA9ICttb21lbnRWZXJzaW9uWzBdLFxuXHRcdG1pbm9yID0gK21vbWVudFZlcnNpb25bMV07XG5cblx0Ly8gTW9tZW50LmpzIHZlcnNpb24gY2hlY2tcblx0aWYgKG1ham9yIDwgMiB8fCAobWFqb3IgPT09IDIgJiYgbWlub3IgPCA2KSkge1xuXHRcdGxvZ0Vycm9yKCdNb21lbnQgVGltZXpvbmUgcmVxdWlyZXMgTW9tZW50LmpzID49IDIuNi4wLiBZb3UgYXJlIHVzaW5nIE1vbWVudC5qcyAnICsgbW9tZW50LnZlcnNpb24gKyAnLiBTZWUgbW9tZW50anMuY29tJyk7XG5cdH1cblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0VW5wYWNraW5nXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHRmdW5jdGlvbiBjaGFyQ29kZVRvSW50KGNoYXJDb2RlKSB7XG5cdFx0aWYgKGNoYXJDb2RlID4gOTYpIHtcblx0XHRcdHJldHVybiBjaGFyQ29kZSAtIDg3O1xuXHRcdH0gZWxzZSBpZiAoY2hhckNvZGUgPiA2NCkge1xuXHRcdFx0cmV0dXJuIGNoYXJDb2RlIC0gMjk7XG5cdFx0fVxuXHRcdHJldHVybiBjaGFyQ29kZSAtIDQ4O1xuXHR9XG5cblx0ZnVuY3Rpb24gdW5wYWNrQmFzZTYwKHN0cmluZykge1xuXHRcdHZhciBpID0gMCxcblx0XHRcdHBhcnRzID0gc3RyaW5nLnNwbGl0KCcuJyksXG5cdFx0XHR3aG9sZSA9IHBhcnRzWzBdLFxuXHRcdFx0ZnJhY3Rpb25hbCA9IHBhcnRzWzFdIHx8ICcnLFxuXHRcdFx0bXVsdGlwbGllciA9IDEsXG5cdFx0XHRudW0sXG5cdFx0XHRvdXQgPSAwLFxuXHRcdFx0c2lnbiA9IDE7XG5cblx0XHQvLyBoYW5kbGUgbmVnYXRpdmUgbnVtYmVyc1xuXHRcdGlmIChzdHJpbmcuY2hhckNvZGVBdCgwKSA9PT0gNDUpIHtcblx0XHRcdGkgPSAxO1xuXHRcdFx0c2lnbiA9IC0xO1xuXHRcdH1cblxuXHRcdC8vIGhhbmRsZSBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsXG5cdFx0Zm9yIChpOyBpIDwgd2hvbGUubGVuZ3RoOyBpKyspIHtcblx0XHRcdG51bSA9IGNoYXJDb2RlVG9JbnQod2hvbGUuY2hhckNvZGVBdChpKSk7XG5cdFx0XHRvdXQgPSA2MCAqIG91dCArIG51bTtcblx0XHR9XG5cblx0XHQvLyBoYW5kbGUgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsXG5cdFx0Zm9yIChpID0gMDsgaSA8IGZyYWN0aW9uYWwubGVuZ3RoOyBpKyspIHtcblx0XHRcdG11bHRpcGxpZXIgPSBtdWx0aXBsaWVyIC8gNjA7XG5cdFx0XHRudW0gPSBjaGFyQ29kZVRvSW50KGZyYWN0aW9uYWwuY2hhckNvZGVBdChpKSk7XG5cdFx0XHRvdXQgKz0gbnVtICogbXVsdGlwbGllcjtcblx0XHR9XG5cblx0XHRyZXR1cm4gb3V0ICogc2lnbjtcblx0fVxuXG5cdGZ1bmN0aW9uIGFycmF5VG9JbnQgKGFycmF5KSB7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuXHRcdFx0YXJyYXlbaV0gPSB1bnBhY2tCYXNlNjAoYXJyYXlbaV0pO1xuXHRcdH1cblx0fVxuXG5cdGZ1bmN0aW9uIGludFRvVW50aWwgKGFycmF5LCBsZW5ndGgpIHtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdFx0XHRhcnJheVtpXSA9IE1hdGgucm91bmQoKGFycmF5W2kgLSAxXSB8fCAwKSArIChhcnJheVtpXSAqIDYwMDAwKSk7IC8vIG1pbnV0ZXMgdG8gbWlsbGlzZWNvbmRzXG5cdFx0fVxuXG5cdFx0YXJyYXlbbGVuZ3RoIC0gMV0gPSBJbmZpbml0eTtcblx0fVxuXG5cdGZ1bmN0aW9uIG1hcEluZGljZXMgKHNvdXJjZSwgaW5kaWNlcykge1xuXHRcdHZhciBvdXQgPSBbXSwgaTtcblxuXHRcdGZvciAoaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRvdXRbaV0gPSBzb3VyY2VbaW5kaWNlc1tpXV07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dDtcblx0fVxuXG5cdGZ1bmN0aW9uIHVucGFjayAoc3RyaW5nKSB7XG5cdFx0dmFyIGRhdGEgPSBzdHJpbmcuc3BsaXQoJ3wnKSxcblx0XHRcdG9mZnNldHMgPSBkYXRhWzJdLnNwbGl0KCcgJyksXG5cdFx0XHRpbmRpY2VzID0gZGF0YVszXS5zcGxpdCgnJyksXG5cdFx0XHR1bnRpbHMgID0gZGF0YVs0XS5zcGxpdCgnICcpO1xuXG5cdFx0YXJyYXlUb0ludChvZmZzZXRzKTtcblx0XHRhcnJheVRvSW50KGluZGljZXMpO1xuXHRcdGFycmF5VG9JbnQodW50aWxzKTtcblxuXHRcdGludFRvVW50aWwodW50aWxzLCBpbmRpY2VzLmxlbmd0aCk7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0bmFtZSAgICAgICA6IGRhdGFbMF0sXG5cdFx0XHRhYmJycyAgICAgIDogbWFwSW5kaWNlcyhkYXRhWzFdLnNwbGl0KCcgJyksIGluZGljZXMpLFxuXHRcdFx0b2Zmc2V0cyAgICA6IG1hcEluZGljZXMob2Zmc2V0cywgaW5kaWNlcyksXG5cdFx0XHR1bnRpbHMgICAgIDogdW50aWxzLFxuXHRcdFx0cG9wdWxhdGlvbiA6IGRhdGFbNV0gfCAwXG5cdFx0fTtcblx0fVxuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0XHRab25lIG9iamVjdFxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gWm9uZSAocGFja2VkU3RyaW5nKSB7XG5cdFx0aWYgKHBhY2tlZFN0cmluZykge1xuXHRcdFx0dGhpcy5fc2V0KHVucGFjayhwYWNrZWRTdHJpbmcpKTtcblx0XHR9XG5cdH1cblxuXHRab25lLnByb3RvdHlwZSA9IHtcblx0XHRfc2V0IDogZnVuY3Rpb24gKHVucGFja2VkKSB7XG5cdFx0XHR0aGlzLm5hbWUgICAgICAgPSB1bnBhY2tlZC5uYW1lO1xuXHRcdFx0dGhpcy5hYmJycyAgICAgID0gdW5wYWNrZWQuYWJicnM7XG5cdFx0XHR0aGlzLnVudGlscyAgICAgPSB1bnBhY2tlZC51bnRpbHM7XG5cdFx0XHR0aGlzLm9mZnNldHMgICAgPSB1bnBhY2tlZC5vZmZzZXRzO1xuXHRcdFx0dGhpcy5wb3B1bGF0aW9uID0gdW5wYWNrZWQucG9wdWxhdGlvbjtcblx0XHR9LFxuXG5cdFx0X2luZGV4IDogZnVuY3Rpb24gKHRpbWVzdGFtcCkge1xuXHRcdFx0dmFyIHRhcmdldCA9ICt0aW1lc3RhbXAsXG5cdFx0XHRcdHVudGlscyA9IHRoaXMudW50aWxzLFxuXHRcdFx0XHRpO1xuXG5cdFx0XHRmb3IgKGkgPSAwOyBpIDwgdW50aWxzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmICh0YXJnZXQgPCB1bnRpbHNbaV0pIHtcblx0XHRcdFx0XHRyZXR1cm4gaTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cblx0XHRwYXJzZSA6IGZ1bmN0aW9uICh0aW1lc3RhbXApIHtcblx0XHRcdHZhciB0YXJnZXQgID0gK3RpbWVzdGFtcCxcblx0XHRcdFx0b2Zmc2V0cyA9IHRoaXMub2Zmc2V0cyxcblx0XHRcdFx0dW50aWxzICA9IHRoaXMudW50aWxzLFxuXHRcdFx0XHRtYXggICAgID0gdW50aWxzLmxlbmd0aCAtIDEsXG5cdFx0XHRcdG9mZnNldCwgb2Zmc2V0TmV4dCwgb2Zmc2V0UHJldiwgaTtcblxuXHRcdFx0Zm9yIChpID0gMDsgaSA8IG1heDsgaSsrKSB7XG5cdFx0XHRcdG9mZnNldCAgICAgPSBvZmZzZXRzW2ldO1xuXHRcdFx0XHRvZmZzZXROZXh0ID0gb2Zmc2V0c1tpICsgMV07XG5cdFx0XHRcdG9mZnNldFByZXYgPSBvZmZzZXRzW2kgPyBpIC0gMSA6IGldO1xuXG5cdFx0XHRcdGlmIChvZmZzZXQgPCBvZmZzZXROZXh0ICYmIHR6Lm1vdmVBbWJpZ3VvdXNGb3J3YXJkKSB7XG5cdFx0XHRcdFx0b2Zmc2V0ID0gb2Zmc2V0TmV4dDtcblx0XHRcdFx0fSBlbHNlIGlmIChvZmZzZXQgPiBvZmZzZXRQcmV2ICYmIHR6Lm1vdmVJbnZhbGlkRm9yd2FyZCkge1xuXHRcdFx0XHRcdG9mZnNldCA9IG9mZnNldFByZXY7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGFyZ2V0IDwgdW50aWxzW2ldIC0gKG9mZnNldCAqIDYwMDAwKSkge1xuXHRcdFx0XHRcdHJldHVybiBvZmZzZXRzW2ldO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBvZmZzZXRzW21heF07XG5cdFx0fSxcblxuXHRcdGFiYnIgOiBmdW5jdGlvbiAobW9tKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5hYmJyc1t0aGlzLl9pbmRleChtb20pXTtcblx0XHR9LFxuXG5cdFx0b2Zmc2V0IDogZnVuY3Rpb24gKG1vbSkge1xuXHRcdFx0bG9nRXJyb3IoXCJ6b25lLm9mZnNldCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHpvbmUudXRjT2Zmc2V0XCIpO1xuXHRcdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1t0aGlzLl9pbmRleChtb20pXTtcblx0XHR9LFxuXG5cdFx0dXRjT2Zmc2V0IDogZnVuY3Rpb24gKG1vbSkge1xuXHRcdFx0cmV0dXJuIHRoaXMub2Zmc2V0c1t0aGlzLl9pbmRleChtb20pXTtcblx0XHR9XG5cdH07XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHRcdEN1cnJlbnQgVGltZXpvbmVcblx0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cdGZ1bmN0aW9uIE9mZnNldEF0KGF0KSB7XG5cdFx0dmFyIHRpbWVTdHJpbmcgPSBhdC50b1RpbWVTdHJpbmcoKTtcblx0XHR2YXIgYWJiciA9IHRpbWVTdHJpbmcubWF0Y2goL1xcKFthLXogXStcXCkvaSk7XG5cdFx0aWYgKGFiYnIgJiYgYWJiclswXSkge1xuXHRcdFx0Ly8gMTc6NTY6MzEgR01ULTA2MDAgKENTVClcblx0XHRcdC8vIDE3OjU2OjMxIEdNVC0wNjAwIChDZW50cmFsIFN0YW5kYXJkIFRpbWUpXG5cdFx0XHRhYmJyID0gYWJiclswXS5tYXRjaCgvW0EtWl0vZyk7XG5cdFx0XHRhYmJyID0gYWJiciA/IGFiYnIuam9pbignJykgOiB1bmRlZmluZWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIDE3OjU2OjMxIENTVFxuXHRcdFx0Ly8gMTc6NTY6MzEgR01UKzA4MDAgKOWPsOWMl+aomea6luaZgumWkylcblx0XHRcdGFiYnIgPSB0aW1lU3RyaW5nLm1hdGNoKC9bQS1aXXszLDV9L2cpO1xuXHRcdFx0YWJiciA9IGFiYnIgPyBhYmJyWzBdIDogdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGlmIChhYmJyID09PSAnR01UJykge1xuXHRcdFx0YWJiciA9IHVuZGVmaW5lZDtcblx0XHR9XG5cblx0XHR0aGlzLmF0ID0gK2F0O1xuXHRcdHRoaXMuYWJiciA9IGFiYnI7XG5cdFx0dGhpcy5vZmZzZXQgPSBhdC5nZXRUaW1lem9uZU9mZnNldCgpO1xuXHR9XG5cblx0ZnVuY3Rpb24gWm9uZVNjb3JlKHpvbmUpIHtcblx0XHR0aGlzLnpvbmUgPSB6b25lO1xuXHRcdHRoaXMub2Zmc2V0U2NvcmUgPSAwO1xuXHRcdHRoaXMuYWJiclNjb3JlID0gMDtcblx0fVxuXG5cdFpvbmVTY29yZS5wcm90b3R5cGUuc2NvcmVPZmZzZXRBdCA9IGZ1bmN0aW9uIChvZmZzZXRBdCkge1xuXHRcdHRoaXMub2Zmc2V0U2NvcmUgKz0gTWF0aC5hYnModGhpcy56b25lLnV0Y09mZnNldChvZmZzZXRBdC5hdCkgLSBvZmZzZXRBdC5vZmZzZXQpO1xuXHRcdGlmICh0aGlzLnpvbmUuYWJicihvZmZzZXRBdC5hdCkucmVwbGFjZSgvW15BLVpdL2csICcnKSAhPT0gb2Zmc2V0QXQuYWJicikge1xuXHRcdFx0dGhpcy5hYmJyU2NvcmUrKztcblx0XHR9XG5cdH07XG5cblx0ZnVuY3Rpb24gZmluZENoYW5nZShsb3csIGhpZ2gpIHtcblx0XHR2YXIgbWlkLCBkaWZmO1xuXG5cdFx0d2hpbGUgKChkaWZmID0gKChoaWdoLmF0IC0gbG93LmF0KSAvIDEyZTQgfCAwKSAqIDZlNCkpIHtcblx0XHRcdG1pZCA9IG5ldyBPZmZzZXRBdChuZXcgRGF0ZShsb3cuYXQgKyBkaWZmKSk7XG5cdFx0XHRpZiAobWlkLm9mZnNldCA9PT0gbG93Lm9mZnNldCkge1xuXHRcdFx0XHRsb3cgPSBtaWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRoaWdoID0gbWlkO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBsb3c7XG5cdH1cblxuXHRmdW5jdGlvbiB1c2VyT2Zmc2V0cygpIHtcblx0XHR2YXIgc3RhcnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpIC0gMixcblx0XHRcdGxhc3QgPSBuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyLCAwLCAxKSksXG5cdFx0XHRvZmZzZXRzID0gW2xhc3RdLFxuXHRcdFx0Y2hhbmdlLCBuZXh0LCBpO1xuXG5cdFx0Zm9yIChpID0gMTsgaSA8IDQ4OyBpKyspIHtcblx0XHRcdG5leHQgPSBuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyLCBpLCAxKSk7XG5cdFx0XHRpZiAobmV4dC5vZmZzZXQgIT09IGxhc3Qub2Zmc2V0KSB7XG5cdFx0XHRcdGNoYW5nZSA9IGZpbmRDaGFuZ2UobGFzdCwgbmV4dCk7XG5cdFx0XHRcdG9mZnNldHMucHVzaChjaGFuZ2UpO1xuXHRcdFx0XHRvZmZzZXRzLnB1c2gobmV3IE9mZnNldEF0KG5ldyBEYXRlKGNoYW5nZS5hdCArIDZlNCkpKTtcblx0XHRcdH1cblx0XHRcdGxhc3QgPSBuZXh0O1xuXHRcdH1cblxuXHRcdGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHtcblx0XHRcdG9mZnNldHMucHVzaChuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyICsgaSwgMCwgMSkpKTtcblx0XHRcdG9mZnNldHMucHVzaChuZXcgT2Zmc2V0QXQobmV3IERhdGUoc3RhcnRZZWFyICsgaSwgNiwgMSkpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gb2Zmc2V0cztcblx0fVxuXG5cdGZ1bmN0aW9uIHNvcnRab25lU2NvcmVzIChhLCBiKSB7XG5cdFx0aWYgKGEub2Zmc2V0U2NvcmUgIT09IGIub2Zmc2V0U2NvcmUpIHtcblx0XHRcdHJldHVybiBhLm9mZnNldFNjb3JlIC0gYi5vZmZzZXRTY29yZTtcblx0XHR9XG5cdFx0aWYgKGEuYWJiclNjb3JlICE9PSBiLmFiYnJTY29yZSkge1xuXHRcdFx0cmV0dXJuIGEuYWJiclNjb3JlIC0gYi5hYmJyU2NvcmU7XG5cdFx0fVxuXHRcdHJldHVybiBiLnpvbmUucG9wdWxhdGlvbiAtIGEuem9uZS5wb3B1bGF0aW9uO1xuXHR9XG5cblx0ZnVuY3Rpb24gYWRkVG9HdWVzc2VzIChuYW1lLCBvZmZzZXRzKSB7XG5cdFx0dmFyIGksIG9mZnNldDtcblx0XHRhcnJheVRvSW50KG9mZnNldHMpO1xuXHRcdGZvciAoaSA9IDA7IGkgPCBvZmZzZXRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRvZmZzZXQgPSBvZmZzZXRzW2ldO1xuXHRcdFx0Z3Vlc3Nlc1tvZmZzZXRdID0gZ3Vlc3Nlc1tvZmZzZXRdIHx8IHt9O1xuXHRcdFx0Z3Vlc3Nlc1tvZmZzZXRdW25hbWVdID0gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBndWVzc2VzRm9yVXNlck9mZnNldHMgKG9mZnNldHMpIHtcblx0XHR2YXIgb2Zmc2V0c0xlbmd0aCA9IG9mZnNldHMubGVuZ3RoLFxuXHRcdFx0ZmlsdGVyZWRHdWVzc2VzID0ge30sXG5cdFx0XHRvdXQgPSBbXSxcblx0XHRcdGksIGosIGd1ZXNzZXNPZmZzZXQ7XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgb2Zmc2V0c0xlbmd0aDsgaSsrKSB7XG5cdFx0XHRndWVzc2VzT2Zmc2V0ID0gZ3Vlc3Nlc1tvZmZzZXRzW2ldLm9mZnNldF0gfHwge307XG5cdFx0XHRmb3IgKGogaW4gZ3Vlc3Nlc09mZnNldCkge1xuXHRcdFx0XHRpZiAoZ3Vlc3Nlc09mZnNldC5oYXNPd25Qcm9wZXJ0eShqKSkge1xuXHRcdFx0XHRcdGZpbHRlcmVkR3Vlc3Nlc1tqXSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGkgaW4gZmlsdGVyZWRHdWVzc2VzKSB7XG5cdFx0XHRpZiAoZmlsdGVyZWRHdWVzc2VzLmhhc093blByb3BlcnR5KGkpKSB7XG5cdFx0XHRcdG91dC5wdXNoKG5hbWVzW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0ZnVuY3Rpb24gcmVidWlsZEd1ZXNzICgpIHtcblxuXHRcdC8vIHVzZSBJbnRsIEFQSSB3aGVuIGF2YWlsYWJsZSBhbmQgcmV0dXJuaW5nIHZhbGlkIHRpbWUgem9uZVxuXHRcdHRyeSB7XG5cdFx0XHR2YXIgaW50bE5hbWUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XG5cdFx0XHRpZiAoaW50bE5hbWUgJiYgaW50bE5hbWUubGVuZ3RoID4gMykge1xuXHRcdFx0XHR2YXIgbmFtZSA9IG5hbWVzW25vcm1hbGl6ZU5hbWUoaW50bE5hbWUpXTtcblx0XHRcdFx0aWYgKG5hbWUpIHtcblx0XHRcdFx0XHRyZXR1cm4gbmFtZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRsb2dFcnJvcihcIk1vbWVudCBUaW1lem9uZSBmb3VuZCBcIiArIGludGxOYW1lICsgXCIgZnJvbSB0aGUgSW50bCBhcGksIGJ1dCBkaWQgbm90IGhhdmUgdGhhdCBkYXRhIGxvYWRlZC5cIik7XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0Ly8gSW50bCB1bmF2YWlsYWJsZSwgZmFsbCBiYWNrIHRvIG1hbnVhbCBndWVzc2luZy5cblx0XHR9XG5cblx0XHR2YXIgb2Zmc2V0cyA9IHVzZXJPZmZzZXRzKCksXG5cdFx0XHRvZmZzZXRzTGVuZ3RoID0gb2Zmc2V0cy5sZW5ndGgsXG5cdFx0XHRndWVzc2VzID0gZ3Vlc3Nlc0ZvclVzZXJPZmZzZXRzKG9mZnNldHMpLFxuXHRcdFx0em9uZVNjb3JlcyA9IFtdLFxuXHRcdFx0em9uZVNjb3JlLCBpLCBqO1xuXG5cdFx0Zm9yIChpID0gMDsgaSA8IGd1ZXNzZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHpvbmVTY29yZSA9IG5ldyBab25lU2NvcmUoZ2V0Wm9uZShndWVzc2VzW2ldKSwgb2Zmc2V0c0xlbmd0aCk7XG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgb2Zmc2V0c0xlbmd0aDsgaisrKSB7XG5cdFx0XHRcdHpvbmVTY29yZS5zY29yZU9mZnNldEF0KG9mZnNldHNbal0pO1xuXHRcdFx0fVxuXHRcdFx0em9uZVNjb3Jlcy5wdXNoKHpvbmVTY29yZSk7XG5cdFx0fVxuXG5cdFx0em9uZVNjb3Jlcy5zb3J0KHNvcnRab25lU2NvcmVzKTtcblxuXHRcdHJldHVybiB6b25lU2NvcmVzLmxlbmd0aCA+IDAgPyB6b25lU2NvcmVzWzBdLnpvbmUubmFtZSA6IHVuZGVmaW5lZDtcblx0fVxuXG5cdGZ1bmN0aW9uIGd1ZXNzIChpZ25vcmVDYWNoZSkge1xuXHRcdGlmICghY2FjaGVkR3Vlc3MgfHwgaWdub3JlQ2FjaGUpIHtcblx0XHRcdGNhY2hlZEd1ZXNzID0gcmVidWlsZEd1ZXNzKCk7XG5cdFx0fVxuXHRcdHJldHVybiBjYWNoZWRHdWVzcztcblx0fVxuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0XHRHbG9iYWwgTWV0aG9kc1xuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gbm9ybWFsaXplTmFtZSAobmFtZSkge1xuXHRcdHJldHVybiAobmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXC8vZywgJ18nKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGFkZFpvbmUgKHBhY2tlZCkge1xuXHRcdHZhciBpLCBuYW1lLCBzcGxpdCwgbm9ybWFsaXplZDtcblxuXHRcdGlmICh0eXBlb2YgcGFja2VkID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRwYWNrZWQgPSBbcGFja2VkXTtcblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgcGFja2VkLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRzcGxpdCA9IHBhY2tlZFtpXS5zcGxpdCgnfCcpO1xuXHRcdFx0bmFtZSA9IHNwbGl0WzBdO1xuXHRcdFx0bm9ybWFsaXplZCA9IG5vcm1hbGl6ZU5hbWUobmFtZSk7XG5cdFx0XHR6b25lc1tub3JtYWxpemVkXSA9IHBhY2tlZFtpXTtcblx0XHRcdG5hbWVzW25vcm1hbGl6ZWRdID0gbmFtZTtcblx0XHRcdGFkZFRvR3Vlc3Nlcyhub3JtYWxpemVkLCBzcGxpdFsyXS5zcGxpdCgnICcpKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBnZXRab25lIChuYW1lLCBjYWxsZXIpIHtcblx0XHRuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKTtcblxuXHRcdHZhciB6b25lID0gem9uZXNbbmFtZV07XG5cdFx0dmFyIGxpbms7XG5cblx0XHRpZiAoem9uZSBpbnN0YW5jZW9mIFpvbmUpIHtcblx0XHRcdHJldHVybiB6b25lO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2Ygem9uZSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdHpvbmUgPSBuZXcgWm9uZSh6b25lKTtcblx0XHRcdHpvbmVzW25hbWVdID0gem9uZTtcblx0XHRcdHJldHVybiB6b25lO1xuXHRcdH1cblxuXHRcdC8vIFBhc3MgZ2V0Wm9uZSB0byBwcmV2ZW50IHJlY3Vyc2lvbiBtb3JlIHRoYW4gMSBsZXZlbCBkZWVwXG5cdFx0aWYgKGxpbmtzW25hbWVdICYmIGNhbGxlciAhPT0gZ2V0Wm9uZSAmJiAobGluayA9IGdldFpvbmUobGlua3NbbmFtZV0sIGdldFpvbmUpKSkge1xuXHRcdFx0em9uZSA9IHpvbmVzW25hbWVdID0gbmV3IFpvbmUoKTtcblx0XHRcdHpvbmUuX3NldChsaW5rKTtcblx0XHRcdHpvbmUubmFtZSA9IG5hbWVzW25hbWVdO1xuXHRcdFx0cmV0dXJuIHpvbmU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXROYW1lcyAoKSB7XG5cdFx0dmFyIGksIG91dCA9IFtdO1xuXG5cdFx0Zm9yIChpIGluIG5hbWVzKSB7XG5cdFx0XHRpZiAobmFtZXMuaGFzT3duUHJvcGVydHkoaSkgJiYgKHpvbmVzW2ldIHx8IHpvbmVzW2xpbmtzW2ldXSkgJiYgbmFtZXNbaV0pIHtcblx0XHRcdFx0b3V0LnB1c2gobmFtZXNbaV0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBvdXQuc29ydCgpO1xuXHR9XG5cblx0ZnVuY3Rpb24gYWRkTGluayAoYWxpYXNlcykge1xuXHRcdHZhciBpLCBhbGlhcywgbm9ybWFsMCwgbm9ybWFsMTtcblxuXHRcdGlmICh0eXBlb2YgYWxpYXNlcyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0YWxpYXNlcyA9IFthbGlhc2VzXTtcblx0XHR9XG5cblx0XHRmb3IgKGkgPSAwOyBpIDwgYWxpYXNlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0YWxpYXMgPSBhbGlhc2VzW2ldLnNwbGl0KCd8Jyk7XG5cblx0XHRcdG5vcm1hbDAgPSBub3JtYWxpemVOYW1lKGFsaWFzWzBdKTtcblx0XHRcdG5vcm1hbDEgPSBub3JtYWxpemVOYW1lKGFsaWFzWzFdKTtcblxuXHRcdFx0bGlua3Nbbm9ybWFsMF0gPSBub3JtYWwxO1xuXHRcdFx0bmFtZXNbbm9ybWFsMF0gPSBhbGlhc1swXTtcblxuXHRcdFx0bGlua3Nbbm9ybWFsMV0gPSBub3JtYWwwO1xuXHRcdFx0bmFtZXNbbm9ybWFsMV0gPSBhbGlhc1sxXTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBsb2FkRGF0YSAoZGF0YSkge1xuXHRcdGFkZFpvbmUoZGF0YS56b25lcyk7XG5cdFx0YWRkTGluayhkYXRhLmxpbmtzKTtcblx0XHR0ei5kYXRhVmVyc2lvbiA9IGRhdGEudmVyc2lvbjtcblx0fVxuXG5cdGZ1bmN0aW9uIHpvbmVFeGlzdHMgKG5hbWUpIHtcblx0XHRpZiAoIXpvbmVFeGlzdHMuZGlkU2hvd0Vycm9yKSB7XG5cdFx0XHR6b25lRXhpc3RzLmRpZFNob3dFcnJvciA9IHRydWU7XG5cdFx0XHRcdGxvZ0Vycm9yKFwibW9tZW50LnR6LnpvbmVFeGlzdHMoJ1wiICsgbmFtZSArIFwiJykgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAhbW9tZW50LnR6LnpvbmUoJ1wiICsgbmFtZSArIFwiJylcIik7XG5cdFx0fVxuXHRcdHJldHVybiAhIWdldFpvbmUobmFtZSk7XG5cdH1cblxuXHRmdW5jdGlvbiBuZWVkc09mZnNldCAobSkge1xuXHRcdHZhciBpc1VuaXhUaW1lc3RhbXAgPSAobS5fZiA9PT0gJ1gnIHx8IG0uX2YgPT09ICd4Jyk7XG5cdFx0cmV0dXJuICEhKG0uX2EgJiYgKG0uX3R6bSA9PT0gdW5kZWZpbmVkKSAmJiAhaXNVbml4VGltZXN0YW1wKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGxvZ0Vycm9yIChtZXNzYWdlKSB7XG5cdFx0aWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0Y29uc29sZS5lcnJvcihtZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0bW9tZW50LnR6IG5hbWVzcGFjZVxuXHQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cblx0ZnVuY3Rpb24gdHogKGlucHV0KSB7XG5cdFx0dmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDAsIC0xKSxcblx0XHRcdG5hbWUgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLFxuXHRcdFx0em9uZSA9IGdldFpvbmUobmFtZSksXG5cdFx0XHRvdXQgID0gbW9tZW50LnV0Yy5hcHBseShudWxsLCBhcmdzKTtcblxuXHRcdGlmICh6b25lICYmICFtb21lbnQuaXNNb21lbnQoaW5wdXQpICYmIG5lZWRzT2Zmc2V0KG91dCkpIHtcblx0XHRcdG91dC5hZGQoem9uZS5wYXJzZShvdXQpLCAnbWludXRlcycpO1xuXHRcdH1cblxuXHRcdG91dC50eihuYW1lKTtcblxuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHR0ei52ZXJzaW9uICAgICAgPSBWRVJTSU9OO1xuXHR0ei5kYXRhVmVyc2lvbiAgPSAnJztcblx0dHouX3pvbmVzICAgICAgID0gem9uZXM7XG5cdHR6Ll9saW5rcyAgICAgICA9IGxpbmtzO1xuXHR0ei5fbmFtZXMgICAgICAgPSBuYW1lcztcblx0dHouYWRkICAgICAgICAgID0gYWRkWm9uZTtcblx0dHoubGluayAgICAgICAgID0gYWRkTGluaztcblx0dHoubG9hZCAgICAgICAgID0gbG9hZERhdGE7XG5cdHR6LnpvbmUgICAgICAgICA9IGdldFpvbmU7XG5cdHR6LnpvbmVFeGlzdHMgICA9IHpvbmVFeGlzdHM7IC8vIGRlcHJlY2F0ZWQgaW4gMC4xLjBcblx0dHouZ3Vlc3MgICAgICAgID0gZ3Vlc3M7XG5cdHR6Lm5hbWVzICAgICAgICA9IGdldE5hbWVzO1xuXHR0ei5ab25lICAgICAgICAgPSBab25lO1xuXHR0ei51bnBhY2sgICAgICAgPSB1bnBhY2s7XG5cdHR6LnVucGFja0Jhc2U2MCA9IHVucGFja0Jhc2U2MDtcblx0dHoubmVlZHNPZmZzZXQgID0gbmVlZHNPZmZzZXQ7XG5cdHR6Lm1vdmVJbnZhbGlkRm9yd2FyZCAgID0gdHJ1ZTtcblx0dHoubW92ZUFtYmlndW91c0ZvcndhcmQgPSBmYWxzZTtcblxuXHQvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cdFx0SW50ZXJmYWNlIHdpdGggTW9tZW50LmpzXG5cdCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXHR2YXIgZm4gPSBtb21lbnQuZm47XG5cblx0bW9tZW50LnR6ID0gdHo7XG5cblx0bW9tZW50LmRlZmF1bHRab25lID0gbnVsbDtcblxuXHRtb21lbnQudXBkYXRlT2Zmc2V0ID0gZnVuY3Rpb24gKG1vbSwga2VlcFRpbWUpIHtcblx0XHR2YXIgem9uZSA9IG1vbWVudC5kZWZhdWx0Wm9uZSxcblx0XHRcdG9mZnNldDtcblxuXHRcdGlmIChtb20uX3ogPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYgKHpvbmUgJiYgbmVlZHNPZmZzZXQobW9tKSAmJiAhbW9tLl9pc1VUQykge1xuXHRcdFx0XHRtb20uX2QgPSBtb21lbnQudXRjKG1vbS5fYSkuX2Q7XG5cdFx0XHRcdG1vbS51dGMoKS5hZGQoem9uZS5wYXJzZShtb20pLCAnbWludXRlcycpO1xuXHRcdFx0fVxuXHRcdFx0bW9tLl96ID0gem9uZTtcblx0XHR9XG5cdFx0aWYgKG1vbS5feikge1xuXHRcdFx0b2Zmc2V0ID0gbW9tLl96LnV0Y09mZnNldChtb20pO1xuXHRcdFx0aWYgKE1hdGguYWJzKG9mZnNldCkgPCAxNikge1xuXHRcdFx0XHRvZmZzZXQgPSBvZmZzZXQgLyA2MDtcblx0XHRcdH1cblx0XHRcdGlmIChtb20udXRjT2Zmc2V0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0bW9tLnV0Y09mZnNldCgtb2Zmc2V0LCBrZWVwVGltZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRtb20uem9uZShvZmZzZXQsIGtlZXBUaW1lKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0Zm4udHogPSBmdW5jdGlvbiAobmFtZSwga2VlcFRpbWUpIHtcblx0XHRpZiAobmFtZSkge1xuXHRcdFx0dGhpcy5feiA9IGdldFpvbmUobmFtZSk7XG5cdFx0XHRpZiAodGhpcy5feikge1xuXHRcdFx0XHRtb21lbnQudXBkYXRlT2Zmc2V0KHRoaXMsIGtlZXBUaW1lKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGxvZ0Vycm9yKFwiTW9tZW50IFRpbWV6b25lIGhhcyBubyBkYXRhIGZvciBcIiArIG5hbWUgKyBcIi4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vdGltZXpvbmUvZG9jcy8jL2RhdGEtbG9hZGluZy8uXCIpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fVxuXHRcdGlmICh0aGlzLl96KSB7IHJldHVybiB0aGlzLl96Lm5hbWU7IH1cblx0fTtcblxuXHRmdW5jdGlvbiBhYmJyV3JhcCAob2xkKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdGlmICh0aGlzLl96KSB7IHJldHVybiB0aGlzLl96LmFiYnIodGhpcyk7IH1cblx0XHRcdHJldHVybiBvbGQuY2FsbCh0aGlzKTtcblx0XHR9O1xuXHR9XG5cblx0ZnVuY3Rpb24gcmVzZXRab25lV3JhcCAob2xkKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0XHRcdHRoaXMuX3ogPSBudWxsO1xuXHRcdFx0cmV0dXJuIG9sZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHRcdH07XG5cdH1cblxuXHRmbi56b25lTmFtZSA9IGFiYnJXcmFwKGZuLnpvbmVOYW1lKTtcblx0Zm4uem9uZUFiYnIgPSBhYmJyV3JhcChmbi56b25lQWJicik7XG5cdGZuLnV0YyAgICAgID0gcmVzZXRab25lV3JhcChmbi51dGMpO1xuXG5cdG1vbWVudC50ei5zZXREZWZhdWx0ID0gZnVuY3Rpb24obmFtZSkge1xuXHRcdGlmIChtYWpvciA8IDIgfHwgKG1ham9yID09PSAyICYmIG1pbm9yIDwgOSkpIHtcblx0XHRcdGxvZ0Vycm9yKCdNb21lbnQgVGltZXpvbmUgc2V0RGVmYXVsdCgpIHJlcXVpcmVzIE1vbWVudC5qcyA+PSAyLjkuMC4gWW91IGFyZSB1c2luZyBNb21lbnQuanMgJyArIG1vbWVudC52ZXJzaW9uICsgJy4nKTtcblx0XHR9XG5cdFx0bW9tZW50LmRlZmF1bHRab25lID0gbmFtZSA/IGdldFpvbmUobmFtZSkgOiBudWxsO1xuXHRcdHJldHVybiBtb21lbnQ7XG5cdH07XG5cblx0Ly8gQ2xvbmluZyBhIG1vbWVudCBzaG91bGQgaW5jbHVkZSB0aGUgX3ogcHJvcGVydHkuXG5cdHZhciBtb21lbnRQcm9wZXJ0aWVzID0gbW9tZW50Lm1vbWVudFByb3BlcnRpZXM7XG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobW9tZW50UHJvcGVydGllcykgPT09ICdbb2JqZWN0IEFycmF5XScpIHtcblx0XHQvLyBtb21lbnQgMi44LjErXG5cdFx0bW9tZW50UHJvcGVydGllcy5wdXNoKCdfeicpO1xuXHRcdG1vbWVudFByb3BlcnRpZXMucHVzaCgnX2EnKTtcblx0fSBlbHNlIGlmIChtb21lbnRQcm9wZXJ0aWVzKSB7XG5cdFx0Ly8gbW9tZW50IDIuNy4wXG5cdFx0bW9tZW50UHJvcGVydGllcy5feiA9IG51bGw7XG5cdH1cblxuXHRsb2FkRGF0YSh7XG5cdFx0XCJ2ZXJzaW9uXCI6IFwiMjAxOGVcIixcblx0XHRcInpvbmVzXCI6IFtcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58TE1UIEdNVHxnLjggMHwwMXwtMmxkWEguUXw0OGU1XCIsXG5cdFx0XHRcIkFmcmljYS9BY2NyYXxMTVQgR01UICswMDIwfC5RIDAgLWt8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yNkJiWC44IDZ0elguOCBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUJBayBNbkUgMUMwayBNbkUgMUJBayBNbkUgMUJBayBNbkV8NDFlNVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxMTVQgRUFUICswMjMwICswMjQ1fC0yci5nIC0zMCAtMnUgLTJKfDAxMjMxfC0xRjNDci5nIDNEenIuZyBva011IE1GWEp8NDdlNVwiLFxuXHRcdFx0XCJBZnJpY2EvQWxnaWVyc3xQTVQgV0VUIFdFU1QgQ0VUIENFU1R8LTkubCAwIC0xMCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEzNDM0MzEzMTIxMjM0MzEyMTN8LTJuY285LmwgY05iOS5sIEhBMCAxOUEwIDFpTTAgMTFjMCAxb28wIFdvMCAxcmMwIFFNMCAxRU0wIFVNMCBEQTAgSW1vMCByZDAgRGUwIDlYejAgMWZiMCAxYXAwIDE2SzAgMnlvMCBtRXAwIGh3TDAganhBMCAxMUEwIGREZDAgMTdiMCAxMUIwIDFjTjAgMkR5MCAxY04wIDFmQjAgMWNMMHwyNmU1XCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xMTVQgV0FUfC1kLkEgLTEwfDAxfC0yMnkwZC5BfDE3ZTZcIixcblx0XHRcdFwiQWZyaWNhL0Jpc3NhdXxMTVQgLTAxIEdNVHwxMi5rIDEwIDB8MDEyfC0ybGRYMCAyeG9vMHwzOWU0XCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98TE1UIENBVHwtMmEuayAtMjB8MDF8LTJHSmVhLmt8MjZlNVwiLFxuXHRcdFx0XCJBZnJpY2EvQ2Fpcm98RUVUIEVFU1R8LTIwIC0zMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xYklPMCB2YjAgMWlwMCAxMXowIDFpTjAgMW56MCAxMnAwIDFwejAgMTBOMCAxcHowIDE2cDAgMWp6MCBzM2QwIFZ6MCAxb04wIDExYjAgMW9PMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxV0wwIHJkMCAxUnowIHdwMCAxcGIwIDExZDAgMW9MMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFxTDAgWGQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMXBiMCAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW55MCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIFdMMCAxcU4wIFJiMCAxd3AwIE9uMCAxemQwIEx6MCAxRU4wIEZiMCBjMTAgOG4wIDhOZDAgZ0wwIGUxMCBtbjB8MTVlNlwiLFxuXHRcdFx0XCJBZnJpY2EvQ2FzYWJsYW5jYXxMTVQgV0VUIFdFU1QgQ0VUfHUuayAwIC0xMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMzEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdNbnQuRSAxMzBMdC5FIHJiMCBEZDAgZFZiMCBiNnAwIFRYMCBFb0IwIExMMCBnbmQwIHJ6MCA0M2QwIEFMMCAxTmQwIFhYMCAxQ3AwIHB6MCBkRXAwIDRtbjAgU3lOMCBBTDAgMU5kMCB3bjAgMUZCMCBEYjAgMXpkMCBMejAgMU5mMCB3TTAgY28wIGdvMCAxbzAwIHMwMCBkQTAgdmMwIDExQTAgQTAwIGUwMCB5MDAgMTFBMCB1TTAgZTAwIERjMCAxMUEwIHMwMCBlMDAgSU0wIFdNMCBtbzAgZ00wIExBMCBXTTAgakEwIGUwMCBSYzAgMTFBMCBlMDAgZTAwIFUwMCAxMUEwIDhvMCBlMDAgMTFBMCAxMUEwIDVBMCBlMDAgMTdjMCAxZkEwIDFhMDAgMWEwMCAxZkEwIDE3YzAgMWlvMCAxNG8wIDFsYzAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFsYzAgMTRvMCAxZkEwfDMyZTVcIixcblx0XHRcdFwiQWZyaWNhL0NldXRhfFdFVCBXRVNUIENFVCBDRVNUfDAgLTEwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yNUtOMCAxMXowIGRyZDAgMThwMCAzSFgwIDE3ZDAgMWZ6MCAxYTEwIDFpbzAgMWEwMCAxeTdvMCBMTDAgZ25kMCByejAgNDNkMCBBTDAgMU5kMCBYWDAgMUNwMCBwejAgZEVwMCA0VkIwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw4NWUzXCIsXG5cdFx0XHRcIkFmcmljYS9FbF9BYWl1bnxMTVQgLTAxIFdFVCBXRVNUfFEuTSAxMCAwIC0xMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMXJEejcuYyAxR1ZBNy5jIDZMMCBBTDAgMU5kMCBYWDAgMUNwMCBwejAgMWNCQjAgQUwwIDFOZDAgd24wIDFGQjAgRGIwIDF6ZDAgTHowIDFOZjAgd00wIGNvMCBnbzAgMW8wMCBzMDAgZEEwIHZjMCAxMUEwIEEwMCBlMDAgeTAwIDExQTAgdU0wIGUwMCBEYzAgMTFBMCBzMDAgZTAwIElNMCBXTTAgbW8wIGdNMCBMQTAgV00wIGpBMCBlMDAgUmMwIDExQTAgZTAwIGUwMCBVMDAgMTFBMCA4bzAgZTAwIDExQTAgMTFBMCA1QTAgZTAwIDE3YzAgMWZBMCAxYTAwIDFhMDAgMWZBMCAxN2MwIDFpbzAgMTRvMCAxbGMwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbGMwIDE0bzAgMWZBMHwyMGU0XCIsXG5cdFx0XHRcIkFmcmljYS9Kb2hhbm5lc2J1cmd8U0FTVCBTQVNUIFNBU1R8LTF1IC0yMCAtMzB8MDEyMTIxfC0yR0pkdSAxQWpkdSAxY0wwIDFjTjAgMWNMMHw4NGU1XCIsXG5cdFx0XHRcIkFmcmljYS9KdWJhfExNVCBDQVQgQ0FTVCBFQVR8LTI2LnMgLTIwIC0zMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTN8LTF5VzI2LnMgMXpLMDYucyAxNkwwIDFpTjAgMTdiMCAxamQwIDE3YjAgMWlwMCAxN3owIDFpMTAgMTdYMCAxaEIwIDE4bjAgMWhkMCAxOWIwIDFncDAgMTl6MCAxaU4wIDE3YjAgMWlwMCAxN3owIDFpMTAgMThuMCAxaGQwIDE4TDAgMWdOMCAxOWIwIDFncDAgMTl6MCAxaU4wIDE3ejAgMWkxMCAxN1gwIHlHZDBcIixcblx0XHRcdFwiQWZyaWNhL0toYXJ0b3VtfExNVCBDQVQgQ0FTVCBFQVR8LTJhLjggLTIwIC0zMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTMxfC0xeVcyYS44IDF6SzBhLjggMTZMMCAxaU4wIDE3YjAgMWpkMCAxN2IwIDFpcDAgMTd6MCAxaTEwIDE3WDAgMWhCMCAxOG4wIDFoZDAgMTliMCAxZ3AwIDE5ejAgMWlOMCAxN2IwIDFpcDAgMTd6MCAxaTEwIDE4bjAgMWhkMCAxOEwwIDFnTjAgMTliMCAxZ3AwIDE5ejAgMWlOMCAxN3owIDFpMTAgMTdYMCB5R2QwIEhqTDB8NTFlNVwiLFxuXHRcdFx0XCJBZnJpY2EvTW9ucm92aWF8TU1UIE1NVCBHTVR8SC44IEkudSAwfDAxMnwtMjNMemcuUSAyOEcwMS5tfDExZTVcIixcblx0XHRcdFwiQWZyaWNhL05kamFtZW5hfExNVCBXQVQgV0FTVHwtMTAuYyAtMTAgLTIwfDAxMjF8LTJsZTEwLmMgMkozYzAuYyBXbjB8MTNlNVwiLFxuXHRcdFx0XCJBZnJpY2EvU2FvX1RvbWV8TE1UIEdNVCBXQVR8QS5KIDAgLTEwfDAxMnwtMmxlMDAgNGk2TjBcIixcblx0XHRcdFwiQWZyaWNhL1RyaXBvbGl8TE1UIENFVCBDRVNUIEVFVHwtUS5JIC0xMCAtMjAgLTIwfDAxMjEyMTIxMzEyMTIxMjEyMTIxMjEyMTIxMzEyMzEyM3wtMjFKY1EuSSAxaG5CUS5JIHZ4MCA0aVAwIHh4MCA0ZU4wIEJiMCA3aXAwIFUwbjAgQTEwIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWRiMCAxZU4wIDFiYjAgMWUxMCAxY0wwIDFjMTAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFxMTAgZkFuMCAxZXAwIDFkYjAgQUtxMCBUQTAgMW8wMHwxMWU1XCIsXG5cdFx0XHRcIkFmcmljYS9UdW5pc3xQTVQgQ0VUIENFU1R8LTkubCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJuY285LmwgMThwYTkubCAxcU0wIERBMCAzVGMwIDExQjAgMXplMCBXTTAgN3owIDNkMCAxNEwwIDFjTjAgMWY5MCAxYXIwIDE2SjAgMWdYQjAgV00wIDFyQTAgMTFjMCBud28wIEtvMCAxY00wIDFjTTAgMXJBMCAxME0wIHp1TTAgMTBOMCAxYU4wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwfDIwZTVcIixcblx0XHRcdFwiQWZyaWNhL1dpbmRob2VrfCswMTMwIFNBU1QgU0FTVCBDQVQgV0FUfC0xdSAtMjAgLTMwIC0yMCAtMTB8MDEyMTM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LTJHSmR1IDFBamR1IDFjTDAgMVNxTDAgOUlvMCAxNlAwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjB8MzJlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FkYWt8TlNUIE5XVCBOUFQgQlNUIEJEVCBBSFNUIEhTVCBIRFR8YjAgYTAgYTAgYjAgYTAgYTAgYTAgOTB8MDEyMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1NYMCA4d1cwIGlCMCBRbGIwIDUyTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbTAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzMjZcIixcblx0XHRcdFwiQW1lcmljYS9BbmNob3JhZ2V8QVNUIEFXVCBBUFQgQUhTVCBBSERUIFlTVCBBS1NUIEFLRFR8YTAgOTAgOTAgYTAgOTAgOTAgOTAgODB8MDEyMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1QwMCA4d1gwIGlBMCBRbGIwIDUyTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbTAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzMGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxMTVQgQVNUfDQ2LjQgNDB8MDF8LTJrTnZSLlV8NDNlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0FyYWd1YWluYXxMTVQgLTAzIC0wMnwzYy5NIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHdMLmMgSGRLTC5jIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIGRNTjAgTHowIDF6ZDAgUmIwIDF3TjAgV24wIDF0QjAgUmIwIDF0QjAgV0wwIDF0QjAgUmIwIDF6ZDAgT24wIDFIQjAgRlgwIG55MTAgTHowfDE0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQnVlbm9zX0FpcmVzfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3AwIFJiMCAxd3AwIFRYMCBBNHAwIHVMMCAxcU4wIFdMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9DYXRhbWFyY2F8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMzIzMjEyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIHJsQjAgN0IwIDh6YjAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NvcmRvYmF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMzIzMjMyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIEE0cDAgdUwwIDFxTjAgV0wwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0p1anV5fENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzEyMTMyMzIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXplMCBUWDAgMWxkMCBXSzAgMXdwMCBUWDAgQTRwMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvTGFfUmlvamF8Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMjMyMzIxMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFFuMCBxTzAgMTZuMCBSYjAgMXdwMCBUWDAgcmxCMCA3QjAgOHpiMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvTWVuZG96YXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMxMjEyMTMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXUyMCBTTDAgMXZkMCBUYjAgMXdwMCBUVzAgcmkxMCBPcDAgN1RYMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvUmlvX0dhbGxlZ29zfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjMyMzIxMjMyfC0yMFVISC5jIHBLbkguYyBNbjAgMWlOMCBUYjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBMWDAgMUMxMCBNbjAgTU4wIDJqejAgTU4wIDRsWDAgdTEwIDVMYjAgMXBCMCBGbnowIHUxMCB1TDAgMXZkMCBTTDAgMXZkMCBTTDAgMXZkMCAxN3owIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCBhc24wIERiMCB6dmQwIEJ6MCAxdEIwIFRYMCAxd3AwIFJiMCAxd3AwIFJiMCAxd3AwIFRYMCBybEIwIDdCMCA4emIwIHVMMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9TYWx0YXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzEzMjMyMzJ8LTIwVUhILmMgcEtuSC5jIE1uMCAxaU4wIFRiMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIExYMCAxQzEwIE1uMCBNTjAgMmp6MCBNTjAgNGxYMCB1MTAgNUxiMCAxcEIwIEZuejAgdTEwIHVMMCAxdmQwIFNMMCAxdmQwIFNMMCAxdmQwIDE3ejAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIGFzbjAgRGIwIHp2ZDAgQnowIDF0QjAgVFgwIDF3cDAgUmIwIDF3cTAgUmEwIDF3cDAgVFgwIEE0cDAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1Nhbl9KdWFufENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMTIzMjMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBRbjAgcU8wIDE2bjAgUmIwIDF3cDAgVFgwIHJsZDAgbTEwIDhsYjAgdUwwXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1Nhbl9MdWlzfENNVCAtMDQgLTAzIC0wMnw0Zy5NIDQwIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzEyMTIxMjMyMTIxMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBYWDAgMXEyMCBTTDAgQU4wIHZEYjAgbTEwIDhsYjAgOEwwIGpkMCAxcU4wIFdMMCAxcU4wXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL1R1Y3VtYW58Q01UIC0wNCAtMDMgLTAyfDRnLk0gNDAgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMxMzIzMjEyMzIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdxMCBSYTAgMXdwMCBUWDAgcmxCMCA0TjAgOEJYMCB1TDAgMXFOMCBXTDBcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvVXNodWFpYXxDTVQgLTA0IC0wMyAtMDJ8NGcuTSA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMTIzMnwtMjBVSEguYyBwS25ILmMgTW4wIDFpTjAgVGIwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTFgwIDFDMTAgTW4wIE1OMCAyanowIE1OMCA0bFgwIHUxMCA1TGIwIDFwQjAgRm56MCB1MTAgdUwwIDF2ZDAgU0wwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAgenZkMCBCejAgMXRCMCBUWDAgMXdwMCBSYjAgMXdwMCBSYjAgMXdwMCBUWDAgcmtOMCA4cDAgOHpiMCB1TDBcIixcblx0XHRcdFwiQW1lcmljYS9DdXJhY2FvfExNVCAtMDQzMCBBU1R8NHouTCA0dSA0MHwwMTJ8LTJrVjdvLmQgMjhLTFMuZHwxNWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQXN1bmNpb258QU1UIC0wNCAtMDN8M08uRSA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTF4NTg5LmsgMURLTTkuayAzQ0wwIDNEZDAgMTBMMCAxcEIwIDEwbjAgMXBCMCAxMG4wIDFwQjAgMWNMMCAxZGQwIDFkYjAgMWRkMCAxY0wwIDFkZDAgMWNMMCAxZGQwIDFjTDAgMWRkMCAxZGIwIDFkZDAgMWNMMCAxZGQwIDFjTDAgMWRkMCAxY0wwIDFkZDAgMWRiMCAxZGQwIDFjTDAgMWxCMCAxNG4wIDFkZDAgMWNMMCAxZmQwIFdMMCAxcmQwIDFhTDAgMWRCMCBYejAgMXFwMCBYYjAgMXFOMCAxMEwwIDFyQjAgVFgwIDF0QjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMWNMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMWlwMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBUWDAgMXRCMCBUWDAgMXRCMCAxOVgwIDFhMTAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFpcDB8MjhlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0F0aWtva2FufENTVCBDRFQgQ1dUIENQVCBFU1R8NjAgNTAgNTAgNTAgNTB8MDEwMTIzNHwtMjVUUTAgMWluMCBSbmIwIDNqZTAgOHgzMCBpdzB8MjhlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0JhaGlhX0JhbmRlcmFzfExNVCBNU1QgQ1NUIFBTVCBNRFQgQ0RUfDcxIDcwIDYwIDgwIDYwIDUwfDAxMjEyMTIxMzE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTJ8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCBvdFgwIGdtTjAgUDJOMCAxM1ZkMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5XMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHw4NGUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvQmFoaWF8TE1UIC0wMyAtMDJ8MnkuNCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseHAuVSBIZExwLlUgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgbDVCMCBSYjB8MjdlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0JhcmJhZG9zfExNVCBCTVQgQVNUIEFEVHwzVy50IDNXLnQgNDAgMzB8MDEyMzIzMjMyMzJ8LTFRMEkxLnYganNNMCAxT0RDMS52IElMMCAxaXAwIDE3YjAgMWlwMCAxN2IwIDFsZDAgMTNiMHwyOGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQmVsZW18TE1UIC0wMyAtMDJ8M2QuVSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHdLLjQgSGRLSy40IDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwfDIwZTVcIixcblx0XHRcdFwiQW1lcmljYS9CZWxpemV8TE1UIENTVCAtMDUzMCBDRFR8NVEuTSA2MCA1dSA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzEzMXwtMmtCdTcuYyBmUEE3LmMgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDF3b3UgUmJ1IDF6Y3UgT251IDF6Y3UgT251IDF6Y3UgUmJ1IDF3b3UgUmJ1IDFmME11IHFuMCBseEIwIG1uMHw1N2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvQmxhbmMtU2FibG9ufEFTVCBBRFQgQVdUIEFQVHw0MCAzMCAzMCAzMHwwMTAyMzB8LTI1VFMwIDFpbjAgVUdwMCA4eDUwIGl1MHwxMWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQm9hX1Zpc3RhfExNVCAtMDQgLTAzfDQyLkUgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdlYuayBIZEtWLmsgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgc21wMCBXTDAgMXRCMCAyTDB8NjJlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0JvZ290YXxCTVQgLTA1IC0wNHw0VS5nIDUwIDQwfDAxMjF8LTJlYjczLkkgMzh5bzMuSSAyZW4wfDkwZTVcIixcblx0XHRcdFwiQW1lcmljYS9Cb2lzZXxQU1QgUERUIE1TVCBNV1QgTVBUIE1EVHw4MCA3MCA3MCA2MCA2MCA2MHwwMTAxMDIzNDI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyfC0yNjFxMCAxblgwIDExQjAgMW5YMCA4QzEwIEpDTDAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIERkMCAxS24wIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2FtYnJpZGdlX0JheXwtMDAgTVNUIE1XVCBNUFQgTUREVCBNRFQgQ1NUIENEVCBFU1R8MCA3MCA2MCA2MCA1MCA2MCA2MCA1MCA1MHwwMTIzMTQxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1Njc4NjUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxfC0yMUpjMCBSTzkwIDh4MjAgaXgwIExDTDAgMWZBMCB6Z08wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQTAgMW5YMCAySzAgV1EwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxNWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2FtcG9fR3JhbmRlfExNVCAtMDQgLTAzfDNDLnMgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yZ2x3bC53IEhkTGwudyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCAxRU4wIEx6MCAxQzEwIElMMCAxSEIwIERiMCAxSEIwIE9uMCAxemQwIE9uMCAxemQwIEx6MCAxemQwIFJiMCAxd04wIFduMCAxdEIwIFJiMCAxdEIwIFdMMCAxdEIwIFJiMCAxemQwIE9uMCAxSEIwIEZYMCAxQzEwIEx6MCAxSXAwIEhYMCAxemQwIE9uMCAxSEIwIElMMCAxd3AwIE9uMCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIFJiMCAxemQwIEx6MCAxQzEwIEx6MCAxQzEwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxemQwIE9uMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wIElMMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxSEIwIEZYMCAxS3AwIEZYMCAxSEIwIElMMCAxRU4wIEZYMCAxSEIwIEZYMCAxSEIwIElMMCAxRU4wfDc3ZTRcIixcblx0XHRcdFwiQW1lcmljYS9DYW5jdW58TE1UIENTVCBFU1QgRURUIENEVHw1TC40IDYwIDUwIDQwIDUwfDAxMjMyMzIzNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTJ8LTFVUUcwIDJxMm8wIHlMQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCBMejAgeEIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIERkMHw2M2U0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ2FyYWNhc3xDTVQgLTA0MzAgLTA0fDRyLkUgNHUgNDB8MDEyMTJ8LTJrVjd3LmsgMjhLTTIuayAxSXdPdSBrcW8wfDI5ZTVcIixcblx0XHRcdFwiQW1lcmljYS9DYXllbm5lfExNVCAtMDQgLTAzfDN0LmsgNDAgMzB8MDEyfC0ybXJ3dS5FIDJnV291LkV8NThlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL1BhbmFtYXxDTVQgRVNUfDVqLkEgNTB8MDF8LTJ1ZHVFLm98MTVlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0NoaWNhZ298Q1NUIENEVCBFU1QgQ1dUIENQVHw2MCA1MCA1MCA1MCA1MHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMjAxMDEwMTAxMDEwMzQwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgMXdwMCBUWDAgV04wIDFxTDAgMWNOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMTFCMCAxSHowIDE0cDAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCBSQjAgOHgzMCBpdzAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDkyZTVcIixcblx0XHRcdFwiQW1lcmljYS9DaGlodWFodWF8TE1UIE1TVCBDU1QgQ0RUIE1EVHw3NC5rIDcwIDYwIDUwIDYwfDAxMjEyMTIzMjMyNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDF8LTFVUUYwIGRlTDAgOGxjMCAxN2MwIDEwTTAgMWRkMCAyelFOMCAxbGIwIDE0cDAgMWxiMCAxNHEwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHw4MWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ29zdGFfUmljYXxTSk1UIENTVCBDRFR8NUEuZCA2MCA1MHwwMTIxMjEyMTIxfC0xWGQ2bi5MIDJsdTBuLkwgRGIwIDFLcDAgRGIwIHBSQjAgMTViMCAxa3AwIG1MMHwxMmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3Jlc3RvbnxNU1QgUFNUfDcwIDgwfDAxMHwtMjlEUjAgNDNCMHw1M2UyXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3VpYWJhfExNVCAtMDQgLTAzfDNJLmsgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmdsd2YuRSBIZExmLkUgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgNGExMCBIWDAgMXpkMCBPbjAgMUhCMCBJTDAgMXdwMCBPbjAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBSYjAgMXpkMCBMejAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBJTDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUtwMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMHw1NGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvRGFubWFya3NoYXZufExNVCAtMDMgLTAyIEdNVHwxZS5FIDMwIDIwIDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTN8LTJhNVdKLmsgMno1ZkouayAxOVUwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIERDMHw4XCIsXG5cdFx0XHRcIkFtZXJpY2EvRGF3c29uX0NyZWVrfFBTVCBQRFQgUFdUIFBQVCBNU1R8ODAgNzAgNzAgNzAgNzB8MDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNHwtMjVUTzAgMWluMCBVR3AwIDh4MTAgaXkwIDNOQjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCBNTDB8MTJlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0Rhd3NvbnxZU1QgWURUIFlXVCBZUFQgWUREVCBQU1QgUERUfDkwIDgwIDgwIDgwIDcwIDgwIDcwfDAxMDEwMjMwNDA1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjV8LTI1VE4wIDFpbjAgMW8xMCAxM1YwIFNlcjAgOHgwMCBpejAgTENMMCAxZkEwIGpyQTAgZk5kMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTNlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0RlbnZlcnxNU1QgTURUIE1XVCBNUFR8NzAgNjAgNjAgNjB8MDEwMTAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgbW4wIE9yZDAgOHgyMCBpeDAgTENOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDI2ZTVcIixcblx0XHRcdFwiQW1lcmljYS9EZXRyb2l0fExNVCBDU1QgRVNUIEVXVCBFUFQgRURUfDV3LmIgNjAgNTAgNDAgNDAgNDB8MDEyMzQyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyfC0yQ2dpci5OIHBlcXIuTiAxNTZMMCA4eDQwIGl2MCA2ZmQwIDExejAgWFFwMCAxY0wwIHMxMCAxVnowIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzdlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0VkbW9udG9ufExNVCBNU1QgTURUIE1XVCBNUFR8N3guUSA3MCA2MCA2MCA2MHwwMTIxMjEyMTIxMjEyMTM0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMnlkNHEuOCBzaGRxLjggMWluMCAxN2QwIGh6MCAyZEIwIDFmejAgMWExMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCBJR04wIDh4MjAgaXgwIDNOQjAgMTF6MCBMRkIwIDFjTDAgM0NwMCAxY0wwIDY2TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTBlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL0VpcnVuZXBlfExNVCAtMDUgLTA0fDRELnMgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdsdmsudyBIZExrLncgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgZFBCMCBPbjAgeVRkMCBkNVgwfDMxZTNcIixcblx0XHRcdFwiQW1lcmljYS9FbF9TYWx2YWRvcnxMTVQgQ1NUIENEVHw1VS5NIDYwIDUwfDAxMjEyMXwtMVhpRzMuYyAyRnZjMy5jIFdMMCAxcU4wIFdMMHwxMWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvVGlqdWFuYXxMTVQgTVNUIFBTVCBQRFQgUFdUIFBQVHw3TS40IDcwIDgwIDcwIDcwIDcwfDAxMjEyMzI0NTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVVRRTAgNFBYMCA4bU0wIDhsYzAgU04wIDFjTDAgcEhCMCA4M3IwIHpJMCA1TzEwIDFSejAgY09PMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIEJVcDAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBVMTAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyMGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydF9OZWxzb258UFNUIFBEVCBQV1QgUFBUIE1TVHw4MCA3MCA3MCA3MCA3MHwwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNHwtMjVUTzAgMWluMCBVR3AwIDh4MTAgaXkwIDNOQjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDB8MzllMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfV2F5bmV8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDQwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBRSTEwIERiMCBSQjAgOHgzMCBpdzAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDVUejAgMW8xMCBxTGIwIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9Gb3J0YWxlemF8TE1UIC0wMyAtMDJ8MnkgMzAgMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseHEgSGRMcSAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBuc3AwIFdMMCAxdEIwIDV6MCAybU4wIE9uMHwzNGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvR2xhY2VfQmF5fExNVCBBU1QgQURUIEFXVCBBUFR8M1guTSA0MCAzMCAzMCAzMHwwMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJJc0kwLmMgQ3dPMC5jIDFpbjAgVUdwMCA4eDUwIGl1MCBpcTEwIDExejAgSmcxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxOWUzXCIsXG5cdFx0XHRcIkFtZXJpY2EvR29kdGhhYnxMTVQgLTAzIC0wMnwzcS5VIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJhNVV4LjQgMno1ZHguNCAxOVUwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTdlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL0dvb3NlX0JheXxOU1QgTkRUIE5TVCBORFQgTldUIE5QVCBBU1QgQURUIEFERFR8M3UuUSAydS5RIDN1IDJ1IDJ1IDJ1IDQwIDMwIDIwfDAxMDIzMjMyMzIzMjMyMzI0NTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyNjc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2ODY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMjVUU3QuOCAxaW4wIERYYjAgMkhiWC44IFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFRYMCAxdEIwIFdMMCAxcU4wIFdMMCAxcU4wIDdVSHUgaXR1IDF0QjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDF0QjAgV0wwIDFsZDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIFMxMCBnMHUgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0bjEgMWxiMCAxNHAwIDFuVzAgMTFDMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6Y1ggT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NzZlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0dyYW5kX1R1cmt8S01UIEVTVCBFRFQgQVNUfDU3LmEgNTAgNDAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsMXVRLk8gMkhIQlEuTyAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIDVJcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzN2UyXCIsXG5cdFx0XHRcIkFtZXJpY2EvR3VhdGVtYWxhfExNVCBDU1QgQ0RUfDYyLjQgNjAgNTB8MDEyMTIxMjEyMXwtMjRLaFYuVSAyZWZYVi5VIEFuMCBtdGQwIE56MCBpZkIwIDE3YjAgekRCMCAxMXowfDEzZTVcIixcblx0XHRcdFwiQW1lcmljYS9HdWF5YXF1aWx8UU1UIC0wNSAtMDR8NWUgNTAgNDB8MDEyMXwtMXlWU0sgMnVJTEsgcnowfDI3ZTVcIixcblx0XHRcdFwiQW1lcmljYS9HdXlhbmF8TE1UIC0wMzQ1IC0wMyAtMDR8M1EuRSAzSiAzMCA0MHwwMTIzfC0yZHZVNy5rIDJyNkxRLmsgQnhiZnw4MGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvSGFsaWZheHxMTVQgQVNUIEFEVCBBV1QgQVBUfDRlLm8gNDAgMzAgMzAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMklzSEouQSB4enpKLkEgMWRiMCAzSTMwIDFpbjAgM0hYMCBJTDAgMUUxMCBNTDAgMXlOMCBQYjAgMUJkMCBNbjAgMUJkMCBSejAgMXcxMCBYYjAgMXcxMCBMWDAgMXcxMCBYYjAgMXcxMCBMejAgMUMxMCBKejAgMUUxMCBPTDAgMXlOMCBVbjAgMXFwMCBYYjAgMXFwMCAxMVgwIDF3MTAgTHowIDFIQjAgTFgwIDFDMTAgRlgwIDF3MTAgWGIwIDFxcDAgWGIwIDFCQjAgTFgwIDF0ZDAgWGIwIDFxcDAgWGIwIFJmMCA4eDUwIGl1MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgM1FwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDNRcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCA2aTEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzOWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvSGF2YW5hfEhNVCBDU1QgQ0RUfDV0LkEgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xTWV1dS5vIDcyenUubyBNTDAgc2xkMCBBbjAgMU5kMCBEYjAgMU5kMCBBbjAgNkVwMCBBbjAgMU5kMCBBbjAgSkRkMCBNbjAgMUFwMCBPbjAgMWZkMCAxMVgwIDFxTjAgV0wwIDF3cDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMTRuMCAxbGQwIDE0TDAgMWtOMCAxNWIwIDFrcDAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFmQjAgMTF6MCAxNHAwIDFuWDAgMTFCMCAxblgwIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTRuMCAxbGQwIDE0bjAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDFhMTAgMWluMCAxYTEwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMTdjMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTFBMCA2aTAwIFJjMCAxd28wIFUwMCAxdEEwIFJjMCAxd28wIFUwMCAxd28wIFUwMCAxemMwIFUwMCAxcU0wIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwfDIxZTVcIixcblx0XHRcdFwiQW1lcmljYS9IZXJtb3NpbGxvfExNVCBNU1QgQ1NUIFBTVCBNRFR8N24uUSA3MCA2MCA4MCA2MHwwMTIxMjEyMTMxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgb3RYMCBnbU4wIFAyTjAgMTNWZDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDY0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL0tub3h8Q1NUIENEVCBDV1QgQ1BUIEVTVHw2MCA1MCA1MCA1MCA1MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDQwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIDNOQjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAzQ24wIDh3cDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgejhvMCAxbzAwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvSW5kaWFuYS9NYXJlbmdvfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDQ1NDU0NTQ1NDU0MTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgZHlOMCAxMXowIDZmZDAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIGpyejAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWQTAgTEEwIDFCWDAgMWU2cDAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvUGV0ZXJzYnVyZ3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwNDAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0MTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCBualgwIFdOMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDNGYjAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMTljbzAgMW8wMCBSZDAgMXpiMCBPbzAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvVGVsbF9DaXR5fENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwNDU0NTQxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIDFvMTAgMTF6MCBnMHAwIDExejAgMW8xMCAxMXowIDFxTDAgV04wIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIGNhTDAgMWNMMCAxY04wIDFjTDAgMXFoZDAgMW8wMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvVmV2YXl8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzA0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIGtQQjAgQXduMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFsbmQwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1ZpbmNlbm5lc3xDU1QgQ0RUIENXVCBDUFQgRVNUIEVEVHw2MCA1MCA1MCA1MCA1MCA0MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDQ1NDU0MTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAxbzEwIDExejAgZzBwMCAxMXowIDFvMTAgMTF6MCAxcUwwIFdOMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxZnowIDFjTjAgV0wwIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCBjYUwwIDFjTDAgMWNOMCAxY0wwIDFxaGQwIDFvMDAgUmQwIDF6YjAgT28wIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL1dpbmFtYWN8Q1NUIENEVCBDV1QgQ1BUIEVTVCBFRFR8NjAgNTAgNTAgNTAgNTAgNDB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTA0NTQ1NDEwNTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIGpyejAgMWNMMCAxY04wIDFjTDAgMXFoZDAgMW8wMCBSZDAgMXphMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL0ludXZpa3wtMDAgUFNUIFBERFQgTVNUIE1EVHwwIDgwIDYwIDcwIDYwfDAxMjEzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LUZuQTAgdFdVMCAxZkEwIHdQZTAgMnB6MCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MzVlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL0lxYWx1aXR8LTAwIEVXVCBFUFQgRVNUIEVERFQgRURUIENTVCBDRFR8MCA0MCA0MCA1MCAzMCA0MCA2MCA1MHwwMTIzNDM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzU2NzM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1MzUzNTM1M3wtMTZLMDAgN25YMCBpdjAgTENMMCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFDMCAxblgwIDExQTAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY3ZTJcIixcblx0XHRcdFwiQW1lcmljYS9KYW1haWNhfEtNVCBFU1QgRURUfDU3LmEgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmwxdVEuTyAydU0xUS5PIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MHw5NGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvSnVuZWF1fFBTVCBQV1QgUFBUIFBEVCBZRFQgWVNUIEFLU1QgQUtEVHw4MCA3MCA3MCA3MCA4MCA5MCA5MCA4MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDQwMzAzMDM1Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3NnwtMTdUMjAgOHgxMCBpeTAgVm8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY00wIDFjTTAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNvMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDMzZTNcIixcblx0XHRcdFwiQW1lcmljYS9LZW50dWNreS9Mb3Vpc3ZpbGxlfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0NTQ1NDU0NTQ1NDU0MTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIDNGZDAgTmIwIExQZDAgMTF6MCBSQjAgOHgzMCBpdzAgQmIwIDEwTjAgMmJCMCA4aW4wIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIHh6MCBnc28wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZBMCBMQTAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9LZW50dWNreS9Nb250aWNlbGxvfENTVCBDRFQgQ1dUIENQVCBFU1QgRURUfDYwIDUwIDUwIDUwIDUwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXMwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgzMCBpdzAgU1dwMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQTAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvTGFfUGF6fENNVCBCU1QgLTA0fDR3LkEgM3cuQSA0MHwwMTJ8LTF4MzdyLm8gMTNiMHwxOWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTGltYXxMTVQgLTA1IC0wNHw1OC5BIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjF8LTJ0eUdQLm8gMWJEelAubyB6WDAgMWFOMCAxY0wwIDFjTjAgMWNMMCAxUHJCMCB6WDAgMU8xMCB6WDAgNkdwMCB6WDAgOThwMCB6WDB8MTFlNlwiLFxuXHRcdFx0XCJBbWVyaWNhL0xvc19BbmdlbGVzfFBTVCBQRFQgUFdUIFBQVHw4MCA3MCA3MCA3MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXEwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgxMCBpeTAgNVdwMSAxVmFYIDNkQTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTVlNlwiLFxuXHRcdFx0XCJBbWVyaWNhL01hY2Vpb3xMTVQgLTAzIC0wMnwybS5RIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmdseEIuOCBIZExCLjggMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcWUxMCB4YjAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgZE1OMCBMejAgOFExMCBXTDAgMXRCMCA1ejAgMm1OMCBPbjB8OTNlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL01hbmFndWF8TU1UIENTVCBFU1QgQ0RUfDVKLmMgNjAgNTAgNTB8MDEyMTMxMzEyMTIxMzEzMXwtMXF1aWUuTSAxeUFNZS5NIDRtbjAgOVVwMCBEejAgMUsxMCBEejAgczNGMCAxS0gwIERCMCA5SW4wIGs4cDAgMTlYMCAxbzMwIDExeTB8MjJlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL01hbmF1c3xMTVQgLTA0IC0wM3w0MC40IDQwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x2WC5VIEhkS1guVSAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCBkUEIwIE9uMHwxOWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWFydGluaXF1ZXxGRk1UIEFTVCBBRFR8NDQuayA0MCAzMHwwMTIxfC0ybVBUVC5FIDJMUGJULkUgMTlYMHwzOWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWF0YW1vcm9zfExNVCBDU1QgQ0RUfDZFIDYwIDUwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTFVUUcwIDJGakMwIDFuWDAgaTZwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIFUxMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDQ1ZTRcIixcblx0XHRcdFwiQW1lcmljYS9NYXphdGxhbnxMTVQgTVNUIENTVCBQU1QgTURUfDc1LkUgNzAgNjAgODAgNjB8MDEyMTIxMjEzMTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MXwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIG90WDAgZ21OMCBQMk4wIDEzVmQwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDFmQjAgV0wwIDFmQjAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwfDQ0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9NZW5vbWluZWV8Q1NUIENEVCBDV1QgQ1BUIEVTVHw2MCA1MCA1MCA1MCA1MHwwMTAxMDIzMDEwMTA0MTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxczAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDMwIGl3MCAxbzEwIDExejAgTENOMCAxZnowIDY0MTAgOUpiMCAxY00wIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw4NWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTWVyaWRhfExNVCBDU1QgRVNUIENEVHw1Vy5zIDYwIDUwIDUwfDAxMjEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzF8LTFVUUcwIDJxMm8wIDJoejAgd3UzMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHwxMWU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWV0bGFrYXRsYXxQU1QgUFdUIFBQVCBQRFQgQUtTVCBBS0RUfDgwIDcwIDcwIDcwIDkwIDgwfDAxMjAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzA0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTE3VDIwIDh4MTAgaXkwIFZvMTAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxaFUxMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxNGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTWV4aWNvX0NpdHl8TE1UIE1TVCBDU1QgQ0RUIENXVHw2QS5BIDcwIDYwIDUwIDUwfDAxMjEyMTIzMjMyNDIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVVRRjAgZGVMMCA4bGMwIDE3YzAgMTBNMCAxZGQwIGdFbjAgVFgwIDN4ZDAgSmIwIDZ6QjAgU0wwIGU1ZDAgMTdiMCAxUGZmMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxZkIwIFdMMCAxZkIwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMHwyMGU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvTWlxdWVsb258TE1UIEFTVCAtMDMgLTAyfDNJLkUgNDAgMzAgMjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0ybUtrZi5rIDJMVEFmLmsgZ1ExMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2MWUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTW9uY3RvbnxFU1QgQVNUIEFEVCBBV1QgQVBUfDUwIDQwIDMwIDMwIDMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMklzSDAgQ3dOMCAxaW4wIHpBbzAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFOZDAgQW4wIDFLMTAgTHowIDF6QjAgTlgwIDF1MTAgV24wIFMyMCA4eDUwIGl1MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDNDcDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNG4xIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJlWCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY0ZTNcIixcblx0XHRcdFwiQW1lcmljYS9Nb250ZXJyZXl8TE1UIENTVCBDRFR8NkYuZyA2MCA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xVVFHMCAyRmpDMCAxblgwIGk2cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjB8NDFlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL01vbnRldmlkZW98TE1UIE1NVCAtMDQgLTAzIC0wMzMwIC0wMjMwIC0wMiAtMDEzMHwzSS5QIDNJLlAgNDAgMzAgM3UgMnUgMjAgMXV8MDEyMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM1MzUzNjM2MzUzNjM2Mzc1MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzfC0ydFJVZi45IHNWYzAgOGpjZi45IDFkYjAgMWRjdSAxY0x1IDFkY3UgMWNMdSBpcmN1IDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMXFNdSBXTHUgMXFNdSBXTHUgMWZBdSAxY0x1IDFvMHUgMTF6dSBOQXUgM2pYdSB6WHUgRHEwdSAxOVh1IHBjdSBqejAgY20xMCAxOVgwIDZ0QjAgMWZidSAzbzB1IGpYMCA0dkIwIHh6MCAzQ3AwIG1tdSAxYTEwIElNdSBEYjAgNGMxMCB1TDAgMU5kMCBBbjAgMVNOMCB1TDAgbXAwIDI4TDAgaVBCMCB1bjAgMVNOMCB4ejAgMXpkMCBMejAgMXpkMCBSYjAgMXpkMCBPbjAgMXdwMCBSYjAgczhwMCAxZkIwIDFpcDAgMTF6MCAxbGQwIDE0bjAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDE0bjAgMWxkMCAxNG4wIDFsZDAgMTRuMCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MHwxN2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvVG9yb250b3xFU1QgRURUIEVXVCBFUFR8NTAgNDAgNDAgNDB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VFIwIDFpbjAgMTFXdSAxbnp1IDFmRDAgV0owIDF3cjAgTmIwIDFBcDAgT24wIDF6ZDAgT24wIDF3cDAgVFgwIDF0QjAgVFgwIDF0QjAgVFgwIDF0QjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDRrTTAgOHg0MCBpdjAgMW8xMCAxMXowIDFuWDAgMTF6MCAxbzEwIDExejAgMW8xMCAxcUwwIDExRDAgMW5YMCAxMUIwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY1ZTVcIixcblx0XHRcdFwiQW1lcmljYS9OYXNzYXV8TE1UIEVTVCBFRFR8NTkudSA1MCA0MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJrTnVPLnUgMjZYZE8udSAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDI0ZTRcIixcblx0XHRcdFwiQW1lcmljYS9OZXdfWW9ya3xFU1QgRURUIEVXVCBFUFR8NTAgNDAgNDAgNDB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI2MXQwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCAxYTEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCBSQjAgOHg0MCBpdjAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIxZTZcIixcblx0XHRcdFwiQW1lcmljYS9OaXBpZ29ufEVTVCBFRFQgRVdUIEVQVHw1MCA0MCA0MCA0MHwwMTAxMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VFIwIDFpbjAgUm5iMCAzamUwIDh4NDAgaXYwIDE5eU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwxNmUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9tZXxOU1QgTldUIE5QVCBCU1QgQkRUIFlTVCBBS1NUIEFLRFR8YjAgYTAgYTAgYjAgYTAgOTAgOTAgODB8MDEyMDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDU2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2fC0xN1NYMCA4d1cwIGlCMCBRbGIwIDUyTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCBjbDAgMTBxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwzOGUyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9yb25oYXxMTVQgLTAyIC0wMXwyOS5FIDIwIDEwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHhPLmsgSGRLTy5rIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIDFFTjAgRlgwIDFIQjAgTHowIG5zcDAgV0wwIDF0QjAgMkwwIDJwQjAgT24wfDMwZTJcIixcblx0XHRcdFwiQW1lcmljYS9Ob3J0aF9EYWtvdGEvQmV1bGFofE1TVCBNRFQgTVdUIE1QVCBDU1QgQ0RUfDcwIDYwIDYwIDYwIDYwIDUwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDIwIGl4MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9vMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9ydGhfRGFrb3RhL0NlbnRlcnxNU1QgTURUIE1XVCBNUFQgQ1NUIENEVHw3MCA2MCA2MCA2MCA2MCA1MHwwMTAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTI2MXIwIDFuWDAgMTFCMCAxblgwIFNnTjAgOHgyMCBpeDAgUXdOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIHMxMCAxVnowIExCMCAxQlgwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRvMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMFwiLFxuXHRcdFx0XCJBbWVyaWNhL05vcnRoX0Rha290YS9OZXdfU2FsZW18TVNUIE1EVCBNV1QgTVBUIENTVCBDRFR8NzAgNjAgNjAgNjAgNjAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRvMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiQW1lcmljYS9PamluYWdhfExNVCBNU1QgQ1NUIENEVCBNRFR8NlYuRSA3MCA2MCA1MCA2MHwwMTIxMjEyMzIzMjQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxfC0xVVFGMCBkZUwwIDhsYzAgMTdjMCAxME0wIDFkZDAgMnpRTjAgMWxiMCAxNHAwIDFsYjAgMTRxMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMWZCMCBXTDAgMWZCMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCBVMTAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyM2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvUGFuZ25pcnR1bmd8LTAwIEFTVCBBV1QgQVBUIEFERFQgQURUIEVEVCBFU1QgQ1NUIENEVHwwIDQwIDMwIDMwIDIwIDMwIDQwIDUwIDYwIDUwfDAxMjMxNDE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE2NzY3Njc2NzY4OTc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2N3wtMVhpTTAgUG5HMCA4eDUwIGl1MCBMQ0wwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxbzAwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUMwIDFuWDAgMTFBMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTRlMlwiLFxuXHRcdFx0XCJBbWVyaWNhL1BhcmFtYXJpYm98TE1UIFBNVCBQTVQgLTAzMzAgLTAzfDNFLkUgM0UuUSAzRS5BIDN1IDMwfDAxMjM0fC0ybkRVai5rIFdxbzAuYyBxYW5YLkkgMXlWWE4ub3wyNGU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUGhvZW5peHxNU1QgTURUIE1XVHw3MCA2MCA2MHwwMTAxMDIwMjAxMHwtMjYxcjAgMW5YMCAxMUIwIDFuWDAgU2dOMCA0QWwxIEFwMCAxZGIwIFNXcVggMWNMMHw0MmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydC1hdS1QcmluY2V8UFBNVCBFU1QgRURUfDROIDUwIDQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yOFJIYiAyRm5NYiAxOVgwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgaTZuMCAxblgwIDExQjAgMW5YMCBkNDMwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgM2lOMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIzZTVcIixcblx0XHRcdFwiQW1lcmljYS9SaW9fQnJhbmNvfExNVCAtMDUgLTA0fDR2LmMgNTAgNDB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZzLk0gSGRMcy5NIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwIE5CZDAgZDVYMHwzMWU0XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydG9fVmVsaG98TE1UIC0wNCAtMDN8NGYuQSA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJnbHZJLm8gSGRLSS5vIDFjYzAgMWUxMCAxYlgwIEV6ZDAgU28wIDF2QTAgTW4wIDFCQjAgTUwwIDFCQjAgelgwIHFlMTAgeGIwIDJlcDAgbnowIDFDMTAgelgwIDFDMTAgTFgwIDFDMTAgTW4wIEgyMTAgUmIwIDF0QjAgSUwwIDFGZDAgRlgwfDM3ZTRcIixcblx0XHRcdFwiQW1lcmljYS9QdWVydG9fUmljb3xBU1QgQVdUIEFQVHw0MCAzMCAzMHwwMTIwfC0xN2xVMCA3WFQwIGl1MHwyNGU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvUHVudGFfQXJlbmFzfFNNVCAtMDUgLTA0IC0wM3w0Ry5LIDUwIDQwIDMwfDAxMDIwMjEyMTIxMjEyMTIxMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTJxMmpoLmUgZkpBaC5lIDVrbkcuSyAxVnpoLmUgalJBRy5LIDFwYmguZSAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCBuSFgwIG9wMCBibHowIGtvMCBRZW8wIFdMMCAxemQwIE9uMCAxaXAwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFsZDAgMTRuMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWZCMCAxOVgwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFpcDAgMWZ6MCAxZkIwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDE5WDAgMWZCMCAxblgwIEcxMCAxRUwwIE9wMCAxemIwIFJkMCAxd24wIFJkMCA0Nm4wIEFwMFwiLFxuXHRcdFx0XCJBbWVyaWNhL1JhaW55X1JpdmVyfENTVCBDRFQgQ1dUIENQVHw2MCA1MCA1MCA1MHwwMTAxMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VFEwIDFpbjAgUm5iMCAzamUwIDh4MzAgaXcwIDE5eU4wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw4NDJcIixcblx0XHRcdFwiQW1lcmljYS9SYW5raW5fSW5sZXR8LTAwIENTVCBDRERUIENEVCBFU1R8MCA2MCA0MCA1MCA1MHwwMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTM0MzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzF8LXZEYzAga2V1MCAxZkEwIHpnTzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDI2ZTJcIixcblx0XHRcdFwiQW1lcmljYS9SZWNpZmV8TE1UIC0wMyAtMDJ8MmouQSAzMCAyMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2x4RS5vIEhkTEUubyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCAxRU4wIEZYMCAxSEIwIEx6MCBuc3AwIFdMMCAxdEIwIDJMMCAycEIwIE9uMHwzM2U1XCIsXG5cdFx0XHRcIkFtZXJpY2EvUmVnaW5hfExNVCBNU1QgTURUIE1XVCBNUFQgQ1NUfDZXLkEgNzAgNjAgNjAgNjAgNjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMzQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE1fC0yQUQ1MS5vIHVIZTEubyAxaW4wIHMyTDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTF6MCA2Nk4wIDFjTDAgMWNOMCAxOVgwIDFmQjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIE0zMCA4eDIwIGl4MCAxaXAwIDFjTDAgMWlwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDNOQjAgMWNMMCAxY04wfDE5ZTRcIixcblx0XHRcdFwiQW1lcmljYS9SZXNvbHV0ZXwtMDAgQ1NUIENERFQgQ0RUIEVTVHwwIDYwIDQwIDUwIDUwfDAxMjEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzQzMTMxMzEzMTMxMzQzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMXwtU25BMCBHV1MwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MjI5XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FudGFyZW18TE1UIC0wNCAtMDN8M0MuTSA0MCAzMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yZ2x3bC5jIEhkTGwuYyAxY2MwIDFlMTAgMWJYMCBFemQwIFNvMCAxdkEwIE1uMCAxQkIwIE1MMCAxQkIwIHpYMCBxZTEwIHhiMCAyZXAwIG56MCAxQzEwIHpYMCAxQzEwIExYMCAxQzEwIE1uMCBIMjEwIFJiMCAxdEIwIElMMCAxRmQwIEZYMCBOQmQwfDIxZTRcIixcblx0XHRcdFwiQW1lcmljYS9TYW50aWFnb3xTTVQgLTA1IC0wNCAtMDN8NEcuSyA1MCA0MCAzMHwwMTAyMDIxMjEyMTIxMjEyMTIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTJxMmpoLmUgZkpBaC5lIDVrbkcuSyAxVnpoLmUgalJBRy5LIDFwYmguZSAxMWQwIDFvTDAgMTFkMCAxb0wwIDExZDAgMW9MMCAxMWQwIDFwYjAgMTFkMCBuSFgwIG9wMCA5QnowIGpiMCAxb04wIGtvMCBRZW8wIFdMMCAxemQwIE9uMCAxaXAwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFsZDAgMTRuMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxY0wwIDFjTjAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMWZCMCAxOVgwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFpcDAgMWZ6MCAxZkIwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDE5WDAgMWZCMCAxblgwIEcxMCAxRUwwIE9wMCAxemIwIFJkMCAxd24wIFJkMCA0Nm4wIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIERkMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMCAxTmIwIEFwMHw2MmU1XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2FudG9fRG9taW5nb3xTRE1UIEVTVCBFRFQgLTA0MzAgQVNUfDRFIDUwIDQwIDR1IDQwfDAxMjEzMTMxMzEzMTMxNDE0fC0xdHRqayAxbEpNayBNbjAgNnNwMCBMYnUgMUNvdSB5THUgMVJBdSB3THUgMVFNdSB4enUgMVEwdSB4WHUgMVBBdSAxM2pCMCBlMDB8MjllNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1Nhb19QYXVsb3xMTVQgLTAzIC0wMnwzNi5zIDMwIDIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMmdsd1IudyBIZEtSLncgMWNjMCAxZTEwIDFiWDAgRXpkMCBTbzAgMXZBMCBNbjAgMUJCMCBNTDAgMUJCMCB6WDAgcFRkMCBQWDAgMmVwMCBuejAgMUMxMCB6WDAgMUMxMCBMWDAgMUMxMCBNbjAgSDIxMCBSYjAgMXRCMCBJTDAgMUZkMCBGWDAgMUVOMCBGWDAgMUhCMCBMejAgMUVOMCBMejAgMUMxMCBJTDAgMUhCMCBEYjAgMUhCMCBPbjAgMXpkMCBPbjAgMXpkMCBMejAgMXpkMCBSYjAgMXdOMCBXbjAgMXRCMCBSYjAgMXRCMCBXTDAgMXRCMCBSYjAgMXpkMCBPbjAgMUhCMCBGWDAgMUMxMCBMejAgMUlwMCBIWDAgMXpkMCBPbjAgMUhCMCBJTDAgMXdwMCBPbjAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBSYjAgMXpkMCBMejAgMUMxMCBMejAgMUMxMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMCBJTDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUhCMCBGWDAgMUtwMCBGWDAgMUhCMCBJTDAgMUVOMCBGWDAgMUhCMCBGWDAgMUhCMCBJTDAgMUVOMHwyMGU2XCIsXG5cdFx0XHRcIkFtZXJpY2EvU2NvcmVzYnlzdW5kfExNVCAtMDIgLTAxICswMHwxci5RIDIwIDEwIDB8MDEyMTMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMmE1V3cuOCAyejVldy44IDFhMDAgMWNLMCAxY0wwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0NTJcIixcblx0XHRcdFwiQW1lcmljYS9TaXRrYXxQU1QgUFdUIFBQVCBQRFQgWVNUIEFLU1QgQUtEVHw4MCA3MCA3MCA3MCA5MCA5MCA4MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDM0NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NXwtMTdUMjAgOHgxMCBpeTAgVm8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNvMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDkwZTJcIixcblx0XHRcdFwiQW1lcmljYS9TdF9Kb2huc3xOU1QgTkRUIE5TVCBORFQgTldUIE5QVCBORERUfDN1LlEgMnUuUSAzdSAydSAydSAydSAxdXwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMjMyMzIzMjMyMzIzMjMyNDUyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyNjIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjhvaXQuOCAxNEwwIDFuQjAgMWluMCAxZ20wIER6MCAxSkIwIDFjTDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxZkIwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIDFjTDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxME8wIGVLWC44IDE5WDAgMWlxMCBXTDAgMXFOMCBXTDAgMXFOMCBXTDAgMXRCMCBUWDAgMXRCMCBXTDAgMXFOMCBXTDAgMXFOMCA3VUh1IGl0dSAxdEIwIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxdEIwIFdMMCAxbGQwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNG4xIDFsYjAgMTRwMCAxblcwIDExQzAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemNYIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDExZTRcIixcblx0XHRcdFwiQW1lcmljYS9Td2lmdF9DdXJyZW50fExNVCBNU1QgTURUIE1XVCBNUFQgQ1NUfDdiLmsgNzAgNjAgNjAgNjAgNjB8MDEyMTM0MTIxMjEyMTIxMjEyMTIxMjE1fC0yQUQ0TS5FIHVIZE0uRSAxaW4wIFVHcDAgOHgyMCBpeDAgMW8xMCAxN2IwIDFpcDAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIGlzTjAgMWNMMCAzQ3AwIDFjTDAgMWNOMCAxMXowIDFxTjAgV0wwIHBNcDB8MTZlM1wiLFxuXHRcdFx0XCJBbWVyaWNhL1RlZ3VjaWdhbHBhfExNVCBDU1QgQ0RUfDVNLlEgNjAgNTB8MDEyMTIxMjF8LTFXR0diLjggMkVUY2IuOCBXTDAgMXFOMCBXTDAgR1JkMCBBTDB8MTFlNVwiLFxuXHRcdFx0XCJBbWVyaWNhL1RodWxlfExNVCBBU1QgQURUfDR6LjggNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yYTVUby5RIDMxTkJvLlEgMWNMMCAxY04wIDFjTDAgMWZCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NTZcIixcblx0XHRcdFwiQW1lcmljYS9UaHVuZGVyX0JheXxDU1QgRVNUIEVXVCBFUFQgRURUfDYwIDUwIDQwIDQwIDQwfDAxMjMxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDE0MTQxNDF8LTJxNVMwIDFpYU4wIDh4NDAgaXYwIFhOQjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDNDcDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDExZTRcIixcblx0XHRcdFwiQW1lcmljYS9WYW5jb3V2ZXJ8UFNUIFBEVCBQV1QgUFBUfDgwIDcwIDcwIDcwfDAxMDIzMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTI1VE8wIDFpbjAgVUdwMCA4eDEwIGl5MCAxbzEwIDE3YjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDIzZTVcIixcblx0XHRcdFwiQW1lcmljYS9XaGl0ZWhvcnNlfFlTVCBZRFQgWVdUIFlQVCBZRERUIFBTVCBQRFR8OTAgODAgODAgODAgNzAgODAgNzB8MDEwMTAyMzA0MDU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NTY1NjU2NXwtMjVUTjAgMWluMCAxbzEwIDEzVjAgU2VyMCA4eDAwIGl6MCBMQ0wwIDFmQTAgM05BMCB2cmQwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHwyM2UzXCIsXG5cdFx0XHRcIkFtZXJpY2EvV2lubmlwZWd8Q1NUIENEVCBDV1QgQ1BUfDYwIDUwIDUwIDUwfDAxMDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFJaTAgV0wwIDNORDAgMWluMCBKYXAwIFJiMCBhQ04wIDh4MzAgaXcwIDF0QjAgMTF6MCAxaXAwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcmQwIDEwTDAgMW9wMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDFjTDAgMWNOMCAxMXowIDZpMTAgV0wwIDZpMTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8NjZlNFwiLFxuXHRcdFx0XCJBbWVyaWNhL1lha3V0YXR8WVNUIFlXVCBZUFQgWURUIEFLU1QgQUtEVHw5MCA4MCA4MCA4MCA5MCA4MHwwMTIwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMTdUMTAgOHgwMCBpejAgVm8xMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIGNuMCAxMHEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwfDY0MlwiLFxuXHRcdFx0XCJBbWVyaWNhL1llbGxvd2tuaWZlfC0wMCBNU1QgTVdUIE1QVCBNRERUIE1EVHwwIDcwIDYwIDYwIDUwIDYwfDAxMjMxNDE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MTUxNTE1MXwtMXBkQTAgaGl4MCA4eDIwIGl4MCBMQ0wwIDFmQTAgemdPMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjB8MTllM1wiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL0Nhc2V5fC0wMCArMDggKzExfDAgLTgwIC1iMHwwMTIxMjEyMXwtMnEwMCAxRGpTMCBUOTAgNDBQMCBLTDAgYmx6MCAzbTEwfDEwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvRGF2aXN8LTAwICswNyArMDV8MCAtNzAgLTUwfDAxMDEyMTIxfC12eW8wIGlYdDAgYWxqMCAxRDd2MCBWQjAgM1duMCBLTjB8NzBcIixcblx0XHRcdFwiQW50YXJjdGljYS9EdW1vbnREVXJ2aWxsZXwtMDAgKzEwfDAgLWEwfDAxMDF8LVUwbzAgY2ZxMCBiRm0wfDgwXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvTWFjcXVhcmllfEFFU1QgQUVEVCAtMDAgKzExfC1hMCAtYjAgMCAtYjB8MDEwMjAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxM3wtMjlFODAgMTlYMCA0U0wwIDFheXkwIEx2czAgMWNNMCAxbzAwIFJjMCAxd28wIFJjMCAxd28wIFUwMCAxd28wIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMXFNMCBXTTAgMXFNMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXdvMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMUEwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDExQTAgMW8wMCAxaW8wIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWEwMCAxaW8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMHwxXCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvTWF3c29ufC0wMCArMDYgKzA1fDAgLTYwIC01MHwwMTJ8LUNFbzAgMmZ5azB8NjBcIixcblx0XHRcdFwiUGFjaWZpYy9BdWNrbGFuZHxOWk1UIE5aU1QgTlpTVCBOWkRUfC1idSAtY3UgLWMwIC1kMHwwMTAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyM3wtMUdDVnUgTHowIDF0QjAgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFvMHUgMTRudSAxbGN1IDE0bnUgMWxjdSAxbGJ1IDExQXUgMW5YdSAxMUF1IDFuWHUgMTFBdSAxblh1IDExQXUgMW5YdSAxMUF1IDFxTHUgV011IDFxTHUgMTFBdSAxbjFidSBJTTAgMUMwMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXFNMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMHwxNGU1XCIsXG5cdFx0XHRcIkFudGFyY3RpY2EvUGFsbWVyfC0wMCAtMDMgLTA0IC0wMnwwIDMwIDQwIDIwfDAxMjEyMTIxMjEyMTMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LWNhbzAgbkQwIDF2ZDAgU0wwIDF2ZDAgMTd6MCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgYXNuMCBEYjAganNOMCAxNE4wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMWNMMCAxY04wIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFmQjAgMTlYMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCAxN2IwIDFpcDAgMTF6MCAxaXAwIDFmejAgMWZCMCAxMXowIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgV0wwIDFxTjAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMW8xMCAxOVgwIDFmQjAgMW5YMCBHMTAgMUVMMCBPcDAgMXpiMCBSZDAgMXduMCBSZDAgNDZuMCBBcDB8NDBcIixcblx0XHRcdFwiQW50YXJjdGljYS9Sb3RoZXJhfC0wMCAtMDN8MCAzMHwwMXxnT28wfDEzMFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL1N5b3dhfC0wMCArMDN8MCAtMzB8MDF8LXZzMDB8MjBcIixcblx0XHRcdFwiQW50YXJjdGljYS9Ucm9sbHwtMDAgKzAwICswMnwwIDAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfDFwdW8wIGhkMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MFwiLFxuXHRcdFx0XCJBbnRhcmN0aWNhL1Zvc3Rva3wtMDAgKzA2fDAgLTYwfDAxfC10akEwfDI1XCIsXG5cdFx0XHRcIkV1cm9wZS9Pc2xvfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXdNMCBRbTAgVzZvMCA1cGYwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgd0pjMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMXFNMCBXTTAgenBjMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NjJlNFwiLFxuXHRcdFx0XCJBc2lhL1JpeWFkaHxMTVQgKzAzfC0zNi5RIC0zMHwwMXwtVHZENi5RfDU3ZTVcIixcblx0XHRcdFwiQXNpYS9BbG1hdHl8TE1UICswNSArMDYgKzA3fC01Ny5NIC01MCAtNjAgLTcwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjNTcuTSBlVW83Lk0gMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTB8MTVlNVwiLFxuXHRcdFx0XCJBc2lhL0FtbWFufExNVCBFRVQgRUVTVHwtMm4uSSAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTF5VzJuLkkgMUhpTW4uSSBLTDAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxcGQwIDFkejAgMWNwMCAxMWIwIDFvcDAgMTFiMCBmTzEwIDFkYjAgMWUxMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMXBkMCAxMG4wIDFsZDAgMTRuMCAxaEIwIDE1YjAgMWlwMCAxOVgwIDFjTjAgMWNMMCAxY04wIDE3YjAgMWxkMCAxNG8wIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFTbzAgeTAwIDFmYzAgMWRjMCAxY28wIDFkYzAgMWNNMCAxY00wIDFjTTAgMW8wMCAxMUEwIDFsYzAgMTdjMCAxY00wIDFjTTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDRiWDAgRGQwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMHwyNWU1XCIsXG5cdFx0XHRcIkFzaWEvQW5hZHlyfExNVCArMTIgKzEzICsxNCArMTF8LWJOLlUgLWMwIC1kMCAtZTAgLWIwfDAxMjMyMTIxMjEyMTIxMjEyMTIxMjE0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTQxfC0xUGNiTi5VIGVVbk4uVSAyM0NMMCAxZGIwIDJxMTAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAyc3AwIFdNMHwxM2UzXCIsXG5cdFx0XHRcIkFzaWEvQXF0YXV8TE1UICswNCArMDUgKzA2fC0zbC40IC00MCAtNTAgLTYwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMVBjM2wuNCBlVW5sLjQgMjRQWDAgMnBYMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTB8MTVlNFwiLFxuXHRcdFx0XCJBc2lhL0FxdG9iZXxMTVQgKzA0ICswNSArMDZ8LTNNLkUgLTQwIC01MCAtNjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjM00uRSBlVW5NLkUgMjNDTDAgM0RiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMHwyN2U0XCIsXG5cdFx0XHRcIkFzaWEvQXNoZ2FiYXR8TE1UICswNCArMDUgKzA2fC0zUi53IC00MCAtNTAgLTYwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTJ8LTFQYzNSLncgZVVuUi53IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTB8NDFlNFwiLFxuXHRcdFx0XCJBc2lhL0F0eXJhdXxMTVQgKzAzICswNSArMDYgKzA0fC0zci5JIC0zMCAtNTAgLTYwIC00MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzI0MjMyMzIzMjMyMzIzMjMyNDI0MjQyNDI0MnwtMVBjM3IuSSBlVW9yLkkgMjRQVzAgMnBYMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDJzcDAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwXCIsXG5cdFx0XHRcIkFzaWEvQmFnaGRhZHxCTVQgKzAzICswNHwtMlYuQSAtMzAgLTQwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjZCZVYuQSAyQUNuVi5BIDExYjAgMWNwMCAxZHowIDFkZDAgMWRiMCAxY04wIDFjcDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxZGUwIDFkYzAgMWRjMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFkYzAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxZGMwIDFkYzAgMWNNMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWRjMCAxZGMwIDFjTTAgMWRjMCAxY00wIDFkYzAgMWNNMCAxZGMwfDY2ZTVcIixcblx0XHRcdFwiQXNpYS9RYXRhcnxMTVQgKzA0ICswM3wtM3EuOCAtNDAgLTMwfDAxMnwtMjFKZnEuOCAyN0JYcS44fDk2ZTRcIixcblx0XHRcdFwiQXNpYS9CYWt1fExNVCArMDMgKzA0ICswNXwtM2oubyAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjM2oubyAxalVvai5vIFdDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIDFjTTAgOUplMCAxbzAwIDExejAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDI3ZTVcIixcblx0XHRcdFwiQXNpYS9CYW5na29rfEJNVCArMDd8LTZHLjQgLTcwfDAxfC0yMThTRy40fDE1ZTZcIixcblx0XHRcdFwiQXNpYS9CYXJuYXVsfExNVCArMDYgKzA3ICswOHwtNXogLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMjFTNXogcENueiAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBwOTAgTEUwIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmQwXCIsXG5cdFx0XHRcIkFzaWEvQmVpcnV0fEVFVCBFRVNUfC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yMWFxMCAxb24wIDE0MTAgMWRiMCAxOUIwIDFpbjAgMWlwMCBXTDAgMWxRcDAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIDExYjAgcTZOMCBFbjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgMTFiMCAxb3AwIDExYjAgZEExMCAxN2IwIDFpTjAgMTdiMCAxaU4wIDE3YjAgMWlOMCAxN2IwIDF2QjAgU0wwIDFtcDAgMTN6MCAxaU4wIDE3YjAgMWlOMCAxN2IwIDFqZDAgMTJuMCAxYTEwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwfDIyZTVcIixcblx0XHRcdFwiQXNpYS9CaXNoa2VrfExNVCArMDUgKzA2ICswN3wtNFcubyAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTFQYzRXLm8gZVVuVy5vIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMmUwMCAxdFgwIDE3YjAgMWlwMCAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDFjUHUgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMHw4N2U0XCIsXG5cdFx0XHRcIkFzaWEvQnJ1bmVpfExNVCArMDczMCArMDh8LTdELkUgLTd1IC04MHwwMTJ8LTFLSVRELkUgZ0RjOS5FfDQyZTRcIixcblx0XHRcdFwiQXNpYS9Lb2xrYXRhfE1NVCBJU1QgKzA2MzB8LTVsLmEgLTV1IC02dXwwMTIxMjF8LTJ6T3RsLmEgMXIyTFAuYSAxdW4wIEhCMCA3elgwfDE1ZTZcIixcblx0XHRcdFwiQXNpYS9DaGl0YXxMTVQgKzA4ICswOSArMTB8LTd4LlEgLTgwIC05MCAtYTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzEyfC0yMVE3eC5RIHBBbnguUSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCAzcmUwfDMzZTRcIixcblx0XHRcdFwiQXNpYS9DaG9pYmFsc2FufExNVCArMDcgKzA4ICsxMCArMDl8LTdDIC03MCAtODAgLWEwIC05MHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDI0MjQyfC0yQVBIQyAyVWtvQyBjS24wIDFkYTAgMWRkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgNmhEMCAxMXowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgM0RiMCBoMWYwIDFjSjAgMWNQMCAxY0owfDM4ZTNcIixcblx0XHRcdFwiQXNpYS9TaGFuZ2hhaXxDU1QgQ0RUfC04MCAtOTB8MDEwMTAxMDEwMTAxMDEwMTB8LTFjMUkwIExYMCAxNnAwIDFqejAgMU15cDAgUmIwIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejB8MjNlNlwiLFxuXHRcdFx0XCJBc2lhL0NvbG9tYm98TU1UICswNTMwICswNiArMDYzMHwtNWoudyAtNXUgLTYwIC02dXwwMTIzMTMyMXwtMnpPdGoudyAxckZiTi53IDF6enUgN0FwdSAyM2R6MCAxMXp1IG4zY3V8MjJlNVwiLFxuXHRcdFx0XCJBc2lhL0RoYWthfEhNVCArMDYzMCArMDUzMCArMDYgKzA3fC01Ui5rIC02dSAtNXUgLTYwIC03MHwwMTIxMzQzfC0xOExGUi5rIDF1bm4uayBIQjAgbTZuMCAya3hidSAxaTAwfDE2ZTZcIixcblx0XHRcdFwiQXNpYS9EYW1hc2N1c3xMTVQgRUVUIEVFU1R8LTJwLmMgLTIwIC0zMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjFKZXAuYyBIZXAuYyAxN2IwIDFpcDAgMTdiMCAxaXAwIDE3YjAgMWlwMCAxOVgwIDF4UkIwIDExWDAgMW9OMCAxMEwwIDFwQjAgMTFiMCAxb04wIDEwTDAgMW1wMCAxM1gwIDFvTjAgMTFiMCAxcGQwIDExYjAgMW9OMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMXBkMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDFwZDAgMTFiMCAxb04wIE5iMCAxQU4wIE5iMCBiY3AwIDE5WDAgMWdwMCAxOVgwIDNsZDAgMXhYMCBWZDAgMUJ6MCBTcDAgMXZYMCAxMHAwIDFkejAgMWNOMCAxY0wwIDFkYjAgMWRiMCAxZzEwIDFhbjAgMWFwMCAxZGIwIDFmZDAgMWRiMCAxY04wIDFkYjAgMWRkMCAxZGIwIDFjcDAgMWR6MCAxYzEwIDFkWDAgMWNOMCAxZGIwIDFkZDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMTl6MCAxZkIwIDFxTDAgMTFCMCAxb24wIFdwMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFuWDAgMTFCMCAxblgwIDExQjAgMXFMMCBXTjAgMXFMMHwyNmU1XCIsXG5cdFx0XHRcIkFzaWEvRGlsaXxMTVQgKzA4ICswOXwtOG0uayAtODAgLTkwfDAxMjEyfC0ybGU4bS5rIDFkblhtLmsgMW5mQTAgWGxkMHwxOWU0XCIsXG5cdFx0XHRcIkFzaWEvRHViYWl8TE1UICswNHwtM0YuYyAtNDB8MDF8LTIxSmZGLmN8MzllNVwiLFxuXHRcdFx0XCJBc2lhL0R1c2hhbmJlfExNVCArMDUgKzA2ICswN3wtNHouYyAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjF8LTFQYzR6LmMgZVVuei5jIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMmhCMHw3NmU0XCIsXG5cdFx0XHRcIkFzaWEvRmFtYWd1c3RhfExNVCBFRVQgRUVTVCArMDN8LTJmLk0gLTIwIC0zMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVZjMmYuTSAyYTNjZi5NIDFjTDAgMXFwMCBYejAgMTlCMCAxOVgwIDFmQjAgMWRiMCAxY3AwIDFjTDAgMWZCMCAxOVgwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxbzMwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDE1VTAgMktzMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMFwiLFxuXHRcdFx0XCJBc2lhL0dhemF8RUVUIEVFU1QgSVNUIElEVHwtMjAgLTMwIC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xYzJxMCA1UmIwIDEwcjAgMXB4MCAxME4wIDFwejAgMTZwMCAxakIwIDE2cDAgMWp4MCBwQmQwIFZ6MCAxb04wIDExYjAgMW9PMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTFkMCAxb0wwIGRXMCBoZkIwIERiMCAxZkIwIFJiMCBucEIwIDExejAgMUMxMCBJTDAgMXMxMCAxMG4wIDFvMTAgV0wwIDF6ZDAgT24wIDFsZDAgMTF6MCAxbzEwIDE0bjAgMW8xMCAxNG4wIDFuZDAgMTJuMCAxbmQwIFh6MCAxcTEwIDEybjAgTTEwIEMwMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMW8wMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDE3YzAgMWlvMCAxOE4wIDFiejAgMTl6MCAxZ3AwIDE2MTAgMWlMMCAxMXowIDFvMTAgMTRvMCAxbEExIFNLWCAxeGQxIE1LWCAxQU4wIDFhMDAgMWZBMCAxY0wwIDFjTjAgMW5YMCAxMjEwIDFuejAgMTIyMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMHwxOGU1XCIsXG5cdFx0XHRcIkFzaWEvSGVicm9ufEVFVCBFRVNUIElTVCBJRFR8LTIwIC0zMCAtMjAgLTMwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xYzJxMCA1UmIwIDEwcjAgMXB4MCAxME4wIDFwejAgMTZwMCAxakIwIDE2cDAgMWp4MCBwQmQwIFZ6MCAxb04wIDExYjAgMW9PMCAxME4wIDFwejAgMTBOMCAxcGIwIDEwTjAgMXBiMCAxME4wIDFwYjAgMTBOMCAxcHowIDEwTjAgMXBiMCAxME4wIDFwYjAgMTFkMCAxb0wwIGRXMCBoZkIwIERiMCAxZkIwIFJiMCBucEIwIDExejAgMUMxMCBJTDAgMXMxMCAxMG4wIDFvMTAgV0wwIDF6ZDAgT24wIDFsZDAgMTF6MCAxbzEwIDE0bjAgMW8xMCAxNG4wIDFuZDAgMTJuMCAxbmQwIFh6MCAxcTEwIDEybjAgTTEwIEMwMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMW8wMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDE3YzAgMWlvMCAxOE4wIDFiejAgMTl6MCAxZ3AwIDE2MTAgMWlMMCAxMkwwIDFtTjAgMTRvMCAxbGMwIFRiMCAxeGQxIE1LWCBiQjAgY24wIDFjTjAgMWEwMCAxZkEwIDFjTDAgMWNOMCAxblgwIDEyMTAgMW56MCAxMjIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIDExQjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCBXTjAgMXFMMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxcUwwfDI1ZTRcIixcblx0XHRcdFwiQXNpYS9Ib19DaGlfTWluaHxMTVQgUExNVCArMDcgKzA4ICswOXwtNzYuRSAtNzYudSAtNzAgLTgwIC05MHwwMTIzNDIzMjMyfC0yeUM3Ni5FIGJLMDAuYSAxaDdiNi51IDVsejAgMThvMCAzT3EwIGs1YjAgYVcwMCBCQU0wfDkwZTVcIixcblx0XHRcdFwiQXNpYS9Ib25nX0tvbmd8TE1UIEhLVCBIS1NUIEpTVHwtN0EuRyAtODAgLTkwIC05MHwwMTIxMzEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yQ0ZIQS5HIDFzRVA2LkcgMWNMMCB5bHUgOTNYMCAxcVF1IDF0WDAgUmQwIDFJbjAgTkIwIDFjTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxa0wwIDE0TjAgMW5YMCBVMTAgMXR6MCBVMTAgMXduMCBSZDAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXR6MCBVMTAgMXduMCBSZDAgMXduMCBSZDAgMXduMCBVMTAgMXR6MCBVMTAgMXR6MCAxN2QwIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCBzMTAgMVZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDZmZDAgMTRuMHw3M2U1XCIsXG5cdFx0XHRcIkFzaWEvSG92ZHxMTVQgKzA2ICswNyArMDh8LTY2LkEgLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yQVBHNi5BIDJVa282LkEgY0tuMCAxZGIwIDFkZDAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFmQjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDZoRDAgMTF6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIGtFcDAgMWNKMCAxY1AwIDFjSjB8ODFlM1wiLFxuXHRcdFx0XCJBc2lhL0lya3V0c2t8SU1UICswNyArMDggKzA5fC02Vi41IC03MCAtODAgLTkwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yMXpHVi41IHBqWFYuNSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHw2MGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9Jc3RhbmJ1bHxJTVQgRUVUIEVFU1QgKzA0ICswM3wtMVUuVSAtMjAgLTMwIC00MCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjM0MzQzNDM0MzQyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTI0fC0yb2dOVS5VIGR6elUuVSAxMWIwIDh0QjAgMW9uMCAxNDEwIDFkYjAgMTlCMCAxaW4wIDNSZDAgVW4wIDFvTjAgMTFiMCB6U3AwIENMMCBtTjAgMVZ6MCAxZ04wIDFwejAgNVJkMCAxZnowIDF5cDAgTUwwIDFrcDAgMTdiMCAxaXAwIDE3YjAgMWZCMCAxOVgwIDFqQjAgMThMMCAxaXAwIDE3ejAgcWRkMCB4WDAgM1MxMCBUejAgZEExMCAxMXowIDFvMTAgMTF6MCAxcU4wIDExejAgMXplMCAxMUIwIFdNMCAxcU8wIFdJMCAxblgwIDFyQjAgMTBMMCAxMUIwIDFpbjAgMTdkMCAxaW4wIDJwWDAgMTlFMCAxZlUwIDE2UTAgMWlJMCAxNlEwIDFpSTAgMVZkMCBwYjAgM0twMCAxNG8wIDFkZTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV08wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgWGMwIDFxbzAgV00wIDFxTTAgMTFBMCAxbzAwIDEyMDAgMW5BMCAxMUEwIDF0QTAgVTAwIDE1dzB8MTNlNlwiLFxuXHRcdFx0XCJBc2lhL0pha2FydGF8Qk1UICswNzIwICswNzMwICswOSArMDggV0lCfC03Ny5jIC03ayAtN3UgLTkwIC04MCAtNzB8MDEyMzI0MjV8LTFRMFRrIGx1TTAgbVB6TyA4dld1IDZrcHUgNFBYdSB4aGN1fDMxZTZcIixcblx0XHRcdFwiQXNpYS9KYXlhcHVyYXxMTVQgKzA5ICswOTMwIFdJVHwtOW0uTSAtOTAgLTl1IC05MHwwMTIzfC0xdXU5bS5NIHNNTW0uTSBMNG51fDI2ZTRcIixcblx0XHRcdFwiQXNpYS9KZXJ1c2FsZW18Sk1UIElTVCBJRFQgSUREVHwtMmsuRSAtMjAgLTMwIC00MHwwMTIxMjEyMTIxMjEzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjZCZWsuRSBTeU1rLkUgNVJiMCAxMHIwIDFweDAgMTBOMCAxcHowIDE2cDAgMWpCMCAxNnAwIDFqeDAgM0xCMCBFbTAgb3IwIDFjbjAgMWRCMCAxNm4wIDEwTzAgMWphMCAxdEMwIDE0bzAgMWNNMCAxYTAwIDExQTAgMU5hMCBBbjAgMU1QMCBBSjAgMUtwMCBMQzAgMW9vMCBXbDAgRVFOMCBEYjAgMWZCMCBSYjAgbnBCMCAxMXowIDFDMTAgSUwwIDFzMTAgMTBuMCAxbzEwIFdMMCAxemQwIE9uMCAxbGQwIDExejAgMW8xMCAxNG4wIDFvMTAgMTRuMCAxbmQwIDEybjAgMW5kMCBYejAgMXExMCAxMm4wIDFoQjAgMWRYMCAxZXAwIDFhTDAgMWVOMCAxN1gwIDFuZjAgMTF6MCAxdEIwIDE5VzAgMWUxMCAxN2IwIDFlcDAgMWdMMCAxOE4wIDFmejAgMWVOMCAxN2IwIDFncTAgMWduMCAxOWQwIDFkejAgMWMxMCAxN1gwIDFoQjAgMWduMCAxOWQwIDFkejAgMWMxMCAxN1gwIDFrcDAgMWR6MCAxYzEwIDFhTDAgMWVOMCAxb0wwIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxcnowIFcxMCAxcnowIFcxMCAxcnowIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxcnowIFcxMCAxcnowIFcxMCAxcnowIDEwTjAgMW9MMCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwIDEwTjAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCBXMTAgMXJ6MCAxME4wIDFvTDAgMTBOMCAxb0wwfDgxZTRcIixcblx0XHRcdFwiQXNpYS9LYWJ1bHwrMDQgKzA0MzB8LTQwIC00dXwwMXwtMTBRczB8NDZlNVwiLFxuXHRcdFx0XCJBc2lhL0thbWNoYXRrYXxMTVQgKzExICsxMiArMTN8LWF5LkEgLWIwIC1jMCAtZDB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyfC0xU0xLeS5BIGl2WHkuQSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDJzcDAgV00wfDE4ZTRcIixcblx0XHRcdFwiQXNpYS9LYXJhY2hpfExNVCArMDUzMCArMDYzMCArMDUgUEtUIFBLU1R8LTRzLmMgLTV1IC02dSAtNTAgLTUwIC02MHwwMTIxMzQ1NDU0NTR8LTJ4b3NzLmMgMXFPS1cuYyA3elgwIGV1cDAgTHFNdSAxZnkwMCAxY0wwIGRLMTAgMTFiMCAxNjEwIDFqWDB8MjRlNlwiLFxuXHRcdFx0XCJBc2lhL1VydW1xaXxMTVQgKzA2fC01Ty5rIC02MHwwMXwtMUdndE8ua3wzMmU1XCIsXG5cdFx0XHRcIkFzaWEvS2F0aG1hbmR1fExNVCArMDUzMCArMDU0NXwtNUYuZyAtNXUgLTVKfDAxMnwtMjFKaEYuZyAyRUdNYi5nfDEyZTVcIixcblx0XHRcdFwiQXNpYS9LaGFuZHlnYXxMTVQgKzA4ICswOSArMTAgKzExfC05Mi5kIC04MCAtOTAgLWEwIC1iMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzQzNDM0MzQzNDM0MzQzNDMyfC0yMVE5Mi5kIHBBcDIuZCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIHFLMCB5TjAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMTdWMCA3ekQwfDY2ZTJcIixcblx0XHRcdFwiQXNpYS9LcmFzbm95YXJza3xMTVQgKzA2ICswNyArMDh8LTZiLnEgLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTIxSGliLnEgcHJBYi5xIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDEwZTVcIixcblx0XHRcdFwiQXNpYS9LdWFsYV9MdW1wdXJ8U01UICswNyArMDcyMCArMDczMCArMDkgKzA4fC02VC5wIC03MCAtN2sgLTd1IC05MCAtODB8MDEyMzQzNXwtMkJnNlQucCAxN2FuVC5wIGw1WEUgMTdiTyA4Rnl1IDFzbzF1fDcxZTVcIixcblx0XHRcdFwiQXNpYS9LdWNoaW5nfExNVCArMDczMCArMDggKzA4MjAgKzA5fC03bC5rIC03dSAtODAgLThrIC05MHwwMTIzMjMyMzIzMjMyMzIzMjQyfC0xS0lUbC5rIGdEYlAuayA2eW51IEFuRSAxTzBrIEFuRSAxTkFrIEFuRSAxTkFrIEFuRSAxTkFrIEFuRSAxTzBrIEFuRSAxTkFrIEFuRSBwQWsgOEZ6MHwxM2U0XCIsXG5cdFx0XHRcIkFzaWEvTWFjYXV8TE1UIENTVCBDRFR8LTd5LmsgLTgwIC05MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsZTgwIDFYTzN1IDF3bjAgUmQwIDF3bjAgUjl1IDF3cXUgVTEwIDF0ejAgVFZ1IDF0ejAgMTdndSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNKdSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjT3UgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNKdSAxY0wwIDFjTjAgMWZ6MCAxY04wIDFjTDB8NTdlNFwiLFxuXHRcdFx0XCJBc2lhL01hZ2FkYW58TE1UICsxMCArMTEgKzEyfC1hMy5jIC1hMCAtYjAgLWMwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMxMnwtMVBjYTMuYyBlVW8zLmMgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejAgM0NxMHw5NWUzXCIsXG5cdFx0XHRcIkFzaWEvTWFrYXNzYXJ8TE1UIE1NVCArMDggKzA5IFdJVEF8LTdWLkEgLTdWLkEgLTgwIC05MCAtODB8MDEyMzR8LTIxSmpWLkEgdmZjMCBteUxWLkEgOE1MMHwxNWU1XCIsXG5cdFx0XHRcIkFzaWEvTWFuaWxhfCswOCArMDl8LTgwIC05MHwwMTAxMDEwMTB8LTFrSkkwIEFMMCBjSzEwIDY1WDAgbVhCMCB2WDAgVksxMCAxZGIwfDI0ZTZcIixcblx0XHRcdFwiQXNpYS9OaWNvc2lhfExNVCBFRVQgRUVTVHwtMmQucyAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0xVmMyZC5zIDJhM2NkLnMgMWNMMCAxcXAwIFh6MCAxOUIwIDE5WDAgMWZCMCAxZGIwIDFjcDAgMWNMMCAxZkIwIDE5WDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFvMzAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzMmU0XCIsXG5cdFx0XHRcIkFzaWEvTm92b2t1em5ldHNrfExNVCArMDYgKzA3ICswOHwtNU0uTSAtNjAgLTcwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTJ8LTFQY3RNLk0gZVVMTS5NIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMnNwMCBXTTB8NTVlNFwiLFxuXHRcdFx0XCJBc2lhL05vdm9zaWJpcnNrfExNVCArMDYgKzA3ICswOHwtNXYuRSAtNjAgLTcwIC04MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0yMVFudi5FIHBBRnYuRSAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgbWwwIE9zMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCA0ZU4wfDE1ZTVcIixcblx0XHRcdFwiQXNpYS9PbXNrfExNVCArMDUgKzA2ICswN3wtNFIudSAtNTAgLTYwIC03MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjI0c1IudSBwTUxSLnUgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MTJlNVwiLFxuXHRcdFx0XCJBc2lhL09yYWx8TE1UICswMyArMDUgKzA2ICswNHwtM3AubyAtMzAgLTUwIC02MCAtNDB8MDEyMzIzMjMyMzIzMjMyMzI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDJ8LTFQYzNwLm8gZVVvcC5vIDIzQ0swIDNEYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMWNNMCAxY00wIElNMCAxRU0wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTB8MjdlNFwiLFxuXHRcdFx0XCJBc2lhL1BvbnRpYW5ha3xMTVQgUE1UICswNzMwICswOSArMDggV0lUQSBXSUJ8LTdoLmsgLTdoLmsgLTd1IC05MCAtODAgLTgwIC03MHwwMTIzMjQyNTZ8LTJ1YTdoLmsgWEUwMCBtdW5MLmsgOFJhdSA2a3B1IDRQWHUgeGhjdSBXcW51fDIzZTRcIixcblx0XHRcdFwiQXNpYS9QeW9uZ3lhbmd8TE1UIEtTVCBKU1QgS1NUfC04biAtOHUgLTkwIC05MHwwMTIzMTN8LTJ1bThuIDk3WFIgMWxUenUgMk9uYzAgNkJBdXwyOWU1XCIsXG5cdFx0XHRcIkFzaWEvUXl6eWxvcmRhfExNVCArMDQgKzA1ICswNnwtNGwuUSAtNDAgLTUwIC02MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzfC0xUGM0bC5RIGVVb2wuUSAyM0NMMCAzRGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgM2FvMCAxRU0wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTB8NzNlNFwiLFxuXHRcdFx0XCJBc2lhL1Jhbmdvb258Uk1UICswNjMwICswOXwtNm8uTCAtNnUgLTkwfDAxMjF8LTIxSmlvLkwgU21uUy5MIDdqOXV8NDhlNVwiLFxuXHRcdFx0XCJBc2lhL1Nha2hhbGlufExNVCArMDkgKzExICsxMiArMTB8LTl1Lk0gLTkwIC1iMCAtYzAgLWEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyNDIzMjMyMzIzMjMyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyfC0yQUdWdS5NIDFCb011Lk0gMXFGYTAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMnBCMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNyZDB8NThlNFwiLFxuXHRcdFx0XCJBc2lhL1NhbWFya2FuZHxMTVQgKzA0ICswNSArMDZ8LTRyLlIgLTQwIC01MCAtNjB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFQYzRyLlIgZVVvci5SIDIzQ0wwIDNEYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTB8MzZlNFwiLFxuXHRcdFx0XCJBc2lhL1Nlb3VsfExNVCBLU1QgSlNUIEtTVCBLRFQgS0RUfC04ci5RIC04dSAtOTAgLTkwIC05dSAtYTB8MDEyMzE0MTQxNDE0MTQxNDEzNTM1M3wtMnVtOHIuUSA5N1hWLlEgMW0xenUga0tvMCAySTB1IE9MMCAxRkIwIFJiMCAxcU4wIFRYMCAxdEIwIFRYMCAxdEIwIFRYMCAxdEIwIFRYMCAyYXAwIDEyRkJ1IDExQTAgMW8wMCAxMUEwfDIzZTZcIixcblx0XHRcdFwiQXNpYS9TcmVkbmVrb2x5bXNrfExNVCArMTAgKzExICsxMnwtYWUuUSAtYTAgLWIwIC1jMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjYWUuUSBlVW9lLlEgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MzVlMlwiLFxuXHRcdFx0XCJBc2lhL1RhaXBlaXxDU1QgSlNUIENEVHwtODAgLTkwIC05MHwwMTAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMHwtMWl3ODAgam9NMCAxeW8wIFR6MCAxaXAwIDFqWDAgMWNOMCAxMWIwIDFvTjAgMTFiMCAxb04wIDExYjAgMW9OMCAxMWIwIDEwTjAgMUJYMCAxMHAwIDFwejAgMTBwMCAxcHowIDEwcDAgMWRiMCAxZGQwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMUJCMCBNTDAgMUJkMCBNTDAgdXExMCAxZGIwIDFjTjAgMWRiMCA5N0IwIEFMMHw3NGU1XCIsXG5cdFx0XHRcIkFzaWEvVGFzaGtlbnR8TE1UICswNSArMDYgKzA3fC00Qi5iIC01MCAtNjAgLTcwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMXwtMVBjNEIuYiBlVW5CLmIgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwfDIzZTVcIixcblx0XHRcdFwiQXNpYS9UYmlsaXNpfFRCTVQgKzAzICswNCArMDV8LTJYLmIgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIxMnwtMVBjMlguYiAxalVuWC5iIFdDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAycHowIDFjTDAgMWZCMCAzTnowIDExQjAgMW5YMCAxMUIwIDFxTDAgV04wIDFxTDAgV04wIDFxTDAgMTFCMCAxblgwIDExQjAgMW5YMCAxMUIwIEFuMCBPczAgV00wfDExZTVcIixcblx0XHRcdFwiQXNpYS9UZWhyYW58TE1UIFRNVCArMDMzMCArMDQgKzA1ICswNDMwfC0zcC5JIC0zcC5JIC0zdSAtNDAgLTUwIC00dXwwMTIzNDMyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MjUyNTI1MnwtMmJ0RHAuSSAxZDNjMCAxaHVMVC5JIFRYdSAxcHowIHNOMCB2QXUgMWNMMCAxZEIwIDFlbjAgcE5CMCBVTDAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCA2NHAwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY04wIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNOMCAxZHowIDFjcDAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjTjAgMWR6MCAxY3AwIDFkejAgMWNwMCAxZHowIDFjcDAgMWR6MHwxNGU2XCIsXG5cdFx0XHRcIkFzaWEvVGhpbXBodXxMTVQgKzA1MzAgKzA2fC01Vy5BIC01dSAtNjB8MDEyfC1TdTVXLkEgMUJHTXMuQXw3OWUzXCIsXG5cdFx0XHRcIkFzaWEvVG9reW98SlNUIEpEVHwtOTAgLWEwfDAxMDEwMTAxMHwtUUpKMCBSYjAgMWxkMCAxNG4wIDF6ZDAgT24wIDF6ZDAgT24wfDM4ZTZcIixcblx0XHRcdFwiQXNpYS9Ub21za3xMTVQgKzA2ICswNyArMDh8LTVELlAgLTYwIC03MCAtODB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtMjFOaEQuUCBweHpELlAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCBjbzAgMWJCMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNRcDB8MTBlNVwiLFxuXHRcdFx0XCJBc2lhL1VsYWFuYmFhdGFyfExNVCArMDcgKzA4ICswOXwtNzcudyAtNzAgLTgwIC05MHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTJBUEg3LncgMlVrbzcudyBjS24wIDFkYjAgMWRkMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgNmhEMCAxMXowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAga0VwMCAxY0owIDFjUDAgMWNKMHwxMmU1XCIsXG5cdFx0XHRcIkFzaWEvVXN0LU5lcmF8TE1UICswOCArMDkgKzEyICsxMSArMTB8LTl3LlMgLTgwIC05MCAtYzAgLWIwIC1hMHwwMTIzNDM0MzQzNDM0MzQzNDM0MzQzNDU0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDV8LTIxUTl3LlMgcEFwdy5TIDIzQ0wwIDFkOTAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxN1YwIDd6RDB8NjVlMlwiLFxuXHRcdFx0XCJBc2lhL1ZsYWRpdm9zdG9rfExNVCArMDkgKzEwICsxMXwtOEwudiAtOTAgLWEwIC1iMHwwMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVNKSUwudiBpdFhMLnYgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAycEIwIElNMCByWDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8NjBlNFwiLFxuXHRcdFx0XCJBc2lhL1lha3V0c2t8TE1UICswOCArMDkgKzEwfC04Qy5XIC04MCAtOTAgLWEwfDAxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0yMVE4Qy5XIHBBb0MuVyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwyOGU0XCIsXG5cdFx0XHRcIkFzaWEvWWVrYXRlcmluYnVyZ3xMTVQgUE1UICswNCArMDUgKzA2fC00Mi54IC0zSi41IC00MCAtNTAgLTYwfDAxMjM0MzQzNDM0MzQzNDM0MzQzNDM0MzIzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0M3wtMmFnNDIueCA3bVFoLnMgcUJ2Si41IDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDE0ZTVcIixcblx0XHRcdFwiQXNpYS9ZZXJldmFufExNVCArMDMgKzA0ICswNXwtMlcgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMVBjMlcgMWpVblcgV0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDJwQjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCA0UlgwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMHwxM2U1XCIsXG5cdFx0XHRcIkF0bGFudGljL0F6b3Jlc3xITVQgLTAyIC0wMSArMDAgV0VUfDFTLncgMjAgMTAgMCAwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMTIzMjEyMzIxMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjM0MzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyfC0ybGRXMCBhUFgwIFNwMCBMWDAgMXZjMCBUYzAgMXVNMCBTTTAgMXZjMCBUYzAgMXZjMCBTTTAgMXZjMCA2NjAwIDFjbzAgM0UwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDNJMDAgMTdjMCAxY00wIDFjTTAgM0ZjMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIDF0QTAgMWNNMCAxZGMwIDE0MDAgZ0wwIElNMCBzMTAgVTAwIGRYMCBSYzAgcGQwIFJjMCBnTDAgT28wIHBkMCBSYzAgZ0wwIE9vMCBwZDAgMTRvMCAxY00wIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNDbzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcUlsMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMWNMMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MjVlNFwiLFxuXHRcdFx0XCJBdGxhbnRpYy9CZXJtdWRhfExNVCBBU1QgQURUfDRqLmkgNDAgMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMUJuUkUuRyAxTFRiRS5HIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWZ6MCAxYTEwIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBSZDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMCBPcDAgMXpiMHw2NWUzXCIsXG5cdFx0XHRcIkF0bGFudGljL0NhbmFyeXxMTVQgLTAxIFdFVCBXRVNUfDExLkEgMTAgMCAtMTB8MDEyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzJ8LTFVdGFXLm8gWFBBVy5vIDFsQUswIDFhMTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw1NGU0XCIsXG5cdFx0XHRcIkF0bGFudGljL0NhcGVfVmVyZGV8TE1UIC0wMiAtMDF8MXkuNCAyMCAxMHwwMTIxMnwtMmxkVzAgMWVFbzAgN3pYMCAxZGpmMHw1MGU0XCIsXG5cdFx0XHRcIkF0bGFudGljL0Zhcm9lfExNVCBXRVQgV0VTVHxyLjQgMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJ1U253LlUgMldnb3cuVSAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0OWUzXCIsXG5cdFx0XHRcIkF0bGFudGljL01hZGVpcmF8Rk1UIC0wMSArMDAgKzAxIFdFVCBXRVNUfDE3LkEgMTAgMCAtMTAgMCAtMTB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjMyMTIzMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTR8LTJsZFgwIGFQWDAgU3AwIExYMCAxdmMwIFRjMCAxdU0wIFNNMCAxdmMwIFRjMCAxdmMwIFNNMCAxdmMwIDY2MDAgMWNvMCAzRTAwIDE3YzAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxaW8wIDE3YzAgM0kwMCAxN2MwIDFjTTAgMWNNMCAzRmMwIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEYzAgMXRBMCAxY00wIDFkYzAgMTQwMCBnTDAgSU0wIHMxMCBVMDAgZFgwIFJjMCBwZDAgUmMwIGdMMCBPbzAgcGQwIFJjMCBnTDAgT28wIHBkMCAxNG8wIDFjTTAgMWNQMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgM0NvMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCBxSWwwIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTDAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwyN2U0XCIsXG5cdFx0XHRcIkF0bGFudGljL1JleWtqYXZpa3xMTVQgLTAxICswMCBHTVR8MXMgMTAgMCAwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxM3wtMnVXbXcgbWZhdyAxQmQwIE1MMCAxTEIwIENuMCAxTEIwIDNmWDAgQzEwIEhyWDAgMWNPMCBMQjAgMUVMMCBMQTAgMUMwMCBPbzAgMXdvMCBSYzAgMXdvMCBSYzAgMXdvMCBSYzAgMXpjMCBPbzAgMXpjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxMUEwIDFsYzAgMTRvMCAxbzAwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFvMDAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMW8wMCAxNG8wfDEyZTRcIixcblx0XHRcdFwiQXRsYW50aWMvU291dGhfR2VvcmdpYXwtMDJ8MjB8MHx8MzBcIixcblx0XHRcdFwiQXRsYW50aWMvU3RhbmxleXxTTVQgLTA0IC0wMyAtMDJ8M1AubyA0MCAzMCAyMHwwMTIxMjEyMTIxMjEyMTIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTJrSnc4LkEgMTJiQTguQSAxOVgwIDFmQjAgMTlYMCAxaXAwIDE5WDAgMWZCMCAxOVgwIDFmQjAgMTlYMCAxZkIwIENuMCAxQ2MxMCBXTDAgMXFMMCBVMTAgMXR6MCAybU4wIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxdHowIFUxMCAxdHowIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxdHowIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcUwwIFdOMCAxcU4wIFUxMCAxd24wIFJkMCAxd24wIFUxMCAxdHowIFUxMCAxdHowIFUxMCAxdHowIFUxMCAxdHowIFUxMCAxd24wIFUxMCAxdHowIFUxMCAxdHowIFUxMHwyMWUyXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9TeWRuZXl8QUVTVCBBRURUfC1hMCAtYjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMXwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCAxQzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDE0bzAgMW8wMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBVMDAgMXFNMCBXTTAgMXRBMCBXTTAgMXRBMCBVMDAgMXRBMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDExQTAgMW8wMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCAxNG8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMHw0MGU1XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9BZGVsYWlkZXxBQ1NUIEFDRFR8LTl1IC1hdXwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOTNsdCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgVTAwIDFxTTAgV00wIDF0QTAgV00wIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgT28wIDF6YzAgV00wIDFxTTAgUmMwIDF6YzAgVTAwIDF0QTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCAxNG8wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMHwxMWU1XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9CcmlzYmFuZXxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMHwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCBIMUEwIE9vMCAxemMwIE9vMCAxemMwIE9vMHwyMGU1XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9Ccm9rZW5fSGlsbHxBQ1NUIEFDRFR8LTl1IC1hdXwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxfC0yOTNsdCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTRvMCAxbzAwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFUwMCAxcU0wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8MThlM1wiLFxuXHRcdFx0XCJBdXN0cmFsaWEvQ3VycmllfEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5RTgwIDE5WDAgMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgMTdjMTAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTFBMCAxcU0wIFdNMCAxcU0wIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxd28wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExQTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMTFBMCAxbzAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8NzQ2XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9EYXJ3aW58QUNTVCBBQ0RUfC05dSAtYXV8MDEwMTAxMDEwfC0yOTNsdCB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDB8MTJlNFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvRXVjbGF8KzA4NDUgKzA5NDV8LThKIC05SnwwMTAxMDEwMTAxMDEwMTAxMDEwfC0yOTNrSSB4Y1ggMTBqZDAgeUwwIDFjTjAgMWNMMCAxZ1NwMCBPbzAgbDVBMCBPbzAgaUpBMCBHMDAgelUwMCBJTTAgMXFNMCAxMUEwIDFvMDAgMTFBMHwzNjhcIixcblx0XHRcdFwiQXVzdHJhbGlhL0hvYmFydHxBRVNUIEFFRFR8LWEwIC1iMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5RTgwIDE5WDAgMTBqZDAgeUwwIDFjTjAgMWNMMCAxZkIwIDE5WDAgVmZCMCAxY00wIDFvMDAgUmMwIDF3bzAgUmMwIDF3bzAgVTAwIDF3bzAgTEEwIDFDMDAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgT28wIDF6YzAgMTFBMCAxcU0wIFdNMCAxcU0wIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxd28wIFdNMCAxdEEwIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExQTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMTFBMCAxbzAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8MjFlNFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvTG9yZF9Ib3dlfEFFU1QgKzEwMzAgKzExMzAgKzExfC1hMCAtYXUgLWJ1IC1iMHwwMTIxMjEyMTIxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzMTMxMzEzfHJhQzAgMXpkdSBSYjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBPbjAgMXpkMCBUWHUgMXFNdSBXTHUgMXRBdSBXTHUgMXRBdSBUWHUgMXRBdSBPbnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSBSYnUgMXpjdSBPbnUgMXpjdSBPbnUgMXpjdSAxMXp1IDFvMHUgMTF6dSAxbzB1IDExenUgMW8wdSAxMXp1IDFxTXUgV0x1IDExQXUgMW5YdSAxcU11IDExenUgMW8wdSAxMXp1IDFvMHUgMTF6dSAxcU11IFdMdSAxcU11IDExenUgMW8wdSBXTHUgMXFNdSAxNG51IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxZkF1IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWZ6dSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFmQXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFjTXUgMWNMdSAxY011IDFjTHUgMWNNdSAxY0x1IDFmQXUgMWNMdSAxY011IDFjTHUgMWNNdXwzNDdcIixcblx0XHRcdFwiQXVzdHJhbGlhL0xpbmRlbWFufEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjkzbFggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWZCMCAxOVgwIDE3YzEwIExBMCBIMUEwIE9vMCAxemMwIE9vMCAxemMwIE9vMCAxemMwIFJjMCAxemMwIE9vMHwxMFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvTWVsYm91cm5lfEFFU1QgQUVEVHwtYTAgLWIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDF8LTI5M2xYIHhjWCAxMGpkMCB5TDAgMWNOMCAxY0wwIDFmQjAgMTlYMCAxN2MxMCBMQTAgMUMwMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBVMDAgMXFNMCBXTTAgMXFNMCAxMUEwIDF0QTAgVTAwIDF0QTAgVTAwIDF0QTAgT28wIDF6YzAgT28wIDF6YzAgUmMwIDF6YzAgT28wIDF6YzAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxMUEwIDFvMDAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgV00wIDFxTTAgMTRvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTB8MzllNVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvUGVydGh8QVdTVCBBV0RUfC04MCAtOTB8MDEwMTAxMDEwMTAxMDEwMTAxMHwtMjkzalggeGNYIDEwamQwIHlMMCAxY04wIDFjTDAgMWdTcDAgT28wIGw1QTAgT28wIGlKQTAgRzAwIHpVMDAgSU0wIDFxTTAgMTFBMCAxbzAwIDExQTB8MThlNVwiLFxuXHRcdFx0XCJDRVR8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxNk0wIDFnTU0wIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMFwiLFxuXHRcdFx0XCJQYWNpZmljL0Vhc3RlcnxFTVQgLTA3IC0wNiAtMDV8N2gucyA3MCA2MCA1MHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjN8LTF1U2dHLncgMXM0SUcudyBXTDAgMXpkMCBPbjAgMWlwMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxbGQwIDE0bjAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMXFOMCBXTDAgMXFOMCBXTDAgMXFOMCAxMXowIDFvMTAgMnBBMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDFjTDAgMWNOMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxZkIwIDE5WDAgMXFOMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFxTjAgV0wwIDFxTjAgMTdiMCAxaXAwIDExejAgMWlwMCAxZnowIDFmQjAgMTF6MCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIFdMMCAxcU4wIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxcU4wIFdMMCAxcU4wIDE3YjAgMWlwMCAxMXowIDFvMTAgMTlYMCAxZkIwIDFuWDAgRzEwIDFFTDAgT3AwIDF6YjAgUmQwIDF3bjAgUmQwIDQ2bjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgRGQwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwIDFOYjAgQXAwfDMwZTJcIixcblx0XHRcdFwiQ1NUNkNEVHxDU1QgQ0RUIENXVCBDUFR8NjAgNTAgNTAgNTB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFzMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MzAgaXcwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiRUVUfEVFVCBFRVNUfC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfGhEQjAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwXCIsXG5cdFx0XHRcIkV1cm9wZS9EdWJsaW58RE1UIElTVCBHTVQgQlNUIElTVHxwLmwgLXkuRCAwIC0xMCAtMTB8MDEyMzIzMjMyMzIzMjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDI0MjQyNDJ8LTJheDl5LkQgUmMwIDFmenkuRCAxNE0wIDFmYzAgMWcwMCAxY28wIDFkYzAgMWNvMCAxb28wIDE0MDAgMWRjMCAxOUEwIDFpbzAgMWlvMCBXTTAgMW8wMCAxNG8wIDFvMDAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFsYzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxcU0wIERjMCBnNjAwIDE0bzAgMXdvMCAxN2MwIDFpbzAgMTFBMCAxbzAwIDE3YzAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFsYzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWEwMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXRBMCBJTTAgOTBvMCBVMDAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXRBMCBVMDAgMXRBMCBVMDAgMXRBMCAxMXowIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDE0bzAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFU1R8RVNUfDUwfDB8XCIsXG5cdFx0XHRcIkVTVDVFRFR8RVNUIEVEVCBFV1QgRVBUfDUwIDQwIDQwIDQwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxdDAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDQwIGl2MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHTVR8MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTF8KzAxfC0xMHwwfFwiLFxuXHRcdFx0XCJQYWNpZmljL1BvcnRfTW9yZXNieXwrMTB8LWEwfDB8fDI1ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9Qb2hucGVpfCsxMXwtYjB8MHx8MzRlM1wiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXwrMTJ8LWMwfDB8fDI5ZTNcIixcblx0XHRcdFwiRXRjL0dNVC0xM3wrMTN8LWQwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQtMTR8KzE0fC1lMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTJ8KzAyfC0yMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTN8KzAzfC0zMHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTR8KzA0fC00MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTV8KzA1fC01MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01ULTZ8KzA2fC02MHwwfFwiLFxuXHRcdFx0XCJJbmRpYW4vQ2hyaXN0bWFzfCswN3wtNzB8MHx8MjFlMlwiLFxuXHRcdFx0XCJFdGMvR01ULTh8KzA4fC04MHwwfFwiLFxuXHRcdFx0XCJQYWNpZmljL1BhbGF1fCswOXwtOTB8MHx8MjFlM1wiLFxuXHRcdFx0XCJFdGMvR01UKzF8LTAxfDEwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrMTB8LTEwfGEwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrMTF8LTExfGIwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrMTJ8LTEyfGMwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrM3wtMDN8MzB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs0fC0wNHw0MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzV8LTA1fDUwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrNnwtMDZ8NjB8MHxcIixcblx0XHRcdFwiRXRjL0dNVCs3fC0wN3w3MHwwfFwiLFxuXHRcdFx0XCJFdGMvR01UKzh8LTA4fDgwfDB8XCIsXG5cdFx0XHRcIkV0Yy9HTVQrOXwtMDl8OTB8MHxcIixcblx0XHRcdFwiRXRjL1VDVHxVQ1R8MHwwfFwiLFxuXHRcdFx0XCJFdGMvVVRDfFVUQ3wwfDB8XCIsXG5cdFx0XHRcIkV1cm9wZS9BbXN0ZXJkYW18QU1UIE5TVCArMDEyMCArMDAyMCBDRVNUIENFVHwtai53IC0xai53IC0xayAtayAtMjAgLTEwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMjMyMzIzNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NXwtMmFGY2oudyAxMWIwIDFpUDAgMTFBMCAxaW8wIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWNvMCAxaW8wIDF5bzAgUGMwIDFhMDAgMWZBMCAxQmMwIE1vMCAxdGMwIFVvMCAxdEEwIFUwMCAxdW8wIFcwMCAxczAwIFZBMCAxc28wIFZjMCAxc00wIFVNMCAxd28wIFJjMCAxdTAwIFdvMCAxckEwIFcwMCAxczAwIFZBMCAxc00wIFVNMCAxdzAwIGZWMCBCQ1gudyAxdEEwIFUwMCAxdTAwIFdvMCAxc20wIDYwMWsgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMTZNMCAxZ01NMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTZlNVwiLFxuXHRcdFx0XCJFdXJvcGUvQW5kb3JyYXxXRVQgQ0VUIENFU1R8MCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtVUJBMCAxeElOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDc5ZTNcIixcblx0XHRcdFwiRXVyb3BlL0FzdHJha2hhbnxMTVQgKzAzICswNCArMDV8LTNjLmMgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyfC0xUGNyYy5jIGVVTWMuYyAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWZBMCAxY00wIDNDbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNyZDBcIixcblx0XHRcdFwiRXVyb3BlL0F0aGVuc3xBTVQgRUVUIEVFU1QgQ0VTVCBDRVR8LTF5LlEgLTIwIC0zMCAtMjAgLTEwfDAxMjEyMzQzNDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmE2MXguUSBDTmJ4LlEgbW4wIGtVMTAgOWIwIDNFczAgWGEwIDFmYjAgMWRkMCBrM1gwIE56MCBTQ3AwIDF2YzAgU08wIDFjTTAgMWEwMCAxYW8wIDFmYzAgMWExMCAxZkcwIDFjZzAgMWRYMCAxYlgwIDFjUTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzVlNVwiLFxuXHRcdFx0XCJFdXJvcGUvTG9uZG9ufEdNVCBCU1QgQkRTVHwwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEyMTIxMjEyMTIxMDEwMTIxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmF4YTAgUmMwIDFmQTAgMTRNMCAxZmMwIDFnMDAgMWNvMCAxZGMwIDFjbzAgMW9vMCAxNDAwIDFkYzAgMTlBMCAxaW8wIDFpbzAgV00wIDFvMDAgMTRvMCAxbzAwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWNNMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFpbzAgMXFNMCBEYzAgMlJ6MCBEYzAgMXpjMCBPbzAgMXpjMCBSYzAgMXdvMCAxN2MwIDFpTTAgRkEwIHhCMCAxZkEwIDFhMDAgMTRvMCBiYjAgTEEwIHhCMCBSYzAgMXdvMCAxMUEwIDFvMDAgMTdjMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWxjMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxYTAwIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxdEEwIElNMCA5MG8wIFUwMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxdEEwIFUwMCAxdEEwIFUwMCAxdEEwIDExejAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTRvMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMGU2XCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xOVJDMCAzSVAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxcmMwIFFvMCAxdm1vMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvQmVybGlufENFVCBDRVNUIENFTVR8LTEwIC0yMCAtMzB8MDEwMTAxMDEwMTAxMDEyMTAxMDEyMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhRmUwIDExZDAgMWlPMCAxMUEwIDFvMDAgMTFBMCBRcmMwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAga0wwIE5jMCBtMTAgV00wIDFhbzAgMWNwMCBkWDAganowIERkMCAxaW8wIDE3YzAgMWZBMCAxYTAwIDFlaEEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9QcmFndWV8Q0VUIENFU1QgR01UfC0xMCAtMjAgMHwwMTAxMDEwMTAxMDEwMTAxMDIwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIFFyYzAgNmkwMCBXTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFxTTAgMTFjMCBtcDAgeEEwIG1uMCAxN2MwIDFpbzAgMTdjMCAxZmMwIDFhbzAgMWJOYzAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxM2U1XCIsXG5cdFx0XHRcIkV1cm9wZS9CcnVzc2Vsc3xXRVQgQ0VUIENFU1QgV0VTVHwwIC0xMCAtMjAgLTEwfDAxMjEyMTIxMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJlaGMwIDN6WDAgMTFjMCAxaU8wIDExQTAgMW8wMCAxMUEwIG15MCBJYzAgMXFNMCBSYzAgMUVNMCBVTTAgMXUwMCAxMG8wIDFpbzAgMWlvMCAxN2MwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEYzAgeTAwIDVXbjAgV00wIDFmQTAgMWNNMCAxNk0wIDFpTTAgMTZNMCAxQzAwIFVvMCAxZWVvMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MjFlNVwiLFxuXHRcdFx0XCJFdXJvcGUvQnVjaGFyZXN0fEJNVCBFRVQgRUVTVHwtMUkubyAtMjAgLTMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTF4QXBJLm8gMjBMSS5vIFJBMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMUF4YzAgT24wIDFmQTAgMWExMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNLMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFuWDAgMTFFMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE5ZTVcIixcblx0XHRcdFwiRXVyb3BlL0J1ZGFwZXN0fENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMWlwMCAxN2IwIDFvcDAgMXRiMCBRMm0wIDNOZTAgV00wIDFmQTAgMWNNMCAxY00wIDFvSjAgMWRjMCAxMDMwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWlNMCAxZkEwIDhIYTAgUmIwIDF3TjAgUmIwIDFCQjAgTHowIDFDMjAgTEIwIFNOWDAgMWExMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDE3ZTVcIixcblx0XHRcdFwiRXVyb3BlL1p1cmljaHxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0xOUxjMCAxMUEwIDFvMDAgMTFBMCAxeEcxMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwzOGU0XCIsXG5cdFx0XHRcIkV1cm9wZS9DaGlzaW5hdXxDTVQgQk1UIEVFVCBFRVNUIENFU1QgQ0VUIE1TSyBNU0R8LTFUIC0xSS5vIC0yMCAtMzAgLTIwIC0xMCAtMzAgLTQwfDAxMjMyMzIzMjMyMzIzMjMyMzIzNDU0NTQ2NzY3Njc2NzY3Njc2NzY3Njc2NzMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMnwtMjZqZFQgd0dNYS5BIDIwTEkubyBSQTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDI3QTAgMmVuMCAzOWcwIFdNMCAxZkEwIDFjTTAgVjkwIDF0N3owIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIGdMMCBXTzAgMWNNMCAxY00wIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIDFuWDAgMTFEMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDY3ZTRcIixcblx0XHRcdFwiRXVyb3BlL0NvcGVuaGFnZW58Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXpDMCBUejAgVnVPMCA2MHEwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIFMwMCAxSEEwIE5jMCAxQzAwIERjMCAxTmMwIEFvMCAxaDVBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvR2licmFsdGFyfEdNVCBCU1QgQkRTVCBDRVQgQ0VTVHwwIC0xMCAtMjAgLTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTIxMjEyMTIxMjEwMTAxMjEwMTAxMDEwMTAxMDEwMTAxMDEwMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDN8LTJheGEwIFJjMCAxZkEwIDE0TTAgMWZjMCAxZzAwIDFjbzAgMWRjMCAxY28wIDFvbzAgMTQwMCAxZGMwIDE5QTAgMWlvMCAxaW8wIFdNMCAxbzAwIDE0bzAgMW8wMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxZkEwIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFxTTAgRGMwIDJSejAgRGMwIDF6YzAgT28wIDF6YzAgUmMwIDF3bzAgMTdjMCAxaU0wIEZBMCB4QjAgMWZBMCAxYTAwIDE0bzAgYmIwIExBMCB4QjAgUmMwIDF3bzAgMTFBMCAxbzAwIDE3YzAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFsYzAgMTdjMCAxZkEwIDEwSnowIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzBlM1wiLFxuXHRcdFx0XCJFdXJvcGUvSGVsc2lua2l8SE1UIEVFVCBFRVNUfC0xRC5OIC0yMCAtMzB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMVd1TkQuTiBPVUxELk4gMWRBMCAxeEdxMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9LYWxpbmluZ3JhZHxDRVQgQ0VTVCBDRVQgQ0VTVCBNU0sgTVNEIEVFU1QgRUVUICswM3wtMTAgLTIwIC0yMCAtMzAgLTMwIC00MCAtMzAgLTIwIC0zMHwwMTAxMDEwMTAxMDEwMjMyNDU0NTQ1NDU0NTQ1NDU0NTQ2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2NzY3Njc2Nzg3fC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCBBbTAgTGIwIDFlbjAgb3AwIDFwTnowIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNOMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8NDRlNFwiLFxuXHRcdFx0XCJFdXJvcGUvS2lldnxLTVQgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVHwtMjIuNCAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMHwwMTIzNDM0MjUyNTI1MjUyNTI1MjUyNTI1MjU2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxfC0xUGMyMi40IGVVbzIuNCBybnowIDJIZzAgV00wIDFmQTAgZGEwIDF2NG0wIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIERiMCAzMjIwIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjUTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDM0ZTVcIixcblx0XHRcdFwiRXVyb3BlL0tpcm92fExNVCArMDMgKzA0ICswNXwtM2kuTSAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjMyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMjJXTTAgcUg5MCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWZBMCAxY00wIDNDbzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowfDQ4ZTRcIixcblx0XHRcdFwiRXVyb3BlL0xpc2JvbnxMTVQgV0VUIFdFU1QgV0VNVCBDRVQgQ0VTVHxBLkogMCAtMTAgLTIwIC0xMCAtMjB8MDEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMzIxMjMyMTIzMjEyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjE0MTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTI0NTQ1NDU0MjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0ybGUwMCBhUFgwIFNwMCBMWDAgMXZjMCBUYzAgMXVNMCBTTTAgMXZjMCBUYzAgMXZjMCBTTTAgMXZjMCA2NjAwIDFjbzAgM0UwMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDNJMDAgMTdjMCAxY00wIDFjTTAgM0ZjMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGMwIDF0QTAgMWNNMCAxZGMwIDE0MDAgZ0wwIElNMCBzMTAgVTAwIGRYMCBSYzAgcGQwIFJjMCBnTDAgT28wIHBkMCBSYzAgZ0wwIE9vMCBwZDAgMTRvMCAxY00wIDFjUDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNDbzAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgcHZ5MCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNOMCAxY0wwIDFjTjAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTDAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwyN2U1XCIsXG5cdFx0XHRcIkV1cm9wZS9MdXhlbWJvdXJnfExNVCBDRVQgQ0VTVCBXRVQgV0VTVCBXRVNUIFdFVHwtby5BIC0xMCAtMjAgMCAtMTAgLTIwIC0xMHwwMTIxMjEyMTM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0NTY1NjUxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yREcwby5BIHQ2bW8uQSBUQjAgMW5YMCBVcDAgMW8yMCAxMUEwIHJXMCBDTTAgMXFQMCBSOTAgMUVPMCBVSzAgMXUyMCAxMG0wIDFpcDAgMWluMCAxN2UwIDE5VzAgMWZCMCAxZGIwIDFjcDAgMWluMCAxN2QwIDFmejAgMWExMCAxaW4wIDFhMTAgMWluMCAxN2YwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEYzAgdkEwIDYwTDAgV00wIDFmQTAgMWNNMCAxN2MwIDFpbzAgMTZNMCAxQzAwIFVvMCAxZWVvMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NTRlNFwiLFxuXHRcdFx0XCJFdXJvcGUvTWFkcmlkfFdFVCBXRVNUIFdFTVQgQ0VUIENFU1R8MCAtMTAgLTIwIC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMjEwMzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzfC0yNVRkMCAxOUIwIDFjTDAgMWRkMCBiMXowIDE4cDAgM0hYMCAxN2QwIDFmejAgMWExMCAxaW8wIDFhMDAgMWluMCAxN2QwIGlJbjAgSGQwIDFjTDAgYmIwIDEyMDAgMnMyMCAxNG4wIDVhTDAgTXAwIDF2ejAgMTdkMCAxaW4wIDE3ZDAgMWluMCAxN2QwIDFpbjAgMTdkMCA2aFgwIDExQjAgWEhYMCAxYTEwIDFmejAgMWExMCAxOVgwIDFjTjAgMWZ6MCAxYTEwIDFmQzAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NjJlNVwiLFxuXHRcdFx0XCJFdXJvcGUvTWFsdGF8Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYXJCMCBMejAgMWNOMCAxZGIwIDE0MTAgMW9uMCBXcDAgMXFMMCAxN2QwIDFjTDAgTTNCMCA1TTIwIFdNMCAxZkEwIDFjbzAgMTdjMCAxaU0wIDE2bTAgMWRlMCAxbGMwIDE0bTAgMWxjMCBXTzAgMXFNMCBHVFcwIE9uMCAxQzEwIExBMCAxQzAwIExBMCAxRU0wIExBMCAxQzAwIExBMCAxemMwIE9vMCAxQzAwIE9vMCAxY28wIDFjTTAgMWxBMCBYYzAgMXFxMCAxMXowIDFvMTAgMTF6MCAxbzEwIDExejAgMW8xMCAxMXowIDFvMTAgMTF6MCAxaU4wIDE5ejAgMWZCMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MmU0XCIsXG5cdFx0XHRcIkV1cm9wZS9NaW5za3xNTVQgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVCArMDN8LTFPIC0yMCAtMzAgLTIwIC0xMCAtNDAgLTMwIC0zMHwwMTIzNDM0MzI1MjUyNTI1MjUyNTI1MjUyNTI2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxN3wtMVBjMU8gZVVuTyBxTlgwIDNnUTAgV00wIDFmQTAgMWNNMCBBbDAgMXRzbjAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDNGYzAgMWNOMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMHwxOWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9Nb25hY298UE1UIFdFVCBXRVNUIFdFTVQgQ0VUIENFU1R8LTkubCAwIC0xMCAtMjAgLTEwIC0yMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIzMjMyMzIzMjM0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NHwtMm5jbzkubCBjTmI5LmwgSEEwIDE5QTAgMWlNMCAxMWMwIDFvbzAgV28wIDFyYzAgUU0wIDFFTTAgVU0wIDF1MDAgMTBvMCAxaW8wIDF3bzAgUmMwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDFhMDAgMWlvMCAxN2MwIDFmQTAgMWEwMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWlvMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMTdjMCAxY00wIDFjTTAgMWEwMCAxZkEwIDFpbzAgMXFNMCBEZjAgMlJWMCAxMXowIDExQjAgMXplMCBXTTAgMWZBMCAxY00wIDFmYTAgMWFxMCAxNk0wIDFla24wIDFjTDAgMWZDMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MzhlM1wiLFxuXHRcdFx0XCJFdXJvcGUvTW9zY293fE1NVCBNTVQgTVNUIE1EU1QgTVNEIE1TSyArMDUgRUVUIEVFU1QgTVNLfC0ydS5oIC0ydi5qIC0zdi5qIC00di5qIC00MCAtMzAgLTUwIC0yMCAtMzAgLTQwfDAxMjEzMjM0NTQ2NDU3NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1ODc1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU5NXwtMmFnMnUuaCAycHlXLlcgMWJBMCAxMVgwIEdOMCAxSGIwIGM0di5qIGlrMCAzREEwIGR6MCAxNUEwIGMxMCAycTEwIGlNMTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgSU0wIHJYMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MHwxNmU2XCIsXG5cdFx0XHRcIkV1cm9wZS9QYXJpc3xQTVQgV0VUIFdFU1QgQ0VTVCBDRVQgV0VNVHwtOS5sIDAgLTEwIC0yMCAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjM0MzQzNTI1NDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzQzNDM0MzR8LTJuY284LmwgY05iOC5sIEhBMCAxOUEwIDFpTTAgMTFjMCAxb28wIFdvMCAxcmMwIFFNMCAxRU0wIFVNMCAxdTAwIDEwbzAgMWlvMCAxd28wIFJjMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFpbzAgMTdjMCAxZkEwIDFhMDAgMWlvMCAxN2MwIDFjTTAgMWNNMCAxYTAwIDFpbzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDE3YzAgMWNNMCAxY00wIDFhMDAgMWZBMCAxaW8wIDFxTTAgRGYwIElrMCA1TTMwIFdNMCAxZkEwIDFjTTAgVngwIGhCMCAxYXEwIDE2TTAgMWVrbjAgMWNMMCAxZkMwIDFhMDAgMWZBMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMWU2XCIsXG5cdFx0XHRcIkV1cm9wZS9SaWdhfFJNVCBMU1QgRUVUIE1TSyBDRVNUIENFVCBNU0QgRUVTVHwtMUEueSAtMkEueSAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMHwwMTAxMDIzNDU0NTQ1MzYzNjM2MzYzNjM2MzYzNjM3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzI3MjcyNzJ8LTI1VHpBLnkgMTFBMCAxaU0wIGtvMCBnV20wIHlEWEEueSAyYlgwIDNmRTAgV00wIDFmQTAgMWNNMCAxY00wIDRtMCAxc0x5MCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTjAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIDNvbzAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NjRlNFwiLFxuXHRcdFx0XCJFdXJvcGUvUm9tZXxDRVQgQ0VTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8LTJhckIwIEx6MCAxY04wIDFkYjAgMTQxMCAxb24wIFdwMCAxcUwwIDE3ZDAgMWNMMCBNM0IwIDVNMjAgV00wIDFmQTAgMWNNMCAxNk0wIDFpTTAgMTZtMCAxZGUwIDFsYzAgMTRtMCAxbGMwIFdPMCAxcU0wIEdUVzAgT24wIDFDMTAgTEEwIDFDMDAgTEEwIDFFTTAgTEEwIDFDMDAgTEEwIDF6YzAgT28wIDFDMDAgT28wIDFDMDAgTEEwIDF6YzAgT28wIDFDMDAgTEEwIDFDMDAgTEEwIDF6YzAgT28wIDFDMDAgT28wIDF6YzAgT28wIDFmQzAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDM5ZTVcIixcblx0XHRcdFwiRXVyb3BlL1NhbWFyYXxMTVQgKzAzICswNCArMDV8LTNrLmsgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIzMjEyMTIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIzMjMyMzIxMnwtMjJXTTAgcUg5MCAyM0NMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWZBMCAyeTEwIDE0bTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAyc3AwIFdNMHwxMmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9TYXJhdG92fExNVCArMDMgKzA0ICswNXwtMzQuaSAtMzAgLTQwIC01MHwwMTIzMjMyMzIzMjMyMzIzMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTIyV00wIHFIOTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAycEIwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAzQ28wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgOEh6MCA1ODEwXCIsXG5cdFx0XHRcIkV1cm9wZS9TaW1mZXJvcG9sfFNNVCBFRVQgTVNLIENFU1QgQ0VUIE1TRCBFRVNUIE1TS3wtMmcgLTIwIC0zMCAtMjAgLTEwIC00MCAtMzAgLTQwfDAxMjM0MzQzMjUyNTI1MjUyNTI1MjUyNTI1MjE2MTYxNjUyNTI1MjYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE3MnwtMVBjMmcgZVVvZyByRW4wIDJxczAgV00wIDFmQTAgMWNNMCAzVjAgMXUwTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFRMDAgNGVMMCAxY0wwIDFjTjAgMWNMMCAxY04wIGRYMCBXTDAgMWNOMCAxY0wwIDFmQjAgMW8zMCAxMUIwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTF6MCAxblcwfDMzZTRcIixcblx0XHRcdFwiRXVyb3BlL1NvZmlhfEVFVCBDRVQgQ0VTVCBFRVNUfC0yMCAtMTAgLTIwIC0zMHwwMTIxMjEwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMHwtMTY4TDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTjAgMW1LSDAgMWRkMCAxZmIwIDFhcDAgMWZiMCAxYTIwIDFmeTAgMWEzMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjSzAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWZCMCAxblgwIDExRTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxMmU1XCIsXG5cdFx0XHRcIkV1cm9wZS9TdG9ja2hvbG18Q0VUIENFU1R8LTEwIC0yMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmF6QzAgVEIwIDJ5RGUwIDFhMDAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxNWU1XCIsXG5cdFx0XHRcIkV1cm9wZS9UYWxsaW5ufFRNVCBDRVQgQ0VTVCBFRVQgTVNLIE1TRCBFRVNUfC0xRCAtMTAgLTIwIC0yMCAtMzAgLTQwIC0zMHwwMTIxMDM0MjEyMTI0NTQ1NDU0NTQ1NDU0NTQ1NDYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjM2MzYzNjN8LTI2b05EIHRlRCAxMUEwIDFUYTAgNHJYbCBLU0xEIDJGWDAgMkpnMCBXTTAgMWZBMCAxY00wIDE4SjAgMXNUWDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzEwIDExQTAgMXFNMCA1UU0wIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8NDFlNFwiLFxuXHRcdFx0XCJFdXJvcGUvVGlyYW5lfExNVCBDRVQgQ0VTVHwtMWouayAtMTAgLTIwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yZ2xCai5rIDE0cGNqLmsgNUxDMCBXTTAgNE0wIDFmQ0swIDEwbjAgMW9wMCAxMXowIDFwZDAgMTF6MCAxcU4wIFdMMCAxcXAwIFhiMCAxcXAwIFhiMCAxcXAwIDExejAgMWxCMCAxMXowIDFxTjAgMTF6MCAxaU4wIDE2bjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHw0MmU0XCIsXG5cdFx0XHRcIkV1cm9wZS9VbHlhbm92c2t8TE1UICswMyArMDQgKzA1ICswMnwtM2QuQSAtMzAgLTQwIC01MCAtMjB8MDEyMzIzMjMyMzIzMjMyMzIzMjEyMTQxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTJ8LTIyV00wIHFIOTAgMjNDTDAgMWRiMCAxY04wIDFkYjAgMWNOMCAxZGIwIDFkZDAgMWNPMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFmQTAgMnBCMCBJTTAgclgwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCA4SHowIDNyZDBcIixcblx0XHRcdFwiRXVyb3BlL1V6aGdvcm9kfENFVCBDRVNUIE1TSyBNU0QgRUVUIEVFU1R8LTEwIC0yMCAtMzAgLTQwIC0yMCAtMzB8MDEwMTAxMDIzMjMyMzIzMjMyMzIzMjMyMzIwNDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0xY3FMMCA2aTAwIFdNMCAxZkEwIDFjTTAgMW1sMCAxQ3AwIDFyM1cwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxUTAwIDFOZjAgMnB3MCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNRMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTFlNFwiLFxuXHRcdFx0XCJFdXJvcGUvVmllbm5hfENFVCBDRVNUfC0xMCAtMjB8MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMmFGZTAgMTFkMCAxaU8wIDExQTAgMW8wMCAxMUEwIDNLTTAgMTRvMCBMQTAwIDZpMDAgV00wIDFmQTAgMWNNMCAxY00wIDFjTTAgNDAwIDJxTTAgMWEwMCAxY00wIDFjTTAgMWlvMCAxN2MwIDFnSGEwIDE5WDAgMWNQMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMHwxOGU1XCIsXG5cdFx0XHRcIkV1cm9wZS9WaWxuaXVzfFdNVCBLTVQgQ0VUIEVFVCBNU0sgQ0VTVCBNU0QgRUVTVHwtMW8gLTF6LkEgLTEwIC0yMCAtMzAgLTIwIC00MCAtMzB8MDEyMzI0NTI1MjU0NjQ2NDY0NjQ2NDY0NjQ2NDczNzM3MzczNzM3MzczNzM3MzUyNTM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczNzM3MzczfC0yOTNkbyA2SUxNLm8gMU9vei5BIHp6MCBNZmQwIDI5VzAgM2lzMCBXTTAgMWZBMCAxY00wIExWMCAxdGdMMCAxZGIwIDFjTjAgMWRiMCAxY04wIDFkYjAgMWRkMCAxY08wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTjAgMWNNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxbzAwIDExQTAgMW8wMCAxMUIwIDFvMDAgMTFBMCAxcU0wIDhpbzAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDU0ZTRcIixcblx0XHRcdFwiRXVyb3BlL1ZvbGdvZ3JhZHxMTVQgKzAzICswNCArMDV8LTJWLkUgLTMwIC00MCAtNTB8MDEyMzIzMjMyMzIzMjMyMzIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTIxSXFWLkUgcHNMVi5FIDIzQ0wwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMnBCMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFjTTAgM0NvMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDhIejB8MTBlNVwiLFxuXHRcdFx0XCJFdXJvcGUvV2Fyc2F3fFdNVCBDRVQgQ0VTVCBFRVQgRUVTVHwtMW8gLTEwIC0yMCAtMjAgLTMwfDAxMjEyMTIzNDMxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMXwtMmN0ZG8gMUxYbyAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgMW9uMCAxMUEwIDZ6eTAgSFdQMCA1SU0wIFdNMCAxZkEwIDFjTTAgMWR6MCAxbUwwIDFlbjAgMTVCMCAxYXEwIDFuQTAgMTFBMCAxaW8wIDE3YzAgMWZBMCAxYTAwIGlEWDAgTEEwIDFjTTAgMWNNMCAxQzAwIE9vMCAxY00wIDFjTTAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMUMwMCBMQTAgdXNvMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY04wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDB8MTdlNVwiLFxuXHRcdFx0XCJFdXJvcGUvWmFwb3Jvemh5ZXwrMDIyMCBFRVQgTVNLIENFU1QgQ0VUIE1TRCBFRVNUfC0yayAtMjAgLTMwIC0yMCAtMTAgLTQwIC0zMHwwMTIzNDM0MjUyNTI1MjUyNTI1MjUyNTI1MjUyNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MTYxNjE2MXwtMVBjMmsgZVVvayByZGIwIDJSRTAgV00wIDFmQTAgOG0wIDF2OWEwIDFkYjAgMWNOMCAxZGIwIDFjTjAgMWRiMCAxZGQwIDFjTzAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY0swIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjUTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwfDc3ZTRcIixcblx0XHRcdFwiSFNUfEhTVHxhMHwwfFwiLFxuXHRcdFx0XCJJbmRpYW4vQ2hhZ29zfExNVCArMDUgKzA2fC00Ti5FIC01MCAtNjB8MDEyfC0yeG9zTi5FIDNBR0xOLkV8MzBlMlwiLFxuXHRcdFx0XCJJbmRpYW4vQ29jb3N8KzA2MzB8LTZ1fDB8fDU5NlwiLFxuXHRcdFx0XCJJbmRpYW4vS2VyZ3VlbGVufC0wMCArMDV8MCAtNTB8MDF8LU1HMDB8MTMwXCIsXG5cdFx0XHRcIkluZGlhbi9NYWhlfExNVCArMDR8LTNGLk0gLTQwfDAxfC0yeU8zRi5NfDc5ZTNcIixcblx0XHRcdFwiSW5kaWFuL01hbGRpdmVzfE1NVCArMDV8LTRTIC01MHwwMXwtb2xnU3wzNWU0XCIsXG5cdFx0XHRcIkluZGlhbi9NYXVyaXRpdXN8TE1UICswNCArMDV8LTNPIC00MCAtNTB8MDEyMTIxfC0yeG9yTyAzNHVuTyAxNEwwIDEya3IwIDExejB8MTVlNFwiLFxuXHRcdFx0XCJJbmRpYW4vUmV1bmlvbnxMTVQgKzA0fC0zRi5RIC00MHwwMXwtMm1EREYuUXw4NGU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvS3dhamFsZWlufCsxMSAtMTIgKzEyfC1iMCBjMCAtYzB8MDEyfC1BWDAgVzlYMHwxNGUzXCIsXG5cdFx0XHRcIk1FVHxNRVQgTUVTVHwtMTAgLTIwfDAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yYUZlMCAxMWQwIDFpTzAgMTFBMCAxbzAwIDExQTAgUXJjMCA2aTAwIFdNMCAxZkEwIDFjTTAgMWNNMCAxY00wIDE2TTAgMWdNTTAgMWEwMCAxZkEwIDFjTTAgMWNNMCAxY00wIDFmQTAgMWEwMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxZkEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwXCIsXG5cdFx0XHRcIk1TVHxNU1R8NzB8MHxcIixcblx0XHRcdFwiTVNUN01EVHxNU1QgTURUIE1XVCBNUFR8NzAgNjAgNjAgNjB8MDEwMTAyMzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwfC0yNjFyMCAxblgwIDExQjAgMW5YMCBTZ04wIDh4MjAgaXgwIFF3TjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWNOMCAxY0wwIDFjTjAgMWNMMCBzMTAgMVZ6MCBMQjAgMUJYMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFmejAgMWExMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIDE0cDAgMWxiMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgUmQwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjAgT3AwIDF6YjBcIixcblx0XHRcdFwiUGFjaWZpYy9DaGF0aGFtfCsxMjE1ICsxMjQ1ICsxMzQ1fC1jZiAtY0ogLWRKfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnwtV3FBZiAxYWRlZiBJTTAgMUMwMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBPbzAgMXpjMCBSYzAgMXpjMCBPbzAgMXFNMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxN2MwIDFsYzAgMTRvMCAxbGMwIDE0bzAgMWxjMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWxjMCAxNG8wIDFsYzAgMTRvMCAxbGMwIDE3YzAgMWlvMCAxN2MwIDFpbzAgMTdjMCAxaW8wIDE3YzAgMWlvMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWlvMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFjTTAgMWZBMCAxYTAwIDFmQTAgMWEwMHw2MDBcIixcblx0XHRcdFwiUGFjaWZpYy9BcGlhfExNVCAtMTEzMCAtMTEgLTEwICsxNCArMTN8YnEuVSBidSBiMCBhMCAtZTAgLWQwfDAxMjMyMzQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0NTQ1NDU0fC0ybkRNeC40IDF5VzAzLjQgMnJSYnUgMWZmMCAxYTAwIENJMCBBUTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWNNMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFpbzAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxYTAwIDFmQTAgMWEwMCAxZkEwIDFhMDAgMWZBMCAxY00wIDFmQTAgMWEwMCAxZkEwIDFhMDB8MzdlM1wiLFxuXHRcdFx0XCJQYWNpZmljL0JvdWdhaW52aWxsZXwrMTAgKzA5ICsxMXwtYTAgLTkwIC1iMHwwMTAyfC0xNld5MCA3Q04wIDJNUXAwfDE4ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9FZmF0ZXxMTVQgKzExICsxMnwtYmQuZyAtYjAgLWMwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjF8LTJsOW5kLmcgMlN6Y2QuZyAxY0wwIDFvTjAgMTBMMCAxZkIwIDE5WDAgMWZCMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxZkIwIEx6MCAxTmQwIEFuMHw2NmUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvRW5kZXJidXJ5fC0xMiAtMTEgKzEzfGMwIGIwIC1kMHwwMTJ8bkljMCBCN1gwfDFcIixcblx0XHRcdFwiUGFjaWZpYy9GYWthb2ZvfC0xMSArMTN8YjAgLWQwfDAxfDFHZm4wfDQ4M1wiLFxuXHRcdFx0XCJQYWNpZmljL0Zpaml8TE1UICsxMiArMTN8LWJULkkgLWMwIC1kMHwwMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxfC0yYlV6VC5JIDNtOE5ULkkgTEEwIDFFTTAgSU0wIG5KYzAgTEEwIDFvMDAgUmMwIDF3bzAgQW8wIDFOYzAgQW8wIDFRMDAgeHowIDFTTjAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgczAwIDFWQTAgdU0wIDFTTTAgdU0wIDFTTTAgdU0wfDg4ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9HYWxhcGFnb3N8TE1UIC0wNSAtMDZ8NVcubyA1MCA2MHwwMTIxMnwtMXlWUzEuQSAyZFR6MS5BIGdOZDAgcnowfDI1ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9HYW1iaWVyfExNVCAtMDl8OFguTSA5MHwwMXwtMmpvZjAuY3wxMjVcIixcblx0XHRcdFwiUGFjaWZpYy9HdWFkYWxjYW5hbHxMTVQgKzExfC1hRC5NIC1iMHwwMXwtMmpveUQuTXwxMWU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvR3VhbXxHU1QgQ2hTVHwtYTAgLWEwfDAxfDFmcHEwfDE3ZTRcIixcblx0XHRcdFwiUGFjaWZpYy9Ib25vbHVsdXxIU1QgSERUIEhTVHxhdSA5dSBhMHwwMTAxMDJ8LTF0aEx1IDh4MCBsZWYwIDhQejAgNDZwMHwzN2U0XCIsXG5cdFx0XHRcIlBhY2lmaWMvS2lyaXRpbWF0aXwtMTA0MCAtMTAgKzE0fGFFIGEwIC1lMHwwMTJ8bklhRSBCN1hrfDUxZTJcIixcblx0XHRcdFwiUGFjaWZpYy9Lb3NyYWV8KzExICsxMnwtYjAgLWMwfDAxMHwtQVgwIDFiZHowfDY2ZTJcIixcblx0XHRcdFwiUGFjaWZpYy9NYWp1cm98KzExICsxMnwtYjAgLWMwfDAxfC1BWDB8MjhlM1wiLFxuXHRcdFx0XCJQYWNpZmljL01hcnF1ZXNhc3xMTVQgLTA5MzB8OWkgOXV8MDF8LTJqb2VHfDg2ZTJcIixcblx0XHRcdFwiUGFjaWZpYy9QYWdvX1BhZ298TE1UIFNTVHxibS5NIGIwfDAxfC0ybkRNQi5jfDM3ZTJcIixcblx0XHRcdFwiUGFjaWZpYy9OYXVydXxMTVQgKzExMzAgKzA5ICsxMnwtYjcuRSAtYnUgLTkwIC1jMHwwMTIxM3wtMVhkbjcuRSBQdnpCLkUgNVJDdSAxb3VKdXwxMGUzXCIsXG5cdFx0XHRcIlBhY2lmaWMvTml1ZXwtMTEyMCAtMTEzMCAtMTF8YmsgYnUgYjB8MDEyfC1LZk1FIDE3eTBhfDEyZTJcIixcblx0XHRcdFwiUGFjaWZpYy9Ob3Jmb2xrfCsxMTEyICsxMTMwICsxMjMwICsxMXwtYmMgLWJ1IC1jdSAtYjB8MDEyMTN8LUtnYmMgVzAxRyBPbjAgMUNPcDB8MjVlNFwiLFxuXHRcdFx0XCJQYWNpZmljL05vdW1lYXxMTVQgKzExICsxMnwtYjUuTSAtYjAgLWMwfDAxMjEyMTIxfC0ybDluNS5NIDJFcU01Lk0geFgwIDFQQjAgeW4wIEhlUDAgQW8wfDk4ZTNcIixcblx0XHRcdFwiUGFjaWZpYy9QaXRjYWlybnwtMDgzMCAtMDh8OHUgODB8MDF8MThWa3V8NTZcIixcblx0XHRcdFwiUGFjaWZpYy9SYXJvdG9uZ2F8LTEwMzAgLTA5MzAgLTEwfGF1IDl1IGEwfDAxMjEyMTIxMjEyMTIxMjEyMTIxMjEyMTIxMnxseVd1IElMMCAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udSAxemN1IFJidSAxemN1IE9udSAxemN1IE9udSAxemN1IE9udXwxM2UzXCIsXG5cdFx0XHRcIlBhY2lmaWMvVGFoaXRpfExNVCAtMTB8OVcuZyBhMHwwMXwtMmpvZTEuSXwxOGU0XCIsXG5cdFx0XHRcIlBhY2lmaWMvVG9uZ2F0YXB1fCsxMjIwICsxMyArMTR8LWNrIC1kMCAtZTB8MDEyMTIxMjEyMXwtMWFCMGsgMm41ZGsgMTVBMCAxd28wIHh6MCAxUTEwIHh6MCB6V04wIHMwMHw3NWUzXCIsXG5cdFx0XHRcIlBTVDhQRFR8UFNUIFBEVCBQV1QgUFBUfDgwIDcwIDcwIDcwfDAxMDEwMjMwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMHwtMjYxcTAgMW5YMCAxMUIwIDFuWDAgU2dOMCA4eDEwIGl5MCBRd04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFjTjAgMWNMMCAxY04wIDFjTDAgczEwIDFWejAgTEIwIDFCWDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxY04wIDFjTDAgMWNOMCAxZnowIDFhMTAgMWZ6MCAxY04wIDFjTDAgMWNOMCAxY0wwIDFjTjAgMWNMMCAxNHAwIDFsYjAgMTRwMCAxblgwIDExQjAgMW5YMCAxMUIwIDFuWDAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMWxiMCAxNHAwIDFuWDAgMTFCMCAxblgwIDExQjAgMW5YMCAxNHAwIDFsYjAgMTRwMCAxbGIwIDE0cDAgMW5YMCAxMUIwIDFuWDAgMTFCMCAxblgwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIFJkMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwIE9wMCAxemIwXCIsXG5cdFx0XHRcIldFVHxXRVQgV0VTVHwwIC0xMHwwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTB8aERCMCAxYTAwIDFmQTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxYTAwIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWZBMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFjTTAgMWNNMCAxY00wIDFmQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMXFNMCBXTTAgMXFNMCBXTTAgMXFNMCAxMUEwIDFvMDAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFxTTAgV00wIDFxTTAgV00wIDFxTTAgMTFBMCAxbzAwIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDAgMTFBMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIFdNMCAxcU0wIDExQTAgMW8wMCAxMUEwIDFvMDBcIlxuXHRcdF0sXG5cdFx0XCJsaW5rc1wiOiBbXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9CYW1ha29cIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0Jhbmp1bFwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvQ29uYWtyeVwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvRGFrYXJcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QWZyaWNhL0ZyZWV0b3duXCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9Mb21lXCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9Ob3Vha2Nob3R0XCIsXG5cdFx0XHRcIkFmcmljYS9BYmlkamFufEFmcmljYS9PdWFnYWRvdWdvdVwiLFxuXHRcdFx0XCJBZnJpY2EvQWJpZGphbnxBZnJpY2EvVGltYnVrdHVcIixcblx0XHRcdFwiQWZyaWNhL0FiaWRqYW58QXRsYW50aWMvU3RfSGVsZW5hXCIsXG5cdFx0XHRcIkFmcmljYS9DYWlyb3xFZ3lwdFwiLFxuXHRcdFx0XCJBZnJpY2EvSm9oYW5uZXNidXJnfEFmcmljYS9NYXNlcnVcIixcblx0XHRcdFwiQWZyaWNhL0pvaGFubmVzYnVyZ3xBZnJpY2EvTWJhYmFuZVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0Jhbmd1aVwiLFxuXHRcdFx0XCJBZnJpY2EvTGFnb3N8QWZyaWNhL0JyYXp6YXZpbGxlXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvRG91YWxhXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvS2luc2hhc2FcIixcblx0XHRcdFwiQWZyaWNhL0xhZ29zfEFmcmljYS9MaWJyZXZpbGxlXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvTHVhbmRhXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvTWFsYWJvXCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvTmlhbWV5XCIsXG5cdFx0XHRcIkFmcmljYS9MYWdvc3xBZnJpY2EvUG9ydG8tTm92b1wiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9CbGFudHlyZVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9CdWp1bWJ1cmFcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvR2Fib3JvbmVcIixcblx0XHRcdFwiQWZyaWNhL01hcHV0b3xBZnJpY2EvSGFyYXJlXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0tpZ2FsaVwiLFxuXHRcdFx0XCJBZnJpY2EvTWFwdXRvfEFmcmljYS9MdWJ1bWJhc2hpXCIsXG5cdFx0XHRcIkFmcmljYS9NYXB1dG98QWZyaWNhL0x1c2FrYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvQWRkaXNfQWJhYmFcIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8QWZyaWNhL0FzbWFyYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvQXNtZXJhXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9EYXJfZXNfU2FsYWFtXCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEFmcmljYS9Eamlib3V0aVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvS2FtcGFsYVwiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxBZnJpY2EvTW9nYWRpc2h1XCIsXG5cdFx0XHRcIkFmcmljYS9OYWlyb2JpfEluZGlhbi9BbnRhbmFuYXJpdm9cIixcblx0XHRcdFwiQWZyaWNhL05haXJvYml8SW5kaWFuL0NvbW9yb1wiLFxuXHRcdFx0XCJBZnJpY2EvTmFpcm9iaXxJbmRpYW4vTWF5b3R0ZVwiLFxuXHRcdFx0XCJBZnJpY2EvVHJpcG9saXxMaWJ5YVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FkYWt8QW1lcmljYS9BdGthXCIsXG5cdFx0XHRcIkFtZXJpY2EvQWRha3xVUy9BbGV1dGlhblwiLFxuXHRcdFx0XCJBbWVyaWNhL0FuY2hvcmFnZXxVUy9BbGFza2FcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQnVlbm9zX0FpcmVzfEFtZXJpY2EvQnVlbm9zX0FpcmVzXCIsXG5cdFx0XHRcIkFtZXJpY2EvQXJnZW50aW5hL0NhdGFtYXJjYXxBbWVyaWNhL0FyZ2VudGluYS9Db21vZFJpdmFkYXZpYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9DYXRhbWFyY2F8QW1lcmljYS9DYXRhbWFyY2FcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ29yZG9iYXxBbWVyaWNhL0NvcmRvYmFcIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvQ29yZG9iYXxBbWVyaWNhL1Jvc2FyaW9cIixcblx0XHRcdFwiQW1lcmljYS9BcmdlbnRpbmEvSnVqdXl8QW1lcmljYS9KdWp1eVwiLFxuXHRcdFx0XCJBbWVyaWNhL0FyZ2VudGluYS9NZW5kb3phfEFtZXJpY2EvTWVuZG96YVwiLFxuXHRcdFx0XCJBbWVyaWNhL0F0aWtva2FufEFtZXJpY2EvQ29yYWxfSGFyYm91clwiLFxuXHRcdFx0XCJBbWVyaWNhL0NoaWNhZ298VVMvQ2VudHJhbFwiLFxuXHRcdFx0XCJBbWVyaWNhL0N1cmFjYW98QW1lcmljYS9BcnViYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0N1cmFjYW98QW1lcmljYS9LcmFsZW5kaWprXCIsXG5cdFx0XHRcIkFtZXJpY2EvQ3VyYWNhb3xBbWVyaWNhL0xvd2VyX1ByaW5jZXNcIixcblx0XHRcdFwiQW1lcmljYS9EZW52ZXJ8QW1lcmljYS9TaGlwcm9ja1wiLFxuXHRcdFx0XCJBbWVyaWNhL0RlbnZlcnxOYXZham9cIixcblx0XHRcdFwiQW1lcmljYS9EZW52ZXJ8VVMvTW91bnRhaW5cIixcblx0XHRcdFwiQW1lcmljYS9EZXRyb2l0fFVTL01pY2hpZ2FuXCIsXG5cdFx0XHRcIkFtZXJpY2EvRWRtb250b258Q2FuYWRhL01vdW50YWluXCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydF9XYXluZXxBbWVyaWNhL0luZGlhbmEvSW5kaWFuYXBvbGlzXCIsXG5cdFx0XHRcIkFtZXJpY2EvRm9ydF9XYXluZXxBbWVyaWNhL0luZGlhbmFwb2xpc1wiLFxuXHRcdFx0XCJBbWVyaWNhL0ZvcnRfV2F5bmV8VVMvRWFzdC1JbmRpYW5hXCIsXG5cdFx0XHRcIkFtZXJpY2EvSGFsaWZheHxDYW5hZGEvQXRsYW50aWNcIixcblx0XHRcdFwiQW1lcmljYS9IYXZhbmF8Q3ViYVwiLFxuXHRcdFx0XCJBbWVyaWNhL0luZGlhbmEvS25veHxBbWVyaWNhL0tub3hfSU5cIixcblx0XHRcdFwiQW1lcmljYS9JbmRpYW5hL0tub3h8VVMvSW5kaWFuYS1TdGFya2VcIixcblx0XHRcdFwiQW1lcmljYS9KYW1haWNhfEphbWFpY2FcIixcblx0XHRcdFwiQW1lcmljYS9LZW50dWNreS9Mb3Vpc3ZpbGxlfEFtZXJpY2EvTG91aXN2aWxsZVwiLFxuXHRcdFx0XCJBbWVyaWNhL0xvc19BbmdlbGVzfFVTL1BhY2lmaWNcIixcblx0XHRcdFwiQW1lcmljYS9Mb3NfQW5nZWxlc3xVUy9QYWNpZmljLU5ld1wiLFxuXHRcdFx0XCJBbWVyaWNhL01hbmF1c3xCcmF6aWwvV2VzdFwiLFxuXHRcdFx0XCJBbWVyaWNhL01hemF0bGFufE1leGljby9CYWphU3VyXCIsXG5cdFx0XHRcIkFtZXJpY2EvTWV4aWNvX0NpdHl8TWV4aWNvL0dlbmVyYWxcIixcblx0XHRcdFwiQW1lcmljYS9OZXdfWW9ya3xVUy9FYXN0ZXJuXCIsXG5cdFx0XHRcIkFtZXJpY2EvTm9yb25oYXxCcmF6aWwvRGVOb3JvbmhhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUGFuYW1hfEFtZXJpY2EvQ2F5bWFuXCIsXG5cdFx0XHRcIkFtZXJpY2EvUGhvZW5peHxVUy9Bcml6b25hXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL0FuZ3VpbGxhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL0FudGlndWFcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvRG9taW5pY2FcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvR3JlbmFkYVwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9HdWFkZWxvdXBlXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL01hcmlnb3RcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvTW9udHNlcnJhdFwiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9CYXJ0aGVsZW15XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1N0X0tpdHRzXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1N0X0x1Y2lhXCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1N0X1Rob21hc1wiLFxuXHRcdFx0XCJBbWVyaWNhL1BvcnRfb2ZfU3BhaW58QW1lcmljYS9TdF9WaW5jZW50XCIsXG5cdFx0XHRcIkFtZXJpY2EvUG9ydF9vZl9TcGFpbnxBbWVyaWNhL1RvcnRvbGFcIixcblx0XHRcdFwiQW1lcmljYS9Qb3J0X29mX1NwYWlufEFtZXJpY2EvVmlyZ2luXCIsXG5cdFx0XHRcIkFtZXJpY2EvUmVnaW5hfENhbmFkYS9TYXNrYXRjaGV3YW5cIixcblx0XHRcdFwiQW1lcmljYS9SaW9fQnJhbmNvfEFtZXJpY2EvUG9ydG9fQWNyZVwiLFxuXHRcdFx0XCJBbWVyaWNhL1Jpb19CcmFuY298QnJhemlsL0FjcmVcIixcblx0XHRcdFwiQW1lcmljYS9TYW50aWFnb3xDaGlsZS9Db250aW5lbnRhbFwiLFxuXHRcdFx0XCJBbWVyaWNhL1Nhb19QYXVsb3xCcmF6aWwvRWFzdFwiLFxuXHRcdFx0XCJBbWVyaWNhL1N0X0pvaG5zfENhbmFkYS9OZXdmb3VuZGxhbmRcIixcblx0XHRcdFwiQW1lcmljYS9UaWp1YW5hfEFtZXJpY2EvRW5zZW5hZGFcIixcblx0XHRcdFwiQW1lcmljYS9UaWp1YW5hfEFtZXJpY2EvU2FudGFfSXNhYmVsXCIsXG5cdFx0XHRcIkFtZXJpY2EvVGlqdWFuYXxNZXhpY28vQmFqYU5vcnRlXCIsXG5cdFx0XHRcIkFtZXJpY2EvVG9yb250b3xBbWVyaWNhL01vbnRyZWFsXCIsXG5cdFx0XHRcIkFtZXJpY2EvVG9yb250b3xDYW5hZGEvRWFzdGVyblwiLFxuXHRcdFx0XCJBbWVyaWNhL1ZhbmNvdXZlcnxDYW5hZGEvUGFjaWZpY1wiLFxuXHRcdFx0XCJBbWVyaWNhL1doaXRlaG9yc2V8Q2FuYWRhL1l1a29uXCIsXG5cdFx0XHRcIkFtZXJpY2EvV2lubmlwZWd8Q2FuYWRhL0NlbnRyYWxcIixcblx0XHRcdFwiQXNpYS9Bc2hnYWJhdHxBc2lhL0FzaGtoYWJhZFwiLFxuXHRcdFx0XCJBc2lhL0Jhbmdrb2t8QXNpYS9QaG5vbV9QZW5oXCIsXG5cdFx0XHRcIkFzaWEvQmFuZ2tva3xBc2lhL1ZpZW50aWFuZVwiLFxuXHRcdFx0XCJBc2lhL0RoYWthfEFzaWEvRGFjY2FcIixcblx0XHRcdFwiQXNpYS9EdWJhaXxBc2lhL011c2NhdFwiLFxuXHRcdFx0XCJBc2lhL0hvX0NoaV9NaW5ofEFzaWEvU2FpZ29uXCIsXG5cdFx0XHRcIkFzaWEvSG9uZ19Lb25nfEhvbmdrb25nXCIsXG5cdFx0XHRcIkFzaWEvSmVydXNhbGVtfEFzaWEvVGVsX0F2aXZcIixcblx0XHRcdFwiQXNpYS9KZXJ1c2FsZW18SXNyYWVsXCIsXG5cdFx0XHRcIkFzaWEvS2F0aG1hbmR1fEFzaWEvS2F0bWFuZHVcIixcblx0XHRcdFwiQXNpYS9Lb2xrYXRhfEFzaWEvQ2FsY3V0dGFcIixcblx0XHRcdFwiQXNpYS9LdWFsYV9MdW1wdXJ8QXNpYS9TaW5nYXBvcmVcIixcblx0XHRcdFwiQXNpYS9LdWFsYV9MdW1wdXJ8U2luZ2Fwb3JlXCIsXG5cdFx0XHRcIkFzaWEvTWFjYXV8QXNpYS9NYWNhb1wiLFxuXHRcdFx0XCJBc2lhL01ha2Fzc2FyfEFzaWEvVWp1bmdfUGFuZGFuZ1wiLFxuXHRcdFx0XCJBc2lhL05pY29zaWF8RXVyb3BlL05pY29zaWFcIixcblx0XHRcdFwiQXNpYS9RYXRhcnxBc2lhL0JhaHJhaW5cIixcblx0XHRcdFwiQXNpYS9SYW5nb29ufEFzaWEvWWFuZ29uXCIsXG5cdFx0XHRcIkFzaWEvUml5YWRofEFzaWEvQWRlblwiLFxuXHRcdFx0XCJBc2lhL1JpeWFkaHxBc2lhL0t1d2FpdFwiLFxuXHRcdFx0XCJBc2lhL1Nlb3VsfFJPS1wiLFxuXHRcdFx0XCJBc2lhL1NoYW5naGFpfEFzaWEvQ2hvbmdxaW5nXCIsXG5cdFx0XHRcIkFzaWEvU2hhbmdoYWl8QXNpYS9DaHVuZ2tpbmdcIixcblx0XHRcdFwiQXNpYS9TaGFuZ2hhaXxBc2lhL0hhcmJpblwiLFxuXHRcdFx0XCJBc2lhL1NoYW5naGFpfFBSQ1wiLFxuXHRcdFx0XCJBc2lhL1RhaXBlaXxST0NcIixcblx0XHRcdFwiQXNpYS9UZWhyYW58SXJhblwiLFxuXHRcdFx0XCJBc2lhL1RoaW1waHV8QXNpYS9UaGltYnVcIixcblx0XHRcdFwiQXNpYS9Ub2t5b3xKYXBhblwiLFxuXHRcdFx0XCJBc2lhL1VsYWFuYmFhdGFyfEFzaWEvVWxhbl9CYXRvclwiLFxuXHRcdFx0XCJBc2lhL1VydW1xaXxBc2lhL0thc2hnYXJcIixcblx0XHRcdFwiQXRsYW50aWMvRmFyb2V8QXRsYW50aWMvRmFlcm9lXCIsXG5cdFx0XHRcIkF0bGFudGljL1JleWtqYXZpa3xJY2VsYW5kXCIsXG5cdFx0XHRcIkF0bGFudGljL1NvdXRoX0dlb3JnaWF8RXRjL0dNVCsyXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9BZGVsYWlkZXxBdXN0cmFsaWEvU291dGhcIixcblx0XHRcdFwiQXVzdHJhbGlhL0JyaXNiYW5lfEF1c3RyYWxpYS9RdWVlbnNsYW5kXCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9Ccm9rZW5fSGlsbHxBdXN0cmFsaWEvWWFuY293aW5uYVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvRGFyd2lufEF1c3RyYWxpYS9Ob3J0aFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvSG9iYXJ0fEF1c3RyYWxpYS9UYXNtYW5pYVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvTG9yZF9Ib3dlfEF1c3RyYWxpYS9MSElcIixcblx0XHRcdFwiQXVzdHJhbGlhL01lbGJvdXJuZXxBdXN0cmFsaWEvVmljdG9yaWFcIixcblx0XHRcdFwiQXVzdHJhbGlhL1BlcnRofEF1c3RyYWxpYS9XZXN0XCIsXG5cdFx0XHRcIkF1c3RyYWxpYS9TeWRuZXl8QXVzdHJhbGlhL0FDVFwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvU3lkbmV5fEF1c3RyYWxpYS9DYW5iZXJyYVwiLFxuXHRcdFx0XCJBdXN0cmFsaWEvU3lkbmV5fEF1c3RyYWxpYS9OU1dcIixcblx0XHRcdFwiRXRjL0dNVC0wfEV0Yy9HTVRcIixcblx0XHRcdFwiRXRjL0dNVC0wfEV0Yy9HTVQrMFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8RXRjL0dNVDBcIixcblx0XHRcdFwiRXRjL0dNVC0wfEV0Yy9HcmVlbndpY2hcIixcblx0XHRcdFwiRXRjL0dNVC0wfEdNVFwiLFxuXHRcdFx0XCJFdGMvR01ULTB8R01UKzBcIixcblx0XHRcdFwiRXRjL0dNVC0wfEdNVC0wXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHTVQwXCIsXG5cdFx0XHRcIkV0Yy9HTVQtMHxHcmVlbndpY2hcIixcblx0XHRcdFwiRXRjL1VDVHxVQ1RcIixcblx0XHRcdFwiRXRjL1VUQ3xFdGMvVW5pdmVyc2FsXCIsXG5cdFx0XHRcIkV0Yy9VVEN8RXRjL1p1bHVcIixcblx0XHRcdFwiRXRjL1VUQ3xVVENcIixcblx0XHRcdFwiRXRjL1VUQ3xVbml2ZXJzYWxcIixcblx0XHRcdFwiRXRjL1VUQ3xadWx1XCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvTGp1YmxqYW5hXCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvUG9kZ29yaWNhXCIsXG5cdFx0XHRcIkV1cm9wZS9CZWxncmFkZXxFdXJvcGUvU2FyYWpldm9cIixcblx0XHRcdFwiRXVyb3BlL0JlbGdyYWRlfEV1cm9wZS9Ta29wamVcIixcblx0XHRcdFwiRXVyb3BlL0JlbGdyYWRlfEV1cm9wZS9aYWdyZWJcIixcblx0XHRcdFwiRXVyb3BlL0NoaXNpbmF1fEV1cm9wZS9UaXJhc3BvbFwiLFxuXHRcdFx0XCJFdXJvcGUvRHVibGlufEVpcmVcIixcblx0XHRcdFwiRXVyb3BlL0hlbHNpbmtpfEV1cm9wZS9NYXJpZWhhbW5cIixcblx0XHRcdFwiRXVyb3BlL0lzdGFuYnVsfEFzaWEvSXN0YW5idWxcIixcblx0XHRcdFwiRXVyb3BlL0lzdGFuYnVsfFR1cmtleVwiLFxuXHRcdFx0XCJFdXJvcGUvTGlzYm9ufFBvcnR1Z2FsXCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258RXVyb3BlL0JlbGZhc3RcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxFdXJvcGUvR3Vlcm5zZXlcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxFdXJvcGUvSXNsZV9vZl9NYW5cIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxFdXJvcGUvSmVyc2V5XCIsXG5cdFx0XHRcIkV1cm9wZS9Mb25kb258R0JcIixcblx0XHRcdFwiRXVyb3BlL0xvbmRvbnxHQi1FaXJlXCIsXG5cdFx0XHRcIkV1cm9wZS9Nb3Njb3d8Vy1TVVwiLFxuXHRcdFx0XCJFdXJvcGUvT3Nsb3xBcmN0aWMvTG9uZ3llYXJieWVuXCIsXG5cdFx0XHRcIkV1cm9wZS9Pc2xvfEF0bGFudGljL0phbl9NYXllblwiLFxuXHRcdFx0XCJFdXJvcGUvUHJhZ3VlfEV1cm9wZS9CcmF0aXNsYXZhXCIsXG5cdFx0XHRcIkV1cm9wZS9Sb21lfEV1cm9wZS9TYW5fTWFyaW5vXCIsXG5cdFx0XHRcIkV1cm9wZS9Sb21lfEV1cm9wZS9WYXRpY2FuXCIsXG5cdFx0XHRcIkV1cm9wZS9XYXJzYXd8UG9sYW5kXCIsXG5cdFx0XHRcIkV1cm9wZS9adXJpY2h8RXVyb3BlL0J1c2luZ2VuXCIsXG5cdFx0XHRcIkV1cm9wZS9adXJpY2h8RXVyb3BlL1ZhZHV6XCIsXG5cdFx0XHRcIkluZGlhbi9DaHJpc3RtYXN8RXRjL0dNVC03XCIsXG5cdFx0XHRcIlBhY2lmaWMvQXVja2xhbmR8QW50YXJjdGljYS9NY011cmRvXCIsXG5cdFx0XHRcIlBhY2lmaWMvQXVja2xhbmR8QW50YXJjdGljYS9Tb3V0aF9Qb2xlXCIsXG5cdFx0XHRcIlBhY2lmaWMvQXVja2xhbmR8TlpcIixcblx0XHRcdFwiUGFjaWZpYy9DaGF0aGFtfE5aLUNIQVRcIixcblx0XHRcdFwiUGFjaWZpYy9FYXN0ZXJ8Q2hpbGUvRWFzdGVySXNsYW5kXCIsXG5cdFx0XHRcIlBhY2lmaWMvR3VhbXxQYWNpZmljL1NhaXBhblwiLFxuXHRcdFx0XCJQYWNpZmljL0hvbm9sdWx1fFBhY2lmaWMvSm9obnN0b25cIixcblx0XHRcdFwiUGFjaWZpYy9Ib25vbHVsdXxVUy9IYXdhaWlcIixcblx0XHRcdFwiUGFjaWZpYy9Ld2FqYWxlaW58S3dhamFsZWluXCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFnb19QYWdvfFBhY2lmaWMvTWlkd2F5XCIsXG5cdFx0XHRcIlBhY2lmaWMvUGFnb19QYWdvfFBhY2lmaWMvU2Ftb2FcIixcblx0XHRcdFwiUGFjaWZpYy9QYWdvX1BhZ298VVMvU2Ftb2FcIixcblx0XHRcdFwiUGFjaWZpYy9QYWxhdXxFdGMvR01ULTlcIixcblx0XHRcdFwiUGFjaWZpYy9Qb2hucGVpfEV0Yy9HTVQtMTFcIixcblx0XHRcdFwiUGFjaWZpYy9Qb2hucGVpfFBhY2lmaWMvUG9uYXBlXCIsXG5cdFx0XHRcIlBhY2lmaWMvUG9ydF9Nb3Jlc2J5fEV0Yy9HTVQtMTBcIixcblx0XHRcdFwiUGFjaWZpYy9Qb3J0X01vcmVzYnl8UGFjaWZpYy9DaHV1a1wiLFxuXHRcdFx0XCJQYWNpZmljL1BvcnRfTW9yZXNieXxQYWNpZmljL1RydWtcIixcblx0XHRcdFwiUGFjaWZpYy9Qb3J0X01vcmVzYnl8UGFjaWZpYy9ZYXBcIixcblx0XHRcdFwiUGFjaWZpYy9UYXJhd2F8RXRjL0dNVC0xMlwiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXxQYWNpZmljL0Z1bmFmdXRpXCIsXG5cdFx0XHRcIlBhY2lmaWMvVGFyYXdhfFBhY2lmaWMvV2FrZVwiLFxuXHRcdFx0XCJQYWNpZmljL1RhcmF3YXxQYWNpZmljL1dhbGxpc1wiXG5cdFx0XVxuXHR9KTtcblxuXG5cdHJldHVybiBtb21lbnQ7XG59KSk7IiwiLypcbiAqIFRpdGxlOiBUeXBld3JpdGVyIEpTXG4gKiBEZXNjcmlwdGlvbjogQSBuYXRpdmUgamF2YXNjcmlwdCBwbHVnaW4gdGhhdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYW4gZWxlZ2VudCBhdXRvbWF0aWMgdHlwZXdyaXRlciBhbmltYXRpb24gZWZmZWN0IG9uIHdlYnNpdGVzLlxuICogQXV0aG9yOiBUYW1lZW0gU2FmaVxuICogV2Vic2l0ZTogaHR0cHM6Ly9zYWZpLm1lLnVrXG4gKiBWZXJzaW9uOiAxLjAuMFxuICovXG5cbihmdW5jdGlvbigpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblxuXHQvLyBodHRwOi8vcGF1bGlyaXNoLmNvbS8yMDExL3JlcXVlc3RhbmltYXRpb25mcmFtZS1mb3Itc21hcnQtYW5pbWF0aW5nL1xuXHQvLyBodHRwOi8vbXkub3BlcmEuY29tL2Vtb2xsZXIvYmxvZy8yMDExLzEyLzIwL3JlcXVlc3RhbmltYXRpb25mcmFtZS1mb3Itc21hcnQtZXItYW5pbWF0aW5nXG5cdC8vIHJlcXVlc3RBbmltYXRpb25GcmFtZSBwb2x5ZmlsbCBieSBFcmlrIE3DtmxsZXIuIGZpeGVzIGZyb20gUGF1bCBJcmlzaCBhbmQgVGlubyBaaWpkZWxcblx0Ly8gTUlUIGxpY2Vuc2Vcblx0KGZ1bmN0aW9uKCkge1xuXHQgICAgdmFyIGxhc3RUaW1lID0gMDtcblx0ICAgIHZhciB2ZW5kb3JzID0gWydtcycsICdtb3onLCAnd2Via2l0JywgJ28nXTtcblx0ICAgIGZvcih2YXIgeCA9IDA7IHggPCB2ZW5kb3JzLmxlbmd0aCAmJiAhd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTsgKyt4KSB7XG5cdCAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IHdpbmRvd1t2ZW5kb3JzW3hdKydSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXTtcblx0ICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSB3aW5kb3dbdmVuZG9yc1t4XSsnQ2FuY2VsQW5pbWF0aW9uRnJhbWUnXVxuXHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHdpbmRvd1t2ZW5kb3JzW3hdKydDYW5jZWxSZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXTtcblx0ICAgIH1cblxuXHQgICAgaWYgKCF3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKVxuXHQgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSBmdW5jdGlvbihjYWxsYmFjaywgZWxlbWVudCkge1xuXHQgICAgICAgICAgICB2YXIgY3VyclRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblx0ICAgICAgICAgICAgdmFyIHRpbWVUb0NhbGwgPSBNYXRoLm1heCgwLCAxNiAtIChjdXJyVGltZSAtIGxhc3RUaW1lKSk7XG5cdCAgICAgICAgICAgIHZhciBpZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayhjdXJyVGltZSArIHRpbWVUb0NhbGwpOyB9LFxuXHQgICAgICAgICAgICAgIHRpbWVUb0NhbGwpO1xuXHQgICAgICAgICAgICBsYXN0VGltZSA9IGN1cnJUaW1lICsgdGltZVRvQ2FsbDtcblx0ICAgICAgICAgICAgcmV0dXJuIGlkO1xuXHQgICAgICAgIH07XG5cblx0ICAgIGlmICghd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKVxuXHQgICAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKGlkKSB7XG5cdCAgICAgICAgICAgIGNsZWFyVGltZW91dChpZCk7XG5cdCAgICAgICAgfTtcblx0fSgpKTtcblxuXHR3aW5kb3cuVHlwZXdyaXRlciA9IGZ1bmN0aW9uIFR5cGV3cml0ZXIoZWxlbWVudCwgb3B0aW9ucykge1xuXHRcdHRoaXMuX3NldHRpbmdzID0ge1xuXHRcdFx0Y3Vyc29yQW5pbWF0aW9uUGF1c2VkOiBmYWxzZSxcblx0XHRcdG9wYWNpdHlJbmNyZWFzaW5nOiBmYWxzZSxcblx0XHRcdGN1cnJlbnRPcGFjaXR5OiAxLFxuXHRcdFx0ZGVsYXllZFF1ZTogW10sXG5cdFx0XHRkZWxheUl0ZW1zQ291bnQ6IDAsXG5cdFx0XHRldmVudFF1ZTogW10sXG5cdFx0XHRjYWxsZWRFdmVudHM6IFtdLFxuXHRcdFx0ZXZlbnRSdW5uaW5nOiBmYWxzZSxcblx0XHRcdHRpbWVvdXQ6IGZhbHNlLFxuXHRcdFx0ZGVsYXlFeGVjdXRpb246IGZhbHNlLFxuXHRcdFx0ZnBzOiAoNjAvMTAwMCksXG5cdFx0XHR0eXBpbmdGcmFtZUNvdW50OiAwLFxuXHRcdFx0c3RyaW5nVG9UeXBlSFRNTEFycmF5OiBbXSxcblx0XHRcdGN1cnJlbnRUeXBlZENoYXJhY3RlcnM6IFtdLFxuXHRcdFx0dHlwaW5nOiBmYWxzZSxcblx0XHRcdHVzZWRJRHM6IFtdLFxuXHRcdFx0Y2hhckFtb3VudFRvRGVsZXRlOiBmYWxzZSxcblx0XHRcdHVzZXJPcHRpb25zOiB7fSxcblx0XHRcdGV2ZW50TG9vcFJlcnVuOiAwXG5cdFx0fTtcblxuXHRcdGlmKCFlbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGNob29zZSBhbiBET00gZWxlbWVudCBzbyB0aGF0IHR5cGUgd3JpdGVyIGNhbiBkaXNwbGF5IGl0c2VsZi4nKTtcblx0XHR9XG5cblx0XHQvLyBpZighb3B0aW9ucy5zdHJpbmdzICYmICEob3B0aW9ucy5zdHJpbmdzIGluc3RhbmNlb2YgQXJyYXkgfHwgdHlwZW9mIG9wdGlvbnMuc3RyaW5ncyA9PT0gJ3N0cmluZycpKSB7XG5cdFx0Ly8gXHRyZXR1cm4gY29uc29sZS5lcnJvcignUGxlYXNlIGVudGVyIGFuIGFycmF5IG9mIHN0cmluZ3MgZm9yIHRoZSB0eXBld3JpdGVyIGFuaW1hdGlvbiB0byB3b3JrLicpO1xuXHRcdC8vIH1cblxuXHRcdGlmKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgb25seSBhY2NlcHRzIHRoZSBvcHRpb25zIGFzIGFuIG9iamVjdC4nKTtcblx0XHR9XG5cblx0XHR0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucyA9IG9wdGlvbnM7XG5cblx0XHR0aGlzLmRlZmF1bHRfb3B0aW9ucyA9IHtcblx0XHRcdHN0cmluZ3M6IGZhbHNlLFxuXHRcdFx0Y3Vyc29yQ2xhc3NOYW1lOiAndHlwZXdyaXRlci1jdXJzb3InLFxuXHRcdFx0Y3Vyc29yOiAnfCcsXG5cdFx0XHRhbmltYXRlQ3Vyc29yOiB0cnVlLFxuXHRcdFx0YmxpbmtTcGVlZDogNTAsXG5cdFx0XHR0eXBpbmdTcGVlZDogJ25hdHVyYWwnLFxuXHRcdFx0ZGVsZXRlU3BlZWQ6ICduYXR1cmFsJyxcblx0XHRcdGNoYXJTcGFuQ2xhc3NOYW1lOiAndHlwZXdyaXRlci1jaGFyJyxcblx0XHRcdHdyYXBwZXJDbGFzc05hbWU6ICd0eXBld3JpdGVyLXdyYXBwZXInLFxuXHRcdFx0bG9vcDogZmFsc2UsXG5cdFx0XHRhdXRvU3RhcnQ6IGZhbHNlLFxuXHRcdFx0ZGV2TW9kZTogZmFsc2Vcblx0XHR9O1xuXG5cdFx0dGhpcy5vcHRpb25zID0gdGhpcy5fc2V0dXBPcHRpb25zKG9wdGlvbnMpO1xuXG5cdFx0dGhpcy5lbCA9IGVsZW1lbnQ7XG5cblx0XHR0aGlzLl9zZXR1cFR5cHdyaXRlcldyYXBwZXIoKTtcblxuXHRcdHRoaXMuX3N0YXJ0Q3Vyc29yQW5pbWF0aW9uKCk7XG5cblx0XHRpZih0aGlzLm9wdGlvbnMuYXV0b1N0YXJ0ID09PSB0cnVlICYmIHRoaXMub3B0aW9ucy5zdHJpbmdzKSB7XG5cdFx0XHR0aGlzLnR5cGVPdXRBbGxTdHJpbmdzKCk7XG5cdFx0fVxuXG5cdH07XG5cblx0dmFyIFR5cGV3cml0ZXJQcm90b3R5cGUgPSB3aW5kb3cuVHlwZXdyaXRlci5wcm90b3R5cGU7XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7XG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZSh0aGlzLl9zdG9wRXZlbnRMb29wKVxuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUucmVydW4gPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKHRoaXMuX3JlcnVuQ2FsbGVkRXZlbnRzKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnR5cGVTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcpIHtcblx0XHRpZighc3RyaW5nIHx8IHR5cGVvZiBzdHJpbmcgIT0gJ3N0cmluZycpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBzdHJpbmcgYXMgdGhlIHBhcmFtYXRlci4nKTtcblx0XHR9XG5cblx0XHR2YXIgc3RyaW5nX2NoYXJzID0gdGhpcy5fZ2V0Q2hhcmFjdGVycyhzdHJpbmcpO1xuXG5cdFx0dGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fdHlwZUNoYXJhY3RlcnMsIFtzdHJpbmdfY2hhcnNdXSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5kZWxldGVBbGwgPSBmdW5jdGlvbigpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9kZWxldGVDaGFycywgWydhbGwnXV0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuZGVsZXRlQ2hhcnMgPSBmdW5jdGlvbihhbW91bnQpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9kZWxldGVDaGFycywgW2Ftb3VudF1dKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLnBhdXNlRm9yID0gZnVuY3Rpb24obXMpIHtcblx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl9wYXVzZUZvciwgW21zXV0pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUudHlwZU91dEFsbFN0cmluZ3MgPSBmdW5jdGlvbigpIHtcblx0XHR2YXIgY2hhcmFjdGVyc19hcnJheSA9IHRoaXMuX2dldFN0cmluZ3NBc0NoYXJzQXJyYXkoKTtcblxuXHRcdGlmKGNoYXJhY3RlcnNfYXJyYXkubGVuZ3RoID09PSAxKSB7XG5cdFx0XHR0aGlzLl90eXBlQ2hhcmFjdGVycyhjaGFyYWN0ZXJzX2FycmF5WzBdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yKHZhciBpID0gMCwgbGVuZ3RoID0gY2hhcmFjdGVyc19hcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0XHR0aGlzLl9hZGRUb0V2ZW50UXVlKFt0aGlzLl90eXBlQ2hhcmFjdGVycywgW2NoYXJhY3RlcnNfYXJyYXlbaV1dXSk7XG5cdFx0XHRcdHRoaXMucGF1c2VGb3IodGhpcy5fcmFuZG9tSW50ZWdlcigxNTAwLCAyNTAwKSk7XG5cdFx0XHRcdHRoaXMuZGVsZXRlQWxsKCk7XG5cdFx0XHRcdHRoaXMucGF1c2VGb3IodGhpcy5fcmFuZG9tSW50ZWdlcigxNTAwLCAyNTAwKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLmNoYW5nZVNldHRpbmdzID0gZnVuY3Rpb24obmV3X3NldHRpbmdzKSB7XG5cdFx0aWYoIW5ld19zZXR0aW5ncyAmJiB0eXBlb2YgbmV3X3NldHRpbmdzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgd2lsbCBvbmx5IGFjY2VwdCBhbiBvYmplY3QgYXMgdGhlIHNldHRpbmdzLicpO1xuXHRcdH1cblxuXHRcdHRoaXMuX2FkZFRvRXZlbnRRdWUoW3RoaXMuX2NoYW5nZVNldHRpbmdzLCBbSlNPTi5zdHJpbmdpZnkobmV3X3NldHRpbmdzKV1dKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VCbGlua1NwZWVkID0gZnVuY3Rpb24obmV3X3NwZWVkKSB7XG5cdFx0aWYoIW5ld19zcGVlZCAmJiB0eXBlb2YgbmV3X3NwZWVkICE9PSAnbnVtYmVyJykge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBlbnRlciBhIG51bWJlciBmb3IgdGhlIG5ldyBibGluayBzcGVlZC4nKTtcblx0XHR9XG5cblx0XHR0aGlzLmNoYW5nZVNldHRpbmdzKHtcblx0XHRcdGJsaW5rU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VUeXBpbmdTcGVlZCA9IGZ1bmN0aW9uKG5ld19zcGVlZCkge1xuXHRcdGlmKCFuZXdfc3BlZWQgJiYgdHlwZW9mIG5ld19zcGVlZCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBudW1iZXIgZm9yIHRoZSBuZXcgdHlwaW5nIHNwZWVkLicpO1xuXHRcdH1cblxuXHRcdHZhciBuZXdfc2V0dGluZ3MgPSB7XG5cdFx0XHR0eXBpbmdTcGVlZDogbmV3X3NwZWVkXG5cdFx0fTtcblxuXHRcdHRoaXMuY2hhbmdlU2V0dGluZ3Moe1xuXHRcdFx0dHlwaW5nU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5jaGFuZ2VEZWxldGVTcGVlZCA9IGZ1bmN0aW9uKG5ld19zcGVlZCkge1xuXHRcdGlmKCFuZXdfc3BlZWQgJiYgdHlwZW9mIG5ld19zcGVlZCAhPT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiBjb25zb2xlLmVycm9yKCdQbGVhc2UgZW50ZXIgYSBudW1iZXIgZm9yIHRoZSBuZXcgZGVsZXRlIHNwZWVkLicpO1xuXHRcdH1cblxuXHRcdHRoaXMuY2hhbmdlU2V0dGluZ3Moe1xuXHRcdFx0Y2hhbmdlRGVsZXRlU3BlZWQ6IG5ld19zcGVlZFxuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcmVydW5DYWxsZWRFdmVudHMgPSBmdW5jdGlvbigpIHtcblx0XHRpZih0aGlzLl9zZXR0aW5ncy5jdXJyZW50VHlwZWRDaGFyYWN0ZXJzLmxlbmd0aCA+IDApIHtcblx0XHRcdHRoaXMuZGVsZXRlQWxsKCk7XG5cdFx0XHR0aGlzLl9yZXNldEV2ZW50TG9vcCgncmVydW5DYWxsZWRFdmVudHMnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUgPSB0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHM7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHMgPSBbXTtcblx0XHRcdHRoaXMub3B0aW9ucyA9IHRoaXMuX3NldHVwT3B0aW9ucyh0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucyk7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy51c2VkSURzID0gW107XG5cdFx0XHR0aGlzLmNoYXJBbW91bnRUb0RlbGV0ZSA9IGZhbHNlO1xuXHRcdFx0dGhpcy5fc3RhcnRFdmVudExvb3AoKTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZGVsZXRlQ2hhcnMgPSBmdW5jdGlvbihhbW91bnQpIHtcblxuXG5cdFx0aWYoYW1vdW50KSB7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBhbW91bnQ7XG5cdFx0fVxuXHRcdHRoaXMuX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fcGF1c2VGb3IgPSBmdW5jdGlvbihtcykge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblx0XHRzZWxmLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSB0cnVlO1xuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRzZWxmLl9yZXNldEV2ZW50TG9vcCgncGF1c2VGb3InKTtcblx0XHR9LCBtcyk7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fY2hhbmdlU2V0dGluZ3MgPSBmdW5jdGlvbihuZXdfc2V0dGluZ3MpIHtcblx0XHR0aGlzLm9wdGlvbnMgPSB0aGlzLl9zZXR1cE9wdGlvbnMoSlNPTi5wYXJzZShuZXdfc2V0dGluZ3NbMF0pKTtcblx0XHR0aGlzLl9yZXNldEV2ZW50TG9vcCgnY2hhbmdlU2V0dGluZ3MnKTtcblxuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnTmV3IHNldHRpbmdzJywgdGhpcy5vcHRpb25zKTtcblx0XHR9XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9kZWxldGluZ0NoYXJBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzZWxmID0gdGhpcztcblx0XHR2YXIgZGVsZXRlX3NwZWVkID0gdGhpcy5vcHRpb25zLmRlbGV0ZVNwZWVkO1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSA9IHNlbGYub3B0aW9ucy53cmFwcGVyQ2xhc3NOYW1lO1xuXHRcdHZhciBjdXJyZW50X3R5cGVkX2NoYXJfaWRzID0gc2VsZi5fc2V0dGluZ3MuY3VycmVudFR5cGVkQ2hhcmFjdGVycztcblx0XHR2YXIgY2hhcl9hbW91bnRfdG9fZGVsZXRlID0gc2VsZi5fc2V0dGluZ3MuY2hhckFtb3VudFRvRGVsZXRlO1xuXG5cdFx0aWYoIXNlbGYuX3NldHRpbmdzLmNoYXJBbW91bnRUb0RlbGV0ZSB8fCBzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPT09IDAgfHwgY3VycmVudF90eXBlZF9jaGFyX2lkcyA9PT0gMCkge1xuXHRcdFx0c2VsZi5fcmVzZXRFdmVudExvb3AoJ2RlbGV0aW5nQ2hhckFuaW1hdGlvbkZyYW1lJyk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZihkZWxldGVfc3BlZWQgPT0gJ25hdHVyYWwnKSB7XG5cdFx0XHRkZWxldGVfc3BlZWQgPSBzZWxmLl9yYW5kb21JbnRlZ2VyKDUwLCAxNTApO1xuXHRcdH1cblxuXHRcdGlmKGNoYXJfYW1vdW50X3RvX2RlbGV0ZSA9PSAnYWxsJykge1xuXHRcdFx0Y2hhcl9hbW91bnRfdG9fZGVsZXRlID0gY3VycmVudF90eXBlZF9jaGFyX2lkcy5sZW5ndGg7XG5cdFx0XHRzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBjaGFyX2Ftb3VudF90b19kZWxldGU7XG5cdFx0fVxuXG5cdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHtcblx0XHRcdGlmKHNlbGYuX3NldHRpbmdzLmNoYXJBbW91bnRUb0RlbGV0ZSkge1xuXHRcdFx0XHR2YXIgbGFzdF90eXBlZF9jaGFyX2luZGV4ID0gY3VycmVudF90eXBlZF9jaGFyX2lkcy5sZW5ndGggLSAxO1xuXHRcdFx0XHR2YXIgZ2V0X2xhc3RfdHlwZWRfY2hhciA9IGN1cnJlbnRfdHlwZWRfY2hhcl9pZHNbbGFzdF90eXBlZF9jaGFyX2luZGV4XTtcblxuXHRcdFx0XHRzZWxmLl9zZXR0aW5ncy5jdXJyZW50VHlwZWRDaGFyYWN0ZXJzLnNwbGljZShsYXN0X3R5cGVkX2NoYXJfaW5kZXgsIDEpO1xuXG5cdFx0XHRcdHZhciBjaGFyX3RvX2RlbGV0ZV9lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGdldF9sYXN0X3R5cGVkX2NoYXIpO1xuXG5cdFx0XHRcdGlmKGNoYXJfdG9fZGVsZXRlX2VsKSB7XG5cdFx0XHRcdFx0dmFyIHR5cGV3cml0ZXJfd3JhcHBlcl9lbCA9IHNlbGYuZWwucXVlcnlTZWxlY3RvcignLicgKyB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSk7XG5cdFx0XHRcdFx0dHlwZXdyaXRlcl93cmFwcGVyX2VsLnJlbW92ZUNoaWxkKGNoYXJfdG9fZGVsZXRlX2VsKTtcblx0XHRcdFx0XHRzZWxmLl9zZXR0aW5ncy5jaGFyQW1vdW50VG9EZWxldGUgPSBjaGFyX2Ftb3VudF90b19kZWxldGUgLSAxO1xuXG5cdFx0XHRcdFx0aWYoc2VsZi5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdEZWxldGVkIGNoYXIgd2l0aCBJRCcsIGdldF9sYXN0X3R5cGVkX2NoYXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHR9XG5cblx0XHRcdHNlbGYuX2RlbGV0aW5nQ2hhcklkc0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2VsZi5fZGVsZXRpbmdDaGFyQW5pbWF0aW9uRnJhbWUuYmluZChzZWxmKSk7XG5cblx0XHR9LCBkZWxldGVfc3BlZWQpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3NldHVwT3B0aW9ucyA9IGZ1bmN0aW9uKG5ld19vcHRpb25zKSB7XG5cdCAgICB2YXIgbWVyZ2VkX29wdGlvbnMgPSB7fTtcblxuXHQgICAgZm9yICh2YXIgYXR0cm5hbWUgaW4gdGhpcy5kZWZhdWx0X29wdGlvbnMpIHtcblx0ICAgIFx0bWVyZ2VkX29wdGlvbnNbYXR0cm5hbWVdID0gdGhpcy5kZWZhdWx0X29wdGlvbnNbYXR0cm5hbWVdO1xuXHQgICAgfVxuXG5cdCAgICBpZih0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucykge1xuXHQgICAgXHRmb3IgKHZhciBhdHRybmFtZSBpbiB0aGlzLl9zZXR0aW5ncy51c2VyT3B0aW9ucykge1xuXHRcdCAgICBcdG1lcmdlZF9vcHRpb25zW2F0dHJuYW1lXSA9IHRoaXMuX3NldHRpbmdzLnVzZXJPcHRpb25zW2F0dHJuYW1lXTtcblx0XHQgICAgfVxuXHQgICAgfVxuXG5cdCAgICBmb3IgKHZhciBhdHRybmFtZSBpbiBuZXdfb3B0aW9ucykge1xuXHQgICAgXHRtZXJnZWRfb3B0aW9uc1thdHRybmFtZV0gPSBuZXdfb3B0aW9uc1thdHRybmFtZV07XG5cdCAgICB9XG5cblx0ICAgIHJldHVybiBtZXJnZWRfb3B0aW9ucztcblx0fVxuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2FkZFRvRXZlbnRRdWUgPSBmdW5jdGlvbihldmVudCkge1xuXHRcdHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLnB1c2goZXZlbnQpO1xuXHRcdGlmKHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLmxlbmd0aCA+IDAgJiYgIXRoaXMuX3NldHRpbmdzLmV2ZW50UnVubmluZyAmJiB0aGlzLm9wdGlvbnMuYXV0b1N0YXJ0KSB7XG5cdFx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zdGFydEV2ZW50TG9vcCA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgbG9vcCBzdGFydGVkLicpO1xuXHRcdH1cblxuXHRcdGlmKCF0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcpIHtcblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR0aGlzLmV2ZW50TG9vcFJlcnVuID0gMDtcblx0XHRcdFx0dmFyIGZpcnN0X2V2ZW50ID0gdGhpcy5fc2V0dGluZ3MuZXZlbnRRdWVbMF07XG5cdFx0XHRcdGlmKHR5cGVvZiBmaXJzdF9ldmVudCA9PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jYWxsZWRFdmVudHMucHVzaChmaXJzdF9ldmVudCk7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUuc3BsaWNlKDAsIDEpO1xuXHRcdFx0XHRcdGZpcnN0X2V2ZW50LmNhbGwodGhpcyk7XG5cdFx0XHRcdFx0aWYodGhpcy5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdFdmVudCBzdGFydGVkLicpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmKGZpcnN0X2V2ZW50IGluc3RhbmNlb2YgQXJyYXkpIHtcblx0XHRcdFx0XHRpZih0eXBlb2YgZmlyc3RfZXZlbnRbMF0gPT0gJ2Z1bmN0aW9uJyAmJiBmaXJzdF9ldmVudFsxXSBpbnN0YW5jZW9mIEFycmF5KSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSB0cnVlO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuY2FsbGVkRXZlbnRzLnB1c2goZmlyc3RfZXZlbnQpO1xuXHRcdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3MuZXZlbnRRdWUuc3BsaWNlKDAsIDEpO1xuXHRcdFx0XHRcdFx0Zmlyc3RfZXZlbnRbMF0uY2FsbCh0aGlzLCBmaXJzdF9ldmVudFsxXSk7XG5cdFx0XHRcdFx0XHRpZih0aGlzLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnRXZlbnQgc3RhcnRlZC4nKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHRoaXMuX2V2ZW50UXVlQW5pbWF0aW9uID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9zdGFydEV2ZW50TG9vcC5iaW5kKHRoaXMpKTtcblx0XHR9XG5cblx0XHRpZighdGhpcy5fc2V0dGluZ3MuZXZlbnRSdW5uaW5nICYmIHRoaXMuX3NldHRpbmdzLmV2ZW50UXVlLmxlbmd0aCA8PSAwKSB7XG5cdFx0XHR2YXIgc2VsZiA9IHRoaXM7XG5cdFx0XHRzZWxmLl9zdG9wRXZlbnRMb29wKCk7XG5cdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRpZihzZWxmLm9wdGlvbnMubG9vcCkge1xuXHRcdFx0XHRcdHNlbGYuZXZlbnRMb29wUmVydW4rKztcblx0XHRcdFx0XHRpZihzZWxmLm9wdGlvbnMuZGV2TW9kZSkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0JlZm9yZSBMb29wIFN0YXRlJywgc2VsZi5fc2V0dGluZ3MpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihzZWxmLmV2ZW50TG9vcFJlcnVuID4gNCkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignTWF4aW11bSBhbW91bnQgb2YgbG9vcCByZXRyaWVzIHJlYWNoZWQuJyk7XG5cdFx0XHRcdFx0XHRzZWxmLl9zdG9wRXZlbnRMb29wKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGlmKHNlbGYub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdMb29waW5nIGV2ZW50cy4nKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHNlbGYuX3JlcnVuQ2FsbGVkRXZlbnRzKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LCAxMDAwKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yZXNldEV2ZW50TG9vcCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0XHR2YXIgZXZlbnRfbmFtZSA9IG5hbWUgfHwgJ0V2ZW50Jztcblx0XHR0aGlzLl9zZXR0aW5ncy5ldmVudFJ1bm5pbmcgPSBmYWxzZTtcblx0XHR0aGlzLl9zdGFydEV2ZW50TG9vcCgpO1xuXHRcdGlmKHRoaXMub3B0aW9ucy5kZXZNb2RlKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhldmVudF9uYW1lLCAnRmluaXNoZWQnKTtcblx0XHR9XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fc3RvcEV2ZW50TG9vcCA9IGZ1bmN0aW9uKCkge1xuXHRcdHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9ldmVudFF1ZUFuaW1hdGlvbik7XG5cdFx0aWYodGhpcy5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdGNvbnNvbGUubG9nKCdFdmVudCBsb29wIHN0b3BwZWQuJyk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3NldHVwVHlwd3JpdGVyV3JhcHBlciA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy53cmFwcGVyQ2xhc3NOYW1lO1xuXHRcdHZhciB0eXBld3JpdGVyX3dyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0dHlwZXdyaXRlcl93cmFwcGVyLmNsYXNzTmFtZSA9IHR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lO1xuXHRcdHRoaXMuZWwuaW5uZXJIVE1MID0gJyc7XG5cdFx0dGhpcy5lbC5hcHBlbmRDaGlsZCh0eXBld3JpdGVyX3dyYXBwZXIpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3R5cGVDaGFyYWN0ZXJzID0gZnVuY3Rpb24oY2hhcmFjdGVyc19hcnJheSkge1xuXHRcdHRoaXMuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheSA9IHRoaXMuX2NvbnZlcnRDaGFyc1RvSFRNTChjaGFyYWN0ZXJzX2FycmF5KTtcblx0XHR0aGlzLl90eXBpbmdBbmltYXRpb24gPSB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3R5cGluZ0FuaW1hdGlvbkZyYW1lLmJpbmQodGhpcywgY2hhcmFjdGVyc19hcnJheS5sZW5ndGgpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl90eXBpbmdBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKHRvdGFsX2l0ZW1zKSB7XG5cdFx0dmFyIHNlbGYgPSB0aGlzO1xuXHRcdHZhciB0eXBpbmdfc3BlZWQgPSB0aGlzLm9wdGlvbnMudHlwaW5nU3BlZWQ7XG5cdFx0dmFyIHR5cGV3cml0ZXJfd3JhcHBlcl9jbGFzc19uYW1lID0gc2VsZi5vcHRpb25zLndyYXBwZXJDbGFzc05hbWU7XG5cblx0XHRpZihzZWxmLl9zZXR0aW5ncy5zdHJpbmdUb1R5cGVIVE1MQXJyYXkubGVuZ3RoID09IDApIHtcblx0XHRcdHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShzZWxmLl90eXBpbmdBbmltYXRpb24pO1xuXHRcdFx0dGhpcy5fcmVzZXRFdmVudExvb3AoJ3R5cGluZ0FuaW1hdGlvbkZyYW1lJyk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZih0eXBpbmdfc3BlZWQgPT0gJ25hdHVyYWwnKSB7XG5cdFx0XHR0eXBpbmdfc3BlZWQgPSB0aGlzLl9yYW5kb21JbnRlZ2VyKDUwLCAxNTApO1xuXHRcdH1cblxuXHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHR2YXIgZWxfaW5uZXJfaHRtbCA9IHNlbGYuZWwuaW5uZXJIVE1MO1xuXHRcdFx0dmFyIGl0ZW1fdG9fdHlwZSA9IHNlbGYuX3NldHRpbmdzLnN0cmluZ1RvVHlwZUhUTUxBcnJheVswXTtcblx0XHRcdHNlbGYuZWwucXVlcnlTZWxlY3RvcignLicgKyB0eXBld3JpdGVyX3dyYXBwZXJfY2xhc3NfbmFtZSkuYXBwZW5kQ2hpbGQoaXRlbV90b190eXBlLmVsKTtcblx0XHRcdHNlbGYuX3NldHRpbmdzLmN1cnJlbnRUeXBlZENoYXJhY3RlcnMucHVzaChpdGVtX3RvX3R5cGUuaWQpO1xuXHRcdFx0c2VsZi5fc2V0dGluZ3Muc3RyaW5nVG9UeXBlSFRNTEFycmF5LnNwbGljZSgwLCAxKTtcblx0XHRcdHNlbGYuX3R5cGluZ0FuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc2VsZi5fdHlwaW5nQW5pbWF0aW9uRnJhbWUuYmluZChzZWxmLCB0b3RhbF9pdGVtcykpO1xuXHRcdFx0aWYoc2VsZi5vcHRpb25zLmRldk1vZGUpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ1R5cGVkJywgaXRlbV90b190eXBlKTtcblx0XHRcdH1cblx0XHR9LCB0eXBpbmdfc3BlZWQpO1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2NvbnZlcnRDaGFyc1RvSFRNTCA9IGZ1bmN0aW9uKGNoYXJzKSB7XG5cdFx0dmFyIGNoYXJzX2h0bWxfd3JhcF9hcnJheSA9IFtdO1xuXHRcdHZhciBjaGFyX2NsYXNzX25hbWUgPSB0aGlzLm9wdGlvbnMuY2hhclNwYW5DbGFzc05hbWU7XG5cdFx0dmFyIGNoYXJzX2FycmF5ID0gY2hhcnNbMF07XG5cblx0XHRmb3IodmFyIGkgPSAwLCBsZW5ndGggPSBjaGFyc19hcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGNoYXJfZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcblx0XHRcdHZhciBjaGFyX2lkID0gdGhpcy5fZ2VuZXJhdGVVbmlxdWVJRCgpO1xuXHRcdFx0Y2hhcl9lbGVtZW50LmlkID0gY2hhcl9pZDtcblx0XHRcdGNoYXJfZWxlbWVudC5jbGFzc05hbWUgPSBjaGFyX2NsYXNzX25hbWUgKyAnIHR5cGV3cml0ZXItaXRlbS0nICsgaTtcblx0XHRcdGNoYXJfZWxlbWVudC5pbm5lckhUTUwgPSBjaGFyc19hcnJheVtpXTtcblx0XHRcdGNoYXJzX2h0bWxfd3JhcF9hcnJheS5wdXNoKHtcblx0XHRcdFx0aWQ6IGNoYXJfaWQsXG5cdFx0XHRcdGVsOiBjaGFyX2VsZW1lbnRcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJldHVybiBjaGFyc19odG1sX3dyYXBfYXJyYXk7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2V0Q2hhcmFjdGVycyA9IGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdGlmKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBzdHJpbmcuc3BsaXQoXCJcIik7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2V0U3RyaW5nc0FzQ2hhcnNBcnJheSA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBzdHJpbmdzX2FycmF5X2NoZWNrID0gdGhpcy5vcHRpb25zLnN0cmluZ3MgaW5zdGFuY2VvZiBBcnJheTtcblx0XHR2YXIgc3RyaW5nc19zdHJpbmdfY2hlY2sgPSB0eXBlb2YgdGhpcy5vcHRpb25zLnN0cmluZ3MgPT09ICdzdHJpbmcnO1xuXHRcdGlmKCFzdHJpbmdzX2FycmF5X2NoZWNrKSB7XG5cdFx0XHRpZighc3RyaW5nc19zdHJpbmdfY2hlY2spIHtcblx0XHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ1R5cGV3cml0ZXIgb25seSBhY2NlcHRzIHN0cmluZ3Mgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhcyB0aGUgaW5wdXQuJyk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gW3RoaXMub3B0aW9ucy5zdHJpbmdzLnNwbGl0KFwiXCIpXTtcblx0XHR9XG5cblx0XHR2YXIgc3RyaW5nc19jaGFyc19hcnJheSA9IFtdO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IHRoaXMub3B0aW9ucy5zdHJpbmdzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgc3RyaW5nX2NoYXJzID0gdGhpcy5fZ2V0Q2hhcmFjdGVycyh0aGlzLm9wdGlvbnMuc3RyaW5nc1tpXSk7XG5cdFx0XHRpZighc3RyaW5nX2NoYXJzKSB7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1BsZWFzZSBlbnRlciBvbmx5IHN0cmluZ3MuJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0c3RyaW5nc19jaGFyc19hcnJheS5wdXNoKHN0cmluZ19jaGFycyk7XG4gICAgXHR9XG5cbiAgICBcdHJldHVybiBzdHJpbmdzX2NoYXJzX2FycmF5O1xuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX2N1cnNvckFuaW1hdGlvbkZyYW1lID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0dmFyIGJsaW5rX3NwZWVkID0gdGhpcy5vcHRpb25zLmJsaW5rU3BlZWQ7XG5cdFx0XHR2YXIgb3BhY2l0eV9hbW91bnQgPSAoMS8xMDAwKSAqIGJsaW5rX3NwZWVkO1xuXG5cdFx0XHR2YXIgY3Vyc29yX2VsID0gdGhpcy5lbC5xdWVyeVNlbGVjdG9yKCcudHlwZXdyaXRlci1jdXJzb3InKTtcblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPT0gdHJ1ZSkge1xuXHRcdFx0XHRpZih0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA+PSAxKSB7XG5cdFx0XHRcdFx0dGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPSBmYWxzZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA9IDE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSArPSBvcGFjaXR5X2Ftb3VudDtcblx0XHRcdH1cblxuXHRcdFx0aWYodGhpcy5fc2V0dGluZ3Mub3BhY2l0eUluY3JlYXNpbmcgPT0gZmFsc2UpIHtcblx0XHRcdFx0aWYodGhpcy5fc2V0dGluZ3MuY3VycmVudE9wYWNpdHkgPD0gMCkge1xuXHRcdFx0XHRcdHRoaXMuX3NldHRpbmdzLm9wYWNpdHlJbmNyZWFzaW5nID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSA9IDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eSAtPSBvcGFjaXR5X2Ftb3VudDtcblx0XHRcdH1cblxuXHRcdFx0Y3Vyc29yX2VsLnN0eWxlLm9wYWNpdHkgPSB0aGlzLl9zZXR0aW5ncy5jdXJyZW50T3BhY2l0eTtcblx0XHRcdHRoaXMuX2N1cnNvckFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fY3Vyc29yQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuYXBwZW5kVGV4dCA9IGZ1bmN0aW9uKHRleHQpe1xuXHQgICAgdGhpcy5fYWRkVG9FdmVudFF1ZShbdGhpcy5fYXBwZW5kVGV4dCwgW3RleHRdXSlcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fYXBwZW5kVGV4dCA9IGZ1bmN0aW9uKHRleHQpe1xuICAgICAgICAgICAgdmFyIGNoYXJfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy5jaGFyU3BhbkNsYXNzTmFtZTtcbiAgICAgICAgICAgIHZhciBjaGFyX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICB2YXIgY2hhcl9pZCA9IHRoaXMuX2dlbmVyYXRlVW5pcXVlSUQoKTtcbiAgICAgICAgICAgIGNoYXJfZWxlbWVudC5pZCA9IGNoYXJfaWQ7XG4gICAgICAgICAgICBjaGFyX2VsZW1lbnQuY2xhc3NOYW1lID0gY2hhcl9jbGFzc19uYW1lICsgJyBkb20tYXBwZW5kZWQnXG4gICAgICAgICAgICBjaGFyX2VsZW1lbnQuaW5uZXJIVE1MID0gdGV4dFxuICAgICAgICAgICAgdmFyIGl0ZW1zID0gIFtdXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogY2hhcl9pZCxcbiAgICAgICAgICAgICAgICBlbDogY2hhcl9lbGVtZW50XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fc2V0dGluZ3Muc3RyaW5nVG9UeXBlSFRNTEFycmF5ID0gaXRlbXNcblxuICAgICAgICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl90eXBpbmdBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMsIDEpKTtcblxuICAgIH1cblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9zdGFydEN1cnNvckFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciBjdXJzb3IgPSB0aGlzLm9wdGlvbnMuY3Vyc29yO1xuXHRcdHZhciBjdXJzb3JfY2xhc3NfbmFtZSA9IHRoaXMub3B0aW9ucy5jdXJzb3JDbGFzc05hbWU7XG5cblx0XHR2YXIgY3Vyc29yX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cdFx0Y3Vyc29yX2VsZW1lbnQuY2xhc3NOYW1lID0gY3Vyc29yX2NsYXNzX25hbWU7XG5cdFx0Y3Vyc29yX2VsZW1lbnQuaW5uZXJIVE1MID0gY3Vyc29yO1xuXG5cdFx0dGhpcy5lbC5hcHBlbmRDaGlsZChjdXJzb3JfZWxlbWVudCk7XG5cdFx0aWYodGhpcy5vcHRpb25zLmFuaW1hdGVDdXJzb3IpIHtcblx0XHRcdHRoaXMuX2N1cnNvckFuaW1hdGlvbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fY3Vyc29yQW5pbWF0aW9uRnJhbWUuYmluZCh0aGlzKSk7XG5cdFx0fVxuXHR9O1xuXG5cdFR5cGV3cml0ZXJQcm90b3R5cGUuX3BhdXNlQ3Vyc29yQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2N1cnNvckFuaW1hdGlvbik7XG5cdFx0XHR0aGlzLl9zZXR0aW5ncy5jdXJzb3JBbmltYXRpb25QYXVzZWQgPSB0cnVlO1xuXHRcdH1cblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yZXN0YXJ0Q3Vyc29yQW5pbWF0aW9uID0gZnVuY3Rpb24oKSB7XG5cdFx0aWYoIXRoaXMuX3NldHRpbmdzLmN1cnNvckFuaW1hdGlvblBhdXNlZCkge1xuXHRcdFx0cmV0dXJuIGNvbnNvbGUuZXJyb3IoJ0N1cnNvciBhbmltYXRpb24gaXMgYWxyZWFkeSBydW5uaW5nLicpXG5cdFx0fVxuXG5cdFx0dGhpcy5fc2V0dGluZ3MuY3Vyc29yQW5pbWF0aW9uUGF1c2VkID0gZmFsc2U7XG5cdFx0dGhpcy5fY3Vyc29yQW5pbWF0aW9uID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9jdXJzb3JBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMpKTtcblx0fTtcblxuXHQvKiBVdGlscyAqL1xuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yYW5kb21JbnRlZ2VyID0gZnVuY3Rpb24obWluLCBtYXgpIHtcblx0XHRyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjtcblx0fTtcblxuXHRUeXBld3JpdGVyUHJvdG90eXBlLl9yYW5kb21JRCA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0ZXh0ID0gXCJcIjtcbiAgICBcdHZhciBwb3NzaWJsZSA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIjtcblxuICAgIFx0Zm9yKCB2YXIgaT0wOyBpIDwgdGhpcy5fcmFuZG9tSW50ZWdlcig1LCAxNSk7IGkrKyApIHtcbiAgICBcdFx0dGV4dCArPSBwb3NzaWJsZS5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcG9zc2libGUubGVuZ3RoKSk7XG5cdFx0fVxuICAgIFx0cmV0dXJuIHRleHQ7XG5cdH07XG5cblx0VHlwZXdyaXRlclByb3RvdHlwZS5fZ2VuZXJhdGVVbmlxdWVJRCA9IGZ1bmN0aW9uKCkge1xuXHRcdHZhciB0ZW1wX2lkID0gdGhpcy5fcmFuZG9tSUQoKTtcblx0XHRpZih0aGlzLl9zZXR0aW5ncy51c2VkSURzLmluZGV4T2YodGVtcF9pZCkgPT0gLTEpIHtcblx0XHRcdHRoaXMuX3NldHRpbmdzLnVzZWRJRHMucHVzaCh0ZW1wX2lkKTtcblx0XHRcdHJldHVybiB0ZW1wX2lkO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5fZ2VuZXJhdGVVbmlxdWVJRC5jYWxsKHRoaXMpO1xuXHR9O1xuXG5cbn0pKCk7IiwiLyohIFVJa2l0IDMuMC4wLXJjLjUgfCBodHRwOi8vd3d3LmdldHVpa2l0LmNvbSB8IChjKSAyMDE0IC0gMjAxNyBZT090aGVtZSB8IE1JVCBMaWNlbnNlICovXG5cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gICAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICAgIHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSgndWlraXQnLCBmYWN0b3J5KSA6XG4gICAgKGdsb2JhbC5VSWtpdCA9IGZhY3RvcnkoKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoKSB7ICd1c2Ugc3RyaWN0JztcblxuICAgIGZ1bmN0aW9uIGJpbmQoZm4sIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgICAgICByZXR1cm4gbCA/IGwgPiAxID8gZm4uYXBwbHkoY29udGV4dCwgYXJndW1lbnRzKSA6IGZuLmNhbGwoY29udGV4dCwgYSkgOiBmbi5jYWxsKGNvbnRleHQpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciByZWYgPSBPYmplY3QucHJvdG90eXBlO1xuICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IHJlZi5oYXNPd25Qcm9wZXJ0eTtcblxuICAgIGZ1bmN0aW9uIGhhc093bihvYmosIGtleSkge1xuICAgICAgICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSk7XG4gICAgfVxuXG4gICAgdmFyIGh5cGhlbmF0ZUNhY2hlID0ge307XG4gICAgdmFyIGh5cGhlbmF0ZVJlID0gLyhbYS16XFxkXSkoW0EtWl0pL2c7XG5cbiAgICBmdW5jdGlvbiBoeXBoZW5hdGUoc3RyKSB7XG5cbiAgICAgICAgaWYgKCEoc3RyIGluIGh5cGhlbmF0ZUNhY2hlKSkge1xuICAgICAgICAgICAgaHlwaGVuYXRlQ2FjaGVbc3RyXSA9IHN0clxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKGh5cGhlbmF0ZVJlLCAnJDEtJDInKVxuICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGh5cGhlbmF0ZUNhY2hlW3N0cl07XG4gICAgfVxuXG4gICAgdmFyIGNhbWVsaXplUmUgPSAvLShcXHcpL2c7XG5cbiAgICBmdW5jdGlvbiBjYW1lbGl6ZShzdHIpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUmUsIHRvVXBwZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvVXBwZXIoXywgYykge1xuICAgICAgICByZXR1cm4gYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVjZmlyc3Qoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHIubGVuZ3RoID8gdG9VcHBlcihudWxsLCBzdHIuY2hhckF0KDApKSArIHN0ci5zbGljZSgxKSA6ICcnO1xuICAgIH1cblxuICAgIHZhciBzdHJQcm90b3R5cGUgPSBTdHJpbmcucHJvdG90eXBlO1xuICAgIHZhciBzdGFydHNXaXRoRm4gPSBzdHJQcm90b3R5cGUuc3RhcnRzV2l0aCB8fCBmdW5jdGlvbiAoc2VhcmNoKSB7IHJldHVybiB0aGlzLmxhc3RJbmRleE9mKHNlYXJjaCwgMCkgPT09IDA7IH07XG5cbiAgICBmdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgc2VhcmNoKSB7XG4gICAgICAgIHJldHVybiBzdGFydHNXaXRoRm4uY2FsbChzdHIsIHNlYXJjaCk7XG4gICAgfVxuXG4gICAgdmFyIGVuZHNXaXRoRm4gPSBzdHJQcm90b3R5cGUuZW5kc1dpdGggfHwgZnVuY3Rpb24gKHNlYXJjaCkgeyByZXR1cm4gdGhpcy5zdWJzdHIoLXNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7IH07XG5cbiAgICBmdW5jdGlvbiBlbmRzV2l0aChzdHIsIHNlYXJjaCkge1xuICAgICAgICByZXR1cm4gZW5kc1dpdGhGbi5jYWxsKHN0ciwgc2VhcmNoKTtcbiAgICB9XG5cbiAgICB2YXIgaW5jbHVkZXNGbiA9IGZ1bmN0aW9uIChzZWFyY2gpIHsgcmV0dXJuIH50aGlzLmluZGV4T2Yoc2VhcmNoKTsgfTtcbiAgICB2YXIgaW5jbHVkZXNTdHIgPSBzdHJQcm90b3R5cGUuaW5jbHVkZXMgfHwgaW5jbHVkZXNGbjtcbiAgICB2YXIgaW5jbHVkZXNBcnJheSA9IEFycmF5LnByb3RvdHlwZS5pbmNsdWRlcyB8fCBpbmNsdWRlc0ZuO1xuXG4gICAgZnVuY3Rpb24gaW5jbHVkZXMob2JqLCBzZWFyY2gpIHtcbiAgICAgICAgcmV0dXJuIG9iaiAmJiAoaXNTdHJpbmcob2JqKSA/IGluY2x1ZGVzU3RyIDogaW5jbHVkZXNBcnJheSkuY2FsbChvYmosIHNlYXJjaCk7XG4gICAgfVxuXG4gICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4gICAgZnVuY3Rpb24gaXNGdW5jdGlvbihvYmopIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHtcbiAgICAgICAgcmV0dXJuIGlzT2JqZWN0KG9iaikgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikgPT09IE9iamVjdC5wcm90b3R5cGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNXaW5kb3cob2JqKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmIG9iaiA9PT0gb2JqLndpbmRvdztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RvY3VtZW50KG9iaikge1xuICAgICAgICByZXR1cm4gaXNPYmplY3Qob2JqKSAmJiBvYmoubm9kZVR5cGUgPT09IDk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNKUXVlcnkob2JqKSB7XG4gICAgICAgIHJldHVybiBpc09iamVjdChvYmopICYmICEhb2JqLmpxdWVyeTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc05vZGUoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIE5vZGUgfHwgaXNPYmplY3QoZWxlbWVudCkgJiYgZWxlbWVudC5ub2RlVHlwZSA9PT0gMTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc05vZGVDb2xsZWN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgaW5zdGFuY2VvZiBOb2RlTGlzdCB8fCBlbGVtZW50IGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb247XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc051bWVyaWModmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlzTnVtYmVyKHZhbHVlKSB8fCBpc1N0cmluZyh2YWx1ZSkgJiYgIWlzTmFOKHZhbHVlIC0gcGFyc2VGbG9hdCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdm9pZCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvQm9vbGVhbih2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaXNCb29sZWFuKHZhbHVlKVxuICAgICAgICAgICAgPyB2YWx1ZVxuICAgICAgICAgICAgOiB2YWx1ZSA9PT0gJ3RydWUnIHx8IHZhbHVlID09PSAnMScgfHwgdmFsdWUgPT09ICcnXG4gICAgICAgICAgICAgICAgPyB0cnVlXG4gICAgICAgICAgICAgICAgOiB2YWx1ZSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gJzAnXG4gICAgICAgICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICAgICAgICB2YXIgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgcmV0dXJuICFpc05hTihudW1iZXIpID8gbnVtYmVyIDogZmFsc2U7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9GbG9hdCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWx1ZSkgfHwgMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b05vZGUoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gaXNOb2RlKGVsZW1lbnQpIHx8IGlzV2luZG93KGVsZW1lbnQpIHx8IGlzRG9jdW1lbnQoZWxlbWVudClcbiAgICAgICAgICAgID8gZWxlbWVudFxuICAgICAgICAgICAgOiBpc05vZGVDb2xsZWN0aW9uKGVsZW1lbnQpIHx8IGlzSlF1ZXJ5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgPyBlbGVtZW50WzBdXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgID8gdG9Ob2RlKGVsZW1lbnRbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbiAgICBmdW5jdGlvbiB0b05vZGVzKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGlzTm9kZShlbGVtZW50KVxuICAgICAgICAgICAgPyBbZWxlbWVudF1cbiAgICAgICAgICAgIDogaXNOb2RlQ29sbGVjdGlvbihlbGVtZW50KVxuICAgICAgICAgICAgICAgID8gYXJyYXlQcm90by5zbGljZS5jYWxsKGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgID8gZWxlbWVudC5tYXAodG9Ob2RlKS5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAgICAgOiBpc0pRdWVyeShlbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBlbGVtZW50LnRvQXJyYXkoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBbXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b0xpc3QodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGlzQXJyYXkodmFsdWUpXG4gICAgICAgICAgICA/IHZhbHVlXG4gICAgICAgICAgICA6IGlzU3RyaW5nKHZhbHVlKVxuICAgICAgICAgICAgICAgID8gdmFsdWUuc3BsaXQoLywoPyFbXihdKlxcKSkvKS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiBpc051bWVyaWModmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gdG9OdW1iZXIodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDogdG9Cb29sZWFuKHZhbHVlLnRyaW0oKSk7IH0pXG4gICAgICAgICAgICAgICAgOiBbdmFsdWVdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvTXModGltZSkge1xuICAgICAgICByZXR1cm4gIXRpbWVcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBlbmRzV2l0aCh0aW1lLCAnbXMnKVxuICAgICAgICAgICAgICAgID8gdG9GbG9hdCh0aW1lKVxuICAgICAgICAgICAgICAgIDogdG9GbG9hdCh0aW1lKSAqIDEwMDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3dhcCh2YWx1ZSwgYSwgYikge1xuICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKChhICsgXCJ8XCIgKyBiKSwgJ21nJyksIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoID09PSBhID8gYiA6IGE7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuICAgICAgICB0YXJnZXQgPSBPYmplY3QodGFyZ2V0KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgc291cmNlID0gYXJnc1tpXTtcbiAgICAgICAgICAgIGlmIChzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24oc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVhY2gob2JqLCBjYikge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICBjYi5jYWxsKG9ialtrZXldLCBvYmpba2V5XSwga2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNvcnRCeShjb2xsZWN0aW9uLCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGFbcHJvcF0gPiBiW3Byb3BdXG4gICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgOiBiW3Byb3BdID4gYVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgIDogMDsgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsYW1wKG51bWJlciwgbWluLCBtYXgpIHtcbiAgICAgICAgaWYgKCBtaW4gPT09IHZvaWQgMCApIG1pbiA9IDA7XG4gICAgICAgIGlmICggbWF4ID09PSB2b2lkIDAgKSBtYXggPSAxO1xuXG4gICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChudW1iZXIsIG1pbiksIG1heCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9vcCgpIHt9XG5cbiAgICBmdW5jdGlvbiBpbnRlcnNlY3RSZWN0KHIxLCByMikge1xuICAgICAgICByZXR1cm4gcjEubGVmdCA8PSByMi5yaWdodCAmJlxuICAgICAgICAgICAgcjIubGVmdCA8PSByMS5yaWdodCAmJlxuICAgICAgICAgICAgcjEudG9wIDw9IHIyLmJvdHRvbSAmJlxuICAgICAgICAgICAgcjIudG9wIDw9IHIxLmJvdHRvbTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb2ludEluUmVjdChwb2ludCwgcmVjdCkge1xuICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdCh7dG9wOiBwb2ludC55LCBib3R0b206IHBvaW50LnksIGxlZnQ6IHBvaW50LngsIHJpZ2h0OiBwb2ludC54fSwgcmVjdCk7XG4gICAgfVxuXG4gICAgdmFyIERpbWVuc2lvbnMgPSB7XG5cbiAgICAgICAgcmF0aW86IGZ1bmN0aW9uKGRpbWVuc2lvbnMsIHByb3AsIHZhbHVlKSB7XG4gICAgICAgICAgICB2YXIgb2JqO1xuXG5cbiAgICAgICAgICAgIHZhciBhUHJvcCA9IHByb3AgPT09ICd3aWR0aCcgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgICAgICAgICAgIHJldHVybiAoIG9iaiA9IHt9LCBvYmpbYVByb3BdID0gTWF0aC5yb3VuZCh2YWx1ZSAqIGRpbWVuc2lvbnNbYVByb3BdIC8gZGltZW5zaW9uc1twcm9wXSksIG9ialtwcm9wXSA9IHZhbHVlLCBvYmogKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjb250YWluOiBmdW5jdGlvbihkaW1lbnNpb25zLCBtYXhEaW1lbnNpb25zKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgZGltZW5zaW9ucyA9IGFzc2lnbih7fSwgZGltZW5zaW9ucyk7XG5cbiAgICAgICAgICAgIGVhY2goZGltZW5zaW9ucywgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGRpbWVuc2lvbnMgPSBkaW1lbnNpb25zW3Byb3BdID4gbWF4RGltZW5zaW9uc1twcm9wXVxuICAgICAgICAgICAgICAgID8gdGhpcyQxLnJhdGlvKGRpbWVuc2lvbnMsIHByb3AsIG1heERpbWVuc2lvbnNbcHJvcF0pXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb25zOyB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gZGltZW5zaW9ucztcbiAgICAgICAgfSxcblxuICAgICAgICBjb3ZlcjogZnVuY3Rpb24oZGltZW5zaW9ucywgbWF4RGltZW5zaW9ucykge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIGRpbWVuc2lvbnMgPSB0aGlzLmNvbnRhaW4oZGltZW5zaW9ucywgbWF4RGltZW5zaW9ucyk7XG5cbiAgICAgICAgICAgIGVhY2goZGltZW5zaW9ucywgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGRpbWVuc2lvbnMgPSBkaW1lbnNpb25zW3Byb3BdIDwgbWF4RGltZW5zaW9uc1twcm9wXVxuICAgICAgICAgICAgICAgID8gdGhpcyQxLnJhdGlvKGRpbWVuc2lvbnMsIHByb3AsIG1heERpbWVuc2lvbnNbcHJvcF0pXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb25zOyB9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICByZXR1cm4gZGltZW5zaW9ucztcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGF0dHIoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcblxuICAgICAgICBpZiAoaXNPYmplY3QobmFtZSkpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBuYW1lKSB7XG4gICAgICAgICAgICAgICAgYXR0cihlbGVtZW50LCBrZXksIG5hbWVba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b05vZGVzKGVsZW1lbnQpLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNhbGwoZWxlbWVudCwgYXR0cihlbGVtZW50LCBuYW1lKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUF0dHIoZWxlbWVudCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNBdHRyKGVsZW1lbnQsIG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUobmFtZSk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUF0dHIoZWxlbWVudCwgbmFtZSkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlcyhlbGVtZW50KTtcbiAgICAgICAgbmFtZS5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIGVsZW1lbnQuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7IH1cbiAgICAgICAgICAgICk7IH1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaWx0ZXJBdHRyKGVsZW1lbnQsIGF0dHJpYnV0ZSwgcGF0dGVybiwgcmVwbGFjZW1lbnQpIHtcbiAgICAgICAgYXR0cihlbGVtZW50LCBhdHRyaWJ1dGUsIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPyB2YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIHJlcGxhY2VtZW50KSA6IHZhbHVlOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkYXRhKGVsZW1lbnQsIGF0dHJpYnV0ZSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgYXR0cnMgPSBbYXR0cmlidXRlLCAoXCJkYXRhLVwiICsgYXR0cmlidXRlKV07IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGhhc0F0dHIoZWxlbWVudCwgYXR0cnNbaV0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF0dHIoZWxlbWVudCwgYXR0cnNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShzZWxlY3RvcikgfHwgZmluZChzZWxlY3RvciwgaXNDb250ZXh0U2VsZWN0b3Ioc2VsZWN0b3IpID8gY29udGV4dCA6IGRvY3VtZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBxdWVyeUFsbChzZWxlY3RvciwgY29udGV4dCkge1xuICAgICAgICB2YXIgbm9kZXMgPSB0b05vZGVzKHNlbGVjdG9yKTtcbiAgICAgICAgcmV0dXJuIG5vZGVzLmxlbmd0aCAmJiBub2RlcyB8fCBmaW5kQWxsKHNlbGVjdG9yLCBpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikgPyBjb250ZXh0IDogZG9jdW1lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbmQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShfcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQsICdxdWVyeVNlbGVjdG9yJykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpbmRBbGwoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoX3F1ZXJ5KHNlbGVjdG9yLCBjb250ZXh0LCAncXVlcnlTZWxlY3RvckFsbCcpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfcXVlcnkoc2VsZWN0b3IsIGNvbnRleHQsIHF1ZXJ5Rm4pIHtcbiAgICAgICAgaWYgKCBjb250ZXh0ID09PSB2b2lkIDAgKSBjb250ZXh0ID0gZG9jdW1lbnQ7XG5cblxuICAgICAgICBpZiAoIXNlbGVjdG9yIHx8ICFpc1N0cmluZyhzZWxlY3RvcikpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5yZXBsYWNlKGNvbnRleHRTYW5pdGl6ZVJlLCAnJDEgKicpO1xuXG4gICAgICAgIHZhciByZW1vdmVzO1xuXG4gICAgICAgIGlmIChpc0NvbnRleHRTZWxlY3RvcihzZWxlY3RvcikpIHtcblxuICAgICAgICAgICAgcmVtb3ZlcyA9IFtdO1xuXG4gICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnNwbGl0KCcsJykubWFwKGZ1bmN0aW9uIChzZWxlY3RvciwgaSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGN0eCA9IGNvbnRleHQ7XG5cbiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9yLnRyaW0oKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RvclswXSA9PT0gJyEnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9ycyA9IHNlbGVjdG9yLnN1YnN0cigxKS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gY2xvc2VzdChjb250ZXh0LnBhcmVudE5vZGUsIHNlbGVjdG9yc1swXSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yID0gc2VsZWN0b3JzLnNsaWNlKDEpLmpvaW4oJyAnKS50cmltKCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3JbMF0gPT09ICctJykge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RvcnMkMSA9IHNlbGVjdG9yLnN1YnN0cigxKS50cmltKCkuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByZXYgPSAoY3R4IHx8IGNvbnRleHQpLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IG1hdGNoZXMocHJldiwgc2VsZWN0b3Iuc3Vic3RyKDEpKSA/IHByZXYgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHNlbGVjdG9ycyQxLnNsaWNlKDEpLmpvaW4oJyAnKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghY3R4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghY3R4LmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eC5pZCA9IFwidWstXCIgKyAoRGF0ZS5ub3coKSkgKyBpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2goZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlQXR0cihjdHgsICdpZCcpOyB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFwiI1wiICsgKGVzY2FwZShjdHguaWQpKSArIFwiIFwiICsgc2VsZWN0b3IpO1xuXG4gICAgICAgICAgICB9KS5maWx0ZXIoQm9vbGVhbikuam9pbignLCcpO1xuXG4gICAgICAgICAgICBjb250ZXh0ID0gZG9jdW1lbnQ7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgIHJldHVybiBjb250ZXh0W3F1ZXJ5Rm5dKHNlbGVjdG9yKTtcblxuICAgICAgICB9IGNhdGNoIChlKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuXG4gICAgICAgIH0gZmluYWxseSB7XG5cbiAgICAgICAgICAgIHJlbW92ZXMgJiYgcmVtb3Zlcy5mb3JFYWNoKGZ1bmN0aW9uIChyZW1vdmUpIHsgcmV0dXJuIHJlbW92ZSgpOyB9KTtcblxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICB2YXIgY29udGV4dFNlbGVjdG9yUmUgPSAvKF58LClcXHMqWyE+K34tXS87XG4gICAgdmFyIGNvbnRleHRTYW5pdGl6ZVJlID0gLyhbIT4rfi1dKSg/PVxccytbIT4rfi1dfFxccyokKS9nO1xuXG4gICAgZnVuY3Rpb24gaXNDb250ZXh0U2VsZWN0b3Ioc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKHNlbGVjdG9yKSAmJiBzZWxlY3Rvci5tYXRjaChjb250ZXh0U2VsZWN0b3JSZSk7XG4gICAgfVxuXG4gICAgdmFyIGVsUHJvdG8gPSBFbGVtZW50LnByb3RvdHlwZTtcbiAgICB2YXIgbWF0Y2hlc0ZuID0gZWxQcm90by5tYXRjaGVzIHx8IGVsUHJvdG8ud2Via2l0TWF0Y2hlc1NlbGVjdG9yIHx8IGVsUHJvdG8ubXNNYXRjaGVzU2VsZWN0b3I7XG5cbiAgICBmdW5jdGlvbiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoZXNGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSk7XG4gICAgfVxuXG4gICAgdmFyIGNsb3Nlc3RGbiA9IGVsUHJvdG8uY2xvc2VzdCB8fCBmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgICAgICAgdmFyIGFuY2VzdG9yID0gdGhpcztcblxuICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGVzKGFuY2VzdG9yLCBzZWxlY3RvcikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYW5jZXN0b3I7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGFuY2VzdG9yID0gYW5jZXN0b3IucGFyZW50Tm9kZTtcblxuICAgICAgICB9IHdoaWxlIChhbmNlc3RvciAmJiBhbmNlc3Rvci5ub2RlVHlwZSA9PT0gMSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNsb3Nlc3QoZWxlbWVudCwgc2VsZWN0b3IpIHtcblxuICAgICAgICBpZiAoc3RhcnRzV2l0aChzZWxlY3RvciwgJz4nKSkge1xuICAgICAgICAgICAgc2VsZWN0b3IgPSBzZWxlY3Rvci5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc05vZGUoZWxlbWVudClcbiAgICAgICAgICAgID8gZWxlbWVudC5wYXJlbnROb2RlICYmIGNsb3Nlc3RGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKVxuICAgICAgICAgICAgOiB0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5wYXJlbnROb2RlICYmIGNsb3Nlc3RGbi5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSkuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhcmVudHMoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgdmFyIGVsZW1lbnRzID0gW107XG4gICAgICAgIHZhciBwYXJlbnQgPSB0b05vZGUoZWxlbWVudCkucGFyZW50Tm9kZTtcblxuICAgICAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5ub2RlVHlwZSA9PT0gMSkge1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hlcyhwYXJlbnQsIHNlbGVjdG9yKSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2gocGFyZW50KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWxlbWVudHM7XG4gICAgfVxuXG4gICAgdmFyIGVzY2FwZUZuID0gd2luZG93LkNTUyAmJiBDU1MuZXNjYXBlIHx8IGZ1bmN0aW9uIChjc3MpIHsgcmV0dXJuIGNzcy5yZXBsYWNlKC8oW15cXHg3Zi1cXHVGRkZGXFx3LV0pL2csIGZ1bmN0aW9uIChtYXRjaCkgeyByZXR1cm4gKFwiXFxcXFwiICsgbWF0Y2gpOyB9KTsgfTtcbiAgICBmdW5jdGlvbiBlc2NhcGUoY3NzKSB7XG4gICAgICAgIHJldHVybiBpc1N0cmluZyhjc3MpID8gZXNjYXBlRm4uY2FsbChudWxsLCBjc3MpIDogJyc7XG4gICAgfVxuXG4gICAgdmFyIHZvaWRFbGVtZW50cyA9IHtcbiAgICAgICAgYXJlYTogdHJ1ZSxcbiAgICAgICAgYmFzZTogdHJ1ZSxcbiAgICAgICAgYnI6IHRydWUsXG4gICAgICAgIGNvbDogdHJ1ZSxcbiAgICAgICAgZW1iZWQ6IHRydWUsXG4gICAgICAgIGhyOiB0cnVlLFxuICAgICAgICBpbWc6IHRydWUsXG4gICAgICAgIGlucHV0OiB0cnVlLFxuICAgICAgICBrZXlnZW46IHRydWUsXG4gICAgICAgIGxpbms6IHRydWUsXG4gICAgICAgIG1lbnVpdGVtOiB0cnVlLFxuICAgICAgICBtZXRhOiB0cnVlLFxuICAgICAgICBwYXJhbTogdHJ1ZSxcbiAgICAgICAgc291cmNlOiB0cnVlLFxuICAgICAgICB0cmFjazogdHJ1ZSxcbiAgICAgICAgd2JyOiB0cnVlXG4gICAgfTtcbiAgICBmdW5jdGlvbiBpc1ZvaWRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gdm9pZEVsZW1lbnRzW2VsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpXTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNWaXNpYmxlKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuc29tZShmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCBlbGVtZW50LmdldENsaWVudFJlY3RzKCkubGVuZ3RoOyB9KTtcbiAgICB9XG5cbiAgICB2YXIgc2VsSW5wdXQgPSAnaW5wdXQsc2VsZWN0LHRleHRhcmVhLGJ1dHRvbic7XG4gICAgZnVuY3Rpb24gaXNJbnB1dChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0b05vZGVzKGVsZW1lbnQpLnNvbWUoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCwgc2VsSW5wdXQpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaWx0ZXIoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZXMoZWxlbWVudCkuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKTsgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2l0aGluKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiAhaXNTdHJpbmcoc2VsZWN0b3IpXG4gICAgICAgICAgICA/IGVsZW1lbnQgPT09IHNlbGVjdG9yIHx8IChpc0RvY3VtZW50KHNlbGVjdG9yKVxuICAgICAgICAgICAgICAgID8gc2VsZWN0b3IuZG9jdW1lbnRFbGVtZW50XG4gICAgICAgICAgICAgICAgOiB0b05vZGUoc2VsZWN0b3IpKS5jb250YWlucyh0b05vZGUoZWxlbWVudCkpIC8vIElFIDExIGRvY3VtZW50IGRvZXMgbm90IGltcGxlbWVudCBjb250YWluc1xuICAgICAgICAgICAgOiBtYXRjaGVzKGVsZW1lbnQsIHNlbGVjdG9yKSB8fCBjbG9zZXN0KGVsZW1lbnQsIHNlbGVjdG9yKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbigpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuXG4gICAgICAgIHZhciByZWYgPSBnZXRBcmdzKGFyZ3MpO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmWzBdO1xuICAgICAgICB2YXIgdHlwZSA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gcmVmWzJdO1xuICAgICAgICB2YXIgbGlzdGVuZXIgPSByZWZbM107XG4gICAgICAgIHZhciB1c2VDYXB0dXJlID0gcmVmWzRdO1xuXG4gICAgICAgIHRhcmdldCA9IHRvRXZlbnRUYXJnZXQodGFyZ2V0KTtcblxuICAgICAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyID0gZGVsZWdhdGUodGFyZ2V0LCBzZWxlY3RvciwgbGlzdGVuZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpc3RlbmVyLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxpc3RlbmVyID0gZGV0YWlsKGxpc3RlbmVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiB0YXJnZXQgJiYgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOyB9KTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9mZih0YXJnZXQsIHR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvZmYodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSkge1xuICAgICAgICBpZiAoIHVzZUNhcHR1cmUgPT09IHZvaWQgMCApIHVzZUNhcHR1cmUgPSBmYWxzZTtcblxuICAgICAgICB0YXJnZXQgPSB0b0V2ZW50VGFyZ2V0KHRhcmdldCk7XG4gICAgICAgIHRhcmdldCAmJiB0eXBlLnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkgeyByZXR1cm4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbmNlKCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG5cbiAgICAgICAgdmFyIHJlZiA9IGdldEFyZ3MoYXJncyk7XG4gICAgICAgIHZhciBlbGVtZW50ID0gcmVmWzBdO1xuICAgICAgICB2YXIgdHlwZSA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHNlbGVjdG9yID0gcmVmWzJdO1xuICAgICAgICB2YXIgbGlzdGVuZXIgPSByZWZbM107XG4gICAgICAgIHZhciB1c2VDYXB0dXJlID0gcmVmWzRdO1xuICAgICAgICB2YXIgY29uZGl0aW9uID0gcmVmWzVdO1xuICAgICAgICB2YXIgb2ZmID0gb24oZWxlbWVudCwgdHlwZSwgc2VsZWN0b3IsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gIWNvbmRpdGlvbiB8fCBjb25kaXRpb24oZSk7XG4gICAgICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgb2ZmKCk7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZSwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgdXNlQ2FwdHVyZSk7XG5cbiAgICAgICAgcmV0dXJuIG9mZjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0cmlnZ2VyKHRhcmdldCwgZXZlbnQsIGRldGFpbCkge1xuICAgICAgICByZXR1cm4gdG9FdmVudFRhcmdldHModGFyZ2V0KS5yZWR1Y2UoZnVuY3Rpb24gKG5vdENhbmNlbGVkLCB0YXJnZXQpIHsgcmV0dXJuIG5vdENhbmNlbGVkICYmIHRhcmdldC5kaXNwYXRjaEV2ZW50KGNyZWF0ZUV2ZW50KGV2ZW50LCB0cnVlLCB0cnVlLCBkZXRhaWwpKTsgfVxuICAgICAgICAgICAgLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVFdmVudChlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXRhaWwpIHtcbiAgICAgICAgaWYgKCBidWJibGVzID09PSB2b2lkIDAgKSBidWJibGVzID0gdHJ1ZTtcbiAgICAgICAgaWYgKCBjYW5jZWxhYmxlID09PSB2b2lkIDAgKSBjYW5jZWxhYmxlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKGUpKSB7XG4gICAgICAgICAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnQ3VzdG9tRXZlbnQnKTsgLy8gSUUgMTFcbiAgICAgICAgICAgIGV2ZW50LmluaXRDdXN0b21FdmVudChlLCBidWJibGVzLCBjYW5jZWxhYmxlLCBkZXRhaWwpO1xuICAgICAgICAgICAgZSA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0QXJncyhhcmdzKSB7XG5cbiAgICAgICAgaWYgKGlzU3RyaW5nKGFyZ3NbMF0pKSB7XG4gICAgICAgICAgICBhcmdzWzBdID0gZmluZChhcmdzWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKGFyZ3NbMl0pKSB7XG4gICAgICAgICAgICBhcmdzLnNwbGljZSgyLCAwLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFyZ3M7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVsZWdhdGUoZWxlbWVudCwgc2VsZWN0b3IsIGxpc3RlbmVyKSB7XG4gICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgICAgICAgICB2YXIgY3VycmVudCA9IHNlbGVjdG9yWzBdID09PSAnPidcbiAgICAgICAgICAgICAgICA/IGZpbmRBbGwoc2VsZWN0b3IsIGVsZW1lbnQpLnJldmVyc2UoKS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsZW1lbnQpOyB9KVswXVxuICAgICAgICAgICAgICAgIDogY2xvc2VzdCh0YXJnZXQsIHNlbGVjdG9yKTtcblxuICAgICAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBlLmRlbGVnYXRlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBlLmN1cnJlbnQgPSBjdXJyZW50O1xuXG4gICAgICAgICAgICAgICAgbGlzdGVuZXIuY2FsbCh0aGlzJDEsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRldGFpbChsaXN0ZW5lcikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGlzQXJyYXkoZS5kZXRhaWwpID8gbGlzdGVuZXIuYXBwbHkodm9pZCAwLCBbZV0uY29uY2F0KGUuZGV0YWlsKSkgOiBsaXN0ZW5lcihlKTsgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0V2ZW50VGFyZ2V0KHRhcmdldCkge1xuICAgICAgICByZXR1cm4gJ0V2ZW50VGFyZ2V0JyBpbiB3aW5kb3dcbiAgICAgICAgICAgID8gdGFyZ2V0IGluc3RhbmNlb2YgRXZlbnRUYXJnZXRcbiAgICAgICAgICAgIDogdGFyZ2V0ICYmICdhZGRFdmVudExpc3RlbmVyJyBpbiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdG9FdmVudFRhcmdldCh0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIGlzRXZlbnRUYXJnZXQodGFyZ2V0KSA/IHRhcmdldCA6IHRvTm9kZSh0YXJnZXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvRXZlbnRUYXJnZXRzKHRhcmdldCkge1xuICAgICAgICByZXR1cm4gaXNFdmVudFRhcmdldCh0YXJnZXQpXG4gICAgICAgICAgICA/IFt0YXJnZXRdXG4gICAgICAgICAgICA6IGlzQXJyYXkodGFyZ2V0KVxuICAgICAgICAgICAgICAgID8gdGFyZ2V0Lm1hcCh0b0V2ZW50VGFyZ2V0KS5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICA6IHRvTm9kZXModGFyZ2V0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcmV2ZW50Q2xpY2soKSB7XG5cbiAgICAgICAgdmFyIHRpbWVyID0gc2V0VGltZW91dChvbmNlKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuXG4gICAgICAgIH0sIHRydWUpKTtcblxuICAgICAgICB0cmlnZ2VyKGRvY3VtZW50LCAndG91Y2hjYW5jZWwnKTtcblxuICAgIH1cblxuICAgIC8qIGdsb2JhbCBzZXRJbW1lZGlhdGUgKi9cblxuICAgIHZhciBQcm9taXNlJDEgPSAnUHJvbWlzZScgaW4gd2luZG93ID8gd2luZG93LlByb21pc2UgOiBQcm9taXNlRm47XG5cbiAgICB2YXIgRGVmZXJyZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB0aGlzJDEucmVqZWN0ID0gcmVqZWN0O1xuICAgICAgICAgICAgdGhpcyQxLnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUHJvbWlzZXMvQSsgcG9seWZpbGwgdjEuMS40IChodHRwczovL2dpdGh1Yi5jb20vYnJhbXN0ZWluL3Byb21pcylcbiAgICAgKi9cblxuICAgIHZhciBSRVNPTFZFRCA9IDA7XG4gICAgdmFyIFJFSkVDVEVEID0gMTtcbiAgICB2YXIgUEVORElORyA9IDI7XG5cbiAgICB2YXIgYXN5bmMgPSAnc2V0SW1tZWRpYXRlJyBpbiB3aW5kb3cgPyBzZXRJbW1lZGlhdGUgOiBzZXRUaW1lb3V0O1xuXG4gICAgZnVuY3Rpb24gUHJvbWlzZUZuKGV4ZWN1dG9yKSB7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IFBFTkRJTkc7XG4gICAgICAgIHRoaXMudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZGVmZXJyZWQgPSBbXTtcblxuICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXM7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGV4ZWN1dG9yKFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSh4KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgUHJvbWlzZUZuLnJlamVjdCA9IGZ1bmN0aW9uIChyKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHJlamVjdChyKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFByb21pc2VGbi5yZXNvbHZlID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgcmVzb2x2ZSh4KTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFByb21pc2VGbi5hbGwgPSBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcblxuICAgICAgICAgICAgaWYgKGl0ZXJhYmxlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZnVuY3Rpb24gcmVzb2x2ZXIoaSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSB4O1xuICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PT0gaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGl0ZXJhYmxlLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgUHJvbWlzZUZuLnJlc29sdmUoaXRlcmFibGVbaV0pLnRoZW4ocmVzb2x2ZXIoaSksIHJlamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBQcm9taXNlRm4ucmFjZSA9IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlRm4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyYWJsZS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIFByb21pc2VGbi5yZXNvbHZlKGl0ZXJhYmxlW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICB2YXIgcCA9IFByb21pc2VGbi5wcm90b3R5cGU7XG5cbiAgICBwLnJlc29sdmUgPSBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgICAgIGlmIChwcm9taXNlLnN0YXRlID09PSBQRU5ESU5HKSB7XG4gICAgICAgICAgICBpZiAoeCA9PT0gcHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2Ugc2V0dGxlZCB3aXRoIGl0c2VsZi4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciB0aGVuID0geCAmJiB4LnRoZW47XG5cbiAgICAgICAgICAgICAgICBpZiAoeCAhPT0gbnVsbCAmJiBpc09iamVjdCh4KSAmJiBpc0Z1bmN0aW9uKHRoZW4pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoZW4uY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSh4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb21pc2Uuc3RhdGUgPSBSRVNPTFZFRDtcbiAgICAgICAgICAgIHByb21pc2UudmFsdWUgPSB4O1xuICAgICAgICAgICAgcHJvbWlzZS5ub3RpZnkoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwLnJlamVjdCA9IGZ1bmN0aW9uIHJlamVjdChyZWFzb24pIHtcbiAgICAgICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgICAgIGlmIChwcm9taXNlLnN0YXRlID09PSBQRU5ESU5HKSB7XG4gICAgICAgICAgICBpZiAocmVhc29uID09PSBwcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZSBzZXR0bGVkIHdpdGggaXRzZWxmLicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwcm9taXNlLnN0YXRlID0gUkVKRUNURUQ7XG4gICAgICAgICAgICBwcm9taXNlLnZhbHVlID0gcmVhc29uO1xuICAgICAgICAgICAgcHJvbWlzZS5ub3RpZnkoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwLm5vdGlmeSA9IGZ1bmN0aW9uIG5vdGlmeSgpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgYXN5bmMoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMkMS5zdGF0ZSAhPT0gUEVORElORykge1xuICAgICAgICAgICAgICAgIHdoaWxlICh0aGlzJDEuZGVmZXJyZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzJDEuZGVmZXJyZWQuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9uUmVzb2x2ZWQgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBvblJlamVjdGVkID0gcmVmWzFdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZSA9IHJlZlsyXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlamVjdCA9IHJlZlszXTtcblxuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5zdGF0ZSA9PT0gUkVTT0xWRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvblJlc29sdmVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uUmVzb2x2ZWQuY2FsbCh1bmRlZmluZWQsIHRoaXMkMS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcyQxLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMkMS5zdGF0ZSA9PT0gUkVKRUNURUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihvblJlamVjdGVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uUmVqZWN0ZWQuY2FsbCh1bmRlZmluZWQsIHRoaXMkMS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCh0aGlzJDEudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcC50aGVuID0gZnVuY3Rpb24gdGhlbihvblJlc29sdmVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZUZuKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHRoaXMkMS5kZWZlcnJlZC5wdXNoKFtvblJlc29sdmVkLCBvblJlamVjdGVkLCByZXNvbHZlLCByZWplY3RdKTtcbiAgICAgICAgICAgIHRoaXMkMS5ub3RpZnkoKTtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHAuY2F0Y2ggPSBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGFqYXgodXJsLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgdmFyIGVudiA9IGFzc2lnbih7XG4gICAgICAgICAgICAgICAgZGF0YTogbnVsbCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICAgICAgICAgIHhocjogbmV3IFhNTEh0dHBSZXF1ZXN0KCksXG4gICAgICAgICAgICAgICAgYmVmb3JlU2VuZDogbm9vcCxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICcnXG4gICAgICAgICAgICB9LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgZW52LmJlZm9yZVNlbmQoZW52KTtcblxuICAgICAgICAgICAgdmFyIHhociA9IGVudi54aHI7XG5cbiAgICAgICAgICAgIGZvciAodmFyIHByb3AgaW4gZW52KSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3AgaW4geGhyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHhocltwcm9wXSA9IGVudltwcm9wXTtcblxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgeGhyLm9wZW4oZW52Lm1ldGhvZC50b1VwcGVyQ2FzZSgpLCB1cmwpO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBoZWFkZXIgaW4gZW52LmhlYWRlcnMpIHtcbiAgICAgICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihoZWFkZXIsIGVudi5oZWFkZXJzW2hlYWRlcl0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvbih4aHIsICdsb2FkJywgZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDAgfHwgeGhyLnN0YXR1cyA+PSAyMDAgJiYgeGhyLnN0YXR1cyA8IDMwMCB8fCB4aHIuc3RhdHVzID09PSAzMDQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh4aHIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChhc3NpZ24oRXJyb3IoeGhyLnN0YXR1c1RleHQpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4aHI6IHhocixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogeGhyLnN0YXR1c1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgb24oeGhyLCAnZXJyb3InLCBmdW5jdGlvbiAoKSB7IHJldHVybiByZWplY3QoYXNzaWduKEVycm9yKCdOZXR3b3JrIEVycm9yJyksIHt4aHI6IHhocn0pKTsgfSk7XG4gICAgICAgICAgICBvbih4aHIsICd0aW1lb3V0JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVqZWN0KGFzc2lnbihFcnJvcignTmV0d29yayBUaW1lb3V0JyksIHt4aHI6IHhocn0pKTsgfSk7XG5cbiAgICAgICAgICAgIHhoci5zZW5kKGVudi5kYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SW1hZ2Uoc3JjLCBzcmNzZXQsIHNpemVzKSB7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xuXG4gICAgICAgICAgICBpbWcub25lcnJvciA9IHJlamVjdDtcbiAgICAgICAgICAgIGltZy5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZXNvbHZlKGltZyk7IH07XG5cbiAgICAgICAgICAgIGltZy5zcmMgPSBzcmM7XG4gICAgICAgICAgICBzcmNzZXQgJiYgKGltZy5zcmNzZXQgPSBzcmNzZXQpO1xuICAgICAgICAgICAgc2l6ZXMgJiYgKGltZy5zaXplcyA9IHNpemVzKTtcbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1JlYWR5KCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJyB8fCBkb2N1bWVudC5yZWFkeVN0YXRlICE9PSAnbG9hZGluZycgJiYgIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWFkeShmbikge1xuXG4gICAgICAgIGlmIChpc1JlYWR5KCkpIHtcbiAgICAgICAgICAgIGZuKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaGFuZGxlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdW5iaW5kMSgpO1xuICAgICAgICAgICAgdW5iaW5kMigpO1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHVuYmluZDEgPSBvbihkb2N1bWVudCwgJ0RPTUNvbnRlbnRMb2FkZWQnLCBoYW5kbGUpO1xuICAgICAgICB2YXIgdW5iaW5kMiA9IG9uKHdpbmRvdywgJ2xvYWQnLCBoYW5kbGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluZGV4KGVsZW1lbnQsIHJlZikge1xuICAgICAgICByZXR1cm4gcmVmXG4gICAgICAgICAgICA/IHRvTm9kZXMoZWxlbWVudCkuaW5kZXhPZih0b05vZGUocmVmKSlcbiAgICAgICAgICAgIDogdG9Ob2RlcygoZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KSkgJiYgZWxlbWVudC5wYXJlbnROb2RlLmNoaWxkcmVuKS5pbmRleE9mKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEluZGV4KGksIGVsZW1lbnRzLCBjdXJyZW50LCBmaW5pdGUpIHtcbiAgICAgICAgaWYgKCBjdXJyZW50ID09PSB2b2lkIDAgKSBjdXJyZW50ID0gMDtcbiAgICAgICAgaWYgKCBmaW5pdGUgPT09IHZvaWQgMCApIGZpbml0ZSA9IGZhbHNlO1xuXG5cbiAgICAgICAgZWxlbWVudHMgPSB0b05vZGVzKGVsZW1lbnRzKTtcblxuICAgICAgICB2YXIgbGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuXG4gICAgICAgIGkgPSBpc051bWVyaWMoaSlcbiAgICAgICAgICAgID8gdG9OdW1iZXIoaSlcbiAgICAgICAgICAgIDogaSA9PT0gJ25leHQnXG4gICAgICAgICAgICAgICAgPyBjdXJyZW50ICsgMVxuICAgICAgICAgICAgICAgIDogaSA9PT0gJ3ByZXZpb3VzJ1xuICAgICAgICAgICAgICAgICAgICA/IGN1cnJlbnQgLSAxXG4gICAgICAgICAgICAgICAgICAgIDogaW5kZXgoZWxlbWVudHMsIGkpO1xuXG4gICAgICAgIGlmIChmaW5pdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjbGFtcChpLCAwLCBsZW5ndGggLSAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGkgJT0gbGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBpIDwgMCA/IGkgKyBsZW5ndGggOiBpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVtcHR5KGVsZW1lbnQpIHtcbiAgICAgICAgZWxlbWVudCA9IHRvTm9kZShlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaHRtbChwYXJlbnQsIGh0bWwpIHtcbiAgICAgICAgcGFyZW50ID0gdG9Ob2RlKHBhcmVudCk7XG4gICAgICAgIHJldHVybiBpc1VuZGVmaW5lZChodG1sKVxuICAgICAgICAgICAgPyBwYXJlbnQuaW5uZXJIVE1MXG4gICAgICAgICAgICA6IGFwcGVuZChwYXJlbnQuaGFzQ2hpbGROb2RlcygpID8gZW1wdHkocGFyZW50KSA6IHBhcmVudCwgaHRtbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlcGVuZChwYXJlbnQsIGVsZW1lbnQpIHtcblxuICAgICAgICBwYXJlbnQgPSB0b05vZGUocGFyZW50KTtcblxuICAgICAgICBpZiAoIXBhcmVudC5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBlbmQocGFyZW50LCBlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlcyhlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gcGFyZW50Lmluc2VydEJlZm9yZShlbGVtZW50LCBwYXJlbnQuZmlyc3RDaGlsZCk7IH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwZW5kKHBhcmVudCwgZWxlbWVudCkge1xuICAgICAgICBwYXJlbnQgPSB0b05vZGUocGFyZW50KTtcbiAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBwYXJlbnQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJlZm9yZShyZWYsIGVsZW1lbnQpIHtcbiAgICAgICAgcmVmID0gdG9Ob2RlKHJlZik7XG4gICAgICAgIHJldHVybiBpbnNlcnROb2RlcyhlbGVtZW50LCBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gcmVmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIHJlZik7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFmdGVyKHJlZiwgZWxlbWVudCkge1xuICAgICAgICByZWYgPSB0b05vZGUocmVmKTtcbiAgICAgICAgcmV0dXJuIGluc2VydE5vZGVzKGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiByZWYubmV4dFNpYmxpbmdcbiAgICAgICAgICAgID8gYmVmb3JlKHJlZi5uZXh0U2libGluZywgZWxlbWVudClcbiAgICAgICAgICAgIDogYXBwZW5kKHJlZi5wYXJlbnROb2RlLCBlbGVtZW50KTsgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc2VydE5vZGVzKGVsZW1lbnQsIGZuKSB7XG4gICAgICAgIGVsZW1lbnQgPSBpc1N0cmluZyhlbGVtZW50KSA/IGZyYWdtZW50KGVsZW1lbnQpIDogZWxlbWVudDtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRcbiAgICAgICAgICAgID8gJ2xlbmd0aCcgaW4gZWxlbWVudFxuICAgICAgICAgICAgICAgID8gdG9Ob2RlcyhlbGVtZW50KS5tYXAoZm4pXG4gICAgICAgICAgICAgICAgOiBmbihlbGVtZW50KVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZShlbGVtZW50KSB7XG4gICAgICAgIHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnBhcmVudE5vZGUgJiYgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB3cmFwQWxsKGVsZW1lbnQsIHN0cnVjdHVyZSkge1xuXG4gICAgICAgIHN0cnVjdHVyZSA9IHRvTm9kZShiZWZvcmUoZWxlbWVudCwgc3RydWN0dXJlKSk7XG5cbiAgICAgICAgd2hpbGUgKHN0cnVjdHVyZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUuZmlyc3RDaGlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGVuZChzdHJ1Y3R1cmUsIGVsZW1lbnQpO1xuXG4gICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd3JhcElubmVyKGVsZW1lbnQsIHN0cnVjdHVyZSkge1xuICAgICAgICByZXR1cm4gdG9Ob2Rlcyh0b05vZGVzKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNDaGlsZE5vZGVzID8gd3JhcEFsbCh0b05vZGVzKGVsZW1lbnQuY2hpbGROb2RlcyksIHN0cnVjdHVyZSkgOiBhcHBlbmQoZWxlbWVudCwgc3RydWN0dXJlKTsgfVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB1bndyYXAoZWxlbWVudCkge1xuICAgICAgICB0b05vZGVzKGVsZW1lbnQpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LnBhcmVudE5vZGU7IH0pXG4gICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIHNlbGYpIHsgcmV0dXJuIHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4OyB9KVxuICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIGJlZm9yZShwYXJlbnQsIHBhcmVudC5jaGlsZE5vZGVzKTtcbiAgICAgICAgICAgICAgICByZW1vdmUocGFyZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBmcmFnbWVudFJlID0gL15cXHMqPChcXHcrfCEpW14+XSo+LztcbiAgICB2YXIgc2luZ2xlVGFnUmUgPSAvXjwoXFx3KylcXHMqXFwvPz4oPzo8XFwvXFwxPik/JC87XG5cbiAgICBmdW5jdGlvbiBmcmFnbWVudChodG1sKSB7XG5cbiAgICAgICAgdmFyIG1hdGNoZXMgPSBzaW5nbGVUYWdSZS5leGVjKGh0bWwpO1xuICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQobWF0Y2hlc1sxXSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGlmIChmcmFnbWVudFJlLnRlc3QoaHRtbCkpIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZWVuZCcsIGh0bWwudHJpbSgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRhaW5lci50ZXh0Q29udGVudCA9IGh0bWw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGFpbmVyLmNoaWxkTm9kZXMubGVuZ3RoID4gMSA/IHRvTm9kZXMoY29udGFpbmVyLmNoaWxkTm9kZXMpIDogY29udGFpbmVyLmZpcnN0Q2hpbGQ7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhcHBseShub2RlLCBmbikge1xuXG4gICAgICAgIGlmICghbm9kZSB8fCBub2RlLm5vZGVUeXBlICE9PSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmbihub2RlKTtcbiAgICAgICAgbm9kZSA9IG5vZGUuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICBhcHBseShub2RlLCBmbik7XG4gICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRDbGFzcyhlbGVtZW50KSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cbiAgICAgICAgYXBwbHkkMShlbGVtZW50LCBhcmdzLCAnYWRkJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlQ2xhc3MoZWxlbWVudCkge1xuICAgICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG4gICAgICAgIGFwcGx5JDEoZWxlbWVudCwgYXJncywgJ3JlbW92ZScpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlbW92ZUNsYXNzZXMoZWxlbWVudCwgY2xzKSB7XG4gICAgICAgIGZpbHRlckF0dHIoZWxlbWVudCwgJ2NsYXNzJywgbmV3IFJlZ0V4cCgoXCIoXnxcXFxccylcIiArIGNscyArIFwiKD8hXFxcXFMpXCIpLCAnZycpLCAnJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVwbGFjZUNsYXNzKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcblxuICAgICAgICBhcmdzWzBdICYmIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGFyZ3NbMF0pO1xuICAgICAgICBhcmdzWzFdICYmIGFkZENsYXNzKGVsZW1lbnQsIGFyZ3NbMV0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhc0NsYXNzKGVsZW1lbnQsIGNscykge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbHMpOyB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b2dnbGVDbGFzcyhlbGVtZW50KSB7XG4gICAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cblxuICAgICAgICBpZiAoIWFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhcmdzID0gZ2V0QXJncyQxKGFyZ3MpO1xuXG4gICAgICAgIHZhciBmb3JjZSA9ICFpc1N0cmluZyhhcmdzW2FyZ3MubGVuZ3RoIC0gMV0pID8gYXJncy5wb3AoKSA6IFtdOyAvLyBpbiBpT1MgOS4zIGZvcmNlID09PSB1bmRlZmluZWQgZXZhbHVhdGVzIHRvIGZhbHNlXG5cbiAgICAgICAgYXJncyA9IGFyZ3MuZmlsdGVyKEJvb2xlYW4pO1xuXG4gICAgICAgIHRvTm9kZXMoZWxlbWVudCkuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgY2xhc3NMaXN0ID0gcmVmLmNsYXNzTGlzdDtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc3VwcG9ydHMuRm9yY2VcbiAgICAgICAgICAgICAgICAgICAgPyBjbGFzc0xpc3QudG9nZ2xlLmFwcGx5KGNsYXNzTGlzdCwgW2FyZ3NbaV1dLmNvbmNhdChmb3JjZSkpXG4gICAgICAgICAgICAgICAgICAgIDogKGNsYXNzTGlzdFsoIWlzVW5kZWZpbmVkKGZvcmNlKSA/IGZvcmNlIDogIWNsYXNzTGlzdC5jb250YWlucyhhcmdzW2ldKSkgPyAnYWRkJyA6ICdyZW1vdmUnXShhcmdzW2ldKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXBwbHkkMShlbGVtZW50LCBhcmdzLCBmbikge1xuICAgICAgICBhcmdzID0gZ2V0QXJncyQxKGFyZ3MpLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgICBhcmdzLmxlbmd0aCAmJiB0b05vZGVzKGVsZW1lbnQpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgdmFyIGNsYXNzTGlzdCA9IHJlZi5jbGFzc0xpc3Q7XG5cbiAgICAgICAgICAgIHN1cHBvcnRzLk11bHRpcGxlXG4gICAgICAgICAgICAgICAgPyBjbGFzc0xpc3RbZm5dLmFwcGx5KGNsYXNzTGlzdCwgYXJncylcbiAgICAgICAgICAgICAgICA6IGFyZ3MuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7IHJldHVybiBjbGFzc0xpc3RbZm5dKGNscyk7IH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRBcmdzJDEoYXJncykge1xuICAgICAgICByZXR1cm4gYXJncy5yZWR1Y2UoZnVuY3Rpb24gKGFyZ3MsIGFyZykgeyByZXR1cm4gYXJncy5jb25jYXQuY2FsbChhcmdzLCBpc1N0cmluZyhhcmcpICYmIGluY2x1ZGVzKGFyZywgJyAnKSA/IGFyZy50cmltKCkuc3BsaXQoJyAnKSA6IGFyZyk7IH1cbiAgICAgICAgICAgICwgW10pO1xuICAgIH1cblxuICAgIHZhciBzdXBwb3J0cyA9IHt9O1xuXG4gICAgLy8gSUUgMTFcbiAgICAoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnXycpLmNsYXNzTGlzdDtcbiAgICAgICAgaWYgKGxpc3QpIHtcbiAgICAgICAgICAgIGxpc3QuYWRkKCdhJywgJ2InKTtcbiAgICAgICAgICAgIGxpc3QudG9nZ2xlKCdjJywgZmFsc2UpO1xuICAgICAgICAgICAgc3VwcG9ydHMuTXVsdGlwbGUgPSBsaXN0LmNvbnRhaW5zKCdiJyk7XG4gICAgICAgICAgICBzdXBwb3J0cy5Gb3JjZSA9ICFsaXN0LmNvbnRhaW5zKCdjJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGlzdCA9IG51bGw7XG5cbiAgICB9KSgpO1xuXG4gICAgdmFyIGNzc051bWJlciA9IHtcbiAgICAgICAgJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnOiB0cnVlLFxuICAgICAgICAnY29sdW1uLWNvdW50JzogdHJ1ZSxcbiAgICAgICAgJ2ZpbGwtb3BhY2l0eSc6IHRydWUsXG4gICAgICAgICdmbGV4LWdyb3cnOiB0cnVlLFxuICAgICAgICAnZmxleC1zaHJpbmsnOiB0cnVlLFxuICAgICAgICAnZm9udC13ZWlnaHQnOiB0cnVlLFxuICAgICAgICAnbGluZS1oZWlnaHQnOiB0cnVlLFxuICAgICAgICAnb3BhY2l0eSc6IHRydWUsXG4gICAgICAgICdvcmRlcic6IHRydWUsXG4gICAgICAgICdvcnBoYW5zJzogdHJ1ZSxcbiAgICAgICAgJ3dpZG93cyc6IHRydWUsXG4gICAgICAgICd6LWluZGV4JzogdHJ1ZSxcbiAgICAgICAgJ3pvb20nOiB0cnVlXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGNzcyhlbGVtZW50LCBwcm9wZXJ0eSwgdmFsdWUpIHtcblxuICAgICAgICByZXR1cm4gdG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHByb3BlcnR5KSkge1xuXG4gICAgICAgICAgICAgICAgcHJvcGVydHkgPSBwcm9wTmFtZShwcm9wZXJ0eSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRTdHlsZShlbGVtZW50LCBwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBpc051bWVyaWModmFsdWUpICYmICFjc3NOdW1iZXJbcHJvcGVydHldID8gKHZhbHVlICsgXCJweFwiKSA6IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0FycmF5KHByb3BlcnR5KSkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHN0eWxlcyA9IGdldFN0eWxlcyhlbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wc1twcm9wZXJ0eV0gPSBzdHlsZXNbcHJvcE5hbWUocHJvcGVydHkpXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuICAgICAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc09iamVjdChwcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgICAgICBlYWNoKHByb3BlcnR5LCBmdW5jdGlvbiAodmFsdWUsIHByb3BlcnR5KSB7IHJldHVybiBjc3MoZWxlbWVudCwgcHJvcGVydHksIHZhbHVlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50O1xuXG4gICAgICAgIH0pWzBdO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0U3R5bGVzKGVsZW1lbnQsIHBzZXVkb0VsdCkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCwgcHNldWRvRWx0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRTdHlsZShlbGVtZW50LCBwcm9wZXJ0eSwgcHNldWRvRWx0KSB7XG4gICAgICAgIHJldHVybiBnZXRTdHlsZXMoZWxlbWVudCwgcHNldWRvRWx0KVtwcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgdmFyIHZhcnMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIGdldENzc1ZhcihuYW1lKSB7XG5cbiAgICAgICAgaWYgKCEobmFtZSBpbiB2YXJzKSkge1xuXG4gICAgICAgICAgICAvKiB1c2FnZSBpbiBjc3M6IC52YXItbmFtZTpiZWZvcmUgeyBjb250ZW50OlwieHl6XCIgfSAqL1xuXG4gICAgICAgICAgICB2YXIgZWxlbWVudCA9IGFwcGVuZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcblxuICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgKFwidmFyLVwiICsgbmFtZSkpO1xuXG4gICAgICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICAgICAgdmFyc1tuYW1lXSA9IGdldFN0eWxlKGVsZW1lbnQsICdjb250ZW50JywgJzpiZWZvcmUnKS5yZXBsYWNlKC9eW1wiJ10oLiopW1wiJ10kLywgJyQxJyk7XG4gICAgICAgICAgICAgICAgdmFyc1tuYW1lXSA9IEpTT04ucGFyc2UodmFyc1tuYW1lXSk7XG5cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZChlbGVtZW50KTtcblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhcnNbbmFtZV07XG5cbiAgICB9XG5cbiAgICB2YXIgY3NzUHJvcHMgPSB7fTtcblxuICAgIGZ1bmN0aW9uIHByb3BOYW1lKG5hbWUpIHtcblxuICAgICAgICB2YXIgcmV0ID0gY3NzUHJvcHNbbmFtZV07XG4gICAgICAgIGlmICghcmV0KSB7XG4gICAgICAgICAgICByZXQgPSBjc3NQcm9wc1tuYW1lXSA9IHZlbmRvclByb3BOYW1lKG5hbWUpIHx8IG5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICB2YXIgY3NzUHJlZml4ZXMgPSBbJ3dlYmtpdCcsICdtb3onLCAnbXMnXTtcbiAgICB2YXIgcmVmJDEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdfJyk7XG4gICAgdmFyIHN0eWxlID0gcmVmJDEuc3R5bGU7XG5cbiAgICBmdW5jdGlvbiB2ZW5kb3JQcm9wTmFtZShuYW1lKSB7XG5cbiAgICAgICAgbmFtZSA9IGh5cGhlbmF0ZShuYW1lKTtcblxuICAgICAgICBpZiAobmFtZSBpbiBzdHlsZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaSA9IGNzc1ByZWZpeGVzLmxlbmd0aCwgcHJlZml4ZWROYW1lO1xuXG4gICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgIHByZWZpeGVkTmFtZSA9IFwiLVwiICsgKGNzc1ByZWZpeGVzW2ldKSArIFwiLVwiICsgbmFtZTtcbiAgICAgICAgICAgIGlmIChwcmVmaXhlZE5hbWUgaW4gc3R5bGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4ZWROYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJhbnNpdGlvbihlbGVtZW50LCBwcm9wcywgZHVyYXRpb24sIHRpbWluZykge1xuICAgICAgICBpZiAoIGR1cmF0aW9uID09PSB2b2lkIDAgKSBkdXJhdGlvbiA9IDQwMDtcbiAgICAgICAgaWYgKCB0aW1pbmcgPT09IHZvaWQgMCApIHRpbWluZyA9ICdsaW5lYXInO1xuXG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UkMS5hbGwodG9Ob2RlcyhlbGVtZW50KS5tYXAoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBwcm9wcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBjc3MoZWxlbWVudCwgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRyaWdnZXIoZWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnKTsgfSwgZHVyYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgb25jZShlbGVtZW50LCAndHJhbnNpdGlvbmVuZCB0cmFuc2l0aW9uY2FuY2VsZWQnLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG5cbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXByb3BlcnR5JzogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJzogJydcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICd0cmFuc2l0aW9uY2FuY2VsZWQnID8gcmVqZWN0KCkgOiByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSwgZmFsc2UsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPT09IHRhcmdldDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKGVsZW1lbnQsICd1ay10cmFuc2l0aW9uJyk7XG4gICAgICAgICAgICAgICAgY3NzKGVsZW1lbnQsIGFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXByb3BlcnR5JzogT2JqZWN0LmtleXMocHJvcHMpLm1hcChwcm9wTmFtZSkuam9pbignLCcpLFxuICAgICAgICAgICAgICAgICAgICAndHJhbnNpdGlvbi1kdXJhdGlvbic6IChkdXJhdGlvbiArIFwibXNcIiksXG4gICAgICAgICAgICAgICAgICAgICd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbic6IHRpbWluZ1xuICAgICAgICAgICAgICAgIH0sIHByb3BzKSk7XG5cbiAgICAgICAgICAgIH0pOyB9XG4gICAgICAgICkpO1xuXG4gICAgfVxuXG4gICAgdmFyIFRyYW5zaXRpb24gPSB7XG5cbiAgICAgICAgc3RhcnQ6IHRyYW5zaXRpb24sXG5cbiAgICAgICAgc3RvcDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgdHJpZ2dlcihlbGVtZW50LCAndHJhbnNpdGlvbmVuZCcpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZXNvbHZlKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyKGVsZW1lbnQsICd0cmFuc2l0aW9uY2FuY2VsZWQnKTtcbiAgICAgICAgfSxcblxuICAgICAgICBpblByb2dyZXNzOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gaGFzQ2xhc3MoZWxlbWVudCwgJ3VrLXRyYW5zaXRpb24nKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBhbmltYXRpb25QcmVmaXggPSAndWstYW5pbWF0aW9uLSc7XG4gICAgdmFyIGNsc0NhbmNlbEFuaW1hdGlvbiA9ICd1ay1jYW5jZWwtYW5pbWF0aW9uJztcblxuICAgIGZ1bmN0aW9uIGFuaW1hdGUoZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luLCBvdXQpIHtcbiAgICAgICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuICAgICAgICBpZiAoIGR1cmF0aW9uID09PSB2b2lkIDAgKSBkdXJhdGlvbiA9IDIwMDtcblxuXG4gICAgICAgIHJldHVybiBQcm9taXNlJDEuYWxsKHRvTm9kZXMoZWxlbWVudCkubWFwKGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgICAgIGlmIChoYXNDbGFzcyhlbGVtZW50LCBjbHNDYW5jZWxBbmltYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7IHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gYW5pbWF0ZS5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyQxKS50aGVuKHJlc29sdmUsIHJlamVjdCk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBjbHMgPSBhbmltYXRpb24gKyBcIiBcIiArIGFuaW1hdGlvblByZWZpeCArIChvdXQgPyAnbGVhdmUnIDogJ2VudGVyJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aChhbmltYXRpb24sIGFuaW1hdGlvblByZWZpeCkpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHMgKz0gXCIgdWstdHJhbnNmb3JtLW9yaWdpbi1cIiArIG9yaWdpbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNscyArPSBcIiBcIiArIGFuaW1hdGlvblByZWZpeCArIFwicmV2ZXJzZVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXNldCgpO1xuXG4gICAgICAgICAgICAgICAgb25jZShlbGVtZW50LCAnYW5pbWF0aW9uZW5kIGFuaW1hdGlvbmNhbmNlbCcsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBoYXNSZXNldCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnYW5pbWF0aW9uY2FuY2VsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgUHJvbWlzZSQxLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNSZXNldCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGFzUmVzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhlbGVtZW50LCBjbHNDYW5jZWxBbmltYXRpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlbW92ZUNsYXNzKGVsZW1lbnQsIGNsc0NhbmNlbEFuaW1hdGlvbik7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0sIGZhbHNlLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ID09PSB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgJ2FuaW1hdGlvbkR1cmF0aW9uJywgKGR1cmF0aW9uICsgXCJtc1wiKSk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWxlbWVudCwgY2xzKTtcblxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgICAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgJ2FuaW1hdGlvbkR1cmF0aW9uJywgJycpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzc2VzKGVsZW1lbnQsIChhbmltYXRpb25QcmVmaXggKyBcIlxcXFxTKlwiKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9KTsgfVxuICAgICAgICApKTtcblxuICAgIH1cblxuICAgIHZhciBpblByb2dyZXNzID0gbmV3IFJlZ0V4cCgoYW5pbWF0aW9uUHJlZml4ICsgXCIoZW50ZXJ8bGVhdmUpXCIpKTtcbiAgICB2YXIgQW5pbWF0aW9uID0ge1xuXG4gICAgICAgIGluOiBmdW5jdGlvbihlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBhbmltYXRlKGVsZW1lbnQsIGFuaW1hdGlvbiwgZHVyYXRpb24sIG9yaWdpbiwgZmFsc2UpO1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dDogZnVuY3Rpb24oZWxlbWVudCwgYW5pbWF0aW9uLCBkdXJhdGlvbiwgb3JpZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gYW5pbWF0ZShlbGVtZW50LCBhbmltYXRpb24sIGR1cmF0aW9uLCBvcmlnaW4sIHRydWUpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGluUHJvZ3Jlc3M6IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBpblByb2dyZXNzLnRlc3QoYXR0cihlbGVtZW50LCAnY2xhc3MnKSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2FuY2VsOiBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICAgICAgICB0cmlnZ2VyKGVsZW1lbnQsICdhbmltYXRpb25jYW5jZWwnKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uICQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuICFpc1N0cmluZyhzZWxlY3RvcilcbiAgICAgICAgICAgID8gdG9Ob2RlKHNlbGVjdG9yKVxuICAgICAgICAgICAgOiBpc0h0bWwoc2VsZWN0b3IpXG4gICAgICAgICAgICAgICAgPyB0b05vZGUoZnJhZ21lbnQoc2VsZWN0b3IpKVxuICAgICAgICAgICAgICAgIDogZmluZChzZWxlY3RvciwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gJCQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgICAgICAgcmV0dXJuICFpc1N0cmluZyhzZWxlY3RvcilcbiAgICAgICAgICAgID8gdG9Ob2RlcyhzZWxlY3RvcilcbiAgICAgICAgICAgIDogaXNIdG1sKHNlbGVjdG9yKVxuICAgICAgICAgICAgICAgID8gdG9Ob2RlcyhmcmFnbWVudChzZWxlY3RvcikpXG4gICAgICAgICAgICAgICAgOiBmaW5kQWxsKHNlbGVjdG9yLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0h0bWwoc3RyKSB7XG4gICAgICAgIHJldHVybiBzdHJbMF0gPT09ICc8JyB8fCBzdHIubWF0Y2goL15cXHMqPC8pO1xuICAgIH1cblxuICAgIHZhciBkaXJzID0ge1xuICAgICAgICB3aWR0aDogWyd4JywgJ2xlZnQnLCAncmlnaHQnXSxcbiAgICAgICAgaGVpZ2h0OiBbJ3knLCAndG9wJywgJ2JvdHRvbSddXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHBvc2l0aW9uQXQoZWxlbWVudCwgdGFyZ2V0LCBlbEF0dGFjaCwgdGFyZ2V0QXR0YWNoLCBlbE9mZnNldCwgdGFyZ2V0T2Zmc2V0LCBmbGlwLCBib3VuZGFyeSkge1xuXG4gICAgICAgIGVsQXR0YWNoID0gZ2V0UG9zKGVsQXR0YWNoKTtcbiAgICAgICAgdGFyZ2V0QXR0YWNoID0gZ2V0UG9zKHRhcmdldEF0dGFjaCk7XG5cbiAgICAgICAgdmFyIGZsaXBwZWQgPSB7ZWxlbWVudDogZWxBdHRhY2gsIHRhcmdldDogdGFyZ2V0QXR0YWNofTtcblxuICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIXRhcmdldCkge1xuICAgICAgICAgICAgcmV0dXJuIGZsaXBwZWQ7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGltID0gZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICAgICAgdmFyIHRhcmdldERpbSA9IGdldERpbWVuc2lvbnModGFyZ2V0KTtcbiAgICAgICAgdmFyIHBvc2l0aW9uID0gdGFyZ2V0RGltO1xuXG4gICAgICAgIG1vdmVUbyhwb3NpdGlvbiwgZWxBdHRhY2gsIGRpbSwgLTEpO1xuICAgICAgICBtb3ZlVG8ocG9zaXRpb24sIHRhcmdldEF0dGFjaCwgdGFyZ2V0RGltLCAxKTtcblxuICAgICAgICBlbE9mZnNldCA9IGdldE9mZnNldHMoZWxPZmZzZXQsIGRpbS53aWR0aCwgZGltLmhlaWdodCk7XG4gICAgICAgIHRhcmdldE9mZnNldCA9IGdldE9mZnNldHModGFyZ2V0T2Zmc2V0LCB0YXJnZXREaW0ud2lkdGgsIHRhcmdldERpbS5oZWlnaHQpO1xuXG4gICAgICAgIGVsT2Zmc2V0Wyd4J10gKz0gdGFyZ2V0T2Zmc2V0Wyd4J107XG4gICAgICAgIGVsT2Zmc2V0Wyd5J10gKz0gdGFyZ2V0T2Zmc2V0Wyd5J107XG5cbiAgICAgICAgcG9zaXRpb24ubGVmdCArPSBlbE9mZnNldFsneCddO1xuICAgICAgICBwb3NpdGlvbi50b3AgKz0gZWxPZmZzZXRbJ3knXTtcblxuICAgICAgICBib3VuZGFyeSA9IGdldERpbWVuc2lvbnMoYm91bmRhcnkgfHwgd2luZG93JDEoZWxlbWVudCkpO1xuXG4gICAgICAgIGlmIChmbGlwKSB7XG4gICAgICAgICAgICBlYWNoKGRpcnMsIGZ1bmN0aW9uIChyZWYsIHByb3ApIHtcbiAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHZhciBhbGlnbiA9IHJlZlsxXTtcbiAgICAgICAgICAgICAgICB2YXIgYWxpZ25GbGlwID0gcmVmWzJdO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIShmbGlwID09PSB0cnVlIHx8IGluY2x1ZGVzKGZsaXAsIGRpcikpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgZWxlbU9mZnNldCA9IGVsQXR0YWNoW2Rpcl0gPT09IGFsaWduXG4gICAgICAgICAgICAgICAgICAgID8gLWRpbVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICA6IGVsQXR0YWNoW2Rpcl0gPT09IGFsaWduRmxpcFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBkaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXRPZmZzZXQgPSB0YXJnZXRBdHRhY2hbZGlyXSA9PT0gYWxpZ25cbiAgICAgICAgICAgICAgICAgICAgPyB0YXJnZXREaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgOiB0YXJnZXRBdHRhY2hbZGlyXSA9PT0gYWxpZ25GbGlwXG4gICAgICAgICAgICAgICAgICAgICAgICA/IC10YXJnZXREaW1bcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogMDtcblxuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvblthbGlnbl0gPCBib3VuZGFyeVthbGlnbl0gfHwgcG9zaXRpb25bYWxpZ25dICsgZGltW3Byb3BdID4gYm91bmRhcnlbYWxpZ25GbGlwXSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjZW50ZXJPZmZzZXQgPSBkaW1bcHJvcF0gLyAyO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2VudGVyVGFyZ2V0T2Zmc2V0ID0gdGFyZ2V0QXR0YWNoW2Rpcl0gPT09ICdjZW50ZXInID8gLXRhcmdldERpbVtwcm9wXSAvIDIgOiAwO1xuXG4gICAgICAgICAgICAgICAgICAgIGVsQXR0YWNoW2Rpcl0gPT09ICdjZW50ZXInICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5KGNlbnRlck9mZnNldCwgY2VudGVyVGFyZ2V0T2Zmc2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgYXBwbHkoLWNlbnRlck9mZnNldCwgLWNlbnRlclRhcmdldE9mZnNldClcbiAgICAgICAgICAgICAgICAgICAgKSB8fCBhcHBseShlbGVtT2Zmc2V0LCB0YXJnZXRPZmZzZXQpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gYXBwbHkoZWxlbU9mZnNldCwgdGFyZ2V0T2Zmc2V0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1ZhbCA9IHBvc2l0aW9uW2FsaWduXSArIGVsZW1PZmZzZXQgKyB0YXJnZXRPZmZzZXQgLSBlbE9mZnNldFtkaXJdICogMjtcblxuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmFsID49IGJvdW5kYXJ5W2FsaWduXSAmJiBuZXdWYWwgKyBkaW1bcHJvcF0gPD0gYm91bmRhcnlbYWxpZ25GbGlwXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25bYWxpZ25dID0gbmV3VmFsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBbJ2VsZW1lbnQnLCAndGFyZ2V0J10uZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGlwcGVkW2VsXVtkaXJdID0gIWVsZW1PZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmbGlwcGVkW2VsXVtkaXJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmxpcHBlZFtlbF1bZGlyXSA9PT0gZGlyc1twcm9wXVsxXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkaXJzW3Byb3BdWzJdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRpcnNbcHJvcF1bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBvZmZzZXQoZWxlbWVudCwgcG9zaXRpb24pO1xuXG4gICAgICAgIHJldHVybiBmbGlwcGVkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9mZnNldChlbGVtZW50LCBjb29yZGluYXRlcykge1xuXG4gICAgICAgIGVsZW1lbnQgPSB0b05vZGUoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKGNvb3JkaW5hdGVzKSB7XG5cbiAgICAgICAgICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0KGVsZW1lbnQpO1xuICAgICAgICAgICAgdmFyIHBvcyA9IGNzcyhlbGVtZW50LCAncG9zaXRpb24nKTtcblxuICAgICAgICAgICAgWydsZWZ0JywgJ3RvcCddLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcCBpbiBjb29yZGluYXRlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBjc3MoZWxlbWVudCwgcHJvcCk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyhlbGVtZW50LCBwcm9wLCBjb29yZGluYXRlc1twcm9wXSAtIGN1cnJlbnRPZmZzZXRbcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgICsgdG9GbG9hdChwb3MgPT09ICdhYnNvbHV0ZScgJiYgdmFsdWUgPT09ICdhdXRvJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcG9zaXRpb24oZWxlbWVudClbcHJvcF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0RGltZW5zaW9ucyhlbGVtZW50KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREaW1lbnNpb25zKGVsZW1lbnQpIHtcblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciByZWYgPSB3aW5kb3ckMShlbGVtZW50KTtcbiAgICAgICAgdmFyIHRvcCA9IHJlZi5wYWdlWU9mZnNldDtcbiAgICAgICAgdmFyIGxlZnQgPSByZWYucGFnZVhPZmZzZXQ7XG5cbiAgICAgICAgaWYgKGlzV2luZG93KGVsZW1lbnQpKSB7XG5cbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBlbGVtZW50LmlubmVySGVpZ2h0O1xuICAgICAgICAgICAgdmFyIHdpZHRoID0gZWxlbWVudC5pbm5lcldpZHRoO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRvcDogdG9wLFxuICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgIGJvdHRvbTogdG9wICsgaGVpZ2h0LFxuICAgICAgICAgICAgICAgIHJpZ2h0OiBsZWZ0ICsgd2lkdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0eWxlLCBoaWRkZW47XG5cbiAgICAgICAgaWYgKCFpc1Zpc2libGUoZWxlbWVudCkpIHtcbiAgICAgICAgICAgIHN0eWxlID0gYXR0cihlbGVtZW50LCAnc3R5bGUnKTtcbiAgICAgICAgICAgIGhpZGRlbiA9IGF0dHIoZWxlbWVudCwgJ2hpZGRlbicpO1xuXG4gICAgICAgICAgICBhdHRyKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBzdHlsZTogKChzdHlsZSB8fCAnJykgKyBcIjtkaXNwbGF5OmJsb2NrICFpbXBvcnRhbnQ7XCIpLFxuICAgICAgICAgICAgICAgIGhpZGRlbjogbnVsbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChzdHlsZSkpIHtcbiAgICAgICAgICAgIGF0dHIoZWxlbWVudCwge3N0eWxlOiBzdHlsZSwgaGlkZGVuOiBoaWRkZW59KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgICAgICAgICB0b3A6IHJlY3QudG9wICsgdG9wLFxuICAgICAgICAgICAgbGVmdDogcmVjdC5sZWZ0ICsgbGVmdCxcbiAgICAgICAgICAgIGJvdHRvbTogcmVjdC5ib3R0b20gKyB0b3AsXG4gICAgICAgICAgICByaWdodDogcmVjdC5yaWdodCArIGxlZnQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9zaXRpb24oZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciBwYXJlbnQgPSBvZmZzZXRQYXJlbnQoZWxlbWVudCk7XG4gICAgICAgIHZhciBwYXJlbnRPZmZzZXQgPSBwYXJlbnQgPT09IGRvY0VsKGVsZW1lbnQpID8ge3RvcDogMCwgbGVmdDogMH0gOiBvZmZzZXQocGFyZW50KTtcbiAgICAgICAgdmFyIHJlZiA9IFsndG9wJywgJ2xlZnQnXS5yZWR1Y2UoZnVuY3Rpb24gKHByb3BzLCBwcm9wKSB7XG4gICAgICAgICAgICB2YXIgcHJvcE5hbWUkJDEgPSB1Y2ZpcnN0KHByb3ApO1xuICAgICAgICAgICAgcHJvcHNbcHJvcF0gLT0gcGFyZW50T2Zmc2V0W3Byb3BdXG4gICAgICAgICAgICAgICAgKyAodG9GbG9hdChjc3MoZWxlbWVudCwgKFwibWFyZ2luXCIgKyBwcm9wTmFtZSQkMSkpKSB8fCAwKVxuICAgICAgICAgICAgICAgICsgKHRvRmxvYXQoY3NzKHBhcmVudCwgKFwiYm9yZGVyXCIgKyBwcm9wTmFtZSQkMSArIFwiV2lkdGhcIikpKSB8fCAwKTtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcztcbiAgICAgICAgfSwgb2Zmc2V0KGVsZW1lbnQpKTtcbiAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG4gICAgICAgIHZhciBsZWZ0ID0gcmVmLmxlZnQ7XG5cbiAgICAgICAgcmV0dXJuIHt0b3A6IHRvcCwgbGVmdDogbGVmdH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcblxuICAgICAgICB2YXIgcGFyZW50ID0gdG9Ob2RlKGVsZW1lbnQpLm9mZnNldFBhcmVudDtcblxuICAgICAgICB3aGlsZSAocGFyZW50ICYmIGNzcyhwYXJlbnQsICdwb3NpdGlvbicpID09PSAnc3RhdGljJykge1xuICAgICAgICAgICAgcGFyZW50ID0gcGFyZW50Lm9mZnNldFBhcmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJlbnQgfHwgZG9jRWwoZWxlbWVudCk7XG4gICAgfVxuXG4gICAgdmFyIGhlaWdodCA9IGRpbWVuc2lvbignaGVpZ2h0Jyk7XG4gICAgdmFyIHdpZHRoID0gZGltZW5zaW9uKCd3aWR0aCcpO1xuXG4gICAgZnVuY3Rpb24gZGltZW5zaW9uKHByb3ApIHtcbiAgICAgICAgdmFyIHByb3BOYW1lJCQxID0gdWNmaXJzdChwcm9wKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChlbGVtZW50LCB2YWx1ZSkge1xuXG4gICAgICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNXaW5kb3coZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRbKFwiaW5uZXJcIiArIHByb3BOYW1lJCQxKV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzRG9jdW1lbnQoZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRvYyA9IGVsZW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoZG9jWyhcIm9mZnNldFwiICsgcHJvcE5hbWUkJDEpXSwgZG9jWyhcInNjcm9sbFwiICsgcHJvcE5hbWUkJDEpXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBjc3MoZWxlbWVudCwgcHJvcCk7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA9PT0gJ2F1dG8nID8gZWxlbWVudFsoXCJvZmZzZXRcIiArIHByb3BOYW1lJCQxKV0gOiB0b0Zsb2F0KHZhbHVlKSB8fCAwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlIC0gYm94TW9kZWxBZGp1c3QocHJvcCwgZWxlbWVudCk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwgcHJvcCwgIXZhbHVlICYmIHZhbHVlICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gJydcbiAgICAgICAgICAgICAgICAgICAgOiArdmFsdWUgKyBib3hNb2RlbEFkanVzdChwcm9wLCBlbGVtZW50KSArICdweCdcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBib3hNb2RlbEFkanVzdChwcm9wLCBlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBjc3MoZWxlbWVudCwgJ2JveFNpemluZycpID09PSAnYm9yZGVyLWJveCdcbiAgICAgICAgICAgID8gZGlyc1twcm9wXS5zbGljZSgxKS5tYXAodWNmaXJzdCkucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZSwgcHJvcCkgeyByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgICAgICArIHRvRmxvYXQoY3NzKGVsZW1lbnQsIChcInBhZGRpbmdcIiArIHByb3ApKSlcbiAgICAgICAgICAgICAgICArIHRvRmxvYXQoY3NzKGVsZW1lbnQsIChcImJvcmRlclwiICsgcHJvcCArIFwiV2lkdGhcIikpKTsgfVxuICAgICAgICAgICAgICAgICwgMClcbiAgICAgICAgICAgIDogMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtb3ZlVG8ocG9zaXRpb24sIGF0dGFjaCwgZGltLCBmYWN0b3IpIHtcbiAgICAgICAgZWFjaChkaXJzLCBmdW5jdGlvbiAocmVmLCBwcm9wKSB7XG4gICAgICAgICAgICB2YXIgZGlyID0gcmVmWzBdO1xuICAgICAgICAgICAgdmFyIGFsaWduID0gcmVmWzFdO1xuICAgICAgICAgICAgdmFyIGFsaWduRmxpcCA9IHJlZlsyXTtcblxuICAgICAgICAgICAgaWYgKGF0dGFjaFtkaXJdID09PSBhbGlnbkZsaXApIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblthbGlnbl0gKz0gZGltW3Byb3BdICogZmFjdG9yO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRhY2hbZGlyXSA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvblthbGlnbl0gKz0gZGltW3Byb3BdICogZmFjdG9yIC8gMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UG9zKHBvcykge1xuXG4gICAgICAgIHZhciB4ID0gL2xlZnR8Y2VudGVyfHJpZ2h0LztcbiAgICAgICAgdmFyIHkgPSAvdG9wfGNlbnRlcnxib3R0b20vO1xuXG4gICAgICAgIHBvcyA9IChwb3MgfHwgJycpLnNwbGl0KCcgJyk7XG5cbiAgICAgICAgaWYgKHBvcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHBvcyA9IHgudGVzdChwb3NbMF0pXG4gICAgICAgICAgICAgICAgPyBwb3MuY29uY2F0KFsnY2VudGVyJ10pXG4gICAgICAgICAgICAgICAgOiB5LnRlc3QocG9zWzBdKVxuICAgICAgICAgICAgICAgICAgICA/IFsnY2VudGVyJ10uY29uY2F0KHBvcylcbiAgICAgICAgICAgICAgICAgICAgOiBbJ2NlbnRlcicsICdjZW50ZXInXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4LnRlc3QocG9zWzBdKSA/IHBvc1swXSA6ICdjZW50ZXInLFxuICAgICAgICAgICAgeTogeS50ZXN0KHBvc1sxXSkgPyBwb3NbMV0gOiAnY2VudGVyJ1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE9mZnNldHMob2Zmc2V0cywgd2lkdGgsIGhlaWdodCkge1xuXG4gICAgICAgIHZhciByZWYgPSAob2Zmc2V0cyB8fCAnJykuc3BsaXQoJyAnKTtcbiAgICAgICAgdmFyIHggPSByZWZbMF07XG4gICAgICAgIHZhciB5ID0gcmVmWzFdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiB4ID8gdG9GbG9hdCh4KSAqIChlbmRzV2l0aCh4LCAnJScpID8gd2lkdGggLyAxMDAgOiAxKSA6IDAsXG4gICAgICAgICAgICB5OiB5ID8gdG9GbG9hdCh5KSAqIChlbmRzV2l0aCh5LCAnJScpID8gaGVpZ2h0IC8gMTAwIDogMSkgOiAwXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZmxpcFBvc2l0aW9uKHBvcykge1xuICAgICAgICBzd2l0Y2ggKHBvcykge1xuICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICAgICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgICAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvcCc7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBwb3M7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0luVmlldyhlbGVtZW50LCB0b3BPZmZzZXQsIGxlZnRPZmZzZXQsIHJlbGF0aXZlVG9WaWV3cG9ydCkge1xuICAgICAgICBpZiAoIHRvcE9mZnNldCA9PT0gdm9pZCAwICkgdG9wT2Zmc2V0ID0gMDtcbiAgICAgICAgaWYgKCBsZWZ0T2Zmc2V0ID09PSB2b2lkIDAgKSBsZWZ0T2Zmc2V0ID0gMDtcblxuXG4gICAgICAgIGlmICghaXNWaXNpYmxlKGVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuICAgICAgICB2YXIgd2luID0gd2luZG93JDEoZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHJlbGF0aXZlVG9WaWV3cG9ydCkge1xuXG4gICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB7XG4gICAgICAgICAgICAgICAgdG9wOiAtdG9wT2Zmc2V0LFxuICAgICAgICAgICAgICAgIGxlZnQ6IC1sZWZ0T2Zmc2V0LFxuICAgICAgICAgICAgICAgIGJvdHRvbTogdG9wT2Zmc2V0ICsgaGVpZ2h0KHdpbiksXG4gICAgICAgICAgICAgICAgcmlnaHQ6IGxlZnRPZmZzZXQgKyB3aWR0aCh3aW4pXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCk7XG4gICAgICAgICAgICB2YXIgZWxUb3AgPSByZWZbMF07XG4gICAgICAgICAgICB2YXIgZWxMZWZ0ID0gcmVmWzFdO1xuICAgICAgICAgICAgdmFyIHRvcCA9IHdpbi5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0O1xuXG4gICAgICAgICAgICByZXR1cm4gaW50ZXJzZWN0UmVjdChcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogZWxUb3AsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IGVsTGVmdCxcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBlbFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICByaWdodDogZWxUb3AgKyBlbGVtZW50Lm9mZnNldFdpZHRoXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogdG9wIC0gdG9wT2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0IC0gbGVmdE9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiB0b3AgKyB0b3BPZmZzZXQgKyBoZWlnaHQod2luKSxcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IGxlZnQgKyBsZWZ0T2Zmc2V0ICsgd2lkdGgod2luKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjcm9sbGVkT3ZlcihlbGVtZW50LCBoZWlnaHRPZmZzZXQpIHtcbiAgICAgICAgaWYgKCBoZWlnaHRPZmZzZXQgPT09IHZvaWQgMCApIGhlaWdodE9mZnNldCA9IDA7XG5cblxuICAgICAgICBpZiAoIWlzVmlzaWJsZShlbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICBlbGVtZW50ID0gdG9Ob2RlKGVsZW1lbnQpO1xuXG4gICAgICAgIHZhciB3aW4gPSB3aW5kb3ckMShlbGVtZW50KTtcbiAgICAgICAgdmFyIGRvYyA9IGRvY3VtZW50JDEoZWxlbWVudCk7XG4gICAgICAgIHZhciBlbEhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0ICsgaGVpZ2h0T2Zmc2V0O1xuICAgICAgICB2YXIgcmVmID0gb2Zmc2V0UG9zaXRpb24oZWxlbWVudCk7XG4gICAgICAgIHZhciB0b3AgPSByZWZbMF07XG4gICAgICAgIHZhciB2cCA9IGhlaWdodCh3aW4pO1xuICAgICAgICB2YXIgdmggPSB2cCArIE1hdGgubWluKDAsIHRvcCAtIHZwKTtcbiAgICAgICAgdmFyIGRpZmYgPSBNYXRoLm1heCgwLCB2cCAtIChoZWlnaHQoZG9jKSArIGhlaWdodE9mZnNldCAtICh0b3AgKyBlbEhlaWdodCkpKTtcblxuICAgICAgICByZXR1cm4gY2xhbXAoKCh2aCArIHdpbi5wYWdlWU9mZnNldCAtIHRvcCkgLyAoKHZoICsgKGVsSGVpZ2h0IC0gKGRpZmYgPCB2cCA/IGRpZmYgOiAwKSkpIC8gMTAwKSkgLyAxMDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9mZnNldFBvc2l0aW9uKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIG9mZnNldCA9IFswLCAwXTtcblxuICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgIG9mZnNldFswXSArPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgICAgIG9mZnNldFsxXSArPSBlbGVtZW50Lm9mZnNldExlZnQ7XG5cbiAgICAgICAgICAgIGlmIChjc3MoZWxlbWVudCwgJ3Bvc2l0aW9uJykgPT09ICdmaXhlZCcpIHtcbiAgICAgICAgICAgICAgICB2YXIgd2luID0gd2luZG93JDEoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0WzBdICs9IHdpbi5wYWdlWU9mZnNldDtcbiAgICAgICAgICAgICAgICBvZmZzZXRbMV0gKz0gd2luLnBhZ2VYT2Zmc2V0O1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSB3aGlsZSAoKGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudCkpO1xuXG4gICAgICAgIHJldHVybiBvZmZzZXQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd2luZG93JDEoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gaXNXaW5kb3coZWxlbWVudCkgPyBlbGVtZW50IDogZG9jdW1lbnQkMShlbGVtZW50KS5kZWZhdWx0VmlldztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkb2N1bWVudCQxKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRvTm9kZShlbGVtZW50KS5vd25lckRvY3VtZW50O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRvY0VsKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50JDEoZWxlbWVudCkuZG9jdW1lbnRFbGVtZW50O1xuICAgIH1cblxuICAgIC8qIGdsb2JhbCBEb2N1bWVudFRvdWNoICovXG5cbiAgICB2YXIgaXNSdGwgPSBhdHRyKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgJ2RpcicpID09PSAncnRsJztcblxuICAgIHZhciBoYXNUb3VjaEV2ZW50cyA9ICdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdztcbiAgICB2YXIgaGFzUG9pbnRlckV2ZW50cyA9IHdpbmRvdy5Qb2ludGVyRXZlbnQ7XG4gICAgdmFyIGhhc1RvdWNoID0gaGFzVG91Y2hFdmVudHNcbiAgICAgICAgfHwgd2luZG93LkRvY3VtZW50VG91Y2ggJiYgZG9jdW1lbnQgaW5zdGFuY2VvZiBEb2N1bWVudFRvdWNoXG4gICAgICAgIHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50czsgLy8gSUUgPj0xMVxuXG4gICAgdmFyIHBvaW50ZXJEb3duID0gIWhhc1RvdWNoID8gJ21vdXNlZG93bicgOiAoXCJtb3VzZWRvd24gXCIgKyAoaGFzVG91Y2hFdmVudHMgPyAndG91Y2hzdGFydCcgOiAncG9pbnRlcmRvd24nKSk7XG4gICAgdmFyIHBvaW50ZXJNb3ZlID0gIWhhc1RvdWNoID8gJ21vdXNlbW92ZScgOiAoXCJtb3VzZW1vdmUgXCIgKyAoaGFzVG91Y2hFdmVudHMgPyAndG91Y2htb3ZlJyA6ICdwb2ludGVybW92ZScpKTtcbiAgICB2YXIgcG9pbnRlclVwID0gIWhhc1RvdWNoID8gJ21vdXNldXAnIDogKFwibW91c2V1cCBcIiArIChoYXNUb3VjaEV2ZW50cyA/ICd0b3VjaGVuZCcgOiAncG9pbnRlcnVwJykpO1xuICAgIHZhciBwb2ludGVyRW50ZXIgPSBoYXNUb3VjaCAmJiBoYXNQb2ludGVyRXZlbnRzID8gJ3BvaW50ZXJlbnRlcicgOiAnbW91c2VlbnRlcic7XG4gICAgdmFyIHBvaW50ZXJMZWF2ZSA9IGhhc1RvdWNoICYmIGhhc1BvaW50ZXJFdmVudHMgPyAncG9pbnRlcmxlYXZlJyA6ICdtb3VzZWxlYXZlJztcblxuICAgIC8qXG4gICAgICAgIEJhc2VkIG9uOlxuICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTYgV2lsc29uIFBhZ2Ugd2lsc29ucGFnZUBtZS5jb21cbiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL3dpbHNvbnBhZ2UvZmFzdGRvbVxuICAgICovXG5cbiAgICB2YXIgZmFzdGRvbSA9IHtcblxuICAgICAgICByZWFkczogW10sXG4gICAgICAgIHdyaXRlczogW10sXG5cbiAgICAgICAgcmVhZDogZnVuY3Rpb24odGFzaykge1xuICAgICAgICAgICAgdGhpcy5yZWFkcy5wdXNoKHRhc2spO1xuICAgICAgICAgICAgc2NoZWR1bGVGbHVzaCgpO1xuICAgICAgICAgICAgcmV0dXJuIHRhc2s7XG4gICAgICAgIH0sXG5cbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHRhc2spIHtcbiAgICAgICAgICAgIHRoaXMud3JpdGVzLnB1c2godGFzayk7XG4gICAgICAgICAgICBzY2hlZHVsZUZsdXNoKCk7XG4gICAgICAgICAgICByZXR1cm4gdGFzaztcbiAgICAgICAgfSxcblxuICAgICAgICBjbGVhcjogZnVuY3Rpb24odGFzaykge1xuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZSQxKHRoaXMucmVhZHMsIHRhc2spIHx8IHJlbW92ZSQxKHRoaXMud3JpdGVzLCB0YXNrKTtcbiAgICAgICAgfSxcblxuICAgICAgICBmbHVzaDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHJ1blRhc2tzKHRoaXMucmVhZHMpO1xuICAgICAgICAgICAgcnVuVGFza3ModGhpcy53cml0ZXMuc3BsaWNlKDAsIHRoaXMud3JpdGVzLmxlbmd0aCkpO1xuXG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkcy5sZW5ndGggfHwgdGhpcy53cml0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc2NoZWR1bGVGbHVzaCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBzY2hlZHVsZUZsdXNoKCkge1xuICAgICAgICBpZiAoIWZhc3Rkb20uc2NoZWR1bGVkKSB7XG4gICAgICAgICAgICBmYXN0ZG9tLnNjaGVkdWxlZCA9IHRydWU7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZmFzdGRvbS5mbHVzaC5iaW5kKGZhc3Rkb20pKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJ1blRhc2tzKHRhc2tzKSB7XG4gICAgICAgIHZhciB0YXNrO1xuICAgICAgICB3aGlsZSAoKHRhc2sgPSB0YXNrcy5zaGlmdCgpKSkge1xuICAgICAgICAgICAgdGFzaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVtb3ZlJDEoYXJyYXksIGl0ZW0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gYXJyYXkuaW5kZXhPZihpdGVtKTtcbiAgICAgICAgcmV0dXJuICEhfmluZGV4ICYmICEhYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBNb3VzZVRyYWNrZXIoKSB7fVxuXG4gICAgTW91c2VUcmFja2VyLnByb3RvdHlwZSA9IHtcblxuICAgICAgICBwb3NpdGlvbnM6IFtdLFxuICAgICAgICBwb3NpdGlvbjogbnVsbCxcblxuICAgICAgICBpbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zID0gW107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uID0gbnVsbDtcblxuICAgICAgICAgICAgdmFyIHRpY2tpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMudW5iaW5kID0gb24oZG9jdW1lbnQsICdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZSkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRpY2tpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMkMS5wb3NpdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggJiYgKHRpbWUgLSB0aGlzJDEucG9zaXRpb25zW2xlbmd0aCAtIDFdLnRpbWUgPiAxMDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zaXRpb25zLnNwbGljZSgwLCBsZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvc2l0aW9ucy5wdXNoKHt0aW1lOiB0aW1lLCB4OiBlLnBhZ2VYLCB5OiBlLnBhZ2VZfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5wb3NpdGlvbnMubGVuZ3RoID4gNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvc2l0aW9ucy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGlja2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0sIDUpO1xuXG4gICAgICAgICAgICAgICAgdGlja2luZyA9IHRydWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZiAodGhpcy51bmJpbmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG1vdmVzVG86IGZ1bmN0aW9uKHRhcmdldCkge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wb3NpdGlvbnMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHAgPSBvZmZzZXQodGFyZ2V0KTtcbiAgICAgICAgICAgIHZhciBwb3NpdGlvbiQkMSA9IHRoaXMucG9zaXRpb25zW3RoaXMucG9zaXRpb25zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMucG9zaXRpb25zO1xuICAgICAgICAgICAgdmFyIHByZXZQb3MgPSByZWZbMF07XG5cbiAgICAgICAgICAgIGlmIChwLmxlZnQgPD0gcG9zaXRpb24kJDEueCAmJiBwb3NpdGlvbiQkMS54IDw9IHAucmlnaHQgJiYgcC50b3AgPD0gcG9zaXRpb24kJDEueSAmJiBwb3NpdGlvbiQkMS55IDw9IHAuYm90dG9tKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgcG9pbnRzID0gW1xuICAgICAgICAgICAgICAgIFt7eDogcC5sZWZ0LCB5OiBwLnRvcH0sIHt4OiBwLnJpZ2h0LCB5OiBwLmJvdHRvbX1dLFxuICAgICAgICAgICAgICAgIFt7eDogcC5yaWdodCwgeTogcC50b3B9LCB7eDogcC5sZWZ0LCB5OiBwLmJvdHRvbX1dXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBpZiAocC5yaWdodCA8PSBwb3NpdGlvbiQkMS54KSA7IGVsc2UgaWYgKHAubGVmdCA+PSBwb3NpdGlvbiQkMS54KSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzWzBdLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICBwb2ludHNbMV0ucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwLmJvdHRvbSA8PSBwb3NpdGlvbiQkMS55KSB7XG4gICAgICAgICAgICAgICAgcG9pbnRzWzBdLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocC50b3AgPj0gcG9zaXRpb24kJDEueSkge1xuICAgICAgICAgICAgICAgIHBvaW50c1sxXS5yZXZlcnNlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAhIXBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKHJlc3VsdCwgcG9pbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0ICsgKHNsb3BlKHByZXZQb3MsIHBvaW50WzBdKSA8IHNsb3BlKHBvc2l0aW9uJCQxLCBwb2ludFswXSkgJiYgc2xvcGUocHJldlBvcywgcG9pbnRbMV0pID4gc2xvcGUocG9zaXRpb24kJDEsIHBvaW50WzFdKSk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHNsb3BlKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChiLnkgLSBhLnkpIC8gKGIueCAtIGEueCk7XG4gICAgfVxuXG4gICAgdmFyIHN0cmF0cyA9IHt9O1xuXG4gICAgLy8gY29uY2F0IHN0cmF0ZWd5XG4gICAgc3RyYXRzLmFyZ3MgPVxuICAgIHN0cmF0cy5ldmVudHMgPVxuICAgIHN0cmF0cy5pbml0ID1cbiAgICBzdHJhdHMuY3JlYXRlZCA9XG4gICAgc3RyYXRzLmJlZm9yZUNvbm5lY3QgPVxuICAgIHN0cmF0cy5jb25uZWN0ZWQgPVxuICAgIHN0cmF0cy5yZWFkeSA9XG4gICAgc3RyYXRzLmJlZm9yZURpc2Nvbm5lY3QgPVxuICAgIHN0cmF0cy5kaXNjb25uZWN0ZWQgPVxuICAgIHN0cmF0cy5kZXN0cm95ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcblxuICAgICAgICBwYXJlbnRWYWwgPSBwYXJlbnRWYWwgJiYgIWlzQXJyYXkocGFyZW50VmFsKSA/IFtwYXJlbnRWYWxdIDogcGFyZW50VmFsO1xuXG4gICAgICAgIHJldHVybiBjaGlsZFZhbFxuICAgICAgICAgICAgPyBwYXJlbnRWYWxcbiAgICAgICAgICAgICAgICA/IHBhcmVudFZhbC5jb25jYXQoY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgOiBpc0FycmF5KGNoaWxkVmFsKVxuICAgICAgICAgICAgICAgICAgICA/IGNoaWxkVmFsXG4gICAgICAgICAgICAgICAgICAgIDogW2NoaWxkVmFsXVxuICAgICAgICAgICAgOiBwYXJlbnRWYWw7XG4gICAgfTtcblxuICAgIC8vIHVwZGF0ZSBzdHJhdGVneVxuICAgIHN0cmF0cy51cGRhdGUgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gc3RyYXRzLmFyZ3MocGFyZW50VmFsLCBpc0Z1bmN0aW9uKGNoaWxkVmFsKSA/IHtyZWFkOiBjaGlsZFZhbH0gOiBjaGlsZFZhbCk7XG4gICAgfTtcblxuICAgIC8vIHByb3BlcnR5IHN0cmF0ZWd5XG4gICAgc3RyYXRzLnByb3BzID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcblxuICAgICAgICBpZiAoaXNBcnJheShjaGlsZFZhbCkpIHtcbiAgICAgICAgICAgIGNoaWxkVmFsID0gY2hpbGRWYWwucmVkdWNlKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgICAgICAgICAgICAgdmFsdWVba2V5XSA9IFN0cmluZztcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9LCB7fSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc3RyYXRzLm1ldGhvZHMocGFyZW50VmFsLCBjaGlsZFZhbCk7XG4gICAgfTtcblxuICAgIC8vIGV4dGVuZCBzdHJhdGVneVxuICAgIHN0cmF0cy5jb21wdXRlZCA9XG4gICAgc3RyYXRzLm1ldGhvZHMgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gY2hpbGRWYWxcbiAgICAgICAgICAgID8gcGFyZW50VmFsXG4gICAgICAgICAgICAgICAgPyBhc3NpZ24oe30sIHBhcmVudFZhbCwgY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgOiBjaGlsZFZhbFxuICAgICAgICAgICAgOiBwYXJlbnRWYWw7XG4gICAgfTtcblxuICAgIC8vIGRhdGEgc3RyYXRlZ3lcbiAgICBzdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSkge1xuXG4gICAgICAgIGlmICghdm0pIHtcblxuICAgICAgICAgICAgaWYgKCFjaGlsZFZhbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnRWYWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcGFyZW50VmFsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkVmFsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHZtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlRm5EYXRhKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtZXJnZUZuRGF0YShwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlRm5EYXRhKHBhcmVudFZhbCwgY2hpbGRWYWwsIHZtKSB7XG4gICAgICAgIHJldHVybiBzdHJhdHMuY29tcHV0ZWQoXG4gICAgICAgICAgICBpc0Z1bmN0aW9uKHBhcmVudFZhbClcbiAgICAgICAgICAgICAgICA/IHBhcmVudFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgICAgICAgICA6IHBhcmVudFZhbCxcbiAgICAgICAgICAgIGlzRnVuY3Rpb24oY2hpbGRWYWwpXG4gICAgICAgICAgICAgICAgPyBjaGlsZFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgICAgICAgICA6IGNoaWxkVmFsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZGVmYXVsdCBzdHJhdGVneVxuICAgIHZhciBkZWZhdWx0U3RyYXQgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgICAgICByZXR1cm4gaXNVbmRlZmluZWQoY2hpbGRWYWwpID8gcGFyZW50VmFsIDogY2hpbGRWYWw7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLCB2bSkge1xuXG4gICAgICAgIHZhciBvcHRpb25zID0ge307XG5cbiAgICAgICAgaWYgKGlzRnVuY3Rpb24oY2hpbGQpKSB7XG4gICAgICAgICAgICBjaGlsZCA9IGNoaWxkLm9wdGlvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hpbGQuZXh0ZW5kcykge1xuICAgICAgICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQuZXh0ZW5kcywgdm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoaWxkLm1peGlucykge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQubWl4aW5zW2ldLCB2bSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gcGFyZW50KSB7XG4gICAgICAgICAgICBtZXJnZUtleShrZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIga2V5JDEgaW4gY2hpbGQpIHtcbiAgICAgICAgICAgIGlmICghaGFzT3duKHBhcmVudCwga2V5JDEpKSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VLZXkoa2V5JDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbWVyZ2VLZXkoa2V5KSB7XG4gICAgICAgICAgICBvcHRpb25zW2tleV0gPSAoc3RyYXRzW2tleV0gfHwgZGVmYXVsdFN0cmF0KShwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwgdm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGFyc2VPcHRpb25zKG9wdGlvbnMsIGFyZ3MpIHtcbiAgICAgICAgdmFyIG9iajtcblxuICAgICAgICBpZiAoIGFyZ3MgPT09IHZvaWQgMCApIGFyZ3MgPSBbXTtcblxuICAgICAgICB0cnkge1xuXG4gICAgICAgICAgICByZXR1cm4gIW9wdGlvbnNcbiAgICAgICAgICAgICAgICA/IHt9XG4gICAgICAgICAgICAgICAgOiBzdGFydHNXaXRoKG9wdGlvbnMsICd7JylcbiAgICAgICAgICAgICAgICAgICAgPyBKU09OLnBhcnNlKG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgICAgIDogYXJncy5sZW5ndGggJiYgIWluY2x1ZGVzKG9wdGlvbnMsICc6JylcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKCggb2JqID0ge30sIG9ialthcmdzWzBdXSA9IG9wdGlvbnMsIG9iaiApKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBvcHRpb25zLnNwbGl0KCc7JykucmVkdWNlKGZ1bmN0aW9uIChvcHRpb25zLCBvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb3B0aW9uLnNwbGl0KC86KC4qKS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXkgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcmVmWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXkgJiYgIWlzVW5kZWZpbmVkKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zW2tleS50cmltKCldID0gdmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHZhciBpZCA9IDA7XG5cbiAgICB2YXIgUGxheWVyID0gZnVuY3Rpb24oZWwpIHtcbiAgICAgICAgdGhpcy5pZCA9ICsraWQ7XG4gICAgICAgIHRoaXMuZWwgPSB0b05vZGUoZWwpO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzVmlkZW8gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzWW91dHViZSgpIHx8IHRoaXMuaXNWaW1lbygpIHx8IHRoaXMuaXNIVE1MNSgpO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzSFRNTDUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLnRhZ05hbWUgPT09ICdWSURFTyc7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuaXNJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLnRhZ05hbWUgPT09ICdJRlJBTUUnO1xuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLmlzWW91dHViZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJRnJhbWUoKSAmJiAhIXRoaXMuZWwuc3JjLm1hdGNoKC9cXC9cXC8uKj95b3V0dWJlKC1ub2Nvb2tpZSk/XFwuW2Etel0rXFwvKHdhdGNoXFw/dj1bXiZcXHNdK3xlbWJlZCl8eW91dHVcXC5iZVxcLy4qLyk7XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUuaXNWaW1lbyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNJRnJhbWUoKSAmJiAhIXRoaXMuZWwuc3JjLm1hdGNoKC92aW1lb1xcLmNvbVxcL3ZpZGVvXFwvLiovKTtcbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5lbmFibGVBcGkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICh0aGlzLnJlYWR5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB5b3V0dWJlID0gdGhpcy5pc1lvdXR1YmUoKTtcbiAgICAgICAgdmFyIHZpbWVvID0gdGhpcy5pc1ZpbWVvKCk7XG5cbiAgICAgICAgdmFyIHBvbGxlcjtcblxuICAgICAgICBpZiAoeW91dHViZSB8fCB2aW1lbykge1xuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeSA9IG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcblxuICAgICAgICAgICAgICAgIG9uY2UodGhpcyQxLmVsLCAnbG9hZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHlvdXR1YmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBvc3QodGhpcyQxLmVsLCB7ZXZlbnQ6ICdsaXN0ZW5pbmcnLCBpZDogdGhpcyQxLmlkfSk7IH07XG4gICAgICAgICAgICAgICAgICAgICAgICBwb2xsZXIgPSBzZXRJbnRlcnZhbChsaXN0ZW5lciwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGxpc3RlbihmdW5jdGlvbiAoZGF0YSQkMSkgeyByZXR1cm4geW91dHViZSAmJiBkYXRhJCQxLmlkID09PSB0aGlzJDEuaWQgJiYgZGF0YSQkMS5ldmVudCA9PT0gJ29uUmVhZHknIHx8IHZpbWVvICYmIE51bWJlcihkYXRhJCQxLnBsYXllcl9pZCkgPT09IHRoaXMkMS5pZDsgfSlcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9sbGVyICYmIGNsZWFySW50ZXJ2YWwocG9sbGVyKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMkMS5lbCwgJ3NyYycsIChcIlwiICsgKHRoaXMkMS5lbC5zcmMpICsgKGluY2x1ZGVzKHRoaXMkMS5lbC5zcmMsICc/JykgPyAnJicgOiAnPycpICsgKHlvdXR1YmUgPyAnZW5hYmxlanNhcGk9MScgOiAoXCJhcGk9MSZwbGF5ZXJfaWQ9XCIgKyAodGhpcyQxLmlkKSkpKSk7XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZSQxLnJlc29sdmUoKTtcblxuICAgIH07XG5cbiAgICBQbGF5ZXIucHJvdG90eXBlLnBsYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZpZGVvKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSUZyYW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2Z1bmM6ICdwbGF5VmlkZW8nLCBtZXRob2Q6ICdwbGF5J30pOyB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzSFRNTDUoKSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvbWlzZSA9IHRoaXMuZWwucGxheSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5jYXRjaChub29wKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIFBsYXllci5wcm90b3R5cGUucGF1c2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgIGlmICghdGhpcy5pc1ZpZGVvKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSUZyYW1lKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlQXBpKCkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBwb3N0KHRoaXMkMS5lbCwge2Z1bmM6ICdwYXVzZVZpZGVvJywgbWV0aG9kOiAncGF1c2UnfSk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNIVE1MNSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgUGxheWVyLnByb3RvdHlwZS5tdXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICBpZiAoIXRoaXMuaXNWaWRlbygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0lGcmFtZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUFwaSgpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gcG9zdCh0aGlzJDEuZWwsIHtmdW5jOiAnbXV0ZScsIG1ldGhvZDogJ3NldFZvbHVtZScsIHZhbHVlOiAwfSk7IH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNIVE1MNSgpKSB7XG4gICAgICAgICAgICB0aGlzLmVsLm11dGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGF0dHIodGhpcy5lbCwgJ211dGVkJywgJycpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcG9zdChlbCwgY21kKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBlbC5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGFzc2lnbih7ZXZlbnQ6ICdjb21tYW5kJ30sIGNtZCkpLCAnKicpO1xuICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpc3RlbihjYikge1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgICAgIG9uY2Uod2luZG93LCAnbWVzc2FnZScsIGZ1bmN0aW9uIChfLCBkYXRhJCQxKSB7IHJldHVybiByZXNvbHZlKGRhdGEkJDEpOyB9LCBmYWxzZSwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBkYXRhJCQxID0gcmVmLmRhdGE7XG5cblxuICAgICAgICAgICAgICAgIGlmICghZGF0YSQkMSB8fCAhaXNTdHJpbmcoZGF0YSQkMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDEgPSBKU09OLnBhcnNlKGRhdGEkJDEpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxICYmIGNiKGRhdGEkJDEpO1xuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9KTtcblxuICAgIH1cblxuICAgIC8qXG4gICAgICAgIEJhc2VkIG9uOlxuICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNiBUaG9tYXMgRnVjaHNcbiAgICAgICAgaHR0cDovL3plcHRvanMuY29tL1xuICAgICovXG5cbiAgICB2YXIgdG91Y2ggPSB7fSwgY2xpY2tUaW1lb3V0LCBzd2lwZVRpbWVvdXQsIHRhcFRpbWVvdXQsIGNsaWNrZWQ7XG5cbiAgICBmdW5jdGlvbiBzd2lwZURpcmVjdGlvbihyZWYpIHtcbiAgICAgICAgdmFyIHgxID0gcmVmLngxO1xuICAgICAgICB2YXIgeDIgPSByZWYueDI7XG4gICAgICAgIHZhciB5MSA9IHJlZi55MTtcbiAgICAgICAgdmFyIHkyID0gcmVmLnkyO1xuXG4gICAgICAgIHJldHVybiBNYXRoLmFicyh4MSAtIHgyKSA+PSBNYXRoLmFicyh5MSAtIHkyKSA/ICh4MSAtIHgyID4gMCA/ICdMZWZ0JyA6ICdSaWdodCcpIDogKHkxIC0geTIgPiAwID8gJ1VwJyA6ICdEb3duJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FuY2VsQWxsKCkge1xuICAgICAgICBjbGlja1RpbWVvdXQgJiYgY2xlYXJUaW1lb3V0KGNsaWNrVGltZW91dCk7XG4gICAgICAgIHN3aXBlVGltZW91dCAmJiBjbGVhclRpbWVvdXQoc3dpcGVUaW1lb3V0KTtcbiAgICAgICAgdGFwVGltZW91dCAmJiBjbGVhclRpbWVvdXQodGFwVGltZW91dCk7XG4gICAgICAgIGNsaWNrVGltZW91dCA9IHN3aXBlVGltZW91dCA9IHRhcFRpbWVvdXQgPSBudWxsO1xuICAgICAgICB0b3VjaCA9IHt9O1xuICAgIH1cblxuICAgIHJlYWR5KGZ1bmN0aW9uICgpIHtcblxuICAgICAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gY2xpY2tlZCA9IHRydWU7IH0sIHRydWUpO1xuXG4gICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyRG93biwgZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHJlZiA9IGdldFBvcyQxKGUpO1xuICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgIHZhciB5ID0gcmVmLnk7XG4gICAgICAgICAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIHZhciB0eXBlID0gZ2V0VHlwZShlLnR5cGUpO1xuXG4gICAgICAgICAgICBpZiAodG91Y2gudHlwZSAmJiB0b3VjaC50eXBlICE9PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0b3VjaC5lbCA9ICd0YWdOYW1lJyBpbiB0YXJnZXQgPyB0YXJnZXQgOiB0YXJnZXQucGFyZW50Tm9kZTtcblxuICAgICAgICAgICAgY2xpY2tUaW1lb3V0ICYmIGNsZWFyVGltZW91dChjbGlja1RpbWVvdXQpO1xuXG4gICAgICAgICAgICB0b3VjaC54MSA9IHg7XG4gICAgICAgICAgICB0b3VjaC55MSA9IHk7XG5cbiAgICAgICAgICAgIGlmICh0b3VjaC5sYXN0ICYmIG5vdyAtIHRvdWNoLmxhc3QgPD0gMjUwKSB7XG4gICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdG91Y2gudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICB0b3VjaC5sYXN0ID0gbm93O1xuXG4gICAgICAgICAgICBjbGlja2VkID0gZS5idXR0b24gPiAwO1xuXG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgZnVuY3Rpb24gKGUpIHtcblxuICAgICAgICAgICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHJlZiA9IGdldFBvcyQxKGUpO1xuICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgIHZhciB5ID0gcmVmLnk7XG5cbiAgICAgICAgICAgIHRvdWNoLngyID0geDtcbiAgICAgICAgICAgIHRvdWNoLnkyID0geTtcblxuICAgICAgICB9KTtcblxuICAgICAgICBvbihkb2N1bWVudCwgcG9pbnRlclVwLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cblxuICAgICAgICAgICAgaWYgKHRvdWNoLnR5cGUgIT09IGdldFR5cGUodHlwZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHN3aXBlXG4gICAgICAgICAgICBpZiAodG91Y2gueDIgJiYgTWF0aC5hYnModG91Y2gueDEgLSB0b3VjaC54MikgPiAzMCB8fCB0b3VjaC55MiAmJiBNYXRoLmFicyh0b3VjaC55MSAtIHRvdWNoLnkyKSA+IDMwKSB7XG5cbiAgICAgICAgICAgICAgICBzd2lwZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvdWNoLmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRvdWNoLmVsLCAnc3dpcGUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodG91Y2guZWwsIChcInN3aXBlXCIgKyAoc3dpcGVEaXJlY3Rpb24odG91Y2gpKSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRvdWNoID0ge307XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIG5vcm1hbCB0YXBcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2xhc3QnIGluIHRvdWNoKSB7XG5cbiAgICAgICAgICAgICAgICB0YXBUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiB0cmlnZ2VyKHRvdWNoLmVsLCAndGFwJyk7IH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBzaW5nbGUgY2xpY2sgYWZ0ZXIgMzUwbXMgb2YgaW5hY3Rpdml0eVxuICAgICAgICAgICAgICAgIGlmICh0b3VjaC5lbCAmJiB0eXBlICE9PSAnbW91c2V1cCcgJiYgd2l0aGluKHRhcmdldCwgdG91Y2guZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2tUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b3VjaC5lbCAmJiAhY2xpY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodG91Y2guZWwsICdjbGljaycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMzUwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdG91Y2ggPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgICAgICBvbihkb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgY2FuY2VsQWxsKTtcbiAgICAgICAgb24od2luZG93LCAnc2Nyb2xsJywgY2FuY2VsQWxsKTtcblxuICAgIH0pO1xuXG4gICAgdmFyIHRvdWNoaW5nID0gZmFsc2U7XG4gICAgb24oZG9jdW1lbnQsICd0b3VjaHN0YXJ0JywgZnVuY3Rpb24gKCkgeyByZXR1cm4gdG91Y2hpbmcgPSB0cnVlOyB9LCB0cnVlKTtcbiAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKCkge3RvdWNoaW5nID0gZmFsc2U7fSk7XG4gICAgb24oZG9jdW1lbnQsICd0b3VjaGNhbmNlbCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRvdWNoaW5nID0gZmFsc2U7IH0sIHRydWUpO1xuXG4gICAgZnVuY3Rpb24gaXNUb3VjaChlKSB7XG4gICAgICAgIHJldHVybiB0b3VjaGluZyB8fCBlLnBvaW50ZXJUeXBlID09PSAndG91Y2gnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFBvcyQxKGUpIHtcbiAgICAgICAgdmFyIHRvdWNoZXMgPSBlLnRvdWNoZXM7XG4gICAgICAgIHZhciBjaGFuZ2VkVG91Y2hlcyA9IGUuY2hhbmdlZFRvdWNoZXM7XG4gICAgICAgIHZhciByZWYgPSB0b3VjaGVzICYmIHRvdWNoZXNbMF0gfHwgY2hhbmdlZFRvdWNoZXMgJiYgY2hhbmdlZFRvdWNoZXNbMF0gfHwgZTtcbiAgICAgICAgdmFyIHggPSByZWYucGFnZVg7XG4gICAgICAgIHZhciB5ID0gcmVmLnBhZ2VZO1xuXG4gICAgICAgIHJldHVybiB7eDogeCwgeTogeX07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VHlwZSh0eXBlKSB7XG4gICAgICAgIHJldHVybiB0eXBlLnNsaWNlKDAsIDUpO1xuICAgIH1cblxuXG5cbiAgICB2YXIgdXRpbCA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcbiAgICAgICAgYWpheDogYWpheCxcbiAgICAgICAgZ2V0SW1hZ2U6IGdldEltYWdlLFxuICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLFxuICAgICAgICBUcmFuc2l0aW9uOiBUcmFuc2l0aW9uLFxuICAgICAgICBhbmltYXRlOiBhbmltYXRlLFxuICAgICAgICBBbmltYXRpb246IEFuaW1hdGlvbixcbiAgICAgICAgYXR0cjogYXR0cixcbiAgICAgICAgaGFzQXR0cjogaGFzQXR0cixcbiAgICAgICAgcmVtb3ZlQXR0cjogcmVtb3ZlQXR0cixcbiAgICAgICAgZmlsdGVyQXR0cjogZmlsdGVyQXR0cixcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgYWRkQ2xhc3M6IGFkZENsYXNzLFxuICAgICAgICByZW1vdmVDbGFzczogcmVtb3ZlQ2xhc3MsXG4gICAgICAgIHJlbW92ZUNsYXNzZXM6IHJlbW92ZUNsYXNzZXMsXG4gICAgICAgIHJlcGxhY2VDbGFzczogcmVwbGFjZUNsYXNzLFxuICAgICAgICBoYXNDbGFzczogaGFzQ2xhc3MsXG4gICAgICAgIHRvZ2dsZUNsYXNzOiB0b2dnbGVDbGFzcyxcbiAgICAgICAgJDogJCxcbiAgICAgICAgJCQ6ICQkLFxuICAgICAgICBwb3NpdGlvbkF0OiBwb3NpdGlvbkF0LFxuICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICBmbGlwUG9zaXRpb246IGZsaXBQb3NpdGlvbixcbiAgICAgICAgaXNJblZpZXc6IGlzSW5WaWV3LFxuICAgICAgICBzY3JvbGxlZE92ZXI6IHNjcm9sbGVkT3ZlcixcbiAgICAgICAgaXNSZWFkeTogaXNSZWFkeSxcbiAgICAgICAgcmVhZHk6IHJlYWR5LFxuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGdldEluZGV4OiBnZXRJbmRleCxcbiAgICAgICAgZW1wdHk6IGVtcHR5LFxuICAgICAgICBodG1sOiBodG1sLFxuICAgICAgICBwcmVwZW5kOiBwcmVwZW5kLFxuICAgICAgICBhcHBlbmQ6IGFwcGVuZCxcbiAgICAgICAgYmVmb3JlOiBiZWZvcmUsXG4gICAgICAgIGFmdGVyOiBhZnRlcixcbiAgICAgICAgcmVtb3ZlOiByZW1vdmUsXG4gICAgICAgIHdyYXBBbGw6IHdyYXBBbGwsXG4gICAgICAgIHdyYXBJbm5lcjogd3JhcElubmVyLFxuICAgICAgICB1bndyYXA6IHVud3JhcCxcbiAgICAgICAgZnJhZ21lbnQ6IGZyYWdtZW50LFxuICAgICAgICBhcHBseTogYXBwbHksXG4gICAgICAgIGlzUnRsOiBpc1J0bCxcbiAgICAgICAgaGFzVG91Y2g6IGhhc1RvdWNoLFxuICAgICAgICBwb2ludGVyRG93bjogcG9pbnRlckRvd24sXG4gICAgICAgIHBvaW50ZXJNb3ZlOiBwb2ludGVyTW92ZSxcbiAgICAgICAgcG9pbnRlclVwOiBwb2ludGVyVXAsXG4gICAgICAgIHBvaW50ZXJFbnRlcjogcG9pbnRlckVudGVyLFxuICAgICAgICBwb2ludGVyTGVhdmU6IHBvaW50ZXJMZWF2ZSxcbiAgICAgICAgb246IG9uLFxuICAgICAgICBvZmY6IG9mZixcbiAgICAgICAgb25jZTogb25jZSxcbiAgICAgICAgdHJpZ2dlcjogdHJpZ2dlcixcbiAgICAgICAgY3JlYXRlRXZlbnQ6IGNyZWF0ZUV2ZW50LFxuICAgICAgICB0b0V2ZW50VGFyZ2V0czogdG9FdmVudFRhcmdldHMsXG4gICAgICAgIHByZXZlbnRDbGljazogcHJldmVudENsaWNrLFxuICAgICAgICBmYXN0ZG9tOiBmYXN0ZG9tLFxuICAgICAgICBpc1ZvaWRFbGVtZW50OiBpc1ZvaWRFbGVtZW50LFxuICAgICAgICBpc1Zpc2libGU6IGlzVmlzaWJsZSxcbiAgICAgICAgc2VsSW5wdXQ6IHNlbElucHV0LFxuICAgICAgICBpc0lucHV0OiBpc0lucHV0LFxuICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgd2l0aGluOiB3aXRoaW4sXG4gICAgICAgIGJpbmQ6IGJpbmQsXG4gICAgICAgIGhhc093bjogaGFzT3duLFxuICAgICAgICBoeXBoZW5hdGU6IGh5cGhlbmF0ZSxcbiAgICAgICAgY2FtZWxpemU6IGNhbWVsaXplLFxuICAgICAgICB1Y2ZpcnN0OiB1Y2ZpcnN0LFxuICAgICAgICBzdGFydHNXaXRoOiBzdGFydHNXaXRoLFxuICAgICAgICBlbmRzV2l0aDogZW5kc1dpdGgsXG4gICAgICAgIGluY2x1ZGVzOiBpbmNsdWRlcyxcbiAgICAgICAgaXNBcnJheTogaXNBcnJheSxcbiAgICAgICAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcbiAgICAgICAgaXNPYmplY3Q6IGlzT2JqZWN0LFxuICAgICAgICBpc1BsYWluT2JqZWN0OiBpc1BsYWluT2JqZWN0LFxuICAgICAgICBpc1dpbmRvdzogaXNXaW5kb3csXG4gICAgICAgIGlzRG9jdW1lbnQ6IGlzRG9jdW1lbnQsXG4gICAgICAgIGlzSlF1ZXJ5OiBpc0pRdWVyeSxcbiAgICAgICAgaXNOb2RlOiBpc05vZGUsXG4gICAgICAgIGlzTm9kZUNvbGxlY3Rpb246IGlzTm9kZUNvbGxlY3Rpb24sXG4gICAgICAgIGlzQm9vbGVhbjogaXNCb29sZWFuLFxuICAgICAgICBpc1N0cmluZzogaXNTdHJpbmcsXG4gICAgICAgIGlzTnVtYmVyOiBpc051bWJlcixcbiAgICAgICAgaXNOdW1lcmljOiBpc051bWVyaWMsXG4gICAgICAgIGlzVW5kZWZpbmVkOiBpc1VuZGVmaW5lZCxcbiAgICAgICAgdG9Cb29sZWFuOiB0b0Jvb2xlYW4sXG4gICAgICAgIHRvTnVtYmVyOiB0b051bWJlcixcbiAgICAgICAgdG9GbG9hdDogdG9GbG9hdCxcbiAgICAgICAgdG9Ob2RlOiB0b05vZGUsXG4gICAgICAgIHRvTm9kZXM6IHRvTm9kZXMsXG4gICAgICAgIHRvTGlzdDogdG9MaXN0LFxuICAgICAgICB0b01zOiB0b01zLFxuICAgICAgICBzd2FwOiBzd2FwLFxuICAgICAgICBhc3NpZ246IGFzc2lnbixcbiAgICAgICAgZWFjaDogZWFjaCxcbiAgICAgICAgc29ydEJ5OiBzb3J0QnksXG4gICAgICAgIGNsYW1wOiBjbGFtcCxcbiAgICAgICAgbm9vcDogbm9vcCxcbiAgICAgICAgaW50ZXJzZWN0UmVjdDogaW50ZXJzZWN0UmVjdCxcbiAgICAgICAgcG9pbnRJblJlY3Q6IHBvaW50SW5SZWN0LFxuICAgICAgICBEaW1lbnNpb25zOiBEaW1lbnNpb25zLFxuICAgICAgICBNb3VzZVRyYWNrZXI6IE1vdXNlVHJhY2tlcixcbiAgICAgICAgbWVyZ2VPcHRpb25zOiBtZXJnZU9wdGlvbnMsXG4gICAgICAgIHBhcnNlT3B0aW9uczogcGFyc2VPcHRpb25zLFxuICAgICAgICBQbGF5ZXI6IFBsYXllcixcbiAgICAgICAgUHJvbWlzZTogUHJvbWlzZSQxLFxuICAgICAgICBEZWZlcnJlZDogRGVmZXJyZWQsXG4gICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgcXVlcnlBbGw6IHF1ZXJ5QWxsLFxuICAgICAgICBmaW5kOiBmaW5kLFxuICAgICAgICBmaW5kQWxsOiBmaW5kQWxsLFxuICAgICAgICBtYXRjaGVzOiBtYXRjaGVzLFxuICAgICAgICBjbG9zZXN0OiBjbG9zZXN0LFxuICAgICAgICBwYXJlbnRzOiBwYXJlbnRzLFxuICAgICAgICBlc2NhcGU6IGVzY2FwZSxcbiAgICAgICAgY3NzOiBjc3MsXG4gICAgICAgIGdldFN0eWxlczogZ2V0U3R5bGVzLFxuICAgICAgICBnZXRTdHlsZTogZ2V0U3R5bGUsXG4gICAgICAgIGdldENzc1ZhcjogZ2V0Q3NzVmFyLFxuICAgICAgICBwcm9wTmFtZTogcHJvcE5hbWUsXG4gICAgICAgIGlzVG91Y2g6IGlzVG91Y2gsXG4gICAgICAgIGdldFBvczogZ2V0UG9zJDFcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNvbXBvbmVudEFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgREFUQSA9IFVJa2l0LmRhdGE7XG5cbiAgICAgICAgdmFyIGNvbXBvbmVudHMgPSB7fTtcblxuICAgICAgICBVSWtpdC5jb21wb25lbnQgPSBmdW5jdGlvbiAobmFtZSwgb3B0aW9ucykge1xuXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGNvbXBvbmVudHNbbmFtZV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHNbbmFtZV0gPSBVSWtpdC5leHRlbmQoY29tcG9uZW50c1tuYW1lXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHNbbmFtZV07XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgVUlraXRbbmFtZV0gPSBmdW5jdGlvbiAoZWxlbWVudCwgZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgIHZhciBpID0gYXJndW1lbnRzLmxlbmd0aCwgYXJnc0FycmF5ID0gQXJyYXkoaSk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSBhcmdzQXJyYXlbaV0gPSBhcmd1bWVudHNbaV07XG5cblxuICAgICAgICAgICAgICAgIHZhciBjb21wb25lbnQgPSBVSWtpdC5jb21wb25lbnQobmFtZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGNvbXBvbmVudCh7ZGF0YTogZWxlbWVudH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQub3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgY29tcG9uZW50KHtkYXRhOiBbXS5jb25jYXQoIGFyZ3NBcnJheSApfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQgJiYgZWxlbWVudC5ub2RlVHlwZSA/IGluaXQoZWxlbWVudCkgOiAkJChlbGVtZW50KS5tYXAoaW5pdClbMF07XG5cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbml0KGVsZW1lbnQpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBVSWtpdC5nZXRDb21wb25lbnQoZWxlbWVudCwgbmFtZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlLiRkZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IGNvbXBvbmVudCh7ZWw6IGVsZW1lbnQsIGRhdGE6IGRhdGEkJDF9KTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmFyIG9wdCA9IGlzUGxhaW5PYmplY3Qob3B0aW9ucykgPyBhc3NpZ24oe30sIG9wdGlvbnMpIDogb3B0aW9ucy5vcHRpb25zO1xuXG4gICAgICAgICAgICBvcHQubmFtZSA9IG5hbWU7XG5cbiAgICAgICAgICAgIGlmIChvcHQuaW5zdGFsbCkge1xuICAgICAgICAgICAgICAgIG9wdC5pbnN0YWxsKFVJa2l0LCBvcHQsIG5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoVUlraXQuX2luaXRpYWxpemVkICYmICFvcHQuZnVuY3Rpb25hbCkge1xuICAgICAgICAgICAgICAgIHZhciBpZCA9IGh5cGhlbmF0ZShuYW1lKTtcbiAgICAgICAgICAgICAgICBmYXN0ZG9tLnJlYWQoZnVuY3Rpb24gKCkgeyByZXR1cm4gVUlraXRbbmFtZV0oKFwiW3VrLVwiICsgaWQgKyBcIl0sW2RhdGEtdWstXCIgKyBpZCArIFwiXVwiKSk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50c1tuYW1lXSA9IGlzUGxhaW5PYmplY3Qob3B0aW9ucykgPyBvcHQgOiBvcHRpb25zO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LmdldENvbXBvbmVudHMgPSBmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50W0RBVEFdIHx8IHt9OyB9O1xuICAgICAgICBVSWtpdC5nZXRDb21wb25lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgbmFtZSkgeyByZXR1cm4gVUlraXQuZ2V0Q29tcG9uZW50cyhlbGVtZW50KVtuYW1lXTsgfTtcblxuICAgICAgICBVSWtpdC5jb25uZWN0ID0gZnVuY3Rpb24gKG5vZGUpIHtcblxuICAgICAgICAgICAgaWYgKG5vZGVbREFUQV0pIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIG5vZGVbREFUQV0pIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZVtEQVRBXVtuYW1lXS5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIHZhciBuYW1lJDEgPSBnZXRDb21wb25lbnROYW1lKG5vZGUuYXR0cmlidXRlc1tpXS5uYW1lKTtcblxuICAgICAgICAgICAgICAgIGlmIChuYW1lJDEgJiYgbmFtZSQxIGluIGNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgVUlraXRbbmFtZSQxXShub2RlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LmRpc2Nvbm5lY3QgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBub2RlW0RBVEFdKSB7XG4gICAgICAgICAgICAgICAgbm9kZVtEQVRBXVtuYW1lXS5fY2FsbERpc2Nvbm5lY3RlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZShhdHRyaWJ1dGUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0c1dpdGgoYXR0cmlidXRlLCAndWstJykgfHwgc3RhcnRzV2l0aChhdHRyaWJ1dGUsICdkYXRhLXVrLScpXG4gICAgICAgICAgICA/IGNhbWVsaXplKGF0dHJpYnV0ZS5yZXBsYWNlKCdkYXRhLXVrLScsICcnKS5yZXBsYWNlKCd1ay0nLCAnJykpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJvb3QgKFVJa2l0KSB7XG5cbiAgICAgICAgdmFyIGNvbm5lY3QgPSBVSWtpdC5jb25uZWN0O1xuICAgICAgICB2YXIgZGlzY29ubmVjdCA9IFVJa2l0LmRpc2Nvbm5lY3Q7XG5cbiAgICAgICAgaWYgKCEoJ011dGF0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkb2N1bWVudC5ib2R5KSB7XG5cbiAgICAgICAgICAgIGluaXQoKTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAobmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgICAgIGluaXQoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pKS5vYnNlcnZlKGRvY3VtZW50LCB7Y2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlfSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7XG5cbiAgICAgICAgICAgIGFwcGx5JCQxKGRvY3VtZW50LmJvZHksIGNvbm5lY3QpO1xuXG4gICAgICAgICAgICBmYXN0ZG9tLmZsdXNoKCk7XG5cbiAgICAgICAgICAgIChuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25zKSB7IHJldHVybiBtdXRhdGlvbnMuZm9yRWFjaChhcHBseU11dGF0aW9uKTsgfSkpLm9ic2VydmUoZG9jdW1lbnQsIHtcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBVSWtpdC5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYXBwbHlNdXRhdGlvbihtdXRhdGlvbikge1xuXG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gbXV0YXRpb24udGFyZ2V0O1xuICAgICAgICAgICAgdmFyIHR5cGUgPSBtdXRhdGlvbi50eXBlO1xuXG4gICAgICAgICAgICB2YXIgdXBkYXRlID0gdHlwZSAhPT0gJ2F0dHJpYnV0ZXMnXG4gICAgICAgICAgICAgICAgPyBhcHBseUNoaWxkTGlzdChtdXRhdGlvbilcbiAgICAgICAgICAgICAgICA6IGFwcGx5QXR0cmlidXRlKG11dGF0aW9uKTtcblxuICAgICAgICAgICAgdXBkYXRlICYmIFVJa2l0LnVwZGF0ZSh0YXJnZXQpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhcHBseUF0dHJpYnV0ZShyZWYpIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSByZWYuYXR0cmlidXRlTmFtZTtcblxuXG4gICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PT0gJ2hyZWYnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShhdHRyaWJ1dGVOYW1lKTtcblxuICAgICAgICAgICAgaWYgKCFuYW1lIHx8ICEobmFtZSBpbiBVSWtpdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChoYXNBdHRyKHRhcmdldCwgYXR0cmlidXRlTmFtZSkpIHtcbiAgICAgICAgICAgICAgICBVSWtpdFtuYW1lXSh0YXJnZXQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gVUlraXQuZ2V0Q29tcG9uZW50KHRhcmdldCwgbmFtZSk7XG5cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuJGRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYXBwbHlDaGlsZExpc3QocmVmKSB7XG4gICAgICAgICAgICB2YXIgYWRkZWROb2RlcyA9IHJlZi5hZGRlZE5vZGVzO1xuICAgICAgICAgICAgdmFyIHJlbW92ZWROb2RlcyA9IHJlZi5yZW1vdmVkTm9kZXM7XG5cblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhZGRlZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkkJDEoYWRkZWROb2Rlc1tpXSwgY29ubmVjdCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGkkMSA9IDA7IGkkMSA8IHJlbW92ZWROb2Rlcy5sZW5ndGg7IGkkMSsrKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkkJDEocmVtb3ZlZE5vZGVzW2kkMV0sIGRpc2Nvbm5lY3QpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFwcGx5JCQxKG5vZGUsIGZuKSB7XG5cbiAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSAxIHx8IGhhc0F0dHIobm9kZSwgJ3VrLW5vLWJvb3QnKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm4obm9kZSk7XG4gICAgICAgICAgICBub2RlID0gbm9kZS5maXJzdEVsZW1lbnRDaGlsZDtcbiAgICAgICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSBub2RlLm5leHRFbGVtZW50U2libGluZztcbiAgICAgICAgICAgICAgICBhcHBseSQkMShub2RlLCBmbik7XG4gICAgICAgICAgICAgICAgbm9kZSA9IG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdsb2JhbEFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgREFUQSA9IFVJa2l0LmRhdGE7XG5cbiAgICAgICAgVUlraXQudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuXG4gICAgICAgICAgICBpZiAocGx1Z2luLmluc3RhbGxlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGx1Z2luLmNhbGwobnVsbCwgdGhpcyk7XG4gICAgICAgICAgICBwbHVnaW4uaW5zdGFsbGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4sIGNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29tcG9uZW50ID0gKGlzU3RyaW5nKGNvbXBvbmVudCkgPyBVSWtpdC5jb21wb25lbnQoY29tcG9uZW50KSA6IGNvbXBvbmVudCkgfHwgdGhpcztcbiAgICAgICAgICAgIG1peGluID0gbWVyZ2VPcHRpb25zKHt9LCBtaXhpbik7XG4gICAgICAgICAgICBtaXhpbi5taXhpbnMgPSBjb21wb25lbnQub3B0aW9ucy5taXhpbnM7XG4gICAgICAgICAgICBkZWxldGUgY29tcG9uZW50Lm9wdGlvbnMubWl4aW5zO1xuICAgICAgICAgICAgY29tcG9uZW50Lm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMobWl4aW4sIGNvbXBvbmVudC5vcHRpb25zKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5leHRlbmQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICAgICAgdmFyIFN1cGVyID0gdGhpcztcbiAgICAgICAgICAgIHZhciBTdWIgPSBmdW5jdGlvbiBVSWtpdENvbXBvbmVudCAob3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgICAgICAgICAgU3ViLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1YjtcbiAgICAgICAgICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFN1cGVyLm9wdGlvbnMsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICBTdWJbJ3N1cGVyJ10gPSBTdXBlcjtcbiAgICAgICAgICAgIFN1Yi5leHRlbmQgPSBTdXBlci5leHRlbmQ7XG5cbiAgICAgICAgICAgIHJldHVybiBTdWI7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQudXBkYXRlID0gZnVuY3Rpb24gKGVsZW1lbnQsIGUpIHtcblxuICAgICAgICAgICAgZSA9IGNyZWF0ZUV2ZW50KGUgfHwgJ3VwZGF0ZScpO1xuICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQgPyB0b05vZGUoZWxlbWVudCkgOiBkb2N1bWVudC5ib2R5O1xuXG4gICAgICAgICAgICBwYXRoKGVsZW1lbnQpLm1hcChmdW5jdGlvbiAoZWxlbWVudCkgeyByZXR1cm4gdXBkYXRlKGVsZW1lbnRbREFUQV0sIGUpOyB9KTtcbiAgICAgICAgICAgIGFwcGx5KGVsZW1lbnQsIGZ1bmN0aW9uIChlbGVtZW50KSB7IHJldHVybiB1cGRhdGUoZWxlbWVudFtEQVRBXSwgZSk7IH0pO1xuXG4gICAgICAgIH07XG5cbiAgICAgICAgdmFyIGNvbnRhaW5lcjtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFVJa2l0LCAnY29udGFpbmVyJywge1xuXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNldDogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9ICQoZWxlbWVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlKGRhdGEkJDEsIGUpIHtcblxuICAgICAgICAgICAgaWYgKCFkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YSQkMVtuYW1lXS5faXNSZWFkeSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW25hbWVdLl9jYWxsVXBkYXRlKGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcGF0aChlbGVtZW50KSB7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IFtdO1xuXG4gICAgICAgICAgICB3aGlsZSAoZWxlbWVudCAmJiBlbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5ICYmIGVsZW1lbnQucGFyZW50Tm9kZSkge1xuXG4gICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgICBwYXRoLnVuc2hpZnQoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhvb2tzQVBJIChVSWtpdCkge1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbEhvb2sgPSBmdW5jdGlvbiAoaG9vaykge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdmFyIGhhbmRsZXJzID0gdGhpcy4kb3B0aW9uc1tob29rXTtcblxuICAgICAgICAgICAgaWYgKGhhbmRsZXJzKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gaGFuZGxlci5jYWxsKHRoaXMkMSk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbENvbm5lY3RlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9jb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSB7fTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRQcm9wcygpO1xuXG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnYmVmb3JlQ29ubmVjdCcpO1xuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgdGhpcy5faW5pdEV2ZW50cygpO1xuICAgICAgICAgICAgdGhpcy5faW5pdE9ic2VydmVyKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdjb25uZWN0ZWQnKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1JlYWR5KSB7XG4gICAgICAgICAgICAgICAgcmVhZHkoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLl9jYWxsUmVhZHkoKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxVcGRhdGUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxEaXNjb25uZWN0ZWQgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jYWxsSG9vaygnYmVmb3JlRGlzY29ubmVjdCcpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fb2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl91bmJpbmRFdmVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdkaXNjb25uZWN0ZWQnKTtcblxuICAgICAgICAgICAgdGhpcy5fY29ubmVjdGVkID0gZmFsc2U7XG5cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2NhbGxSZWFkeSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzUmVhZHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2lzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ3JlYWR5Jyk7XG4gICAgICAgICAgICB0aGlzLl9yZXNldENvbXB1dGVkcygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsbFVwZGF0ZSgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fY2FsbFVwZGF0ZSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICBlID0gY3JlYXRlRXZlbnQoZSB8fCAndXBkYXRlJyk7XG5cbiAgICAgICAgICAgIHZhciB0eXBlID0gZS50eXBlO1xuXG4gICAgICAgICAgICBpZiAoaW5jbHVkZXMoWyd1cGRhdGUnLCAnbG9hZCcsICdyZXNpemUnXSwgdHlwZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXNldENvbXB1dGVkcygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgdXBkYXRlcyA9IHRoaXMuJG9wdGlvbnMudXBkYXRlO1xuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuX2ZyYW1lcztcbiAgICAgICAgICAgIHZhciByZWFkcyA9IHJlZi5yZWFkcztcbiAgICAgICAgICAgIHZhciB3cml0ZXMgPSByZWYud3JpdGVzO1xuXG4gICAgICAgICAgICBpZiAoIXVwZGF0ZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHVwZGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAocmVmLCBpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlYWQgPSByZWYucmVhZDtcbiAgICAgICAgICAgICAgICB2YXIgd3JpdGUgPSByZWYud3JpdGU7XG4gICAgICAgICAgICAgICAgdmFyIGV2ZW50cyA9IHJlZi5ldmVudHM7XG5cblxuICAgICAgICAgICAgICAgIGlmICh0eXBlICE9PSAndXBkYXRlJyAmJiAhaW5jbHVkZXMoZXZlbnRzLCB0eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHJlYWQgJiYgIWluY2x1ZGVzKGZhc3Rkb20ucmVhZHMsIHJlYWRzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICByZWFkc1tpXSA9IGZhc3Rkb20ucmVhZChmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzJDEuX2Nvbm5lY3RlZCAmJiByZWFkLmNhbGwodGhpcyQxLCB0aGlzJDEuX2RhdGEsIGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSBmYWxzZSAmJiB3cml0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rkb20uY2xlYXIod3JpdGVzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgd3JpdGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ24odGhpcyQxLl9kYXRhLCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlYWRzW2ldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAod3JpdGUgJiYgIWluY2x1ZGVzKGZhc3Rkb20ud3JpdGVzLCB3cml0ZXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHdyaXRlc1tpXSA9IGZhc3Rkb20ud3JpdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl9jb25uZWN0ZWQgJiYgd3JpdGUuY2FsbCh0aGlzJDEsIHRoaXMkMS5fZGF0YSwgZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgd3JpdGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGF0ZUFQSSAoVUlraXQpIHtcblxuICAgICAgICB2YXIgdWlkID0gMDtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICAgICAgICAgIG9wdGlvbnMuZGF0YSA9IG5vcm1hbGl6ZURhdGEob3B0aW9ucywgdGhpcy5jb25zdHJ1Y3Rvci5vcHRpb25zKTtcblxuICAgICAgICAgICAgdGhpcy4kb3B0aW9ucyA9IG1lcmdlT3B0aW9ucyh0aGlzLmNvbnN0cnVjdG9yLm9wdGlvbnMsIG9wdGlvbnMsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy4kZWwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy4kcHJvcHMgPSB7fTtcblxuICAgICAgICAgICAgdGhpcy5fZnJhbWVzID0ge3JlYWRzOiB7fSwgd3JpdGVzOiB7fX07XG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5fdWlkID0gdWlkKys7XG4gICAgICAgICAgICB0aGlzLl9pbml0RGF0YSgpO1xuICAgICAgICAgICAgdGhpcy5faW5pdE1ldGhvZHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2luaXRDb21wdXRlZHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdjcmVhdGVkJyk7XG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kbW91bnQob3B0aW9ucy5lbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0RGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSByZWYuZGF0YTsgaWYgKCBkYXRhJCQxID09PSB2b2lkIDAgKSBkYXRhJCQxID0ge307XG5cbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgdGhpcyQxLiRwcm9wc1trZXldID0gdGhpcyQxW2tleV0gPSBkYXRhJCQxW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0TWV0aG9kcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIG1ldGhvZHMgPSByZWYubWV0aG9kcztcblxuICAgICAgICAgICAgaWYgKG1ldGhvZHMpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbWV0aG9kcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IGJpbmQobWV0aG9kc1trZXldLCB0aGlzJDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX2luaXRDb21wdXRlZHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBjb21wdXRlZCA9IHJlZi5jb21wdXRlZDtcblxuICAgICAgICAgICAgdGhpcy5fcmVzZXRDb21wdXRlZHMoKTtcblxuICAgICAgICAgICAgaWYgKGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyQ29tcHV0ZWQodGhpcyQxLCBrZXksIGNvbXB1dGVkW2tleV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuX3Jlc2V0Q29tcHV0ZWRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY29tcHV0ZWRzID0ge307XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0UHJvcHMgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciBrZXk7XG5cbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q29tcHV0ZWRzKCk7XG5cbiAgICAgICAgICAgIHByb3BzID0gcHJvcHMgfHwgZ2V0UHJvcHModGhpcy4kb3B0aW9ucywgdGhpcy4kbmFtZSk7XG5cbiAgICAgICAgICAgIGZvciAoa2V5IGluIHByb3BzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1VuZGVmaW5lZChwcm9wc1trZXldKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHByb3BzW2tleV0gPSBwcm9wc1trZXldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGV4Y2x1ZGUgPSBbdGhpcy4kb3B0aW9ucy5jb21wdXRlZCwgdGhpcy4kb3B0aW9ucy5tZXRob2RzXTtcbiAgICAgICAgICAgIGZvciAoa2V5IGluIHRoaXMkMS4kcHJvcHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5IGluIHByb3BzICYmIG5vdEluKGV4Y2x1ZGUsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxW2tleV0gPSB0aGlzJDEuJHByb3BzW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5faW5pdEV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLiRvcHRpb25zO1xuICAgICAgICAgICAgdmFyIGV2ZW50cyA9IHJlZi5ldmVudHM7XG5cbiAgICAgICAgICAgIGlmIChldmVudHMpIHtcblxuICAgICAgICAgICAgICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzT3duKGV2ZW50LCAnaGFuZGxlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50KHRoaXMkMSwgZXZlbnRba2V5XSwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRXZlbnQodGhpcyQxLCBldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS5fdW5iaW5kRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKHVuYmluZCkgeyByZXR1cm4gdW5iaW5kKCk7IH0pO1xuICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gW107XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLl9pbml0T2JzZXJ2ZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBhdHRycyA9IHJlZi5hdHRycztcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZi5wcm9wcztcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIGlmICh0aGlzLl9vYnNlcnZlciB8fCAhcHJvcHMgfHwgIWF0dHJzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhdHRycyA9IGlzQXJyYXkoYXR0cnMpID8gYXR0cnMgOiBPYmplY3Qua2V5cyhwcm9wcykubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGh5cGhlbmF0ZShrZXkpOyB9KTtcblxuICAgICAgICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZGF0YSQkMSA9IGdldFByb3BzKHRoaXMkMS4kb3B0aW9ucywgdGhpcyQxLiRuYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAoYXR0cnMuc29tZShmdW5jdGlvbiAoa2V5KSB7IHJldHVybiAhaXNVbmRlZmluZWQoZGF0YSQkMVtrZXldKSAmJiBkYXRhJCQxW2tleV0gIT09IHRoaXMkMS4kcHJvcHNba2V5XTsgfSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiRyZXNldCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUoZWwsIHthdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IGF0dHJzLmNvbmNhdChbdGhpcy4kbmFtZSwgKFwiZGF0YS1cIiArICh0aGlzLiRuYW1lKSldKX0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldFByb3BzKG9wdHMsIG5hbWUpIHtcblxuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSB7fTtcbiAgICAgICAgICAgIHZhciBhcmdzID0gb3B0cy5hcmdzOyBpZiAoIGFyZ3MgPT09IHZvaWQgMCApIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IG9wdHMucHJvcHM7IGlmICggcHJvcHMgPT09IHZvaWQgMCApIHByb3BzID0ge307XG4gICAgICAgICAgICB2YXIgZWwgPSBvcHRzLmVsO1xuXG4gICAgICAgICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0F0dHIoZWwsIHByb3ApKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gY29lcmNlKHByb3BzW2tleV0sIGF0dHIoZWwsIHByb3ApKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcCA9PT0gJ3RhcmdldCcgJiYgKCF2YWx1ZSB8fCBzdGFydHNXaXRoKHZhbHVlLCAnXycpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBvcHRpb25zID0gcGFyc2VPcHRpb25zKGRhdGEoZWwsIG5hbWUpLCBhcmdzKTtcblxuICAgICAgICAgICAgZm9yICh2YXIga2V5JDEgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHZhciBwcm9wJDEgPSBjYW1lbGl6ZShrZXkkMSk7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzW3Byb3AkMV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW3Byb3AkMV0gPSBjb2VyY2UocHJvcHNbcHJvcCQxXSwgb3B0aW9uc1trZXkkMV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZWdpc3RlckNvbXB1dGVkKGNvbXBvbmVudCwga2V5LCBjYikge1xuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbXBvbmVudCwga2V5LCB7XG5cbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgX2NvbXB1dGVkcyA9IGNvbXBvbmVudC5fY29tcHV0ZWRzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgJHByb3BzID0gY29tcG9uZW50LiRwcm9wcztcbiAgICAgICAgICAgICAgICAgICAgdmFyICRlbCA9IGNvbXBvbmVudC4kZWw7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNPd24oX2NvbXB1dGVkcywga2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2NvbXB1dGVkc1trZXldID0gY2IuY2FsbChjb21wb25lbnQsICRwcm9wcywgJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcHV0ZWRzW2tleV07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Ll9jb21wdXRlZHNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50KGNvbXBvbmVudCwgZXZlbnQsIGtleSkge1xuXG4gICAgICAgICAgICBpZiAoIWlzUGxhaW5PYmplY3QoZXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQgPSAoe25hbWU6IGtleSwgaGFuZGxlcjogZXZlbnR9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG5hbWUgPSBldmVudC5uYW1lO1xuICAgICAgICAgICAgdmFyIGVsID0gZXZlbnQuZWw7XG4gICAgICAgICAgICB2YXIgaGFuZGxlciA9IGV2ZW50LmhhbmRsZXI7XG4gICAgICAgICAgICB2YXIgY2FwdHVyZSA9IGV2ZW50LmNhcHR1cmU7XG4gICAgICAgICAgICB2YXIgZGVsZWdhdGUgPSBldmVudC5kZWxlZ2F0ZTtcbiAgICAgICAgICAgIHZhciBmaWx0ZXIkJDEgPSBldmVudC5maWx0ZXI7XG4gICAgICAgICAgICB2YXIgc2VsZiA9IGV2ZW50LnNlbGY7XG4gICAgICAgICAgICBlbCA9IGlzRnVuY3Rpb24oZWwpXG4gICAgICAgICAgICAgICAgPyBlbC5jYWxsKGNvbXBvbmVudClcbiAgICAgICAgICAgICAgICA6IGVsIHx8IGNvbXBvbmVudC4kZWw7XG5cbiAgICAgICAgICAgIGlmIChpc0FycmF5KGVsKSkge1xuICAgICAgICAgICAgICAgIGVsLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiByZWdpc3RlckV2ZW50KGNvbXBvbmVudCwgYXNzaWduKHt9LCBldmVudCwge2VsOiBlbH0pLCBrZXkpOyB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZWwgfHwgZmlsdGVyJCQxICYmICFmaWx0ZXIkJDEuY2FsbChjb21wb25lbnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBoYW5kbGVyID0gZGV0YWlsKGlzU3RyaW5nKGhhbmRsZXIpID8gY29tcG9uZW50W2hhbmRsZXJdIDogYmluZChoYW5kbGVyLCBjb21wb25lbnQpKTtcblxuICAgICAgICAgICAgaWYgKHNlbGYpIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVyID0gc2VsZkZpbHRlcihoYW5kbGVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29tcG9uZW50Ll9ldmVudHMucHVzaChcbiAgICAgICAgICAgICAgICBvbihcbiAgICAgICAgICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICFkZWxlZ2F0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGlzU3RyaW5nKGRlbGVnYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZGVsZWdhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRlbGVnYXRlLmNhbGwoY29tcG9uZW50KSxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcixcbiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNlbGZGaWx0ZXIoaGFuZGxlcikge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNlbGZIYW5kbGVyKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgPT09IGUuY3VycmVudFRhcmdldCB8fCBlLnRhcmdldCA9PT0gZS5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLmNhbGwobnVsbCwgZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG5vdEluKG9wdGlvbnMsIGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZXZlcnkoZnVuY3Rpb24gKGFycikgeyByZXR1cm4gIWFyciB8fCAhaGFzT3duKGFyciwga2V5KTsgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBkZXRhaWwobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gaXNBcnJheShlLmRldGFpbCkgPyBsaXN0ZW5lci5hcHBseSh2b2lkIDAsIFtlXS5jb25jYXQoZS5kZXRhaWwpKSA6IGxpc3RlbmVyKGUpOyB9O1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY29lcmNlKHR5cGUsIHZhbHVlKSB7XG5cbiAgICAgICAgICAgIGlmICh0eXBlID09PSBCb29sZWFuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvQm9vbGVhbih2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IE51bWJlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdsaXN0Jykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b0xpc3QodmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbWVkaWEnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRvTWVkaWEodmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdHlwZSA/IHR5cGUodmFsdWUpIDogdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiB0b01lZGlhKHZhbHVlKSB7XG5cbiAgICAgICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWVbMF0gPT09ICdAJykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IFwibWVkaWEtXCIgKyAodmFsdWUuc3Vic3RyKDEpKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0b0Zsb2F0KGdldENzc1ZhcihuYW1lKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICYmICFpc05hTih2YWx1ZSkgPyAoXCIobWluLXdpZHRoOiBcIiArIHZhbHVlICsgXCJweClcIikgOiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZURhdGEocmVmLCByZWYkMSkge1xuICAgICAgICAgICAgdmFyIGRhdGEkJDEgPSByZWYuZGF0YTtcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIHZhciBhcmdzID0gcmVmJDEuYXJncztcbiAgICAgICAgICAgIHZhciBwcm9wcyA9IHJlZiQxLnByb3BzOyBpZiAoIHByb3BzID09PSB2b2lkIDAgKSBwcm9wcyA9IHt9O1xuXG4gICAgICAgICAgICBkYXRhJCQxID0gaXNBcnJheShkYXRhJCQxKVxuICAgICAgICAgICAgICAgID8gYXJncyAmJiBhcmdzLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGRhdGEkJDEuc2xpY2UoMCwgYXJncy5sZW5ndGgpLnJlZHVjZShmdW5jdGlvbiAoZGF0YSQkMSwgdmFsdWUsIGluZGV4JCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ24oZGF0YSQkMSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxW2FyZ3NbaW5kZXgkJDFdXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgICAgICAgICAgICAgIH0sIHt9KVxuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIDogZGF0YSQkMTtcblxuICAgICAgICAgICAgaWYgKGRhdGEkJDEpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQoZGF0YSQkMVtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGEkJDFba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDFba2V5XSA9IHByb3BzW2tleV0gPyBjb2VyY2UocHJvcHNba2V5XSwgZGF0YSQkMVtrZXldLCBlbCkgOiBkYXRhJCQxW2tleV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFuY2VBUEkgKFVJa2l0KSB7XG5cbiAgICAgICAgdmFyIERBVEEgPSBVSWtpdC5kYXRhO1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kbW91bnQgPSBmdW5jdGlvbiAoZWwpIHtcblxuICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IHJlZi5uYW1lO1xuXG4gICAgICAgICAgICBpZiAoIWVsW0RBVEFdKSB7XG4gICAgICAgICAgICAgICAgZWxbREFUQV0gPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVsW0RBVEFdW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBlbFtEQVRBXVtuYW1lXSA9IHRoaXM7XG5cbiAgICAgICAgICAgIHRoaXMuJGVsID0gdGhpcy4kb3B0aW9ucy5lbCA9IHRoaXMuJG9wdGlvbnMuZWwgfHwgZWw7XG5cbiAgICAgICAgICAgIHRoaXMuX2NhbGxIb29rKCdpbml0Jyk7XG5cbiAgICAgICAgICAgIGlmICh3aXRoaW4oZWwsIGRvY3VtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxDb25uZWN0ZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJGVtaXQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgdGhpcy5fY2FsbFVwZGF0ZShlKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5wcm90b3R5cGUuJHJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy5fY2FsbERpc2Nvbm5lY3RlZCgpO1xuICAgICAgICAgICAgdGhpcy5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kZGVzdHJveSA9IGZ1bmN0aW9uIChyZW1vdmVFbCkge1xuICAgICAgICAgICAgaWYgKCByZW1vdmVFbCA9PT0gdm9pZCAwICkgcmVtb3ZlRWwgPSBmYWxzZTtcblxuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kb3B0aW9ucztcbiAgICAgICAgICAgIHZhciBlbCA9IHJlZi5lbDtcbiAgICAgICAgICAgIHZhciBuYW1lID0gcmVmLm5hbWU7XG5cbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxEaXNjb25uZWN0ZWQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fY2FsbEhvb2soJ2Rlc3Ryb3knKTtcblxuICAgICAgICAgICAgaWYgKCFlbCB8fCAhZWxbREFUQV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlbGV0ZSBlbFtEQVRBXVtuYW1lXTtcblxuICAgICAgICAgICAgaWYgKCFPYmplY3Qua2V5cyhlbFtEQVRBXSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGVsW0RBVEFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVtb3ZlRWwpIHtcbiAgICAgICAgICAgICAgICByZW1vdmUodGhpcy4kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kY3JlYXRlID0gZnVuY3Rpb24gKGNvbXBvbmVudCwgZWxlbWVudCwgZGF0YSQkMSkge1xuICAgICAgICAgICAgcmV0dXJuIFVJa2l0W2NvbXBvbmVudF0oZWxlbWVudCwgZGF0YSQkMSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgVUlraXQucHJvdG90eXBlLiR1cGRhdGUgPSBVSWtpdC51cGRhdGU7XG4gICAgICAgIFVJa2l0LnByb3RvdHlwZS4kZ2V0Q29tcG9uZW50ID0gVUlraXQuZ2V0Q29tcG9uZW50O1xuXG4gICAgICAgIHZhciBuYW1lcyA9IHt9O1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhVSWtpdC5wcm90b3R5cGUsIHtcblxuICAgICAgICAgICAgJGNvbnRhaW5lcjogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihVSWtpdCwgJ2NvbnRhaW5lcicpLFxuXG4gICAgICAgICAgICAkbmFtZToge1xuXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuJG9wdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gcmVmLm5hbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFuYW1lc1tuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNbbmFtZV0gPSBVSWtpdC5wcmVmaXggKyBoeXBoZW5hdGUobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZXNbbmFtZV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICB2YXIgVUlraXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICB0aGlzLl9pbml0KG9wdGlvbnMpO1xuICAgIH07XG5cbiAgICBVSWtpdC51dGlsID0gdXRpbDtcbiAgICBVSWtpdC5kYXRhID0gJ19fdWlraXRfXyc7XG4gICAgVUlraXQucHJlZml4ID0gJ3VrLSc7XG4gICAgVUlraXQub3B0aW9ucyA9IHt9O1xuXG4gICAgZ2xvYmFsQVBJKFVJa2l0KTtcbiAgICBob29rc0FQSShVSWtpdCk7XG4gICAgc3RhdGVBUEkoVUlraXQpO1xuICAgIGNvbXBvbmVudEFQSShVSWtpdCk7XG4gICAgaW5zdGFuY2VBUEkoVUlraXQpO1xuXG4gICAgdmFyIENsYXNzID0ge1xuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy4kbmFtZSk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgVG9nZ2xhYmxlID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjbHM6IEJvb2xlYW4sXG4gICAgICAgICAgICBhbmltYXRpb246ICdsaXN0JyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBOdW1iZXIsXG4gICAgICAgICAgICBvcmlnaW46IFN0cmluZyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246IFN0cmluZyxcbiAgICAgICAgICAgIHF1ZXVlZDogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNsczogZmFsc2UsXG4gICAgICAgICAgICBhbmltYXRpb246IFtmYWxzZV0sXG4gICAgICAgICAgICBkdXJhdGlvbjogMjAwLFxuICAgICAgICAgICAgb3JpZ2luOiBmYWxzZSxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICdsaW5lYXInLFxuICAgICAgICAgICAgcXVldWVkOiBmYWxzZSxcblxuICAgICAgICAgICAgaW5pdFByb3BzOiB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICcnLFxuICAgICAgICAgICAgICAgIGhlaWdodDogJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZ1RvcDogJycsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogJycsXG4gICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnJyxcbiAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206ICcnXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlUHJvcHM6IHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgICAgICAgIHBhZGRpbmdUb3A6IDAsXG4gICAgICAgICAgICAgICAgcGFkZGluZ0JvdHRvbTogMCxcbiAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IDAsXG4gICAgICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAwXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBoYXNBbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICEhYW5pbWF0aW9uWzBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaGFzVHJhbnNpdGlvbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFuaW1hdGlvbiA9IHJlZi5hbmltYXRpb247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5oYXNBbmltYXRpb24gJiYgYW5pbWF0aW9uWzBdID09PSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB0b2dnbGVFbGVtZW50OiBmdW5jdGlvbih0YXJnZXRzLCBzaG93LCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldHMgPSB0b05vZGVzKHRhcmdldHMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhbGwgPSBmdW5jdGlvbiAodGFyZ2V0cykgeyByZXR1cm4gUHJvbWlzZSQxLmFsbCh0YXJnZXRzLm1hcChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5fdG9nZ2xlRWxlbWVudChlbCwgc2hvdywgYW5pbWF0ZSQkMSk7IH0pKTsgfTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRvZ2dsZWQgPSB0YXJnZXRzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5pc1RvZ2dsZWQoZWwpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVudG9nZ2xlZCA9IHRhcmdldHMuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIWluY2x1ZGVzKHRvZ2dsZWQsIGVsKTsgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHA7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEucXVldWVkIHx8ICFpc1VuZGVmaW5lZChhbmltYXRlJCQxKSB8fCAhaXNVbmRlZmluZWQoc2hvdykgfHwgIXRoaXMkMS5oYXNBbmltYXRpb24gfHwgdGFyZ2V0cy5sZW5ndGggPCAyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhbGwodW50b2dnbGVkLmNvbmNhdCh0b2dnbGVkKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbCA9IGJvZHkuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsID0gdG9nZ2xlZFswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpblByb2dyZXNzID0gQW5pbWF0aW9uLmluUHJvZ3Jlc3MoZWwpICYmIGhhc0NsYXNzKGVsLCAndWstYW5pbWF0aW9uLWxlYXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgVHJhbnNpdGlvbi5pblByb2dyZXNzKGVsKSAmJiBlbC5zdHlsZS5oZWlnaHQgPT09ICcwcHgnO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBwID0gYWxsKHRvZ2dsZWQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcC50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBhbGwodW50b2dnbGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keS5zY3JvbGxUb3AgPSBzY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwLnRoZW4ocmVzb2x2ZSwgbm9vcCk7XG5cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRvZ2dsZU5vdzogZnVuY3Rpb24odGFyZ2V0cywgc2hvdykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIFByb21pc2UkMS5hbGwodG9Ob2Rlcyh0YXJnZXRzKS5tYXAoZnVuY3Rpb24gKGVsKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZUVsZW1lbnQoZWwsIHNob3csIGZhbHNlKTsgfSkpLnRoZW4ocmVzb2x2ZSwgbm9vcCk7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXNUb2dnbGVkOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIHZhciBub2RlcyA9IHRvTm9kZXMoZWwgfHwgdGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsc1xuICAgICAgICAgICAgICAgICAgICA/IGhhc0NsYXNzKG5vZGVzLCB0aGlzLmNscy5zcGxpdCgnICcpWzBdKVxuICAgICAgICAgICAgICAgICAgICA6ICFoYXNBdHRyKG5vZGVzLCAnaGlkZGVuJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGVBcmlhOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNscyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgYXR0cihlbCwgJ2FyaWEtaGlkZGVuJywgIXRoaXMuaXNUb2dnbGVkKGVsKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUVsZW1lbnQ6IGZ1bmN0aW9uKGVsLCBzaG93LCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHNob3cgPSBpc0Jvb2xlYW4oc2hvdylcbiAgICAgICAgICAgICAgICAgICAgPyBzaG93XG4gICAgICAgICAgICAgICAgICAgIDogQW5pbWF0aW9uLmluUHJvZ3Jlc3MoZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhc0NsYXNzKGVsLCAndWstYW5pbWF0aW9uLWxlYXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogVHJhbnNpdGlvbi5pblByb2dyZXNzKGVsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZWwuc3R5bGUuaGVpZ2h0ID09PSAnMHB4J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIXRoaXMuaXNUb2dnbGVkKGVsKTtcblxuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcihlbCwgKFwiYmVmb3JlXCIgKyAoc2hvdyA/ICdzaG93JyA6ICdoaWRlJykpLCBbdGhpc10pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVqZWN0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHByb21pc2UgPSAoYW5pbWF0ZSQkMSA9PT0gZmFsc2UgfHwgIXRoaXMuaGFzQW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5fdG9nZ2xlSW1tZWRpYXRlXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5oYXNUcmFuc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX3RvZ2dsZUhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl90b2dnbGVBbmltYXRpb25cbiAgICAgICAgICAgICAgICApKGVsLCBzaG93KTtcblxuICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsIHNob3cgPyAnc2hvdycgOiAnaGlkZScsIFt0aGlzXSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihlbCwgc2hvdyA/ICdzaG93bicgOiAnaGlkZGVuJywgW3RoaXMkMV0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZShlbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlOiBmdW5jdGlvbihlbCwgdG9nZ2xlZCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCFlbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGNoYW5nZWQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBpbmNsdWRlcyh0aGlzLmNscywgJyAnKSB8fCBCb29sZWFuKHRvZ2dsZWQpICE9PSBoYXNDbGFzcyhlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIHRvZ2dsZUNsYXNzKGVsLCB0aGlzLmNscywgaW5jbHVkZXModGhpcy5jbHMsICcgJykgPyB1bmRlZmluZWQgOiB0b2dnbGVkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gQm9vbGVhbih0b2dnbGVkKSA9PT0gaGFzQXR0cihlbCwgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkICYmIGF0dHIoZWwsICdoaWRkZW4nLCAhdG9nZ2xlZCA/ICcnIDogbnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJCQoJ1thdXRvZm9jdXNdJywgZWwpLnNvbWUoZnVuY3Rpb24gKGVsKSB7IHJldHVybiBpc1Zpc2libGUoZWwpICYmIChlbC5mb2N1cygpIHx8IHRydWUpOyB9KTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYShlbCk7XG4gICAgICAgICAgICAgICAgY2hhbmdlZCAmJiB0aGlzLiR1cGRhdGUoZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUltbWVkaWF0ZTogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGUoZWwsIHNob3cpO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUhlaWdodDogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIGluUHJvZ3Jlc3MgPSBUcmFuc2l0aW9uLmluUHJvZ3Jlc3MoZWwpO1xuICAgICAgICAgICAgICAgIHZhciBpbm5lciA9IGVsLmhhc0NoaWxkTm9kZXMgPyB0b0Zsb2F0KGNzcyhlbC5maXJzdEVsZW1lbnRDaGlsZCwgJ21hcmdpblRvcCcpKSArIHRvRmxvYXQoY3NzKGVsLmxhc3RFbGVtZW50Q2hpbGQsICdtYXJnaW5Cb3R0b20nKSkgOiAwO1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50SGVpZ2h0ID0gaXNWaXNpYmxlKGVsKSA/IGhlaWdodChlbCkgKyAoaW5Qcm9ncmVzcyA/IDAgOiBpbm5lcikgOiAwO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwoZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzVG9nZ2xlZChlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9nZ2xlKGVsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQoZWwsICcnKTtcblxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBjaGlsZCBjb21wb25lbnRzIGZpcnN0XG4gICAgICAgICAgICAgICAgZmFzdGRvbS5mbHVzaCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGVuZEhlaWdodCA9IGhlaWdodChlbCkgKyAoaW5Qcm9ncmVzcyA/IDAgOiBpbm5lcik7XG4gICAgICAgICAgICAgICAgaGVpZ2h0KGVsLCBjdXJyZW50SGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoc2hvd1xuICAgICAgICAgICAgICAgICAgICA/IFRyYW5zaXRpb24uc3RhcnQoZWwsIGFzc2lnbih7fSwgdGhpcy5pbml0UHJvcHMsIHtvdmVyZmxvdzogJ2hpZGRlbicsIGhlaWdodDogZW5kSGVpZ2h0fSksIE1hdGgucm91bmQodGhpcy5kdXJhdGlvbiAqICgxIC0gY3VycmVudEhlaWdodCAvIGVuZEhlaWdodCkpLCB0aGlzLnRyYW5zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgIDogVHJhbnNpdGlvbi5zdGFydChlbCwgdGhpcy5oaWRlUHJvcHMsIE1hdGgucm91bmQodGhpcy5kdXJhdGlvbiAqIChjdXJyZW50SGVpZ2h0IC8gZW5kSGVpZ2h0KSksIHRoaXMudHJhbnNpdGlvbikudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzJDEuX3RvZ2dsZShlbCwgZmFsc2UpOyB9KVxuICAgICAgICAgICAgICAgICkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBjc3MoZWwsIHRoaXMkMS5pbml0UHJvcHMpOyB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RvZ2dsZUFuaW1hdGlvbjogZnVuY3Rpb24oZWwsIHNob3cpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbChlbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2hvdykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2dnbGUoZWwsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gQW5pbWF0aW9uLmluKGVsLCB0aGlzLmFuaW1hdGlvblswXSwgdGhpcy5kdXJhdGlvbiwgdGhpcy5vcmlnaW4pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBBbmltYXRpb24ub3V0KGVsLCB0aGlzLmFuaW1hdGlvblsxXSB8fCB0aGlzLmFuaW1hdGlvblswXSwgdGhpcy5kdXJhdGlvbiwgdGhpcy5vcmlnaW4pLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLl90b2dnbGUoZWwsIGZhbHNlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBBY2NvcmRpb24gPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFRvZ2dsYWJsZV0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRhcmdldHM6IFN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2ZTogbnVsbCxcbiAgICAgICAgICAgIGNvbGxhcHNpYmxlOiBCb29sZWFuLFxuICAgICAgICAgICAgbXVsdGlwbGU6IEJvb2xlYW4sXG4gICAgICAgICAgICB0b2dnbGU6IFN0cmluZyxcbiAgICAgICAgICAgIGNvbnRlbnQ6IFN0cmluZyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldHM6ICc+IConLFxuICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogW3RydWVdLFxuICAgICAgICAgICAgY29sbGFwc2libGU6IHRydWUsXG4gICAgICAgICAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgICAgICAgICBjbHNPcGVuOiAndWstb3BlbicsXG4gICAgICAgICAgICB0b2dnbGU6ICc+IC51ay1hY2NvcmRpb24tdGl0bGUnLFxuICAgICAgICAgICAgY29udGVudDogJz4gLnVrLWFjY29yZGlvbi1jb250ZW50JyxcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICdlYXNlJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGl0ZW1zOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXRzID0gcmVmLnRhcmdldHM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGFyZ2V0cywgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh0aGlzLnRhcmdldHMpICsgXCIgXCIgKyAodGhpcy4kcHJvcHMudG9nZ2xlKSk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShpbmRleCgkJCgoKHRoaXMudGFyZ2V0cykgKyBcIiBcIiArICh0aGlzLiRwcm9wcy50b2dnbGUpKSwgdGhpcy4kZWwpLCBlLmN1cnJlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLml0ZW1zW051bWJlcih0aGlzLmFjdGl2ZSldO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiAhaGFzQ2xhc3MoYWN0aXZlLCB0aGlzLmNsc09wZW4pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGUoYWN0aXZlLCBmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRoaXMkMS5fdG9nZ2xlSW1tZWRpYXRlKCQodGhpcyQxLmNvbnRlbnQsIGVsKSwgaGFzQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuKSk7IH0pO1xuXG4gICAgICAgICAgICB2YXIgYWN0aXZlID0gIXRoaXMuY29sbGFwc2libGUgJiYgIWhhc0NsYXNzKHRoaXMuaXRlbXMsIHRoaXMuY2xzT3BlbikgJiYgdGhpcy5pdGVtc1swXTtcbiAgICAgICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZShhY3RpdmUsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZTogZnVuY3Rpb24oaXRlbSwgYW5pbWF0ZSQkMSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSBnZXRJbmRleChpdGVtLCB0aGlzLml0ZW1zKTtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gZmlsdGVyKHRoaXMuaXRlbXMsIChcIi5cIiArICh0aGlzLmNsc09wZW4pKSk7XG5cbiAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtc1tpbmRleCQkMV07XG5cbiAgICAgICAgICAgICAgICBpdGVtICYmIFtpdGVtXVxuICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCF0aGlzLm11bHRpcGxlICYmICFpbmNsdWRlcyhhY3RpdmUsIGl0ZW0pICYmIGFjdGl2ZSB8fCBbXSlcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc0l0ZW0gPSBlbCA9PT0gaXRlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZSA9IGlzSXRlbSAmJiAhaGFzQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSAmJiBpc0l0ZW0gJiYgIXRoaXMkMS5jb2xsYXBzaWJsZSAmJiBhY3RpdmUubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbHNPcGVuLCBzdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50ID0gZWwuX3dyYXBwZXIgPyBlbC5fd3JhcHBlci5maXJzdEVsZW1lbnRDaGlsZCA6ICQodGhpcyQxLmNvbnRlbnQsIGVsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbC5fd3JhcHBlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsLl93cmFwcGVyID0gd3JhcEFsbChjb250ZW50LCAnPGRpdj4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyKGVsLl93cmFwcGVyLCAnaGlkZGVuJywgc3RhdGUgPyAnJyA6IG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RvZ2dsZUltbWVkaWF0ZShjb250ZW50LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGVFbGVtZW50KGVsLl93cmFwcGVyLCBzdGF0ZSwgYW5pbWF0ZSQkMSkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0NsYXNzKGVsLCB0aGlzJDEuY2xzT3BlbikgPT09IHN0YXRlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLl90b2dnbGVJbW1lZGlhdGUoY29udGVudCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWwuX3dyYXBwZXIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXAoY29udGVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBBbGVydCA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgVG9nZ2xhYmxlXSxcblxuICAgICAgICBhcmdzOiAnYW5pbWF0aW9uJyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2xvc2U6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogW3RydWVdLFxuICAgICAgICAgICAgc2VsQ2xvc2U6ICcudWstYWxlcnQtY2xvc2UnLFxuICAgICAgICAgICAgZHVyYXRpb246IDE1MCxcbiAgICAgICAgICAgIGhpZGVQcm9wczogYXNzaWduKHtvcGFjaXR5OiAwfSwgVG9nZ2xhYmxlLmRhdGEuaGlkZVByb3BzKVxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZWxDbG9zZTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMuJGVsKS50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS4kZGVzdHJveSh0cnVlKTsgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIENvcmUgKFVJa2l0KSB7XG5cbiAgICAgICAgcmVhZHkoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICB2YXIgc2Nyb2xsID0gMDtcbiAgICAgICAgICAgIHZhciBzdGFydGVkID0gMDtcblxuICAgICAgICAgICAgb24od2luZG93LCAnbG9hZCByZXNpemUnLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gVUlraXQudXBkYXRlKG51bGwsIGUpOyB9KTtcbiAgICAgICAgICAgIG9uKHdpbmRvdywgJ3Njcm9sbCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgZS5kaXIgPSBzY3JvbGwgPD0gd2luZG93LnBhZ2VZT2Zmc2V0ID8gJ2Rvd24nIDogJ3VwJztcbiAgICAgICAgICAgICAgICBlLnBhZ2VZT2Zmc2V0ID0gc2Nyb2xsID0gd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgICAgIFVJa2l0LnVwZGF0ZShudWxsLCBlKTtcbiAgICAgICAgICAgIH0sIHtjYXB0dXJlOiB0cnVlLCBwYXNzaXZlOiBmYWxzZX0pO1xuXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2FuaW1hdGlvbnN0YXJ0JywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgaWYgKChjc3ModGFyZ2V0LCAnYW5pbWF0aW9uTmFtZScpIHx8ICcnKS5tYXRjaCgvXnVrLS4qKGxlZnR8cmlnaHQpLykpIHtcblxuICAgICAgICAgICAgICAgICAgICBzdGFydGVkKys7XG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5ib2R5LCAnb3ZlcmZsb3dYJywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghLS1zdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGRvY3VtZW50LmJvZHksICdvdmVyZmxvd1gnLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIHRvTXMoY3NzKHRhcmdldCwgJ2FuaW1hdGlvbkR1cmF0aW9uJykpICsgMTAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKCFoYXNUb3VjaCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIGNscyA9ICd1ay1ob3Zlcic7XG5cbiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAndGFwJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCQoKFwiLlwiICsgY2xzKSkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuICF3aXRoaW4odGFyZ2V0LCBlbCkgJiYgcmVtb3ZlQ2xhc3MoZWwsIGNscyk7IH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFVJa2l0LCAnaG92ZXJTZWxlY3RvcicsIHtcblxuICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgb24oZG9jdW1lbnQsICd0YXAnLCBzZWxlY3RvciwgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZENsYXNzKGN1cnJlbnQsIGNscyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIFVJa2l0LmhvdmVyU2VsZWN0b3IgPSAnLnVrLWFuaW1hdGlvbi10b2dnbGUsIC51ay10cmFuc2l0aW9uLXRvZ2dsZSwgW3VrLWhvdmVyXSc7XG5cbiAgICAgICAgfSk7XG5cbiAgICB9XG5cbiAgICB2YXIgVmlkZW8gPSB7XG5cbiAgICAgICAgYXJnczogJ2F1dG9wbGF5JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgYXV0b211dGU6IEJvb2xlYW4sXG4gICAgICAgICAgICBhdXRvcGxheTogQm9vbGVhbixcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhdXRvbXV0ZTogZmFsc2UsXG4gICAgICAgICAgICBhdXRvcGxheTogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGluVmlldzogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGF1dG9wbGF5ID0gcmVmLmF1dG9wbGF5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF1dG9wbGF5ID09PSAnaW52aWV3JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmluVmlldyAmJiAhaGFzQXR0cih0aGlzLiRlbCwgJ3ByZWxvYWQnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsLnByZWxvYWQgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICByZWFkeTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHRoaXMucGxheWVyID0gbmV3IFBsYXllcih0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmF1dG9tdXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbGF5ZXIubXV0ZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKF8sIHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLnBsYXllciB8fCAodHlwZSA9PT0gJ3Njcm9sbCcgfHwgdHlwZSA9PT0gJ3Jlc2l6ZScpICYmICF0aGlzLmluVmlld1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogaXNWaXNpYmxlKHRoaXMuJGVsKSAmJiBjc3ModGhpcy4kZWwsICd2aXNpYmlsaXR5JykgIT09ICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluVmlldzogdGhpcy5pblZpZXcgJiYgaXNJblZpZXcodGhpcy4kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aXNpYmxlID0gcmVmLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpblZpZXcgPSByZWYuaW5WaWV3O1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2aXNpYmxlIHx8IHRoaXMuaW5WaWV3ICYmICFpblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLnBhdXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hdXRvcGxheSA9PT0gdHJ1ZSB8fCB0aGlzLmluVmlldyAmJiBpblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxheWVyLnBsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZScsICdzY3JvbGwnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIHZhciBDb3ZlciA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgVmlkZW9dLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICB3aWR0aDogTnVtYmVyLFxuICAgICAgICAgICAgaGVpZ2h0OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhdXRvbXV0ZTogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZWwgPSB0aGlzLiRlbDtcblxuICAgICAgICAgICAgICAgIGlmICghaXNWaXNpYmxlKGVsKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IGVsLnBhcmVudE5vZGU7XG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IHJlZi5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgY3NzKFxuICAgICAgICAgICAgICAgICAgICBjc3MoZWwsIHt3aWR0aDogJycsIGhlaWdodDogJyd9KSxcbiAgICAgICAgICAgICAgICAgICAgRGltZW5zaW9ucy5jb3ZlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogdGhpcy53aWR0aCB8fCBlbC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuaGVpZ2h0IHx8IGVsLmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgkJDEgKyAod2lkdGgkJDEgJSAyID8gMSA6IDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0JCQxICsgKGhlaWdodCQkMSAlIDIgPyAxIDogMClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgbG9hZGVkbWV0YWRhdGE6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFBvc2l0aW9uID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBwb3M6IFN0cmluZyxcbiAgICAgICAgICAgIG9mZnNldDogbnVsbCxcbiAgICAgICAgICAgIGZsaXA6IEJvb2xlYW4sXG4gICAgICAgICAgICBjbHNQb3M6IFN0cmluZ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHBvczogKFwiYm90dG9tLVwiICsgKCFpc1J0bCA/ICdsZWZ0JyA6ICdyaWdodCcpKSxcbiAgICAgICAgICAgIGZsaXA6IHRydWUsXG4gICAgICAgICAgICBvZmZzZXQ6IGZhbHNlLFxuICAgICAgICAgICAgY2xzUG9zOiAnJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHBvczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlZi5wb3M7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKHBvcyArICghaW5jbHVkZXMocG9zLCAnLScpID8gJy1jZW50ZXInIDogJycpKS5zcGxpdCgnLScpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZGlyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wb3NbMF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBhbGlnbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9zWzFdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBwb3NpdGlvbkF0OiBmdW5jdGlvbihlbGVtZW50LCB0YXJnZXQsIGJvdW5kYXJ5KSB7XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzc2VzKGVsZW1lbnQsICgodGhpcy5jbHNQb3MpICsgXCItKHRvcHxib3R0b218bGVmdHxyaWdodCkoLVthLXpdKyk/XCIpKTtcbiAgICAgICAgICAgICAgICBjc3MoZWxlbWVudCwge3RvcDogJycsIGxlZnQ6ICcnfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgbm9kZTtcbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0JCQxID0gcmVmLm9mZnNldDtcblxuICAgICAgICAgICAgICAgIG9mZnNldCQkMSA9IGlzTnVtZXJpYyhvZmZzZXQkJDEpXG4gICAgICAgICAgICAgICAgICAgID8gb2Zmc2V0JCQxXG4gICAgICAgICAgICAgICAgICAgIDogKG5vZGUgPSAkKG9mZnNldCQkMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9mZnNldChub2RlKVtheGlzID09PSAneCcgPyAnbGVmdCcgOiAndG9wJ10gLSBvZmZzZXQodGFyZ2V0KVtheGlzID09PSAneCcgPyAncmlnaHQnIDogJ2JvdHRvbSddXG4gICAgICAgICAgICAgICAgICAgICAgICA6IDA7XG5cbiAgICAgICAgICAgICAgICB2YXIgYXhpcyA9IHRoaXMuZ2V0QXhpcygpO1xuICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IHBvc2l0aW9uQXQoXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgYXhpcyA9PT0gJ3gnID8gKChmbGlwUG9zaXRpb24odGhpcy5kaXIpKSArIFwiIFwiICsgKHRoaXMuYWxpZ24pKSA6ICgodGhpcy5hbGlnbikgKyBcIiBcIiArIChmbGlwUG9zaXRpb24odGhpcy5kaXIpKSksXG4gICAgICAgICAgICAgICAgICAgIGF4aXMgPT09ICd4JyA/ICgodGhpcy5kaXIpICsgXCIgXCIgKyAodGhpcy5hbGlnbikpIDogKCh0aGlzLmFsaWduKSArIFwiIFwiICsgKHRoaXMuZGlyKSksXG4gICAgICAgICAgICAgICAgICAgIGF4aXMgPT09ICd4JyA/IChcIlwiICsgKHRoaXMuZGlyID09PSAnbGVmdCcgPyAtb2Zmc2V0JCQxIDogb2Zmc2V0JCQxKSkgOiAoXCIgXCIgKyAodGhpcy5kaXIgPT09ICd0b3AnID8gLW9mZnNldCQkMSA6IG9mZnNldCQkMSkpLFxuICAgICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZsaXAsXG4gICAgICAgICAgICAgICAgICAgIGJvdW5kYXJ5XG4gICAgICAgICAgICAgICAgKS50YXJnZXQ7XG4gICAgICAgICAgICAgICAgdmFyIHggPSByZWYkMS54O1xuICAgICAgICAgICAgICAgIHZhciB5ID0gcmVmJDEueTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZGlyID0gYXhpcyA9PT0gJ3gnID8geCA6IHk7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbiA9IGF4aXMgPT09ICd4JyA/IHkgOiB4O1xuXG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWxlbWVudCwgKCh0aGlzLmNsc1BvcykgKyBcIi1cIiArICh0aGlzLmRpcikgKyBcIi1cIiArICh0aGlzLmFsaWduKSksIHRoaXMub2Zmc2V0ID09PSBmYWxzZSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEF4aXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRpciA9PT0gJ3RvcCcgfHwgdGhpcy5kaXIgPT09ICdib3R0b20nID8gJ3knIDogJ3gnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgYWN0aXZlO1xuXG4gICAgdmFyIERyb3AgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbUG9zaXRpb24sIFRvZ2dsYWJsZV0sXG5cbiAgICAgICAgYXJnczogJ3BvcycsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIG1vZGU6ICdsaXN0JyxcbiAgICAgICAgICAgIHRvZ2dsZTogQm9vbGVhbixcbiAgICAgICAgICAgIGJvdW5kYXJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgYm91bmRhcnlBbGlnbjogQm9vbGVhbixcbiAgICAgICAgICAgIGRlbGF5U2hvdzogTnVtYmVyLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiBOdW1iZXIsXG4gICAgICAgICAgICBjbHNEcm9wOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBtb2RlOiBbJ2NsaWNrJywgJ2hvdmVyJ10sXG4gICAgICAgICAgICB0b2dnbGU6ICctIConLFxuICAgICAgICAgICAgYm91bmRhcnk6IHdpbmRvdyxcbiAgICAgICAgICAgIGJvdW5kYXJ5QWxpZ246IGZhbHNlLFxuICAgICAgICAgICAgZGVsYXlTaG93OiAwLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiA4MDAsXG4gICAgICAgICAgICBjbHNEcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIGhvdmVySWRsZTogMjAwLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBbJ3VrLWFuaW1hdGlvbi1mYWRlJ10sXG4gICAgICAgICAgICBjbHM6ICd1ay1vcGVuJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGJvdW5kYXJ5OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeSA9IHJlZi5ib3VuZGFyeTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeShib3VuZGFyeSwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0Ryb3A6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBjbHNEcm9wID0gcmVmLmNsc0Ryb3A7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gY2xzRHJvcCB8fCAoXCJ1ay1cIiArICh0aGlzLiRvcHRpb25zLm5hbWUpKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc1BvczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xzRHJvcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy50cmFja2VyID0gbmV3IE1vdXNlVHJhY2tlcigpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0Ryb3ApO1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kcHJvcHM7XG4gICAgICAgICAgICB2YXIgdG9nZ2xlID0gcmVmLnRvZ2dsZTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlID0gdG9nZ2xlICYmIHRoaXMuJGNyZWF0ZSgndG9nZ2xlJywgcXVlcnkodG9nZ2xlLCB0aGlzLiRlbCksIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHRoaXMuJGVsLFxuICAgICAgICAgICAgICAgIG1vZGU6IHRoaXMubW9kZVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMudXBkYXRlQXJpYSh0aGlzLiRlbCk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFwiLlwiICsgKHRoaXMuY2xzRHJvcCkgKyBcIi1jbG9zZVwiKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2FbaHJlZl49XCIjXCJdJztcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IGUudGFyZ2V0Lmhhc2g7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpZCB8fCAhd2l0aGluKGlkLCB0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzY3JvbGwnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAndG9nZ2xlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0b2dnbGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3codG9nZ2xlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJFbnRlcixcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh0aGlzLm1vZGUsICdob3ZlcicpO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIGFjdGl2ZSAhPT0gdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgJiYgYWN0aXZlLnRvZ2dsZVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgaW5jbHVkZXMoYWN0aXZlLnRvZ2dsZS5tb2RlLCAnaG92ZXInKVxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXdpdGhpbihlLnRhcmdldCwgYWN0aXZlLnRvZ2dsZS4kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAmJiAhcG9pbnRJblJlY3Qoe3g6IGUucGFnZVgsIHk6IGUucGFnZVl9LCBvZmZzZXQoYWN0aXZlLiRlbCkpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlLmhpZGUoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3codGhpcy50b2dnbGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3RvZ2dsZXNob3cnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgdG9nZ2xlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvZ2dsZSAmJiAhaW5jbHVkZXModG9nZ2xlLnRhcmdldCwgdGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0b2dnbGUgfHwgdGhpcy50b2dnbGUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogKFwidG9nZ2xlaGlkZSBcIiArIHBvaW50ZXJMZWF2ZSksXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihlLCB0b2dnbGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNUb3VjaChlKSB8fCB0b2dnbGUgJiYgIWluY2x1ZGVzKHRvZ2dsZS50YXJnZXQsIHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvZ2dsZSAmJiBpbmNsdWRlcyh0aGlzLnRvZ2dsZS5tb2RlLCAnaG92ZXInKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpO1xuICAgICAgICAgICAgICAgICAgICBBbmltYXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3Nob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYWNrZXIuaW5pdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMudG9nZ2xlLiRlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLnRvZ2dsZS4kZWwsICdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWdpc3RlckV2ZW50KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3JlaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lcnMoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiRlbCAhPT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSBhY3RpdmUgPT09IG51bGwgJiYgd2l0aGluKHRhcmdldCwgdGhpcy4kZWwpICYmIHRoaXMuaXNUb2dnbGVkKCkgPyB0aGlzIDogYWN0aXZlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gdGhpcy5pc0FjdGl2ZSgpID8gbnVsbCA6IGFjdGl2ZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b2dnbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMudG9nZ2xlLiRlbCwgdGhpcy5jbHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLnRvZ2dsZS4kZWwsICdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZS4kZWwuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJCQoJ2EsIGJ1dHRvbicsIHRoaXMudG9nZ2xlLiRlbCkuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmJsdXIoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYWNrZXIuY2FuY2VsKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNUb2dnbGVkKCkgJiYgIUFuaW1hdGlvbi5pblByb2dyZXNzKHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24odG9nZ2xlLCBkZWxheSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIGlmICggZGVsYXkgPT09IHZvaWQgMCApIGRlbGF5ID0gdHJ1ZTtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHNob3cgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAhdGhpcyQxLmlzVG9nZ2xlZCgpICYmIHRoaXMkMS50b2dnbGVFbGVtZW50KHRoaXMkMS4kZWwsIHRydWUpOyB9O1xuICAgICAgICAgICAgICAgIHZhciB0cnlTaG93ID0gZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS50b2dnbGUgPSB0b2dnbGUgfHwgdGhpcyQxLnRvZ2dsZTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuY2xlYXJUaW1lcnMoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWxheSAmJiBhY3RpdmUgJiYgYWN0aXZlICE9PSB0aGlzJDEgJiYgYWN0aXZlLmlzRGVsYXlpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zaG93VGltZXIgPSBzZXRUaW1lb3V0KHRoaXMkMS5zaG93LCAxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcyQxLmlzUGFyZW50T2YoYWN0aXZlKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlLmhpZGVUaW1lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aXZlICYmICF0aGlzJDEuaXNDaGlsZE9mKGFjdGl2ZSkgJiYgIXRoaXMkMS5pc1BhcmVudE9mKGFjdGl2ZSkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXY7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYWN0aXZlICYmIGFjdGl2ZSAhPT0gcHJldiAmJiAhdGhpcyQxLmlzQ2hpbGRPZihhY3RpdmUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWxheSAmJiB0aGlzJDEuZGVsYXlTaG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvd1RpbWVyID0gc2V0VGltZW91dChzaG93LCB0aGlzJDEuZGVsYXlTaG93KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9IHRoaXMkMTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRvZ2dsZSAmJiB0aGlzLnRvZ2dsZSAmJiB0b2dnbGUuJGVsICE9PSB0aGlzLnRvZ2dsZS4kZWwpIHtcblxuICAgICAgICAgICAgICAgICAgICBvbmNlKHRoaXMuJGVsLCAnaGlkZScsIHRyeVNob3cpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5U2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKGRlbGF5KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBkZWxheSA9PT0gdm9pZCAwICkgZGVsYXkgPSB0cnVlO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaGlkZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS50b2dnbGVOb3codGhpcyQxLiRlbCwgZmFsc2UpOyB9O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVycygpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RlbGF5aW5nID0gdGhpcy50cmFja2VyLm1vdmVzVG8odGhpcy4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRlbGF5ICYmIHRoaXMuaXNEZWxheWluZykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IHNldFRpbWVvdXQodGhpcy5oaWRlLCB0aGlzLmhvdmVySWRsZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZWxheSAmJiB0aGlzLmRlbGF5SGlkZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IHNldFRpbWVvdXQoaGlkZSwgdGhpcy5kZWxheUhpZGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbGVhclRpbWVyczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2hvd1RpbWVyKTtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGVUaW1lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0RlbGF5aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpc0FjdGl2ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjdGl2ZSA9PT0gdGhpcztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzQ2hpbGRPZjogZnVuY3Rpb24oZHJvcCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkcm9wICYmIGRyb3AgIT09IHRoaXMgJiYgd2l0aGluKHRoaXMuJGVsLCBkcm9wLiRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpc1BhcmVudE9mOiBmdW5jdGlvbihkcm9wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRyb3AgJiYgZHJvcCAhPT0gdGhpcyAmJiB3aXRoaW4oZHJvcC4kZWwsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBvc2l0aW9uOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzZXModGhpcy4kZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLShzdGFja3xib3VuZGFyeSlcIikpO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge3RvcDogJycsIGxlZnQ6ICcnLCBkaXNwbGF5OiAnYmxvY2snfSk7XG4gICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLWJvdW5kYXJ5XCIpLCB0aGlzLmJvdW5kYXJ5QWxpZ24pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gb2Zmc2V0KHRoaXMuYm91bmRhcnkpO1xuICAgICAgICAgICAgICAgIHZhciBhbGlnblRvID0gdGhpcy5ib3VuZGFyeUFsaWduID8gYm91bmRhcnkgOiBvZmZzZXQodGhpcy50b2dnbGUuJGVsKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFsaWduID09PSAnanVzdGlmeScpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHByb3AgPSB0aGlzLmdldEF4aXMoKSA9PT0gJ3knID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHByb3AsIGFsaWduVG9bcHJvcF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy4kZWwub2Zmc2V0V2lkdGggPiBNYXRoLm1heChib3VuZGFyeS5yaWdodCAtIGFsaWduVG8ubGVmdCwgYWxpZ25Uby5yaWdodCAtIGJvdW5kYXJ5LmxlZnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAoKHRoaXMuY2xzRHJvcCkgKyBcIi1zdGFja1wiKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbkF0KHRoaXMuJGVsLCB0aGlzLmJvdW5kYXJ5QWxpZ24gPyB0aGlzLmJvdW5kYXJ5IDogdGhpcy50b2dnbGUuJGVsLCB0aGlzLmJvdW5kYXJ5KTtcblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnJyk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIHJlZ2lzdGVyZWQ7XG5cbiAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50KCkge1xuXG4gICAgICAgIGlmIChyZWdpc3RlcmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZWdpc3RlcmVkID0gdHJ1ZTtcbiAgICAgICAgb24oZG9jdW1lbnQsICdjbGljaycsIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSByZWYuZGVmYXVsdFByZXZlbnRlZDtcblxuICAgICAgICAgICAgdmFyIHByZXY7XG5cbiAgICAgICAgICAgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3aGlsZSAoYWN0aXZlICYmIGFjdGl2ZSAhPT0gcHJldiAmJiAhd2l0aGluKHRhcmdldCwgYWN0aXZlLiRlbCkgJiYgIShhY3RpdmUudG9nZ2xlICYmIHdpdGhpbih0YXJnZXQsIGFjdGl2ZS50b2dnbGUuJGVsKSkpIHtcbiAgICAgICAgICAgICAgICBwcmV2ID0gYWN0aXZlO1xuICAgICAgICAgICAgICAgIGFjdGl2ZS5oaWRlKGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIERyb3Bkb3duID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IERyb3BcblxuICAgIH07XG5cbiAgICB2YXIgRm9ybUN1c3RvbSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXJnczogJ3RhcmdldCcsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRhcmdldDogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRhcmdldDogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsSW5wdXQsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdGF0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldCAmJiAodGFyZ2V0ID09PSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuaW5wdXQucGFyZW50Tm9kZSA9PT0gJGVsXG4gICAgICAgICAgICAgICAgICAgICYmIHRoaXMuaW5wdXQubmV4dEVsZW1lbnRTaWJsaW5nXG4gICAgICAgICAgICAgICAgICAgIHx8IHF1ZXJ5KHRhcmdldCwgJGVsKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgdmFyIGlucHV0ID0gcmVmLmlucHV0O1xuXG4gICAgICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG9wdGlvbjtcbiAgICAgICAgICAgIHZhciBwcm9wID0gaXNJbnB1dCh0YXJnZXQpID8gJ3ZhbHVlJyA6ICd0ZXh0Q29udGVudCc7XG4gICAgICAgICAgICB2YXIgcHJldiA9IHRhcmdldFtwcm9wXTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzWzBdXG4gICAgICAgICAgICAgICAgPyBpbnB1dC5maWxlc1swXS5uYW1lXG4gICAgICAgICAgICAgICAgOiBtYXRjaGVzKGlucHV0LCAnc2VsZWN0JykgJiYgKG9wdGlvbiA9ICQkKCdvcHRpb24nLCBpbnB1dCkuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuc2VsZWN0ZWQ7IH0pWzBdKVxuICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbi50ZXh0Q29udGVudFxuICAgICAgICAgICAgICAgICAgICA6IGlucHV0LnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAocHJldiAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnZm9jdXNpbiBmb2N1c291dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUnLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IHNlbElucHV0LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gcmVmLmN1cnJlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgPT09IHRoaXMuaW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwidWstXCIgKyAoaW5jbHVkZXModHlwZSwgJ2ZvY3VzJykgPyAnZm9jdXMnIDogJ2hvdmVyJykpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzKFsnZm9jdXNpbicsICdtb3VzZWVudGVyJ10sIHR5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2hhbmdlJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRlbWl0KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIC8vIERlcHJlY2F0ZWRcbiAgICB2YXIgR2lmID0ge1xuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhJCQxKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgaW52aWV3ID0gaXNJblZpZXcodGhpcy4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpbnZpZXcgfHwgZGF0YSQkMS5pc0luVmlldyA9PT0gaW52aWV3KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBkYXRhJCQxLmlzSW5WaWV3ID0gaW52aWV3O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuJGVsLnNyYyA9IHRoaXMuJGVsLnNyYztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIE1hcmdpbiA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbWFyZ2luOiBTdHJpbmcsXG4gICAgICAgICAgICBmaXJzdENvbHVtbjogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1hcmdpbjogJ3VrLW1hcmdpbi1zbWFsbC10b3AnLFxuICAgICAgICAgICAgZmlyc3RDb2x1bW46ICd1ay1maXJzdC1jb2x1bW4nXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKGRhdGEkJDEpIHtcblxuICAgICAgICAgICAgICAgIHZhciBpdGVtcyA9IHRoaXMuJGVsLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gW1tdXTtcblxuICAgICAgICAgICAgICAgIGlmICghaXRlbXMubGVuZ3RoIHx8ICFpc1Zpc2libGUodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxLnJvd3MgPSByb3dzO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRhdGEkJDEucm93cyA9IGdldFJvd3MoaXRlbXMpO1xuICAgICAgICAgICAgICAgIGRhdGEkJDEuc3RhY2tzID0gIWRhdGEkJDEucm93cy5zb21lKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuIHJvdy5sZW5ndGggPiAxOyB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG5cblxuICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocm93LCBpKSB7IHJldHVybiByb3cuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEubWFyZ2luLCBpICE9PSAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuZmlyc3RDb2x1bW4sIGogPT09IDApO1xuICAgICAgICAgICAgICAgICAgICB9KTsgfVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFJvd3MoaXRlbXMpIHtcbiAgICAgICAgdmFyIHJvd3MgPSBbW11dO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgdmFyIGVsID0gaXRlbXNbaV07XG4gICAgICAgICAgICB2YXIgZGltID0gZ2V0T2Zmc2V0KGVsKTtcblxuICAgICAgICAgICAgaWYgKCFkaW0uaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAodmFyIGogPSByb3dzLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcm93ID0gcm93c1tqXTtcblxuICAgICAgICAgICAgICAgIGlmICghcm93WzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGxlZnREaW0gPSBnZXRPZmZzZXQocm93WzBdKTtcblxuICAgICAgICAgICAgICAgIGlmIChkaW0udG9wID49IGxlZnREaW0uYm90dG9tIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICByb3dzLnB1c2goW2VsXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChkaW0uYm90dG9tID4gbGVmdERpbS50b3ApIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGltLmxlZnQgPCBsZWZ0RGltLmxlZnQgJiYgIWlzUnRsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3cudW5zaGlmdChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJvdy5wdXNoKGVsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGogPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcm93cy51bnNoaWZ0KFtlbF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJvd3M7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRPZmZzZXQoZWxlbWVudCkge1xuXG4gICAgICAgIHZhciBvZmZzZXRUb3AgPSBlbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgICAgdmFyIG9mZnNldExlZnQgPSBlbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICAgIHZhciBvZmZzZXRIZWlnaHQgPSBlbGVtZW50Lm9mZnNldEhlaWdodDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wOiBvZmZzZXRUb3AsXG4gICAgICAgICAgICBsZWZ0OiBvZmZzZXRMZWZ0LFxuICAgICAgICAgICAgaGVpZ2h0OiBvZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICBib3R0b206IG9mZnNldFRvcCArIG9mZnNldEhlaWdodFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciBHcmlkID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IE1hcmdpbixcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgbmFtZTogJ2dyaWQnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtYXNvbnJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgcGFyYWxsYXg6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1hcmdpbjogJ3VrLWdyaWQtbWFyZ2luJyxcbiAgICAgICAgICAgIGNsc1N0YWNrOiAndWstZ3JpZC1zdGFjaycsXG4gICAgICAgICAgICBtYXNvbnJ5OiBmYWxzZSxcbiAgICAgICAgICAgIHBhcmFsbGF4OiAwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgcGFyYWxsYXg6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBwYXJhbGxheCA9IHJlZi5wYXJhbGxheDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhwYXJhbGxheCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5tYXNvbnJ5ICYmIGFkZENsYXNzKHRoaXMuJGVsLCAndWstZmxleC10b3AgdWstZmxleC13cmFwLXRvcCcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hc29ucnkgfHwgdGhpcy5wYXJhbGxheCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93cyA9IHJvd3MubWFwKGZ1bmN0aW9uIChlbGVtZW50cykgeyByZXR1cm4gc29ydEJ5KGVsZW1lbnRzLCAnb2Zmc2V0TGVmdCcpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cmFuc2xhdGVzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbEhlaWdodCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hc29ucnkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCQkMSA9IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZXMgPSByb3dzLnJlZHVjZShmdW5jdGlvbiAodHJhbnNsYXRlcywgcm93LCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVzW2ldID0gcm93Lm1hcChmdW5jdGlvbiAoXywgaikgeyByZXR1cm4gaSA9PT0gMCA/IDAgOiB0b0Zsb2F0KHRyYW5zbGF0ZXNbaSAtIDFdW2pdKSArIChoZWlnaHQkJDEgLSB0b0Zsb2F0KHJvd3NbaSAtIDFdW2pdICYmIHJvd3NbaSAtIDFdW2pdLm9mZnNldEhlaWdodCkpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSByb3cucmVkdWNlKGZ1bmN0aW9uIChoZWlnaHQkJDEsIGVsKSB7IHJldHVybiBNYXRoLm1heChoZWlnaHQkJDEsIGVsLm9mZnNldEhlaWdodCk7IH0sIDApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZXM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZWxIZWlnaHQgPSBtYXhDb2x1bW5IZWlnaHQocm93cykgKyBnZXRNYXJnaW5Ub3AodGhpcy4kZWwsIHRoaXMubWFyZ2luKSAqIChyb3dzLmxlbmd0aCAtIDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Jvd3M6IHJvd3MsIHRyYW5zbGF0ZXM6IHRyYW5zbGF0ZXMsIGhlaWdodDogZWxIZWlnaHR9O1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YWNrcyA9IHJlZi5zdGFja3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuXG5cbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzU3RhY2ssIHN0YWNrcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAncGFkZGluZ0JvdHRvbScsIHRoaXMucGFyYWxsYXggJiYgcm93cy5zb21lKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuIHJvdy5sZW5ndGggPiAxOyB9KSA/IHRoaXMucGFyYWxsYXggOiAnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0JCQxICYmIGNzcyh0aGlzLiRlbCwgJ21pbkhlaWdodCcsIGhlaWdodCQkMSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxlZDogdGhpcy5wYXJhbGxheCAmJiByb3dzLnNvbWUoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gcm93Lmxlbmd0aCA+IDE7IH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzY3JvbGxlZE92ZXIodGhpcy4kZWwsIGhlaWdodCQkMSA/IGhlaWdodCQkMSAtIGhlaWdodCh0aGlzLiRlbCkgOiAwKSAqIHRoaXMucGFyYWxsYXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvd3MgPSByZWYucm93cztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbGVkID0gcmVmLnNjcm9sbGVkO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdHJhbnNsYXRlcyA9IHJlZi50cmFuc2xhdGVzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbGVkID09PSBmYWxzZSAmJiAhdHJhbnNsYXRlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uIChyb3csIGkpIHsgcmV0dXJuIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaikgeyByZXR1cm4gY3NzKGVsLCAndHJhbnNmb3JtJywgIXNjcm9sbGVkICYmICF0cmFuc2xhdGVzID8gJycgOiAoXCJ0cmFuc2xhdGVZKFwiICsgKCh0cmFuc2xhdGVzICYmIC10cmFuc2xhdGVzW2ldW2pdKSArIChzY3JvbGxlZCA/IGogJSAyID8gc2Nyb2xsZWQgOiBzY3JvbGxlZCAvIDggOiAwKSkgKyBcInB4KVwiKSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBldmVudHM6IFsnc2Nyb2xsJywgJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRNYXJnaW5Ub3Aocm9vdCwgY2xzKSB7XG5cbiAgICAgICAgdmFyIG5vZGVzID0gdG9Ob2Rlcyhyb290LmNoaWxkcmVuKTtcbiAgICAgICAgdmFyIHJlZiA9IG5vZGVzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGhhc0NsYXNzKGVsLCBjbHMpOyB9KTtcbiAgICAgICAgdmFyIG5vZGUgPSByZWZbMF07XG5cbiAgICAgICAgcmV0dXJuIHRvRmxvYXQobm9kZVxuICAgICAgICAgICAgPyBjc3Mobm9kZSwgJ21hcmdpblRvcCcpXG4gICAgICAgICAgICA6IGNzcyhub2Rlc1swXSwgJ3BhZGRpbmdMZWZ0JykpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1heENvbHVtbkhlaWdodChyb3dzKSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heC5hcHBseShNYXRoLCByb3dzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCByb3cpIHtcbiAgICAgICAgICAgIHJvdy5mb3JFYWNoKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gc3VtW2ldID0gKHN1bVtpXSB8fCAwKSArIGVsLm9mZnNldEhlaWdodDsgfSk7XG4gICAgICAgICAgICByZXR1cm4gc3VtO1xuICAgICAgICB9LCBbXSkpO1xuICAgIH1cblxuICAgIHZhciBIZWlnaHRNYXRjaCA9IHtcblxuICAgICAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBTdHJpbmcsXG4gICAgICAgICAgICByb3c6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICB0YXJnZXQ6ICc+IConLFxuICAgICAgICAgICAgcm93OiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodGFyZ2V0LCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy5lbGVtZW50cywge1xuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6ICcnLFxuICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICcnXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByb3dzOiAhdGhpcy5yb3dcbiAgICAgICAgICAgICAgICAgICAgICAgID8gW3RoaXMubWF0Y2godGhpcy5lbGVtZW50cyldXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGdldFJvd3ModGhpcy5lbGVtZW50cykubWFwKGZ1bmN0aW9uIChlbGVtZW50cykgeyByZXR1cm4gdGhpcyQxLm1hdGNoKGVsZW1lbnRzKTsgfSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciByb3dzID0gcmVmLnJvd3M7XG5cblxuICAgICAgICAgICAgICAgIHJvd3MuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudHMgPSByZWYuZWxlbWVudHM7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNzcyhlbGVtZW50cywge1xuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IGhlaWdodCQkMSxcbiAgICAgICAgICAgICAgICAgICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCdcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgbWF0Y2g6IGZ1bmN0aW9uKGVsZW1lbnRzKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGhlaWdodHMgPSBbXTtcbiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gMDtcblxuICAgICAgICAgICAgICAgIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heCA9IE1hdGgubWF4KG1heCwgaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodHMucHVzaChoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGVsZW1lbnRzID0gZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gaGVpZ2h0c1tpXSA8IG1heDsgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge2hlaWdodDogbWF4LCBlbGVtZW50czogZWxlbWVudHN9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIEhlaWdodFZpZXdwb3J0ID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBleHBhbmQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBvZmZzZXRUb3A6IEJvb2xlYW4sXG4gICAgICAgICAgICBvZmZzZXRCb3R0b206IEJvb2xlYW4sXG4gICAgICAgICAgICBtaW5IZWlnaHQ6IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGV4cGFuZDogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXRUb3A6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0Qm90dG9tOiBmYWxzZSxcbiAgICAgICAgICAgIG1pbkhlaWdodDogMFxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdib3hTaXppbmcnLCAnYm9yZGVyLWJveCcpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHZpZXdwb3J0ID0gaGVpZ2h0KHdpbmRvdyk7XG4gICAgICAgICAgICAgICAgdmFyIG1pbkhlaWdodCwgb2Zmc2V0VG9wID0gMDtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmV4cGFuZCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge2hlaWdodDogJycsIG1pbkhlaWdodDogJyd9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IHZpZXdwb3J0IC0gb2Zmc2V0SGVpZ2h0KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRpZmYgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQgPSBvZmZzZXRIZWlnaHQodGhpcy4kZWwpICsgZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gb2Zmc2V0KHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRvcCA9IHJlZi50b3A7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvcCA8IHZpZXdwb3J0IC8gMiAmJiB0aGlzLm9mZnNldFRvcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IHRvcDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9mZnNldEJvdHRvbSA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRUb3AgKz0gb2Zmc2V0SGVpZ2h0KHRoaXMuJGVsLm5leHRFbGVtZW50U2libGluZyk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc051bWVyaWModGhpcy5vZmZzZXRCb3R0b20pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSAodmlld3BvcnQgLyAxMDApICogdGhpcy5vZmZzZXRCb3R0b207XG5cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLm9mZnNldEJvdHRvbSAmJiBlbmRzV2l0aCh0aGlzLm9mZnNldEJvdHRvbSwgJ3B4JykpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0VG9wICs9IHRvRmxvYXQodGhpcy5vZmZzZXRCb3R0b20pO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTdHJpbmcodGhpcy5vZmZzZXRCb3R0b20pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldFRvcCArPSBvZmZzZXRIZWlnaHQocXVlcnkodGhpcy5vZmZzZXRCb3R0b20sIHRoaXMuJGVsKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIG1vYmlsZSBkZXZpY2VzIChpT1MgYW5kIEFuZHJvaWQpIHdpbmRvdy5pbm5lckhlaWdodCAhPT0gMTAwdmhcbiAgICAgICAgICAgICAgICAgICAgbWluSGVpZ2h0ID0gb2Zmc2V0VG9wID8gKFwiY2FsYygxMDB2aCAtIFwiICsgb2Zmc2V0VG9wICsgXCJweClcIikgOiAnMTAwdmgnO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCFtaW5IZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge2hlaWdodDogJycsIG1pbkhlaWdodDogbWluSGVpZ2h0fSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgZWxIZWlnaHQgPSB0aGlzLiRlbC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluSGVpZ2h0ICYmIHRoaXMubWluSGVpZ2h0ID4gZWxIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnbWluSGVpZ2h0JywgdGhpcy5taW5IZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIElFIDExIGZpeCAobWluLWhlaWdodCBvbiBhIGZsZXggY29udGFpbmVyIHdvbid0IGFwcGx5IHRvIGl0cyBmbGV4IGl0ZW1zKVxuICAgICAgICAgICAgICAgIGlmICh2aWV3cG9ydCAtIG9mZnNldFRvcCA+PSBlbEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdoZWlnaHQnLCBtaW5IZWlnaHQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gb2Zmc2V0SGVpZ2h0KGVsKSB7XG4gICAgICAgIHJldHVybiBlbCAmJiBlbC5vZmZzZXRIZWlnaHQgfHwgMDtcbiAgICB9XG5cbiAgICB2YXIgc3ZncyA9IHt9O1xuXG4gICAgdmFyIFNWRyA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgaWQ6IFN0cmluZyxcbiAgICAgICAgICAgIGljb246IFN0cmluZyxcbiAgICAgICAgICAgIHNyYzogU3RyaW5nLFxuICAgICAgICAgICAgc3R5bGU6IFN0cmluZyxcbiAgICAgICAgICAgIHdpZHRoOiBOdW1iZXIsXG4gICAgICAgICAgICBoZWlnaHQ6IE51bWJlcixcbiAgICAgICAgICAgIHJhdGlvOiBOdW1iZXIsXG4gICAgICAgICAgICAnY2xhc3MnOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICByYXRpbzogMSxcbiAgICAgICAgICAgIGlkOiBmYWxzZSxcbiAgICAgICAgICAgIGV4Y2x1ZGU6IFsncmF0aW8nLCAnc3JjJywgJ2ljb24nXSxcbiAgICAgICAgICAgICdjbGFzcyc6ICcnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIGFzc2lnbiQkMTtcblxuXG4gICAgICAgICAgICB0aGlzLmNsYXNzICs9ICcgdWstc3ZnJztcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmljb24gJiYgaW5jbHVkZXModGhpcy5zcmMsICcjJykpIHtcblxuICAgICAgICAgICAgICAgIHZhciBwYXJ0cyA9IHRoaXMuc3JjLnNwbGl0KCcjJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAoYXNzaWduJCQxID0gcGFydHMsIHRoaXMuc3JjID0gYXNzaWduJCQxWzBdLCB0aGlzLmljb24gPSBhc3NpZ24kJDFbMV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5zdmcgPSB0aGlzLmdldFN2ZygpLnRoZW4oZnVuY3Rpb24gKHN2Zykge1xuXG4gICAgICAgICAgICAgICAgdmFyIGVsO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzU3RyaW5nKHN2ZykpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmljb24gJiYgaW5jbHVkZXMoc3ZnLCAnPHN5bWJvbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdmcgPSBwYXJzZVN5bWJvbHMoc3ZnLCB0aGlzJDEuaWNvbikgfHwgc3ZnO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZWwgPSAkKHN2Zy5zdWJzdHIoc3ZnLmluZGV4T2YoJzxzdmcnKSkpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWwgPSBzdmcuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoJ1NWRyBub3QgZm91bmQuJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGRpbWVuc2lvbnMgPSBhdHRyKGVsLCAndmlld0JveCcpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRpbWVuc2lvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9ucyA9IGRpbWVuc2lvbnMuc3BsaXQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLndpZHRoID0gdGhpcyQxLiRwcm9wcy53aWR0aCB8fCBkaW1lbnNpb25zWzJdO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEuaGVpZ2h0ID0gdGhpcyQxLiRwcm9wcy5oZWlnaHQgfHwgZGltZW5zaW9uc1szXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzJDEud2lkdGggKj0gdGhpcyQxLnJhdGlvO1xuICAgICAgICAgICAgICAgIHRoaXMkMS5oZWlnaHQgKj0gdGhpcyQxLnJhdGlvO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiB0aGlzJDEuJG9wdGlvbnMucHJvcHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMVtwcm9wXSAmJiAhaW5jbHVkZXModGhpcyQxLmV4Y2x1ZGUsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKGVsLCBwcm9wLCB0aGlzJDFbcHJvcF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQXR0cihlbCwgJ2lkJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS53aWR0aCAmJiAhdGhpcyQxLmhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyKGVsLCAnaGVpZ2h0Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5oZWlnaHQgJiYgIXRoaXMkMS53aWR0aCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVBdHRyKGVsLCAnd2lkdGgnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcm9vdCA9IHRoaXMkMS4kZWw7XG4gICAgICAgICAgICAgICAgaWYgKGlzVm9pZEVsZW1lbnQocm9vdCkgfHwgcm9vdC50YWdOYW1lID09PSAnQ0FOVkFTJykge1xuXG4gICAgICAgICAgICAgICAgICAgIGF0dHIocm9vdCwge2hpZGRlbjogdHJ1ZSwgaWQ6IG51bGx9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHJvb3QubmV4dEVsZW1lbnRTaWJsaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCAmJiBlbC5pc0VxdWFsTm9kZShuZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwgPSBuZXh0O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIocm9vdCwgZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBsYXN0ID0gcm9vdC5sYXN0RWxlbWVudENoaWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGFzdCAmJiBlbC5pc0VxdWFsTm9kZShsYXN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWwgPSBsYXN0O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJvb3QsIGVsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcyQxLnN2Z0VsID0gZWw7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZWw7XG5cbiAgICAgICAgICAgIH0sIG5vb3ApO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmIChpc1ZvaWRFbGVtZW50KHRoaXMuJGVsKSkge1xuICAgICAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsIHtoaWRkZW46IG51bGwsIGlkOiB0aGlzLmlkIHx8IG51bGx9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc3ZnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdmcudGhlbihmdW5jdGlvbiAoc3ZnKSB7IHJldHVybiAoIXRoaXMkMS5fY29ubmVjdGVkIHx8IHN2ZyAhPT0gdGhpcyQxLnN2Z0VsKSAmJiByZW1vdmUoc3ZnKTsgfSwgbm9vcCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc3ZnID0gdGhpcy5zdmdFbCA9IG51bGw7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGdldFN2ZzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoc3Znc1t0aGlzLnNyY10pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN2Z3NbdGhpcy5zcmNdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN2Z3NbdGhpcy5zcmNdID0gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgodGhpcyQxLnNyYywgJ2RhdGE6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMkMS5zcmMuc3BsaXQoJywnKVsxXSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhamF4KHRoaXMkMS5zcmMpLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHhocikgeyByZXR1cm4gcmVzb2x2ZSh4aHIucmVzcG9uc2UpOyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlamVjdCgnU1ZHIG5vdCBmb3VuZC4nKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBzdmdzW3RoaXMuc3JjXTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgc3ltYm9sUmUgPSAvPHN5bWJvbCguKj9pZD0oWydcIl0pKC4qPylcXDJbXl0qPzxcXC8pc3ltYm9sPi9nO1xuICAgIHZhciBzeW1ib2xzID0ge307XG5cbiAgICBmdW5jdGlvbiBwYXJzZVN5bWJvbHMoc3ZnLCBpY29uKSB7XG5cbiAgICAgICAgaWYgKCFzeW1ib2xzW3N2Z10pIHtcblxuICAgICAgICAgICAgc3ltYm9sc1tzdmddID0ge307XG5cbiAgICAgICAgICAgIHZhciBtYXRjaDtcbiAgICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBzeW1ib2xSZS5leGVjKHN2ZykpKSB7XG4gICAgICAgICAgICAgICAgc3ltYm9sc1tzdmddW21hdGNoWzNdXSA9IFwiPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiXCIgKyAobWF0Y2hbMV0pICsgXCJzdmc+XCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN5bWJvbFJlLmxhc3RJbmRleCA9IDA7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzeW1ib2xzW3N2Z11baWNvbl07XG4gICAgfVxuXG4gICAgdmFyIGNsb3NlSWNvbiA9IFwiPHN2ZyB3aWR0aD1cXFwiMTRcXFwiIGhlaWdodD1cXFwiMTRcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAxNFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiB4MT1cXFwiMVxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxM1xcXCIgeTI9XFxcIjEzXFxcIi8+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMVxcXCIgeDE9XFxcIjEzXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjFcXFwiIHkyPVxcXCIxM1xcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIGNsb3NlTGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNFxcXCIgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMTlcXFwiIHkyPVxcXCIxOVxcXCIvPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjRcXFwiIHgxPVxcXCIxOVxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxXFxcIiB5Mj1cXFwiMTlcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBtYXJrZXIgPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3QgeD1cXFwiOVxcXCIgeT1cXFwiNFxcXCIgd2lkdGg9XFxcIjFcXFwiIGhlaWdodD1cXFwiMTFcXFwiLz48cmVjdCB4PVxcXCI0XFxcIiB5PVxcXCI5XFxcIiB3aWR0aD1cXFwiMTFcXFwiIGhlaWdodD1cXFwiMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIG5hdmJhclRvZ2dsZUljb24gPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHJlY3QgeT1cXFwiOVxcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjJcXFwiLz48cmVjdCB5PVxcXCIzXFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMlxcXCIvPjxyZWN0IHk9XFxcIjE1XFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMlxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIG92ZXJsYXlJY29uID0gXCI8c3ZnIHdpZHRoPVxcXCI0MFxcXCIgaGVpZ2h0PVxcXCI0MFxcXCIgdmlld0JveD1cXFwiMCAwIDQwIDQwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxyZWN0IHg9XFxcIjE5XFxcIiB5PVxcXCIwXFxcIiB3aWR0aD1cXFwiMVxcXCIgaGVpZ2h0PVxcXCI0MFxcXCIvPjxyZWN0IHg9XFxcIjBcXFwiIHk9XFxcIjE5XFxcIiB3aWR0aD1cXFwiNDBcXFwiIGhlaWdodD1cXFwiMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHBhZ2luYXRpb25OZXh0ID0gXCI8c3ZnIHdpZHRoPVxcXCI3XFxcIiBoZWlnaHQ9XFxcIjEyXFxcIiB2aWV3Qm94PVxcXCIwIDAgNyAxMlxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuMlxcXCIgcG9pbnRzPVxcXCIxIDEgNiA2IDEgMTFcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBwYWdpbmF0aW9uUHJldmlvdXMgPSBcIjxzdmcgd2lkdGg9XFxcIjdcXFwiIGhlaWdodD1cXFwiMTJcXFwiIHZpZXdCb3g9XFxcIjAgMCA3IDEyXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4yXFxcIiBwb2ludHM9XFxcIjYgMSAxIDYgNiAxMVxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNlYXJjaEljb24gPSBcIjxzdmcgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjAgMjBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBjeD1cXFwiOVxcXCIgY3k9XFxcIjlcXFwiIHI9XFxcIjdcXFwiLz48cGF0aCBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBkPVxcXCJNMTQsMTQgTDE4LDE4IEwxNCwxNCBaXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2VhcmNoTGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjQwXFxcIiBoZWlnaHQ9XFxcIjQwXFxcIiB2aWV3Qm94PVxcXCIwIDAgNDAgNDBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS44XFxcIiBjeD1cXFwiMTcuNVxcXCIgY3k9XFxcIjE3LjVcXFwiIHI9XFxcIjE2LjVcXFwiLz48bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS44XFxcIiB4MT1cXFwiMzhcXFwiIHkxPVxcXCIzOVxcXCIgeDI9XFxcIjI5XFxcIiB5Mj1cXFwiMzBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzZWFyY2hOYXZiYXIgPSBcIjxzdmcgd2lkdGg9XFxcIjI0XFxcIiBoZWlnaHQ9XFxcIjI0XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4xXFxcIiBjeD1cXFwiMTAuNVxcXCIgY3k9XFxcIjEwLjVcXFwiIHI9XFxcIjkuNVxcXCIvPjxsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjFcXFwiIHgxPVxcXCIyM1xcXCIgeTE9XFxcIjIzXFxcIiB4Mj1cXFwiMTdcXFwiIHkyPVxcXCIxN1xcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNsaWRlbmF2TmV4dCA9IFwiPHN2ZyB3aWR0aD1cXFwiMTRweFxcXCIgaGVpZ2h0PVxcXCIyNHB4XFxcIiB2aWV3Qm94PVxcXCIwIDAgMTQgMjRcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PHBvbHlsaW5lIGZpbGw9XFxcIm5vbmVcXFwiIHN0cm9rZT1cXFwiIzAwMFxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIxLjRcXFwiIHBvaW50cz1cXFwiMS4yMjUsMjMgMTIuNzc1LDEyIDEuMjI1LDEgXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2xpZGVuYXZOZXh0TGFyZ2UgPSBcIjxzdmcgd2lkdGg9XFxcIjI1cHhcXFwiIGhlaWdodD1cXFwiNDBweFxcXCIgdmlld0JveD1cXFwiMCAwIDI1IDQwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIgcG9pbnRzPVxcXCI0LjAwMiwzOC41NDcgMjIuNTI3LDIwLjAyNCA0LDEuNSBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBzbGlkZW5hdlByZXZpb3VzID0gXCI8c3ZnIHdpZHRoPVxcXCIxNHB4XFxcIiBoZWlnaHQ9XFxcIjI0cHhcXFwiIHZpZXdCb3g9XFxcIjAgMCAxNCAyNFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjEuNFxcXCIgcG9pbnRzPVxcXCIxMi43NzUsMSAxLjIyNSwxMiAxMi43NzUsMjMgXFxcIi8+PC9zdmc+XCI7XG5cbiAgICB2YXIgc2xpZGVuYXZQcmV2aW91c0xhcmdlID0gXCI8c3ZnIHdpZHRoPVxcXCIyNXB4XFxcIiBoZWlnaHQ9XFxcIjQwcHhcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNSA0MFxcXCIgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIj48cG9seWxpbmUgZmlsbD1cXFwibm9uZVxcXCIgc3Ryb2tlPVxcXCIjMDAwXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiIHBvaW50cz1cXFwiMjAuNTI3LDEuNSAyLDIwLjAyNCAyMC41MjUsMzguNTQ3IFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHNwaW5uZXIgPSBcIjxzdmcgd2lkdGg9XFxcIjMwXFxcIiBoZWlnaHQ9XFxcIjMwXFxcIiB2aWV3Qm94PVxcXCIwIDAgMzAgMzBcXFwiIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCI+PGNpcmNsZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIGN4PVxcXCIxNVxcXCIgY3k9XFxcIjE1XFxcIiByPVxcXCIxNFxcXCIvPjwvc3ZnPlwiO1xuXG4gICAgdmFyIHRvdG9wID0gXCI8c3ZnIHdpZHRoPVxcXCIxOFxcXCIgaGVpZ2h0PVxcXCIxMFxcXCIgdmlld0JveD1cXFwiMCAwIDE4IDEwXFxcIiB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiPjxwb2x5bGluZSBmaWxsPVxcXCJub25lXFxcIiBzdHJva2U9XFxcIiMwMDBcXFwiIHN0cm9rZS13aWR0aD1cXFwiMS4yXFxcIiBwb2ludHM9XFxcIjEgOSA5IDEgMTcgOSBcXFwiLz48L3N2Zz5cIjtcblxuICAgIHZhciBwYXJzZWQgPSB7fTtcbiAgICB2YXIgaWNvbnMgPSB7XG4gICAgICAgIHNwaW5uZXI6IHNwaW5uZXIsXG4gICAgICAgIHRvdG9wOiB0b3RvcCxcbiAgICAgICAgbWFya2VyOiBtYXJrZXIsXG4gICAgICAgICdjbG9zZS1pY29uJzogY2xvc2VJY29uLFxuICAgICAgICAnY2xvc2UtbGFyZ2UnOiBjbG9zZUxhcmdlLFxuICAgICAgICAnbmF2YmFyLXRvZ2dsZS1pY29uJzogbmF2YmFyVG9nZ2xlSWNvbixcbiAgICAgICAgJ292ZXJsYXktaWNvbic6IG92ZXJsYXlJY29uLFxuICAgICAgICAncGFnaW5hdGlvbi1uZXh0JzogcGFnaW5hdGlvbk5leHQsXG4gICAgICAgICdwYWdpbmF0aW9uLXByZXZpb3VzJzogcGFnaW5hdGlvblByZXZpb3VzLFxuICAgICAgICAnc2VhcmNoLWljb24nOiBzZWFyY2hJY29uLFxuICAgICAgICAnc2VhcmNoLWxhcmdlJzogc2VhcmNoTGFyZ2UsXG4gICAgICAgICdzZWFyY2gtbmF2YmFyJzogc2VhcmNoTmF2YmFyLFxuICAgICAgICAnc2xpZGVuYXYtbmV4dCc6IHNsaWRlbmF2TmV4dCxcbiAgICAgICAgJ3NsaWRlbmF2LW5leHQtbGFyZ2UnOiBzbGlkZW5hdk5leHRMYXJnZSxcbiAgICAgICAgJ3NsaWRlbmF2LXByZXZpb3VzJzogc2xpZGVuYXZQcmV2aW91cyxcbiAgICAgICAgJ3NsaWRlbmF2LXByZXZpb3VzLWxhcmdlJzogc2xpZGVuYXZQcmV2aW91c0xhcmdlXG4gICAgfTtcblxuICAgIHZhciBJY29uID0ge1xuXG4gICAgICAgIGluc3RhbGw6IGluc3RhbGwsXG5cbiAgICAgICAgYXR0cnM6IFsnaWNvbicsICdyYXRpbyddLFxuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBTVkddLFxuXG4gICAgICAgIGFyZ3M6ICdpY29uJyxcblxuICAgICAgICBwcm9wczogWydpY29uJ10sXG5cbiAgICAgICAgZGF0YToge2V4Y2x1ZGU6IFsnaWQnLCAnc3R5bGUnLCAnY2xhc3MnLCAnc3JjJywgJ2ljb24nLCAncmF0aW8nXX0sXG5cbiAgICAgICAgaXNJY29uOiB0cnVlLFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWljb24nKTtcbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGdldFN2ZzogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgaWNvbiA9IGdldEljb24oYXBwbHlSdGwodGhpcy5pY29uKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5yZWplY3QoJ0ljb24gbm90IGZvdW5kLicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZShpY29uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIEljb25Db21wb25lbnQgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogSWNvbixcblxuICAgICAgICBkYXRhOiBmdW5jdGlvbiAodm0pIHsgcmV0dXJuICh7XG4gICAgICAgICAgICBpY29uOiBoeXBoZW5hdGUodm0uY29uc3RydWN0b3Iub3B0aW9ucy5uYW1lKVxuICAgICAgICB9KTsgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZW5hdiA9IHtcblxuICAgICAgICBleHRlbmRzOiBJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLXNsaWRlbmF2Jyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaWNvbjogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWNvbiA9IHJlZi5pY29uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc0NsYXNzKCRlbCwgJ3VrLXNsaWRlbmF2LWxhcmdlJylcbiAgICAgICAgICAgICAgICAgICAgPyAoaWNvbiArIFwiLWxhcmdlXCIpXG4gICAgICAgICAgICAgICAgICAgIDogaWNvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNlYXJjaCA9IHtcblxuICAgICAgICBleHRlbmRzOiBJY29uQ29tcG9uZW50LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGljb246IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGljb24gPSByZWYuaWNvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBoYXNDbGFzcygkZWwsICd1ay1zZWFyY2gtaWNvbicpICYmIHBhcmVudHMoJGVsLCAnLnVrLXNlYXJjaC1sYXJnZScpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/ICdzZWFyY2gtbGFyZ2UnXG4gICAgICAgICAgICAgICAgICAgIDogcGFyZW50cygkZWwsICcudWstc2VhcmNoLW5hdmJhcicpLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnc2VhcmNoLW5hdmJhcidcbiAgICAgICAgICAgICAgICAgICAgICAgIDogaWNvbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIENsb3NlID0ge1xuXG4gICAgICAgIGV4dGVuZHM6IEljb25Db21wb25lbnQsXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaWNvbjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcImNsb3NlLVwiICsgKGhhc0NsYXNzKHRoaXMuJGVsLCAndWstY2xvc2UtbGFyZ2UnKSA/ICdsYXJnZScgOiAnaWNvbicpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFNwaW5uZXIgPSB7XG5cbiAgICAgICAgZXh0ZW5kczogSWNvbkNvbXBvbmVudCxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIHRoaXMuc3ZnLnRoZW4oZnVuY3Rpb24gKHN2ZykgeyByZXR1cm4gdGhpcyQxLnJhdGlvICE9PSAxICYmIGNzcygkKCdjaXJjbGUnLCBzdmcpLCAnc3Ryb2tlV2lkdGgnLCAxIC8gdGhpcyQxLnJhdGlvKTsgfSwgbm9vcCk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsKFVJa2l0KSB7XG4gICAgICAgIFVJa2l0Lmljb24uYWRkID0gZnVuY3Rpb24gKG5hbWUsIHN2Zykge1xuICAgICAgICAgICAgdmFyIG9iajtcblxuXG4gICAgICAgICAgICB2YXIgYWRkZWQgPSBpc1N0cmluZyhuYW1lKSA/ICgoIG9iaiA9IHt9LCBvYmpbbmFtZV0gPSBzdmcsIG9iaiApKSA6IG5hbWU7XG4gICAgICAgICAgICBlYWNoKGFkZGVkLCBmdW5jdGlvbiAoc3ZnLCBuYW1lKSB7XG4gICAgICAgICAgICAgICAgaWNvbnNbbmFtZV0gPSBzdmc7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlZFtuYW1lXTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoVUlraXQuX2luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgYXBwbHkoZG9jdW1lbnQuYm9keSwgZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlYWNoKFVJa2l0LmdldENvbXBvbmVudHMoZWwpLCBmdW5jdGlvbiAoY21wKSB7IHJldHVybiBjbXAuJG9wdGlvbnMuaXNJY29uICYmIGNtcC5pY29uIGluIGFkZGVkICYmIGNtcC4kcmVzZXQoKTsgfVxuICAgICAgICAgICAgICAgICAgICApOyB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRJY29uKGljb24pIHtcblxuICAgICAgICBpZiAoIWljb25zW2ljb25dKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghcGFyc2VkW2ljb25dKSB7XG4gICAgICAgICAgICBwYXJzZWRbaWNvbl0gPSAkKGljb25zW2ljb25dLnRyaW0oKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyc2VkW2ljb25dO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFwcGx5UnRsKGljb24pIHtcbiAgICAgICAgcmV0dXJuIGlzUnRsID8gc3dhcChzd2FwKGljb24sICdsZWZ0JywgJ3JpZ2h0JyksICdwcmV2aW91cycsICduZXh0JykgOiBpY29uO1xuICAgIH1cblxuICAgIHZhciBJbWcgPSB7XG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRhdGFTcmM6IFN0cmluZyxcbiAgICAgICAgICAgIGRhdGFTcmNzZXQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBkYXRhU2l6ZXM6IEJvb2xlYW4sXG4gICAgICAgICAgICBzaXplczogU3RyaW5nLFxuICAgICAgICAgICAgd2lkdGg6IE51bWJlcixcbiAgICAgICAgICAgIGhlaWdodDogTnVtYmVyLFxuICAgICAgICAgICAgZGF0YVdpZHRoOiBOdW1iZXIsXG4gICAgICAgICAgICBkYXRhSGVpZ2h0OiBOdW1iZXIsXG4gICAgICAgICAgICBvZmZzZXRUb3A6IFN0cmluZyxcbiAgICAgICAgICAgIG9mZnNldExlZnQ6IFN0cmluZyxcbiAgICAgICAgICAgIHRhcmdldDogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZGF0YVNyYzogJycsXG4gICAgICAgICAgICBkYXRhU3Jjc2V0OiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGFTaXplczogZmFsc2UsXG4gICAgICAgICAgICBzaXplczogZmFsc2UsXG4gICAgICAgICAgICB3aWR0aDogZmFsc2UsXG4gICAgICAgICAgICBoZWlnaHQ6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiAnNTB2aCcsXG4gICAgICAgICAgICBvZmZzZXRMZWZ0OiAwLFxuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIGNhY2hlS2V5OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YVNyYyA9IHJlZi5kYXRhU3JjO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy4kbmFtZSkgKyBcIi5cIiArIGRhdGFTcmMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgd2lkdGg6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZi53aWR0aDtcbiAgICAgICAgICAgICAgICB2YXIgZGF0YVdpZHRoID0gcmVmLmRhdGFXaWR0aDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB3aWR0aCQkMSB8fCBkYXRhV2lkdGg7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoZWlnaHQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWYuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciBkYXRhSGVpZ2h0ID0gcmVmLmRhdGFIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0JCQxIHx8IGRhdGFIZWlnaHQ7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaXplczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNpemVzID0gcmVmLnNpemVzO1xuICAgICAgICAgICAgICAgIHZhciBkYXRhU2l6ZXMgPSByZWYuZGF0YVNpemVzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemVzIHx8IGRhdGFTaXplcztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGlzSW1nOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNJbWcoJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMuJGVsXS5jb25jYXQocXVlcnlBbGwodGFyZ2V0LCB0aGlzLiRlbCkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgb2Zmc2V0VG9wID0gcmVmLm9mZnNldFRvcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0b1B4KG9mZnNldFRvcCwgJ2hlaWdodCcpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgb2Zmc2V0TGVmdDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG9mZnNldExlZnQgPSByZWYub2Zmc2V0TGVmdDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0b1B4KG9mZnNldExlZnQsICd3aWR0aCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgaWYgKHN0b3JhZ2VbdGhpcy5jYWNoZUtleV0pIHtcbiAgICAgICAgICAgICAgICBzZXRTcmNBdHRycyh0aGlzLiRlbCwgc3RvcmFnZVt0aGlzLmNhY2hlS2V5XSB8fCB0aGlzLmRhdGFTcmMsIHRoaXMuZGF0YVNyY3NldCwgdGhpcy5zaXplcyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNJbWcgJiYgdGhpcy53aWR0aCAmJiB0aGlzLmhlaWdodCkge1xuICAgICAgICAgICAgICAgIHNldFNyY0F0dHJzKHRoaXMuJGVsLCBnZXRQbGFjZWhvbGRlckltYWdlKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LCB0aGlzLnNpemVzKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGVsYXkgPSByZWYuZGVsYXk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbWFnZSA9IHJlZi5pbWFnZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZSB8fCAhdGhpcy50YXJnZXQuc29tZShmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGlzSW5WaWV3KGVsLCB0aGlzJDEub2Zmc2V0VG9wLCB0aGlzJDEub2Zmc2V0TGVmdCwgdHJ1ZSk7IH0pKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc0ltZyAmJiBpbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlLnRoZW4oZnVuY3Rpb24gKGltZykgeyByZXR1cm4gaW1nICYmIHNldFNyY0F0dHJzKHRoaXMkMS4kZWwsIGN1cnJlbnRTcmMoaW1nKSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IGdldEltYWdlKHRoaXMuZGF0YVNyYywgdGhpcy5kYXRhU3Jjc2V0LCB0aGlzLnNpemVzKS50aGVuKGZ1bmN0aW9uIChpbWcpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNyY0F0dHJzKHRoaXMkMS4kZWwsIGN1cnJlbnRTcmMoaW1nKSwgaW1nLnNyY3NldCwgaW1nLnNpemVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlW3RoaXMkMS5jYWNoZUtleV0gPSBjdXJyZW50U3JjKGltZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgbm9vcClcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEdpdmUgcGxhY2Vob2xkZXIgaW1hZ2VzIHRpbWUgdG8gYXBwbHkgdGhlaXIgZGltZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEkJDEuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhJCQxLmRlbGF5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydzY3JvbGwnLCAnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHNldFNyY0F0dHJzKGVsLCBzcmMsIHNyY3NldCwgc2l6ZXMpIHtcblxuICAgICAgICBpZiAoaXNJbWcoZWwpKSB7XG4gICAgICAgICAgICBzcmMgJiYgKGVsLnNyYyA9IHNyYyk7XG4gICAgICAgICAgICBzcmNzZXQgJiYgKGVsLnNyY3NldCA9IHNyY3NldCk7XG4gICAgICAgICAgICBzaXplcyAmJiAoZWwuc2l6ZXMgPSBzaXplcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzcmMgJiYgY3NzKGVsLCAnYmFja2dyb3VuZEltYWdlJywgKFwidXJsKFwiICsgc3JjICsgXCIpXCIpKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgdmFyIHVybENhY2hlID0ge307XG4gICAgdmFyIHNpemVzUmUgPSAvXFxzKiguKj8pXFxzKihcXHcrfGNhbGNcXCguKj9cXCkpXFxzKig/Oix8JCkvZztcbiAgICBmdW5jdGlvbiBnZXRQbGFjZWhvbGRlckltYWdlKHdpZHRoJCQxLCBoZWlnaHQkJDEsIHNpemVzLCBjb2xvcikge1xuICAgICAgICB2YXIgYXNzaWduJCQxO1xuXG4gICAgICAgIGlmICggY29sb3IgPT09IHZvaWQgMCApIGNvbG9yID0gJ3RyYW5zcGFyZW50JztcblxuICAgICAgICBpZiAoc2l6ZXMpIHtcbiAgICAgICAgICAgIHZhciBtYXRjaGVzJCQxO1xuXG4gICAgICAgICAgICB3aGlsZSAoKG1hdGNoZXMkJDEgPSBzaXplc1JlLmV4ZWMoc2l6ZXMpKSkge1xuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcyQkMVsxXSB8fCB3aW5kb3cubWF0Y2hNZWRpYShtYXRjaGVzJCQxWzFdKS5tYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoZXMkJDEgPSBldmFsdWF0ZVNpemUobWF0Y2hlcyQkMVsyXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2l6ZXNSZS5sYXN0SW5kZXggPSAwO1xuXG4gICAgICAgICAgICAoKGFzc2lnbiQkMSA9IERpbWVuc2lvbnMucmF0aW8oe3dpZHRoOiB3aWR0aCQkMSwgaGVpZ2h0OiBoZWlnaHQkJDF9LCAnd2lkdGgnLCB0b1B4KG1hdGNoZXMkJDEgfHwgJzEwMHZ3JykpLCB3aWR0aCQkMSA9IGFzc2lnbiQkMS53aWR0aCwgaGVpZ2h0JCQxID0gYXNzaWduJCQxLmhlaWdodCkpO1xuXG4gICAgICAgIH1cblxuICAgICAgICB2YXIga2V5ID0gd2lkdGgkJDEgKyBcIi5cIiArIGhlaWdodCQkMSArIFwiLlwiICsgY29sb3I7XG4gICAgICAgIGlmICh1cmxDYWNoZVtrZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gdXJsQ2FjaGVba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjYW52YXMgPSBmcmFnbWVudCgnPGNhbnZhcz4nKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGgkJDE7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQkJDE7XG5cbiAgICAgICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBjb2xvcjtcbiAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCB3aWR0aCQkMSwgaGVpZ2h0JCQxKTtcblxuICAgICAgICByZXR1cm4gdXJsQ2FjaGVba2V5XSA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuICAgIH1cblxuICAgIHZhciBzaXplUmUgPSAvXFxkKyg/Olxcdyt8JSkvZztcbiAgICB2YXIgYWRkaXRpb25SZSA9IC9bKy1dPyhcXGQrKS9nO1xuICAgIGZ1bmN0aW9uIGV2YWx1YXRlU2l6ZShzaXplKSB7XG4gICAgICAgIHJldHVybiBzdGFydHNXaXRoKHNpemUsICdjYWxjJylcbiAgICAgICAgICAgID8gc2l6ZVxuICAgICAgICAgICAgICAgIC5zdWJzdHJpbmcoNSwgc2l6ZS5sZW5ndGggLSAxKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKHNpemVSZSwgZnVuY3Rpb24gKHNpemUpIHsgcmV0dXJuIHRvUHgoc2l6ZSk7IH0pXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLyAvZywgJycpXG4gICAgICAgICAgICAgICAgLm1hdGNoKGFkZGl0aW9uUmUpXG4gICAgICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSArICtiOyB9LCAwKVxuICAgICAgICAgICAgOiBzaXplO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvUHgodmFsdWUsIHByb3BlcnR5LCBlbGVtZW50KSB7XG4gICAgICAgIGlmICggcHJvcGVydHkgPT09IHZvaWQgMCApIHByb3BlcnR5ID0gJ3dpZHRoJztcbiAgICAgICAgaWYgKCBlbGVtZW50ID09PSB2b2lkIDAgKSBlbGVtZW50ID0gd2luZG93O1xuXG4gICAgICAgIHJldHVybiBpc051bWVyaWModmFsdWUpXG4gICAgICAgICAgICA/ICt2YWx1ZVxuICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJ3Z3JylcbiAgICAgICAgICAgICAgICA/IHBlcmNlbnQoZWxlbWVudCwgJ3dpZHRoJywgdmFsdWUpXG4gICAgICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJ3ZoJylcbiAgICAgICAgICAgICAgICAgICAgPyBwZXJjZW50KGVsZW1lbnQsICdoZWlnaHQnLCB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiBlbmRzV2l0aCh2YWx1ZSwgJyUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwZXJjZW50KGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdG9GbG9hdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdmFyIGRpbWVuc2lvbnMgPSB7aGVpZ2h0OiBoZWlnaHQsIHdpZHRoOiB3aWR0aH07XG4gICAgZnVuY3Rpb24gcGVyY2VudChlbGVtZW50LCBwcm9wZXJ0eSwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGRpbWVuc2lvbnNbcHJvcGVydHldKGVsZW1lbnQpICogdG9GbG9hdCh2YWx1ZSkgLyAxMDA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNJbWcoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsLnRhZ05hbWUgPT09ICdJTUcnO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGN1cnJlbnRTcmMoZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsLmN1cnJlbnRTcmMgfHwgZWwuc3JjO1xuICAgIH1cblxuICAgIHZhciBrZXkgPSAnX190ZXN0X18nO1xuICAgIHZhciBzdG9yYWdlO1xuXG4gICAgLy8gd29ya2Fyb3VuZCBmb3IgU2FmYXJpJ3MgcHJpdmF0ZSBicm93c2luZyBtb2RlIGFuZCBhY2Nlc3Npbmcgc2Vzc2lvblN0b3JhZ2UgaW4gQmxpbmtcbiAgICB0cnkge1xuICAgICAgICBzdG9yYWdlID0gd2luZG93LnNlc3Npb25TdG9yYWdlIHx8IHt9O1xuICAgICAgICBzdG9yYWdlW2tleV0gPSAxO1xuICAgICAgICBkZWxldGUgc3RvcmFnZVtrZXldO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgc3RvcmFnZSA9IHt9O1xuICAgIH1cblxuICAgIHZhciBMZWFkZXIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBmaWxsOiBTdHJpbmcsXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGZpbGw6ICcnLFxuICAgICAgICAgICAgbWVkaWE6IGZhbHNlLFxuICAgICAgICAgICAgY2xzV3JhcHBlcjogJ3VrLWxlYWRlci1maWxsJyxcbiAgICAgICAgICAgIGNsc0hpZGU6ICd1ay1sZWFkZXItaGlkZScsXG4gICAgICAgICAgICBhdHRyRmlsbDogJ2RhdGEtZmlsbCdcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBmaWxsOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgZmlsbCA9IHJlZi5maWxsO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbGwgfHwgZ2V0Q3NzVmFyKCdsZWFkZXItZmlsbCcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBhc3NpZ24kJDE7XG5cbiAgICAgICAgICAgIChhc3NpZ24kJDEgPSB3cmFwSW5uZXIodGhpcy4kZWwsIChcIjxzcGFuIGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc1dyYXBwZXIpICsgXCJcXFwiPlwiKSksIHRoaXMud3JhcHBlciA9IGFzc2lnbiQkMVswXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHVud3JhcCh0aGlzLndyYXBwZXIuY2hpbGROb2Rlcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIHJlYWQ6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2hhbmdlZCA9IHJlZi5jaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGgkJDEgPSByZWYud2lkdGg7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHdpZHRoJCQxO1xuXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoJCQxID0gTWF0aC5mbG9vcih0aGlzLiRlbC5vZmZzZXRXaWR0aCAvIDIpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGgkJDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkOiBjaGFuZ2VkIHx8IHByZXYgIT09IHdpZHRoJCQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlkZTogdGhpcy5tZWRpYSAmJiAhd2luZG93Lm1hdGNoTWVkaWEodGhpcy5tZWRpYSkubWF0Y2hlc1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMud3JhcHBlciwgdGhpcy5jbHNIaWRlLCBkYXRhJCQxLmhpZGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhJCQxLmNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cih0aGlzLndyYXBwZXIsIHRoaXMuYXR0ckZpbGwsIG5ldyBBcnJheShkYXRhJCQxLndpZHRoKS5qb2luKHRoaXMuZmlsbCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIENvbnRhaW5lciA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY29udGFpbmVyOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY29udGFpbmVyOiB0cnVlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgY29udGFpbmVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyID0gcmVmLmNvbnRhaW5lcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBjb250YWluZXIgPT09IHRydWUgJiYgdGhpcy4kY29udGFpbmVyIHx8IGNvbnRhaW5lciAmJiAkKGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBhY3RpdmUkMTtcblxuICAgIHZhciBNb2RhbCA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzcywgQ29udGFpbmVyLCBUb2dnbGFibGVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBzZWxQYW5lbDogU3RyaW5nLFxuICAgICAgICAgICAgc2VsQ2xvc2U6IFN0cmluZyxcbiAgICAgICAgICAgIGVzY0Nsb3NlOiBCb29sZWFuLFxuICAgICAgICAgICAgYmdDbG9zZTogQm9vbGVhbixcbiAgICAgICAgICAgIHN0YWNrOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2xzOiAndWstb3BlbicsXG4gICAgICAgICAgICBlc2NDbG9zZTogdHJ1ZSxcbiAgICAgICAgICAgIGJnQ2xvc2U6IHRydWUsXG4gICAgICAgICAgICBvdmVybGF5OiB0cnVlLFxuICAgICAgICAgICAgc3RhY2s6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgcGFuZWw6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbFBhbmVsID0gcmVmLnNlbFBhbmVsO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsUGFuZWwsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRWxlbWVudDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b01zKGNzcyh0aGlzLnRyYW5zaXRpb25FbGVtZW50LCAndHJhbnNpdGlvbkR1cmF0aW9uJykpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYmdDbG9zZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJnQ2xvc2UgPSByZWYuYmdDbG9zZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBiZ0Nsb3NlICYmIHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsQ2xvc2U7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICd0b2dnbGUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZXNob3cnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IGFjdGl2ZSQxICYmIGFjdGl2ZSQxICE9PSB0aGlzICYmIGFjdGl2ZSQxO1xuXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZSQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LmhpZGUoKS50aGVuKHRoaXMuc2hvdyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyRXZlbnRzKCk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnYmVmb3JlaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlJDEgPSBhY3RpdmUkMSAmJiBhY3RpdmUkMSAhPT0gdGhpcyAmJiBhY3RpdmUkMSB8fCB0aGlzLnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhY3RpdmUkMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVyZWdpc3RlckV2ZW50cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc0NsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNQYWdlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxiYXJXaWR0aCA9IHdpZHRoKHdpbmRvdykgLSB3aWR0aChkb2N1bWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93WScsIHRoaXMuc2Nyb2xsYmFyV2lkdGggJiYgdGhpcy5vdmVybGF5ID8gJ3Njcm9sbCcgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHRoaXMuY2xzUGFnZSk7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBmb3VuZDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gcmVmLnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHByZXYpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYuY2xzUGFnZSA9PT0gdGhpcyQxLmNsc1BhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXYgPSBwcmV2LnByZXY7XG5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNQYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgIXRoaXMucHJldiAmJiBjc3MoZG9jdW1lbnQuYm9keSwgJ292ZXJmbG93WScsICcnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdG9nZ2xlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZWQoKSA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbnRhaW5lciAmJiB0aGlzLiRlbC5wYXJlbnROb2RlICE9PSB0aGlzLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICBhcHBlbmQodGhpcy5jb250YWluZXIsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2FsbENvbm5lY3RlZCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZU5vdyh0aGlzLiRlbCwgdHJ1ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc1RvZ2dsZWQoKVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMudG9nZ2xlTm93KHRoaXMuJGVsLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgOiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0QWN0aXZlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWN0aXZlJDE7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfdG9nZ2xlSW1tZWRpYXRlOiBmdW5jdGlvbihlbCwgc2hvdykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RvZ2dsZShlbCwgc2hvdyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEudHJhbnNpdGlvbkR1cmF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jZSh0aGlzJDEudHJhbnNpdGlvbkVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgcmVzb2x2ZSwgZmFsc2UsIGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLnRhcmdldCA9PT0gdGhpcyQxLnRyYW5zaXRpb25FbGVtZW50OyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTsgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBldmVudHM7XG5cbiAgICBmdW5jdGlvbiByZWdpc3RlckV2ZW50cygpIHtcblxuICAgICAgICBpZiAoZXZlbnRzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBldmVudHMgPSBbXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuICAgICAgICAgICAgICAgIHZhciBkZWZhdWx0UHJldmVudGVkID0gcmVmLmRlZmF1bHRQcmV2ZW50ZWQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlJDEgJiYgYWN0aXZlJDEuYmdDbG9zZSAmJiAhZGVmYXVsdFByZXZlbnRlZCAmJiAoIWFjdGl2ZSQxLm92ZXJsYXkgfHwgd2l0aGluKHRhcmdldCwgYWN0aXZlJDEuJGVsKSkgJiYgIXdpdGhpbih0YXJnZXQsIGFjdGl2ZSQxLnBhbmVsKSkge1xuICAgICAgICAgICAgICAgICAgICBhY3RpdmUkMS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBvbihkb2N1bWVudCwgJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgIGlmIChlLmtleUNvZGUgPT09IDI3ICYmIGFjdGl2ZSQxICYmIGFjdGl2ZSQxLmVzY0Nsb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlJDEuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVyZWdpc3RlckV2ZW50cygpIHtcbiAgICAgICAgZXZlbnRzICYmIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uICh1bmJpbmQpIHsgcmV0dXJuIHVuYmluZCgpOyB9KTtcbiAgICAgICAgZXZlbnRzID0gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgTW9kYWwkMSA9IHtcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDEsXG5cbiAgICAgICAgbWl4aW5zOiBbTW9kYWxdLFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNsc1BhZ2U6ICd1ay1tb2RhbC1wYWdlJyxcbiAgICAgICAgICAgIHNlbFBhbmVsOiAnLnVrLW1vZGFsLWRpYWxvZycsXG4gICAgICAgICAgICBzZWxDbG9zZTogJy51ay1tb2RhbC1jbG9zZSwgLnVrLW1vZGFsLWNsb3NlLWRlZmF1bHQsIC51ay1tb2RhbC1jbG9zZS1vdXRzaWRlLCAudWstbW9kYWwtY2xvc2UtZnVsbCdcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2xhc3ModGhpcy5wYW5lbCwgJ3VrLW1hcmdpbi1hdXRvLXZlcnRpY2FsJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstZmxleCcpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICdibG9jaycpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KHRoaXMuJGVsKTsgLy8gZm9yY2UgcmVmbG93XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRkZW4nLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ2Rpc3BsYXknLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCAndWstZmxleCcpO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsJDEgKFVJa2l0KSB7XG5cbiAgICAgICAgVUlraXQubW9kYWwuZGlhbG9nID0gZnVuY3Rpb24gKGNvbnRlbnQsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgdmFyIGRpYWxvZyA9IFVJa2l0Lm1vZGFsKChcIiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbFxcXCI+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWRpYWxvZ1xcXCI+XCIgKyBjb250ZW50ICsgXCI8L2Rpdj4gPC9kaXY+IFwiKSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIGRpYWxvZy5zaG93KCk7XG5cbiAgICAgICAgICAgIG9uKGRpYWxvZy4kZWwsICdoaWRkZW4nLCBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUYXJnZXQgPSByZWYuY3VycmVudFRhcmdldDtcblxuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IGN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlhbG9nLiRkZXN0cm95KHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZGlhbG9nO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLmFsZXJ0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IGFzc2lnbih7YmdDbG9zZTogZmFsc2UsIGVzY0Nsb3NlOiBmYWxzZSwgbGFiZWxzOiBVSWtpdC5tb2RhbC5sYWJlbHN9LCBvcHRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIG9uKFVJa2l0Lm1vZGFsLmRpYWxvZygoXCIgPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtYm9keVxcXCI+XCIgKyAoaXNTdHJpbmcobWVzc2FnZSkgPyBtZXNzYWdlIDogaHRtbChtZXNzYWdlKSkgKyBcIjwvZGl2PiA8ZGl2IGNsYXNzPVxcXCJ1ay1tb2RhbC1mb290ZXIgdWstdGV4dC1yaWdodFxcXCI+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSB1ay1tb2RhbC1jbG9zZVxcXCIgYXV0b2ZvY3VzPlwiICsgKG9wdGlvbnMubGFiZWxzLm9rKSArIFwiPC9idXR0b24+IDwvZGl2PiBcIiksIG9wdGlvbnMpLiRlbCwgJ2hpZGUnLCByZXNvbHZlKTsgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcblxuICAgICAgICBVSWtpdC5tb2RhbC5jb25maXJtID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG9wdGlvbnMpIHtcblxuICAgICAgICAgICAgb3B0aW9ucyA9IGFzc2lnbih7YmdDbG9zZTogZmFsc2UsIGVzY0Nsb3NlOiB0cnVlLCBsYWJlbHM6IFVJa2l0Lm1vZGFsLmxhYmVsc30sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgY29uZmlybSA9IFVJa2l0Lm1vZGFsLmRpYWxvZygoXCIgPGZvcm0+IDxkaXYgY2xhc3M9XFxcInVrLW1vZGFsLWJvZHlcXFwiPlwiICsgKGlzU3RyaW5nKG1lc3NhZ2UpID8gbWVzc2FnZSA6IGh0bWwobWVzc2FnZSkpICsgXCI8L2Rpdj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHRcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstbW9kYWwtY2xvc2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMuY2FuY2VsKSArIFwiPC9idXR0b24+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeVxcXCIgYXV0b2ZvY3VzPlwiICsgKG9wdGlvbnMubGFiZWxzLm9rKSArIFwiPC9idXR0b24+IDwvZGl2PiA8L2Zvcm0+IFwiKSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIG9uKGNvbmZpcm0uJGVsLCAnc3VibWl0JywgJ2Zvcm0nLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb25maXJtLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBvbihjb25maXJtLiRlbCwgJ2hpZGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLnByb21wdCA9IGZ1bmN0aW9uIChtZXNzYWdlLCB2YWx1ZSwgb3B0aW9ucykge1xuXG4gICAgICAgICAgICBvcHRpb25zID0gYXNzaWduKHtiZ0Nsb3NlOiBmYWxzZSwgZXNjQ2xvc2U6IHRydWUsIGxhYmVsczogVUlraXQubW9kYWwubGFiZWxzfSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSQxKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcHJvbXB0ID0gVUlraXQubW9kYWwuZGlhbG9nKChcIiA8Zm9ybSBjbGFzcz1cXFwidWstZm9ybS1zdGFja2VkXFxcIj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtYm9keVxcXCI+IDxsYWJlbD5cIiArIChpc1N0cmluZyhtZXNzYWdlKSA/IG1lc3NhZ2UgOiBodG1sKG1lc3NhZ2UpKSArIFwiPC9sYWJlbD4gPGlucHV0IGNsYXNzPVxcXCJ1ay1pbnB1dFxcXCIgYXV0b2ZvY3VzPiA8L2Rpdj4gPGRpdiBjbGFzcz1cXFwidWstbW9kYWwtZm9vdGVyIHVrLXRleHQtcmlnaHRcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstbW9kYWwtY2xvc2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMuY2FuY2VsKSArIFwiPC9idXR0b24+IDxidXR0b24gY2xhc3M9XFxcInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeVxcXCI+XCIgKyAob3B0aW9ucy5sYWJlbHMub2spICsgXCI8L2J1dHRvbj4gPC9kaXY+IDwvZm9ybT4gXCIpLCBvcHRpb25zKSxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSAkKCdpbnB1dCcsIHByb21wdC4kZWwpO1xuXG4gICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgb24ocHJvbXB0LiRlbCwgJ3N1Ym1pdCcsICdmb3JtJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGlucHV0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBwcm9tcHQuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG9uKHByb21wdC4kZWwsICdoaWRlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc29sdmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuXG4gICAgICAgIFVJa2l0Lm1vZGFsLmxhYmVscyA9IHtcbiAgICAgICAgICAgIG9rOiAnT2snLFxuICAgICAgICAgICAgY2FuY2VsOiAnQ2FuY2VsJ1xuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgdmFyIE5hdiA9IHtcblxuICAgICAgICBleHRlbmRzOiBBY2NvcmRpb24sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0czogJz4gLnVrLXBhcmVudCcsXG4gICAgICAgICAgICB0b2dnbGU6ICc+IGEnLFxuICAgICAgICAgICAgY29udGVudDogJz4gdWwnXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgTmF2YmFyID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZHJvcGRvd246IFN0cmluZyxcbiAgICAgICAgICAgIG1vZGU6ICdsaXN0JyxcbiAgICAgICAgICAgIGFsaWduOiBTdHJpbmcsXG4gICAgICAgICAgICBvZmZzZXQ6IE51bWJlcixcbiAgICAgICAgICAgIGJvdW5kYXJ5OiBCb29sZWFuLFxuICAgICAgICAgICAgYm91bmRhcnlBbGlnbjogQm9vbGVhbixcbiAgICAgICAgICAgIGNsc0Ryb3A6IFN0cmluZyxcbiAgICAgICAgICAgIGRlbGF5U2hvdzogTnVtYmVyLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiBOdW1iZXIsXG4gICAgICAgICAgICBkcm9wYmFyOiBCb29sZWFuLFxuICAgICAgICAgICAgZHJvcGJhck1vZGU6IFN0cmluZyxcbiAgICAgICAgICAgIGRyb3BiYXJBbmNob3I6IEJvb2xlYW4sXG4gICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZHJvcGRvd246ICcudWstbmF2YmFyLW5hdiA+IGxpJyxcbiAgICAgICAgICAgIGFsaWduOiAhaXNSdGwgPyAnbGVmdCcgOiAncmlnaHQnLFxuICAgICAgICAgICAgY2xzRHJvcDogJ3VrLW5hdmJhci1kcm9wZG93bicsXG4gICAgICAgICAgICBtb2RlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBvZmZzZXQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGRlbGF5U2hvdzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGVsYXlIaWRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBib3VuZGFyeUFsaWduOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBmbGlwOiAneCcsXG4gICAgICAgICAgICBib3VuZGFyeTogdHJ1ZSxcbiAgICAgICAgICAgIGRyb3BiYXI6IGZhbHNlLFxuICAgICAgICAgICAgZHJvcGJhck1vZGU6ICdzbGlkZScsXG4gICAgICAgICAgICBkcm9wYmFyQW5jaG9yOiBmYWxzZSxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAsXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgYm91bmRhcnk6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gcmVmLmJvdW5kYXJ5O1xuICAgICAgICAgICAgICAgIHZhciBib3VuZGFyeUFsaWduID0gcmVmLmJvdW5kYXJ5QWxpZ247XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGJvdW5kYXJ5ID09PSB0cnVlIHx8IGJvdW5kYXJ5QWxpZ24pID8gJGVsIDogYm91bmRhcnk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcm9wYmFyQW5jaG9yOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBkcm9wYmFyQW5jaG9yID0gcmVmLmRyb3BiYXJBbmNob3I7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkoZHJvcGJhckFuY2hvciwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBvczogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGFsaWduID0gcmVmLmFsaWduO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcImJvdHRvbS1cIiArIGFsaWduKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyb3Bkb3duczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgZHJvcGRvd24gPSByZWYuZHJvcGRvd247XG4gICAgICAgICAgICAgICAgdmFyIGNsc0Ryb3AgPSByZWYuY2xzRHJvcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkJCgoZHJvcGRvd24gKyBcIiAuXCIgKyBjbHNEcm9wKSwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGJlZm9yZUNvbm5lY3Q6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB2YXIgcmVmID0gdGhpcy4kcHJvcHM7XG4gICAgICAgICAgICB2YXIgZHJvcGJhciA9IHJlZi5kcm9wYmFyO1xuXG4gICAgICAgICAgICB0aGlzLmRyb3BiYXIgPSBkcm9wYmFyICYmIChxdWVyeShkcm9wYmFyLCB0aGlzLiRlbCkgfHwgJCgnKyAudWstbmF2YmFyLWRyb3BiYXInLCB0aGlzLiRlbCkgfHwgJCgnPGRpdj48L2Rpdj4nKSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRyb3BiYXIpIHtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZHJvcGJhciwgJ3VrLW5hdmJhci1kcm9wYmFyJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kcm9wYmFyTW9kZSA9PT0gJ3NsaWRlJykge1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLmRyb3BiYXIsICd1ay1uYXZiYXItZHJvcGJhci1zbGlkZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGRpc2Nvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3BiYXIgJiYgcmVtb3ZlKHRoaXMuZHJvcGJhcik7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHRoaXMuJGNyZWF0ZShcbiAgICAgICAgICAgICAgICAnZHJvcCcsXG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bnMuZmlsdGVyKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gIXRoaXMkMS5nZXREcm9wZG93bihlbCk7IH0pLFxuICAgICAgICAgICAgICAgIGFzc2lnbih7fSwgdGhpcy4kcHJvcHMsIHtib3VuZGFyeTogdGhpcy5ib3VuZGFyeSwgcG9zOiB0aGlzLnBvcywgb2Zmc2V0OiB0aGlzLmRyb3BiYXIgfHwgdGhpcy5vZmZzZXR9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlb3ZlcicsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiBhY3RpdmUudG9nZ2xlICYmICF3aXRoaW4oYWN0aXZlLnRvZ2dsZS4kZWwsIGN1cnJlbnQpICYmICFhY3RpdmUudHJhY2tlci5tb3Zlc1RvKGFjdGl2ZS4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZShmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnbW91c2VsZWF2ZScsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlICYmICFtYXRjaGVzKHRoaXMuZHJvcGJhciwgJzpob3ZlcicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzaG93JyxcblxuICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZHJvcGJhci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhZnRlcih0aGlzLmRyb3BiYXJBbmNob3IgfHwgdGhpcy4kZWwsIHRoaXMuZHJvcGJhcik7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2hvdycsXG5cbiAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oXywgZHJvcCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciAkZWwgPSBkcm9wLiRlbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IGRyb3AuZGlyO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2xzRHJvcCAmJiBhZGRDbGFzcygkZWwsICgodGhpcy5jbHNEcm9wKSArIFwiLWRyb3BiYXJcIikpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkaXIgPT09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbygkZWwub2Zmc2V0SGVpZ2h0ICsgdG9GbG9hdChjc3MoJGVsLCAnbWFyZ2luVG9wJykpICsgdG9GbG9hdChjc3MoJGVsLCAnbWFyZ2luQm90dG9tJykpLCAkZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVoaWRlJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRyb3BiYXI7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUsIHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJGVsID0gcmVmLiRlbDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBhY3RpdmUgPSB0aGlzLmdldEFjdGl2ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGVzKHRoaXMuZHJvcGJhciwgJzpob3ZlcicpICYmIGFjdGl2ZSAmJiBhY3RpdmUuJGVsID09PSAkZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcm9wYmFyO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihfLCByZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICRlbCA9IHJlZi4kZWw7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSB8fCBhY3RpdmUgJiYgYWN0aXZlLiRlbCA9PT0gJGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UbygwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgZ2V0QWN0aXZlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy5kcm9wZG93bnMubWFwKHRoaXMuZ2V0RHJvcGRvd24pLmZpbHRlcihmdW5jdGlvbiAoZHJvcCkgeyByZXR1cm4gZHJvcC5pc0FjdGl2ZSgpOyB9KTtcbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY3RpdmUgJiYgaW5jbHVkZXMoYWN0aXZlLm1vZGUsICdob3ZlcicpICYmIHdpdGhpbihhY3RpdmUudG9nZ2xlLiRlbCwgdGhpcy4kZWwpICYmIGFjdGl2ZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zaXRpb25UbzogZnVuY3Rpb24obmV3SGVpZ2h0LCBlbCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIGRyb3BiYXIgPSByZWYuZHJvcGJhcjtcbiAgICAgICAgICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gaXNWaXNpYmxlKGRyb3BiYXIpID8gaGVpZ2h0KGRyb3BiYXIpIDogMDtcblxuICAgICAgICAgICAgICAgIGVsID0gb2xkSGVpZ2h0IDwgbmV3SGVpZ2h0ICYmIGVsO1xuXG4gICAgICAgICAgICAgICAgY3NzKGVsLCAnY2xpcCcsIChcInJlY3QoMCxcIiArIChlbC5vZmZzZXRXaWR0aCkgKyBcInB4LFwiICsgb2xkSGVpZ2h0ICsgXCJweCwwKVwiKSk7XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQoZHJvcGJhciwgb2xkSGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtlbCwgZHJvcGJhcl0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoZHJvcGJhciwge2hlaWdodDogbmV3SGVpZ2h0fSwgdGhpcy5kdXJhdGlvbiksXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoZWwsIHtjbGlwOiAoXCJyZWN0KDAsXCIgKyAoZWwub2Zmc2V0V2lkdGgpICsgXCJweCxcIiArIG5ld0hlaWdodCArIFwicHgsMClcIil9LCB0aGlzLmR1cmF0aW9uKVxuICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChub29wKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiBjc3MoZWwsIHtjbGlwOiAnJ30pOyB9KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldERyb3Bkb3duOiBmdW5jdGlvbihlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiRnZXRDb21wb25lbnQoZWwsICdkcm9wJykgfHwgdGhpcy4kZ2V0Q29tcG9uZW50KGVsLCAnZHJvcGRvd24nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIHNjcm9sbDtcblxuICAgIHZhciBPZmZjYW52YXMgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbTW9kYWxdLFxuXG4gICAgICAgIGFyZ3M6ICdtb2RlJyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY29udGVudDogU3RyaW5nLFxuICAgICAgICAgICAgbW9kZTogU3RyaW5nLFxuICAgICAgICAgICAgZmxpcDogQm9vbGVhbixcbiAgICAgICAgICAgIG92ZXJsYXk6IEJvb2xlYW5cbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBjb250ZW50OiAnLnVrLW9mZmNhbnZhcy1jb250ZW50JyxcbiAgICAgICAgICAgIG1vZGU6ICdzbGlkZScsXG4gICAgICAgICAgICBmbGlwOiBmYWxzZSxcbiAgICAgICAgICAgIG92ZXJsYXk6IGZhbHNlLFxuICAgICAgICAgICAgY2xzUGFnZTogJ3VrLW9mZmNhbnZhcy1wYWdlJyxcbiAgICAgICAgICAgIGNsc0NvbnRhaW5lcjogJ3VrLW9mZmNhbnZhcy1jb250YWluZXInLFxuICAgICAgICAgICAgc2VsUGFuZWw6ICcudWstb2ZmY2FudmFzLWJhcicsXG4gICAgICAgICAgICBjbHNGbGlwOiAndWstb2ZmY2FudmFzLWZsaXAnLFxuICAgICAgICAgICAgY2xzQ29udGVudDogJ3VrLW9mZmNhbnZhcy1jb250ZW50JyxcbiAgICAgICAgICAgIGNsc0NvbnRlbnRBbmltYXRpb246ICd1ay1vZmZjYW52YXMtY29udGVudC1hbmltYXRpb24nLFxuICAgICAgICAgICAgY2xzU2lkZWJhckFuaW1hdGlvbjogJ3VrLW9mZmNhbnZhcy1iYXItYW5pbWF0aW9uJyxcbiAgICAgICAgICAgIGNsc01vZGU6ICd1ay1vZmZjYW52YXMnLFxuICAgICAgICAgICAgY2xzT3ZlcmxheTogJ3VrLW9mZmNhbnZhcy1vdmVybGF5JyxcbiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLW9mZmNhbnZhcy1jbG9zZSdcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBjb250ZW50OiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IHJlZi5jb250ZW50O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoY29udGVudCkgfHwgZG9jdW1lbnQuYm9keTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0ZsaXA6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBmbGlwID0gcmVmLmZsaXA7XG4gICAgICAgICAgICAgICAgdmFyIGNsc0ZsaXAgPSByZWYuY2xzRmxpcDtcblxuICAgICAgICAgICAgICAgIHJldHVybiBmbGlwID8gY2xzRmxpcCA6ICcnO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzT3ZlcmxheTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG92ZXJsYXkgPSByZWYub3ZlcmxheTtcbiAgICAgICAgICAgICAgICB2YXIgY2xzT3ZlcmxheSA9IHJlZi5jbHNPdmVybGF5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJsYXkgPyBjbHNPdmVybGF5IDogJyc7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjbHNNb2RlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgbW9kZSA9IHJlZi5tb2RlO1xuICAgICAgICAgICAgICAgIHZhciBjbHNNb2RlID0gcmVmLmNsc01vZGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGNsc01vZGUgKyBcIi1cIiArIG1vZGUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY2xzU2lkZWJhckFuaW1hdGlvbjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTtcbiAgICAgICAgICAgICAgICB2YXIgY2xzU2lkZWJhckFuaW1hdGlvbiA9IHJlZi5jbHNTaWRlYmFyQW5pbWF0aW9uO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vZGUgPT09ICdub25lJyB8fCBtb2RlID09PSAncmV2ZWFsJyA/ICcnIDogY2xzU2lkZWJhckFuaW1hdGlvbjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNsc0NvbnRlbnRBbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBtb2RlID0gcmVmLm1vZGU7XG4gICAgICAgICAgICAgICAgdmFyIGNsc0NvbnRlbnRBbmltYXRpb24gPSByZWYuY2xzQ29udGVudEFuaW1hdGlvbjtcblxuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlICE9PSAncHVzaCcgJiYgbW9kZSAhPT0gJ3JldmVhbCcgPyAnJyA6IGNsc0NvbnRlbnRBbmltYXRpb247XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2l0aW9uRWxlbWVudDogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1vZGUgPSByZWYubW9kZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBtb2RlID09PSAncmV2ZWFsJyA/IHRoaXMucGFuZWwucGFyZW50Tm9kZSA6IHRoaXMucGFuZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0QWN0aXZlKCkgPT09IHRoaXMpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5IHx8IHRoaXMuY2xzQ29udGVudEFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgodGhpcy5jb250ZW50LCB3aWR0aCh3aW5kb3cpIC0gdGhpcy5zY3JvbGxiYXJXaWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy5jb250ZW50LCBoZWlnaHQod2luZG93KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LnNjcm9sbFRvcCA9IHNjcm9sbC55O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGV2ZW50czogWydyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnYVtocmVmXj1cIiNcIl0nO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSByZWYuY3VycmVudDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5oYXNoICYmICQoY3VycmVudC5oYXNoLCB0aGlzLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdiZWZvcmVzY3JvbGwnLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSwgc2Nyb2xsLCB0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCAmJiB0YXJnZXQgJiYgdGhpcy5pc1RvZ2dsZWQoKSAmJiAkKHRhcmdldCwgdGhpcy5jb250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZSh0aGlzLiRlbCwgJ2hpZGRlbicsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNjcm9sbC5zY3JvbGxUbyh0YXJnZXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93JyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSBzY3JvbGwgfHwge3g6IHdpbmRvdy5wYWdlWE9mZnNldCwgeTogd2luZG93LnBhZ2VZT2Zmc2V0fTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAncmV2ZWFsJyAmJiAhaGFzQ2xhc3ModGhpcy5wYW5lbCwgdGhpcy5jbHNNb2RlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd3JhcEFsbCh0aGlzLnBhbmVsLCAnPGRpdj4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMucGFuZWwucGFyZW50Tm9kZSwgdGhpcy5jbHNNb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCAoIXRoaXMuY2xzQ29udGVudEFuaW1hdGlvbiB8fCB0aGlzLmZsaXApICYmIHRoaXMuc2Nyb2xsYmFyV2lkdGggJiYgdGhpcy5vdmVybGF5ID8gJ3Njcm9sbCcgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKGRvY3VtZW50LmJvZHksIHRoaXMuY2xzQ29udGFpbmVyLCB0aGlzLmNsc0ZsaXAsIHRoaXMuY2xzT3ZlcmxheSk7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodChkb2N1bWVudC5ib2R5KTsgLy8gZm9yY2UgcmVmbG93XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuY29udGVudCwgdGhpcy5jbHNDb250ZW50QW5pbWF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5wYW5lbCwgdGhpcy5jbHNTaWRlYmFyQW5pbWF0aW9uLCB0aGlzLm1vZGUgIT09ICdyZXZlYWwnID8gdGhpcy5jbHNNb2RlIDogJycpO1xuICAgICAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNPdmVybGF5KTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCAnZGlzcGxheScsICdibG9jaycpO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy4kZWwpOyAvLyBmb3JjZSByZWZsb3dcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZScsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuY29udGVudCwgdGhpcy5jbHNDb250ZW50QW5pbWF0aW9uKTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gdGhpcy5nZXRBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ25vbmUnIHx8IGFjdGl2ZSAmJiBhY3RpdmUgIT09IHRoaXMgJiYgYWN0aXZlICE9PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy5wYW5lbCwgJ3RyYW5zaXRpb25lbmQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaGlkZGVuJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAncmV2ZWFsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwKHRoaXMucGFuZWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCA9IHt4OiB3aW5kb3cucGFnZVhPZmZzZXQsIHk6IHdpbmRvdy5wYWdlWU9mZnNldH07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXNjcm9sbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXMuY29udGVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gcmVmLnNjcm9sbExlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHJlZi5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgPSB7eDogeCwgeTogeX07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnBhbmVsLCB0aGlzLmNsc1NpZGViYXJBbmltYXRpb24sIHRoaXMuY2xzTW9kZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc092ZXJsYXkpO1xuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsICdkaXNwbGF5JywgJycpO1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhkb2N1bWVudC5ib2R5LCB0aGlzLmNsc0NvbnRhaW5lciwgdGhpcy5jbHNGbGlwLCB0aGlzLmNsc092ZXJsYXkpO1xuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IHNjcm9sbC55O1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICdvdmVyZmxvd1knLCAnJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgd2lkdGgodGhpcy5jb250ZW50LCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLmNvbnRlbnQsICcnKTtcblxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsKHNjcm9sbC54LCBzY3JvbGwueSk7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc3dpcGVMZWZ0IHN3aXBlUmlnaHQnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzVG9nZ2xlZCgpICYmIGlzVG91Y2goZSkgJiYgKGUudHlwZSA9PT0gJ3N3aXBlTGVmdCcgJiYgIXRoaXMuZmxpcCB8fCBlLnR5cGUgPT09ICdzd2lwZVJpZ2h0JyAmJiB0aGlzLmZsaXApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF1cblxuICAgIH07XG5cbiAgICB2YXIgT3ZlcmZsb3dBdXRvID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBtb2RhbDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3QoJGVsLCAnLnVrLW1vZGFsJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwYW5lbDogZnVuY3Rpb24oXywgJGVsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsb3Nlc3QoJGVsLCAnLnVrLW1vZGFsLWRpYWxvZycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgJ21pbkhlaWdodCcsIDE1MCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYW5lbCB8fCAhdGhpcy5tb2RhbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnKTtcblxuICAgICAgICAgICAgICAgIGNzcyhjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnLCAxNTApLCAnbWF4SGVpZ2h0JywgTWF0aC5tYXgoMTUwLCAxNTAgKyBoZWlnaHQodGhpcy5tb2RhbCkgLSB0aGlzLnBhbmVsLm9mZnNldEhlaWdodCkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50ICE9PSBjc3ModGhpcy4kZWwsICdtYXhIZWlnaHQnKSkge1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAncmVzaXplJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFJlc3BvbnNpdmUgPSB7XG5cbiAgICAgICAgcHJvcHM6IFsnd2lkdGgnLCAnaGVpZ2h0J10sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLCAndWstcmVzcG9uc2l2ZS13aWR0aCcpO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNWaXNpYmxlKHRoaXMuJGVsKSAmJiB0aGlzLndpZHRoICYmIHRoaXMuaGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgID8ge3dpZHRoOiB3aWR0aCh0aGlzLiRlbC5wYXJlbnROb2RlKSwgaGVpZ2h0OiB0aGlzLmhlaWdodH1cbiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihkaW0pIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy4kZWwsIERpbWVuc2lvbnMuY29udGFpbih7aGVpZ2h0OiB0aGlzLmhlaWdodCwgd2lkdGg6IHRoaXMud2lkdGh9LCBkaW0pLmhlaWdodCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU2Nyb2xsID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkdXJhdGlvbjogTnVtYmVyLFxuICAgICAgICAgICAgb2Zmc2V0OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBkdXJhdGlvbjogMTAwMCxcbiAgICAgICAgICAgIG9mZnNldDogMFxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2Nyb2xsVG86IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGVsID0gZWwgJiYgJChlbCkgfHwgZG9jdW1lbnQuYm9keTtcblxuICAgICAgICAgICAgICAgIHZhciBkb2NIZWlnaHQgPSBoZWlnaHQoZG9jdW1lbnQpO1xuICAgICAgICAgICAgICAgIHZhciB3aW5IZWlnaHQgPSBoZWlnaHQod2luZG93KTtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBvZmZzZXQoZWwpLnRvcCAtIHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgKyB3aW5IZWlnaHQgPiBkb2NIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gZG9jSGVpZ2h0IC0gd2luSGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcih0aGlzLiRlbCwgJ2JlZm9yZXNjcm9sbCcsIFt0aGlzLCBlbF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIHZhciBzdGFydFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgdmFyIHN0ZXAgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRZID0gc3RhcnRZICsgKHRhcmdldCAtIHN0YXJ0WSkgKiBlYXNlKGNsYW1wKChEYXRlLm5vdygpIC0gc3RhcnQpIC8gdGhpcyQxLmR1cmF0aW9uKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCh3aW5kb3cucGFnZVhPZmZzZXQsIGN1cnJlbnRZKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBzY3JvbGwgbW9yZSBpZiB3ZSBoYXZlIG5vdCByZWFjaGVkIG91ciBkZXN0aW5hdGlvblxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFkgIT09IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzJDEuJGVsLCAnc2Nyb2xsZWQnLCBbdGhpcyQxLCBlbF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc3RlcCgpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFRvKGVzY2FwZSh0aGlzLiRlbC5oYXNoKS5zdWJzdHIoMSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBlYXNlKGspIHtcbiAgICAgICAgcmV0dXJuIDAuNSAqICgxIC0gTWF0aC5jb3MoTWF0aC5QSSAqIGspKTtcbiAgICB9XG5cbiAgICB2YXIgU2Nyb2xsc3B5ID0ge1xuXG4gICAgICAgIGFyZ3M6ICdjbHMnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjbHM6ICdsaXN0JyxcbiAgICAgICAgICAgIHRhcmdldDogU3RyaW5nLFxuICAgICAgICAgICAgaGlkZGVuOiBCb29sZWFuLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiBOdW1iZXIsXG4gICAgICAgICAgICBvZmZzZXRMZWZ0OiBOdW1iZXIsXG4gICAgICAgICAgICByZXBlYXQ6IEJvb2xlYW4sXG4gICAgICAgICAgICBkZWxheTogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGNsczogW10sXG4gICAgICAgICAgICB0YXJnZXQ6IGZhbHNlLFxuICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgICAgb2Zmc2V0VG9wOiAwLFxuICAgICAgICAgICAgb2Zmc2V0TGVmdDogMCxcbiAgICAgICAgICAgIHJlcGVhdDogZmFsc2UsXG4gICAgICAgICAgICBkZWxheTogMCxcbiAgICAgICAgICAgIGluVmlld0NsYXNzOiAndWstc2Nyb2xsc3B5LWludmlldydcbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0ID8gJCQodGFyZ2V0LCAkZWwpIDogWyRlbF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhmaWx0ZXIodGhpcy5lbGVtZW50cywgKFwiOm5vdCguXCIgKyAodGhpcy5pblZpZXdDbGFzcykgKyBcIilcIikpLCAndmlzaWJpbGl0eScsICdoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbHMuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsRGF0YSA9IGVsc1tpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlbERhdGEgfHwgZWxEYXRhLmVsICE9PSBlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbHMgPSBkYXRhKGVsLCAndWstc2Nyb2xsc3B5LWNsYXNzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhID0ge2VsOiBlbCwgdG9nZ2xlczogY2xzICYmIGNscy5zcGxpdCgnLCcpIHx8IHRoaXMkMS5jbHN9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBlbERhdGEuc2hvdyA9IGlzSW5WaWV3KGVsLCB0aGlzJDEub2Zmc2V0VG9wLCB0aGlzJDEub2Zmc2V0TGVmdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNbaV0gPSBlbERhdGE7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihlbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICAvLyBMZXQgY2hpbGQgY29tcG9uZW50cyBiZSBhcHBsaWVkIGF0IGxlYXN0IG9uY2UgZmlyc3RcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbHMuZGVsYXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbHMuZGVsYXkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gdGhpcy5lbGVtZW50cy5sZW5ndGggPT09IDEgPyAxIDogMDtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsLCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbERhdGEgPSBlbHNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2xzID0gZWxEYXRhLnRvZ2dsZXNbaV0gfHwgZWxEYXRhLnRvZ2dsZXNbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbERhdGEuc2hvdyAmJiAhZWxEYXRhLmludmlldyAmJiAhZWxEYXRhLnRpbWVyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hvdyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzKGVsLCAndmlzaWJpbGl0eScsICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3MoZWwsIHRoaXMkMS5pblZpZXdDbGFzcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCBjbHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoZWwsICdpbnZpZXcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJHVwZGF0ZShlbCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhLmludmlldyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlbERhdGEudGltZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuZGVsYXkgJiYgaW5kZXgkJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxEYXRhLnRpbWVyID0gc2V0VGltZW91dChzaG93LCB0aGlzJDEuZGVsYXkgKiBpbmRleCQkMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4JCQxKys7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWVsRGF0YS5zaG93ICYmIGVsRGF0YS5pbnZpZXcgJiYgdGhpcyQxLnJlcGVhdCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsRGF0YS50aW1lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoZWxEYXRhLnRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGVsRGF0YS50aW1lcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MoZWwsICd2aXNpYmlsaXR5JywgdGhpcyQxLmhpZGRlbiA/ICdoaWRkZW4nIDogJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGVsLCB0aGlzJDEuaW5WaWV3Q2xhc3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCBjbHMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihlbCwgJ291dHZpZXcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS4kdXBkYXRlKGVsKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsRGF0YS5pbnZpZXcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIFNjcm9sbHNweU5hdiA9IHtcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgY2xzOiBTdHJpbmcsXG4gICAgICAgICAgICBjbG9zZXN0OiBTdHJpbmcsXG4gICAgICAgICAgICBzY3JvbGw6IEJvb2xlYW4sXG4gICAgICAgICAgICBvdmVyZmxvdzogQm9vbGVhbixcbiAgICAgICAgICAgIG9mZnNldDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGNsb3Nlc3Q6IGZhbHNlLFxuICAgICAgICAgICAgc2Nyb2xsOiBmYWxzZSxcbiAgICAgICAgICAgIG92ZXJmbG93OiB0cnVlLFxuICAgICAgICAgICAgb2Zmc2V0OiAwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgbGlua3M6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAkJCgnYVtocmVmXj1cIiNcIl0nLCAkZWwpLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmhhc2g7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZWxlbWVudHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsb3Nlc3QgPyBjbG9zZXN0KHRoaXMubGlua3MsIHRoaXMuY2xvc2VzdCkgOiB0aGlzLmxpbmtzO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0czogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRoaXMubGlua3MubWFwKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuaGFzaDsgfSkuam9pbignLCcpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Nyb2xsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRjcmVhdGUoJ3Njcm9sbCcsIHRoaXMubGlua3MsIHtvZmZzZXQ6IHRoaXMub2Zmc2V0IHx8IDB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oZGF0YSQkMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSB3aW5kb3cucGFnZVlPZmZzZXQgKyB0aGlzLm9mZnNldCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXggPSBoZWlnaHQoZG9jdW1lbnQpIC0gaGVpZ2h0KHdpbmRvdykgKyB0aGlzLm9mZnNldDtcblxuICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0cy5ldmVyeShmdW5jdGlvbiAoZWwsIGkpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG9wID0gcmVmLnRvcDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYXN0ID0gaSArIDEgPT09IHRoaXMkMS50YXJnZXRzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzJDEub3ZlcmZsb3cgJiYgKGkgPT09IDAgJiYgdG9wID4gc2Nyb2xsIHx8IGxhc3QgJiYgdG9wICsgZWwub2Zmc2V0VG9wIDwgc2Nyb2xsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXN0ICYmIG9mZnNldCh0aGlzJDEudGFyZ2V0c1tpICsgMV0pLnRvcCA8PSBzY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCA+PSBtYXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gdGhpcyQxLnRhcmdldHMubGVuZ3RoIC0gMTsgaiA+IGk7IGotLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNJblZpZXcodGhpcyQxLnRhcmdldHNbal0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbCA9IHRoaXMkMS50YXJnZXRzW2pdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhKGRhdGEkJDEuYWN0aXZlID0gJChmaWx0ZXIodGhpcyQxLmxpbmtzLCAoXCJbaHJlZj1cXFwiI1wiICsgKGVsLmlkKSArIFwiXFxcIl1cIikpKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGlua3MuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGVsLmJsdXIoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudHMsIHRoaXMuY2xzKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnYWN0aXZlJywgW2FjdGl2ZSwgYWRkQ2xhc3ModGhpcy5jbG9zZXN0ID8gY2xvc2VzdChhY3RpdmUsIHRoaXMuY2xvc2VzdCkgOiBhY3RpdmUsIHRoaXMuY2xzKV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgdmFyIFN0aWNreSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtDbGFzc10sXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIHRvcDogbnVsbCxcbiAgICAgICAgICAgIGJvdHRvbTogQm9vbGVhbixcbiAgICAgICAgICAgIG9mZnNldDogTnVtYmVyLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNBY3RpdmU6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0luYWN0aXZlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNGaXhlZDogU3RyaW5nLFxuICAgICAgICAgICAgY2xzQmVsb3c6IFN0cmluZyxcbiAgICAgICAgICAgIHNlbFRhcmdldDogU3RyaW5nLFxuICAgICAgICAgICAgd2lkdGhFbGVtZW50OiBCb29sZWFuLFxuICAgICAgICAgICAgc2hvd09uVXA6IEJvb2xlYW4sXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJyxcbiAgICAgICAgICAgIHRhcmdldE9mZnNldDogTnVtYmVyXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgYm90dG9tOiBmYWxzZSxcbiAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogJycsXG4gICAgICAgICAgICBjbHNBY3RpdmU6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgY2xzSW5hY3RpdmU6ICcnLFxuICAgICAgICAgICAgY2xzRml4ZWQ6ICd1ay1zdGlja3ktZml4ZWQnLFxuICAgICAgICAgICAgY2xzQmVsb3c6ICd1ay1zdGlja3ktYmVsb3cnLFxuICAgICAgICAgICAgc2VsVGFyZ2V0OiAnJyxcbiAgICAgICAgICAgIHdpZHRoRWxlbWVudDogZmFsc2UsXG4gICAgICAgICAgICBzaG93T25VcDogZmFsc2UsXG4gICAgICAgICAgICBtZWRpYTogZmFsc2UsXG4gICAgICAgICAgICB0YXJnZXRPZmZzZXQ6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgc2VsVGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBzZWxUYXJnZXQgPSByZWYuc2VsVGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbFRhcmdldCAmJiAkKHNlbFRhcmdldCwgJGVsKSB8fCAkZWw7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB3aWR0aEVsZW1lbnQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoRWxlbWVudCA9IHJlZi53aWR0aEVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcXVlcnkod2lkdGhFbGVtZW50LCAkZWwpIHx8IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gJCgnKyAudWstc3RpY2t5LXBsYWNlaG9sZGVyJywgdGhpcy4kZWwpIHx8ICQoJzxkaXYgY2xhc3M9XCJ1ay1zdGlja3ktcGxhY2Vob2xkZXJcIj48L2Rpdj4nKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzSW5hY3RpdmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZW1vdmUodGhpcy5wbGFjZWhvbGRlcik7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMud2lkdGhFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdhY3RpdmUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXBsYWNlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzSW5hY3RpdmUsIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnaW5hY3RpdmUnLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXBsYWNlQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzQWN0aXZlLCB0aGlzLmNsc0luYWN0aXZlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdsb2FkIGhhc2hjaGFuZ2UgcG9wc3RhdGUnLFxuXG4gICAgICAgICAgICAgICAgZWw6IHdpbmRvdyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHRoaXMudGFyZ2V0T2Zmc2V0ICE9PSBmYWxzZSAmJiBsb2NhdGlvbi5oYXNoICYmIHdpbmRvdy5wYWdlWU9mZnNldCA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gJChsb2NhdGlvbi5oYXNoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYXN0ZG9tLnJlYWQoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbFRvcCA9IG9mZnNldCh0aGlzJDEuJGVsKS50b3A7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVsSGVpZ2h0ID0gdGhpcyQxLiRlbC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLmlzQWN0aXZlICYmIGVsVG9wICsgZWxIZWlnaHQgPj0gdG9wICYmIGVsVG9wIDw9IHRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCgwLCB0b3AgLSBlbEhlaWdodCAtIChpc051bWVyaWModGhpcyQxLnRhcmdldE9mZnNldCkgPyB0aGlzJDEudGFyZ2V0T2Zmc2V0IDogMCkgLSB0aGlzJDEub2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IHJlZi5wbGFjZWhvbGRlcjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG9mZnNldEhlaWdodCA9IHJlZi4kZWwub2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIGNzcyhwbGFjZWhvbGRlciwgYXNzaWduKFxuICAgICAgICAgICAgICAgICAgICAgICAge2hlaWdodDogY3NzKHRoaXMuJGVsLCAncG9zaXRpb24nKSAhPT0gJ2Fic29sdXRlJyA/IG9mZnNldEhlaWdodCA6ICcnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgWydtYXJnaW5Ub3AnLCAnbWFyZ2luQm90dG9tJywgJ21hcmdpbkxlZnQnLCAnbWFyZ2luUmlnaHQnXSlcbiAgICAgICAgICAgICAgICAgICAgKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCF3aXRoaW4ocGxhY2Vob2xkZXIsIGRvY3VtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIodGhpcy4kZWwsIHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIocGxhY2Vob2xkZXIsICdoaWRkZW4nLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvcE9mZnNldCA9IG9mZnNldCh0aGlzLmlzQWN0aXZlID8gcGxhY2Vob2xkZXIgOiB0aGlzLiRlbCkudG9wO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJvdHRvbU9mZnNldCA9IHRoaXMudG9wT2Zmc2V0ICsgb2Zmc2V0SGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBib3R0b20gPSBwYXJzZVByb3AoJ2JvdHRvbScsIHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9wID0gTWF0aC5tYXgodG9GbG9hdChwYXJzZVByb3AoJ3RvcCcsIHRoaXMpKSwgdGhpcy50b3BPZmZzZXQpIC0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tID0gYm90dG9tICYmIGJvdHRvbSAtIG9mZnNldEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmFjdGl2ZSA9IHRoaXMubWVkaWEgJiYgIXdpbmRvdy5tYXRjaE1lZGlhKHRoaXMubWVkaWEpLm1hdGNoZXM7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgcmVhZDogZnVuY3Rpb24oXywgcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGxZID0gcmVmLnNjcm9sbFk7IGlmICggc2Nyb2xsWSA9PT0gdm9pZCAwICkgc2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMud2lkdGggPSAoaXNWaXNpYmxlKHRoaXMud2lkdGhFbGVtZW50KSA/IHRoaXMud2lkdGhFbGVtZW50IDogdGhpcy4kZWwpLm9mZnNldFdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGw6IHRoaXMuc2Nyb2xsID0gc2Nyb2xsWSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGlzVmlzaWJsZSh0aGlzLiRlbClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZiwgcmVmJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2aXNpYmxlID0gcmVmLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSByZWYuc2Nyb2xsO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiQxID09PSB2b2lkIDAgKSByZWYkMSA9IHt9O1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmJDEuZGlyO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCA8IDAgfHwgIXZpc2libGUgfHwgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnNob3dPblVwICYmICFkaXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmluYWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBzY3JvbGwgPCB0aGlzLnRvcFxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5zaG93T25VcCAmJiAoc2Nyb2xsIDw9IHRoaXMudG9wIHx8IGRpciA9PT0gJ2Rvd24nIHx8IGRpciA9PT0gJ3VwJyAmJiAhdGhpcy5pc0FjdGl2ZSAmJiBzY3JvbGwgPD0gdGhpcy5ib3R0b21PZmZzZXQpXG4gICAgICAgICAgICAgICAgICAgICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uICYmIHNjcm9sbCA+IHRoaXMudG9wT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLm91dCh0aGlzLiRlbCwgdGhpcy5hbmltYXRpb24pLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLmhpZGUoKTsgfSwgbm9vcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5pc0FjdGl2ZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hbmltYXRpb24pIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEFuaW1hdGlvbi5pbih0aGlzLiRlbCwgdGhpcy5hbmltYXRpb24pLmNhdGNoKG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZScsICdzY3JvbGwnXVxuXG4gICAgICAgICAgICB9IF0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLnBsYWNlaG9sZGVyLCAnaGlkZGVuJywgbnVsbCk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQWN0aXZlIHx8IGhhc0NsYXNzKHRoaXMuc2VsVGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2luYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRml4ZWQsIHRoaXMuY2xzQmVsb3cpO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwge3Bvc2l0aW9uOiAnJywgdG9wOiAnJywgd2lkdGg6ICcnfSk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLnBsYWNlaG9sZGVyLCAnaGlkZGVuJywgJycpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZSA9IHRoaXMudG9wICE9PSAwIHx8IHRoaXMuc2Nyb2xsID4gdGhpcy50b3A7XG4gICAgICAgICAgICAgICAgdmFyIHRvcCA9IE1hdGgubWF4KDAsIHRoaXMub2Zmc2V0KTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJvdHRvbSAmJiB0aGlzLnNjcm9sbCA+IHRoaXMuYm90dG9tIC0gdGhpcy5vZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wID0gdGhpcy5ib3R0b20gLSB0aGlzLnNjcm9sbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogKHRvcCArIFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaGFzQ2xhc3ModGhpcy5zZWxUYXJnZXQsIHRoaXMuY2xzQWN0aXZlKSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaW5hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0JlbG93LCB0aGlzLnNjcm9sbCA+IHRoaXMuYm90dG9tT2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNGaXhlZCk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcGFyc2VQcm9wKHByb3AsIHJlZikge1xuICAgICAgICB2YXIgJHByb3BzID0gcmVmLiRwcm9wcztcbiAgICAgICAgdmFyICRlbCA9IHJlZi4kZWw7XG4gICAgICAgIHZhciBwcm9wT2Zmc2V0ID0gcmVmWyhwcm9wICsgXCJPZmZzZXRcIildO1xuXG5cbiAgICAgICAgdmFyIHZhbHVlID0gJHByb3BzW3Byb3BdO1xuXG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc051bWVyaWModmFsdWUpKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBwcm9wT2Zmc2V0ICsgdG9GbG9hdCh2YWx1ZSk7XG5cbiAgICAgICAgfSBlbHNlIGlmIChpc1N0cmluZyh2YWx1ZSkgJiYgdmFsdWUubWF0Y2goL14tP1xcZCt2aCQvKSkge1xuXG4gICAgICAgICAgICByZXR1cm4gaGVpZ2h0KHdpbmRvdykgKiB0b0Zsb2F0KHZhbHVlKSAvIDEwMDtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICB2YXIgZWwgPSB2YWx1ZSA9PT0gdHJ1ZSA/ICRlbC5wYXJlbnROb2RlIDogcXVlcnkodmFsdWUsICRlbCk7XG5cbiAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQoZWwpLnRvcCArIGVsLm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIFN3aXRjaGVyID0ge1xuXG4gICAgICAgIG1peGluczogW1RvZ2dsYWJsZV0sXG5cbiAgICAgICAgYXJnczogJ2Nvbm5lY3QnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjb25uZWN0OiBTdHJpbmcsXG4gICAgICAgICAgICB0b2dnbGU6IFN0cmluZyxcbiAgICAgICAgICAgIGFjdGl2ZTogTnVtYmVyLFxuICAgICAgICAgICAgc3dpcGluZzogQm9vbGVhblxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNvbm5lY3Q6ICd+LnVrLXN3aXRjaGVyJyxcbiAgICAgICAgICAgIHRvZ2dsZTogJz4gKicsXG4gICAgICAgICAgICBhY3RpdmU6IDAsXG4gICAgICAgICAgICBzd2lwaW5nOiB0cnVlLFxuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGNsc0NvbnRhaW5lcjogJ3VrLXN3aXRjaGVyJyxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstc3dpdGNoZXItaXRlbScsXG4gICAgICAgICAgICBxdWV1ZWQ6IHRydWVcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBjb25uZWN0czogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY29ubmVjdCA9IHJlZi5jb25uZWN0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5QWxsKGNvbm5lY3QsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0b2dnbGVzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0b2dnbGUgPSByZWYudG9nZ2xlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQkKHRvZ2dsZSwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCh0aGlzLnRvZ2dsZSkgKyBcIjpub3QoLnVrLWRpc2FibGVkKVwiKTtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhlLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3RzO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coZGF0YShlLmN1cnJlbnQsIHRoaXMuYXR0ckl0ZW0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ3N3aXBlUmlnaHQgc3dpcGVMZWZ0JyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN3aXBpbmc7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGVsOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29ubmVjdHM7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhlLnR5cGUgPT09ICdzd2lwZUxlZnQnID8gJ25leHQnIDogJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgdGhpcy5jb25uZWN0cy5mb3JFYWNoKGZ1bmN0aW9uIChsaXN0KSB7IHJldHVybiB0aGlzJDEudXBkYXRlQXJpYShsaXN0LmNoaWxkcmVuKTsgfSk7XG4gICAgICAgICAgICB0aGlzLnNob3coZmlsdGVyKHRoaXMudG9nZ2xlcywgKFwiLlwiICsgKHRoaXMuY2xzKSkpWzBdIHx8IHRoaXMudG9nZ2xlc1t0aGlzLmFjdGl2ZV0gfHwgdGhpcy50b2dnbGVzWzBdKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcy50b2dnbGVzO1xuICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gISF0aGlzLmNvbm5lY3RzLmxlbmd0aCAmJiBpbmRleChmaWx0ZXIodGhpcy5jb25uZWN0c1swXS5jaGlsZHJlbiwgKFwiLlwiICsgKHRoaXMuY2xzKSkpWzBdKTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzUHJldiA9IHByZXYgPj0gMDtcbiAgICAgICAgICAgICAgICB2YXIgZGlyID0gaXRlbSA9PT0gJ3ByZXZpb3VzJyA/IC0xIDogMTtcblxuICAgICAgICAgICAgICAgIHZhciB0b2dnbGUsIG5leHQgPSBnZXRJbmRleChpdGVtLCB0aGlzLnRvZ2dsZXMsIHByZXYpO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKywgbmV4dCA9IChuZXh0ICsgZGlyICsgbGVuZ3RoKSAlIGxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoZXModGhpcyQxLnRvZ2dsZXNbbmV4dF0sICcudWstZGlzYWJsZWQsIFtkaXNhYmxlZF0nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlID0gdGhpcyQxLnRvZ2dsZXNbbmV4dF07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdG9nZ2xlIHx8IHByZXYgPj0gMCAmJiBoYXNDbGFzcyh0b2dnbGUsIHRoaXMuY2xzKSB8fCBwcmV2ID09PSBuZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLnRvZ2dsZXMsIHRoaXMuY2xzKTtcbiAgICAgICAgICAgICAgICBhdHRyKHRoaXMudG9nZ2xlcywgJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModG9nZ2xlLCB0aGlzLmNscyk7XG4gICAgICAgICAgICAgICAgYXR0cih0b2dnbGUsICdhcmlhLWV4cGFuZGVkJywgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RzLmZvckVhY2goZnVuY3Rpb24gKGxpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNQcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlTm93KGxpc3QuY2hpbGRyZW5bbmV4dF0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnRvZ2dsZUVsZW1lbnQoW2xpc3QuY2hpbGRyZW5bcHJldl0sIGxpc3QuY2hpbGRyZW5bbmV4dF1dKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBUYWIgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3NdLFxuXG4gICAgICAgIGV4dGVuZHM6IFN3aXRjaGVyLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIG1lZGlhOiA5NjAsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLXRhYi1pdGVtJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIHZhciBjbHMgPSBoYXNDbGFzcyh0aGlzLiRlbCwgJ3VrLXRhYi1sZWZ0JylcbiAgICAgICAgICAgICAgICA/ICd1ay10YWItbGVmdCdcbiAgICAgICAgICAgICAgICA6IGhhc0NsYXNzKHRoaXMuJGVsLCAndWstdGFiLXJpZ2h0JylcbiAgICAgICAgICAgICAgICAgICAgPyAndWstdGFiLXJpZ2h0J1xuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICBpZiAoY2xzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kY3JlYXRlKCd0b2dnbGUnLCB0aGlzLiRlbCwge2NsczogY2xzLCBtb2RlOiAnbWVkaWEnLCBtZWRpYTogdGhpcy5tZWRpYX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIFRvZ2dsZSA9IHtcblxuICAgICAgICBtaXhpbnM6IFtUb2dnbGFibGVdLFxuXG4gICAgICAgIGFyZ3M6ICd0YXJnZXQnLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBocmVmOiBTdHJpbmcsXG4gICAgICAgICAgICB0YXJnZXQ6IG51bGwsXG4gICAgICAgICAgICBtb2RlOiAnbGlzdCcsXG4gICAgICAgICAgICBtZWRpYTogJ21lZGlhJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGhyZWY6IGZhbHNlLFxuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgICAgIG1vZGU6ICdjbGljaycsXG4gICAgICAgICAgICBxdWV1ZWQ6IHRydWUsXG4gICAgICAgICAgICBtZWRpYTogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICB0YXJnZXQ6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGhyZWYgPSByZWYuaHJlZjtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHRhcmdldCA9IHF1ZXJ5QWxsKHRhcmdldCB8fCBocmVmLCAkZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQubGVuZ3RoICYmIHRhcmdldCB8fCBbJGVsXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAocG9pbnRlckVudGVyICsgXCIgXCIgKyBwb2ludGVyTGVhdmUpLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1RvdWNoKGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgoXCJ0b2dnbGVcIiArIChlLnR5cGUgPT09IHBvaW50ZXJFbnRlciA/ICdzaG93JyA6ICdoaWRlJykpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmNsdWRlcyh0aGlzLm1vZGUsICdjbGljaycpIHx8IGhhc1RvdWNoICYmIGluY2x1ZGVzKHRoaXMubW9kZSwgJ2hvdmVyJyk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkgJiYgIWluY2x1ZGVzKHRoaXMubW9kZSwgJ2NsaWNrJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gYmV0dGVyIGlzVG9nZ2xlZCBoYW5kbGluZ1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGluaztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3QoZS50YXJnZXQsICdhW2hyZWY9XCIjXCJdLCBidXR0b24nKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGxpbmsgPSBjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmXScpKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAhaXNWaXNpYmxlKHRoaXMudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxpbmsuaGFzaCAmJiBtYXRjaGVzKHRoaXMudGFyZ2V0LCBsaW5rLmhhc2gpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZShkb2N1bWVudCwgJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUucHJldmVudERlZmF1bHQoKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWluY2x1ZGVzKHRoaXMubW9kZSwgJ21lZGlhJykgfHwgIXRoaXMubWVkaWEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciB0b2dnbGVkID0gdGhpcy5pc1RvZ2dsZWQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYSh0aGlzLm1lZGlhKS5tYXRjaGVzID8gIXRvZ2dsZWQgOiB0b2dnbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICB0b2dnbGU6IGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHJpZ2dlcih0aGlzLnRhcmdldCwgdHlwZSB8fCAndG9nZ2xlJywgW3RoaXNdKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZUVsZW1lbnQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gY29yZSAoVUlraXQpIHtcblxuICAgICAgICAvLyBjb3JlIGNvbXBvbmVudHNcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdhY2NvcmRpb24nLCBBY2NvcmRpb24pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2FsZXJ0JywgQWxlcnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2NvdmVyJywgQ292ZXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2Ryb3AnLCBEcm9wKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdkcm9wZG93bicsIERyb3Bkb3duKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdmb3JtQ3VzdG9tJywgRm9ybUN1c3RvbSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnZ2lmJywgR2lmKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdncmlkJywgR3JpZCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaGVpZ2h0TWF0Y2gnLCBIZWlnaHRNYXRjaCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaGVpZ2h0Vmlld3BvcnQnLCBIZWlnaHRWaWV3cG9ydCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnaWNvbicsIEljb24pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ2ltZycsIEltZyk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbGVhZGVyJywgTGVhZGVyKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdtYXJnaW4nLCBNYXJnaW4pO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ21vZGFsJywgTW9kYWwkMSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnbmF2JywgTmF2KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCduYXZiYXInLCBOYXZiYXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ29mZmNhbnZhcycsIE9mZmNhbnZhcyk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnb3ZlcmZsb3dBdXRvJywgT3ZlcmZsb3dBdXRvKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdyZXNwb25zaXZlJywgUmVzcG9uc2l2ZSk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc2Nyb2xsJywgU2Nyb2xsKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzY3JvbGxzcHknLCBTY3JvbGxzcHkpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3Njcm9sbHNweU5hdicsIFNjcm9sbHNweU5hdik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnc3RpY2t5JywgU3RpY2t5KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzdmcnLCBTVkcpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3N3aXRjaGVyJywgU3dpdGNoZXIpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3RhYicsIFRhYik7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgndG9nZ2xlJywgVG9nZ2xlKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCd2aWRlbycsIFZpZGVvKTtcblxuICAgICAgICAvLyBJY29uIGNvbXBvbmVudHNcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdjbG9zZScsIENsb3NlKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdtYXJrZXInLCBJY29uQ29tcG9uZW50KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCduYXZiYXJUb2dnbGVJY29uJywgSWNvbkNvbXBvbmVudCk7XG4gICAgICAgIFVJa2l0LmNvbXBvbmVudCgnb3ZlcmxheUljb24nLCBJY29uQ29tcG9uZW50KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdwYWdpbmF0aW9uTmV4dCcsIEljb25Db21wb25lbnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3BhZ2luYXRpb25QcmV2aW91cycsIEljb25Db21wb25lbnQpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NlYXJjaEljb24nLCBTZWFyY2gpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlbmF2TmV4dCcsIFNsaWRlbmF2KTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCdzbGlkZW5hdlByZXZpb3VzJywgU2xpZGVuYXYpO1xuICAgICAgICBVSWtpdC5jb21wb25lbnQoJ3NwaW5uZXInLCBTcGlubmVyKTtcbiAgICAgICAgVUlraXQuY29tcG9uZW50KCd0b3RvcCcsIEljb25Db21wb25lbnQpO1xuXG4gICAgICAgIC8vIGNvcmUgZnVuY3Rpb25hbGl0eVxuICAgICAgICBVSWtpdC51c2UoQ29yZSk7XG5cbiAgICB9XG5cbiAgICBVSWtpdC52ZXJzaW9uID0gJzMuMC4wLXJjLjUnO1xuXG4gICAgY29yZShVSWtpdCk7XG5cbiAgICB2YXIgQ291bnRkb3duID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzXSxcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZGF0ZTogU3RyaW5nLFxuICAgICAgICAgICAgY2xzV3JhcHBlcjogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZGF0ZTogJycsXG4gICAgICAgICAgICBjbHNXcmFwcGVyOiAnLnVrLWNvdW50ZG93bi0ldW5pdCUnXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZGF0ZTogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGUgPSByZWYuZGF0ZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBEYXRlLnBhcnNlKGRhdGUpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZGF5czogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2xzV3JhcHBlciA9IHJlZi5jbHNXcmFwcGVyO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoY2xzV3JhcHBlci5yZXBsYWNlKCcldW5pdCUnLCAnZGF5cycpLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaG91cnM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNsc1dyYXBwZXIgPSByZWYuY2xzV3JhcHBlcjtcblxuICAgICAgICAgICAgICAgIHJldHVybiAkKGNsc1dyYXBwZXIucmVwbGFjZSgnJXVuaXQlJywgJ2hvdXJzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBtaW51dGVzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChjbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsICdtaW51dGVzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZWNvbmRzOiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciBjbHNXcmFwcGVyID0gcmVmLmNsc1dyYXBwZXI7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChjbHNXcmFwcGVyLnJlcGxhY2UoJyV1bml0JScsICdzZWNvbmRzJyksICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1bml0czogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWydkYXlzJywgJ2hvdXJzJywgJ21pbnV0ZXMnLCAnc2Vjb25kcyddLmZpbHRlcihmdW5jdGlvbiAodW5pdCkgeyByZXR1cm4gdGhpcyQxW3VuaXRdOyB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0KCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgICAgIHRoaXMudW5pdHMuZm9yRWFjaChmdW5jdGlvbiAodW5pdCkgeyByZXR1cm4gZW1wdHkodGhpcyQxW3VuaXRdKTsgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICd2aXNpYmlsaXR5Y2hhbmdlJyxcblxuICAgICAgICAgICAgICAgIGVsOiBkb2N1bWVudCxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgdXBkYXRlOiB7XG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWVzcGFuID0gZ2V0VGltZVNwYW4odGhpcy5kYXRlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aW1lc3Bhbi50b3RhbCA8PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGltZXNwYW4uZGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgPSB0aW1lc3Bhbi5ob3Vyc1xuICAgICAgICAgICAgICAgICAgICAgICAgPSB0aW1lc3Bhbi5taW51dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICA9IHRpbWVzcGFuLnNlY29uZHNcbiAgICAgICAgICAgICAgICAgICAgICAgID0gMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnVuaXRzLmZvckVhY2goZnVuY3Rpb24gKHVuaXQpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGlnaXRzID0gU3RyaW5nKE1hdGguZmxvb3IodGltZXNwYW5bdW5pdF0pKTtcblxuICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSBkaWdpdHMubGVuZ3RoIDwgMiA/IChcIjBcIiArIGRpZ2l0cykgOiBkaWdpdHM7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGVsID0gdGhpcyQxW3VuaXRdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwudGV4dENvbnRlbnQgIT09IGRpZ2l0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzID0gZGlnaXRzLnNwbGl0KCcnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0cy5sZW5ndGggIT09IGVsLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwoZWwsIGRpZ2l0cy5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gJzxzcGFuPjwvc3Bhbj4nOyB9KS5qb2luKCcnKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cy5mb3JFYWNoKGZ1bmN0aW9uIChkaWdpdCwgaSkgeyByZXR1cm4gZWwuY2hpbGRyZW5baV0udGV4dENvbnRlbnQgPSBkaWdpdDsgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRlICYmIHRoaXMudW5pdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS4kZW1pdCgpOyB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldFRpbWVTcGFuKGRhdGUpIHtcblxuICAgICAgICB2YXIgdG90YWwgPSBkYXRlIC0gRGF0ZS5ub3coKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG90YWw6IHRvdGFsLFxuICAgICAgICAgICAgc2Vjb25kczogdG90YWwgLyAxMDAwICUgNjAsXG4gICAgICAgICAgICBtaW51dGVzOiB0b3RhbCAvIDEwMDAgLyA2MCAlIDYwLFxuICAgICAgICAgICAgaG91cnM6IHRvdGFsIC8gMTAwMCAvIDYwIC8gNjAgJSAyNCxcbiAgICAgICAgICAgIGRheXM6IHRvdGFsIC8gMTAwMCAvIDYwIC8gNjAgLyAyNFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHZhciB0YXJnZXRDbGFzcyA9ICd1ay1hbmltYXRpb24tdGFyZ2V0JztcblxuICAgIHZhciBBbmltYXRlID0ge1xuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBhbmltYXRpb246IE51bWJlclxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGFuaW1hdGlvbjogMTUwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kZWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGFuaW1hdGU6IGZ1bmN0aW9uKGFjdGlvbikge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBhZGRTdHlsZSgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdG9Ob2Rlcyh0aGlzLnRhcmdldC5jaGlsZHJlbik7XG4gICAgICAgICAgICAgICAgdmFyIHByb3BzRnJvbSA9IGNoaWxkcmVuLm1hcChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGdldFByb3BzKGVsLCB0cnVlKTsgfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgb2xkSGVpZ2h0ID0gaGVpZ2h0KHRoaXMudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB2YXIgb2xkU2Nyb2xsWSA9IHdpbmRvdy5wYWdlWU9mZnNldDtcblxuICAgICAgICAgICAgICAgIGFjdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIGNoaWxkcmVuLmZvckVhY2goVHJhbnNpdGlvbi5jYW5jZWwpO1xuXG4gICAgICAgICAgICAgICAgcmVzZXQodGhpcy50YXJnZXQpO1xuICAgICAgICAgICAgICAgIHRoaXMuJHVwZGF0ZSh0aGlzLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgZmFzdGRvbS5mbHVzaCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIG5ld0hlaWdodCA9IGhlaWdodCh0aGlzLnRhcmdldCk7XG5cbiAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLmNvbmNhdCh0b05vZGVzKHRoaXMudGFyZ2V0LmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7IHJldHVybiAhaW5jbHVkZXMoY2hpbGRyZW4sIGVsKTsgfSkpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHByb3BzVG8gPSBjaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBlbC5wYXJlbnROb2RlICYmIGkgaW4gcHJvcHNGcm9tXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHByb3BzRnJvbVtpXVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBpc1Zpc2libGUoZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRQb3NpdGlvbldpdGhNYXJnaW4oZWwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7b3BhY2l0eTogMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDoge29wYWNpdHk6IGlzVmlzaWJsZShlbCkgPyAxIDogMH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogZmFsc2U7IH1cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgcHJvcHNGcm9tID0gcHJvcHNUby5tYXAoZnVuY3Rpb24gKHByb3BzLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmcm9tID0gY2hpbGRyZW5baV0ucGFyZW50Tm9kZSA9PT0gdGhpcyQxLnRhcmdldFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wc0Zyb21baV0gfHwgZ2V0UHJvcHMoY2hpbGRyZW5baV0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChmcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb3BzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb20ub3BhY2l0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoISgnb3BhY2l0eScgaW4gcHJvcHMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9wYWNpdHkgPSBmcm9tLm9wYWNpdHk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BhY2l0eSAlIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMub3BhY2l0eSA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZyb20ub3BhY2l0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnJvbTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMudGFyZ2V0LCB0YXJnZXRDbGFzcyk7XG4gICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIHByb3BzRnJvbVtpXSAmJiBjc3MoZWwsIHByb3BzRnJvbVtpXSk7IH0pO1xuICAgICAgICAgICAgICAgIGNzcyh0aGlzLnRhcmdldCwgJ21pbkhlaWdodCcsIG9sZEhlaWdodCk7XG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbCh3aW5kb3cucGFnZVhPZmZzZXQsIG9sZFNjcm9sbFkpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UkMS5hbGwoY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChlbCwgaSkgeyByZXR1cm4gcHJvcHNGcm9tW2ldICYmIHByb3BzVG9baV1cbiAgICAgICAgICAgICAgICAgICAgICAgID8gVHJhbnNpdGlvbi5zdGFydChlbCwgcHJvcHNUb1tpXSwgdGhpcyQxLmFuaW1hdGlvbiwgJ2Vhc2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBQcm9taXNlJDEucmVzb2x2ZSgpOyB9XG4gICAgICAgICAgICAgICAgKS5jb25jYXQoVHJhbnNpdGlvbi5zdGFydCh0aGlzLnRhcmdldCwge21pbkhlaWdodDogbmV3SGVpZ2h0fSwgdGhpcy5hbmltYXRpb24sICdlYXNlJykpKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwsIGkpIHsgcmV0dXJuIGNzcyhlbCwge2Rpc3BsYXk6IHByb3BzVG9baV0ub3BhY2l0eSA9PT0gMCA/ICdub25lJyA6ICcnLCB6SW5kZXg6ICcnfSk7IH0pO1xuICAgICAgICAgICAgICAgICAgICByZXNldCh0aGlzJDEudGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLiR1cGRhdGUodGhpcyQxLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgfSwgbm9vcCk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRQcm9wcyhlbCwgb3BhY2l0eSkge1xuXG4gICAgICAgIHZhciB6SW5kZXggPSBjc3MoZWwsICd6SW5kZXgnKTtcblxuICAgICAgICByZXR1cm4gaXNWaXNpYmxlKGVsKVxuICAgICAgICAgICAgPyBhc3NpZ24oe1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6ICcnLFxuICAgICAgICAgICAgICAgIG9wYWNpdHk6IG9wYWNpdHkgPyBjc3MoZWwsICdvcGFjaXR5JykgOiAnMCcsXG4gICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgICAgIHpJbmRleDogekluZGV4ID09PSAnYXV0bycgPyBpbmRleChlbCkgOiB6SW5kZXhcbiAgICAgICAgICAgIH0sIGdldFBvc2l0aW9uV2l0aE1hcmdpbihlbCkpXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc2V0KGVsKSB7XG4gICAgICAgIGNzcyhlbC5jaGlsZHJlbiwge1xuICAgICAgICAgICAgaGVpZ2h0OiAnJyxcbiAgICAgICAgICAgIGxlZnQ6ICcnLFxuICAgICAgICAgICAgb3BhY2l0eTogJycsXG4gICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAnJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnJyxcbiAgICAgICAgICAgIHRvcDogJycsXG4gICAgICAgICAgICB3aWR0aDogJydcbiAgICAgICAgfSk7XG4gICAgICAgIHJlbW92ZUNsYXNzKGVsLCB0YXJnZXRDbGFzcyk7XG4gICAgICAgIGNzcyhlbCwgJ21pbkhlaWdodCcsICcnKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRQb3NpdGlvbldpdGhNYXJnaW4oZWwpIHtcbiAgICAgICAgdmFyIHJlZiA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcbiAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICB2YXIgcmVmJDEgPSBwb3NpdGlvbihlbCk7XG4gICAgICAgIHZhciB0b3AgPSByZWYkMS50b3A7XG4gICAgICAgIHZhciBsZWZ0ID0gcmVmJDEubGVmdDtcbiAgICAgICAgdG9wICs9IHRvRmxvYXQoY3NzKGVsLCAnbWFyZ2luVG9wJykpO1xuXG4gICAgICAgIHJldHVybiB7dG9wOiB0b3AsIGxlZnQ6IGxlZnQsIGhlaWdodDogaGVpZ2h0JCQxLCB3aWR0aDogd2lkdGgkJDF9O1xuICAgIH1cblxuICAgIHZhciBzdHlsZSQxO1xuXG4gICAgZnVuY3Rpb24gYWRkU3R5bGUoKSB7XG4gICAgICAgIGlmICghc3R5bGUkMSkge1xuICAgICAgICAgICAgc3R5bGUkMSA9IGFwcGVuZChkb2N1bWVudC5oZWFkLCAnPHN0eWxlPicpLnNoZWV0O1xuICAgICAgICAgICAgc3R5bGUkMS5pbnNlcnRSdWxlKFxuICAgICAgICAgICAgICAgIChcIi5cIiArIHRhcmdldENsYXNzICsgXCIgPiAqIHtcXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xcbiAgICAgICAgICAgICAgICB9XCIpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIEZpbHRlciA9IHtcblxuICAgICAgICBtaXhpbnM6IFtBbmltYXRlXSxcblxuICAgICAgICBhcmdzOiAndGFyZ2V0JyxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBCb29sZWFuLFxuICAgICAgICAgICAgc2VsQWN0aXZlOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0OiBudWxsLFxuICAgICAgICAgICAgc2VsQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstZmlsdGVyLWNvbnRyb2wnLFxuICAgICAgICAgICAgY2xzOiAndWstYWN0aXZlJyxcbiAgICAgICAgICAgIGFuaW1hdGlvbjogMjUwXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgdG9nZ2xlczogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXR0ckl0ZW0gPSByZWYuYXR0ckl0ZW07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQoKFwiW1wiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdLFtkYXRhLVwiICsgKHRoaXMuYXR0ckl0ZW0pICsgXCJdXCIpLCAkZWwpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdGFyZ2V0OiBmdW5jdGlvbihyZWYsICRlbCkge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQodGFyZ2V0LCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHkoZS5jdXJyZW50KTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbEFjdGl2ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBhY3RpdmVzID0gJCQodGhpcy5zZWxBY3RpdmUsIHRoaXMuJGVsKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gdG9nZ2xlQ2xhc3MoZWwsIHRoaXMkMS5jbHMsIGluY2x1ZGVzKGFjdGl2ZXMsIGVsKSk7IH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICB2YXIgdG9nZ2xlcyA9IGRhdGEkJDEudG9nZ2xlcztcbiAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IGRhdGEkJDEuY2hpbGRyZW47XG4gICAgICAgICAgICBpZiAoaXNFcXVhbExpc3QodG9nZ2xlcywgdGhpcy50b2dnbGVzLCBmYWxzZSkgJiYgaXNFcXVhbExpc3QoY2hpbGRyZW4sIHRoaXMudGFyZ2V0LmNoaWxkcmVuLCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGEkJDEudG9nZ2xlcyA9IHRoaXMudG9nZ2xlcztcbiAgICAgICAgICAgIGRhdGEkJDEuY2hpbGRyZW4gPSB0aGlzLnRhcmdldC5jaGlsZHJlbjtcblxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh0aGlzLmdldFN0YXRlKCksIGZhbHNlKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKGVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZShtZXJnZVN0YXRlKGVsLCB0aGlzLmF0dHJJdGVtLCB0aGlzLmdldFN0YXRlKCkpKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFN0YXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvZ2dsZXNcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gaGFzQ2xhc3MoaXRlbSwgdGhpcyQxLmNscyk7IH0pXG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKHN0YXRlLCBlbCkgeyByZXR1cm4gbWVyZ2VTdGF0ZShlbCwgdGhpcyQxLmF0dHJJdGVtLCBzdGF0ZSk7IH0sIHtmaWx0ZXI6IHsnJzogJyd9LCBzb3J0OiBbXX0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2V0U3RhdGU6IGZ1bmN0aW9uKHN0YXRlLCBhbmltYXRlJCQxKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBhbmltYXRlJCQxID09PSB2b2lkIDAgKSBhbmltYXRlJCQxID0gdHJ1ZTtcblxuXG4gICAgICAgICAgICAgICAgc3RhdGUgPSBhc3NpZ24oe2ZpbHRlcjogeycnOiAnJ30sIHNvcnQ6IFtdfSwgc3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ2JlZm9yZUZpbHRlcicsIFt0aGlzLCBzdGF0ZV0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdG9Ob2Rlcyh0aGlzLnRhcmdldC5jaGlsZHJlbik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZXMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xzLCBtYXRjaEZpbHRlcihlbCwgdGhpcyQxLmF0dHJJdGVtLCBzdGF0ZSkpOyB9KTtcblxuICAgICAgICAgICAgICAgIHZhciBhcHBseSQkMSA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0b3IgPSBnZXRTZWxlY3RvcihzdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIGNzcyhlbCwgJ2Rpc3BsYXknLCBzZWxlY3RvciAmJiAhbWF0Y2hlcyhlbCwgc2VsZWN0b3IpID8gJ25vbmUnIDogJycpOyB9KTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gc3RhdGUuc29ydDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNvcnQgPSByZWZbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcmRlciA9IHJlZlsxXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc29ydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvcnRlZCA9IHNvcnRJdGVtcyhjaGlsZHJlbiwgc29ydCwgb3JkZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0VxdWFsTGlzdChzb3J0ZWQsIGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gYXBwZW5kKHRoaXMkMS50YXJnZXQsIGVsKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAoYW5pbWF0ZSQkMSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGUoYXBwbHkkJDEpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJpZ2dlcih0aGlzJDEuJGVsLCAnYWZ0ZXJGaWx0ZXInLCBbdGhpcyQxXSk7IH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGx5JCQxKCk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIodGhpcy4kZWwsICdhZnRlckZpbHRlcicsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldEZpbHRlcihlbCwgYXR0ciQkMSkge1xuICAgICAgICByZXR1cm4gcGFyc2VPcHRpb25zKGRhdGEoZWwsIGF0dHIkJDEpLCBbJ2ZpbHRlciddKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZVN0YXRlKGVsLCBhdHRyJCQxLCBzdGF0ZSkge1xuXG4gICAgICAgIHRvTm9kZXMoZWwpLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICB2YXIgZmlsdGVyQnkgPSBnZXRGaWx0ZXIoZWwsIGF0dHIkJDEpO1xuICAgICAgICAgICAgdmFyIGZpbHRlciQkMSA9IGZpbHRlckJ5LmZpbHRlcjtcbiAgICAgICAgICAgIHZhciBncm91cCA9IGZpbHRlckJ5Lmdyb3VwO1xuICAgICAgICAgICAgdmFyIHNvcnQgPSBmaWx0ZXJCeS5zb3J0O1xuICAgICAgICAgICAgdmFyIG9yZGVyID0gZmlsdGVyQnkub3JkZXI7IGlmICggb3JkZXIgPT09IHZvaWQgMCApIG9yZGVyID0gJ2FzYyc7XG5cbiAgICAgICAgICAgIGlmIChmaWx0ZXIkJDEgfHwgaXNVbmRlZmluZWQoc29ydCkpIHtcblxuICAgICAgICAgICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc3RhdGUuZmlsdGVyWycnXTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUuZmlsdGVyW2dyb3VwXSA9IGZpbHRlciQkMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGF0ZS5maWx0ZXIgPSB7Jyc6IGZpbHRlciQkMX07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoc29ydCkpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5zb3J0ID0gW3NvcnQsIG9yZGVyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1hdGNoRmlsdGVyKGVsLCBhdHRyJCQxLCByZWYpIHtcbiAgICAgICAgdmFyIHN0YXRlRmlsdGVyID0gcmVmLmZpbHRlcjtcbiAgICAgICAgdmFyIHJlZl9zb3J0ID0gcmVmLnNvcnQ7XG4gICAgICAgIHZhciBzdGF0ZVNvcnQgPSByZWZfc29ydFswXTtcbiAgICAgICAgdmFyIHN0YXRlT3JkZXIgPSByZWZfc29ydFsxXTtcblxuICAgICAgICB2YXIgcmVmJDEgPSBnZXRGaWx0ZXIoZWwsIGF0dHIkJDEpO1xuICAgICAgICB2YXIgZmlsdGVyJCQxID0gcmVmJDEuZmlsdGVyO1xuICAgICAgICB2YXIgZ3JvdXAgPSByZWYkMS5ncm91cDsgaWYgKCBncm91cCA9PT0gdm9pZCAwICkgZ3JvdXAgPSAnJztcbiAgICAgICAgdmFyIHNvcnQgPSByZWYkMS5zb3J0O1xuICAgICAgICB2YXIgb3JkZXIgPSByZWYkMS5vcmRlcjsgaWYgKCBvcmRlciA9PT0gdm9pZCAwICkgb3JkZXIgPSAnYXNjJztcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICAgICAgICAoZmlsdGVyJCQxIHx8IGlzVW5kZWZpbmVkKHNvcnQpKSAmJiBncm91cCBpbiBzdGF0ZUZpbHRlciAmJiAoZmlsdGVyJCQxID09PSBzdGF0ZUZpbHRlcltncm91cF0gfHwgaXNVbmRlZmluZWQoZmlsdGVyJCQxKSAmJiAhc3RhdGVGaWx0ZXJbZ3JvdXBdKVxuICAgICAgICAgICAgfHwgc3RhdGVTb3J0ICYmIHNvcnQgJiYgc3RhdGVTb3J0ID09PSBzb3J0ICYmIHN0YXRlT3JkZXIgPT09IG9yZGVyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNFcXVhbExpc3QobGlzdEEsIGxpc3RCLCBzdHJpY3QpIHtcbiAgICAgICAgaWYgKCBzdHJpY3QgPT09IHZvaWQgMCApIHN0cmljdCA9IHRydWU7XG5cblxuICAgICAgICBsaXN0QSA9IHRvTm9kZXMobGlzdEEpO1xuICAgICAgICBsaXN0QiA9IHRvTm9kZXMobGlzdEIpO1xuXG4gICAgICAgIHJldHVybiBsaXN0QS5sZW5ndGggPT09IGxpc3RCLmxlbmd0aFxuICAgICAgICAgICAgJiYgbGlzdEEuZXZlcnkoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBzdHJpY3QgPyBlbCA9PT0gbGlzdEJbaV0gOiB+bGlzdEIuaW5kZXhPZihlbCk7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFNlbGVjdG9yKHJlZikge1xuICAgICAgICB2YXIgZmlsdGVyJCQxID0gcmVmLmZpbHRlcjtcblxuICAgICAgICB2YXIgc2VsZWN0b3IgPSAnJztcbiAgICAgICAgZWFjaChmaWx0ZXIkJDEsIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gc2VsZWN0b3IgKz0gdmFsdWUgfHwgJyc7IH0pO1xuICAgICAgICByZXR1cm4gc2VsZWN0b3I7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc29ydEl0ZW1zKG5vZGVzLCBzb3J0LCBvcmRlcikge1xuICAgICAgICByZXR1cm4gdG9Ob2Rlcyhub2Rlcykuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gZGF0YShhLCBzb3J0KS5sb2NhbGVDb21wYXJlKGRhdGEoYiwgc29ydCkpICogKG9yZGVyID09PSAnYXNjJyB8fCAtMSk7IH0pO1xuICAgIH1cblxuICAgIHZhciBBbmltYXRpb25zID0ge1xuXG4gICAgICAgIHNsaWRlOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZShkaXIgKiAtMTAwKX0sXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZShkaXIgKiAtMTAwICogcGVyY2VudCl9LFxuICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoZGlyICogMTAwICogKDEgLSBwZXJjZW50KSl9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlZChlbCkge1xuICAgICAgICByZXR1cm4gTWF0aC5hYnMoY3NzKGVsLCAndHJhbnNmb3JtJykuc3BsaXQoJywnKVs0XSAvIGVsLm9mZnNldFdpZHRoKSB8fCAwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyYW5zbGF0ZSh2YWx1ZSwgdW5pdCkge1xuICAgICAgICBpZiAoIHZhbHVlID09PSB2b2lkIDAgKSB2YWx1ZSA9IDA7XG4gICAgICAgIGlmICggdW5pdCA9PT0gdm9pZCAwICkgdW5pdCA9ICclJztcblxuICAgICAgICByZXR1cm4gKFwidHJhbnNsYXRlWChcIiArIHZhbHVlICsgKHZhbHVlID8gdW5pdCA6ICcnKSArIFwiKVwiKTsgLy8gY3VycmVudGx5IG5vdCB0cmFuc2xhdGUzZCB0byBzdXBwb3J0IElFLCB0cmFuc2xhdGUzZCB3aXRoaW4gdHJhbnNsYXRlM2QgZG9lcyBub3Qgd29yayB3aGlsZSB0cmFuc2l0aW9uaW5nXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhbGUzZCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gKFwic2NhbGUzZChcIiArIHZhbHVlICsgXCIsIFwiICsgdmFsdWUgKyBcIiwgMSlcIik7XG4gICAgfVxuXG4gICAgdmFyIEFuaW1hdGlvbnMkMSA9IGFzc2lnbih7fSwgQW5pbWF0aW9ucywge1xuXG4gICAgICAgIGZhZGU6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnR9LFxuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogcGVyY2VudH1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2NhbGU6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDAsIHRyYW5zZm9ybTogc2NhbGUzZCgxIC0gLjIpfSxcbiAgICAgICAgICAgICAgICAgICAge29wYWNpdHk6IDEsIHRyYW5zZm9ybTogc2NhbGUzZCgxKX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnQsIHRyYW5zZm9ybTogc2NhbGUzZCgxIC0gLjIgKiBwZXJjZW50KX0sXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiBwZXJjZW50LCB0cmFuc2Zvcm06IHNjYWxlM2QoMSAtIC4yICsgLjIgKiBwZXJjZW50KX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gVHJhbnNpdGlvbmVyKHByZXYsIG5leHQsIGRpciwgcmVmKSB7XG4gICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuICAgICAgICB2YXIgZWFzaW5nID0gcmVmLmVhc2luZztcblxuXG4gICAgICAgIHZhciBwZXJjZW50ID0gYW5pbWF0aW9uLnBlcmNlbnQ7XG4gICAgICAgIHZhciB0cmFuc2xhdGUgPSBhbmltYXRpb24udHJhbnNsYXRlO1xuICAgICAgICB2YXIgc2hvdyA9IGFuaW1hdGlvbi5zaG93OyBpZiAoIHNob3cgPT09IHZvaWQgMCApIHNob3cgPSBub29wO1xuICAgICAgICB2YXIgcHJvcHMgPSBzaG93KGRpcik7XG4gICAgICAgIHZhciBkZWZlcnJlZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIHJldHVybiB7XG5cbiAgICAgICAgICAgIGRpcjogZGlyLFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCwgbGluZWFyKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBwZXJjZW50ID09PSB2b2lkIDAgKSBwZXJjZW50ID0gMDtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IGxpbmVhciA/ICdsaW5lYXInIDogZWFzaW5nO1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IE1hdGgucm91bmQoZHVyYXRpb24gKiBjbGFtcChwZXJjZW50LCAtMSwgMSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUocGVyY2VudCk7XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKG5leHQsICdpdGVtaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZHVyYXRpb246IGR1cmF0aW9uLCB0aW1pbmc6IHRpbWluZywgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyVXBkYXRlKHByZXYsICdpdGVtb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkdXJhdGlvbjogZHVyYXRpb24sIHRpbWluZzogdGltaW5nLCBkaXI6IGRpcn0pO1xuXG4gICAgICAgICAgICAgICAgUHJvbWlzZSQxLmFsbChbXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQobmV4dCwgcHJvcHNbMV0sIGR1cmF0aW9uLCB0aW1pbmcpLFxuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLnN0YXJ0KHByZXYsIHByb3BzWzBdLCBkdXJhdGlvbiwgdGltaW5nKVxuICAgICAgICAgICAgICAgIF0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEucmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH0sIG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVHJhbnNpdGlvbi5zdG9wKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBjYW5jZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcCBpbiBwcm9wc1swXSkge1xuICAgICAgICAgICAgICAgICAgICBjc3MoW25leHQsIHByZXZdLCBwcm9wLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZm9yd2FyZDogZnVuY3Rpb24oZHVyYXRpb24sIHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHBlcmNlbnQgPT09IHZvaWQgMCApIHBlcmNlbnQgPSB0aGlzLnBlcmNlbnQoKTtcblxuICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKFtuZXh0LCBwcmV2XSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhkdXJhdGlvbiwgcGVyY2VudCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHByb3BzID0gdHJhbnNsYXRlKHBlcmNlbnQsIGRpcik7XG4gICAgICAgICAgICAgICAgY3NzKG5leHQsIHByb3BzWzFdKTtcbiAgICAgICAgICAgICAgICBjc3MocHJldiwgcHJvcHNbMF0pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUobmV4dCwgJ2l0ZW10cmFuc2xhdGVpbicsIHtwZXJjZW50OiBwZXJjZW50LCBkaXI6IGRpcn0pO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUocHJldiwgJ2l0ZW10cmFuc2xhdGVvdXQnLCB7cGVyY2VudDogMSAtIHBlcmNlbnQsIGRpcjogZGlyfSk7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwZXJjZW50KHByZXYgfHwgbmV4dCwgbmV4dCwgZGlyKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldERpc3RhbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldi5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9O1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdHJpZ2dlclVwZGF0ZShlbCwgdHlwZSwgZGF0YSQkMSkge1xuICAgICAgICB0cmlnZ2VyKGVsLCBjcmVhdGVFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UsIGRhdGEkJDEpKTtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyQXV0b3BsYXkgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiBCb29sZWFuLFxuICAgICAgICAgICAgYXV0b3BsYXlJbnRlcnZhbDogTnVtYmVyLFxuICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiBCb29sZWFuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYXV0b3BsYXk6IGZhbHNlLFxuICAgICAgICAgICAgYXV0b3BsYXlJbnRlcnZhbDogNzAwMCxcbiAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogdHJ1ZVxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbm5lY3RlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0QXV0b3BsYXkoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5zdG9wQXV0b3BsYXkoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ3Zpc2liaWxpdHljaGFuZ2UnLFxuXG4gICAgICAgICAgICAgICAgZWw6IGRvY3VtZW50LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0QXV0b3BsYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogcG9pbnRlckRvd24sXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogJ3N0b3BBdXRvcGxheSdcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlZW50ZXInLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0b3BsYXk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSG92ZXJpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ21vdXNlbGVhdmUnLFxuXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0b3BsYXk7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzSG92ZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc3RhcnRBdXRvcGxheTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcEF1dG9wbGF5KCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hdXRvcGxheSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7IHJldHVybiAhKHRoaXMkMS5pc0hvdmVyaW5nICYmIHRoaXMkMS5wYXVzZU9uSG92ZXIpICYmICF0aGlzJDEuc3RhY2subGVuZ3RoICYmIHRoaXMkMS5zaG93KCduZXh0Jyk7IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF1dG9wbGF5SW50ZXJ2YWxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHN0b3BBdXRvcGxheTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZXJEcmFnID0ge1xuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHRocmVzaG9sZDogMTAsXG4gICAgICAgICAgICBwcmV2ZW50Q2F0Y2g6IGZhbHNlXG4gICAgICAgIH0sXG5cbiAgICAgICAgaW5pdDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICBbJ3N0YXJ0JywgJ21vdmUnLCAnZW5kJ10uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgZm4gPSB0aGlzJDFba2V5XTtcbiAgICAgICAgICAgICAgICB0aGlzJDFba2V5XSA9IGZ1bmN0aW9uIChlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IGdldFBvcyQxKGUpLnggKiAoaXNSdGwgPyAtMSA6IDEpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wcmV2UG9zID0gcG9zICE9PSB0aGlzJDEucG9zID8gdGhpcyQxLnBvcyA6IHRoaXMkMS5wcmV2UG9zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEucG9zID0gcG9zO1xuXG4gICAgICAgICAgICAgICAgICAgIGZuKGUpO1xuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6IHBvaW50ZXJEb3duLFxuXG4gICAgICAgICAgICAgICAgZGVsZWdhdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXNTZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNUb3VjaChlKSAmJiBoYXNUZXh0Tm9kZXNPbmx5KGUudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZS5idXR0b24gPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmxlbmd0aCA8IDJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMucHJldmVudENhdGNoXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydChlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnZHJhZ3N0YXJ0JyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gdGhpcy5wb3M7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhbnNpdGlvbmVyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJjZW50ID0gdGhpcy5fdHJhbnNpdGlvbmVyLnBlcmNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnICs9IHRoaXMuX3RyYW5zaXRpb25lci5nZXREaXN0YW5jZSgpICogdGhpcy5wZXJjZW50ICogdGhpcy5kaXI7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyLnRyYW5zbGF0ZSh0aGlzLnBlcmNlbnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIuY2FuY2VsKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjayA9IFtdO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMudW5iaW5kTW92ZSA9IG9uKGRvY3VtZW50LCBwb2ludGVyTW92ZSwgdGhpcy5tb3ZlLCB7Y2FwdHVyZTogdHJ1ZSwgcGFzc2l2ZTogZmFsc2V9KTtcbiAgICAgICAgICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnVuYmluZE1vdmUpO1xuICAgICAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kLCB0cnVlKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbW92ZTogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgZGlzdGFuY2UgPSB0aGlzLnBvcyAtIHRoaXMuZHJhZztcblxuICAgICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA9PT0gMCB8fCB0aGlzLnByZXZQb3MgPT09IHRoaXMucG9zIHx8ICF0aGlzLmRyYWdnaW5nICYmIE1hdGguYWJzKGRpc3RhbmNlKSA8IHRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBlLmNhbmNlbGFibGUgJiYgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnZ2luZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXIgPSAoZGlzdGFuY2UgPCAwID8gMSA6IC0xKTtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzO1xuICAgICAgICAgICAgICAgIHZhciBzbGlkZXMgPSByZWYuc2xpZGVzO1xuICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHByZXZJbmRleCA9IHJlZiQxLnByZXZJbmRleDtcbiAgICAgICAgICAgICAgICB2YXIgZGlzID0gTWF0aC5hYnMoZGlzdGFuY2UpO1xuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSB0aGlzLmdldEluZGV4KHByZXZJbmRleCArIHRoaXMuZGlyLCBwcmV2SW5kZXgpO1xuICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHRoaXMuX2dldERpc3RhbmNlKHByZXZJbmRleCwgbmV4dEluZGV4KSB8fCBzbGlkZXNbcHJldkluZGV4XS5vZmZzZXRXaWR0aDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChuZXh0SW5kZXggIT09IHByZXZJbmRleCAmJiBkaXMgPiB3aWR0aCQkMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS5kcmFnIC09IHdpZHRoJCQxICogdGhpcyQxLmRpcjtcblxuICAgICAgICAgICAgICAgICAgICBwcmV2SW5kZXggPSBuZXh0SW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGRpcyAtPSB3aWR0aCQkMTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dEluZGV4ID0gdGhpcyQxLmdldEluZGV4KHByZXZJbmRleCArIHRoaXMkMS5kaXIsIHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoJCQxID0gdGhpcyQxLl9nZXREaXN0YW5jZShwcmV2SW5kZXgsIG5leHRJbmRleCkgfHwgc2xpZGVzW3ByZXZJbmRleF0ub2Zmc2V0V2lkdGg7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnBlcmNlbnQgPSBkaXMgLyB3aWR0aCQkMTtcblxuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gc2xpZGVzW3ByZXZJbmRleF07XG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSBzbGlkZXNbbmV4dEluZGV4XTtcbiAgICAgICAgICAgICAgICB2YXIgY2hhbmdlZCA9IHRoaXMuaW5kZXggIT09IG5leHRJbmRleDtcbiAgICAgICAgICAgICAgICB2YXIgZWRnZSA9IHByZXZJbmRleCA9PT0gbmV4dEluZGV4O1xuXG4gICAgICAgICAgICAgICAgdmFyIGl0ZW1TaG93bjtcblxuICAgICAgICAgICAgICAgIFt0aGlzLmluZGV4LCB0aGlzLnByZXZJbmRleF0uZmlsdGVyKGZ1bmN0aW9uIChpKSB7IHJldHVybiAhaW5jbHVkZXMoW25leHRJbmRleCwgcHJldkluZGV4XSwgaSk7IH0pLmZvckVhY2goZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihzbGlkZXNbaV0sICdpdGVtaGlkZGVuJywgW3RoaXMkMV0pO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChlZGdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtU2hvd24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnByZXZJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRleCA9PT0gcHJldkluZGV4ICYmIHRoaXMucHJldkluZGV4ICE9PSBwcmV2SW5kZXggfHwgaXRlbVNob3duKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIoc2xpZGVzW3RoaXMuaW5kZXhdLCAnaXRlbXNob3duJywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZJbmRleCA9IHByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IG5leHRJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAhZWRnZSAmJiB0cmlnZ2VyKHByZXYsICdiZWZvcmVpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2JlZm9yZWl0ZW1zaG93JywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl90cmFuc2l0aW9uZXIgPSB0aGlzLl90cmFuc2xhdGUoTWF0aC5hYnModGhpcy5wZXJjZW50KSwgcHJldiwgIWVkZ2UgJiYgbmV4dCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAhZWRnZSAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIobmV4dCwgJ2l0ZW1zaG93JywgW3RoaXNdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGVuZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBvZmYod2luZG93LCAnc2Nyb2xsJywgdGhpcy51bmJpbmRNb3ZlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnVuYmluZE1vdmUoKTtcbiAgICAgICAgICAgICAgICBvZmYoZG9jdW1lbnQsIHBvaW50ZXJVcCwgdGhpcy5lbmQsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYWdnaW5nID0gbnVsbDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRleCA9PT0gdGhpcy5wcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IDEgLSB0aGlzLnBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciAqPSAtMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nob3coZmFsc2UsIHRoaXMuaW5kZXgsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbmVyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpckNoYW5nZSA9IChpc1J0bCA/IHRoaXMuZGlyICogKGlzUnRsID8gMSA6IC0xKSA6IHRoaXMuZGlyKSA8IDAgPT09IHRoaXMucHJldlBvcyA+IHRoaXMucG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IGRpckNoYW5nZSA/IHRoaXMuaW5kZXggOiB0aGlzLnByZXZJbmRleDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpckNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGVyY2VudCA9IDEgLSB0aGlzLnBlcmNlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyh0aGlzLmRpciA+IDAgJiYgIWRpckNoYW5nZSB8fCB0aGlzLmRpciA8IDAgJiYgZGlyQ2hhbmdlID8gJ25leHQnIDogJ3ByZXZpb3VzJywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBwcmV2ZW50Q2xpY2soKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZHJhZ1xuICAgICAgICAgICAgICAgICAgICA9IHRoaXMucGVyY2VudFxuICAgICAgICAgICAgICAgICAgICA9IG51bGw7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaGFzVGV4dE5vZGVzT25seShlbCkge1xuICAgICAgICByZXR1cm4gIWVsLmNoaWxkcmVuLmxlbmd0aCAmJiBlbC5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyTmF2ID0ge1xuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHNlbE5hdjogZmFsc2VcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBuYXY6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNlbE5hdiA9IHJlZi5zZWxOYXY7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJChzZWxOYXYsICRlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBuYXZJdGVtU2VsZWN0b3I6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhdHRySXRlbSA9IHJlZi5hdHRySXRlbTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXCJbXCIgKyBhdHRySXRlbSArIFwiXSxbZGF0YS1cIiArIGF0dHJJdGVtICsgXCJdXCIpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbmF2SXRlbXM6IGZ1bmN0aW9uKF8sICRlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAkJCh0aGlzLm5hdkl0ZW1TZWxlY3RvciwgJGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmF2ICYmIHRoaXMubGVuZ3RoICE9PSB0aGlzLm5hdi5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwodGhpcy5uYXYsIHRoaXMuc2xpZGVzLm1hcChmdW5jdGlvbiAoXywgaSkgeyByZXR1cm4gKFwiPGxpIFwiICsgKHRoaXMkMS5hdHRySXRlbSkgKyBcIj1cXFwiXCIgKyBpICsgXCJcXFwiPjxhIGhyZWY9XFxcIiNcXFwiPjwvYT48L2xpPlwiKTsgfSkuam9pbignJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoJCQodGhpcy5uYXZJdGVtU2VsZWN0b3IsIHRoaXMuJGVsKS5jb25jYXQodGhpcy5uYXYpLCAndWstaGlkZGVuJywgIXRoaXMubWF4SW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTmF2KCk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ2xvYWQnLCAncmVzaXplJ11cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIF0sXG5cbiAgICAgICAgZXZlbnRzOiBbXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdjbGljaycsXG5cbiAgICAgICAgICAgICAgICBkZWxlZ2F0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5hdkl0ZW1TZWxlY3RvcjtcbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIGUuY3VycmVudC5ibHVyKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdyhkYXRhKGUuY3VycmVudCwgdGhpcy5hdHRySXRlbSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93JyxcbiAgICAgICAgICAgICAgICBoYW5kbGVyOiAndXBkYXRlTmF2J1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIHVwZGF0ZU5hdjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciBpID0gdGhpcy5nZXRWYWxpZEluZGV4KCk7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXZJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBjbWQgPSBkYXRhKGVsLCB0aGlzJDEuYXR0ckl0ZW0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzJDEuY2xzQWN0aXZlLCB0b051bWJlcihjbWQpID09PSBpKTtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsICd1ay1pbnZpc2libGUnLCB0aGlzJDEuZmluaXRlICYmIChjbWQgPT09ICdwcmV2aW91cycgJiYgaSA9PT0gMCB8fCBjbWQgPT09ICduZXh0JyAmJiBpID49IHRoaXMkMS5tYXhJbmRleCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIHZhciBTbGlkZXIgPSB7XG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgbWl4aW5zOiBbU2xpZGVyQXV0b3BsYXksIFNsaWRlckRyYWcsIFNsaWRlck5hdl0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGNsc0FjdGl2YXRlZDogQm9vbGVhbixcbiAgICAgICAgICAgIGVhc2luZzogU3RyaW5nLFxuICAgICAgICAgICAgaW5kZXg6IE51bWJlcixcbiAgICAgICAgICAgIGZpbml0ZTogQm9vbGVhbixcbiAgICAgICAgICAgIHZlbG9jaXR5OiBOdW1iZXJcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiBmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgZWFzaW5nOiAnZWFzZScsXG4gICAgICAgICAgICBmaW5pdGU6IGZhbHNlLFxuICAgICAgICAgICAgdmVsb2NpdHk6IDEsXG4gICAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICAgIHN0YWNrOiBbXSxcbiAgICAgICAgICAgIHBlcmNlbnQ6IDAsXG4gICAgICAgICAgICBjbHNBY3RpdmU6ICd1ay1hY3RpdmUnLFxuICAgICAgICAgICAgY2xzQWN0aXZhdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIFRyYW5zaXRpb25lcjogZmFsc2UsXG4gICAgICAgICAgICB0cmFuc2l0aW9uT3B0aW9uczoge31cbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgZHVyYXRpb246IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZlbG9jaXR5ID0gcmVmLnZlbG9jaXR5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNwZWVkVXAoJGVsLm9mZnNldFdpZHRoIC8gdmVsb2NpdHkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbGVuZ3RoOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXMubGVuZ3RoO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbGlzdDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsTGlzdCA9IHJlZi5zZWxMaXN0O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoc2VsTGlzdCwgJGVsKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1heEluZGV4OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2xpZGVzU2VsZWN0b3I6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBzZWxMaXN0ID0gcmVmLnNlbExpc3Q7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKHNlbExpc3QgKyBcIiA+ICpcIik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzbGlkZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0b05vZGVzKHRoaXMubGlzdC5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgaXRlbXNob3duOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiR1cGRhdGUodGhpcy5saXN0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oaW5kZXgkJDEsIGZvcmNlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgaWYgKCBmb3JjZSA9PT0gdm9pZCAwICkgZm9yY2UgPSBmYWxzZTtcblxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHJhZ2dpbmcgfHwgIXRoaXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgc3RhY2sgPSByZWYuc3RhY2s7XG4gICAgICAgICAgICAgICAgdmFyIHF1ZXVlSW5kZXggPSBmb3JjZSA/IDAgOiBzdGFjay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdmFyIHJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBzdGFjay5zcGxpY2UocXVldWVJbmRleCwgMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNob3coc3RhY2suc2hpZnQoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgc3RhY2tbZm9yY2UgPyAndW5zaGlmdCcgOiAncHVzaCddKGluZGV4JCQxKTtcblxuICAgICAgICAgICAgICAgIGlmICghZm9yY2UgJiYgc3RhY2subGVuZ3RoID4gMSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lci5mb3J3YXJkKE1hdGgubWluKHRoaXMuZHVyYXRpb24sIDIwMCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBwcmV2SW5kZXggPSB0aGlzLmluZGV4O1xuICAgICAgICAgICAgICAgIHZhciBwcmV2ID0gaGFzQ2xhc3ModGhpcy5zbGlkZXMsIHRoaXMuY2xzQWN0aXZlKSAmJiB0aGlzLnNsaWRlc1twcmV2SW5kZXhdO1xuICAgICAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSB0aGlzLmdldEluZGV4KGluZGV4JCQxLCB0aGlzLmluZGV4KTtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHRoaXMuc2xpZGVzW25leHRJbmRleF07XG5cbiAgICAgICAgICAgICAgICBpZiAocHJldiA9PT0gbmV4dCkge1xuICAgICAgICAgICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5kaXIgPSBnZXREaXJlY3Rpb24oaW5kZXgkJDEsIHByZXZJbmRleCk7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2SW5kZXggPSBwcmV2SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IG5leHRJbmRleDtcblxuICAgICAgICAgICAgICAgIHByZXYgJiYgdHJpZ2dlcihwcmV2LCAnYmVmb3JlaXRlbWhpZGUnLCBbdGhpc10pO1xuICAgICAgICAgICAgICAgIGlmICghdHJpZ2dlcihuZXh0LCAnYmVmb3JlaXRlbXNob3cnLCBbdGhpcywgcHJldl0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLnByZXZJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBwcm9taXNlID0gdGhpcy5fc2hvdyhwcmV2LCBuZXh0LCBmb3JjZSkudGhlbihmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZGVuJywgW3RoaXMkMV0pO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKG5leHQsICdpdGVtc2hvd24nLCBbdGhpcyQxXSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhc3Rkb20ud3JpdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuc2hvdyhzdGFjay5zaGlmdCgpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuX3RyYW5zaXRpb25lciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyKHByZXYsICdpdGVtaGlkZScsIFt0aGlzXSk7XG4gICAgICAgICAgICAgICAgdHJpZ2dlcihuZXh0LCAnaXRlbXNob3cnLCBbdGhpc10pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldEluZGV4OiBmdW5jdGlvbihpbmRleCQkMSwgcHJldikge1xuICAgICAgICAgICAgICAgIGlmICggaW5kZXgkJDEgPT09IHZvaWQgMCApIGluZGV4JCQxID0gdGhpcy5pbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoIHByZXYgPT09IHZvaWQgMCApIHByZXYgPSB0aGlzLmluZGV4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsYW1wKGdldEluZGV4KGluZGV4JCQxLCB0aGlzLnNsaWRlcywgcHJldiwgdGhpcy5maW5pdGUpLCAwLCB0aGlzLm1heEluZGV4KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFZhbGlkSW5kZXg6IGZ1bmN0aW9uKGluZGV4JCQxLCBwcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2SW5kZXggPT09IHZvaWQgMCApIHByZXZJbmRleCA9IHRoaXMucHJldkluZGV4O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW5kZXgoaW5kZXgkJDEsIHByZXZJbmRleCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBfc2hvdzogZnVuY3Rpb24ocHJldiwgbmV4dCwgZm9yY2UpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lciA9IHRoaXMuX2dldFRyYW5zaXRpb25lcihcbiAgICAgICAgICAgICAgICAgICAgcHJldixcbiAgICAgICAgICAgICAgICAgICAgbmV4dCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXIsXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBlYXNpbmc6IGZvcmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXh0Lm9mZnNldFdpZHRoIDwgNjAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ2N1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KScgLyogZWFzZU91dFF1YWQgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnY3ViaWMtYmV6aWVyKDAuMTY1LCAwLjg0LCAwLjQ0LCAxKScgLyogZWFzZU91dFF1YXJ0ICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmVhc2luZ1xuICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnRyYW5zaXRpb25PcHRpb25zKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWZvcmNlICYmICFwcmV2KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25lci50cmFuc2xhdGUoMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlJDEucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLnN0YWNrO1xuICAgICAgICAgICAgICAgIHZhciBsZW5ndGggPSByZWYubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc2l0aW9uZXJbbGVuZ3RoID4gMSA/ICdmb3J3YXJkJyA6ICdzaG93J10obGVuZ3RoID4gMSA/IE1hdGgubWluKHRoaXMuZHVyYXRpb24sIDc1ICsgNzUgLyAobGVuZ3RoIC0gMSkpIDogdGhpcy5kdXJhdGlvbiwgdGhpcy5wZXJjZW50KTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2dldERpc3RhbmNlOiBmdW5jdGlvbihwcmV2LCBuZXh0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB0aGlzLl9nZXRUcmFuc2l0aW9uZXIocHJldiwgcHJldiAhPT0gbmV4dCAmJiBuZXh0KS5nZXREaXN0YW5jZSgpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX3RyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCwgcHJldiwgbmV4dCkge1xuICAgICAgICAgICAgICAgIGlmICggcHJldiA9PT0gdm9pZCAwICkgcHJldiA9IHRoaXMucHJldkluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gdm9pZCAwICkgbmV4dCA9IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICB2YXIgdHJhbnNpdGlvbmVyID0gdGhpcy5fZ2V0VHJhbnNpdGlvbmVyKHByZXYgIT09IG5leHQgPyBwcmV2IDogZmFsc2UsIG5leHQpO1xuICAgICAgICAgICAgICAgIHRyYW5zaXRpb25lci50cmFuc2xhdGUocGVyY2VudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb25lcjtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIF9nZXRUcmFuc2l0aW9uZXI6IGZ1bmN0aW9uKHByZXYsIG5leHQsIGRpciwgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmICggcHJldiA9PT0gdm9pZCAwICkgcHJldiA9IHRoaXMucHJldkluZGV4O1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gdm9pZCAwICkgbmV4dCA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBkaXIgPT09IHZvaWQgMCApIGRpciA9IHRoaXMuZGlyIHx8IDE7XG4gICAgICAgICAgICAgICAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0gdGhpcy50cmFuc2l0aW9uT3B0aW9ucztcblxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgdGhpcy5UcmFuc2l0aW9uZXIoXG4gICAgICAgICAgICAgICAgICAgIGlzTnVtYmVyKHByZXYpID8gdGhpcy5zbGlkZXNbcHJldl0gOiBwcmV2LFxuICAgICAgICAgICAgICAgICAgICBpc051bWJlcihuZXh0KSA/IHRoaXMuc2xpZGVzW25leHRdIDogbmV4dCxcbiAgICAgICAgICAgICAgICAgICAgZGlyICogKGlzUnRsID8gLTEgOiAxKSxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldERpcmVjdGlvbihpbmRleCQkMSwgcHJldkluZGV4KSB7XG4gICAgICAgIHJldHVybiBpbmRleCQkMSA9PT0gJ25leHQnXG4gICAgICAgICAgICA/IDFcbiAgICAgICAgICAgIDogaW5kZXgkJDEgPT09ICdwcmV2aW91cydcbiAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgOiBpbmRleCQkMSA8IHByZXZJbmRleFxuICAgICAgICAgICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICAgICAgICAgIDogMTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzcGVlZFVwKHgpIHtcbiAgICAgICAgcmV0dXJuIC41ICogeCArIDMwMDsgLy8gcGFyYWJvbGEgdGhyb3VnaCAoNDAwLDUwMDsgNjAwLDYwMDsgMTgwMCwxMjAwKVxuICAgIH1cblxuICAgIHZhciBTbGlkZXNob3cgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbU2xpZGVyXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBTdHJpbmdcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICBhbmltYXRpb246ICdzbGlkZScsXG4gICAgICAgICAgICBjbHNBY3RpdmF0ZWQ6ICd1ay10cmFuc2l0aW9uLWFjdGl2ZScsXG4gICAgICAgICAgICBBbmltYXRpb25zOiBBbmltYXRpb25zLFxuICAgICAgICAgICAgVHJhbnNpdGlvbmVyOiBUcmFuc2l0aW9uZXJcbiAgICAgICAgfSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBhbmltYXRpb246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBhbmltYXRpb24gPSByZWYuYW5pbWF0aW9uO1xuICAgICAgICAgICAgICAgIHZhciBBbmltYXRpb25zJCQxID0gcmVmLkFuaW1hdGlvbnM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gYXNzaWduKGFuaW1hdGlvbiBpbiBBbmltYXRpb25zJCQxID8gQW5pbWF0aW9ucyQkMVthbmltYXRpb25dIDogQW5pbWF0aW9ucyQkMS5zbGlkZSwge25hbWU6IGFuaW1hdGlvbn0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbk9wdGlvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7YW5pbWF0aW9uOiB0aGlzLmFuaW1hdGlvbn07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IHtcblxuICAgICAgICAgICAgJ2l0ZW1zaG93IGl0ZW1oaWRlIGl0ZW1zaG93biBpdGVtaGlkZGVuJzogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9IHJlZi50YXJnZXQ7XG5cbiAgICAgICAgICAgICAgICB0aGlzLiR1cGRhdGUodGFyZ2V0KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBpc051bWJlcih0aGlzLnByZXZJbmRleCkgJiYgZmFzdGRvbS5mbHVzaCgpOyAvLyBpT1MgMTArIHdpbGwgaG9ub3IgdGhlIHZpZGVvLnBsYXkgb25seSBpZiBjYWxsZWQgZnJvbSBhIGdlc3R1cmUgaGFuZGxlclxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgYmVmb3JlaXRlbXNob3c6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtc2hvd246IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSByZWYudGFyZ2V0O1xuXG4gICAgICAgICAgICAgICAgYWRkQ2xhc3ModGFyZ2V0LCB0aGlzLmNsc0FjdGl2YXRlZCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpdGVtaGlkZGVuOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRhcmdldCwgdGhpcy5jbHNBY3RpdmUsIHRoaXMuY2xzQWN0aXZhdGVkKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgdmFyIExpZ2h0Ym94UGFuZWwgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ29udGFpbmVyLCBNb2RhbCwgVG9nZ2xhYmxlLCBTbGlkZXNob3ddLFxuXG4gICAgICAgIGZ1bmN0aW9uYWw6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRlbGF5Q29udHJvbHM6IE51bWJlcixcbiAgICAgICAgICAgIHByZWxvYWQ6IE51bWJlcixcbiAgICAgICAgICAgIHZpZGVvQXV0b3BsYXk6IEJvb2xlYW4sXG4gICAgICAgICAgICB0ZW1wbGF0ZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIHByZWxvYWQ6IDEsXG4gICAgICAgICAgICB2aWRlb0F1dG9wbGF5OiBmYWxzZSxcbiAgICAgICAgICAgIGRlbGF5Q29udHJvbHM6IDMwMDAsXG4gICAgICAgICAgICBpdGVtczogW10sXG4gICAgICAgICAgICBjbHM6ICd1ay1vcGVuJyxcbiAgICAgICAgICAgIGNsc1BhZ2U6ICd1ay1saWdodGJveC1wYWdlJyxcbiAgICAgICAgICAgIHNlbExpc3Q6ICcudWstbGlnaHRib3gtaXRlbXMnLFxuICAgICAgICAgICAgYXR0ckl0ZW06ICd1ay1saWdodGJveC1pdGVtJyxcbiAgICAgICAgICAgIHNlbENsb3NlOiAnLnVrLWNsb3NlLWxhcmdlJyxcbiAgICAgICAgICAgIHBhdXNlT25Ib3ZlcjogZmFsc2UsXG4gICAgICAgICAgICB2ZWxvY2l0eTogMixcbiAgICAgICAgICAgIEFuaW1hdGlvbnM6IEFuaW1hdGlvbnMkMSxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBcIjxkaXYgY2xhc3M9XFxcInVrLWxpZ2h0Ym94IHVrLW92ZXJmbG93LWhpZGRlblxcXCI+IDx1bCBjbGFzcz1cXFwidWstbGlnaHRib3gtaXRlbXNcXFwiPjwvdWw+IDxkaXYgY2xhc3M9XFxcInVrLWxpZ2h0Ym94LXRvb2xiYXIgdWstcG9zaXRpb24tdG9wIHVrLXRleHQtcmlnaHQgdWstdHJhbnNpdGlvbi1zbGlkZS10b3AgdWstdHJhbnNpdGlvbi1vcGFxdWVcXFwiPiA8YnV0dG9uIGNsYXNzPVxcXCJ1ay1saWdodGJveC10b29sYmFyLWljb24gdWstY2xvc2UtbGFyZ2VcXFwiIHR5cGU9XFxcImJ1dHRvblxcXCIgdWstY2xvc2U+PC9idXR0b24+IDwvZGl2PiA8YSBjbGFzcz1cXFwidWstbGlnaHRib3gtYnV0dG9uIHVrLXBvc2l0aW9uLWNlbnRlci1sZWZ0IHVrLXBvc2l0aW9uLW1lZGl1bSB1ay10cmFuc2l0aW9uLWZhZGVcXFwiIGhyZWY9XFxcIiNcXFwiIHVrLXNsaWRlbmF2LXByZXZpb3VzIHVrLWxpZ2h0Ym94LWl0ZW09XFxcInByZXZpb3VzXFxcIj48L2E+IDxhIGNsYXNzPVxcXCJ1ay1saWdodGJveC1idXR0b24gdWstcG9zaXRpb24tY2VudGVyLXJpZ2h0IHVrLXBvc2l0aW9uLW1lZGl1bSB1ay10cmFuc2l0aW9uLWZhZGVcXFwiIGhyZWY9XFxcIiNcXFwiIHVrLXNsaWRlbmF2LW5leHQgdWstbGlnaHRib3gtaXRlbT1cXFwibmV4dFxcXCI+PC9hPiA8ZGl2IGNsYXNzPVxcXCJ1ay1saWdodGJveC10b29sYmFyIHVrLWxpZ2h0Ym94LWNhcHRpb24gdWstcG9zaXRpb24tYm90dG9tIHVrLXRleHQtY2VudGVyIHVrLXRyYW5zaXRpb24tc2xpZGUtYm90dG9tIHVrLXRyYW5zaXRpb24tb3BhcXVlXFxcIj48L2Rpdj4gPC9kaXY+XCJcbiAgICAgICAgfSk7IH0sXG5cbiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICB0aGlzLiRtb3VudChhcHBlbmQodGhpcy5jb250YWluZXIsIHRoaXMudGVtcGxhdGUpKTtcblxuICAgICAgICAgICAgdGhpcy5jYXB0aW9uID0gJCgnLnVrLWxpZ2h0Ym94LWNhcHRpb24nLCB0aGlzLiRlbCk7XG5cbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbiAoKSB7IHJldHVybiBhcHBlbmQodGhpcyQxLmxpc3QsICc8bGk+PC9saT4nKTsgfSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogKHBvaW50ZXJNb3ZlICsgXCIgXCIgKyBwb2ludGVyRG93biArIFwiIGtleWRvd25cIiksXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiAnc2hvd0NvbnRyb2xzJ1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnY2xpY2snLFxuXG4gICAgICAgICAgICAgICAgc2VsZjogdHJ1ZSxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2xpZGVzU2VsZWN0b3I7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdzaG93bicsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogJ3Nob3dDb250cm9scydcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHtcblxuICAgICAgICAgICAgICAgIG5hbWU6ICdoaWRlJyxcblxuICAgICAgICAgICAgICAgIHNlbGY6IHRydWUsXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVDb250cm9scygpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RvcCh0aGlzLnNsaWRlcyk7XG5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAna2V5dXAnLFxuXG4gICAgICAgICAgICAgICAgZWw6IGRvY3VtZW50LFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1RvZ2dsZWQodGhpcy4kZWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGUua2V5Q29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coJ3ByZXZpb3VzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvdygnbmV4dCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2JlZm9yZWl0ZW1zaG93JyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1RvZ2dsZWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50Q2F0Y2ggPSB0cnVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZU5vdyh0aGlzLiRlbCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmltYXRpb24gPSBBbmltYXRpb25zJDFbJ3NjYWxlJ107XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGUudGFyZ2V0LCB0aGlzLmNsc0FjdGl2ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2suc3BsaWNlKDEsIDAsIHRoaXMuaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXNob3cnLFxuXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpID0gaW5kZXgodGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiQxID0gdGhpcy5nZXRJdGVtKGkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2FwdGlvbiA9IHJlZiQxLmNhcHRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuY2FwdGlvbiwgJ2Rpc3BsYXknLCBjYXB0aW9uID8gJycgOiAnbm9uZScpO1xuICAgICAgICAgICAgICAgICAgICBodG1sKHRoaXMuY2FwdGlvbiwgY2FwdGlvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPD0gdGhpcy5wcmVsb2FkOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5sb2FkSXRlbSh0aGlzJDEuZ2V0SW5kZXgoaSArIGopKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5sb2FkSXRlbSh0aGlzJDEuZ2V0SW5kZXgoaSAtIGopKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICBuYW1lOiAnaXRlbXNob3duJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZlbnRDYXRjaCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1sb2FkJyxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKF8sIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgICAgICB2YXIgc291cmNlID0gaXRlbS5zb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gaXRlbS50eXBlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWx0ID0gaXRlbS5hbHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtKGl0ZW0sICc8c3BhbiB1ay1zcGlubmVyPjwvc3Bhbj4nKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoZXMkJDE7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdpbWFnZScgfHwgc291cmNlLm1hdGNoKC9cXC4oanAoZSk/Z3xwbmd8Z2lmfHN2ZykoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEltYWdlKHNvdXJjZSkudGhlbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoaW1nKSB7IHJldHVybiB0aGlzJDEuc2V0SXRlbShpdGVtLCAoXCI8aW1nIHdpZHRoPVxcXCJcIiArIChpbWcud2lkdGgpICsgXCJcXFwiIGhlaWdodD1cXFwiXCIgKyAoaW1nLmhlaWdodCkgKyBcIlxcXCIgc3JjPVxcXCJcIiArIHNvdXJjZSArIFwiXFxcIiBhbHQ9XFxcIlwiICsgKGFsdCA/IGFsdCA6ICcnKSArIFwiXFxcIj5cIikpOyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5zZXRFcnJvcihpdGVtKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmlkZW9cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndmlkZW8nIHx8IHNvdXJjZS5tYXRjaCgvXFwuKG1wNHx3ZWJtfG9ndikoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aWRlbyA9ICQoKFwiPHZpZGVvIGNvbnRyb2xzIHBsYXlzaW5saW5lXCIgKyAoaXRlbS5wb3N0ZXIgPyAoXCIgcG9zdGVyPVxcXCJcIiArIChpdGVtLnBvc3RlcikgKyBcIlxcXCJcIikgOiAnJykgKyBcIiB1ay12aWRlbz1cXFwiXCIgKyAodGhpcy52aWRlb0F1dG9wbGF5KSArIFwiXFxcIj48L3ZpZGVvPlwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyKHZpZGVvLCAnc3JjJywgc291cmNlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgb24odmlkZW8sICdlcnJvcicsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMkMS5zZXRFcnJvcihpdGVtKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbih2aWRlbywgJ2xvYWRlZG1ldGFkYXRhJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIodmlkZW8sIHt3aWR0aDogdmlkZW8udmlkZW9XaWR0aCwgaGVpZ2h0OiB2aWRlby52aWRlb0hlaWdodH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIHZpZGVvKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnaWZyYW1lJyB8fCBzb3VyY2UubWF0Y2goL1xcLihodG1sfHBocCkoJHxcXD8pL2kpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0SXRlbShpdGVtLCAoXCI8aWZyYW1lIGNsYXNzPVxcXCJ1ay1saWdodGJveC1pZnJhbWVcXFwiIHNyYz1cXFwiXCIgKyBzb3VyY2UgKyBcIlxcXCIgZnJhbWVib3JkZXI9XFxcIjBcXFwiIGFsbG93ZnVsbHNjcmVlbj48L2lmcmFtZT5cIikpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBZb3VUdWJlXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKG1hdGNoZXMkJDEgPSBzb3VyY2UubWF0Y2goL1xcL1xcLy4qP3lvdXR1YmUoLW5vY29va2llKT9cXC5bYS16XStcXC93YXRjaFxcP3Y9KFteJlxcc10rKS8pIHx8IHNvdXJjZS5tYXRjaCgvKCl5b3V0dVxcLmJlXFwvKC4qKS8pKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBtYXRjaGVzJCQxWzJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNldElmcmFtZSA9IGZ1bmN0aW9uICh3aWR0aCQkMSwgaGVpZ2h0JCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCB3aWR0aCQkMSA9PT0gdm9pZCAwICkgd2lkdGgkJDEgPSA2NDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBoZWlnaHQkJDEgPT09IHZvaWQgMCApIGhlaWdodCQkMSA9IDQ1MDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzJDEuc2V0SXRlbShpdGVtLCBnZXRJZnJhbWUoKFwiaHR0cHM6Ly93d3cueW91dHViZVwiICsgKG1hdGNoZXMkJDFbMV0gfHwgJycpICsgXCIuY29tL2VtYmVkL1wiICsgaWQpLCB3aWR0aCQkMSwgaGVpZ2h0JCQxLCB0aGlzJDEudmlkZW9BdXRvcGxheSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2UoKFwiaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvXCIgKyBpZCArIFwiL21heHJlc2RlZmF1bHQuanBnXCIpKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBZb3VUdWJlIGRlZmF1bHQgNDA0IHRodW1iLCBmYWxsIGJhY2sgdG8gbG93IHJlc29sdXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoJCQxID09PSAxMjAgJiYgaGVpZ2h0JCQxID09PSA5MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2UoKFwiaHR0cHM6Ly9pbWcueW91dHViZS5jb20vdmkvXCIgKyBpZCArIFwiLzAuanBnXCIpKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0SWZyYW1lKHdpZHRoJCQxLCBoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJZnJhbWUod2lkdGgkJDEsIGhlaWdodCQkMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElmcmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmltZW9cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobWF0Y2hlcyQkMSA9IHNvdXJjZS5tYXRjaCgvKFxcL1xcLy4qPyl2aW1lb1xcLlthLXpdK1xcLyhbMC05XSspLio/LykpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFqYXgoKFwiaHR0cHM6Ly92aW1lby5jb20vYXBpL29lbWJlZC5qc29uP21heHdpZHRoPTE5MjAmdXJsPVwiICsgKGVuY29kZVVSSShzb3VyY2UpKSksIHtyZXNwb25zZVR5cGU6ICdqc29uJywgd2l0aENyZWRlbnRpYWxzOiBmYWxzZX0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWZfcmVzcG9uc2UgPSByZWYucmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0JCQxID0gcmVmX3Jlc3BvbnNlLmhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aCQkMSA9IHJlZl9yZXNwb25zZS53aWR0aDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMkMS5zZXRJdGVtKGl0ZW0sIGdldElmcmFtZSgoXCJodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vXCIgKyAobWF0Y2hlcyQkMVsyXSkpLCB3aWR0aCQkMSwgaGVpZ2h0JCQxLCB0aGlzJDEudmlkZW9BdXRvcGxheSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcyQxLnNldEVycm9yKGl0ZW0pOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgbG9hZEl0ZW06IGZ1bmN0aW9uKGluZGV4JCQxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBpbmRleCQkMSA9PT0gdm9pZCAwICkgaW5kZXgkJDEgPSB0aGlzLmluZGV4O1xuXG5cbiAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMuZ2V0SXRlbShpbmRleCQkMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5jb250ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaXRlbWxvYWQnLCBbaXRlbV0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0SXRlbTogZnVuY3Rpb24oaW5kZXgkJDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtc1tpbmRleCQkMV0gfHwge307XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZXRJdGVtOiBmdW5jdGlvbihpdGVtLCBjb250ZW50KSB7XG4gICAgICAgICAgICAgICAgYXNzaWduKGl0ZW0sIHtjb250ZW50OiBjb250ZW50fSk7XG4gICAgICAgICAgICAgICAgdmFyIGVsID0gaHRtbCh0aGlzLnNsaWRlc1t0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSldLCBjb250ZW50KTtcbiAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnaXRlbWxvYWRlZCcsIFt0aGlzLCBlbF0pO1xuICAgICAgICAgICAgICAgIHRoaXMuJHVwZGF0ZShlbCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzZXRFcnJvcjogZnVuY3Rpb24oaXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0SXRlbShpdGVtLCAnPHNwYW4gdWstaWNvbj1cImljb246IGJvbHQ7IHJhdGlvOiAyXCI+PC9zcGFuPicpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2hvd0NvbnRyb2xzOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNvbnRyb2xzVGltZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbHNUaW1lciA9IHNldFRpbWVvdXQodGhpcy5oaWRlQ29udHJvbHMsIHRoaXMuZGVsYXlDb250cm9scyk7XG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgJ3VrLWFjdGl2ZScsICd1ay10cmFuc2l0aW9uLWFjdGl2ZScpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlQ29udHJvbHM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCAndWstYWN0aXZlJywgJ3VrLXRyYW5zaXRpb24tYWN0aXZlJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldElmcmFtZShzcmMsIHdpZHRoJCQxLCBoZWlnaHQkJDEsIGF1dG9wbGF5KSB7XG4gICAgICAgIHJldHVybiAoXCI8aWZyYW1lIHNyYz1cXFwiXCIgKyBzcmMgKyBcIlxcXCIgd2lkdGg9XFxcIlwiICsgd2lkdGgkJDEgKyBcIlxcXCIgaGVpZ2h0PVxcXCJcIiArIGhlaWdodCQkMSArIFwiXFxcIiBzdHlsZT1cXFwibWF4LXdpZHRoOiAxMDAlOyBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcXCIgZnJhbWVib3JkZXI9XFxcIjBcXFwiIGFsbG93ZnVsbHNjcmVlbiB1ay12aWRlbz1cXFwiYXV0b3BsYXk6IFwiICsgYXV0b3BsYXkgKyBcIlxcXCIgdWstcmVzcG9uc2l2ZT48L2lmcmFtZT5cIik7XG4gICAgfVxuXG4gICAgdmFyIHByb3BzID0gbWVyZ2UoTGlnaHRib3hQYW5lbCwgJ3Byb3BzJyk7XG4gICAgdmFyIGRlZmF1bHRzID0gbWVyZ2UoTGlnaHRib3hQYW5lbCwgJ2RhdGEnKTtcblxuICAgIHZhciBMaWdodGJveCA9IHtcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDIsXG5cbiAgICAgICAgYXR0cnM6IHRydWUsXG5cbiAgICAgICAgcHJvcHM6IGFzc2lnbih7dG9nZ2xlOiBTdHJpbmd9LCBwcm9wcyksXG5cbiAgICAgICAgZGF0YTogYXNzaWduKHt0b2dnbGU6ICdhJ30sIE9iamVjdC5rZXlzKHByb3BzKS5yZWR1Y2UoZnVuY3Rpb24gKGRhdGEkJDEsIGtleSkge1xuICAgICAgICAgICAgZGF0YSQkMVtrZXldID0gZGVmYXVsdHNba2V5XTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhJCQxO1xuICAgICAgICB9LCB7fSkpLFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHRvZ2dsZXM6IGZ1bmN0aW9uKHJlZiwgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRvZ2dsZSA9IHJlZi50b2dnbGU7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gJCQodG9nZ2xlLCAkZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGlzY29ubmVjdGVkOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rlc3Ryb3koKTtcbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2NsaWNrJyxcblxuICAgICAgICAgICAgICAgIGRlbGVnYXRlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgodGhpcy50b2dnbGUpICsgXCI6bm90KC51ay1kaXNhYmxlZClcIik7XG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBlLmN1cnJlbnQuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coaW5kZXgodGhpcy50b2dnbGVzLCBlLmN1cnJlbnQpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24oZGF0YSQkMSkge1xuXG4gICAgICAgICAgICBkYXRhJCQxLnRvZ2dsZXMgPSBkYXRhJCQxLnRvZ2dsZXMgfHwgdGhpcy50b2dnbGVzO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5wYW5lbCAmJiB0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJHByb3BzLmFuaW1hdGlvbiA9IHRoaXMuYW5pbWF0aW9uO1xuICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJGVtaXQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLnBhbmVsIHx8IGlzRXF1YWxMaXN0JDEoZGF0YSQkMS50b2dnbGVzLCB0aGlzLnRvZ2dsZXMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRhJCQxLnRvZ2dsZXMgPSB0aGlzLnRvZ2dsZXM7XG4gICAgICAgICAgICB0aGlzLl9kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLl9pbml0KCk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIF9pbml0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYW5lbCA9IHRoaXMucGFuZWwgfHwgdGhpcy4kY3JlYXRlKCdsaWdodGJveFBhbmVsJywgYXNzaWduKHt9LCB0aGlzLiRwcm9wcywge1xuICAgICAgICAgICAgICAgICAgICBpdGVtczogdGhpcy50b2dnbGVzLnJlZHVjZShmdW5jdGlvbiAoaXRlbXMsIGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKFsnaHJlZicsICdjYXB0aW9uJywgJ3R5cGUnLCAncG9zdGVyJywgJ2FsdCddLnJlZHVjZShmdW5jdGlvbiAob2JqLCBhdHRyJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqW2F0dHIkJDEgPT09ICdocmVmJyA/ICdzb3VyY2UnIDogYXR0ciQkMV0gPSBkYXRhKGVsLCBhdHRyJCQxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2JqO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwge30pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtcztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgX2Rlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhbmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWwuJGRlc3Ryb3kodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZWwgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGluZGV4JCQxKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMucGFuZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5pdCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsLnNob3coaW5kZXgkJDEpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBoaWRlOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhbmVsICYmIHRoaXMucGFuZWwuaGlkZSgpO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGlzRXF1YWxMaXN0JDEobGlzdEEsIGxpc3RCKSB7XG4gICAgICAgIHJldHVybiBsaXN0QS5sZW5ndGggPT09IGxpc3RCLmxlbmd0aFxuICAgICAgICAgICAgJiYgbGlzdEEuZXZlcnkoZnVuY3Rpb24gKGVsLCBpKSB7IHJldHVybiBlbCA9PT0gbGlzdEJbaV07IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlKG9wdGlvbnMsIHByb3ApIHtcbiAgICAgICAgcmV0dXJuIGFzc2lnbi5hcHBseShcbiAgICAgICAgICAgIHZvaWQgMCwgWyB7fSBdLmNvbmNhdCggKG9wdGlvbnMubWl4aW5zID8gb3B0aW9ucy5taXhpbnMubWFwKGZ1bmN0aW9uIChtaXhpbikgeyByZXR1cm4gbWVyZ2UobWl4aW4sIHByb3ApOyB9KSA6IFtdKSxcbiAgICAgICAgICAgIFtpc0Z1bmN0aW9uKG9wdGlvbnNbcHJvcF0pID8gb3B0aW9uc1twcm9wXSgpIDogb3B0aW9uc1twcm9wXV0gKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbCQyKFVJa2l0KSB7XG4gICAgICAgIGlmICghVUlraXQubGlnaHRib3hQYW5lbCkge1xuICAgICAgICAgICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveFBhbmVsJywgTGlnaHRib3hQYW5lbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgb2JqO1xuXG4gICAgdmFyIGNvbnRhaW5lcnMgPSB7fTtcblxuICAgIHZhciBOb3RpZmljYXRpb24gPSB7XG5cbiAgICAgICAgZnVuY3Rpb25hbDogdHJ1ZSxcblxuICAgICAgICBhcmdzOiBbJ21lc3NhZ2UnLCAnc3RhdHVzJ10sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgbWVzc2FnZTogJycsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgdGltZW91dDogNTAwMCxcbiAgICAgICAgICAgIGdyb3VwOiBudWxsLFxuICAgICAgICAgICAgcG9zOiAndG9wLWNlbnRlcicsXG4gICAgICAgICAgICBjbHNDbG9zZTogJ3VrLW5vdGlmaWNhdGlvbi1jbG9zZScsXG4gICAgICAgICAgICBjbHNNc2c6ICd1ay1ub3RpZmljYXRpb24tbWVzc2FnZSdcbiAgICAgICAgfSxcblxuICAgICAgICBpbnN0YWxsOiBpbnN0YWxsJDMsXG5cbiAgICAgICAgY3JlYXRlZDogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGlmICghY29udGFpbmVyc1t0aGlzLnBvc10pIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXJzW3RoaXMucG9zXSA9IGFwcGVuZCh0aGlzLiRjb250YWluZXIsIChcIjxkaXYgY2xhc3M9XFxcInVrLW5vdGlmaWNhdGlvbiB1ay1ub3RpZmljYXRpb24tXCIgKyAodGhpcy5wb3MpICsgXCJcXFwiPjwvZGl2PlwiKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBjc3MoY29udGFpbmVyc1t0aGlzLnBvc10sICdkaXNwbGF5JywgJ2Jsb2NrJyk7XG5cbiAgICAgICAgICAgIHRoaXMuJG1vdW50KGFwcGVuZChjb250YWluZXIsXG4gICAgICAgICAgICAgICAgKFwiPGRpdiBjbGFzcz1cXFwiXCIgKyAodGhpcy5jbHNNc2cpICsgKHRoaXMuc3RhdHVzID8gKFwiIFwiICsgKHRoaXMuY2xzTXNnKSArIFwiLVwiICsgKHRoaXMuc3RhdHVzKSkgOiAnJykgKyBcIlxcXCI+IDxhIGhyZWY9XFxcIiNcXFwiIGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc0Nsb3NlKSArIFwiXFxcIiBkYXRhLXVrLWNsb3NlPjwvYT4gPGRpdj5cIiArICh0aGlzLm1lc3NhZ2UpICsgXCI8L2Rpdj4gPC9kaXY+XCIpXG4gICAgICAgICAgICApKTtcblxuICAgICAgICB9LFxuXG4gICAgICAgIHJlYWR5OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgIHZhciBtYXJnaW5Cb3R0b20gPSB0b0Zsb2F0KGNzcyh0aGlzLiRlbCwgJ21hcmdpbkJvdHRvbScpKTtcbiAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQoXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB7b3BhY2l0eTogMCwgbWFyZ2luVG9wOiAtdGhpcy4kZWwub2Zmc2V0SGVpZ2h0LCBtYXJnaW5Cb3R0b206IDB9KSxcbiAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSwgbWFyZ2luVG9wOiAwLCBtYXJnaW5Cb3R0b206IG1hcmdpbkJvdHRvbX1cbiAgICAgICAgICAgICkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMkMS50aW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMkMS50aW1lciA9IHNldFRpbWVvdXQodGhpcyQxLmNsb3NlLCB0aGlzJDEudGltZW91dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6ICggb2JqID0ge1xuXG4gICAgICAgICAgICBjbGljazogZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0KGUudGFyZ2V0LCAnYVtocmVmPVwiI1wiXScpKSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sIG9ialtwb2ludGVyRW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvYmpbcG9pbnRlckxlYXZlXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KHRoaXMuY2xvc2UsIHRoaXMudGltZW91dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgb2JqICksXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oaW1tZWRpYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHZhciByZW1vdmVGbiA9IGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMkMS4kZWwsICdjbG9zZScsIFt0aGlzJDFdKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKHRoaXMkMS4kZWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghY29udGFpbmVyc1t0aGlzJDEucG9zXS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyhjb250YWluZXJzW3RoaXMkMS5wb3NdLCAnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGltbWVkaWF0ZSkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVGbigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uc3RhcnQodGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6IC10aGlzLiRlbC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Cb3R0b206IDBcbiAgICAgICAgICAgICAgICAgICAgfSkudGhlbihyZW1vdmVGbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsJDMoVUlraXQpIHtcbiAgICAgICAgVUlraXQubm90aWZpY2F0aW9uLmNsb3NlQWxsID0gZnVuY3Rpb24gKGdyb3VwLCBpbW1lZGlhdGUpIHtcbiAgICAgICAgICAgIGFwcGx5KGRvY3VtZW50LmJvZHksIGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgIHZhciBub3RpZmljYXRpb24gPSBVSWtpdC5nZXRDb21wb25lbnQoZWwsICdub3RpZmljYXRpb24nKTtcbiAgICAgICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uICYmICghZ3JvdXAgfHwgZ3JvdXAgPT09IG5vdGlmaWNhdGlvbi5ncm91cCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmNsb3NlKGltbWVkaWF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIHByb3BzJDEgPSBbJ3gnLCAneScsICdiZ3gnLCAnYmd5JywgJ3JvdGF0ZScsICdzY2FsZScsICdjb2xvcicsICdiYWNrZ3JvdW5kQ29sb3InLCAnYm9yZGVyQ29sb3InLCAnb3BhY2l0eScsICdibHVyJywgJ2h1ZScsICdncmF5c2NhbGUnLCAnaW52ZXJ0JywgJ3NhdHVyYXRlJywgJ3NlcGlhJywgJ2ZvcGFjaXR5J107XG5cbiAgICB2YXIgUGFyYWxsYXggPSB7XG5cbiAgICAgICAgcHJvcHM6IHByb3BzJDEucmVkdWNlKGZ1bmN0aW9uIChwcm9wcywgcHJvcCkge1xuICAgICAgICAgICAgcHJvcHNbcHJvcF0gPSAnbGlzdCc7XG4gICAgICAgICAgICByZXR1cm4gcHJvcHM7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG1lZGlhOiAnbWVkaWEnXG4gICAgICAgIH0pLFxuXG4gICAgICAgIGRhdGE6IHByb3BzJDEucmVkdWNlKGZ1bmN0aW9uIChkYXRhJCQxLCBwcm9wKSB7XG4gICAgICAgICAgICBkYXRhJCQxW3Byb3BdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEkJDE7XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIG1lZGlhOiBmYWxzZVxuICAgICAgICB9KSxcblxuICAgICAgICBjb21wdXRlZDoge1xuXG4gICAgICAgICAgICBwcm9wczogZnVuY3Rpb24ocHJvcGVydGllcywgJGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcyQxLnJlZHVjZShmdW5jdGlvbiAocHJvcHMsIHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNVbmRlZmluZWQocHJvcGVydGllc1twcm9wXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcztcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0NvbG9yID0gcHJvcC5tYXRjaCgvY29sb3IvaSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpc0Nzc1Byb3AgPSBpc0NvbG9yIHx8IHByb3AgPT09ICdvcGFjaXR5JztcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcG9zLCBiZ1BvcywgZGlmZjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXBzID0gcHJvcGVydGllc1twcm9wXS5zbGljZSgwKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDc3NQcm9wKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3MoJGVsLCBwcm9wLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RlcHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHMudW5zaGlmdCgocHJvcCA9PT0gJ3NjYWxlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaXNDc3NQcm9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY3NzKCRlbCwgcHJvcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwKSB8fCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhciB1bml0ID0gaW5jbHVkZXMoc3RlcHMuam9pbignJyksICclJykgPyAnJScgOiAncHgnO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0NvbG9yKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSAkZWwuc3R5bGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSByZWYuY29sb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gcGFyc2VDb2xvcigkZWwsIHN0ZXApOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRlbC5zdHlsZS5jb2xvciA9IGNvbG9yO1xuXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXBzID0gc3RlcHMubWFwKHRvRmxvYXQpO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcC5tYXRjaCgvXmJnLykpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY3NzKCRlbCwgKFwiYmFja2dyb3VuZC1wb3NpdGlvbi1cIiArIChwcm9wWzJdKSksICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJnUG9zID0gY3NzKCRlbCwgJ2JhY2tncm91bmRQb3NpdGlvbicpLnNwbGl0KCcgJylbcHJvcFsyXSA9PT0gJ3gnID8gMCA6IDFdOyAvLyBJRSAxMSBjYW4ndCByZWFkIGJhY2tncm91bmQtcG9zaXRpb24tW3h8eV1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5jb3ZlcnMpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaW4gPSBNYXRoLm1pbi5hcHBseShNYXRoLCBzdGVwcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1heCA9IE1hdGgubWF4LmFwcGx5KE1hdGgsIHN0ZXBzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZG93biA9IHN0ZXBzLmluZGV4T2YobWluKSA8IHN0ZXBzLmluZGV4T2YobWF4KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBtYXggLSBtaW47XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gc3RlcCAtIChkb3duID8gbWluIDogbWF4KTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gKGRvd24gPyAtZGlmZiA6IDApICsgXCJweFwiO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gYmdQb3M7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHByb3BzW3Byb3BdID0ge3N0ZXBzOiBzdGVwcywgdW5pdDogdW5pdCwgcG9zOiBwb3MsIGJnUG9zOiBiZ1BvcywgZGlmZjogZGlmZn07XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzO1xuXG4gICAgICAgICAgICAgICAgfSwge30pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBiZ1Byb3BzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgICAgICAgICAgICAgIHJldHVybiBbJ2JneCcsICdiZ3knXS5maWx0ZXIoZnVuY3Rpb24gKGJnKSB7IHJldHVybiBiZyBpbiB0aGlzJDEucHJvcHM7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgY292ZXJzOiBmdW5jdGlvbihfLCAkZWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY292ZXJzKCRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ltYWdlO1xuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihkYXRhJCQxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5hY3RpdmUgPSAhdGhpcy5tZWRpYSB8fCB3aW5kb3cubWF0Y2hNZWRpYSh0aGlzLm1lZGlhKS5tYXRjaGVzO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhJCQxLmltYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhJCQxLmltYWdlLmRpbUVsID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLiRlbC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHRoaXMuJGVsLm9mZnNldEhlaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICgnaW1hZ2UnIGluIGRhdGEkJDEgfHwgIXRoaXMuY292ZXJzIHx8ICF0aGlzLmJnUHJvcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgc3JjID0gY3NzKHRoaXMuJGVsLCAnYmFja2dyb3VuZEltYWdlJykucmVwbGFjZSgvXm5vbmV8dXJsXFwoW1wiJ10/KC4rPylbXCInXT9cXCkkLywgJyQxJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzcmMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGRhdGEkJDEuaW1hZ2UgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICBnZXRJbWFnZShzcmMpLnRoZW4oZnVuY3Rpb24gKGltZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5pbWFnZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogaW1nLm5hdHVyYWxXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGltZy5uYXR1cmFsSGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIGltYWdlID0gcmVmLmltYWdlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcblxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghaW1hZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtiYWNrZ3JvdW5kU2l6ZTogJycsIGJhY2tncm91bmRSZXBlYXQ6ICcnfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGltRWwgPSBpbWFnZS5kaW1FbDtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZGltID0gRGltZW5zaW9ucy5jb3ZlcihpbWFnZSwgZGltRWwpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmdQcm9wcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzJDEucHJvcHNbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IHJlZi5kaWZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJnUG9zID0gcmVmLmJnUG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0ZXBzID0gcmVmLnN0ZXBzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHIkJDEgPSBwcm9wID09PSAnYmd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcGFuID0gZGltW2F0dHIkJDFdIC0gZGltRWxbYXR0ciQkMV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYmdQb3MubWF0Y2goLyUkfDBweC8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BhbiA8IGRpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaW1FbFthdHRyJCQxXSA9IGRpbVthdHRyJCQxXSArIGRpZmYgLSBzcGFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzcGFuID4gZGlmZikge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJnUG9zRmxvYXQgPSBwYXJzZUZsb2F0KGJnUG9zKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiZ1Bvc0Zsb2F0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5wcm9wc1twcm9wXS5zdGVwcyA9IHN0ZXBzLm1hcChmdW5jdGlvbiAoc3RlcCkgeyByZXR1cm4gc3RlcCAtIChzcGFuIC0gZGlmZikgLyAoMTAwIC8gYmdQb3NGbG9hdCk7IH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgZGltID0gRGltZW5zaW9ucy5jb3ZlcihpbWFnZSwgZGltRWwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBjc3ModGhpcy4kZWwsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRTaXplOiAoKGRpbS53aWR0aCkgKyBcInB4IFwiICsgKGRpbS5oZWlnaHQpICsgXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRSZXBlYXQ6ICduby1yZXBlYXQnXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdLFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gICAgICAgICAgICAgICAgZWFjaCh0aGlzLmdldENzcygwKSwgZnVuY3Rpb24gKF8sIHByb3ApIHsgcmV0dXJuIGNzcyh0aGlzJDEuJGVsLCBwcm9wLCAnJyk7IH0pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0Q3NzOiBmdW5jdGlvbihwZXJjZW50KSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHMgPSByZWYucHJvcHM7XG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zbGF0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wcykucmVkdWNlKGZ1bmN0aW9uIChjc3MkJDEsIHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gcHJvcHNbcHJvcF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBzdGVwcyA9IHJlZi5zdGVwcztcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVuaXQgPSByZWYudW5pdDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJlZi5wb3M7XG4gICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGdldFZhbHVlKHN0ZXBzLCBwZXJjZW50KTtcblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHByb3ApIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJhbnNmb3Jtc1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd5JzpcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZWYkMSA9IFsneCcsICd5J10ubWFwKGZ1bmN0aW9uIChkaXIpIHsgcmV0dXJuIHByb3AgPT09IGRpclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHZhbHVlICsgdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHByb3BzW2Rpcl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0VmFsdWUocHJvcHNbZGlyXS5zdGVwcywgcGVyY2VudCkgKyBwcm9wc1tkaXJdLnVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogMDsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB4ID0gcmVmJDFbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciB5ID0gcmVmJDFbMV07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gY3NzJCQxLnRyYW5zZm9ybSArPSBcIiB0cmFuc2xhdGUzZChcIiArIHggKyBcIiwgXCIgKyB5ICsgXCIsIDApXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdyb3RhdGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS50cmFuc2Zvcm0gKz0gXCIgcm90YXRlKFwiICsgdmFsdWUgKyBcImRlZylcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NjYWxlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEudHJhbnNmb3JtICs9IFwiIHNjYWxlKFwiICsgdmFsdWUgKyBcIilcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmcgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JneSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdiZ3gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMVsoXCJiYWNrZ3JvdW5kLXBvc2l0aW9uLVwiICsgKHByb3BbMl0pKV0gPSBcImNhbGMoXCIgKyBwb3MgKyBcIiArIFwiICsgKHZhbHVlICsgdW5pdCkgKyBcIilcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvbG9yJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JhY2tncm91bmRDb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdib3JkZXJDb2xvcic6XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVmJDIgPSBnZXRTdGVwKHN0ZXBzLCBwZXJjZW50KTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gcmVmJDJbMF07XG4gICAgICAgICAgICAgICAgICAgIHZhciBlbmQgPSByZWYkMlsxXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSByZWYkMlsyXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMVtwcm9wXSA9IFwicmdiYShcIiArIChzdGFydC5tYXAoZnVuY3Rpb24gKHZhbHVlLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICsgcCAqIChlbmRbaV0gLSB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSA9PT0gMyA/IHRvRmxvYXQodmFsdWUpIDogcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuam9pbignLCcpKSArIFwiKVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBDU1MgRmlsdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdibHVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEuZmlsdGVyICs9IFwiIGJsdXIoXCIgKyB2YWx1ZSArIFwicHgpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdodWUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzcyQkMS5maWx0ZXIgKz0gXCIgaHVlLXJvdGF0ZShcIiArIHZhbHVlICsgXCJkZWcpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdmb3BhY2l0eSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxLmZpbHRlciArPSBcIiBvcGFjaXR5KFwiICsgdmFsdWUgKyBcIiUpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdncmF5c2NhbGUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW52ZXJ0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NhdHVyYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlcGlhJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3MkJDEuZmlsdGVyICs9IFwiIFwiICsgcHJvcCArIFwiKFwiICsgdmFsdWUgKyBcIiUpXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3NzJCQxW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3NzJCQxO1xuXG4gICAgICAgICAgICAgICAgfSwge3RyYW5zZm9ybTogJycsIGZpbHRlcjogJyd9KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwYXJzZUNvbG9yKGVsLCBjb2xvcikge1xuICAgICAgICByZXR1cm4gY3NzKGNzcyhlbCwgJ2NvbG9yJywgY29sb3IpLCAnY29sb3InKS5zcGxpdCgvWygpLF0vZykuc2xpY2UoMSwgLTEpLmNvbmNhdCgxKS5zbGljZSgwLCA0KS5tYXAoZnVuY3Rpb24gKG4pIHsgcmV0dXJuIHRvRmxvYXQobik7IH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFN0ZXAoc3RlcHMsIHBlcmNlbnQpIHtcbiAgICAgICAgdmFyIGNvdW50ID0gc3RlcHMubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIGluZGV4JCQxID0gTWF0aC5taW4oTWF0aC5mbG9vcihjb3VudCAqIHBlcmNlbnQpLCBjb3VudCAtIDEpO1xuICAgICAgICB2YXIgc3RlcCA9IHN0ZXBzLnNsaWNlKGluZGV4JCQxLCBpbmRleCQkMSArIDIpO1xuXG4gICAgICAgIHN0ZXAucHVzaChwZXJjZW50ID09PSAxID8gMSA6IHBlcmNlbnQgJSAoMSAvIGNvdW50KSAqIGNvdW50KTtcblxuICAgICAgICByZXR1cm4gc3RlcDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRWYWx1ZShzdGVwcywgcGVyY2VudCkge1xuICAgICAgICB2YXIgcmVmID0gZ2V0U3RlcChzdGVwcywgcGVyY2VudCk7XG4gICAgICAgIHZhciBzdGFydCA9IHJlZlswXTtcbiAgICAgICAgdmFyIGVuZCA9IHJlZlsxXTtcbiAgICAgICAgdmFyIHAgPSByZWZbMl07XG4gICAgICAgIHJldHVybiAoaXNOdW1iZXIoc3RhcnQpXG4gICAgICAgICAgICAgICAgPyBzdGFydCArIE1hdGguYWJzKHN0YXJ0IC0gZW5kKSAqIHAgKiAoc3RhcnQgPCBlbmQgPyAxIDogLTEpXG4gICAgICAgICAgICAgICAgOiArZW5kXG4gICAgICAgICkudG9GaXhlZCgyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb3ZlcnMoZWwpIHtcbiAgICAgICAgdmFyIHJlZiA9IGVsLnN0eWxlO1xuICAgICAgICB2YXIgYmFja2dyb3VuZFNpemUgPSByZWYuYmFja2dyb3VuZFNpemU7XG4gICAgICAgIHZhciBjb3ZlcnMgPSBjc3MoY3NzKGVsLCAnYmFja2dyb3VuZFNpemUnLCAnJyksICdiYWNrZ3JvdW5kU2l6ZScpID09PSAnY292ZXInO1xuICAgICAgICBlbC5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9IGJhY2tncm91bmRTaXplO1xuICAgICAgICByZXR1cm4gY292ZXJzO1xuICAgIH1cblxuICAgIHZhciBQYXJhbGxheCQxID0ge1xuXG4gICAgICAgIG1peGluczogW1BhcmFsbGF4XSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgdGFyZ2V0OiBTdHJpbmcsXG4gICAgICAgICAgICB2aWV3cG9ydDogTnVtYmVyLFxuICAgICAgICAgICAgZWFzaW5nOiBOdW1iZXIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgdGFyZ2V0OiBmYWxzZSxcbiAgICAgICAgICAgIHZpZXdwb3J0OiAxLFxuICAgICAgICAgICAgZWFzaW5nOiAxLFxuICAgICAgICB9LFxuXG4gICAgICAgIGNvbXB1dGVkOiB7XG5cbiAgICAgICAgICAgIHRhcmdldDogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gcmVmLnRhcmdldDtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQgJiYgcXVlcnkodGFyZ2V0LCAkZWwpIHx8ICRlbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZTogW1xuXG4gICAgICAgICAgICB7XG5cbiAgICAgICAgICAgICAgICByZWFkOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcmNlbnQgPSByZWYucGVyY2VudDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldjogcGVyY2VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IGVhc2UkMShzY3JvbGxlZE92ZXIodGhpcy50YXJnZXQpIC8gKHRoaXMudmlld3BvcnQgfHwgMSksIHRoaXMuZWFzaW5nKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICB3cml0ZTogZnVuY3Rpb24ocmVmLCByZWYkMSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcHJldiA9IHJlZi5wcmV2O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZi5wZXJjZW50O1xuICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gcmVmLmFjdGl2ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYkMS50eXBlO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgIT09ICdzY3JvbGwnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXYgIT09IHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5nZXRDc3MocGVyY2VudCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICAgZXZlbnRzOiBbJ3Njcm9sbCcsICdsb2FkJywgJ3Jlc2l6ZSddXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGVhc2UkMShwZXJjZW50LCBlYXNpbmcpIHtcbiAgICAgICAgcmV0dXJuIGNsYW1wKHBlcmNlbnQgKiAoMSAtIChlYXNpbmcgLSBlYXNpbmcgKiBwZXJjZW50KSkpO1xuICAgIH1cblxuICAgIHZhciBTbGlkZXJSZWFjdGl2ZSA9IHtcblxuICAgICAgICB1cGRhdGU6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCB8fCB0aGlzLmRyYWdnaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSB0aGlzLmdldFZhbGlkSW5kZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuc2xpZGVzLCB0aGlzLmNsc0FjdGl2ZSwgdGhpcy5jbHNBY3RpdmF0ZWQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coaW5kZXgkJDEpO1xuXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIGV2ZW50czogWydsb2FkJywgJ3Jlc2l6ZSddXG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICBdXG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gVHJhbnNpdGlvbmVyJDEgKHByZXYsIG5leHQsIGRpciwgcmVmKSB7XG4gICAgICAgIHZhciBjZW50ZXIgPSByZWYuY2VudGVyO1xuICAgICAgICB2YXIgZWFzaW5nID0gcmVmLmVhc2luZztcbiAgICAgICAgdmFyIGxpc3QgPSByZWYubGlzdDtcblxuXG4gICAgICAgIHZhciBkZWZlcnJlZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIHZhciBmcm9tID0gcHJldlxuICAgICAgICAgICAgPyBnZXRMZWZ0KHByZXYsIGxpc3QsIGNlbnRlcilcbiAgICAgICAgICAgIDogZ2V0TGVmdChuZXh0LCBsaXN0LCBjZW50ZXIpICsgbmV4dC5vZmZzZXRXaWR0aCAqIGRpcjtcbiAgICAgICAgdmFyIHRvID0gbmV4dFxuICAgICAgICAgICAgPyBnZXRMZWZ0KG5leHQsIGxpc3QsIGNlbnRlcilcbiAgICAgICAgICAgIDogZnJvbSArIHByZXYub2Zmc2V0V2lkdGggKiBkaXIgKiAoaXNSdGwgPyAtMSA6IDEpO1xuXG4gICAgICAgIHJldHVybiB7XG5cbiAgICAgICAgICAgIGRpcjogZGlyLFxuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCwgbGluZWFyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBwZXJjZW50ID09PSB2b2lkIDAgKSBwZXJjZW50ID0gMDtcblxuXG4gICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IGxpbmVhciA/ICdsaW5lYXInIDogZWFzaW5nO1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uIC09IE1hdGgucm91bmQoZHVyYXRpb24gKiBjbGFtcChwZXJjZW50LCAtMSwgMSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUocGVyY2VudCk7XG5cbiAgICAgICAgICAgICAgICBwcmV2ICYmIHRoaXMudXBkYXRlVHJhbnNsYXRlcygpO1xuICAgICAgICAgICAgICAgIHBlcmNlbnQgPSBwcmV2ID8gcGVyY2VudCA6IGNsYW1wKHBlcmNlbnQsIDAsIDEpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUkMSh0aGlzLmdldEl0ZW1JbigpLCAnaXRlbWluJywge3BlcmNlbnQ6IHBlcmNlbnQsIGR1cmF0aW9uOiBkdXJhdGlvbiwgdGltaW5nOiB0aW1pbmcsIGRpcjogZGlyfSk7XG4gICAgICAgICAgICAgICAgcHJldiAmJiB0cmlnZ2VyVXBkYXRlJDEodGhpcy5nZXRJdGVtSW4odHJ1ZSksICdpdGVtb3V0Jywge3BlcmNlbnQ6IDEgLSBwZXJjZW50LCBkdXJhdGlvbjogZHVyYXRpb24sIHRpbWluZzogdGltaW5nLCBkaXI6IGRpcn0pO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvblxuICAgICAgICAgICAgICAgICAgICAuc3RhcnQobGlzdCwge3RyYW5zZm9ybTogdHJhbnNsYXRlKC10byAqIChpc1J0bCA/IC0xIDogMSksICdweCcpfSwgZHVyYXRpb24sIHRpbWluZylcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZGVmZXJyZWQucmVzb2x2ZSwgbm9vcCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFRyYW5zaXRpb24uc3RvcChsaXN0KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwobGlzdCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgY3NzKGxpc3QsICd0cmFuc2Zvcm0nLCAnJyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmb3J3YXJkOiBmdW5jdGlvbihkdXJhdGlvbiwgcGVyY2VudCkge1xuICAgICAgICAgICAgICAgIGlmICggcGVyY2VudCA9PT0gdm9pZCAwICkgcGVyY2VudCA9IHRoaXMucGVyY2VudCgpO1xuXG4gICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwobGlzdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdyhkdXJhdGlvbiwgcGVyY2VudCwgdHJ1ZSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcblxuICAgICAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IHRoaXMuZ2V0RGlzdGFuY2UoKSAqIGRpciAqIChpc1J0bCA/IC0xIDogMSk7XG5cbiAgICAgICAgICAgICAgICBjc3MobGlzdCwgJ3RyYW5zZm9ybScsIHRyYW5zbGF0ZShjbGFtcChcbiAgICAgICAgICAgICAgICAgICAgLXRvICsgKGRpc3RhbmNlIC0gZGlzdGFuY2UgKiBwZXJjZW50KSxcbiAgICAgICAgICAgICAgICAgICAgLWdldFdpZHRoKGxpc3QpLFxuICAgICAgICAgICAgICAgICAgICBsaXN0Lm9mZnNldFdpZHRoXG4gICAgICAgICAgICAgICAgKSAqIChpc1J0bCA/IC0xIDogMSksICdweCcpKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVHJhbnNsYXRlcygpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudCA9IGNsYW1wKHBlcmNlbnQsIC0xLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHRoaXMuZ2V0SXRlbUluKCksICdpdGVtdHJhbnNsYXRlaW4nLCB7cGVyY2VudDogcGVyY2VudCwgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlclVwZGF0ZSQxKHRoaXMuZ2V0SXRlbUluKHRydWUpLCAnaXRlbXRyYW5zbGF0ZW91dCcsIHtwZXJjZW50OiAxIC0gcGVyY2VudCwgZGlyOiBkaXJ9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHBlcmNlbnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicygoY3NzKGxpc3QsICd0cmFuc2Zvcm0nKS5zcGxpdCgnLCcpWzRdICogKGlzUnRsID8gLTEgOiAxKSArIGZyb20pIC8gKHRvIC0gZnJvbSkpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0RGlzdGFuY2U6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh0byAtIGZyb20pO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0SXRlbUluOiBmdW5jdGlvbihvdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIG91dCA9PT0gdm9pZCAwICkgb3V0ID0gZmFsc2U7XG5cblxuICAgICAgICAgICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy5nZXRBY3RpdmVzKCk7XG4gICAgICAgICAgICAgICAgdmFyIGFsbCA9IHNvcnRCeShzbGlkZXMobGlzdCksICdvZmZzZXRMZWZ0Jyk7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSBpbmRleChhbGwsIGFjdGl2ZXNbZGlyICogKG91dCA/IC0xIDogMSkgPiAwID8gYWN0aXZlcy5sZW5ndGggLSAxIDogMF0pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIH5pICYmIGFsbFtpICsgKHByZXYgJiYgIW91dCA/IGRpciA6IDApXTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZ2V0QWN0aXZlczogZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IGdldExlZnQocHJldiB8fCBuZXh0LCBsaXN0LCBjZW50ZXIpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNvcnRCeShzbGlkZXMobGlzdCkuZmlsdGVyKGZ1bmN0aW9uIChzbGlkZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVMZWZ0ID0gZ2V0RWxMZWZ0KHNsaWRlLCBsaXN0KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNsaWRlTGVmdCA+PSBsZWZ0ICYmIHNsaWRlTGVmdCArIHNsaWRlLm9mZnNldFdpZHRoIDw9IGxpc3Qub2Zmc2V0V2lkdGggKyBsZWZ0O1xuICAgICAgICAgICAgICAgIH0pLCAnb2Zmc2V0TGVmdCcpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB1cGRhdGVUcmFuc2xhdGVzOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciBhY3RpdmVzID0gdGhpcy5nZXRBY3RpdmVzKCk7XG5cbiAgICAgICAgICAgICAgICBzbGlkZXMobGlzdCkuZm9yRWFjaChmdW5jdGlvbiAoc2xpZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlzQWN0aXZlID0gaW5jbHVkZXMoYWN0aXZlcywgc2xpZGUpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJVcGRhdGUkMShzbGlkZSwgKFwiaXRlbXRyYW5zbGF0ZVwiICsgKGlzQWN0aXZlID8gJ2luJyA6ICdvdXQnKSksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQ6IGlzQWN0aXZlID8gMSA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXI6IHNsaWRlLm9mZnNldExlZnQgPD0gbmV4dC5vZmZzZXRMZWZ0ID8gMSA6IC0xXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRMZWZ0KGVsLCBsaXN0LCBjZW50ZXIpIHtcblxuICAgICAgICB2YXIgbGVmdCA9IGdldEVsTGVmdChlbCwgbGlzdCk7XG5cbiAgICAgICAgcmV0dXJuIGNlbnRlclxuICAgICAgICAgICAgPyBsZWZ0IC0gY2VudGVyRWwoZWwsIGxpc3QpXG4gICAgICAgICAgICA6IE1hdGgubWluKGxlZnQsIGdldE1heChsaXN0KSk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRNYXgobGlzdCkge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgZ2V0V2lkdGgobGlzdCkgLSBsaXN0Lm9mZnNldFdpZHRoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXaWR0aChsaXN0KSB7XG4gICAgICAgIHJldHVybiBzbGlkZXMobGlzdCkucmVkdWNlKGZ1bmN0aW9uIChyaWdodCwgZWwpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoICsgcmlnaHQ7IH0sIDApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldE1heFdpZHRoKGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIHNsaWRlcyhsaXN0KS5yZWR1Y2UoZnVuY3Rpb24gKHJpZ2h0LCBlbCkgeyByZXR1cm4gTWF0aC5tYXgocmlnaHQsIGVsLm9mZnNldFdpZHRoKTsgfSwgMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2VudGVyRWwoZWwsIGxpc3QpIHtcbiAgICAgICAgcmV0dXJuIGxpc3Qub2Zmc2V0V2lkdGggLyAyIC0gZWwub2Zmc2V0V2lkdGggLyAyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEVsTGVmdChlbCwgbGlzdCkge1xuICAgICAgICByZXR1cm4gKGVsLm9mZnNldExlZnQgKyAoaXNSdGwgPyBlbC5vZmZzZXRXaWR0aCAtIGxpc3Qub2Zmc2V0V2lkdGggOiAwKSkgKiAoaXNSdGwgPyAtMSA6IDEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRyaWdnZXJVcGRhdGUkMShlbCwgdHlwZSwgZGF0YSQkMSkge1xuICAgICAgICB0cmlnZ2VyKGVsLCBjcmVhdGVFdmVudCh0eXBlLCBmYWxzZSwgZmFsc2UsIGRhdGEkJDEpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzbGlkZXMobGlzdCkge1xuICAgICAgICByZXR1cm4gdG9Ob2RlcyhsaXN0LmNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICB2YXIgU2xpZGVyJDEgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIFNsaWRlciwgU2xpZGVyUmVhY3RpdmVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBjZW50ZXI6IEJvb2xlYW4sXG4gICAgICAgICAgICBzZXRzOiBCb29sZWFuLFxuICAgICAgICB9LFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGNlbnRlcjogZmFsc2UsXG4gICAgICAgICAgICBzZXRzOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJJdGVtOiAndWstc2xpZGVyLWl0ZW0nLFxuICAgICAgICAgICAgc2VsTGlzdDogJy51ay1zbGlkZXItaXRlbXMnLFxuICAgICAgICAgICAgc2VsTmF2OiAnLnVrLXNsaWRlci1uYXYnLFxuICAgICAgICAgICAgY2xzQ29udGFpbmVyOiAndWstc2xpZGVyLWNvbnRhaW5lcicsXG4gICAgICAgICAgICBUcmFuc2l0aW9uZXI6IFRyYW5zaXRpb25lciQxXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgYXZnV2lkdGg6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXRXaWR0aCh0aGlzLmxpc3QpIC8gdGhpcy5sZW5ndGg7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBmaW5pdGU6IGZ1bmN0aW9uKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciBmaW5pdGUgPSByZWYuZmluaXRlO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbml0ZSB8fCBnZXRXaWR0aCh0aGlzLmxpc3QpIDwgdGhpcy5saXN0Lm9mZnNldFdpZHRoICsgZ2V0TWF4V2lkdGgodGhpcy5saXN0KSArIHRoaXMuY2VudGVyO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgbWF4SW5kZXg6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmluaXRlIHx8IHRoaXMuY2VudGVyICYmICF0aGlzLnNldHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jZW50ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0c1t0aGlzLnNldHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuc2xpZGVzLCAnb3JkZXInLCAnJyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgbWF4ID0gZ2V0TWF4KHRoaXMubGlzdCk7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSB0aGlzLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldEVsTGVmdCh0aGlzJDEubGlzdC5jaGlsZHJlbltpXSwgdGhpcyQxLmxpc3QpIDwgbWF4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5taW4oaSArIDEsIHRoaXMkMS5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgc2V0czogZnVuY3Rpb24ocmVmKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgdmFyIHNldHMgPSByZWYuc2V0cztcblxuXG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gdGhpcy5saXN0Lm9mZnNldFdpZHRoIC8gKHRoaXMuY2VudGVyID8gMiA6IDEpO1xuXG4gICAgICAgICAgICAgICAgdmFyIGxlZnQgPSAwO1xuICAgICAgICAgICAgICAgIHZhciBsZWZ0Q2VudGVyID0gd2lkdGgkJDE7XG4gICAgICAgICAgICAgICAgdmFyIHNsaWRlTGVmdCA9IDA7XG5cbiAgICAgICAgICAgICAgICBzZXRzID0gc2V0cyAmJiB0aGlzLnNsaWRlcy5yZWR1Y2UoZnVuY3Rpb24gKHNldHMsIHNsaWRlLCBpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldChzbGlkZSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzbGlkZVdpZHRoID0gcmVmLndpZHRoO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2xpZGVSaWdodCA9IHNsaWRlTGVmdCArIHNsaWRlV2lkdGg7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNsaWRlUmlnaHQgPiBsZWZ0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcyQxLmNlbnRlciAmJiBpID4gdGhpcyQxLm1heEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMkMS5tYXhJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyhzZXRzLCBpKSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNtcCA9IHRoaXMkMS5zbGlkZXNbaSArIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEuY2VudGVyICYmIGNtcCAmJiBzbGlkZVdpZHRoIDwgbGVmdENlbnRlciAtIG9mZnNldChjbXApLndpZHRoIC8gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0Q2VudGVyIC09IHNsaWRlV2lkdGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdENlbnRlciA9IHdpZHRoJCQxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBzbGlkZUxlZnQgKyB3aWR0aCQkMSArICh0aGlzJDEuY2VudGVyID8gc2xpZGVXaWR0aCAvIDIgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlTGVmdCArPSBzbGlkZVdpZHRoO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRzO1xuXG4gICAgICAgICAgICAgICAgfSwgW10pO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNldHMgJiYgc2V0cy5sZW5ndGggJiYgc2V0cztcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgdHJhbnNpdGlvbk9wdGlvbnM6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNlbnRlcjogdGhpcy5jZW50ZXIsXG4gICAgICAgICAgICAgICAgICAgIGxpc3Q6IHRoaXMubGlzdFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzQ29udGFpbmVyLCAhJCgoXCIuXCIgKyAodGhpcy5jbHNDb250YWluZXIpKSwgdGhpcy4kZWwpKTtcbiAgICAgICAgfSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICAkJCgoXCJbXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl0sW2RhdGEtXCIgKyAodGhpcy5hdHRySXRlbSkgKyBcIl1cIiksIHRoaXMuJGVsKS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXgkJDEgPSBkYXRhKGVsLCB0aGlzJDEuYXR0ckl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzJDEubWF4SW5kZXggJiYgdG9nZ2xlQ2xhc3MoZWwsICd1ay1oaWRkZW4nLCBpc051bWVyaWMoaW5kZXgkJDEpICYmICh0aGlzJDEuc2V0cyAmJiAhaW5jbHVkZXModGhpcyQxLnNldHMsIHRvRmxvYXQoaW5kZXgkJDEpKSB8fCBpbmRleCQkMSA+IHRoaXMkMS5tYXhJbmRleCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiB7XG5cbiAgICAgICAgICAgIGJlZm9yZWl0ZW1zaG93OiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnZ2luZyAmJiB0aGlzLnNldHMgJiYgdGhpcy5zdGFjay5sZW5ndGggPCAyICYmICFpbmNsdWRlcyh0aGlzLnNldHMsIHRoaXMuaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXggPSB0aGlzLmdldFZhbGlkSW5kZXgoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IE1hdGguYWJzKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4XG4gICAgICAgICAgICAgICAgICAgIC0gdGhpcy5wcmV2SW5kZXhcbiAgICAgICAgICAgICAgICAgICAgKyAodGhpcy5kaXIgPiAwICYmIHRoaXMuaW5kZXggPCB0aGlzLnByZXZJbmRleCB8fCB0aGlzLmRpciA8IDAgJiYgdGhpcy5pbmRleCA+IHRoaXMucHJldkluZGV4ID8gKHRoaXMubWF4SW5kZXggKyAxKSAqIHRoaXMuZGlyIDogMClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWdnaW5nICYmIGRpZmYgPiAxKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaWZmOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMkMS5zdGFjay5zcGxpY2UoMSwgMCwgdGhpcyQxLmRpciA+IDAgPyAnbmV4dCcgOiAncHJldmlvdXMnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZHVyYXRpb24gPSBzcGVlZFVwKHRoaXMuYXZnV2lkdGggLyB0aGlzLnZlbG9jaXR5KVxuICAgICAgICAgICAgICAgICAgICAqICgoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRpciA8IDAgfHwgIXRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5zbGlkZXNbdGhpcy5pbmRleF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRoaXMuc2xpZGVzW3RoaXMucHJldkluZGV4XVxuICAgICAgICAgICAgICAgICAgICApLm9mZnNldFdpZHRoIC8gdGhpcy5hdmdXaWR0aCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlb3JkZXIoKTtcblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgaXRlbXNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICFpc1VuZGVmaW5lZCh0aGlzLnByZXZJbmRleCkgJiYgYWRkQ2xhc3ModGhpcy5fZ2V0VHJhbnNpdGlvbmVyKCkuZ2V0SXRlbUluKCksIHRoaXMuY2xzQWN0aXZlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGl0ZW1zaG93bjogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlcyA9IHRoaXMuX2dldFRyYW5zaXRpb25lcih0aGlzLmluZGV4KS5nZXRBY3RpdmVzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zbGlkZXMuZm9yRWFjaChmdW5jdGlvbiAoc2xpZGUpIHsgcmV0dXJuIHRvZ2dsZUNsYXNzKHNsaWRlLCB0aGlzJDEuY2xzQWN0aXZlLCBpbmNsdWRlcyhhY3RpdmVzLCBzbGlkZSkpOyB9KTtcbiAgICAgICAgICAgICAgICAoIXRoaXMuc2V0cyB8fCBpbmNsdWRlcyh0aGlzLnNldHMsIHRvRmxvYXQodGhpcy5pbmRleCkpKSAmJiB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSkgeyByZXR1cm4gdG9nZ2xlQ2xhc3Moc2xpZGUsIHRoaXMkMS5jbHNBY3RpdmF0ZWQsIGluY2x1ZGVzKGFjdGl2ZXMsIHNsaWRlKSk7IH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgbWV0aG9kczoge1xuXG4gICAgICAgICAgICByZW9yZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuXG4gICAgICAgICAgICAgICAgY3NzKHRoaXMuc2xpZGVzLCAnb3JkZXInLCAnJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5maW5pdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBpbmRleCQkMSA9IHRoaXMuZGlyID4gMCAmJiB0aGlzLnNsaWRlc1t0aGlzLnByZXZJbmRleF0gPyB0aGlzLnByZXZJbmRleCA6IHRoaXMuaW5kZXg7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNsaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChzbGlkZSwgaSkgeyByZXR1cm4gY3NzKHNsaWRlLCAnb3JkZXInLCB0aGlzJDEuZGlyID4gMCAmJiBpIDwgaW5kZXgkJDFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gMVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzJDEuZGlyIDwgMCAmJiBpID49IHRoaXMkMS5pbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICAgICAgICAgICk7IH1cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNlbnRlcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIG5leHQgPSB0aGlzLnNsaWRlc1tpbmRleCQkMV07XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gdGhpcy5saXN0Lm9mZnNldFdpZHRoIC8gMiAtIG5leHQub2Zmc2V0V2lkdGggLyAyO1xuICAgICAgICAgICAgICAgIHZhciBqID0gMDtcblxuICAgICAgICAgICAgICAgIHdoaWxlICh3aWR0aCQkMSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlSW5kZXggPSB0aGlzJDEuZ2V0SW5kZXgoLS1qICsgaW5kZXgkJDEsIGluZGV4JCQxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNsaWRlID0gdGhpcyQxLnNsaWRlc1tzbGlkZUluZGV4XTtcblxuICAgICAgICAgICAgICAgICAgICBjc3Moc2xpZGUsICdvcmRlcicsIHNsaWRlSW5kZXggPiBpbmRleCQkMSA/IC0yIDogLTEpO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aCQkMSAtPSBzbGlkZS5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGdldFZhbGlkSW5kZXg6IGZ1bmN0aW9uKGluZGV4JCQxLCBwcmV2SW5kZXgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICAgICAgICAgICAgICBpZiAoIGluZGV4JCQxID09PSB2b2lkIDAgKSBpbmRleCQkMSA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgaWYgKCBwcmV2SW5kZXggPT09IHZvaWQgMCApIHByZXZJbmRleCA9IHRoaXMucHJldkluZGV4O1xuXG5cbiAgICAgICAgICAgICAgICBpbmRleCQkMSA9IHRoaXMuZ2V0SW5kZXgoaW5kZXgkJDEsIHByZXZJbmRleCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2V0cykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXgkJDE7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIHByZXY7XG5cbiAgICAgICAgICAgICAgICBkbyB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVzKHRoaXMkMS5zZXRzLCBpbmRleCQkMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleCQkMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHByZXYgPSBpbmRleCQkMTtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXgkJDEgPSB0aGlzJDEuZ2V0SW5kZXgoaW5kZXgkJDEgKyB0aGlzJDEuZGlyLCBwcmV2SW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoaW5kZXgkJDEgIT09IHByZXYpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4JCQxO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgU2xpZGVyUGFyYWxsYXggPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbUGFyYWxsYXhdLFxuXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHNlbEl0ZW06ICchbGknXG4gICAgICAgIH0sXG5cbiAgICAgICAgY29tcHV0ZWQ6IHtcblxuICAgICAgICAgICAgaXRlbTogZnVuY3Rpb24ocmVmLCAkZWwpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2VsSXRlbSA9IHJlZi5zZWxJdGVtO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5KHNlbEl0ZW0sICRlbCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBldmVudHM6IFtcblxuICAgICAgICAgICAge1xuXG4gICAgICAgICAgICAgICAgbmFtZTogJ2l0ZW1zaG93bicsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLmdldENzcyguNSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtaW4gaXRlbW91dCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZl9kZXRhaWwgPSByZWYuZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZl9kZXRhaWwucGVyY2VudDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGR1cmF0aW9uID0gcmVmX2RldGFpbC5kdXJhdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWluZyA9IHJlZl9kZXRhaWwudGltaW5nO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gcmVmX2RldGFpbC5kaXI7XG5cblxuICAgICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uLmNhbmNlbCh0aGlzLiRlbCk7XG4gICAgICAgICAgICAgICAgICAgIGNzcyh0aGlzLiRlbCwgdGhpcy5nZXRDc3MoZ2V0Q3VycmVudCh0eXBlLCBkaXIsIHBlcmNlbnQpKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5zdGFydCh0aGlzLiRlbCwgdGhpcy5nZXRDc3MoaXNJbih0eXBlKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyAuNVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBkaXIgPiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAwXG4gICAgICAgICAgICAgICAgICAgICksIGR1cmF0aW9uLCB0aW1pbmcpLmNhdGNoKG5vb3ApO1xuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICd0cmFuc2l0aW9uY2FuY2VsZWQgdHJhbnNpdGlvbmVuZCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbi5jYW5jZWwodGhpcy4kZWwpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdpdGVtdHJhbnNsYXRlaW4gaXRlbXRyYW5zbGF0ZW91dCcsXG5cbiAgICAgICAgICAgICAgICBzZWxmOiB0cnVlLFxuXG4gICAgICAgICAgICAgICAgZWw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgICBoYW5kbGVyOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSByZWYudHlwZTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlZl9kZXRhaWwgPSByZWYuZGV0YWlsO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGVyY2VudCA9IHJlZl9kZXRhaWwucGVyY2VudDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRpciA9IHJlZl9kZXRhaWwuZGlyO1xuXG4gICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24uY2FuY2VsKHRoaXMuJGVsKTtcbiAgICAgICAgICAgICAgICAgICAgY3NzKHRoaXMuJGVsLCB0aGlzLmdldENzcyhnZXRDdXJyZW50KHR5cGUsIGRpciwgcGVyY2VudCkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgXVxuXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGlzSW4odHlwZSkge1xuICAgICAgICByZXR1cm4gZW5kc1dpdGgodHlwZSwgJ2luJyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q3VycmVudCh0eXBlLCBkaXIsIHBlcmNlbnQpIHtcblxuICAgICAgICBwZXJjZW50IC89IDI7XG5cbiAgICAgICAgcmV0dXJuICFpc0luKHR5cGUpXG4gICAgICAgICAgICA/IGRpciA8IDBcbiAgICAgICAgICAgICAgICA/IHBlcmNlbnRcbiAgICAgICAgICAgICAgICA6IDEgLSBwZXJjZW50XG4gICAgICAgICAgICA6IGRpciA8IDBcbiAgICAgICAgICAgICAgICA/IDEgLSBwZXJjZW50XG4gICAgICAgICAgICAgICAgOiBwZXJjZW50O1xuICAgIH1cblxuICAgIHZhciBBbmltYXRpb25zJDIgPSBhc3NpZ24oe30sIEFuaW1hdGlvbnMsIHtcblxuICAgICAgICBmYWRlOiB7XG5cbiAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAwLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAxIC0gY3NzKGN1cnJlbnQsICdvcGFjaXR5Jyk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMSAtIHBlcmNlbnQsIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBzY2FsZToge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICB7b3BhY2l0eTogMCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgKyAuNSksIHpJbmRleDogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBwZXJjZW50OiBmdW5jdGlvbihjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgLSBjc3MoY3VycmVudCwgJ29wYWNpdHknKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHRyYW5zbGF0ZTogZnVuY3Rpb24ocGVyY2VudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtvcGFjaXR5OiAxIC0gcGVyY2VudCwgdHJhbnNmb3JtOiBzY2FsZTNkKDEgKyAuNSAqIHBlcmNlbnQpLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7ekluZGV4OiAtMX1cbiAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgcHVsbDoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMCksIHpJbmRleDogLTF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogMH0gXVxuICAgICAgICAgICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTAwKSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgpLCB6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCwgbmV4dCwgZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA8IDBcbiAgICAgICAgICAgICAgICAgICAgPyAxIC0gdHJhbnNsYXRlZChuZXh0KVxuICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKDMwICogcGVyY2VudCksIHpJbmRleDogLTF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0xMDAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAwfSBdXG4gICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC1wZXJjZW50ICogMTAwKSwgekluZGV4OiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMCAqICgxIC0gcGVyY2VudCkpLCB6SW5kZXg6IC0xfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgcHVzaDoge1xuXG4gICAgICAgICAgICBzaG93OiBmdW5jdGlvbihkaXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlyIDwgMFxuICAgICAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDApLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKCksIHpJbmRleDogLTF9IF1cbiAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTMwKSwgekluZGV4OiAtMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dHJhbnNmb3JtOiB0cmFuc2xhdGUoKSwgekluZGV4OiAwfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcGVyY2VudDogZnVuY3Rpb24oY3VycmVudCwgbmV4dCwgZGlyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpciA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyAxIC0gdHJhbnNsYXRlZChuZXh0KVxuICAgICAgICAgICAgICAgICAgICA6IHRyYW5zbGF0ZWQoY3VycmVudCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKHBlcmNlbnQsIGRpcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkaXIgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKHBlcmNlbnQgKiAxMDApLCB6SW5kZXg6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0zMCAqICgxIC0gcGVyY2VudCkpLCB6SW5kZXg6IC0xfSBdXG4gICAgICAgICAgICAgICAgICAgIDogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3RyYW5zZm9ybTogdHJhbnNsYXRlKC0zMCAqIHBlcmNlbnQpLCB6SW5kZXg6IC0xfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMDAgKiAoMSAtIHBlcmNlbnQpKSwgekluZGV4OiAwfVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgdmFyIFNsaWRlc2hvdyQxID0ge1xuXG4gICAgICAgIG1peGluczogW0NsYXNzLCBTbGlkZXNob3csIFNsaWRlclJlYWN0aXZlXSxcblxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgcmF0aW86IFN0cmluZyxcbiAgICAgICAgICAgIG1pbkhlaWdodDogQm9vbGVhbixcbiAgICAgICAgICAgIG1heEhlaWdodDogQm9vbGVhbixcbiAgICAgICAgfSxcblxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICByYXRpbzogJzE2OjknLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiBmYWxzZSxcbiAgICAgICAgICAgIG1heEhlaWdodDogZmFsc2UsXG4gICAgICAgICAgICBzZWxMaXN0OiAnLnVrLXNsaWRlc2hvdy1pdGVtcycsXG4gICAgICAgICAgICBhdHRySXRlbTogJ3VrLXNsaWRlc2hvdy1pdGVtJyxcbiAgICAgICAgICAgIHNlbE5hdjogJy51ay1zbGlkZXNob3ctbmF2JyxcbiAgICAgICAgICAgIEFuaW1hdGlvbnM6IEFuaW1hdGlvbnMkMlxuICAgICAgICB9LFxuXG4gICAgICAgIHVwZGF0ZToge1xuXG4gICAgICAgICAgICByZWFkOiBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIHZhciByZWYgPSB0aGlzLnJhdGlvLnNwbGl0KCc6JykubWFwKE51bWJlcik7XG4gICAgICAgICAgICAgICAgdmFyIHdpZHRoJCQxID0gcmVmWzBdO1xuICAgICAgICAgICAgICAgIHZhciBoZWlnaHQkJDEgPSByZWZbMV07XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSBoZWlnaHQkJDEgKiB0aGlzLiRlbC5vZmZzZXRXaWR0aCAvIHdpZHRoJCQxO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWluSGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCQkMSA9IE1hdGgubWF4KHRoaXMubWluSGVpZ2h0LCBoZWlnaHQkJDEpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1heEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQkJDEgPSBNYXRoLm1pbih0aGlzLm1heEhlaWdodCwgaGVpZ2h0JCQxKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge2hlaWdodDogaGVpZ2h0JCQxfTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIHdyaXRlOiBmdW5jdGlvbihyZWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgaGd0ID0gcmVmLmhlaWdodDtcblxuICAgICAgICAgICAgICAgIGhlaWdodCh0aGlzLmxpc3QsIE1hdGguZmxvb3IoaGd0KSk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBldmVudHM6IFsnbG9hZCcsICdyZXNpemUnXVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICB2YXIgb2JqJDE7XG5cbiAgICB2YXIgU29ydGFibGUgPSB7XG5cbiAgICAgICAgbWl4aW5zOiBbQ2xhc3MsIEFuaW1hdGVdLFxuXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBncm91cDogU3RyaW5nLFxuICAgICAgICAgICAgdGhyZXNob2xkOiBOdW1iZXIsXG4gICAgICAgICAgICBjbHNJdGVtOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNQbGFjZWhvbGRlcjogU3RyaW5nLFxuICAgICAgICAgICAgY2xzRHJhZzogU3RyaW5nLFxuICAgICAgICAgICAgY2xzRHJhZ1N0YXRlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNCYXNlOiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNOb0RyYWc6IFN0cmluZyxcbiAgICAgICAgICAgIGNsc0VtcHR5OiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNDdXN0b206IFN0cmluZyxcbiAgICAgICAgICAgIGhhbmRsZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgZ3JvdXA6IGZhbHNlLFxuICAgICAgICAgICAgdGhyZXNob2xkOiA1LFxuICAgICAgICAgICAgY2xzSXRlbTogJ3VrLXNvcnRhYmxlLWl0ZW0nLFxuICAgICAgICAgICAgY2xzUGxhY2Vob2xkZXI6ICd1ay1zb3J0YWJsZS1wbGFjZWhvbGRlcicsXG4gICAgICAgICAgICBjbHNEcmFnOiAndWstc29ydGFibGUtZHJhZycsXG4gICAgICAgICAgICBjbHNEcmFnU3RhdGU6ICd1ay1kcmFnJyxcbiAgICAgICAgICAgIGNsc0Jhc2U6ICd1ay1zb3J0YWJsZScsXG4gICAgICAgICAgICBjbHNOb0RyYWc6ICd1ay1zb3J0YWJsZS1ub2RyYWcnLFxuICAgICAgICAgICAgY2xzRW1wdHk6ICd1ay1zb3J0YWJsZS1lbXB0eScsXG4gICAgICAgICAgICBjbHNDdXN0b206ICcnLFxuICAgICAgICAgICAgaGFuZGxlOiBmYWxzZVxuICAgICAgICB9LFxuXG4gICAgICAgIGluaXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgIFsnaW5pdCcsICdzdGFydCcsICdtb3ZlJywgJ2VuZCddLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgIHZhciBmbiA9IHRoaXMkMVtrZXldO1xuICAgICAgICAgICAgICAgIHRoaXMkMVtrZXldID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnNjcm9sbFkgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWYgPSBnZXRQb3MkMShlKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHggPSByZWYueDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSByZWYueTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLnBvcyA9IHt4OiB4LCB5OiB5fTtcblxuICAgICAgICAgICAgICAgICAgICBmbihlKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiAoIG9iaiQxID0ge30sIG9iaiQxW3BvaW50ZXJEb3duXSA9ICdpbml0Jywgb2JqJDEgKSxcblxuICAgICAgICB1cGRhdGU6IHtcblxuICAgICAgICAgICAgd3JpdGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY2xzRW1wdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgdG9nZ2xlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRW1wdHksICF0aGlzLiRlbC5jaGlsZHJlbi5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBvZmZzZXQodGhpcy5kcmFnLCB7dG9wOiB0aGlzLnBvcy55ICsgdGhpcy5vcmlnaW4udG9wLCBsZWZ0OiB0aGlzLnBvcy54ICsgdGhpcy5vcmlnaW4ubGVmdH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0aGlzLmRyYWcpO1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgIHZhciBib3R0b20gPSB0b3AgKyB0aGlzLmRyYWcub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHZhciBzY3JvbGw7XG5cbiAgICAgICAgICAgICAgICBpZiAodG9wID4gMCAmJiB0b3AgPCB0aGlzLnNjcm9sbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gdGhpcy5zY3JvbGxZIC0gNTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJvdHRvbSA8IGhlaWdodChkb2N1bWVudCkgJiYgYm90dG9tID4gaGVpZ2h0KHdpbmRvdykgKyB0aGlzLnNjcm9sbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsID0gdGhpcy5zY3JvbGxZICsgNTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzY3JvbGwgJiYgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiB3aW5kb3cuc2Nyb2xsKHdpbmRvdy5wYWdlWE9mZnNldCwgc2Nyb2xsKTsgfSwgNSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSxcblxuICAgICAgICBtZXRob2RzOiB7XG5cbiAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldDtcbiAgICAgICAgICAgICAgICB2YXIgYnV0dG9uID0gZS5idXR0b247XG4gICAgICAgICAgICAgICAgdmFyIGRlZmF1bHRQcmV2ZW50ZWQgPSBlLmRlZmF1bHRQcmV2ZW50ZWQ7XG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IHRvTm9kZXModGhpcy4kZWwuY2hpbGRyZW4pLmZpbHRlcihmdW5jdGlvbiAoZWwpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsKTsgfSk7XG4gICAgICAgICAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0gcmVmWzBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAgICAgICB8fCBpc0lucHV0KGUudGFyZ2V0KVxuICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmhhbmRsZSAmJiAhd2l0aGluKHRhcmdldCwgdGhpcy5oYW5kbGUpXG4gICAgICAgICAgICAgICAgICAgIHx8IGJ1dHRvbiA+IDBcbiAgICAgICAgICAgICAgICAgICAgfHwgd2l0aGluKHRhcmdldCwgKFwiLlwiICsgKHRoaXMuY2xzTm9EcmFnKSkpXG4gICAgICAgICAgICAgICAgICAgIHx8IGRlZmF1bHRQcmV2ZW50ZWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hlZCA9IFt0aGlzXTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgdGhpcy5vcmlnaW4gPSBhc3NpZ24oe3RhcmdldDogdGFyZ2V0LCBpbmRleDogaW5kZXgocGxhY2Vob2xkZXIpfSwgdGhpcy5wb3MpO1xuXG4gICAgICAgICAgICAgICAgb24oZG9jdW1lbnQsIHBvaW50ZXJNb3ZlLCB0aGlzLm1vdmUpO1xuICAgICAgICAgICAgICAgIG9uKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kKTtcbiAgICAgICAgICAgICAgICBvbih3aW5kb3csICdzY3JvbGwnLCB0aGlzLnNjcm9sbCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQoZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzdGFydDogZnVuY3Rpb24oZSkge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gYXBwZW5kKHRoaXMuJGNvbnRhaW5lciwgdGhpcy5wbGFjZWhvbGRlci5vdXRlckhUTUwucmVwbGFjZSgvXjxsaS9pLCAnPGRpdicpLnJlcGxhY2UoL2xpPiQvaSwgJ2Rpdj4nKSk7XG5cbiAgICAgICAgICAgICAgICBjc3ModGhpcy5kcmFnLCBhc3NpZ24oe1xuICAgICAgICAgICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMucGxhY2Vob2xkZXIub2Zmc2V0V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogdGhpcy5wbGFjZWhvbGRlci5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICAgICB9LCBjc3ModGhpcy5wbGFjZWhvbGRlciwgWydwYWRkaW5nTGVmdCcsICdwYWRkaW5nUmlnaHQnLCAncGFkZGluZ1RvcCcsICdwYWRkaW5nQm90dG9tJ10pKSk7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLmRyYWcsICd1ay1uby1ib290JywgJycpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZHJhZywgdGhpcy5jbHNEcmFnLCB0aGlzLmNsc0N1c3RvbSk7XG5cbiAgICAgICAgICAgICAgICBoZWlnaHQodGhpcy5kcmFnLmZpcnN0RWxlbWVudENoaWxkLCBoZWlnaHQodGhpcy5wbGFjZWhvbGRlci5maXJzdEVsZW1lbnRDaGlsZCkpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlZiA9IG9mZnNldCh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB2YXIgbGVmdCA9IHJlZi5sZWZ0O1xuICAgICAgICAgICAgICAgIHZhciB0b3AgPSByZWYudG9wO1xuICAgICAgICAgICAgICAgIGFzc2lnbih0aGlzLm9yaWdpbiwge2xlZnQ6IGxlZnQgLSB0aGlzLnBvcy54LCB0b3A6IHRvcCAtIHRoaXMucG9zLnl9KTtcblxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMucGxhY2Vob2xkZXIsIHRoaXMuY2xzUGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuJGVsLmNoaWxkcmVuLCB0aGlzLmNsc0l0ZW0pO1xuICAgICAgICAgICAgICAgIGFkZENsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNEcmFnU3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3N0YXJ0JywgW3RoaXMsIHRoaXMucGxhY2Vob2xkZXJdKTtcblxuICAgICAgICAgICAgICAgIHRoaXMubW92ZShlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIG1vdmU6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kcmFnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMucG9zLnggLSB0aGlzLm9yaWdpbi54KSA+IHRoaXMudGhyZXNob2xkIHx8IE1hdGguYWJzKHRoaXMucG9zLnkgLSB0aGlzLm9yaWdpbi55KSA+IHRoaXMudGhyZXNob2xkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0KGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcblxuICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnR5cGUgPT09ICdtb3VzZW1vdmUnID8gZS50YXJnZXQgOiBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHRoaXMucG9zLnggLSBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQsIHRoaXMucG9zLnkgLSBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgc29ydGFibGUgPSB0aGlzLmdldFNvcnRhYmxlKHRhcmdldCk7XG4gICAgICAgICAgICAgICAgdmFyIHByZXZpb3VzID0gdGhpcy5nZXRTb3J0YWJsZSh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB2YXIgbW92ZSA9IHNvcnRhYmxlICE9PSBwcmV2aW91cztcblxuICAgICAgICAgICAgICAgIGlmICghc29ydGFibGUgfHwgd2l0aGluKHRhcmdldCwgdGhpcy5wbGFjZWhvbGRlcikgfHwgbW92ZSAmJiAoIXNvcnRhYmxlLmdyb3VwIHx8IHNvcnRhYmxlLmdyb3VwICE9PSBwcmV2aW91cy5ncm91cCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRhcmdldCA9IHNvcnRhYmxlLiRlbCA9PT0gdGFyZ2V0LnBhcmVudE5vZGUgJiYgdGFyZ2V0IHx8IHRvTm9kZXMoc29ydGFibGUuJGVsLmNoaWxkcmVuKS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQpIHsgcmV0dXJuIHdpdGhpbih0YXJnZXQsIGVsZW1lbnQpOyB9KVswXTtcblxuICAgICAgICAgICAgICAgIGlmIChtb3ZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzLnJlbW92ZSh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHNvcnRhYmxlLmluc2VydCh0aGlzLnBsYWNlaG9sZGVyLCB0YXJnZXQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFpbmNsdWRlcyh0aGlzLnRvdWNoZWQsIHNvcnRhYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdWNoZWQucHVzaChzb3J0YWJsZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBzY3JvbGw6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHNjcm9sbCAhPT0gdGhpcy5zY3JvbGxZKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zLnkgKz0gc2Nyb2xsIC0gdGhpcy5zY3JvbGxZO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFkgPSBzY3JvbGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGVtaXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBlbmQ6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIG9mZihkb2N1bWVudCwgcG9pbnRlck1vdmUsIHRoaXMubW92ZSk7XG4gICAgICAgICAgICAgICAgb2ZmKGRvY3VtZW50LCBwb2ludGVyVXAsIHRoaXMuZW5kKTtcbiAgICAgICAgICAgICAgICBvZmYod2luZG93LCAnc2Nyb2xsJywgdGhpcy5zY3JvbGwpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRyYWcpIHtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZS50eXBlICE9PSAnbW91c2V1cCcgJiYgd2l0aGluKGUudGFyZ2V0LCAnYVtocmVmXScpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gY2xvc2VzdChlLnRhcmdldCwgJ2FbaHJlZl0nKS5ocmVmO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHByZXZlbnRDbGljaygpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHNvcnRhYmxlID0gdGhpcy5nZXRTb3J0YWJsZSh0aGlzLnBsYWNlaG9sZGVyKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzID09PSBzb3J0YWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcmlnaW4uaW5kZXggIT09IGluZGV4KHRoaXMucGxhY2Vob2xkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAnbW92ZWQnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcihzb3J0YWJsZS4kZWwsICdhZGRlZCcsIFtzb3J0YWJsZSwgdGhpcy5wbGFjZWhvbGRlcl0pO1xuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyKHRoaXMuJGVsLCAncmVtb3ZlZCcsIFt0aGlzLCB0aGlzLnBsYWNlaG9sZGVyXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3N0b3AnLCBbdGhpcywgdGhpcy5wbGFjZWhvbGRlcl0pO1xuXG4gICAgICAgICAgICAgICAgcmVtb3ZlKHRoaXMuZHJhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmFnID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIHZhciBjbGFzc2VzID0gdGhpcy50b3VjaGVkLm1hcChmdW5jdGlvbiAoc29ydGFibGUpIHsgcmV0dXJuICgoc29ydGFibGUuY2xzUGxhY2Vob2xkZXIpICsgXCIgXCIgKyAoc29ydGFibGUuY2xzSXRlbSkpOyB9KS5qb2luKCcgJyk7XG4gICAgICAgICAgICAgICAgdGhpcy50b3VjaGVkLmZvckVhY2goZnVuY3Rpb24gKHNvcnRhYmxlKSB7IHJldHVybiByZW1vdmVDbGFzcyhzb3J0YWJsZS4kZWwuY2hpbGRyZW4sIGNsYXNzZXMpOyB9KTtcblxuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgdGhpcy5jbHNEcmFnU3RhdGUpO1xuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpbnNlcnQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHRhcmdldCkge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbC5jaGlsZHJlbiwgdGhpcy5jbHNJdGVtKTtcblxuICAgICAgICAgICAgICAgIHZhciBpbnNlcnQgPSBmdW5jdGlvbiAoKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXdpdGhpbihlbGVtZW50LCB0aGlzJDEuJGVsKSB8fCBpc1ByZWRlY2Vzc29yKGVsZW1lbnQsIHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUodGFyZ2V0LCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIodGFyZ2V0LCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHRoaXMkMS4kZWwsIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZShpbnNlcnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGluc2VydCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbihlbGVtZW50KSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXdpdGhpbihlbGVtZW50LCB0aGlzLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFuaW1hdGUoZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlKGVsZW1lbnQpOyB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBnZXRTb3J0YWJsZTogZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ICYmICh0aGlzLiRnZXRDb21wb25lbnQoZWxlbWVudCwgJ3NvcnRhYmxlJykgfHwgdGhpcy5nZXRTb3J0YWJsZShlbGVtZW50LnBhcmVudE5vZGUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gaXNQcmVkZWNlc3NvcihlbGVtZW50LCB0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQucGFyZW50Tm9kZSA9PT0gdGFyZ2V0LnBhcmVudE5vZGUgJiYgaW5kZXgoZWxlbWVudCkgPiBpbmRleCh0YXJnZXQpO1xuICAgIH1cblxuICAgIHZhciBvYmokMjtcblxuICAgIHZhciBhY3RpdmVzID0gW107XG5cbiAgICB2YXIgVG9vbHRpcCA9IHtcblxuICAgICAgICBhdHRyczogdHJ1ZSxcblxuICAgICAgICBhcmdzOiAndGl0bGUnLFxuXG4gICAgICAgIG1peGluczogW0NvbnRhaW5lciwgVG9nZ2xhYmxlLCBQb3NpdGlvbl0sXG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGRlbGF5OiBOdW1iZXIsXG4gICAgICAgICAgICB0aXRsZTogU3RyaW5nXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgcG9zOiAndG9wJyxcbiAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgIGRlbGF5OiAwLFxuICAgICAgICAgICAgYW5pbWF0aW9uOiBbJ3VrLWFuaW1hdGlvbi1zY2FsZS11cCddLFxuICAgICAgICAgICAgZHVyYXRpb246IDEwMCxcbiAgICAgICAgICAgIGNsczogJ3VrLWFjdGl2ZScsXG4gICAgICAgICAgICBjbHNQb3M6ICd1ay10b29sdGlwJ1xuICAgICAgICB9LFxuXG4gICAgICAgIGJlZm9yZUNvbm5lY3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5faGFzVGl0bGUgPSBoYXNBdHRyKHRoaXMuJGVsLCAndGl0bGUnKTtcbiAgICAgICAgICAgIGF0dHIodGhpcy4kZWwsIHt0aXRsZTogJycsICdhcmlhLWV4cGFuZGVkJzogZmFsc2V9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBkaXNjb25uZWN0ZWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICBhdHRyKHRoaXMuJGVsLCB7dGl0bGU6IHRoaXMuX2hhc1RpdGxlID8gdGhpcy50aXRsZSA6IG51bGwsICdhcmlhLWV4cGFuZGVkJzogbnVsbH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgc2hvdzogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cblxuICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlcyhhY3RpdmVzLCB0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYWN0aXZlcy5mb3JFYWNoKGZ1bmN0aW9uIChhY3RpdmUpIHsgcmV0dXJuIGFjdGl2ZS5oaWRlKCk7IH0pO1xuICAgICAgICAgICAgICAgIGFjdGl2ZXMucHVzaCh0aGlzKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX3VuYmluZCA9IG9uKGRvY3VtZW50LCAnY2xpY2snLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gIXdpdGhpbihlLnRhcmdldCwgdGhpcyQxLiRlbCkgJiYgdGhpcyQxLmhpZGUoKTsgfSk7XG5cbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZXIpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy50b29sdGlwID0gYXBwZW5kKHRoaXMuY29udGFpbmVyLCAoXCI8ZGl2IGNsYXNzPVxcXCJcIiArICh0aGlzLmNsc1BvcykgKyBcIlxcXCIgYXJpYS1oaWRkZW4+PGRpdiBjbGFzcz1cXFwiXCIgKyAodGhpcy5jbHNQb3MpICsgXCItaW5uZXJcXFwiPlwiICsgKHRoaXMudGl0bGUpICsgXCI8L2Rpdj48L2Rpdj5cIikpO1xuXG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKTtcblxuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25BdCh0aGlzLnRvb2x0aXAsIHRoaXMuJGVsKTtcblxuICAgICAgICAgICAgICAgIHRoaXMub3JpZ2luID0gdGhpcy5nZXRBeGlzKCkgPT09ICd5JyA/ICgoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkgKyBcIi1cIiArICh0aGlzLmFsaWduKSkgOiAoKHRoaXMuYWxpZ24pICsgXCItXCIgKyAoZmxpcFBvc2l0aW9uKHRoaXMuZGlyKSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzJDEudG9nZ2xlRWxlbWVudCh0aGlzJDEudG9vbHRpcCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmhpZGVUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1Zpc2libGUodGhpcyQxLiRlbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0sIDE1MCk7XG5cbiAgICAgICAgICAgICAgICB9LCB0aGlzLmRlbGF5KTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGhpZGU6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4JCQxID0gYWN0aXZlcy5pbmRleE9mKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF+aW5kZXgkJDEgfHwgbWF0Y2hlcyh0aGlzLiRlbCwgJ2lucHV0JykgJiYgdGhpcy4kZWwgPT09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGFjdGl2ZXMuc3BsaWNlKGluZGV4JCQxLCAxKTtcblxuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnNob3dUaW1lcik7XG4gICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmhpZGVUaW1lcik7XG4gICAgICAgICAgICAgICAgYXR0cih0aGlzLiRlbCwgJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50KHRoaXMudG9vbHRpcCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcCAmJiByZW1vdmUodGhpcy50b29sdGlwKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl91bmJpbmQoKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgZXZlbnRzOiAoIG9iaiQyID0ge30sIG9iaiQyWyhcImZvY3VzIFwiICsgcG9pbnRlckVudGVyICsgXCIgXCIgKyBwb2ludGVyRG93bildID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZS50eXBlICE9PSBwb2ludGVyRG93biB8fCAhaXNUb3VjaChlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvYmokMi5ibHVyID0gJ2hpZGUnLCBvYmokMltwb2ludGVyTGVhdmVdID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVG91Y2goZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgb2JqJDIgKVxuXG4gICAgfTtcblxuICAgIHZhciBVcGxvYWQgPSB7XG5cbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGFsbG93OiBTdHJpbmcsXG4gICAgICAgICAgICBjbHNEcmFnb3ZlcjogU3RyaW5nLFxuICAgICAgICAgICAgY29uY3VycmVudDogTnVtYmVyLFxuICAgICAgICAgICAgbWF4U2l6ZTogTnVtYmVyLFxuICAgICAgICAgICAgbWV0aG9kOiBTdHJpbmcsXG4gICAgICAgICAgICBtaW1lOiBTdHJpbmcsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTWltZTogU3RyaW5nLFxuICAgICAgICAgICAgbXNnSW52YWxpZE5hbWU6IFN0cmluZyxcbiAgICAgICAgICAgIG1zZ0ludmFsaWRTaXplOiBTdHJpbmcsXG4gICAgICAgICAgICBtdWx0aXBsZTogQm9vbGVhbixcbiAgICAgICAgICAgIG5hbWU6IFN0cmluZyxcbiAgICAgICAgICAgIHBhcmFtczogT2JqZWN0LFxuICAgICAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICAgICAgdXJsOiBTdHJpbmcsXG4gICAgICAgIH0sXG5cbiAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgYWxsb3c6IGZhbHNlLFxuICAgICAgICAgICAgY2xzRHJhZ292ZXI6ICd1ay1kcmFnb3ZlcicsXG4gICAgICAgICAgICBjb25jdXJyZW50OiAxLFxuICAgICAgICAgICAgbWF4U2l6ZTogMCxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgbWltZTogZmFsc2UsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTWltZTogJ0ludmFsaWQgRmlsZSBUeXBlOiAlcycsXG4gICAgICAgICAgICBtc2dJbnZhbGlkTmFtZTogJ0ludmFsaWQgRmlsZSBOYW1lOiAlcycsXG4gICAgICAgICAgICBtc2dJbnZhbGlkU2l6ZTogJ0ludmFsaWQgRmlsZSBTaXplOiAlcyBLaWxvYnl0ZXMgTWF4JyxcbiAgICAgICAgICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICAgICAgICAgIG5hbWU6ICdmaWxlc1tdJyxcbiAgICAgICAgICAgIHBhcmFtczoge30sXG4gICAgICAgICAgICB0eXBlOiAnJyxcbiAgICAgICAgICAgIHVybDogJycsXG4gICAgICAgICAgICBhYm9ydDogbm9vcCxcbiAgICAgICAgICAgIGJlZm9yZUFsbDogbm9vcCxcbiAgICAgICAgICAgIGJlZm9yZVNlbmQ6IG5vb3AsXG4gICAgICAgICAgICBjb21wbGV0ZTogbm9vcCxcbiAgICAgICAgICAgIGNvbXBsZXRlQWxsOiBub29wLFxuICAgICAgICAgICAgZXJyb3I6IG5vb3AsXG4gICAgICAgICAgICBmYWlsOiBub29wLFxuICAgICAgICAgICAgbG9hZDogbm9vcCxcbiAgICAgICAgICAgIGxvYWRFbmQ6IG5vb3AsXG4gICAgICAgICAgICBsb2FkU3RhcnQ6IG5vb3AsXG4gICAgICAgICAgICBwcm9ncmVzczogbm9vcFxuICAgICAgICB9LFxuXG4gICAgICAgIGV2ZW50czoge1xuXG4gICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgICAgIGlmICghbWF0Y2hlcyhlLnRhcmdldCwgJ2lucHV0W3R5cGU9XCJmaWxlXCJdJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZChlLnRhcmdldC5maWxlcyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZS50YXJnZXQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyb3A6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzdG9wKGUpO1xuXG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zZmVyID0gZS5kYXRhVHJhbnNmZXI7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXRyYW5zZmVyIHx8ICF0cmFuc2Zlci5maWxlcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy4kZWwsIHRoaXMuY2xzRHJhZ292ZXIpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy51cGxvYWQodHJhbnNmZXIuZmlsZXMpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgZHJhZ2VudGVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgc3RvcChlKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGRyYWdvdmVyOiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICAgICAgc3RvcChlKTtcbiAgICAgICAgICAgICAgICBhZGRDbGFzcyh0aGlzLiRlbCwgdGhpcy5jbHNEcmFnb3Zlcik7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBkcmFnbGVhdmU6IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgICAgICBzdG9wKGUpO1xuICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKHRoaXMuJGVsLCB0aGlzLmNsc0RyYWdvdmVyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LFxuXG4gICAgICAgIG1ldGhvZHM6IHtcblxuICAgICAgICAgICAgdXBsb2FkOiBmdW5jdGlvbihmaWxlcykge1xuICAgICAgICAgICAgICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICAgICAgICAgICAgICBpZiAoIWZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJpZ2dlcih0aGlzLiRlbCwgJ3VwbG9hZCcsIFtmaWxlc10pO1xuXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzJDEubWF4U2l6ZSAmJiB0aGlzJDEubWF4U2l6ZSAqIDEwMDAgPCBmaWxlc1tpXS5zaXplKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuZmFpbCh0aGlzJDEubXNnSW52YWxpZFNpemUucmVwbGFjZSgnJXMnLCB0aGlzJDEubWF4U2l6ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMkMS5hbGxvdyAmJiAhbWF0Y2godGhpcyQxLmFsbG93LCBmaWxlc1tpXS5uYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmZhaWwodGhpcyQxLm1zZ0ludmFsaWROYW1lLnJlcGxhY2UoJyVzJywgdGhpcyQxLmFsbG93KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcyQxLm1pbWUgJiYgIW1hdGNoKHRoaXMkMS5taW1lLCBmaWxlc1tpXS50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmZhaWwodGhpcyQxLm1zZ0ludmFsaWRNaW1lLnJlcGxhY2UoJyVzJywgdGhpcyQxLm1pbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVzID0gW2ZpbGVzWzBdXTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmJlZm9yZUFsbCh0aGlzLCBmaWxlcyk7XG5cbiAgICAgICAgICAgICAgICB2YXIgY2h1bmtzID0gY2h1bmsoZmlsZXMsIHRoaXMuY29uY3VycmVudCk7XG4gICAgICAgICAgICAgICAgdmFyIHVwbG9hZCA9IGZ1bmN0aW9uIChmaWxlcykge1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhJCQxID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZmlsZXMuZm9yRWFjaChmdW5jdGlvbiAoZmlsZSkgeyByZXR1cm4gZGF0YSQkMS5hcHBlbmQodGhpcyQxLm5hbWUsIGZpbGUpOyB9KTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcyQxLnBhcmFtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSQkMS5hcHBlbmQoa2V5LCB0aGlzJDEucGFyYW1zW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYWpheCh0aGlzJDEudXJsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhJCQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiB0aGlzJDEubWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiB0aGlzJDEudHlwZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZVNlbmQ6IGZ1bmN0aW9uIChlbnYpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4aHIgPSBlbnYueGhyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhoci51cGxvYWQgJiYgb24oeGhyLnVwbG9hZCwgJ3Byb2dyZXNzJywgdGhpcyQxLnByb2dyZXNzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2xvYWRTdGFydCcsICdsb2FkJywgJ2xvYWRFbmQnLCAnYWJvcnQnXS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7IHJldHVybiBvbih4aHIsIHR5cGUudG9Mb3dlckNhc2UoKSwgdGhpcyQxW3R5cGVdKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuYmVmb3JlU2VuZChlbnYpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pLnRoZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoeGhyKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzJDEuY29tcGxldGUoeGhyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaHVua3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZChjaHVua3Muc2hpZnQoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyQxLmNvbXBsZXRlQWxsKHhocik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGUpIHsgcmV0dXJuIHRoaXMkMS5lcnJvcihlLm1lc3NhZ2UpOyB9XG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgdXBsb2FkKGNodW5rcy5zaGlmdCgpKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYXRjaChwYXR0ZXJuLCBwYXRoKSB7XG4gICAgICAgIHJldHVybiBwYXRoLm1hdGNoKG5ldyBSZWdFeHAoKFwiXlwiICsgKHBhdHRlcm4ucmVwbGFjZSgvXFwvL2csICdcXFxcLycpLnJlcGxhY2UoL1xcKlxcKi9nLCAnKFxcXFwvW15cXFxcL10rKSonKS5yZXBsYWNlKC9cXCovZywgJ1teXFxcXC9dKycpLnJlcGxhY2UoLygoPyFcXFxcKSlcXD8vZywgJyQxLicpKSArIFwiJFwiKSwgJ2knKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2h1bmsoZmlsZXMsIHNpemUpIHtcbiAgICAgICAgdmFyIGNodW5rcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSArPSBzaXplKSB7XG4gICAgICAgICAgICB2YXIgY2h1bmsgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2l6ZTsgaisrKSB7XG4gICAgICAgICAgICAgICAgY2h1bmsucHVzaChmaWxlc1tpICsgal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2h1bmtzLnB1c2goY2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjaHVua3M7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc3RvcChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBVSWtpdC5jb21wb25lbnQoJ2NvdW50ZG93bicsIENvdW50ZG93bik7XG4gICAgVUlraXQuY29tcG9uZW50KCdmaWx0ZXInLCBGaWx0ZXIpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnbGlnaHRib3gnLCBMaWdodGJveCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdsaWdodGJveFBhbmVsJywgTGlnaHRib3hQYW5lbCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdub3RpZmljYXRpb24nLCBOb3RpZmljYXRpb24pO1xuICAgIFVJa2l0LmNvbXBvbmVudCgncGFyYWxsYXgnLCBQYXJhbGxheCQxKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlcicsIFNsaWRlciQxKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3NsaWRlclBhcmFsbGF4JywgU2xpZGVyUGFyYWxsYXgpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVzaG93JywgU2xpZGVzaG93JDEpO1xuICAgIFVJa2l0LmNvbXBvbmVudCgnc2xpZGVzaG93UGFyYWxsYXgnLCBTbGlkZXJQYXJhbGxheCk7XG4gICAgVUlraXQuY29tcG9uZW50KCdzb3J0YWJsZScsIFNvcnRhYmxlKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3Rvb2x0aXAnLCBUb29sdGlwKTtcbiAgICBVSWtpdC5jb21wb25lbnQoJ3VwbG9hZCcsIFVwbG9hZCk7XG5cbiAgICB7XG4gICAgICAgIGJvb3QoVUlraXQpO1xuICAgIH1cblxuICAgIHJldHVybiBVSWtpdDtcblxufSkpKTtcbiJdfQ== diff --git a/static/resources.json b/static/resources.json index e3e18689..e1a44127 100644 --- a/static/resources.json +++ b/static/resources.json @@ -1,381 +1,398 @@ { + "Communities": { + "description": "Partnered communities that share part of our mission", + "resources": { + "Subreddit: r/Python": { + "description": "News about the Python programming language, and language-related discussion", + "payment": "free", + "payment_description": null, + "urls": [ + { + "icon": "branding/reddit-alien", + "title": "r/Python on Reddit", + "url": "https://www.reddit.com/r/Python/" + } + ] + } + } + }, "Tutorials": { - "description": "Tutorials and references for those that are just getting started with python", - "resources": { - "A Simple Guide to Git": { - "description": "A simple, no-nonsense guide to the basics of using Git.", - "payment": "free", - "payment_description": null, - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "http://rogerdudler.github.io/git-guide/" - } - ] - }, - "Get Started with Flask Web Development": { - "description": "A fully featured mega-tutorial for learning how to create web applications with the Flask framework.", - "payment": "free", - "payment_description": null, - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world" - } - ] - }, - "Getting Started with Python": { - "description": "The list of resources for programmers and non-programmers from Python's official beginners' guide", - "payment": "free", - "payment_description": null, - "urls": [ - { - "icon": "regular/link", - "title": "Beginners Guide for Non-Programmers", - "url": "https://wiki.python.org/moin/BeginnersGuide/NonProgrammers" - }, - { - "icon": "regular/link", - "title": "Beginners Guide for Programmers", - "url": "https://wiki.python.org/moin/BeginnersGuide/Programmers" - } - ] - }, - "Python Cheat Sheet": { - "description": "A Python 3 cheat sheet with useful information and tips, as well as common pitfalls for beginners. This is a PDF.", - "payment": "free", - "payment_description": null, - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "https://perso.limsi.fr/pointal/_media/python:cours:mementopython3-english.pdf" - } - ] - } - } - }, - "Books": { - "description": "The best books for learning Python or Python Frameworks", - "resources": { - "A Byte of Python": { - "description": "A free book on programming using the Python language. It serves as a tutorial or guide to the Python language for a beginner audience. If all you know about computers is how to save text files, then this is the book for you.", - "payment": "optional", - "payment_description": "A free e-book is available online, a paper version can be bought from lulu.com.", - "urls": [ - { - "icon": "regular/link", - "title": "E-book", - "url": "https://python.swaroopch.com/" - }, - { - "icon": "regular/book", - "title": "Buy the book", - "url": "http://www.lulu.com/shop/swaroop-c-h/a-byte-of-python/paperback/product-21142968.html" - }, - { - "icon": "regular/tablet-alt", - "title": "Kindle edition", - "url": "https://www.amazon.com/Byte-Python-Swaroop-C-H-ebook/dp/B00FJ7S2JU/" - } - ] - }, - "Automate the Boring Stuff with Python": { - "description": "One of the best books out there for Python beginners. This book will teach you the basics of Python, while also teaching invaluable automation tools and techniques for solving common problems. You'll learn how to go about scraping the web, manipulating files and automating keyboard and mouse input. Ideal for an office worker who wants to make himself more useful.", - "payment": "optional", - "payment_description": "A free e-book is available on the website, but you can buy it on Amazon if you want to support the author.", - "urls": [ - { - "icon": "regular/link", - "title": "E-book", - "url": "https://automatetheboringstuff.com/" - }, - { - "icon": "branding/amazon", - "title": "Amazon", - "url": "https://www.amazon.com/Automate-Boring-Stuff-Python-Programming/dp/1593275994/" - } - ] - }, - "Effective Python": { - "description": "A book that gives 59 best practices for writing excellent Python. Great for intermediates.", - "payment": "paid", - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "https://effectivepython.com/" - }, - { - "icon": "branding/amazon", - "title": "Amazon", - "url": "https://www.amazon.com/Effective-Python-Specific-Software-Development/dp/0134034287" - }, - { - "icon": "branding/github", - "title": "GitHub", - "url": "https://github.com/bslatkin/effectivepython" - } - ] - }, - "Flask Web Development": { - "description": "A comprehensive Flask walkthrough that has you building a complete social blogging application from scratch.", - "payment": "paid", - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "http://shop.oreilly.com/product/0636920031116.do" - }, - { - "icon": "branding/amazon", - "title": "Amazon", - "url": "https://www.amazon.com/Flask-Web-Development-Developing-Applications/dp/1449372627" - }, - { - "icon": "branding/github", - "title": "GitHub", - "url": "https://github.com/miguelgrinberg/flasky" - } - ] - }, - "Fluent Python": { - "description": "A veritable tome of intermediate and advanced Python information. A must-read for any Python professional.", - "payment": "paid", - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "https://www.oreilly.com/library/view/fluent-python/9781491946237/" - }, - { - "icon": "branding/amazon", - "title": "Amazon", - "url": "https://www.amazon.com/Fluent-Python-Concise-Effective-Programming/dp/1491946008" - }, - { - "icon": "branding/github", - "title": "GitHub", - "url": "https://github.com/fluentpython" - } - ] - }, - "Python Cookbook": { - "description": "Complete with 'recipes' for various Python topics, including moving from Python 2 to Python 3.3", - "payment": "paid", - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "http://shop.oreilly.com/product/0636920027072.do" - }, - { - "icon": "branding/amazon", - "title": "Amazon", - "url": "https://www.amazon.com/Python-Cookbook-Third-David-Beazley/dp/1449340377" - }, - { - "icon": "branding/github", - "title": "GitHub", - "url": "https://github.com/dabeaz/python-cookbook" - } - ] - }, - "Two Scoops of Django": { - "description": "This book is chock-full of material that will help you with your Django projects.", - "payment": "paid", - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "https://twoscoopspress.com/products/two-scoops-of-django-1-11" - }, - { - "icon": "branding/amazon", - "title": "Amazon", - "url": "https://www.amazon.com/Two-Scoops-Django-Best-Practices/dp/0981467342" - }, - { - "icon": "branding/github", - "title": "GitHub", - "url": "https://github.com/twoscoops/two-scoops-of-django-2.0-code-examples" - } - ] - } - } - }, - "Courses": { - "description": "Online courses that relate to Python.", - "resources": { - "Python Tutorials by Corey Schafer on YouTube": { - "description": "An in-depth look at the Python programming language, from one of YouTube's most popular Python tutors.", - "payment": "free", - "payment_description": null, - "urls": [ - { - "icon": "branding/youtube", - "title": "YouTube", - "url": "https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU" - } - ] - }, - "Code Combat": { - "description": "Learn Python while gaming - an open-source project with thousands of contributors, which teaches you Python through a deep, top-down RPG.", - "payment": "optional", - "payment_description": "A wealth of free content is available, but you can also pay for more", - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "https://codecombat.com/" - }, - { - "icon": "branding/github", - "title": "GitHub", - "url": "https://github.com/codecombat/codecombat" - } - ] - }, - "MIT: Introduction to Computer Science and Programming Using Python": { - "description": "This MITx offering teaches computer science with Python. It covers computational thinking, algorithms, data structures and the Python programming language itself.", - "payment": "optional", - "payment_description": "You can pay to enroll for a graded certificate, or choose to take the full course for free.", - "urls": [ - { - "icon": "regular/graduation-cap", - "title": "edX Course", - "url": "https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-11" - } - ] - }, - "University of Michigan: Programming for Everybody": { - "description": "A 5-part specialization course that teaches Python from scratch. The course has no pre-requisites and avoids all but the simplest mathematics.", - "payment": "optional", - "payment_description": "You can pay to enroll for a graded certificate and a capstone project, or choose to audit for free.", - "urls": [ - { - "icon": "regular/graduation-cap", - "title": "Python for Everyone Specialization", - "url": "https://www.coursera.org/learn/python" - } - ] - }, - "University of Toronto: Learn to Program": { - "description": "A 2-part course that teaches Python. Primarily intended for high school students and first-year university students who want to learn programming.", - "payment": "optional", - "payment_description": "You can pay to enroll for a graded certificate, or choose to audit for free.", - "urls": [ - { - "icon": "regular/graduation-cap", - "title": "Part 1: The Fundamentals", - "url": "https://www.coursera.org/learn/learn-to-program" - }, - { - "icon": "regular/graduation-cap", - "title": "Part 2: Crafting Quality Code", - "url": "https://www.coursera.org/learn/program-code" - } - ] - }, - "Automate the Boring Stuff with Python": { - "description": "The interactive course version of Al Sweigart's excellent book for beginners, taught by the author himself. This link has a discounted version of the course which will always cost 10 dollars. Thanks, Al!", - "payment": "paid", - "payment_description": "You can pay to enroll for a graded certificate, or choose to take the full course for free.", - "urls": [ - { - "icon": "regular/graduation-cap", - "title": "Udemy Course", - "url": "https://www.udemy.com/automate/?couponCode=FOR_LIKE_10_BUCKS" - } - ] - } - } - }, - "Editors": { - "description": "Lightweight code editors supporting Python", - "resources": { - "Atom": { - "description": "A free Electron-based editor, a \"hackable text editor for the 21st century\", maintained by the GitHub team.", - "payment": "free", - "payment_description": null, - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "https://atom.io/" - }, - { - "icon": "branding/github", - "title": "GitHub", - "url": "https://github.com/atom/atom" - } - ] - }, - "Visual Studio Code": { - "description": "A fully-featured editor based on Electron, extendable with plugins.", - "payment": "free", - "payment_description": null, - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "https://code.visualstudio.com/" - }, - { - "icon": "branding/github", - "title": "GitHub", - "url": "https://github.com/Microsoft/vscode" - } - ] - }, - "Sublime Text": { - "description": "A powerful Python-backed editor with great community support and a wealth of extensions.", - "payment": "optional", - "payment_description": "Nagware; will ask you to buy the full version after every X saves", - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "https://www.sublimetext.com/" - } - ] - } - } - }, - "IDEs": { - "description": "Fully-integrated development environments for serious Python work", - "resources": { - "Spyder": { - "description": "The Scientific PYthon Development EnviRonment. Simpler and lighter than PyCharm, but still packs a punch.", - "payment": "free", - "payment_description": null, - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "https://pythonhosted.org/spyder/" - }, - { - "icon": "branding/github", - "title": "GitHub", - "url": "https://github.com/spyder-ide/spyder" - } - ] - }, - "PyCharm": { - "description": "The very best Python IDE, with a wealth of advanced features and convenience functions.", - "payment": "optional", - "payment_description": "There's a free Community Edition and a paid-for Professional Edition with more features available", - "urls": [ - { - "icon": "regular/link", - "title": "Website", - "url": "https://www.jetbrains.com/pycharm/" - } - ] - } - } + "description": "Tutorials and references for those that are just getting started with python", + "resources": { + "A Simple Guide to Git": { + "description": "A simple, no-nonsense guide to the basics of using Git.", + "payment": "free", + "payment_description": null, + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "http://rogerdudler.github.io/git-guide/" + } + ] + }, + "Get Started with Flask Web Development": { + "description": "A fully featured mega-tutorial for learning how to create web applications with the Flask framework.", + "payment": "free", + "payment_description": null, + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world" + } + ] + }, + "Getting Started with Python": { + "description": "The list of resources for programmers and non-programmers from Python's official beginners' guide", + "payment": "free", + "payment_description": null, + "urls": [ + { + "icon": "regular/link", + "title": "Beginners Guide for Non-Programmers", + "url": "https://wiki.python.org/moin/BeginnersGuide/NonProgrammers" + }, + { + "icon": "regular/link", + "title": "Beginners Guide for Programmers", + "url": "https://wiki.python.org/moin/BeginnersGuide/Programmers" + } + ] + }, + "Python Cheat Sheet": { + "description": "A Python 3 cheat sheet with useful information and tips, as well as common pitfalls for beginners. This is a PDF.", + "payment": "free", + "payment_description": null, + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "https://perso.limsi.fr/pointal/_media/python:cours:mementopython3-english.pdf" + } + ] + } + } + }, + "Books": { + "description": "The best books for learning Python or Python Frameworks", + "resources": { + "A Byte of Python": { + "description": "A free book on programming using the Python language. It serves as a tutorial or guide to the Python language for a beginner audience. If all you know about computers is how to save text files, then this is the book for you.", + "payment": "optional", + "payment_description": "A free e-book is available online, a paper version can be bought from lulu.com.", + "urls": [ + { + "icon": "regular/link", + "title": "E-book", + "url": "https://python.swaroopch.com/" + }, + { + "icon": "regular/book", + "title": "Buy the book", + "url": "http://www.lulu.com/shop/swaroop-c-h/a-byte-of-python/paperback/product-21142968.html" + }, + { + "icon": "regular/tablet-alt", + "title": "Kindle edition", + "url": "https://www.amazon.com/Byte-Python-Swaroop-C-H-ebook/dp/B00FJ7S2JU/" + } + ] + }, + "Automate the Boring Stuff with Python": { + "description": "One of the best books out there for Python beginners. This book will teach you the basics of Python, while also teaching invaluable automation tools and techniques for solving common problems. You'll learn how to go about scraping the web, manipulating files and automating keyboard and mouse input. Ideal for an office worker who wants to make himself more useful.", + "payment": "optional", + "payment_description": "A free e-book is available on the website, but you can buy it on Amazon if you want to support the author.", + "urls": [ + { + "icon": "regular/link", + "title": "E-book", + "url": "https://automatetheboringstuff.com/" + }, + { + "icon": "branding/amazon", + "title": "Amazon", + "url": "https://www.amazon.com/Automate-Boring-Stuff-Python-Programming/dp/1593275994/" + } + ] + }, + "Effective Python": { + "description": "A book that gives 59 best practices for writing excellent Python. Great for intermediates.", + "payment": "paid", + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "https://effectivepython.com/" + }, + { + "icon": "branding/amazon", + "title": "Amazon", + "url": "https://www.amazon.com/Effective-Python-Specific-Software-Development/dp/0134034287" + }, + { + "icon": "branding/github", + "title": "GitHub", + "url": "https://github.com/bslatkin/effectivepython" + } + ] + }, + "Flask Web Development": { + "description": "A comprehensive Flask walkthrough that has you building a complete social blogging application from scratch.", + "payment": "paid", + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "http://shop.oreilly.com/product/0636920031116.do" + }, + { + "icon": "branding/amazon", + "title": "Amazon", + "url": "https://www.amazon.com/Flask-Web-Development-Developing-Applications/dp/1449372627" + }, + { + "icon": "branding/github", + "title": "GitHub", + "url": "https://github.com/miguelgrinberg/flasky" + } + ] + }, + "Fluent Python": { + "description": "A veritable tome of intermediate and advanced Python information. A must-read for any Python professional.", + "payment": "paid", + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "https://www.oreilly.com/library/view/fluent-python/9781491946237/" + }, + { + "icon": "branding/amazon", + "title": "Amazon", + "url": "https://www.amazon.com/Fluent-Python-Concise-Effective-Programming/dp/1491946008" + }, + { + "icon": "branding/github", + "title": "GitHub", + "url": "https://github.com/fluentpython" + } + ] + }, + "Python Cookbook": { + "description": "Complete with 'recipes' for various Python topics, including moving from Python 2 to Python 3.3", + "payment": "paid", + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "http://shop.oreilly.com/product/0636920027072.do" + }, + { + "icon": "branding/amazon", + "title": "Amazon", + "url": "https://www.amazon.com/Python-Cookbook-Third-David-Beazley/dp/1449340377" + }, + { + "icon": "branding/github", + "title": "GitHub", + "url": "https://github.com/dabeaz/python-cookbook" + } + ] + }, + "Two Scoops of Django": { + "description": "This book is chock-full of material that will help you with your Django projects.", + "payment": "paid", + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "https://twoscoopspress.com/products/two-scoops-of-django-1-11" + }, + { + "icon": "branding/amazon", + "title": "Amazon", + "url": "https://www.amazon.com/Two-Scoops-Django-Best-Practices/dp/0981467342" + }, + { + "icon": "branding/github", + "title": "GitHub", + "url": "https://github.com/twoscoops/two-scoops-of-django-2.0-code-examples" + } + ] + } + } + }, + "Courses": { + "description": "Online courses that relate to Python.", + "resources": { + "Python Tutorials by Corey Schafer on YouTube": { + "description": "An in-depth look at the Python programming language, from one of YouTube's most popular Python tutors.", + "payment": "free", + "payment_description": null, + "urls": [ + { + "icon": "branding/youtube", + "title": "YouTube", + "url": "https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU" + } + ] + }, + "Code Combat": { + "description": "Learn Python while gaming - an open-source project with thousands of contributors, which teaches you Python through a deep, top-down RPG.", + "payment": "optional", + "payment_description": "A wealth of free content is available, but you can also pay for more", + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "https://codecombat.com/" + }, + { + "icon": "branding/github", + "title": "GitHub", + "url": "https://github.com/codecombat/codecombat" + } + ] + }, + "MIT: Introduction to Computer Science and Programming Using Python": { + "description": "This MITx offering teaches computer science with Python. It covers computational thinking, algorithms, data structures and the Python programming language itself.", + "payment": "optional", + "payment_description": "You can pay to enroll for a graded certificate, or choose to take the full course for free.", + "urls": [ + { + "icon": "regular/graduation-cap", + "title": "edX Course", + "url": "https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-11" + } + ] + }, + "University of Michigan: Programming for Everybody": { + "description": "A 5-part specialization course that teaches Python from scratch. The course has no pre-requisites and avoids all but the simplest mathematics.", + "payment": "optional", + "payment_description": "You can pay to enroll for a graded certificate and a capstone project, or choose to audit for free.", + "urls": [ + { + "icon": "regular/graduation-cap", + "title": "Python for Everyone Specialization", + "url": "https://www.coursera.org/learn/python" + } + ] + }, + "University of Toronto: Learn to Program": { + "description": "A 2-part course that teaches Python. Primarily intended for high school students and first-year university students who want to learn programming.", + "payment": "optional", + "payment_description": "You can pay to enroll for a graded certificate, or choose to audit for free.", + "urls": [ + { + "icon": "regular/graduation-cap", + "title": "Part 1: The Fundamentals", + "url": "https://www.coursera.org/learn/learn-to-program" + }, + { + "icon": "regular/graduation-cap", + "title": "Part 2: Crafting Quality Code", + "url": "https://www.coursera.org/learn/program-code" + } + ] + }, + "Automate the Boring Stuff with Python": { + "description": "The interactive course version of Al Sweigart's excellent book for beginners, taught by the author himself. This link has a discounted version of the course which will always cost 10 dollars. Thanks, Al!", + "payment": "paid", + "payment_description": "You can pay to enroll for a graded certificate, or choose to take the full course for free.", + "urls": [ + { + "icon": "regular/graduation-cap", + "title": "Udemy Course", + "url": "https://www.udemy.com/automate/?couponCode=FOR_LIKE_10_BUCKS" + } + ] + } + } + }, + "Editors": { + "description": "Lightweight code editors supporting Python", + "resources": { + "Atom": { + "description": "A free Electron-based editor, a \"hackable text editor for the 21st century\", maintained by the GitHub team.", + "payment": "free", + "payment_description": null, + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "https://atom.io/" + }, + { + "icon": "branding/github", + "title": "GitHub", + "url": "https://github.com/atom/atom" + } + ] + }, + "Visual Studio Code": { + "description": "A fully-featured editor based on Electron, extendable with plugins.", + "payment": "free", + "payment_description": null, + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "https://code.visualstudio.com/" + }, + { + "icon": "branding/github", + "title": "GitHub", + "url": "https://github.com/Microsoft/vscode" + } + ] + }, + "Sublime Text": { + "description": "A powerful Python-backed editor with great community support and a wealth of extensions.", + "payment": "optional", + "payment_description": "Nagware; will ask you to buy the full version after every X saves", + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "https://www.sublimetext.com/" + } + ] + } + } + }, + "IDEs": { + "description": "Fully-integrated development environments for serious Python work", + "resources": { + "Spyder": { + "description": "The Scientific PYthon Development EnviRonment. Simpler and lighter than PyCharm, but still packs a punch.", + "payment": "free", + "payment_description": null, + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "https://pythonhosted.org/spyder/" + }, + { + "icon": "branding/github", + "title": "GitHub", + "url": "https://github.com/spyder-ide/spyder" + } + ] + }, + "PyCharm": { + "description": "The very best Python IDE, with a wealth of advanced features and convenience functions.", + "payment": "optional", + "payment_description": "There's a free Community Edition and a paid-for Professional Edition with more features available", + "urls": [ + { + "icon": "regular/link", + "title": "Website", + "url": "https://www.jetbrains.com/pycharm/" + } + ] + } } + } } |