Last active
February 15, 2017 11:59
-
-
Save spiralx/87379103af73e19bb39998513aa6b5ea to your computer and use it in GitHub Desktop.
Reddit user style
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@-moz-document domain("reddit.com") { | |
@import url("https://fonts.googleapis.com/css?family=Merriweather+Sans:400,400italic,700,700italic"); | |
body { | |
-webkit-font-smoothing: antialiased; | |
-moz-osx-font-smoothing: grayscale; | |
text-rendering: optimizeLegibility; | |
font-family: 'Merriweather Sans', sans-serif; | |
font-size: 14pt; | |
line-height: 1.44em; | |
color: #000; | |
word-spacing: normal; | |
letter-spacing: normal; | |
cursor: auto !important; | |
} | |
pre, | |
code, | |
tt, | |
kbd, | |
samp { | |
font: normal 14pt/1.44em Monaco, Consolas, 'Lucida Console', monospace; | |
} | |
a, | |
.tagline a, | |
.search-result-meta a, | |
.thing a.title, | |
.md a { | |
color: #05f; | |
text-decoration: none; | |
} | |
a:visited, | |
.tagline a:visited, | |
.search-result-meta a:visited, | |
.thing a.title:visited, | |
.md a:visited { | |
color: #b48; | |
} | |
a:hover, | |
.tagline a:hover, | |
.search-result-meta a:hover, | |
.thing a.title:hover, | |
.md a:hover { | |
text-decoration: underline; | |
} | |
.md, | |
.md .-text, | |
.md pre > code, | |
.md li, | |
.md p, | |
.md textarea, | |
.md th, | |
.md td { | |
font-size: inherit; | |
} | |
.usertext, | |
.md-container, | |
.md-container-small { | |
font-size: inherit; | |
} | |
.commentingAs { | |
font-size: 0.9em; | |
} | |
.tagline, | |
.flat-list, | |
.search-result-meta, | |
.RESDialogSmall, | |
.menuarea, | |
.morecomments a { | |
font-size: 0.8em; | |
} | |
.domain { | |
font-size: 0.7em; | |
} | |
.side { | |
overflow-x: hidden; | |
position: relative; | |
z-index: 2; | |
} | |
.thing { | |
position: relative; | |
} | |
.thing .title { | |
font-weight: bold; | |
font-size: inherit; | |
line-height: 2em; | |
} | |
.entry { | |
position: relative; | |
margin: 0; | |
padding: 6px 9px 6px 30px; | |
border-style: solid; | |
border-width: 2px; | |
border-color: transparent; | |
-webkit-box-sizing: border-box; | |
-moz-box-sizing: border-box; | |
box-sizing: border-box; | |
} | |
.entry.RES-keyNav-activeElement { | |
border-color: #05f; | |
z-index: 2; | |
} | |
.entry .flat-list li a, | |
.entry a.give-gold { | |
color: #406abf !important; | |
font-size: inherit; | |
} | |
.entry .flat-list li a:after, | |
.entry a.give-gold:after { | |
display: none; | |
} | |
.md { | |
color: inherit; | |
max-width: 100%; | |
} | |
.linklisting .md, | |
.commentarea .md { | |
margin: 0.5em 0.25em 0 0; | |
} | |
.md blockquote { | |
margin: 0.5em 0; | |
padding: 0.4em 0.5em 0.25em; | |
border-left: solid 2px #444; | |
color: #000; | |
background-color: #ddd; | |
font-style: italic; | |
} | |
.expand-inline { | |
margin-left: -20px; | |
} | |
.organic-listing .link .entry { | |
border-bottom: none; | |
padding-bottom: 0; | |
} | |
.organic-listing .sponsored-tagline { | |
display: none; | |
} | |
.link.last-clicked { | |
border: none !important; | |
} | |
.link .entry { | |
border-bottom-color: #ccc; | |
} | |
.link .entry.RES-keyNav-activeElement { | |
border-bottom-color: #05f; | |
} | |
.link .thumbnail, | |
.link .midcol { | |
margin-top: 5px !important; | |
} | |
.link .tagline { | |
float: left; | |
line-height: 2.4em; | |
} | |
.link .flair, | |
.link .linkflairlabel { | |
display: inline; | |
font-size: 0.6em; | |
padding: 0.25em 0.5em; | |
} | |
.link .flair:empty, | |
.link .linkflairlabel:empty { | |
display: none; | |
} | |
.link .flat-list { | |
float: right; | |
padding-right: 0.5em; | |
line-height: 2.4em; | |
} | |
@media (max-width: 800px) { | |
.link .flat-list { | |
float: none; | |
padding-right: 0px; | |
} | |
} | |
.link .flat-list a.comments { | |
color: #fff !important; | |
background-color: #49f !important; | |
-webkit-border-radius: 4px !important; | |
border-radius: 4px !important; | |
padding: 4px 6px 4px !important; | |
} | |
.link .flat-list a.comments .newComments { | |
color: #bbb; | |
font-style: italic; | |
} | |
.link .flat-list a.comments:hover { | |
background-color: #0049a2 !important; | |
text-decoration: none; | |
} | |
.link .flat-list a.comments:visited { | |
background-color: #c60 !important; | |
} | |
.link .flat-list a.comments:visited:hover { | |
background-color: #630 !important; | |
} | |
.link .usertext-body { | |
padding-top: 0.8em; | |
} | |
.link .usertext-body .md { | |
border: 0; | |
background-color: inherit; | |
} | |
.comment .midcol { | |
position: absolute; | |
top: 0.5em; | |
left: 7.5px; | |
width: 25px; | |
float: none; | |
margin: 0; | |
z-index: 4; | |
} | |
.comment .midcol .arrow { | |
margin: 0 0 0.5em; | |
} | |
.comment .midcol .arrow:before { | |
display: none !important; | |
} | |
.comment .parent { | |
margin-left: 30px; | |
} | |
.comment .entry { | |
background-color: inherit; | |
} | |
.comment .keyNavAnnotation { | |
display: none !important; | |
} | |
.comment .tagline { | |
display: block; | |
border-bottom: dotted 1px #888; | |
padding-bottom: 0.3em; | |
margin-bottom: 0.3em; | |
} | |
.comment .tagline .score { | |
font-weight: bold; | |
} | |
.comment .morechildren .tagline { | |
border-bottom: 0; | |
} | |
.comment .flat-list { | |
vertical-align: bottom; | |
} | |
@media (max-width: 1199px) { | |
.comment .flat-list { | |
margin: 0.5em 0 0; | |
padding: 0.25em 0.5em; | |
border-top: dotted 1px #888; | |
} | |
} | |
@media (min-width: 1200px) { | |
.comment .flat-list { | |
position: absolute; | |
top: 0.25em; | |
right: 0.5em; | |
font-size: 0.7em; | |
opacity: 0.1; | |
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)"; | |
filter: alpha(opacity=10); | |
} | |
} | |
.comment.RES-keyNav-activeThing .flat-list { | |
z-index: 8; | |
} | |
.comment.RES-keyNav-activeThing > .entry .flat-list:hover { | |
opacity: 1; | |
-ms-filter: none; | |
filter: none; | |
} | |
.comment .tagline:empty, | |
.comment .child:empty { | |
display: none; | |
} | |
.profile-page .linklisting .comment { | |
margin-bottom: 0.5em; | |
position: static; | |
} | |
.profile-page .linklisting .comment:nth-child(4n+1) { | |
background-color: #f4f4f4; | |
} | |
.newComments { | |
color: #000; | |
} | |
.new-comment .usertext-body { | |
border: none; | |
} | |
.new-comment .usertext-body .md { | |
padding: 4px 0 0; | |
} | |
.new-comment .usertext-body, | |
.new-comment.RES-keyNav-activeThing .usertext-body.md-container { | |
background-color: #def !important; | |
} | |
.edited-timestamp { | |
visibility: hidden !important; | |
position: absolute !important; | |
} | |
.usertext-edit { | |
width: 800px !important; | |
max-width: 90% !important; | |
margin: 0.75em 0 0 0.5em; | |
font-size: inherit; | |
} | |
.usertext-edit textarea[name = text] { | |
width: 100% !important; | |
min-height: 8em; | |
padding: 0.4em 0.6em; | |
border: solid 1px #888; | |
font-family: inherit; | |
font-size: 0.9em; | |
} | |
#sr-header-area { | |
height: auto !important; | |
} | |
#sr-header-area a { | |
font-size: 10pt !important; | |
} | |
#RESShortcutsViewport { | |
max-height: 100% !important; | |
overflow-y: visible !important; | |
} | |
#header { | |
min-height: 80px; | |
} | |
#header-bottom-left { | |
position: absolute; | |
bottom: 1px; | |
left: 0; | |
} | |
#header-bottom-right { | |
margin-top: 3px; | |
} | |
.res-commentBoxes .comment { | |
padding: 0 !important; | |
} | |
.RESDialogSmall.livePreview { | |
padding: 0.25em 0.5em; | |
} | |
.RESDialogSmall.livePreview > h3 { | |
position: absolute; | |
bottom: 0; | |
left: 0; | |
right: 0; | |
margin: 10px 0 0; | |
padding: 0.25em 0.5em 0 0.5em; | |
border-bottom: none; | |
border-top: 1px solid #c7c7c7; | |
} | |
.RESDialogSmall.livePreview > .md { | |
padding-bottom: 36px; | |
} | |
.RESDialogSmall.livePreview .gearIcon { | |
float: left; | |
margin: -0.15em 0.5em 0 0; | |
} | |
.RES-keyNav-activeElement, | |
.RES-keyNav-activeElement .md-container { | |
background-color: inherit !important; | |
} | |
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3JlZGRpdC1yZWFkYWJpbGl0eS5zdHlsIiwiL1VzZXJzL0phbWVzL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL3ZlbmRvci5zdHlsIiwiLi4vX21peGlucy9sYXlvdXQuc3R5bCIsIi4uL19taXhpbnMvYmFzaWNzLnN0eWwiLCIvVXNlcnMvSmFtZXMvQXBwRGF0YS9Sb2FtaW5nL25wbS9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvZmxleC5zdHlsIiwiL1VzZXJzL0phbWVzL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL2JvcmRlci5zdHlsIiwiL1VzZXJzL0phbWVzL0FwcERhdGEvUm9hbWluZy9ucG0vbm9kZV9tb2R1bGVzL25pYi9saWIvbmliL3Bvc2l0aW9ucy5zdHlsIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1DeUM7QUFFekM7RUFDRSx3QkFBd0IsWUFBeEI7RUFDQSx5QkFBeUIsVUFBekI7RUFDQSxnQkFBZ0IsbUJBQWhCO0VBRUEsYUFBZ0MsZ0NBQWhDO0VBQ0EsV0FBVyxLQUFYO0VBQ0EsYUFBYSxPQUFiO0VBQ0EsT0FBTyxLQUFQO0VBRUEsY0FBYyxPQUFkO0VBQ0EsZ0JBQWdCLE9BQWhCO0VDb2dCRSxRQUFPLGdCQUFQOztBRC9mSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsTUFBTSxpRUFBTjs7QUFFRjtBRWdWd0M7QUFBQTtBQUFBO0FBQUE7RUNsV3RDLE9BQU8sS0FBUDtFQUtFLGlCQUFpQixLQUFqQjs7QUFJRjs7Ozs7RUFDRSxPQUFPLEtBQVA7O0FBRUY7Ozs7O0VBSUksaUJBQWlCLFVBQWpCOztBSG1CSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsV0FBVyxRQUFYOztBQUVKO0FBQ0E7QUFDQTtFQUNFLFdBQVcsUUFBWDs7QUFFRjtFQUNFLFdBQVcsTUFBWDs7QUFFRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFD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LGtCQUFSOztBQUdGO0FBQ0E7RUFDRSxrQkFBa0IsbUJBQWxCIiwiZmlsZSI6InJlZGRpdC1yZWFkYWJpbGl0eS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwibmliXCJcclxuXHJcbkBpbXBvcnQgX21peGluc1xyXG5cclxuLy8gc3R5bHVzIC1VIC11IG5pYiAtbyBjc3MgLS1zb3VyY2VtYXAtaW5saW5lIC0taG9pc3QtYXRydWxlcyByZWRkaXQtcmVhZGFiaWxpdHkuc3R5bFxyXG5cclxuXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kdGV4dC1mb250ID0gJ01lcnJpd2VhdGhlciBTYW5zJ1xyXG4kbW9ub3NwYWNlLWZvbnQgPSBNb25hY28sIENvbnNvbGFzLCAnTHVjaWRhIENvbnNvbGUnLCBtb25vc3BhY2VcclxuXHJcbiR0ZXh0LXNpemUgPSAxNHB0XHJcbiRsaW5lLWhlaWdodCA9IDEuNDRlbVxyXG5cclxuJGxpbmstY29sb3VyID0gIzA1ZlxyXG4kbGluay12aXNpdGVkLWNvbG91ciA9ICNiNDhcclxuJGxpbmstYm9yZGVyLWNvbG91ciA9ICNjY2NcclxuLy8gJGxpbmstdmlzaXRlZC1jb2xvdXIgPSAjYzYwXHJcblxyXG4kYnV0dG9uLWNvbG91ciA9ICM0OWZcclxuJGJ1dHRvbi12aXNpdGVkLWNvbG91ciA9ICNjNjBcclxuXHJcbiRibG9ja3F1b3RlLWNvbG91ciA9IGJsYWNrXHJcbiRibG9ja3F1b3RlLWJhY2tncm91bmQtY29sb3VyID0gI2RkZFxyXG5cclxuJGZvY3VzLWl0ZW0taGlnaGxpZ2h0LWNvbG91ciA9ICMwNWZcclxuJG5ldy1jb21tZW50LWNvbG91ciA9ICNkZWZcclxuXHJcbiRjb21tZW50LXBhZCA9IDZweFxyXG4kdGV4dGFyZWEtcGFkID0gMC40ZW1cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbkBpbXBvcnQgdXJsKHdlYi1mb250KCdNZXJyaXdlYXRoZXIgU2FucycpKVxyXG5cclxuYm9keVxyXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkXHJcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZVxyXG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHlcclxuXHJcbiAgZm9udC1mYW1pbHk6ICdNZXJyaXdlYXRoZXIgU2FucycsIHNhbnMtc2VyaWZcclxuICBmb250LXNpemU6ICR0ZXh0LXNpemVcclxuICBsaW5lLWhlaWdodDogJGxpbmUtaGVpZ2h0XHJcbiAgY29sb3I6IGJsYWNrXHJcblxyXG4gIHdvcmQtc3BhY2luZzogbm9ybWFsXHJcbiAgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbFxyXG5cclxuICBjdXJzb3I6IGF1dG8gIWltcG9ydGFudFxyXG5cclxuXHJcbnByZVxyXG5jb2RlXHJcbnR0XHJcbmtiZFxyXG5zYW1wXHJcbiAgZm9udDogbm9ybWFsICR0ZXh0LXNpemUvJGxpbmUtaGVpZ2h0ICRtb25vc3BhY2UtZm9udFxyXG5cclxuYVxyXG4gIGxpbmstY29sb3VyKCRsaW5rLWNvbG91ciwgJGxpbmstdmlzaXRlZC1jb2xvdXIpXHJcblxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLyAtLS0gTGluayBjb2xvdXJzIC0tLVxyXG5cclxuLnRhZ2xpbmUgYVxyXG4uc2VhcmNoLXJlc3VsdC1tZXRhIGFcclxuLnRoaW5nIGEudGl0bGVcclxuLm1kIGFcclxuICBAZXh0ZW5kcyBhXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIC0tLSBUZXh0IHNpemVzIC0tLVxyXG5cclxuLm1kXHJcbiAgJlxyXG4gIC4tdGV4dFxyXG4gIHByZSA+IGNvZGVcclxuICBsaVxyXG4gIHBcclxuICB0ZXh0YXJlYVxyXG4gIHRoXHJcbiAgdGRcclxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdFxyXG5cclxuLnVzZXJ0ZXh0XHJcbi5tZC1jb250YWluZXJcclxuLm1kLWNvbnRhaW5lci1zbWFsbFxyXG4gIGZvbnQtc2l6ZTogaW5oZXJpdFxyXG5cclxuLmNvbW1lbnRpbmdBc1xyXG4gIGZvbnQtc2l6ZTogMC45ZW1cclxuXHJcbi50YWdsaW5lXHJcbi5mbGF0LWxpc3RcclxuLnNlYXJjaC1yZXN1bHQtbWV0YVxyXG4uUkVTRGlhbG9nU21hbGxcclxuLm1lbnVhcmVhXHJcbi5tb3JlY29tbWVudHMgYVxyXG4gIGZvbnQtc2l6ZTogMC44ZW1cclxuXHJcbi5kb21haW5cclxuICBmb250LXNpemU6IDAuN2VtXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIC0tLSBMYXlvdXQgLS0tXHJcblxyXG4uc2lkZVxyXG4gIG92ZXJmbG93LXg6IGhpZGRlblxyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZVxyXG4gIHotaW5kZXg6IDJcclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gLS0tIEl0ZW1zIC0tLVxyXG5cclxuLnRoaW5nXHJcbiAgcG9zaXRpb246IHJlbGF0aXZlXHJcblxyXG4gIC50aXRsZVxyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGRcclxuICAgIGZvbnQtc2l6ZTogaW5oZXJpdFxyXG4gICAgbGluZS1oZWlnaHQ6IDJlbVxyXG5cclxuLmVudHJ5XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlXHJcbiAgbWFyZ2luOiAwXHJcbiAgcGFkZGluZzogJGNvbW1lbnQtcGFkICgkY29tbWVudC1wYWQgKiAxLjUpICRjb21tZW50LXBhZCAzMHB4XHJcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZFxyXG4gIGJvcmRlci13aWR0aDogMnB4XHJcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudFxyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3hcclxuXHJcbiAgJi5SRVMta2V5TmF2LWFjdGl2ZUVsZW1lbnRcclxuICAgIC8vIHBhZGRpbmc6ICgkY29tbWVudC1wYWQgLSAycHgpICgkY29tbWVudC1wYWQgKiAxLjUgLSAycHgpICgkY29tbWVudC1wYWQgLSAycHgpIDI4cHhcclxuICAgIC8vIGJvcmRlcjogc29saWQgMnB4ICRmb2N1cy1pdGVtLWhpZ2hsaWdodC1jb2xvdXIgIWltcG9ydGFudFxyXG4gICAgYm9yZGVyLWNvbG9yOiAkZm9jdXMtaXRlbS1oaWdobGlnaHQtY29sb3VyXHJcbiAgICB6LWluZGV4OiAyXHJcblxyXG4gIC5mbGF0LWxpc3QgbGkgYVxyXG4gIGEuZ2l2ZS1nb2xkXHJcbiAgICBjb2xvcjogZGVzYXR1cmF0ZSgkbGluay1jb2xvdXIsIDUwJSkgIWltcG9ydGFudFxyXG4gICAgZm9udC1zaXplOiBpbmhlcml0XHJcblxyXG4gICAgJjphZnRlclxyXG4gICAgICBkaXNwbGF5OiBub25lXHJcblxyXG4ubWRcclxuICBjb2xvcjogaW5oZXJpdFxyXG4gIG1heC13aWR0aDogMTAwJVxyXG5cclxuICAubGlua2xpc3RpbmcgJlxyXG4gIC5jb21tZW50YXJlYSAmXHJcbiAgICBtYXJnaW46IDAuNWVtIDAuMjVlbSAwIDBcclxuXHJcbiAgYmxvY2txdW90ZVxyXG4gICAgbWFyZ2luOiAwLjVlbSAwXHJcbiAgICBwYWRkaW5nOiAwLjRlbSAwLjVlbSAwLjI1ZW1cclxuICAgIGJvcmRlci1sZWZ0OiBzb2xpZCAycHggIzQ0NFxyXG5cclxuICAgIGNvbG9yOiAkYmxvY2txdW90ZS1jb2xvdXJcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRibG9ja3F1b3RlLWJhY2tncm91bmQtY29sb3VyXHJcbiAgICBmb250LXN0eWxlOiBpdGFsaWNcclxuXHJcbi5leHBhbmQtaW5saW5lXHJcbiAgbWFyZ2luLWxlZnQ6IC0yMHB4XHJcblxyXG4ub3JnYW5pYy1saXN0aW5nXHJcbiAgLmxpbmsgLmVudHJ5XHJcbiAgICBib3JkZXItYm90dG9tOiBub25lXHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMFxyXG5cclxuICAuc3BvbnNvcmVkLXRhZ2xpbmVcclxuICAgIGRpc3BsYXk6IG5vbmVcclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gLS0tIFBvc3RzIC0tLVxyXG5cclxuLmxpbmtcclxuICAmLmxhc3QtY2xpY2tlZFxyXG4gICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnRcclxuXHJcbiAgLmVudHJ5XHJcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkbGluay1ib3JkZXItY29sb3VyXHJcblxyXG4gICAgJi5SRVMta2V5TmF2LWFjdGl2ZUVsZW1lbnRcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGZvY3VzLWl0ZW0taGlnaGxpZ2h0LWNvbG91clxyXG5cclxuICAudGh1bWJuYWlsXHJcbiAgLm1pZGNvbFxyXG4gICAgbWFyZ2luLXRvcDogNXB4ICFpbXBvcnRhbnRcclxuXHJcbiAgLnRhZ2xpbmVcclxuICAgIGZsb2F0OiBsZWZ0XHJcbiAgICBsaW5lLWhlaWdodDogMi40ZW1cclxuXHJcbiAgLmZsYWlyXHJcbiAgLmxpbmtmbGFpcmxhYmVsXHJcbiAgICBkaXNwbGF5OiBpbmxpbmVcclxuICAgIGZvbnQtc2l6ZTogMC42ZW1cclxuICAgIHBhZCgpXHJcblxyXG4gICAgJjplbXB0eVxyXG4gICAgICBkaXNwbGF5OiBub25lXHJcblxyXG4gIC5mbGF0LWxpc3RcclxuICAgIGZsb2F0OiByaWdodFxyXG4gICAgcGFkZGluZy1yaWdodDogMC41ZW1cclxuICAgIGxpbmUtaGVpZ2h0OiAyLjRlbVxyXG5cclxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiA4MDBweClcclxuICAgICAgZmxvYXQ6IG5vbmVcclxuICAgICAgcGFkZGluZy1yaWdodDogMHB4XHJcblxyXG4gICAgYS5jb21tZW50c1xyXG4gICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudFxyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnV0dG9uLWNvbG91ciAhaW1wb3J0YW50XHJcbiAgICAgIC8vIGJvcmRlcjogc29saWQgMnB4ICRidXR0b24tY29sb3VyXHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50XHJcbiAgICAgIHBhZGRpbmc6IDRweCA2cHggNHB4ICFpbXBvcnRhbnRcclxuXHJcbiAgICAgIC5uZXdDb21tZW50c1xyXG4gICAgICAgIGNvbG9yOiAjYmJiXHJcbiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljXHJcblxyXG4gICAgICAmOmhvdmVyXHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZGFya2VuKCRidXR0b24tY29sb3VyLCA1MCUpICFpbXBvcnRhbnRcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmVcclxuXHJcbiAgICAgICY6dmlzaXRlZFxyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRidXR0b24tdmlzaXRlZC1jb2xvdXIgIWltcG9ydGFudFxyXG5cclxuICAgICAgICAmOmhvdmVyXHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZW4oJGJ1dHRvbi12aXNpdGVkLWNvbG91ciwgNTAlKSAhaW1wb3J0YW50XHJcblxyXG5cclxuICAudXNlcnRleHQtYm9keVxyXG4gICAgcGFkZGluZy10b3A6IDAuOGVtXHJcblxyXG4gICAgLm1kXHJcbiAgICAgIGJvcmRlcjogMFxyXG4gICAgICBib3JkZXItcmFkaXVzOiBpbml0aWFsXHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXRcclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gLS0tIENvbW1lbnRzIC0tLVxyXG5cclxuLmNvbW1lbnRcclxuICAubWlkY29sXHJcbiAgICBhYnNvbHV0ZTogdG9wIDAuNWVtIGxlZnQgNy41cHhcclxuICAgIHdpZHRoOiAyNXB4XHJcbiAgICBmbG9hdDogbm9uZVxyXG4gICAgbWFyZ2luOiAwXHJcbiAgICB6LWluZGV4OiA0XHJcblxyXG4gICAgLmFycm93XHJcbiAgICAgIG1hcmdpbjogMCAwIDAuNWVtXHJcblxyXG4gICAgICAmOmJlZm9yZVxyXG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudFxyXG5cclxuICAucGFyZW50XHJcbiAgICBtYXJnaW4tbGVmdDogMzBweFxyXG5cclxuICAuZW50cnlcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXRcclxuXHJcbiAgLmtleU5hdkFubm90YXRpb25cclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudFxyXG5cclxuICAudGFnbGluZVxyXG4gICAgZGlzcGxheTogYmxvY2tcclxuICAgIGJvcmRlci1ib3R0b206IGRvdHRlZCAxcHggIzg4OFxyXG4gICAgcGFkZGluZy1ib3R0b206IDAuM2VtXHJcbiAgICBtYXJnaW4tYm90dG9tOiBAcGFkZGluZy1ib3R0b21cclxuXHJcbiAgICAuc2NvcmVcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGRcclxuXHJcbiAgLm1vcmVjaGlsZHJlbiAudGFnbGluZVxyXG4gICAgYm9yZGVyLWJvdHRvbTogMFxyXG5cclxuICAuZmxhdC1saXN0XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tXHJcblxyXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6IDExOTlweClcclxuICAgICAgbWFyZ2luOiAwLjVlbSAwIDBcclxuICAgICAgcGFkKClcclxuICAgICAgYm9yZGVyLXRvcDogZG90dGVkIDFweCAjODg4XHJcblxyXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweClcclxuICAgICAgYWJzb2x1dGU6IHRvcCAwLjI1ZW0gcmlnaHQgMC41ZW1cclxuICAgICAgZm9udC1zaXplOiAwLjdlbVxyXG4gICAgICBvcGFjaXR5OiAwLjFcclxuXHJcbiAgJi5SRVMta2V5TmF2LWFjdGl2ZVRoaW5nXHJcbiAgICAuZmxhdC1saXN0XHJcbiAgICAgIHotaW5kZXg6IDhcclxuXHJcbiAgICAmID4gLmVudHJ5IC5mbGF0LWxpc3Q6aG92ZXJcclxuICAgICAgb3BhY2l0eTogMVxyXG5cclxuICAudGFnbGluZTplbXB0eVxyXG4gIC5jaGlsZDplbXB0eVxyXG4gICAgZGlzcGxheTogbm9uZVxyXG5cclxuLnByb2ZpbGUtcGFnZSAubGlua2xpc3RpbmdcclxuICAuY29tbWVudFxyXG4gICAgbWFyZ2luLWJvdHRvbTogMC41ZW1cclxuICAgIHBvc2l0aW9uOiBzdGF0aWNcclxuXHJcbiAgICAmOm50aC1jaGlsZCg0bisxKVxyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRmNGY0XHJcblxyXG4ubmV3Q29tbWVudHNcclxuICBjb2xvcjogYmxhY2tcclxuXHJcbi5uZXctY29tbWVudFxyXG4gIC51c2VydGV4dC1ib2R5XHJcbiAgICBib3JkZXI6IG5vbmVcclxuXHJcbiAgICAubWRcclxuICAgICAgcGFkZGluZyA0cHggMCAwXHJcblxyXG4gIC51c2VydGV4dC1ib2R5XHJcbiAgJi5SRVMta2V5TmF2LWFjdGl2ZVRoaW5nIC51c2VydGV4dC1ib2R5Lm1kLWNvbnRhaW5lclxyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG5ldy1jb21tZW50LWNvbG91ciAhaW1wb3J0YW50XHJcblxyXG4uZWRpdGVkLXRpbWVzdGFtcFxyXG4gIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50XHJcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnRcclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuLy8gLS0tIEVkaXRvci9wcmV2aWV3IGFyZWEgLS0tXHJcblxyXG4udXNlcnRleHQtZWRpdFxyXG4gIHdpZHRoOiA4MDBweCAhaW1wb3J0YW50XHJcbiAgbWF4LXdpZHRoOiA5MCUgIWltcG9ydGFudFxyXG4gIG1hcmdpbjogMC43NWVtIDAgMCAwLjVlbVxyXG4gIGZvbnQtc2l6ZTogaW5oZXJpdFxyXG5cclxuICB0ZXh0YXJlYVtuYW1lID0gdGV4dF1cclxuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnRcclxuICAgIG1pbi1oZWlnaHQ6IDhlbVxyXG4gICAgcGFkZGluZzogJHRleHRhcmVhLXBhZCAoJHRleHRhcmVhLXBhZCAqIDEuNSlcclxuICAgIGJvcmRlcjogc29saWQgMXB4ICM4ODhcclxuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0XHJcbiAgICBmb250LXNpemU6IDAuOWVtXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vIC0tLSBSRVMgU3R5bGluZyAtLS1cclxuXHJcbiNzci1oZWFkZXItYXJlYVxyXG4gIGhlaWdodDogYXV0byAhaW1wb3J0YW50XHJcbiAgYVxyXG4gICAgZm9udC1zaXplOiAxMHB0ICFpbXBvcnRhbnRcclxuXHJcbiNSRVNTaG9ydGN1dHNWaWV3cG9ydFxyXG4gIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudFxyXG4gIG92ZXJmbG93LXk6IHZpc2libGUgIWltcG9ydGFudFxyXG5cclxuI2hlYWRlclxyXG4gIG1pbi1oZWlnaHQ6IDgwcHhcclxuXHJcbiNoZWFkZXItYm90dG9tLWxlZnRcclxuICBhYnNvbHV0ZTogYm90dG9tIDFweCBsZWZ0XHJcblxyXG4jaGVhZGVyLWJvdHRvbS1yaWdodFxyXG4gIG1hcmdpbi10b3A6IDNweFxyXG5cclxuLnJlcy1jb21tZW50Qm94ZXNcclxuICAuY29tbWVudFxyXG4gICAgcGFkZGluZyAwICFpbXBvcnRhbnRcclxuXHJcbi5SRVNEaWFsb2dTbWFsbC5saXZlUHJldmlld1xyXG4gIHBhZCgpXHJcblxyXG4gICYgPiBoM1xyXG4gICAgYWJzb2x1dGU6IGJvdHRvbSBsZWZ0XHJcbiAgICByaWdodDogMFxyXG4gICAgbWFyZ2luOiAxMHB4IDAgMFxyXG4gICAgcGFkZGluZzogMC4yNWVtIDAuNWVtIDAgMC41ZW1cclxuICAgIGJvcmRlci1ib3R0b206IG5vbmVcclxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMTk5LCAxOTksIDE5OSlcclxuXHJcbiAgJiA+IC5tZFxyXG4gICAgcGFkZGluZy1ib3R0b206IDM2cHhcclxuXHJcbiAgLmdlYXJJY29uXHJcbiAgICBmbG9hdDogbGVmdFxyXG4gICAgbWFyZ2luOiAtMC4xNWVtIDAuNWVtIDAgMFxyXG5cclxuLlJFUy1rZXlOYXYtYWN0aXZlRWxlbWVudFxyXG4gICZcclxuICAmIC5tZC1jb250YWluZXJcclxuICAgIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQgIWltcG9ydGFudFxyXG4iLCJ1c2UoJy4uL25vZGVzL3ZlbmRvci1oZWxwZXJzLmpzJylcbkBpbXBvcnQgJ2NvbmZpZydcblxuLypcbiAqIEFsaWFzIFwibm93cmFwXCIgYXMgXCJuby13cmFwXCIuXG4gKi9cblxubm8td3JhcCA9IHVucXVvdGUoJ25vd3JhcCcpXG5cbi8qXG4gKiBIZWxwZXIgdG8gZmluZCBvdXQgaWYgYSBnaXZlbiB2YWx1ZSBpcyBhIHdpZHRoXG4gKi9cblxuaXMtd2lkdGgodmFsKVxuICBpZiBhdXRvID09IHZhbFxuICAgIHJldHVybiB0cnVlXG4gIGVsc2UgaWYgdmFsICYmICd1bml0JyA9PSB0eXBlKHZhbClcbiAgICAvLyBTdHlsdXMgZG9lcyBub3Qgc2hvcnQgY2lyY3VpdCBzbyB3ZSBuZWVkIHRvIHBlcmZvcm0gdGhpcyBhcyBhIGRpc3RpbmN0XG4gICAgLy8gb3BlcmF0aW9uIHRvIHByZXZlbnQgZXJyb3JzXG4gICAgcmV0dXJuICcnICE9IHVuaXQodmFsKVxuICByZXR1cm4gZmFsc2VcblxuLypcbiAqIFZlbmRvciBzdXBwb3J0IGZvciB0aGUgZ2l2ZW4gcHJvcCAvIGFyZ3VtZW50cywgb3B0aW9uYWxseSBzcGVjaWZ5aW5nIHRoZVxuICogb25seSBwcmVmaXhlcyB0byB1dGlsaXplLCBvciB0aG9zZSB3aGljaCBzaG91bGQgYmUgaWdub3JlZC5cbiAqL1xuXG52ZW5kb3IocHJvcCwgYXJncywgb25seSA9IG51bGwsIGlnbm9yZSA9IG51bGwsIHZlbmRvci1wcm9wZXJ0eSA9IHRydWUpXG4gIG5lZWRfbm9ybWFsaXplID0gIXZlbmRvci1wcm9wZXJ0eSBvciBwcm9wIGluICgndHJhbnNpdGlvbicgJ3RyYW5zaXRpb24tcHJvcGVydHknICdib3JkZXItaW1hZ2UnICdib3JkZXItaW1hZ2Utc2xpY2UnKVxuICBmb3IgcHJlZml4IGluIHZlbmRvci1wcmVmaXhlc1xuICAgIHVubGVzcyAob25seSBhbmQgIShwcmVmaXggaW4gb25seSkpIG9yIChpZ25vcmUgYW5kIHByZWZpeCBpbiBpZ25vcmUpXG4gICAgICBpZiBvZmZpY2lhbCA9PSBwcmVmaXhcbiAgICAgICAgaWYgbmVlZF9ub3JtYWxpemVcbiAgICAgICAgICB7cHJvcH06IG5vcm1hbGl6ZShwcm9wLCgnJXMnICUgYXJncykpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7cHJvcH06IGFyZ3NcbiAgICAgIGVsc2VcbiAgICAgICAgbmV3cHJvcCA9IHByb3BcbiAgICAgICAgbmV3cHJvcCA9ICctJyArIHByZWZpeCArICctJyArIHByb3AgaWYgdmVuZG9yLXByb3BlcnR5XG5cbiAgICAgICAgaWYgbmVlZF9ub3JtYWxpemVcbiAgICAgICAgICB7bmV3cHJvcH06IG5vcm1hbGl6ZShwcm9wLCgnJXMnICUgYXJncykscHJlZml4KVxuICAgICAgICBlbHNlXG4gICAgICAgICAge25ld3Byb3B9OiBhcmdzXG4vKlxuICogVmVuZG9yaXplIHRoZSBnaXZlbiB2YWx1ZS5cbiAqL1xuXG52ZW5kb3ItdmFsdWUoYXJnLCBvbmx5ID0gbnVsbCwgaWdub3JlID0gbnVsbClcbiAgcHJvcCA9IGN1cnJlbnQtcHJvcGVydHlbMF1cbiAgZm9yIHByZWZpeCBpbiB2ZW5kb3ItcHJlZml4ZXNcbiAgICB1bmxlc3MgKG9ubHkgYW5kICEocHJlZml4IGluIG9ubHkpKSBvciAoaWdub3JlIGFuZCBwcmVmaXggaW4gaWdub3JlKSBvciBvZmZpY2lhbCA9PSBwcmVmaXhcbiAgICAgIGFkZC1wcm9wZXJ0eShwcm9wLCAnLSVzLSVzJyAlIChwcmVmaXggYXJnKSlcbiAgYXJnXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtc2hhZG93XCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtc2hhZG93KClcbiAgdmVuZG9yKCdib3gtc2hhZG93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ1c2VyLXNlbGVjdFwiIHN1cHBvcnQuXG4gKi9cblxudXNlci1zZWxlY3QoKVxuICB2ZW5kb3IoJ3VzZXItc2VsZWN0JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLWNvdW50XCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tY291bnQoKVxuICB2ZW5kb3IoJ2NvbHVtbi1jb3VudCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1nYXBcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1nYXAoKVxuICB2ZW5kb3IoJ2NvbHVtbi1nYXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZVwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGUtY29sb3JcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlLWNvbG9yKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS1jb2xvcicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1ydWxlLXdpZHRoXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tcnVsZS13aWR0aCgpXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtd2lkdGgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZS1zdHlsZVwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUtc3R5bGUoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlLXN0eWxlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXdpZHRoXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4td2lkdGgoKVxuICB2ZW5kb3IoJ2NvbHVtbi13aWR0aCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1zcGFuXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tc3BhbigpXG4gIHZlbmRvcignY29sdW1uLXNwYW4nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1maWxsXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tZmlsbCgpXG4gIHZlbmRvcignY29sdW1uLWZpbGwnLCBhcmd1bWVudHMsIG9ubHk6IG1veilcblxuLypcbiAqIExlZ2FjeSBzeW50YXggc3VwcG9ydCBmb3IgYmFja2dyb3VuZC1jbGlwIGFuZCBiYWNrZ3JvdW5kLW9yaWdpblxuICovXG5cbmxlZ2FjeS1iZy12YWx1ZXMocHJvcGVydHksIGFyZ3MpXG4gIGxlZ2FjeV9hcmdzID0gKClcbiAgaW1wb3J0YW5jZSA9IHVucXVvdGUoJycpXG4gIGZvciBzdWJhcmdzIGluIGFyZ3NcbiAgICBmb3IgYXJnIGluIHN1YmFyZ3NcbiAgICAgIGlmIGFyZyBpbiAoYm9yZGVyLWJveCBwYWRkaW5nLWJveCBjb250ZW50LWJveClcbiAgICAgICAgYXJnID0gdW5xdW90ZSgnYm9yZGVyJykgIGlmIGFyZyA9PSBib3JkZXItYm94XG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ3BhZGRpbmcnKSBpZiBhcmcgPT0gcGFkZGluZy1ib3hcbiAgICAgICAgYXJnID0gdW5xdW90ZSgnY29udGVudCcpIGlmIGFyZyA9PSBjb250ZW50LWJveFxuICAgICAgaWYgYXJnICE9ICchaW1wb3J0YW50J1xuICAgICAgICBwdXNoKGxlZ2FjeV9hcmdzLGFyZylcbiAgICAgIGVsc2VcbiAgICAgICAgaW1wb3J0YW5jZSA9ICFpbXBvcnRhbnRcbiAgdmVuZG9yKHByb3BlcnR5LCB1bnF1b3RlKGpvaW4oJywgJyxsZWdhY3lfYXJncykpIGltcG9ydGFuY2UsIG9ubHk6IG1veiB3ZWJraXQpXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZ3JvdW5kLWNsaXBcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtY2xpcCgpXG4gIGlmIGFyZ3VtZW50c1swXSA9PSB0ZXh0XG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kLWNsaXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdClcbiAgZWxzZVxuICAgIGxlZ2FjeS1iZy12YWx1ZXMoJ2JhY2tncm91bmQtY2xpcCcsIGFyZ3VtZW50cylcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IGFyZ3VtZW50c1xuXG4vKlxuICogVmVuZG9yIFwiYmFja2dyb3VuZC1vcmlnaW5cIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtb3JpZ2luKClcbiAgbGVnYWN5LWJnLXZhbHVlcygnYmFja2dyb3VuZC1vcmlnaW4nLCBhcmd1bWVudHMpXG4gIGJhY2tncm91bmQtb3JpZ2luOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJhY2tncm91bmQtc2l6ZVwiIHN1cHBvcnQuXG4gKi9cblxuYmFja2dyb3VuZC1zaXplKClcbiAgdmVuZG9yKCdiYWNrZ3JvdW5kLXNpemUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2Zvcm1cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zZm9ybSgpXG4gIHZlbmRvcigndHJhbnNmb3JtJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNmb3JtLW9yaWdpblwiIHN1cHBvcnQuXG4gKi9cbnRyYW5zZm9ybS1vcmlnaW4oKVxuICAgIHZlbmRvcigndHJhbnNmb3JtLW9yaWdpbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zZm9ybS1zdHlsZVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNmb3JtLXN0eWxlKClcbiAgdmVuZG9yKCd0cmFuc2Zvcm0tc3R5bGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3JkZXItaW1hZ2VcIiBzdXBwb3J0LlxuICovXG5cbmJvcmRlci1pbWFnZSgpXG4gIHZlbmRvcignYm9yZGVyLWltYWdlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG8gb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2l0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi1wcm9wZXJ0eVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi1wcm9wZXJ0eSgpXG4gIHZlbmRvcigndHJhbnNpdGlvbi1wcm9wZXJ0eScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tZHVyYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tZHVyYXRpb24oKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tZHVyYXRpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi1kZWxheVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi1kZWxheSgpXG4gIHZlbmRvcigndHJhbnNpdGlvbi1kZWxheScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImJhY2tmYWNlLXZpc2liaWxpdHlcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tmYWNlLXZpc2liaWxpdHkoKVxuICB2ZW5kb3IoJ2JhY2tmYWNlLXZpc2liaWxpdHknLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJwZXJzcGVjdGl2ZVwiIHN1cHBvcnQuXG4gKi9cblxucGVyc3BlY3RpdmUoKVxuICBpZiBtaXhpblxuICAgIHZlbmRvcigncGVyc3BlY3RpdmUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG4gIGVsc2VcbiAgICAncGVyc3BlY3RpdmUoJXMpJyAlIGFyZ3VtZW50c1xuXG4vKlxuICogVmVuZG9yIFwicGVyc3BlY3RpdmUtb3JpZ2luXCIgc3VwcG9ydC5cbiAqL1xuXG5wZXJzcGVjdGl2ZS1vcmlnaW4oKVxuICB2ZW5kb3IoJ3BlcnNwZWN0aXZlLW9yaWdpbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIE9wYWNpdHkgd2l0aCBjb25kaXRpb25hbCBJRSBzdXBwb3J0LlxuICovXG5cbm9wYWNpdHkobiwgYXJncy4uLilcbiAgb3BhY2l0eTogbiBhcmdzXG4gIGlmIHN1cHBvcnQtZm9yLWllXG4gICAgaWYgbiA9PSBpbmhlcml0IG9yIG4gPT0gaW5pdGlhbFxuICAgICAgLW1zLWZpbHRlcjogbiBhcmdzXG4gICAgICBmaWx0ZXI6IG4gYXJnc1xuICAgIGVsc2VcbiAgICAgIHZhbCA9IHJvdW5kKG4gKiAxMDApXG4gICAgICBpZiB2YWwgPT0gMTAwXG4gICAgICAgIC1tcy1maWx0ZXI6IG5vbmUgYXJnc1xuICAgICAgICBmaWx0ZXI6IG5vbmUgYXJnc1xuICAgICAgZWxzZVxuICAgICAgICAtbXMtZmlsdGVyOiAnXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0lcylcIicgJSB2YWwgYXJnc1xuICAgICAgICBmaWx0ZXI6ICdhbHBoYShvcGFjaXR5PSVzKScgJSB2YWwgYXJnc1xuXG4vKlxuICogVmVuZG9yIFwidGV4dC1zaXplLWFkanVzdFwiXG4gKi9cblxudGV4dC1zaXplLWFkanVzdCgpXG4gIHZlbmRvcigndGV4dC1zaXplLWFkanVzdCcsIGFyZ3VtZW50cylcblxuLypcbiAqIEFsaWFzIHRoZSBcIndoaXRlLXNwYWNlXCIgcHJvcGVydHkuXG4gKi9cblxud2hpdGVzcGFjZSgpXG4gIHdoaXRlLXNwYWNlOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJveC1zaXppbmdcIiBzdXBwb3J0LlxuICovXG5cbmJveC1zaXppbmcoKVxuICB2ZW5kb3IoJ2JveC1zaXppbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtb3JpZW50XCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtb3JpZW50KClcbiAgdmVuZG9yKCdib3gtb3JpZW50JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LWZsZXgtZ3JvdXBcIiBzdXBwb3J0LlxuICovXG5cbmJveC1mbGV4LWdyb3VwKClcbiAgdmVuZG9yKCdib3gtZmxleC1ncm91cCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1vcmRpbmFsLWdyb3VwXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtb3JkaW5hbC1ncm91cCgpXG4gIHZlbmRvcignYm94LW9yZGluYWwtZ3JvdXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cblxuLypcbiAqIFZlbmRvciBcImJveC1hbGlnblwiIHN1cHBvcnQuXG4gKi9cblxuYm94LWFsaWduKClcbiAgdmVuZG9yKCdib3gtYWxpZ24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtcGFja1wiIHN1cHBvcnQuXG4gKi9cblxuYm94LXBhY2soKVxuICB2ZW5kb3IoJ2JveC1wYWNrJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LWRpcmVjdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYm94LWRpcmVjdGlvbigpXG4gIHZlbmRvcignYm94LWRpcmVjdGlvbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uKClcbiAgdmVuZG9yKCdhbmltYXRpb24nLCBhcmd1bWVudHMpXG5cblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1uYW1lXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tbmFtZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLW5hbWUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZHVyYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1kdXJhdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uLWR1cmF0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWRlbGF5XCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZGVsYXkoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kZWxheScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1kaXJlY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1kaXJlY3Rpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kaXJlY3Rpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50XCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24taXRlcmF0aW9uLWNvdW50KClcbiAgdmVuZG9yKCdhbmltYXRpb24taXRlcmF0aW9uLWNvdW50JywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1wbGF5LXN0YXRlXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tcGxheS1zdGF0ZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLXBsYXktc3RhdGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZmlsbC1tb2RlXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZmlsbC1tb2RlKClcbiAgdmVuZG9yKCdhbmltYXRpb24tZmlsbC1tb2RlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiaHlwaGVuc1wiIHN1cHBvcnQuXG4gKi9cblxuaHlwaGVucygpXG4gIHZlbmRvcignaHlwaGVucycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImFwcGVhcmFuY2VcIiBzdXBwb3J0LlxuICovXG5cbmFwcGVhcmFuY2UoKVxuICB2ZW5kb3IoJ2FwcGVhcmFuY2UnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0YWItc2l6ZVwiIHN1cHBvcnQuXG4gKi9cblxudGFiLXNpemUoKVxuICB2ZW5kb3IoJ3RhYi1zaXplJywgYXJndW1lbnRzLCBvbmx5OiBtb3ogbyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcIm92ZXJmbG93LXNjcm9sbGluZ1wiIHN1cHBvcnQuXG4gKi9cblxub3ZlcmZsb3ctc2Nyb2xsaW5nKClcbiAgdmVuZG9yKCdvdmVyZmxvdy1zY3JvbGxpbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcInRleHQtb3ZlcmZsb3dcIiBzdXBwb3J0LCAsIC1vLSBmb3Igb3BlcmEgOS4qIC0gMTAuKlxuICovXG5cbnRleHQtb3ZlcmZsb3coKVxuICB2ZW5kb3IoJ3RleHQtb3ZlcmZsb3cnLCBhcmd1bWVudHMsIG9ubHk6IG9mZmljaWFsIG8pXG5cbi8qXG4gKiBWZW5kb3IgXCJ0ZXh0LXNpemUtYWRqdXN0XCIgc3VwcG9ydC5cbiAqL1xudGV4dC1zaXplLWFkanVzdCgpXG4gIHZlbmRvcigndGV4dC1zaXplLWFkanVzdCcsIGFyZ3VtZW50cywgb25seTogb2ZmaWNpYWwgd2Via2l0IG1zKVxuXG4vKlxuICogVmVuZG9yIFwiZm9udC1zbW9vdGhpbmdcIiBzdXBwb3J0LCB3ZWJraXQgb25seS5cbiAqL1xuZm9udC1zbW9vdGhpbmcoKVxuICB2ZW5kb3IoJ2ZvbnQtc21vb3RoaW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQpXG5cbi8qXG4gKiBIZWxwZXIgZm9yIGJvcmRlci1yYWRpdXMoKS5cbiAqL1xuXG4tYXBwbHktYm9yZGVyLXJhZGl1cyhwb3MsIGltcG9ydGFuY2UpXG4gIGlmIGxlbmd0aChwb3MpID09IDNcbiAgICAvLyBib3JkZXItcmFkaXVzOiA8dG9wIHwgYnV0dG9tPiA8bGVmdCB8IHJpZ2h0PiA8bj5cbiAgICB5ID0gcG9zWzBdXG4gICAgeCA9IHBvc1sxXVxuICAgIC8vIFdlIGRvbid0IHVzZSBtb3ogZm9yIHNpbXBsZSBib2Rlci1yYWRpdXMgYW55bW9yZVxuICAgIC8vIHZlbmRvcignYm9yZGVyLXJhZGl1cy0lcyVzJyAlIHBvcywgcG9zWzJdLCBvbmx5OiBtb3opXG4gICAgdmVuZG9yKCdib3JkZXItJXMtJXMtcmFkaXVzJyAlIHBvcywgcG9zWzJdIGltcG9ydGFuY2UsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcbiAgZWxzZSBpZiBwb3NbMF0gaW4gKHRvcCBib3R0b20pXG4gICAgLy8gYm9yZGVyLXJhZGl1czogPHRvcCB8IGJvdHRvbT4gPG4+XG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zWzBdIGxlZnQgcG9zWzFdLCBpbXBvcnRhbmNlKVxuICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvc1swXSByaWdodCBwb3NbMV0sIGltcG9ydGFuY2UpXG4gIGVsc2UgaWYgcG9zWzBdIGluIChsZWZ0IHJpZ2h0KVxuICAgIC8vIGJvcmRlci1yYWRpdXM6IDxsZWZ0IHwgcmlnaHQ+IDxuPlxuICAgIHVuc2hpZnQocG9zLCB0b3ApO1xuICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcbiAgICBwb3NbMF0gPSBib3R0b21cbiAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3MsIGltcG9ydGFuY2UpXG5cbi8qXG4gKiBib3JkZXItcmFkaXVzIHN1cHBvcnRpbmcgdmVuZG9yIHByZWZpeGVzIGFuZFxuICogYXVnbWVudGVkIGJlaGF2aW9yLlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgIGJvcmRlci1yYWRpdXM6IDJweCA1cHhcbiAqICAgIGJvcmRlci1yYWRpdXM6IHRvcCA1cHggYm90dG9tIDEwcHhcbiAqICAgIGJvcmRlci1yYWRpdXM6IGxlZnQgNXB4XG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgbGVmdCA1cHhcbiAqICAgIGJvcmRlci1yYWRpdXM6IHRvcCBsZWZ0IDEwcHggYm90dG9tIHJpZ2h0IDVweFxuICogICAgYm9yZGVyLXJhZGl1czogdG9wIGxlZnQgMTBweCwgYm90dG9tIHJpZ2h0IDVweFxuICpcbiAqL1xuXG5ib3JkZXItcmFkaXVzKClcbiAgcG9zID0gKClcbiAgYXVnbWVudGVkID0gZmFsc2VcbiAgaW1wb3J0YW5jZSA9IGFyZ3VtZW50c1tsZW5ndGgoYXJndW1lbnRzKSAtIDFdID09ICFpbXBvcnRhbnQgPyAhaW1wb3J0YW50IDogdW5xdW90ZSgnJylcblxuICBmb3IgYXJncyBpbiBhcmd1bWVudHNcbiAgICBmb3IgYXJnIGluIGFyZ3NcbiAgICAgIGlmIGFyZyBpcyBhICdpZGVudCdcbiAgICAgICAgYXBwZW5kKHBvcywgYXJnKVxuICAgICAgICBhdWdtZW50ZWQgPSB0cnVlXG4gICAgICBlbHNlXG4gICAgICAgIGFwcGVuZChwb3MsIGFyZylcbiAgICAgICAgaWYgYXVnbWVudGVkXG4gICAgICAgICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zLCBpbXBvcnRhbmNlKVxuICAgICAgICAgIHBvcyA9ICgpXG4gIHZlbmRvcignYm9yZGVyLXJhZGl1cycsIHBvcywgb25seTogd2Via2l0IG9mZmljaWFsKSB1bmxlc3MgYXVnbWVudGVkXG5cbi8qKlxuICogVmVuZG9yIGlucHV0LXBsYWNlaG9sZGVyL3BsYWNlaG9sZGVyIHN1cHBvcnQuXG4gKlxuICogRXhhbXBsZXM6XG4gKiAgICAvLyBEZWZhdWx0IHN5bnRheFxuICogICAgYm9keVxuICogICAgICBwbGFjZWhvbGRlcihjb2xvciAjMzMzLCBmb250LXdlaWdodCBub3JtYWwpXG4gKlxuICogICAgLy8gVGhlIGNvbW1hIGlzIGltcG9ydGFudFxuICogICAgLnBsYWNlaG9sZGVyLXJlZFxuICogICAgICBwbGFjZWhvbGRlcihjb2xvciByZWQsKVxuICpcbiAqICAgIC8vIFdlIGNhbiBwYXNzIGEgZnVuY3Rpb25cbiAqICAgIGdyZWVuLXBsYWNlaG9sZGVyKClcbiAqICAgICAgY29sb3IgZ3JlZW5cbiAqICAgIC5wbGFjZWhvbGRlci1ncmVlblxuICogICAgICBwbGFjZWhvbGRlcihncmVlbi1wbGFjZWhvbGRlcilcbiAqXG4gKiAgICAvLyBXZSBjYW4gcGFzcyBhIGhhc2hcbiAqICAgIHRleHRhcmVhXG4gKiAgICAgIHBsYWNlaG9sZGVyKChmb250LXN0eWxlIGl0YWxpYykgKGZvbnQtd2VpZ2h0IGJvbGQpIChwYWRkaW5nICc0cHggMTBweCcpKVxuICovXG5wbGFjZWhvbGRlcigpXG4gIGZvciB2IGluICc6LXdlYmtpdC1pbnB1dCcgJy1tb3onICc6LW1veicgJy1tcy1pbnB1dCdcbiAgICAmOnt2fS1wbGFjZWhvbGRlclxuICAgICAgZm9yIHBhaXIgaW4gYXJndW1lbnRzXG4gICAgICAgIGlmIHR5cGVvZihwYWlyKSA9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgcGFpcigpXG4gICAgICAgIGVsc2UgaWYgcGFpciBpcyBub3QgbnVsbCAmJiBwYWlyWzBdIGlzIG5vdCBudWxsXG4gICAgICAgICAge3BhaXJbMF19OiB0eXBlKHBhaXJbMV0pID09ICdzdHJpbmcnID8gcyhwYWlyWzFdKSA6IHBhaXJbMV1cbmlucHV0LXBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJcblxuLypcbiAqIFZlbmRvciBiYWNrZ3JvdW5kIHN1cHBvcnQgKGdyYWRpZW50cykuXG4gKi9cblxuYmFja2dyb3VuZCgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgYmFja2dyb3VuZCBhcmd1bWVudHNcblxuYmFja2dyb3VuZC1pbWFnZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgYmFja2dyb3VuZC1pbWFnZSBhcmd1bWVudHNcblxuY3Vyc29yKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2N1cnNvcicsIGFyZ3VtZW50cywgdmVuZG9yLXByb3BlcnR5OiBmYWxzZSlcbiAgZWxzZVxuICAgIGN1cnNvciBhcmd1bWVudHNcblxubGlzdC1zdHlsZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdsaXN0LXN0eWxlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgbGlzdC1zdHlsZSBhcmd1bWVudHNcblxubGlzdC1zdHlsZS1pbWFnZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdsaXN0LXN0eWxlLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgbGlzdC1zdHlsZS1pbWFnZSBhcmd1bWVudHNcbiIsIlxyXG4vLyBAcmVxdWlyZSAnLi9wb3NpdGlvbnMnXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4kZml4ZWQtd2lkdGhcclxuICB3aWR0aDogYXV0b1xyXG4gIG1heC13aWR0aDogMTAwJVxyXG4gIGZsb2F0OiBub25lXHJcblxyXG5mbGV4LXNpZGViYXIoJHdpZHRoID0gMjAlKVxyXG4gIEBleHRlbmRzICRmaXhlZC13aWR0aFxyXG4gIG9yZGVyOiAkb3JkZXIgKz0gMVxyXG4gIGZsZXg6IDAgMCAkd2lkdGhcclxuXHJcbmZsZXgtY29udGVudCgpXHJcbiAgQGV4dGVuZHMgJGZpeGVkLXdpZHRoXHJcbiAgb3JkZXI6ICRvcmRlciArPSAxXHJcbiAgZmxleDogMSAxIGF1dG9cclxuXHJcbmZsZXgtbGVmdCgkd2lkdGggPSAyMCUpXHJcbiAgJiA+IDpmaXJzdC1jaGlsZFxyXG4gICAgZmxleC1zaWRlYmFyKCR3aWR0aClcclxuICAmID4gKlxyXG4gICAgZmxleC1jb250ZW50KClcclxuXHJcbmZsZXgtcmlnaHQoJHdpZHRoID0gMjAlKVxyXG4gICYgPiAqXHJcbiAgICBmbGV4LWNvbnRlbnQoKVxyXG4gICYgPiA6bGFzdC1jaGlsZFxyXG4gICAgZmxleC1zaWRlYmFyKCR3aWR0aClcclxuXHJcbmZsZXgtc2lkZWJhci1sYXlvdXQoJHNpZGUgPSBsZWZ0LCAkd2lkdGggPSAyMCUpXHJcbiAgJG9yZGVyID0gMFxyXG5cclxuICBkaXNwbGF5OiBmbGV4XHJcbiAgZmxleC1mbG93OiByb3cgbm93cmFwXHJcblxyXG4gIGZsZXgtbGVmdCgkd2lkdGgpIGlmICRzaWRlIGlzIGxlZnRcclxuICBmbGV4LXJpZ2h0KCR3aWR0aCkgaWYgJHNpZGUgaXMgcmlnaHRcclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbmRvY2tlZCgkc2lkZSA9IGJvdHRvbSwgJHNpemUgPSAyNSUpXHJcbiAgJGF4aXMgPSBheGlzKCRzaWRlKVxyXG4gICRvdGhlci1heGlzID0gb3Bwb3NpdGUtYXhpcygkc2lkZSlcclxuXHJcbiAgZGl2LmRvY2suZG9jay17JHNpZGV9XHJcbiAgICBzaWRlLXBvc2l0aW9uZWQoJHNpZGUsICRzaXplKVxyXG5cclxuICAgIHtibG9ja31cclxuIiwiXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiRfc2NhbGVzID0ge1xyXG4gIHBhZGRpbmc6ICAgIDAuNWVtLFxyXG4gIG1hcmdpbjogICAgIDFlbSxcclxuICBzaGFkb3c6ICAgICB7XHJcbiAgICBzaXplOiAgICAgICAwLjVlbSxcclxuICAgIG9wYWNpdHk6ICAgIDAuNzVcclxuICB9XHJcbn1cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbi8qXHJcbmJvZHlcclxuICBwYWQgMmVtXHJcbmRpdlxyXG4gIHBhZCAxZW0sIHBhZGRpbmcgbWFyZ2luXHJcbiovXHJcblxyXG5wYWQoJHR5cGVzID0gcGFkZGluZywgJHBhZCA9ICRfc2NhbGVzLnBhZGRpbmcsICRtZ24gPSAkX3NjYWxlcy5tYXJnaW4pXHJcbiAgcGFkZGluZyAoJHBhZCAvIDIpICRwYWQgaWYgcGFkZGluZyBpbiAkdHlwZXNcclxuICBtYXJnaW4gKCRtZ24gLyAyKSAkbWduIGlmIG1hcmdpbiBpbiAkdHlwZXNcclxuXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5zaGFkb3coJHNpemUgPSAkX3NjYWxlcy5zaGFkb3cuc2l6ZSwgJG9wYWNpdHkgPSAkX3NjYWxlcy5zaGFkb3cuc2l6ZSlcclxuICBib3gtc2hhZG93ICgkc2l6ZSAqIDAuNSkgJHNpemUgKCRzaXplICogMS41KSAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgJG9wYWNpdHkpXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbi8qXHJcbmFcclxuICBsaW5rLWNvbG91cigjMDVmLCAjYzYwKVxyXG5iXHJcbiAgbGluay1jb2xvdXIoIzA1ZiwgJHVuZGVybGluZTogbm9uZSlcclxuY1xyXG4gIGxpbmstY29sb3VyKCMwNWYsICNjNjAsIGJvdGgpXHJcbiovXHJcblxyXG5saW5rLWNvbG91cigkY29sb3VyLCAkdmlzaXRlZCA9ICRjb2xvdXIsICR1bmRlcmxpbmUgPSBob3ZlcilcclxuICBjb2xvcjogJGNvbG91clxyXG5cclxuICAkb2ZmID0gb2ZmIG5vbmUgaG92ZXJcclxuXHJcbiAgaWYgJHVuZGVybGluZSBpbiAkb2ZmXHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmVcclxuICBlbHNlXHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZVxyXG5cclxuICAmOnZpc2l0ZWRcclxuICAgIGNvbG9yOiAkdmlzaXRlZFxyXG5cclxuICAmOmhvdmVyXHJcbiAgICAkb24gPSBvbiBib3RoIGhvdmVyXHJcblxyXG4gICAgaWYgJHVuZGVybGluZSBpbiAkb25cclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmVcclxuICAgIGVsc2VcclxuICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lXHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5iYXNlLWNvcmUoJHRleHQtZm9udClcclxuICBAcmVxdWlyZSB1cmwod2ViLWZvbnQoJHRleHQtZm9udCkpXHJcblxyXG4gIGJvZHlcclxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkXHJcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlXHJcbiAgICAtd2Via2l0LWZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vbmVcclxuICAgIGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vbmVcclxuICAgIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHlcclxuXHJcbiAgICBmb250OiBub3JtYWwgJHRleHQtc2l6ZS8kbGluZS1oZWlnaHQgJHRleHQtZm9udFxyXG5cclxuICAgIGNvbG9yOiAkdGV4dC1jb2xvdXJcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG91clxyXG5cclxuICAgIHdvcmQtc3BhY2luZzogbm9ybWFsXHJcbiAgICBsZXR0ZXItc3BhY2luZzogbm9ybWFsXHJcblxyXG4gICAgY3Vyc29yOiBhdXRvICFpbXBvcnRhbnRcclxuXHJcbiAgcHJlXHJcbiAgY29kZVxyXG4gIHR0XHJcbiAga2JkXHJcbiAgc2FtcFxyXG4gICAgZm9udDogbm9ybWFsICR0ZXh0LXNpemUvJGxpbmUtaGVpZ2h0ICRtb25vc3BhY2UtZm9udFxyXG5cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbmJhc2UtbGlua3MoKVxyXG4gIGFcclxuICAgIGxpbmstY29sb3VyKCRsaW5rLWNvbG91ciwgJGxpbmstdmlzaXRlZC1jb2xvdXIpXHJcblxyXG5cclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuYmFzZS1wcmUoKVxyXG4gIHByZVxyXG4gIHRleHRhcmVhXHJcbiAgICBtYXJnaW46IDFlbSAwIDFlbSAyZW1cclxuICAgIHBhZGRpbmc6IDAuMjVlbSAwLjVlbVxyXG4gICAgbGluZS1oZWlnaHQ6IDEuNDRlbVxyXG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwXHJcbiIsIi8qXG4gKiBWZW5kb3IgXCJkaXNwbGF5OiBmbGV4XCIgc3VwcG9ydCB3aXRoIGZhbGxiYWNrIHRvIG9ic29sZXRlIHZlcnNpb25zLlxuICovXG5cbmZsZXgtdmVyc2lvbiA/PSBib3ggZmxleFxuXG4vL1xuLy8gMS4gRGlzcGxheSB2YWx1ZXNcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNmbGV4LWNvbnRhaW5lcnNcbi8vXG5kaXNwbGF5KHR5cGUsIGFyZ3MuLi4pXG4gIGlmIGZsZXggPT0gdHlwZSB8fCBpbmxpbmUtZmxleCA9PSB0eXBlXG4gICAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgICAgaWYgZmxleCA9PSB0eXBlXG4gICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94IGFyZ3NcbiAgICAgICAgZGlzcGxheTogdmVuZG9yLXZhbHVlKGJveCBhcmdzLCBvbmx5OiBtb3ogd2Via2l0KVxuICAgICAgZWxzZVxuICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggYXJnc1xuICAgICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoaW5saW5lLWJveCBhcmdzLCBvbmx5OiBtb3ogd2Via2l0KVxuICAgIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpIC8vIG92ZXJ3cml0ZXMgb2xkIHdlYmtpdFxuICBlbHNlXG4gICAgZGlzcGxheTogYXJndW1lbnRzXG5cbi8qXG4gKiBOZXcgc3ludGF4IGZvciBicm93c2VycyBsaWtlIEdvb2dsZSBDaHJvbWUuXG4gKiBQbHVzIGEgdHJhbnNsYXRpb24gdG8gdGhlIG9sZCBzeW50YXgsIGlmIHBvc3NpYmxlLlxuICovXG5cblxuLy9cbi8vIDUuIE9yZGVyaW5nIGFuZCBPcmllbnRhdGlvblxuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI29yZGVyaW5nLWFuZC1vcmllbnRhdGlvblxuLy9cbi1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihkaXJlY3Rpb24pXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICBpZiByb3ctcmV2ZXJzZSA9PSBkaXJlY3Rpb24gfHwgY29sdW1uLXJldmVyc2UgPT0gZGlyZWN0aW9uXG4gICAgICB2ZW5kb3IoJ2JveC1kaXJlY3Rpb24nLCByZXZlcnNlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gICAgaWYgcm93ID09IGRpcmVjdGlvbiB8fCByb3ctcmV2ZXJzZSA9PSBkaXJlY3Rpb25cbiAgICAgIHZlbmRvcignYm94LW9yaWVudCcsIGhvcml6b250YWwsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG4gICAgZWxzZSBpZiBjb2x1bW4gPT0gZGlyZWN0aW9uIHx8IGNvbHVtbi1yZXZlcnNlID09IGRpcmVjdGlvblxuICAgICAgdmVuZG9yKCdib3gtb3JpZW50JywgdmVydGljYWwsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbi1mbGV4LW9ic29sZXRlLXdyYXAodmFsdWUpXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICAvLyBXQVJOOiB3cmFwLXJldmVyc2UgZG9lcyBub3QgaGF2ZSBhIGJveCBlcXVpdmFsZW50LiBUaGlzIHdpbGwgcmVuZGVyIGluIGRpZmZlcmVudCBtYW5uZXJzXG4gICAgLy8gICAgb24gYm94IHZzLiBmbGV4IHZhbHVlcy5cbiAgICBpZiAnd3JhcCcgPT0gdmFsdWUgfHwgd3JhcC1yZXZlcnNlID09IHZhbHVlXG4gICAgICB2ZW5kb3IoJ2JveC1saW5lcycsIG11bHRpcGxlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuICAgIGVsc2UgaWYgbm93cmFwID09IHZhbHVlXG4gICAgICB2ZW5kb3IoJ2JveC1saW5lcycsIHNpbmdsZSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuZmxleC1kaXJlY3Rpb24oZGlyZWN0aW9uKVxuICAvLyBvYnNvbGV0ZVxuICAtZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oZGlyZWN0aW9uKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1kaXJlY3Rpb24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuZmxleC13cmFwKHZhbHVlKVxuICAvLyBvYnNvbGV0ZVxuICAtZmxleC1vYnNvbGV0ZS13cmFwKHZhbHVlKVxuXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LXdyYXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuZmxleC1mbG93KClcbiAgLy8gb2Jzb2xldGVcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGFyZ3VtZW50c1swXSlcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGFyZ3VtZW50c1sxXSlcbiAgLWZsZXgtb2Jzb2xldGUtd3JhcChhcmd1bWVudHNbMF0pXG4gIC1mbGV4LW9ic29sZXRlLXdyYXAoYXJndW1lbnRzWzFdKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1mbG93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cblxub3JkZXIoKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtb3JkaW5hbC1ncm91cCcsIGFyZ3VtZW50cywgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtb3JkZXInLCBhcmd1bWVudHMsIG9ubHk6IG1zKVxuICAgIHZlbmRvcignb3JkZXInLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuXG4vL1xuLy8gNy4gRmxleGliaWxpdHlcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNmbGV4aWJpbGl0eVxuLy9cbmZsZXgtZ3Jvdyhncm93dGgpXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2JveC1mbGV4JywgZ3Jvd3RoKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1ncm93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmZsZXgtYmFzaXMoKVxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1iYXNpcycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5mbGV4LXNocmluaygpXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LXNocmluaycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5mbGV4KGdyb3d0aClcblxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgc2hyaW5rID0gMVxuXG4gICAgaWYgbm9uZSA9PSBncm93dGggfHwgaW5pdGlhbCA9PSBncm93dGhcbiAgICAgIC8vIFdlbGwga25vd24gdmFsdWVzXG4gICAgICBzaHJpbmsgPSAwIGlmIG5vbmUgPT0gZ3Jvd3RoXG4gICAgICBncm93dGggPSAwXG4gICAgZWxzZSBpZiBpcy13aWR0aChncm93dGgpID09IHRydWVcbiAgICAgIC8vIEJhc2lzIGlzIGRlZmluZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlclxuICAgICAgZ3Jvd3RoID0gYXJndW1lbnRzWzFdIHx8IDBcbiAgICAgIHNocmluayA9IGFyZ3VtZW50c1syXSBpZiAzIDw9IGxlbmd0aChhcmd1bWVudHMpXG4gICAgZWxzZSBpZiBhcmd1bWVudHNbMV0gJiYgaXMtd2lkdGgoYXJndW1lbnRzWzFdKSA9PSBmYWxzZVxuICAgICAgLy8gR3Jvd3RoIGlzIGZpcnN0IGFuZCBzaHJpbmsgaXMgc2Vjb25kXG4gICAgICBzaHJpbmsgPSBhcmd1bWVudHNbMV1cblxuICAgIC8vIFNpbmNlIHdlIGNhbid0IG1ha2UgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gZ3Jvd2luZyBhbmQgc2hyaW5raW5nIGluIHRoZSBib3ggbW9kZWwsIHRha2VcbiAgICAvLyB0aGUgb25lIHRoYXQgcHJvdmlkZXMgdGhlIG1vc3QgZmxleGliaWxpdHkuXG4gICAgdmVuZG9yKCdib3gtZmxleCcsIG1heChncm93dGgsIHNocmluayksIGlnbm9yZTogbXMpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cblxuLy8gY29udmVydHMgdGhlIGp1c3RpZmljYXRpb24gYWxpZ25tZW50XG4tY29udmVydC1qdXN0aWZ5KGFsaWduKVxuICBpZiBmbGV4LXN0YXJ0ID09IGFsaWduXG4gICAgcmV0dXJuIHN0YXJ0XG4gIGVsc2UgaWYgZmxleC1lbmQgPT0gYWxpZ25cbiAgICByZXR1cm4gZW5kXG4gIGVsc2UgaWYgc3BhY2UtYXJvdW5kID09IGFsaWduXG4gICAgcmV0dXJuIGRpc3RyaWJ1dGVcbiAgZWxzZSBpZiBzcGFjZS1iZXR3ZWVuID09IGFsaWduXG4gICAgcmV0dXJuIGp1c3RpZnlcbiAgZWxzZVxuICAgIHJldHVybiBhbGlnblxuXG4vL1xuLy8gOC4gQWxpZ25tZW50XG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jYWxpZ25tZW50XG4vL1xuanVzdGlmeS1jb250ZW50KGFsaWduKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1wYWNrJywgLWNvbnZlcnQtanVzdGlmeShhbGlnbiksIG9ubHk6IG1zKVxuICAgIHZlbmRvcignanVzdGlmeS1jb250ZW50JywgYWxpZ24sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuYWxpZ24tY29udGVudChhbGlnbilcbiAgLy8gV0FSTjogT2Jzb2xldGUgc3BlYyBkb2VzIG5vdCBhbGxvdyBmb3IgYWRqdXN0bWVudCBoZXJlXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWxpbmUtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ2FsaWduLWNvbnRlbnQnLCBhbGlnbiwgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG4vLyBjb252ZXJ0cyBhbGlnbm1lbnQgZnJvbSAnZmxleCcgdG8gbm9ybWFsIHZhbHVlXG4tY29udmVydC1hbGlnbm1lbnQoYWxpZ24pXG4gIGlmIGZsZXgtc3RhcnQgPT0gYWxpZ25cbiAgICByZXR1cm4gc3RhcnRcbiAgZWxzZSBpZiBmbGV4LWVuZCA9PSBhbGlnblxuICAgIHJldHVybiBlbmRcbiAgZWxzZVxuICAgIHJldHVybiBhbGlnblxuXG5hbGlnbi1pdGVtcyhhbGlnbilcbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYm94LWFsaWduJywgLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtYWxpZ24nLCAtY29udmVydC1hbGlnbm1lbnQoYWxpZ24pLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ2FsaWduLWl0ZW1zJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmFsaWduLXNlbGYoYWxpZ24pXG4gIC8vIFdBUk46IE9ic29sZXRlIHNwZWMgZG9lcyBub3QgYWxsb3cgZm9yIG92ZXJyaWRpbmcgYWxpZ25tZW50IG9uIGluZGl2aWR1YWwgaXRlbXMuXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdhbGlnbi1zZWxmJywgYWxpZ24sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcbiAgICB2ZW5kb3IoJ2ZsZXgtaXRlbS1hbGlnbicsIC1jb252ZXJ0LWFsaWdubWVudChhbGlnbiksIG9ubHk6IG1zKVxuIiwiLypcbiAqIGJvcmRlcjogPGNvbG9yPlxuICogYm9yZGVyOiAuLi5cbiAqL1xuXG5ib3JkZXIoY29sb3IsIGFyZ3MuLi4pXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yIGFyZ3NcbiAgZWxzZVxuICAgIGJvcmRlcjogYXJndW1lbnRzXG4iLCIvLyBoZWxwZXJcblxuLXBvcyh0eXBlLCBhcmdzKVxuICBpID0gMFxuICBwb3NpdGlvbjogdW5xdW90ZSh0eXBlKVxuICBmb3IgaiBpbiAoMS4uNClcbiAgICBpZiBsZW5ndGgoYXJncykgPiBpXG4gICAgICB7YXJnc1tpXX06IGFyZ3NbaSArIDFdIGlzIGEgJ3VuaXQnID8gYXJnc1tpICs9IDFdIDogMFxuICAgIGkgKz0gMVxuXG4vKlxuICogUG9zaXRpb24gdXRpbGl0eS5cbiAqXG4gKiBTeW5vcHNpczpcbiAqXG4gKiAgIGZpeGVkOiA8cG9zPiBbbl0gPHBvcz4gW25dXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIGZpeGVkOiB0b3AgbGVmdFxuICogICAgIGZpeGVkOiB0b3AgNXB4IGxlZnRcbiAqICAgICBmaXhlZDogdG9wIGxlZnQgNXB4XG4gKiAgICAgZml4ZWQ6IHRvcCA1cHggbGVmdCA1cHhcbiAqXG4gKi9cblxuZml4ZWQoKVxuICAtcG9zKCdmaXhlZCcsIGFyZ3VtZW50cylcblxuLypcbiAqIFBvc2l0aW9uIHV0aWxpdHkuXG4gKlxuICogU3lub3BzaXM6XG4gKlxuICogICBhYnNvbHV0ZTogPHBvcz4gW25dIDxwb3M+IFtuXVxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICBhYnNvbHV0ZTogdG9wIGxlZnRcbiAqICAgICBhYnNvbHV0ZTogdG9wIDVweCBsZWZ0XG4gKiAgICAgYWJzb2x1dGU6IHRvcCBsZWZ0IDVweFxuICogICAgIGFic29sdXRlOiB0b3AgNXB4IGxlZnQgNXB4XG4gKlxuICovXG5cbmFic29sdXRlKClcbiAgLXBvcygnYWJzb2x1dGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBQb3NpdGlvbiB1dGlsaXR5LlxuICpcbiAqIFN5bm9wc2lzOlxuICpcbiAqICAgcmVsYXRpdmU6IDxwb3M+IFtuXSA8cG9zPiBbbl1cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgcmVsYXRpdmU6IHRvcCBsZWZ0XG4gKiAgICAgcmVsYXRpdmU6IHRvcCA1cHggbGVmdFxuICogICAgIHJlbGF0aXZlOiB0b3AgbGVmdCA1cHhcbiAqICAgICByZWxhdGl2ZTogdG9wIDVweCBsZWZ0IDVweFxuICpcbiAqL1xuXG5yZWxhdGl2ZSgpXG4gIC1wb3MoJ3JlbGF0aXZlJywgYXJndW1lbnRzKVxuIl19 */ | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment