/*
Theme Name: Русский Лемнос 
Theme URI:  http://dbelyaev.ru
Author: Dmitriy Belyaev
Author URI: http://dbelyaev.ru
Description: Тема оформления сайта «Русский Лемнос».
Version: 1.0.0
*/
@import url("https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css");
@import './vendor/animate.css/animate.min.css';
@import url("https://fonts.googleapis.com/css?family=Cuprum:400,700&subset=latin,cyrillic");
@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,700,300&subset=latin,cyrillic,cyrillic-ext");
html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td {
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  font-weight: inherit;
  font-style: inherit;
  font-family: inherit;
  font-size: 100%;
  vertical-align: baseline;
}
body {
  line-height: 1;
  color: #000;
  background: #fff;
}
ol,
ul {
  list-style: none;
}
table {
  border-collapse: separate;
  border-spacing: 0;
  vertical-align: middle;
}
caption,
th,
td {
  text-align: left;
  font-weight: normal;
  vertical-align: middle;
}
a img {
  border: none;
}
._ {
  text-transform: uppercase;
  font-size: 1.4em;
  line-height: 1.4em;
  font-family: 'Cuprum', sans-serif;
  color: rgba(0,0,0,0.4);
  font-weight: bolder;
  text-shadow: 1px 1px 2px #fff;
  margin: 0 0 10px 0;
  background: url("./img/_.gif") repeat-x 0px 12px;
}
._ span {
  padding: 0 4px 0 0;
  background: #fff;
}
@media (max-width: 1280px) {
  ._ span {
    padding: 0 4px 0 6px;
  }
}
html,
body {
  width: 100%;
  height: 100%;
  -webkit-font-smoothing: antialiased;
}
body > input[type=checkbox] {
  display: none;
}
#toggle-search:checked~ #search {
  -webkit-transition: all 1s ease 0.5s;
  -moz-transition: all 1s ease 0.5s;
  -o-transition: all 1s ease 0.5s;
  -ms-transition: all 1s ease 0.5s;
  transition: all 1s ease 0.5s;
  display: block;
  opacity: 1;
  -ms-filter: none;
  filter: none;
  visibility: visible;
  -webkit-transform: scale(1);
  -moz-transform: scale(1);
  -o-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
}
label {
  cursor: pointer !important;
}
input {
  outline: none;
}
a {
  cursor: pointer !important;
}
body {
  font-family: 'Open Sans', sans-serif;
}
body.admin-bar > aside {
  top: 30px !important;
}
body > aside {
  width: 300px;
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  min-height: 100%;
  background: -webkit-linear-gradient(bottom, #000, rgba(0,0,0,0.8));
  background: -moz-linear-gradient(bottom, #000, rgba(0,0,0,0.8));
  background: -o-linear-gradient(bottom, #000, rgba(0,0,0,0.8));
  background: -ms-linear-gradient(bottom, #000, rgba(0,0,0,0.8));
  background: linear-gradient(to top, #000, rgba(0,0,0,0.8));
}
body > aside #logo {
  border-bottom: 1px solid rgba(255,255,255,0.2);
}
body > aside #logo img {
  width: 100%;
  height: auto;
}
body > aside > nav a {
  cursor: pointer !important;
}
body > aside > nav li.current-menu-item > a {
  position: relative;
}
body > aside > nav li.current-menu-item > a:after {
  right: 0;
  border: 8px solid transparent;
  content: " ";
  height: 0;
  width: 0;
  position: absolute;
  pointer-events: none;
  border-right-color: #fff;
  top: 50%;
  margin-top: -8px;
}
body > aside > nav > ul > li.active > a,
body > aside > nav > ul > li.current-menu-item > a,
body > aside > nav > ul > li.current-menu-parent > a,
body > aside > nav > ul > li.current-menu-ancestor > a {
  border-left: 4px solid #a92a3a;
}
body > aside > nav > ul > li.active > ul,
body > aside > nav > ul > li.current-menu-item > ul,
body > aside > nav > ul > li.current-menu-parent > ul,
body > aside > nav > ul > li.current-menu-ancestor > ul {
  display: block !important;
}
body > aside > nav > ul > li > a {
  display: block;
  text-transform: uppercase;
  font-family: 'Cuprum', sans-serif;
  font-size: 1.1em;
  padding: 15px;
  cursor: pointer !important;
  color: #fff;
  text-decoration: none;
  border-bottom: 1px solid rgba(255,255,255,0.1);
  border-left: 4px solid transparent;
}
body > aside > nav > ul > li > a:hover {
  background: -webkit-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.2));
  background: -moz-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.2));
  background: -o-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.2));
  background: -ms-linear-gradient(top, rgba(255,255,255,0.1), rgba(255,255,255,0.2));
  background: linear-gradient(to bottom, rgba(255,255,255,0.1), rgba(255,255,255,0.2));
}
body > aside > nav > ul > li > ul {
  display: none;
}
body > aside > nav > ul > li > ul > li.current-menu-item > a,
body > aside > nav > ul > li > ul > li.current-menu-parent > a,
body > aside > nav > ul > li > ul > li.current-menu-ancestor > a {
  border-left: 4px solid #a92a3a;
  position: relative;
}
body > aside > nav > ul > li > ul > li.current-menu-item > ul,
body > aside > nav > ul > li > ul > li.current-menu-parent > ul,
body > aside > nav > ul > li > ul > li.current-menu-ancestor > ul {
  display: block;
  border-left: 4px solid #919191;
}
body > aside > nav > ul > li > ul > li > a {
  background: #d0cddd;
  background: -webkit-linear-gradient(top, rgba(255,255,255,0.7), rgba(255,255,255,0.8));
  background: -moz-linear-gradient(top, rgba(255,255,255,0.7), rgba(255,255,255,0.8));
  background: -o-linear-gradient(top, rgba(255,255,255,0.7), rgba(255,255,255,0.8));
  background: -ms-linear-gradient(top, rgba(255,255,255,0.7), rgba(255,255,255,0.8));
  background: linear-gradient(to bottom, rgba(255,255,255,0.7), rgba(255,255,255,0.8));
  display: block;
  text-align: left;
  padding: 15px 10px;
  font-family: 'Cuprum', sans-serif;
  color: #000;
  text-decoration: none;
  border-left: 4px solid transparent;
  border-bottom: 1px solid rgba(255,255,255,0.5);
}
body > aside > nav > ul > li > ul > li > a:hover {
  border-left: 4px solid #a92a3a;
}
body > aside > nav > ul > li > ul > li > ul {
  display: none;
}
body > aside > nav > ul > li > ul > li > ul > li > a {
  display: block;
  font-family: 'Cuprum', sans-serif;
  border-top: 1px solid rgba(255,255,255,0.4);
  border-bottom: 1px solid rgba(255,255,255,0.4);
  padding: 10px 10px 10px 15px;
  font-size: 0.9em;
  background: #e2dded;
  background: -webkit-linear-gradient(top, rgba(255,255,255,0.8), rgba(255,255,255,0.9));
  background: -moz-linear-gradient(top, rgba(255,255,255,0.8), rgba(255,255,255,0.9));
  background: -o-linear-gradient(top, rgba(255,255,255,0.8), rgba(255,255,255,0.9));
  background: -ms-linear-gradient(top, rgba(255,255,255,0.8), rgba(255,255,255,0.9));
  background: linear-gradient(to bottom, rgba(255,255,255,0.8), rgba(255,255,255,0.9));
  color: #000;
  text-decoration: none;
  border-left: 4px solid transparent;
}
body > aside > nav > ul > li > ul > li > ul > li > a:hover {
  border-left: 4px solid #a92a3a;
}
body > main {
  position: relative;
  margin-left: 300px;
}
body > main > header,
body > main > section {
  overflow: hidden;
  margin-right: 360px;
}
body > main > header > header,
body > main > section > header {
  padding: 15px 0;
  text-align: center;
  border-bottom: 1px solid rgba(0,0,0,0.1);
}
body > main > header > header img,
body > main > section > header img {
  max-width: 80%;
  height: auto;
}
body > main > aside {
  position: fixed;
  right: 0;
  top: 0;
  overflow-y: scroll;
  overflow-x: none;
  width: 360px;
  height: 100%;
}
body > main > aside #copyleft {
  margin: 15px 0 0;
  font-family: 'Cuprum', sans-serif;
  padding: 10px 5px;
  position: relative;
  bottom: 0;
  right: 0;
  border-top: 4px solid #d8d8d8;
  border-bottom: 4px solid #b2b2b2;
  border-left: 4px solid #e7e7e7;
  border-right: 4px solid #e7e7e7;
  -webkit-border-radius: 5px;
  border-radius: 5px;
  background: -webkit-linear-gradient(top, #e7e7e7, #cecece);
  background: -moz-linear-gradient(top, #e7e7e7, #cecece);
  background: -o-linear-gradient(top, #e7e7e7, #cecece);
  background: -ms-linear-gradient(top, #e7e7e7, #cecece);
  background: linear-gradient(to bottom, #e7e7e7, #cecece);
}
body > main > aside .widget {
  zoom: 1;
  margin: 0 0 15px 0;
}
body > main > aside .widget:before,
body > main > aside .widget:after {
  content: "";
  display: table;
}
body > main > aside .widget:after {
  clear: both;
}
body > main > aside .widget .widget-title {
  font-family: 'Cuprum', sans-serif;
  font-weight: bold;
  font-size: 1.4em;
}
body > main > aside .widget .textwidget {
  font-family: 'Open Sans', sans-serif;
}
body > main > aside #black-studio-tinymce-6 .textwidget {
  line-height: 1.2em;
}
.post-type-archive-photos .feed,
.post-type-archive-videos .feed {
  zoom: 1;
}
.post-type-archive-photos .feed:before,
.post-type-archive-videos .feed:before,
.post-type-archive-photos .feed:after,
.post-type-archive-videos .feed:after {
  content: "";
  display: table;
}
.post-type-archive-photos .feed:after,
.post-type-archive-videos .feed:after {
  clear: both;
}
.post-type-archive-photos .feed article,
.post-type-archive-videos .feed article {
  border-bottom: none !important;
  *zoom: 1;
  float: left;
  clear: none;
  text-align: inherit;
  width: 48.5%;
  margin-left: 0%;
  margin-right: 3%;
}
.post-type-archive-photos .feed article:before,
.post-type-archive-videos .feed article:before,
.post-type-archive-photos .feed article:after,
.post-type-archive-videos .feed article:after {
  content: '';
  display: table;
}
.post-type-archive-photos .feed article:after,
.post-type-archive-videos .feed article:after {
  clear: both;
}
.post-type-archive-photos .feed article:nth-child(2n),
.post-type-archive-videos .feed article:nth-child(2n) {
  margin-right: 0%;
  float: right;
}
.post-type-archive-photos .feed article:nth-child(2n+1),
.post-type-archive-videos .feed article:nth-child(2n+1) {
  clear: both;
}
@media (max-width: 768px) {
  .post-type-archive-photos .feed article,
  .post-type-archive-videos .feed article {
    display: block;
    clear: both;
    float: none;
    width: 100%;
    margin-left: auto;
    margin-right: auto;
  }
  .post-type-archive-photos .feed article:first-child,
  .post-type-archive-videos .feed article:first-child {
    margin-left: auto;
  }
  .post-type-archive-photos .feed article:last-child,
  .post-type-archive-videos .feed article:last-child {
    margin-right: auto;
  }
}
.post-type-archive-photos .feed article img.featured,
.post-type-archive-videos .feed article img.featured {
  max-width: 100% !important;
  -webkit-box-shadow: 1px 1px 3px rgba(0,0,0,0.5);
  box-shadow: 1px 1px 3px rgba(0,0,0,0.5);
}
.single-photos header h1 {
  border-bottom: 1px solid #8c8c8c !important;
}
.single-photos header h1 a {
  text-decoration: none;
  color: #8b8b8b !important;
}
.single-photos header h1 a:hover {
  color: #00f;
}
.archive .wrapper,
.category .wrapper,
.search .wrapper,
.home .wrapper,
.blog .wrapper {
  *zoom: 1;
  width: auto;
  max-width: 95%;
  float: none;
  display: block;
  margin-right: auto;
  margin-left: auto;
  padding-left: 0;
  padding-right: 0;
}
.archive .wrapper:before,
.category .wrapper:before,
.search .wrapper:before,
.home .wrapper:before,
.blog .wrapper:before,
.archive .wrapper:after,
.category .wrapper:after,
.search .wrapper:after,
.home .wrapper:after,
.blog .wrapper:after {
  content: '';
  display: table;
}
.archive .wrapper:after,
.category .wrapper:after,
.search .wrapper:after,
.home .wrapper:after,
.blog .wrapper:after {
  clear: both;
}
.archive .wrapper > header,
.category .wrapper > header,
.search .wrapper > header,
.home .wrapper > header,
.blog .wrapper > header {
  font-size: 1.4em;
  font-weight: bold;
  font-family: 'Cuprum', sans-serif;
  padding: 15px 0 0px !important;
  text-transform: uppercase;
  border-bottom: 1px solid #e5e5e5;
  margin-bottom: 15px !important;
}
.archive .wrapper .feed article,
.category .wrapper .feed article,
.search .wrapper .feed article,
.home .wrapper .feed article,
.blog .wrapper .feed article {
  zoom: 1;
  margin: 0 0 0 0;
  padding: 20px 0 20px 0;
  border-bottom: 1px solid #dcdcdc;
}
.archive .wrapper .feed article:before,
.category .wrapper .feed article:before,
.search .wrapper .feed article:before,
.home .wrapper .feed article:before,
.blog .wrapper .feed article:before,
.archive .wrapper .feed article:after,
.category .wrapper .feed article:after,
.search .wrapper .feed article:after,
.home .wrapper .feed article:after,
.blog .wrapper .feed article:after {
  content: "";
  display: table;
}
.archive .wrapper .feed article:after,
.category .wrapper .feed article:after,
.search .wrapper .feed article:after,
.home .wrapper .feed article:after,
.blog .wrapper .feed article:after {
  clear: both;
}
.archive .wrapper .feed article header a,
.category .wrapper .feed article header a,
.search .wrapper .feed article header a,
.home .wrapper .feed article header a,
.blog .wrapper .feed article header a {
  color: #00f;
  font-size: 1.4em;
  font-family: 'Cuprum', sans-serif;
}
.archive .wrapper .feed article header a:hover,
.category .wrapper .feed article header a:hover,
.search .wrapper .feed article header a:hover,
.home .wrapper .feed article header a:hover,
.blog .wrapper .feed article header a:hover {
  text-decoration: none;
}
.archive .wrapper .feed article .timeago,
.category .wrapper .feed article .timeago,
.search .wrapper .feed article .timeago,
.home .wrapper .feed article .timeago,
.blog .wrapper .feed article .timeago {
  font-weight: bold;
  font-family: 'Cuprum', sans-serif;
  color: #777 !important;
}
.archive .wrapper .feed article section.content,
.category .wrapper .feed article section.content,
.search .wrapper .feed article section.content,
.home .wrapper .feed article section.content,
.blog .wrapper .feed article section.content {
  padding: 10px 0;
  line-height: 1.2em;
  font-family: 'Open Sans', sans-serif;
  text-align: justify;
}
.archive .wrapper .feed article section.content img.featured,
.category .wrapper .feed article section.content img.featured,
.search .wrapper .feed article section.content img.featured,
.home .wrapper .feed article section.content img.featured,
.blog .wrapper .feed article section.content img.featured {
  margin: 0 10px 0 0;
  max-width: 200px;
  height: auto;
  float: left;
}
@media (max-width: 480px) {
  .archive .wrapper .feed article section.content img.featured,
  .category .wrapper .feed article section.content img.featured,
  .search .wrapper .feed article section.content img.featured,
  .home .wrapper .feed article section.content img.featured,
  .blog .wrapper .feed article section.content img.featured {
    display: block;
    clear: both;
    float: none;
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 5px;
    width: 100%;
    height: auto;
    max-width: none !important;
    float: none;
  }
  .archive .wrapper .feed article section.content img.featured:first-child,
  .category .wrapper .feed article section.content img.featured:first-child,
  .search .wrapper .feed article section.content img.featured:first-child,
  .home .wrapper .feed article section.content img.featured:first-child,
  .blog .wrapper .feed article section.content img.featured:first-child {
    margin-left: auto;
  }
  .archive .wrapper .feed article section.content img.featured:last-child,
  .category .wrapper .feed article section.content img.featured:last-child,
  .search .wrapper .feed article section.content img.featured:last-child,
  .home .wrapper .feed article section.content img.featured:last-child,
  .blog .wrapper .feed article section.content img.featured:last-child {
    margin-right: auto;
  }
}
.archive .wrapper .feed article section.content p.readmore,
.category .wrapper .feed article section.content p.readmore,
.search .wrapper .feed article section.content p.readmore,
.home .wrapper .feed article section.content p.readmore,
.blog .wrapper .feed article section.content p.readmore {
  padding: 10px 0 !important;
}
.page .wrapper,
.single .wrapper {
  *zoom: 1;
  width: auto;
  max-width: 95%;
  float: none;
  display: block;
  margin-right: auto;
  margin-left: auto;
  padding-left: 0;
  padding-right: 0;
}
.page .wrapper:before,
.single .wrapper:before,
.page .wrapper:after,
.single .wrapper:after {
  content: '';
  display: table;
}
.page .wrapper:after,
.single .wrapper:after {
  clear: both;
}
.page b,
.single b,
.page strong,
.single strong {
  font-weight: bold;
}
.page i,
.single i,
.page em,
.single em {
  font-style: italic;
}
.page h1,
.single h1,
.page h2,
.single h2,
.page h3,
.single h3,
.page h4,
.single h4,
.page h5,
.single h5 {
  font-weight: bold;
}
.page h1,
.single h1 {
  font-size: 1.6em;
}
.page h2,
.single h2 {
  font-size: 1.5em;
}
.page h3,
.single h3 {
  font-size: 1.4em;
}
.page h4,
.single h4 {
  font-size: 1.3em;
}
.page h5,
.single h5 {
  font-size: 1.2em;
}
.page article header,
.single article header {
  padding: 20px 0;
}
.page article header h1,
.single article header h1 {
  font-size: 2em;
  font-family: 'Cuprum', sans-serif;
  border-bottom: 1px solid rgba(0,0,0,0.6);
}
.page article .body,
.single article .body {
  font-family: 'Open Sans', sans-serif;
  font-size: 1em;
  line-height: 1.2em;
}
.page article .body img,
.single article .body img {
  max-width: 100% !important;
  height: auto;
}
@media (min-width: 1025px) {
  .page article .body img.alignleft,
  .single article .body img.alignleft {
    float: left;
    max-width: 40%;
    height: auto;
    margin: 0 10px 5px 0;
  }
  .page article .body img.alignright,
  .single article .body img.alignright {
    max-width: 40%;
    height: auto;
    float: right;
    margin: 0 0 10px 5px;
  }
}
.page article .body img,
.single article .body img,
.page article .body aligncenter,
.single article .body aligncenter {
  zoom: 1;
}
.page article .body img:before,
.single article .body img:before,
.page article .body aligncenter:before,
.single article .body aligncenter:before,
.page article .body img:after,
.single article .body img:after,
.page article .body aligncenter:after,
.single article .body aligncenter:after {
  content: "";
  display: table;
}
.page article .body img:after,
.single article .body img:after,
.page article .body aligncenter:after,
.single article .body aligncenter:after {
  clear: both;
}
.page article .body p,
.single article .body p,
.page article .body div,
.single article .body div {
  margin: 10px 0;
  text-align: justify;
}
.page article .body a,
.single article .body a {
  text-decoration: none;
}
.page article .body a:hover,
.single article .body a:hover {
  text-decoration: underline;
}
.page .pages_nav,
.single .pages_nav {
  text-align: center;
  font-size: 1em;
  padding: 15px 0;
  font-family: 'Open Sans', sans-serif;
}
.page .pages_nav a,
.single .pages_nav a {
  padding: 5px 10px;
  background: -webkit-linear-gradient(top, #575757, #383838);
  background: -moz-linear-gradient(top, #575757, #383838);
  background: -o-linear-gradient(top, #575757, #383838);
  background: -ms-linear-gradient(top, #575757, #383838);
  background: linear-gradient(to bottom, #575757, #383838);
  border: 1px solid #545454;
  margin: 0 5px;
  color: #fff;
  text-decoration: none;
  -webkit-border-radius: 5px;
  border-radius: 5px;
}
.page .pages_nav a:hover,
.single .pages_nav a:hover {
  background: #8f8f8f;
}
.page-template-page-mortirolog section.letter_nav {
  margin: 15px 0;
  line-height: 2em;
}
.page-template-page-mortirolog section.letter_nav a {
  padding: 5px 10px;
  background: -webkit-linear-gradient(top, #575757, #383838);
  background: -moz-linear-gradient(top, #575757, #383838);
  background: -o-linear-gradient(top, #575757, #383838);
  background: -ms-linear-gradient(top, #575757, #383838);
  background: linear-gradient(to bottom, #575757, #383838);
  border: 1px solid #545454;
  color: #fff;
  -webkit-border-radius: 5px;
  border-radius: 5px;
  text-decoration: none;
}
.page-template-page-mortirolog section.letter_nav a:hover {
  background: -webkit-linear-gradient(top, #737373, #525252);
  background: -moz-linear-gradient(top, #737373, #525252);
  background: -o-linear-gradient(top, #737373, #525252);
  background: -ms-linear-gradient(top, #737373, #525252);
  background: linear-gradient(to bottom, #737373, #525252);
}
.page-template-page-mortirolog section.letter_nav a.active {
  border: none;
  background: none;
  color: #000;
  font-weight: bold;
  text-decoration: underline;
}
.page-id-104 .body td {
  padding: 10px;
}
.page-id-109 .comment-respond {
  font-family: 'Cuprum', sans-serif;
}
.page-id-109 .comment-respond h3 {
  font-size: 1.6em;
  font-weight: bold;
  border-bottom: 1px solid;
}
.page-id-109 .comment-respond form label {
  display: block;
}
.page-id-109 .comment-respond form p {
  padding: 10px 0;
}
.page-id-109 .comment-respond form input[type="text"],
.page-id-109 .comment-respond form textarea {
  -webkit-border-radius: 5px;
  border-radius: 5px;
  border: 1px solid #a8a8a8;
  font-size: 1.1em;
  font-family: 'Open Sans', sans-serif;
}
.page-id-109 .comment-respond form input[type="text"]:focus,
.page-id-109 .comment-respond form textarea:focus {
  outline: 1px 0px 1px #92adff;
}
.page-id-109 .comment-respond form input[type="submit"] {
  padding: 10px;
  font-size: 1.2em;
}
.page-id-109 .comment-respond form .comment-form-comment textarea {
  width: 100%;
  height: 200px;
}
.page-id-109 h3#comments {
  display: none !important;
}
.page-id-109 .navigation {
  padding: 15px;
  margin: 30px;
  border: 1px solid #bdbdbd;
  zoom: 1;
}
.page-id-109 .navigation:before,
.page-id-109 .navigation:after {
  content: "";
  display: table;
}
.page-id-109 .navigation:after {
  clear: both;
}
.page-id-109 .navigation .alignleft {
  float: left;
}
.page-id-109 .navigation .alignright {
  float: right;
}
.page-id-109 ol.commentlist li.comment {
  position: relative;
  margin: 15px 0;
  padding: 15px 0;
  border-bottom: 1px solid #bcbcbc;
}
.page-id-109 ol.commentlist li.comment .vcard .avatar {
  display: none;
}
.page-id-109 ol.commentlist li.comment .vcard .fn {
  font-weight: bold;
  font-size: 1.2em;
}
.page-id-109 ol.commentlist li.comment .commentmetadata {
  position: absolute;
  top: 10px;
  right: 0;
}
.page-id-109 ol.commentlist li.comment .commentmetadata a {
  color: #bdbdbd;
  text-decoration: none;
}
.page-id-109 ol.commentlist li.comment p {
  padding: 5px 0;
  font-family: 'Open Sans', sans-serif;
}
.admin-bar #search .close {
  top: 30px !important;
  vertical-align: top !important;
}
body label[for=toggle-menu] {
  position: absolute;
  top: 5px;
  left: 5px;
  font-size: 1.6em;
}
body label[for=toggle-menu] i {
  font-style: normal;
}
@media (min-width: 1024px) {
  body label[for=toggle-menu] {
    display: none !important;
  }
}
@media (max-width: 480px) {
  body label[for=toggle-menu] {
    position: absolute;
    top: 27px;
    left: 5px;
    top: 27px !important;
  }
}
@media (max-width: 1024px) {
  body > aside {
    display: none;
    z-index: 1000;
    background: #000;
  }
  body > main {
    z-index: 1;
    margin-left: 0;
  }
  body #toggle-menu:checked~ aside {
    display: block !important;
  }
  body #toggle-menu:checked~ main {
    margin-left: 300px !important;
    zoom: 1;
  }
  body #toggle-menu:checked~ main label[for=toggle-menu] {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
  body #toggle-menu:checked~ main label[for=toggle-menu] i {
    position: absolute;
    top: 5px;
    left: 5px;
  }
  body #toggle-menu:checked~ main > section {
    margin-right: 0 !important;
  }
  body #toggle-menu:checked~ main:before,
  body #toggle-menu:checked~ main:after {
    content: "";
    display: table;
  }
  body #toggle-menu:checked~ main:after {
    clear: both;
  }
  body #toggle-menu:checked~ main > aside {
    display: block !important;
    position: relative;
    zoom: 1;
    margin: 0 15px;
    padding: 15px;
    display: block;
    clear: both;
    float: none;
    width: 100%;
    margin-left: auto;
    margin-right: auto;
  }
  body #toggle-menu:checked~ main > aside #black-studio-tinymce-5 {
    display: none;
  }
  body #toggle-menu:checked~ main > aside:before,
  body #toggle-menu:checked~ main > aside:after {
    content: "";
    display: table;
  }
  body #toggle-menu:checked~ main > aside:after {
    clear: both;
  }
  body #toggle-menu:checked~ main > aside:first-child {
    margin-left: auto;
  }
  body #toggle-menu:checked~ main > aside:last-child {
    margin-right: auto;
  }
}
@media (max-width: 768px) {
  body > main {
    position: relative;
    zoom: 1;
    display: block;
    clear: both;
    float: none;
    width: 100%;
    margin-left: auto;
    margin-right: auto;
  }
  body > main > section {
    margin-right: 0 !important;
  }
  body > main:before,
  body > main:after {
    content: "";
    display: table;
  }
  body > main:after {
    clear: both;
  }
  body > main:first-child {
    margin-left: auto;
  }
  body > main:last-child {
    margin-right: auto;
  }
  body > main > aside {
    width: auto;
    max-width: 95%;
    position: relative;
    zoom: 1;
    display: block;
    clear: both;
    float: none;
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    padding: 10px;
  }
  body > main > aside:before,
  body > main > aside:after {
    content: "";
    display: table;
  }
  body > main > aside:after {
    clear: both;
  }
  body > main > aside:first-child {
    margin-left: auto;
  }
  body > main > aside:last-child {
    margin-right: auto;
  }
  body > main > aside #black-studio-tinymce-5 {
    display: none !important;
  }
  body #toggle-menu:checked~ aside {
    display: none;
  }
  body #toggle-menu:checked~ main {
    margin-left: 300px !important;
  }
}
#search {
  display: none;
  opacity: 0;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  filter: alpha(opacity=0);
  visibility: hidden;
  -webkit-transition: all 1s ease-out;
  -moz-transition: all 1s ease-out;
  -o-transition: all 1s ease-out;
  -ms-transition: all 1s ease-out;
  transition: all 1s ease-out;
  -webkit-transform: scale(0.0001);
  -moz-transform: scale(0.0001);
  -o-transform: scale(0.0001);
  -ms-transform: scale(0.0001);
  transform: scale(0.0001);
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  background: rgba(0,0,0,0.777);
  z-index: 1001;
}
#search .close {
  position: absolute;
  top: 0px;
  right: 0px;
  color: #fff;
  font-size: 1.8em;
  width: 50px;
  height: 50px;
  vertical-align: middle;
  background: ;
  line-height: 50px;
  text-align: center;
  z-index: 1000;
}
#search .close i.fa-close {
  line-height: 50px;
}
#search label:nth-child(2) {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
}
#search form {
  z-index: 100;
  width: 600px;
  height: 50px;
  margin: -25px 0 0 -300px;
  position: absolute;
  top: 50%;
  left: 50%;
  border-bottom: 1px solid #fff;
}
@media (max-width: 1024px) {
  #search form {
    width: 95%;
    height: 50px;
    position: absolute;
    top: 15%;
    left: 2%;
    margin: 0 !important;
  }
}
#search form input {
  *zoom: 1;
  float: left;
  clear: none;
  text-align: inherit;
  width: 90%;
  margin-left: 0%;
  margin-right: 0%;
  padding: 0;
  font-size: 1.8em;
  color: #fff;
  font-family: 'Cuprum', sans-serif;
  font-weight: 700;
  line-height: 50px;
  height: 50px;
  border: none;
  background: transparent;
  -webkit-box-shadow: 0px 1px rgba(255,255,255,0.4);
  box-shadow: 0px 1px rgba(255,255,255,0.4);
}
#search form input:before,
#search form input:after {
  content: '';
  display: table;
}
#search form input:after {
  clear: both;
}
#search form button {
  *zoom: 1;
  float: left;
  clear: none;
  text-align: inherit;
  width: 10%;
  margin-left: 0%;
  margin-right: 0%;
  cursor: pointer;
  height: 50px;
  text-align: right;
  font-size: 1.8em;
  color: #fff;
  background: none;
  border: none;
}
#search form button:before,
#search form button:after {
  content: '';
  display: table;
}
#search form button:after {
  clear: both;
}
.pagination {
  text-align: center;
}
.pager {
  margin: 0 0 20px 0;
  padding: 0 0 20px 0;
}
.pager a {
  text-decoration: none;
  color: rgba(0,0,0,0.8);
}
.pager a:hover {
  color: color1;
}
.pager #prev {
  float: left;
  margin-left: 5px;
}
.pager #next {
  float: right;
  margin-right: 5px;
}
.pager label {
  font-weight: bolder;
  cursor: help;
  color: rgba(0,0,0,0.3);
  text-shadow: 1px 1px 1px rgba(255,255,255,0.9);
}
@media (max-width: 1024px) {
  .pager label {
    display: none;
  }
}
.paginator {
  font-family: 'Open Sans', sans-serif;
  width: 100%;
  height: auto;
}
a#infinite-scroll {
  font-family: 'Open Sans', sans-serif;
  display: block;
  width: 100%;
  height: auto;
  padding: 10px 0;
  background: -webkit-linear-gradient(top, rgba(0,0,0,0.1), rgba(0,0,0,0.2));
  background: -moz-linear-gradient(top, rgba(0,0,0,0.1), rgba(0,0,0,0.2));
  background: -o-linear-gradient(top, rgba(0,0,0,0.1), rgba(0,0,0,0.2));
  background: -ms-linear-gradient(top, rgba(0,0,0,0.1), rgba(0,0,0,0.2));
  background: linear-gradient(to bottom, rgba(0,0,0,0.1), rgba(0,0,0,0.2));
  -webkit-border-radius: 5px;
  border-radius: 5px;
  margin: 10px 0;
  border-left: 1px solid rgba(0,0,0,0.1);
  border-right: 1px solid rgba(0,0,0,0.1);
  border-bottom: 2px solid rgba(0,0,0,0.4);
  text-decoration: none;
  color: rgba(0,0,0,0.8);
  text-shadow: 1px 1px 0px #fff;
  -webkit-transition: all 0.2s ease-out;
  -moz-transition: all 0.2s ease-out;
  -o-transition: all 0.2s ease-out;
  -ms-transition: all 0.2s ease-out;
  transition: all 0.2s ease-out;
  cursor: pointer;
}
@media (max-width: 1024px) {
  a#infinite-scroll {
    *zoom: 1;
    width: auto;
    max-width: 1440px;
    float: none;
    display: block;
    margin-right: auto;
    margin-left: auto;
    padding-left: 0;
    padding-right: 0;
    width: 95%;
    height: auto;
  }
  a#infinite-scroll:before,
  a#infinite-scroll:after {
    content: '';
    display: table;
  }
  a#infinite-scroll:after {
    clear: both;
  }
}
a#infinite-scroll:hover {
  border-bottom: 2px solid rgba(0,0,0,0.2);
  -webkit-transform: translateY(2px);
  -moz-transform: translateY(2px);
  -o-transform: translateY(2px);
  -ms-transform: translateY(2px);
  transform: translateY(2px);
  -webkit-transition: all 0.2s ease-in;
  -moz-transition: all 0.2s ease-in;
  -o-transition: all 0.2s ease-in;
  -ms-transition: all 0.2s ease-in;
  transition: all 0.2s ease-in;
}
a#infinite-scroll:active {
  -webkit-box-shadow: inset 0px 2px 8px -2px rgba(0,0,0,0.7);
  box-shadow: inset 0px 2px 8px -2px rgba(0,0,0,0.7);
}
#infinite-scroll-loader {
  margin: 15px;
  display: none;
}
#infinite-scroll-end {
  padding: 15px;
  text-align: center;
}
.pagination {
  font-family: 'Open Sans', sans-serif;
  *zoom: 1;
}
.pagination:before,
.pagination:after {
  content: '';
  display: table;
}
.pagination:after {
  clear: both;
}
.pagination .paginator {
  width: 100%;
  height: 100%;
  padding: 10px 0 0 0;
}
.pagination .paginator table {
  border-collapse: collapse;
  table-layout: fixed;
  width: 100%;
}
.pagination .paginator table td {
  padding: 0;
  white-space: nowrap;
  text-align: center;
}
.pagination .paginator span {
  display: block;
  padding: 3px 0;
  color: #fff;
}
.pagination .paginator span strong,
.pagination .paginator span a {
  padding: 2px 6px;
  text-decoration: none;
  color: rgba(0,0,0,0.8);
}
.pagination .paginator span strong:hover,
.pagination .paginator span a:hover {
  color: color1;
}
.pagination .paginator span strong {
  background: #b8b8b8;
  font-style: normal;
  font-weight: normal;
  border-bottom: 1px solid #000;
  color: #fff;
  text-shadow: 1px 1px 0px #000;
  -webkit-border-radius: 5px;
  border-radius: 5px;
}
.pagination .paginator .scroll_bar {
  width: 100%;
  height: 20px;
  position: relative;
  margin-top: 10px;
}
.pagination .paginator .scroll_trough {
  width: 100%;
  height: 7px;
  background: #ccc;
  overflow: hidden;
}
.pagination .paginator .current_page_mark {
  position: absolute;
  z-index: 1;
  top: 0;
  left: 0;
  width: 0;
  height: 7px;
  overflow: hidden;
  background: transparent !important;
  color: #f00 !important;
}
.pagination .paginator_pages {
  width: 100%;
  padding: 10px 10px 10px 0;
  *zoom: 1;
  float: right;
  font-size: 0.8em;
  color: #808080;
  margin-top: -10px;
}
.pagination .paginator_pages:before,
.pagination .paginator_pages:after {
  content: '';
  display: table;
}
.pagination .paginator_pages:after {
  clear: both;
}
.pagination table {
  border: none !important;
}
.pagination table tr td {
  border: none !important;
}
.tooltip {
  cursor: help;
  position: relative;
}
.tooltip:after {
  background-color: rgba(0,0,0,0.8);
  -webkit-border-radius: 5px;
  border-radius: 5px;
  color: #fff;
  text-shadow: #000;
  content: attr(data-title);
  padding: 7px 7px;
  font-family: 'Cuprum', sans-serif;
  line-height: 1.4em;
  position: absolute;
  bottom: -200%;
  width: 300px;
  height: auto;
  -webkit-transform: translateX(-50%);
  -moz-transform: translateX(-50%);
  -o-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  transform: translateX(-50%);
  font-size: 0.8em;
  text-shadow: none !important;
  visibility: hidden;
  opacity: 0;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
  filter: alpha(opacity=0);
  -webkit-transition: all 0.4s ease-in-out;
  -moz-transition: all 0.4s ease-in-out;
  -o-transition: all 0.4s ease-in-out;
  -ms-transition: all 0.4s ease-in-out;
  transition: all 0.4s ease-in-out;
}
.tooltip:hover::after {
  opacity: 1;
  -ms-filter: none;
  filter: none;
  visibility: visible;
}
blockquote {
  padding: 10px;
  border-bottom: 3px solid rgba(0,0,0,0.1);
  -webkit-box-shadow: 0px 1px 5px rgba(0,0,0,0.3);
  box-shadow: 0px 1px 5px rgba(0,0,0,0.3);
  -webkit-border-radius: 5px;
  border-radius: 5px;
  margin: 10px 0px 20px;
  color: rgba(0,0,0,0.7);
  background-color: rgba(0,0,0,0.1);
}
blockquote p {
  margin: 10px !important;
  padding: 0 !important;
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLnN0eWwiLCJub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvcmVzZXQuc3R5bCIsIm5vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9ib3JkZXIuc3R5bCIsIm5vZGVfbW9kdWxlcy9uaWIvbGliL25pYi92ZW5kb3Iuc3R5bCIsIm5vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9zaXplLnN0eWwiLCJub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvZmxleC5zdHlsIiwibm9kZV9tb2R1bGVzL25pYi9saWIvbmliL292ZXJmbG93LnN0eWwiLCJub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvcG9zaXRpb25zLnN0eWwiLCJub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvY2xlYXJmaXguc3R5bCIsIm5vZGVfbW9kdWxlcy9qZWV0L3N0eWx1cy9qZWV0L19ncmlkLnN0eWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0FBVXlGO0FBQ2pGO0FBQ2tGO0FBQ29CO0FDVjVHO0FBQU07QUFBTTtBQUFLO0FBQU07QUFBUTtBQUFRO0FBQU87QUFDSztBQUFJO0FBQUk7QUFBSTtBQUFJO0FBQUk7QUFBRztBQUFZO0FBQUk7QUFDSTtBQUFNO0FBQVM7QUFBUztBQUFLO0FBQU07QUFBSztBQUNNO0FBQUs7QUFBSTtBQUFLO0FBQUs7QUFBSztBQUFHO0FBQUc7QUFBSztBQUNRO0FBQVE7QUFBUTtBQUFLO0FBQUs7QUFBSTtBQUFJO0FBQ0s7QUFBSTtBQUFJO0FBQUk7QUFBSTtBQUFHO0FBQ1c7QUFBTTtBQUFPO0FBQU87QUFDUTtBQUFTO0FBQU87QUFBTztBQUFPO0FBQUk7QUFBSTtFQTZCOVQsUUFBUSxFQUFSO0VBQ0EsU0FBUyxFQUFUO0VDL0JFLFFBQVEsRUFBUjtFRGlDRixTQUFTLEVBQVQ7RUFHQSxhQUFhLFFBQWI7RUFDQSxZQUFZLFFBQVo7RUFDQSxhQUFhLFFBQWI7RUFDQSxXQUFXLEtBQVg7RUFDQSxnQkFBZ0IsU0FBaEI7O0FBcENBO0VBdUNBLGFBQWEs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QUFRLEtBQVI7RUhpYk4sWUFBVyxRQUFYOztBQUNGO0VBQ0MsU0FBUSxLQUFSO0VBRUEsZUFBYywwQkFBZDtFRy9wQmlCLG9CQUFHLDRCQUFIO0VBUkgsWUFBRyw0QkFBSDtFQVFHLHVCQUFHLElBQUg7RUFSSCxlQUFHLElBQUg7RUgwcUJkLFFBQU8sY0FBUDtFQUNBLE9BQW1CLGdCQUFuQjtFQUNBLGtCQUE4QixnQkFBOUI7O0FBQ0E7RUFDQyxRQUFPLGdCQUFQO0VBQ0EsU0FBUSxhQUFSIiwiZmlsZSI6InN0eWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5UaGVtZSBOYW1lOiDQoNGD0YHRgdC60LjQuSDQm9C10LzQvdC+0YEgXG5UaGVtZSBVUkk6ICBodHRwOi8vZGJlbHlhZXYucnVcbkF1dGhvcjogRG1pdHJpeSBCZWx5YWV2XG5BdXRob3IgVVJJOiBodHRwOi8vZGJlbHlhZXYucnVcbkRlc2NyaXB0aW9uOiDQotC10LzQsCDQvtGE0L7RgNC80LvQtdC90LjRjyDRgdCw0LnRgtCwIMKr0KDRg9GB0YHQutC40Lkg0JvQtdC80L3QvtGBwrsuXG5WZXJzaW9uOiAxLjAuMFxuKi9cbkBpbXBvcnQgJ25pYidcbkBpbXBvcnQgJ2plZXQnXG5AaW1wb3J0IHVybCgnaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC41LjAvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzJyk7XG5AaW1wb3J0ICcuL3ZlbmRvci9hbmltYXRlLmNzcy9hbmltYXRlLm1pbi5jc3MnXG5AaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PUN1cHJ1bTo0MDAsNzAwJnN1YnNldD1sYXRpbixjeXJpbGxpYycpO1xuQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1PcGVuK1NhbnM6NDAwLDcwMCwzMDAmc3Vic2V0PWxhdGluLGN5cmlsbGljLGN5cmlsbGljLWV4dCcpO1xuJGZvbnQxID0gJ0N1cHJ1bScsIHNhbnMtc2VyaWZcbiRmb250MiA9ICdPcGVuIFNhbnMnLCBzYW5zLXNlcmlmXG5nbG9iYWwtcmVzZXQoKVxuJGNvbG9ycyA9IHtcblx0J2RpdmlkZXInOiAjQ0ZDRkNGXG59XG4kID0ge1xuXHRwaG9uZTogMzQwcHgsXG5cdHBob25lLWxhbmRzY2FwZTogNDgwcHgsXG5cdHBob25lLWxhbmRzY2FwZS1wbHVzOiA0ODFweCxcblx0dGFibGV0OiA3NjhweCxcblx0dGFibGV0LXBsdXM6IDc2OXB4LFxuXHR0YWJsZXQtbGFuZHNjYXBlOiAxMDI0cHgsIFxuXHR0YWJsZXQtbGFuZHNjYXBlLXBsdXM6IDEwMjVweCwgXG5cdGRlc2t0b3A6IDEyODBweFxufVxuLl9cblx0dGV4dC10cmFuc2Zvcm0gdXBwZXJjYXNlXG5cdGZvbnQtc2l6ZSAxLjRlbVxuXHRsaW5lLWhlaWdodCAxLjRlbVxuXHRmb250LWZhbWlseSAkZm9udDFcblx0Y29sb3IgcmdiYSgwLDAsMCwuNClcblx0Zm9udC13ZWlnaHQgYm9sZGVyXG5cdHRleHQtc2hhZG93IDFweCAxcHggMnB4IHJnYmEoMjU1LDI1NSwyNTUsMSlcblx0bWFyZ2luIDAgMCAxMHB4IDBcblx0YmFja2dyb3VuZCB1cmwoLi9pbWcvXy5naWYpIHJlcGVhdC14IDBweCAxMnB4XG5cdHNwYW5cblx0XHRwYWRkaW5nIDAgNHB4IDAgMFxuXHRcdEBtZWRpYShtYXgtd2lkdGggJC5kZXNrdG9wKVxuXHRcdFx0cGFkZGluZyAwIDRweCAwIDZweFxuXHRcdGJhY2tncm91bmQgI0ZGRlxuaHRtbCwgYm9keVxuXHRzaXplIDEwMCUsIDEwMCVcblx0LXdlYmtpdC1mb250LXNtb290aGluZyBhbnRpYWxpYXNlZFxuYm9keSA+IGlucHV0W3R5cGU9Y2hlY2tib3hdXG5cdGRpc3BsYXkgbm9uZVxuI3RvZ2dsZS1zZWFyY2hcblx0JjpjaGVja2VkXG5cdFx0Jn4gI3NlYXJjaFxuXHRcdFx0dHJhbnNpdGlvbiBhbGwgMXMgZWFzZSAuNXNcblx0XHRcdGRpc3BsYXkgYmxvY2tcblx0XHRcdG9wYWNpdHkgMVxuXHRcdFx0dmlzaWJpbGl0eSB2aXNpYmxlXG5cdFx0XHR0cmFuc2Zvcm0gc2NhbGUoMSlcbmxhYmVsXG5cdGN1cnNvciBwb2ludGVyICFpbXBvcnRhbnRcdFx0XG5pbnB1dFxuXHRvdXRsaW5lIG5vbmVcbmFcblx0Y3Vyc29yIHBvaW50ZXIgIWltcG9ydGFudFxuYm9keVxuXHQvLyBiYWNrZ3JvdW5kIHVybCgnLi9pbWcvdG9wX3JpZ2h0X2Jsb2NrLnBuZycpIG5vLXJlcGVhdCB0b3AgcmlnaHRcblx0Ly8gYmFja2dyb3VuZC1hdHRhY2htZW50IGZpeGVkIFxuXHRmb250LWZhbWlseSAkZm9udDJcblx0Ji5hZG1pbi1iYXJcblx0XHQ+IGFzaWRlXG5cdFx0XHR0b3AgMzBweCAhaW1wb3J0YW50XG5cdD4gYXNpZGVcblx0XHR3aWR0aCAzMDBweFxuXHRcdHBvc2l0aW9uIGZpeGVkXG5cdFx0dG9wIDBcblx0XHRsZWZ0IDBcblx0XHRib3R0b20gMFxuXHRcdG1pbi1oZWlnaHQgMTAwJVxuXHRcdGJhY2tncm91bmQgbGluZWFyLWdyYWRpZW50KHRvIHRvcCxyZ2JhKDAsMCwwLDEpLHJnYmEoMCwwLDAsLjgpKVxuXHRcdCNsb2dvXG5cdFx0XHRib3JkZXItYm90dG9tIDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4yKVxuXHRcdFx0aW1nXG5cdFx0XHRcdHNpemUgMTAwJSBhdXRvXG5cdFx0PiBuYXZcblx0XHRcdGFcblx0XHRcdFx0Y3Vyc29yIHBvaW50ZXIgIWltcG9ydGFudFx0XHRcblx0XHRcdGxpLmN1cnJlbnQtbWVudS1pdGVtXG5cdFx0XHRcdD4gYVxuXHRcdFx0XHRcdHBvc2l0aW9uIHJlbGF0aXZlXG5cdFx0XHRcdFx0JjphZnRlclxuXHRcdFx0XHRcdFx0cmlnaHQgMFxuXHRcdFx0XHRcdFx0Ym9yZGVyIDhweCBzb2xpZCB0cmFuc3BhcmVudFxuXHRcdFx0XHRcdFx0Y29udGVudCBcIiBcIlxuXHRcdFx0XHRcdFx0aGVpZ2h0IDBcblx0XHRcdFx0XHRcdHdpZHRoIDBcblx0XHRcdFx0XHRcdHBvc2l0aW9uIGFic29sdXRlXG5cdFx0XHRcdFx0XHRwb2ludGVyLWV2ZW50cyBub25lXG5cdFx0XHRcdFx0XHRib3JkZXItcmlnaHQtY29sb3IgI0ZGRlxuXHRcdFx0XHRcdFx0dG9wIDUwJVxuXHRcdFx0XHRcdFx0bWFyZ2luLXRvcCAtOHB4XG5cdFx0XHQ+IHVsXG5cdFx0XHRcdD4gbGlcblx0XHRcdFx0XHQmLmFjdGl2ZVxuXHRcdFx0XHRcdCYuY3VycmVudC1tZW51LWl0ZW1cblx0XHRcdFx0XHQmLmN1cnJlbnQtbWVudS1wYXJlbnRcblx0XHRcdFx0XHQmLmN1cnJlbnQtbWVudS1hbmNlc3RvclxuXHRcdFx0XHRcdFx0PiBhXG5cdFx0XHRcdFx0XHRcdGJvcmRlci1sZWZ0IDRweCBzb2xpZCAjYTkyYTNhXG5cdFx0XHRcdFx0XHQ+IHVsXG5cdFx0XHRcdFx0XHRcdGRpc3BsYXkgYmxvY2sgIWltcG9ydGFudFxuXHRcdFx0XHRcdD4gYVxuXHRcdFx0XHRcdFx0ZGlzcGxheSBibG9ja1xuXHRcdFx0XHRcdFx0dGV4dC10cmFuc2Zvcm0gIHVwcGVyY2FzZVxuXHRcdFx0XHRcdFx0Zm9udC1mYW1pbHkgJGZvbnQxXG5cdFx0XHRcdFx0XHRmb250LXNpemUgMS4xZW1cblx0XHRcdFx0XHRcdHBhZGRpbmcgMTVweFxuXHRcdFx0XHRcdFx0Y3Vyc29yIHBvaW50ZXIgIWltcG9ydGFudFxuXHRcdFx0XHRcdFx0Y29sb3IgI0ZGRlxuXHRcdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uIG5vbmVcblx0XHRcdFx0XHRcdGJvcmRlci1ib3R0b20gMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjEpXG5cdFx0XHRcdFx0XHRib3JkZXItbGVmdCA0cHggc29saWQgdHJhbnNwYXJlbnRcblx0XHRcdFx0XHRcdCY6aG92ZXJcblx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZCBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwyNTUsMjU1LC4xKSxyZ2JhKDI1NSwyNTUsMjU1LC4yKSlcblx0XHRcdFx0XHQ+IHVsXG5cdFx0XHRcdFx0XHRkaXNwbGF5IG5vbmVcblx0XHRcdFx0XHRcdD4gbGlcblx0XHRcdFx0XHRcdFx0Ji5jdXJyZW50LW1lbnUtaXRlbVxuXHRcdFx0XHRcdFx0XHQmLmN1cnJlbnQtbWVudS1wYXJlbnRcblx0XHRcdFx0XHRcdFx0Ji5jdXJyZW50LW1lbnUtYW5jZXN0b3Jcblx0XHRcdFx0XHRcdFx0XHQ+IGFcblx0XHRcdFx0XHRcdFx0XHRcdGJvcmRlci1sZWZ0IDRweCBzb2xpZCAjYTkyYTNhXG5cdFx0XHRcdFx0XHRcdFx0XHRwb3NpdGlvbiByZWxhdGl2ZVxuXHRcdFx0XHRcdFx0XHRcdD4gdWxcblx0XHRcdFx0XHRcdFx0XHRcdGRpc3BsYXkgYmxvY2tcblx0XHRcdFx0XHRcdFx0XHRcdGJvcmRlci1sZWZ0IDRweCBzb2xpZCAjOTE5MTkxXG5cdFx0XHRcdFx0XHRcdD4gYVxuXHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmQgI0QwQ0RERFxuXHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmQgbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSxyZ2JhKDI1NSwyNTUsMjU1LC43KSxyZ2JhKDI1NSwyNTUsMjU1LC44KSlcblx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5IGJsb2NrXG5cdFx0XHRcdFx0XHRcdFx0dGV4dC1hbGlnbiBsZWZ0XG5cdFx0XHRcdFx0XHRcdFx0cGFkZGluZyAxNXB4IDEwcHhcblx0XHRcdFx0XHRcdFx0XHRmb250LWZhbWlseSAkZm9udDFcblx0XHRcdFx0XHRcdFx0XHRjb2xvciAjMDAwXG5cdFx0XHRcdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uIG5vbmVcblx0XHRcdFx0XHRcdFx0XHRib3JkZXItbGVmdCA0cHggc29saWQgdHJhbnNwYXJlbnRcblx0XHRcdFx0XHRcdFx0XHRib3JkZXItYm90dG9tIDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC41KVxuXHRcdFx0XHRcdFx0XHRcdCY6aG92ZXJcblx0XHRcdFx0XHRcdFx0XHRcdGJvcmRlci1sZWZ0IDRweCBzb2xpZCAjYTkyYTNhXG5cdFx0XHRcdFx0XHRcdD4gdWxcblx0XHRcdFx0XHRcdFx0XHRkaXNwbGF5IG5vbmVcblx0XHRcdFx0XHRcdFx0XHQ+IGxpXG5cdFx0XHRcdFx0XHRcdFx0XHQ+IGFcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGlzcGxheSBibG9ja1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyB0ZXh0LWFsaWduIHJpZ2h0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvbnQtZmFtaWx5ICRmb250MVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRib3JkZXItdG9wIDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC40KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRib3JkZXItYm90dG9tIDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC40KVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYWRkaW5nIDEwcHggMTBweCAxMHB4IDE1cHhcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9udC1zaXplIC45ZW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0YmFja2dyb3VuZCAjRTJEREVEXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJhY2tncm91bmQgbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSxyZ2JhKDI1NSwyNTUsMjU1LC44KSxyZ2JhKDI1NSwyNTUsMjU1LC45KSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sb3IgIzAwMFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb24gbm9uZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRib3JkZXItbGVmdCA0cHggc29saWQgdHJhbnNwYXJlbnRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Jjpob3ZlclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJvcmRlci1sZWZ0IDRweCBzb2xpZCAjYTkyYTNhXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0Ly8gZGlzcGxheSBub25lXG5cdD4gbWFpblxuXHRcdHBvc2l0aW9uIHJlbGF0aXZlXG5cdFx0bWFyZ2luLWxlZnQgMzAwcHhcblx0XHQ+IGhlYWRlclxuXHRcdD4gc2VjdGlvblxuXHRcdFx0b3ZlcmZsb3cgaGlkZGVuXG5cdFx0XHRtYXJnaW4tcmlnaHQgMzYwcHhcblx0XHRcdD4gaGVhZGVyXG5cdFx0XHRcdHBhZGRpbmcgMTVweCAwXG5cdFx0XHRcdHRleHQtYWxpZ24gY2VudGVyXG5cdFx0XHRcdGJvcmRlci1ib3R0b20gMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpXG5cdFx0XHRcdGltZ1xuXHRcdFx0XHRcdG1heC13aWR0aCA4MCVcblx0XHRcdFx0XHRoZWlnaHQgYXV0b1xuXHRcdD4gYXNpZGVcblx0XHRcdGZpeGVkIHJpZ2h0IDAgdG9wIDBcblx0XHRcdG92ZXJmbG93LXkgc2Nyb2xsXG5cdFx0XHRvdmVyZmxvdy14IG5vbmVcblx0XHRcdHNpemUgMzYwcHggMTAwJVxuXHRcdFx0I2NvcHlsZWZ0XG5cdFx0XHRcdG1hcmdpbiAxNXB4IDAgMFxuXHRcdFx0XHRmb250LWZhbWlseSAkZm9udDFcblx0XHRcdFx0cGFkZGluZyAxMHB4IDVweFxuXHRcdFx0XHRyZWxhdGl2ZSBib3R0b20gMCByaWdodCAwXG5cdFx0XHRcdC8vIGJhY2tncm91bmQgIzAwMFxuXHRcdFx0XHRib3JkZXItdG9wIDRweCBzb2xpZCAjRDhEOEQ4XG5cdFx0XHRcdGJvcmRlci1ib3R0b20gNHB4IHNvbGlkICNCMkIyQjJcblx0XHRcdFx0Ym9yZGVyLWxlZnQgNHB4IHNvbGlkICNFN0U3RTdcblx0XHRcdFx0Ym9yZGVyLXJpZ2h0IDRweCBzb2xpZCAjRTdFN0U3XG5cdFx0XHRcdGJvcmRlci1yYWRpdXMgNXB4XG5cdFx0XHRcdGJhY2tncm91bmQgbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI0U3RTdFNywgI0NFQ0VDRSlcblx0XHRcdC53aWRnZXRcblx0XHRcdFx0Y2xlYXJmaXgoKVxuXHRcdFx0XHRtYXJnaW4gMCAwIDE1cHggMFxuXHRcdFx0XHQud2lkZ2V0LXRpdGxlXG5cdFx0XHRcdFx0Zm9udC1mYW1pbHkgJGZvbnQxXG5cdFx0XHRcdFx0Zm9udC13ZWlnaHQgYm9sZFxuXHRcdFx0XHRcdGZvbnQtc2l6ZSAxLjRlbVxuXHRcdFx0XHQudGV4dHdpZGdldFxuXHRcdFx0XHRcdGZvbnQtZmFtaWx5ICRmb250MlxuXHRcdFx0I2JsYWNrLXN0dWRpby10aW55bWNlLTZcblx0XHRcdFx0LnRleHR3aWRnZXRcblx0XHRcdFx0XHRsaW5lLWhlaWdodCAxLjJlbVxuLnBvc3QtdHlwZS1hcmNoaXZlLXBob3Rvc1xuLnBvc3QtdHlwZS1hcmNoaXZlLXZpZGVvc1xuXHQuZmVlZFxuXHRcdGNsZWFyZml4KClcblx0XHRhcnRpY2xlXG5cdFx0XHRib3JkZXItYm90dG9tIG5vbmUgIWltcG9ydGFudFxuXHRcdFx0Y29sKDEvMiwgY3ljbGU6IDIpXG5cdFx0XHRAbWVkaWEobWF4LXdpZHRoICQudGFibGV0KVxuXHRcdFx0XHRzdGFjaygpXG5cdFx0XHRpbWcuZmVhdHVyZWRcblx0XHRcdFx0bWF4LXdpZHRoIDEwMCUgIWltcG9ydGFudFxuXHRcdFx0XHRib3gtc2hhZG93IDFweCAxcHggM3B4IHJnYmEoMCwwLDAsLjUpXG4uc2luZ2xlLXBob3Rvc1xuXHRoZWFkZXJcblx0XHRoMVxuXHRcdFx0Ym9yZGVyLWJvdHRvbSAxcHggc29saWQgIzhDOEM4QyAhaW1wb3J0YW50XG5cdFx0XHRhXG5cdFx0XHRcdHRleHQtZGVjb3JhdGlvbiBub25lXG5cdFx0XHRcdGNvbG9yICM4QjhCOEIgIWltcG9ydGFudFxuXHRcdFx0XHQmOmhvdmVyXG5cdFx0XHRcdFx0Y29sb3IgYmx1ZVxuLmFyY2hpdmVcbi5jYXRlZ29yeVxuLnNlYXJjaFxuLmhvbWVcbi5ibG9nXG5cdC53cmFwcGVyXG5cdFx0Y2VudGVyKDk1JSlcblx0XHQ+IGhlYWRlclxuXHRcdFx0Zm9udC1zaXplIDEuNGVtXG5cdFx0XHRmb250LXdlaWdodCBib2xkXG5cdFx0XHRmb250LWZhbWlseSAkZm9udDFcblx0XHRcdHBhZGRpbmcgMTVweCAwIDBweCAhaW1wb3J0YW50XG5cdFx0XHR0ZXh0LXRyYW5zZm9ybSB1cHBlcmNhc2Vcblx0XHRcdGJvcmRlci1ib3R0b20gMXB4IHNvbGlkICNFNUU1RTVcblx0XHRcdG1hcmdpbi1ib3R0b20gMTVweCAhaW1wb3J0YW50XG5cdFx0LmZlZWRcblx0XHRcdGFydGljbGVcblx0XHRcdFx0Y2xlYXJmaXgoKVxuXHRcdFx0XHRtYXJnaW4gMCAwIDAgMFxuXHRcdFx0XHRwYWRkaW5nIDIwcHggMCAyMHB4IDBcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbSAxcHggc29saWQgI0RDRENEQ1xuXHRcdFx0XHRoZWFkZXJcblx0XHRcdFx0XHRhXG5cdFx0XHRcdFx0XHRjb2xvciBibHVlXG5cdFx0XHRcdFx0XHRmb250LXNpemUgMS40ZW1cblx0XHRcdFx0XHRcdGZvbnQtZmFtaWx5ICRmb250MVxuXHRcdFx0XHRcdFx0Jjpob3ZlclxuXHRcdFx0XHRcdFx0XHR0ZXh0LWRlY29yYXRpb24gbm9uZVxuXHRcdFx0XHQudGltZWFnb1xuXHRcdFx0XHRcdGZvbnQtd2VpZ2h0IGJvbGRcblx0XHRcdFx0XHRmb250LWZhbWlseSAkZm9udDFcblx0XHRcdFx0XHRjb2xvciAjNzc3Nzc3ICFpbXBvcnRhbnRcblx0XHRcdFx0c2VjdGlvbi5jb250ZW50XG5cdFx0XHRcdFx0cGFkZGluZyAxMHB4IDBcblx0XHRcdFx0XHRsaW5lLWhlaWdodCAxLjJlbVxuXHRcdFx0XHRcdGZvbnQtZmFtaWx5ICRmb250MlxuXHRcdFx0XHRcdHRleHQtYWxpZ24ganVzdGlmeVxuXHRcdFx0XHRcdGltZy5mZWF0dXJlZFxuXHRcdFx0XHRcdFx0bWFyZ2luIDAgMTBweCAwIDBcblx0XHRcdFx0XHRcdG1heC13aWR0aCAyMDBweFxuXHRcdFx0XHRcdFx0aGVpZ2h0IGF1dG9cblx0XHRcdFx0XHRcdGZsb2F0IGxlZnRcblx0XHRcdFx0XHRcdEBtZWRpYShtYXgtd2lkdGggJC5waG9uZS1sYW5kc2NhcGUpXG5cdFx0XHRcdFx0XHRcdHN0YWNrKClcblx0XHRcdFx0XHRcdFx0bWFyZ2luLWJvdHRvbSA1cHhcblx0XHRcdFx0XHRcdFx0c2l6ZSAxMDAlIGF1dG9cblx0XHRcdFx0XHRcdFx0bWF4LXdpZHRoIG5vbmUgIWltcG9ydGFudFxuXHRcdFx0XHRcdFx0XHRmbG9hdCBub25lXG5cdFx0XHRcdFx0cC5yZWFkbW9yZVxuXHRcdFx0XHRcdFx0cGFkZGluZyAxMHB4IDAgIWltcG9ydGFudFxuLnBhZ2Vcbi5zaW5nbGVcblx0LndyYXBwZXJcblx0XHRjZW50ZXIoOTUlKVxuXHRiLCBzdHJvbmdcblx0XHRmb250LXdlaWdodCBib2xkXG5cdGksIGVtXG5cdFx0Zm9udC1zdHlsZSBpdGFsaWNcblx0aDEsaDIsaDMsaDQsaDVcblx0XHRmb250LXdlaWdodCBib2xkXG5cdGgxXG5cdFx0Zm9udC1zaXplIDEuNmVtXG5cdGgyXG5cdFx0Zm9udC1zaXplIDEuNWVtXG5cdGgzXG5cdFx0Zm9udC1zaXplIDEuNGVtXG5cdGg0XG5cdFx0Zm9udC1zaXplIDEuM2VtXG5cdGg1XG5cdFx0Zm9udC1zaXplIDEuMmVtXG5cdGFydGljbGVcblx0XHRoZWFkZXJcblx0XHRcdHBhZGRpbmcgMjBweCAwXG5cdFx0XHRoMVxuXHRcdFx0XHRmb250LXNpemUgMmVtXG5cdFx0XHRcdGZvbnQtZmFtaWx5ICRmb250MVxuXHRcdFx0XHRib3JkZXItYm90dG9tIDFweCBzb2xpZCByZ2JhKDAsMCwwLC42KVxuXHRcdC5ib2R5XG5cdFx0XHRpbWdcblx0XHRcdFx0bWF4LXdpZHRoIDEwMCUgIWltcG9ydGFudFxuXHRcdFx0XHRoZWlnaHQgYXV0b1xuXHRcdFx0Ly8gQG1lZGlhKG1heC13aWR0aCAkLnRhYmxldC1sYW5kc2NhcGUpXG5cdFx0XHRAbWVkaWEobWluLXdpZHRoICQudGFibGV0LWxhbmRzY2FwZS1wbHVzKVxuXHRcdFx0XHRpbWcuYWxpZ25sZWZ0XG5cdFx0XHRcdFx0ZmxvYXQgbGVmdFxuXHRcdFx0XHRcdG1heC13aWR0aCA0MCVcblx0XHRcdFx0XHRoZWlnaHQgYXV0b1xuXHRcdFx0XHRcdG1hcmdpbiAwIDEwcHggNXB4IDBcblx0XHRcdFx0aW1nLmFsaWducmlnaHRcblx0XHRcdFx0XHRtYXgtd2lkdGggNDAlXG5cdFx0XHRcdFx0aGVpZ2h0IGF1dG9cblx0XHRcdFx0XHRmbG9hdCByaWdodFxuXHRcdFx0XHRcdG1hcmdpbiAwIDAgMTBweCA1cHhcblx0XHRcdGltZyxhbGlnbmNlbnRlclxuXHRcdFx0XHRjbGVhcmZpeCgpXG5cdFx0XHRmb250LWZhbWlseSAkZm9udDJcblx0XHRcdGZvbnQtc2l6ZSAxZW1cblx0XHRcdGxpbmUtaGVpZ2h0IDEuMmVtXG5cdFx0XHQvLyB0ZXh0LWFsaWduIGp1c3RpZnlcblx0XHRcdHAsIGRpdlxuXHRcdFx0XHRtYXJnaW4gMTBweCAwXG5cdFx0XHRcdHRleHQtYWxpZ24ganVzdGlmeVxuXHRcdFx0YVxuXHRcdFx0XHR0ZXh0LWRlY29yYXRpb24gbm9uZVxuXHRcdFx0XHQmOmhvdmVyXG5cdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uIHVuZGVybGluZVxuXHQucGFnZXNfbmF2XG5cdFx0dGV4dC1hbGlnbiBjZW50ZXJcblx0XHRmb250LXNpemUgMWVtXG5cdFx0cGFkZGluZyAxNXB4IDBcblx0XHRmb250LWZhbWlseSAkZm9udDJcblx0XHRhXG5cdFx0XHRwYWRkaW5nIDVweCAxMHB4XG5cdFx0XHRiYWNrZ3JvdW5kIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIzU3NTc1NywjMzgzODM4KVxuXHRcdFx0Ym9yZGVyIDFweCBzb2xpZCAjNTQ1NDU0XG5cdFx0XHRtYXJnaW4gMCA1cHhcblx0XHRcdGNvbG9yICNGRkZcblx0XHRcdHRleHQtZGVjb3JhdGlvbiBub25lXG5cdFx0XHRib3JkZXItcmFkaXVzIDVweFxuXHRcdFx0Jjpob3ZlclxuXHRcdFx0XHRiYWNrZ3JvdW5kICM4RjhGOEZcblx0XHRcdFx0XG4ucGFnZS10ZW1wbGF0ZS1wYWdlLW1vcnRpcm9sb2dcblx0c2VjdGlvbi5sZXR0ZXJfbmF2XG5cdFx0bWFyZ2luIDE1cHggMFxuXHRcdGxpbmUtaGVpZ2h0IDJlbVxuXHRcdGFcblx0XHRcdHBhZGRpbmcgNXB4IDEwcHhcblx0XHRcdGJhY2tncm91bmQgbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwjNTc1NzU3LCMzODM4MzgpXG5cdFx0XHRib3JkZXIgMXB4IHNvbGlkICM1NDU0NTRcblx0XHRcdGNvbG9yICNGRkZcblx0XHRcdGJvcmRlci1yYWRpdXMgNXB4XG5cdFx0XHR0ZXh0LWRlY29yYXRpb24gbm9uZVxuXHRcdFx0Jjpob3ZlclxuXHRcdFx0XHRiYWNrZ3JvdW5kIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIzczNzM3MywjNTI1MjUyKVxuXHRcdFx0Ji5hY3RpdmVcblx0XHRcdFx0Ym9yZGVyIG5vbmVcblx0XHRcdFx0YmFja2dyb3VuZCBub25lXG5cdFx0XHRcdGNvbG9yIGJsYWNrXG5cdFx0XHRcdGZvbnQtd2VpZ2h0IGJvbGRcblx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uIHVuZGVybGluZVxuLnBhZ2UtaWQtMTA0XG5cdC5ib2R5XG5cdFx0dGRcblx0XHRcdHBhZGRpbmcgMTBweFxuLnBhZ2UtaWQtMTA5XG5cdC5jb21tZW50LXJlc3BvbmRcblx0XHRmb250LWZhbWlseSAkZm9udDFcblx0XHRoM1xuXHRcdFx0Zm9udC1zaXplIDEuNmVtXG5cdFx0XHRmb250LXdlaWdodCBib2xkXG5cdFx0XHRib3JkZXItYm90dG9tIDFweCBzb2xpZCBcblx0XHRmb3JtXG5cdFx0XHRsYWJlbFxuXHRcdFx0XHRkaXNwbGF5IGJsb2NrXG5cdFx0XHRwXG5cdFx0XHRcdHBhZGRpbmcgMTBweCAwXG5cdFx0XHRpbnB1dFt0eXBlPVwidGV4dFwiXSwgdGV4dGFyZWFcblx0XHRcdFx0Ym9yZGVyLXJhZGl1cyA1cHhcblx0XHRcdFx0Ym9yZGVyIDFweCBzb2xpZCAjQThBOEE4XG5cdFx0XHRcdGZvbnQtc2l6ZSAxLjFlbVxuXHRcdFx0XHRmb250LWZhbWlseSAkZm9udDJcblx0XHRcdFx0Jjpmb2N1c1xuXHRcdFx0XHRcdG91dGxpbmUgMXB4IDBweCAxcHggIzkyQURGRlxuXHRcdFx0aW5wdXRbdHlwZT1cInN1Ym1pdFwiXVxuXHRcdFx0XHRwYWRkaW5nIDEwcHhcblx0XHRcdFx0Zm9udC1zaXplIDEuMmVtXG5cdFx0XHQuY29tbWVudC1mb3JtLWNvbW1lbnRcblx0XHRcdFx0dGV4dGFyZWFcblx0XHRcdFx0XHRzaXplIDEwMCUgMjAwcHhcblx0aDMjY29tbWVudHNcblx0XHRkaXNwbGF5IG5vbmUgIWltcG9ydGFudFxuXHQubmF2aWdhdGlvblxuXHRcdHBhZGRpbmcgMTVweFxuXHRcdG1hcmdpbiAzMHB4XG5cdFx0Ym9yZGVyIDFweCBzb2xpZCAjQkRCREJEXG5cdFx0Y2xlYXJmaXgoKVxuXHRcdC5hbGlnbmxlZnRcblx0XHRcdGZsb2F0IGxlZnRcblx0XHQuYWxpZ25yaWdodFxuXHRcdFx0ZmxvYXQgcmlnaHRcblx0b2wuY29tbWVudGxpc3Rcblx0XHRsaS5jb21tZW50XG5cdFx0XHRwb3NpdGlvbiByZWxhdGl2ZVxuXHRcdFx0bWFyZ2luIDE1cHggMFxuXHRcdFx0cGFkZGluZyAxNXB4IDBcblx0XHRcdGJvcmRlci1ib3R0b20gMXB4IHNvbGlkICNCQ0JDQkNcblx0XHRcdC52Y2FyZFxuXHRcdFx0XHQuYXZhdGFyXG5cdFx0XHRcdFx0ZGlzcGxheSBub25lXG5cdFx0XHRcdC5mblxuXHRcdFx0XHRcdGZvbnQtd2VpZ2h0IGJvbGRcblx0XHRcdFx0XHRmb250LXNpemUgMS4yZW1cblx0XHRcdC5jb21tZW50bWV0YWRhdGFcblx0XHRcdFx0YWJzb2x1dGUgdG9wIDEwcHggcmlnaHQgMFxuXHRcdFx0XHRhXG5cdFx0XHRcdFx0Y29sb3IgI0JEQkRCRFxuXHRcdFx0XHRcdHRleHQtZGVjb3JhdGlvbiBub25lXG5cdFx0XHRcdFx0XG5cdFx0XHRcdFxuXHRcdFx0cFxuXHRcdFx0XHRwYWRkaW5nIDVweCAwXG5cdFx0XHRcdGZvbnQtZmFtaWx5ICRmb250MlxuLmFkbWluLWJhciAjc2VhcmNoXG5cdC5jbG9zZVxuXHRcdHRvcCAzMHB4ICFpbXBvcnRhbnRcblx0XHR2ZXJ0aWNhbC1hbGlnbiB0b3AgIWltcG9ydGFudFxuYm9keVxuXHRsYWJlbFtmb3I9dG9nZ2xlLW1lbnVdXG5cdFx0YWJzb2x1dGUgdG9wIDVweCBsZWZ0IDVweFxuXHRcdGZvbnQtc2l6ZSAxLjZlbVxuXHRcdGlcblx0XHRcdGZvbnQtc3R5bGUgbm9ybWFsXG5cdFx0QG1lZGlhKG1pbi13aWR0aCAkLnRhYmxldC1sYW5kc2NhcGUpXG5cdFx0XHRkaXNwbGF5IG5vbmUgIWltcG9ydGFudFxuXHRcdEBtZWRpYShtYXgtd2lkdGggJC5waG9uZS1sYW5kc2NhcGUpXG5cdFx0XHRhYnNvbHV0ZSB0b3AgMjdweCBsZWZ0IDVweFxuXHRcdFx0dG9wIDI3cHggIWltcG9ydGFudFxuXHRAbWVkaWEobWF4LXdpZHRoICQudGFibGV0LWxhbmRzY2FwZSlcblx0XHQ+IGFzaWRlXG5cdFx0XHRkaXNwbGF5IG5vbmVcblx0XHRcdHotaW5kZXggMTAwMFxuXHRcdFx0YmFja2dyb3VuZCAjMDAwXG5cdFx0PiBtYWluXG5cdFx0XHR6LWluZGV4IDFcblx0XHRcdG1hcmdpbi1sZWZ0IDBcblx0XHQjdG9nZ2xlLW1lbnVcblx0XHRcdCY6Y2hlY2tlZCBcblx0XHRcdFx0Jn4gYXNpZGVcblx0XHRcdFx0XHRkaXNwbGF5IGJsb2NrICFpbXBvcnRhbnRcblx0XHRcdFx0Jn4gbWFpblxuXHRcdFx0XHRcdGxhYmVsW2Zvcj10b2dnbGUtbWVudV1cblx0XHRcdFx0XHRcdGFic29sdXRlIHRvcCAwIGxlZnQgMFxuXHRcdFx0XHRcdFx0c2l6ZSAxMDAlIDEwMCVcblx0XHRcdFx0XHRcdGlcblx0XHRcdFx0XHRcdFx0YWJzb2x1dGUgdG9wIDVweCBsZWZ0IDVweFxuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0IDMwMHB4ICFpbXBvcnRhbnRcblx0XHRcdFx0XHQ+IHNlY3Rpb25cblx0XHRcdFx0XHRcdG1hcmdpbi1yaWdodCAwICFpbXBvcnRhbnRcblx0XHRcdFx0XHRjbGVhcmZpeCgpXG5cdFx0XHRcdFx0PiBhc2lkZVxuXHRcdFx0XHRcdFx0I2JsYWNrLXN0dWRpby10aW55bWNlLTVcblx0XHRcdFx0XHRcdFx0ZGlzcGxheSBub25lXG5cdFx0XHRcdFx0XHRkaXNwbGF5IGJsb2NrICFpbXBvcnRhbnRcblx0XHRcdFx0XHRcdHBvc2l0aW9uIHJlbGF0aXZlXG5cdFx0XHRcdFx0XHRjbGVhcmZpeCgpXG5cdFx0XHRcdFx0XHRtYXJnaW4gMCAxNXB4XG5cdFx0XHRcdFx0XHRwYWRkaW5nIDE1cHhcblx0XHRcdFx0XHRcdHN0YWNrKClcblx0QG1lZGlhKG1heC13aWR0aCAkLnRhYmxldClcblx0XHQ+IG1haW5cblx0XHRcdHBvc2l0aW9uIHJlbGF0aXZlXG5cdFx0XHQ+IHNlY3Rpb24gXG5cdFx0XHRcdG1hcmdpbi1yaWdodCAwICFpbXBvcnRhbnRcblx0XHRcdGNsZWFyZml4KClcblx0XHRcdHN0YWNrKClcblx0XHRcdD4gYXNpZGVcblx0XHRcdFx0d2lkdGggYXV0b1xuXHRcdFx0XHRtYXgtd2lkdGggOTUlXG5cdFx0XHRcdHBvc2l0aW9uIHJlbGF0aXZlXG5cdFx0XHRcdGNsZWFyZml4KClcblx0XHRcdFx0c3RhY2soKVxuXHRcdFx0XHRwYWRkaW5nIDEwcHhcblx0XHRcdFx0I2JsYWNrLXN0dWRpby10aW55bWNlLTVcblx0XHRcdFx0XHRkaXNwbGF5IG5vbmUgIWltcG9ydGFudFxuXHRcdCN0b2dnbGUtbWVudVx0XHRcblx0XHRcdCY6Y2hlY2tlZCBcblx0XHRcdFx0Jn4gYXNpZGVcblx0XHRcdFx0XHRkaXNwbGF5IG5vbmVcblx0XHRcdFx0Jn4gbWFpblxuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0IDMwMHB4ICFpbXBvcnRhbnRcbiNzZWFyY2hcblx0ZGlzcGxheSBub25lXG5cdG9wYWNpdHkgMFxuXHR2aXNpYmlsaXR5IGhpZGRlblxuXHR0cmFuc2l0aW9uIGFsbCAxcyBlYXNlLW91dFxuXHR0cmFuc2Zvcm0gc2NhbGUoMC4wMDAxKVxuXHRzaXplIDEwMCUgMTAwJVxuXHRmaXhlZCB0b3AgMCBsZWZ0IDBcblx0YmFja2dyb3VuZCByZ2JhKDAsMCwwLC43NzcpXG5cdHotaW5kZXggMTAwMVxuXHQuY2xvc2UgXG5cdFx0YWJzb2x1dGUgdG9wIDBweCByaWdodCAwcHhcblx0XHRjb2xvciAjRkZGXG5cdFx0Zm9udC1zaXplIDEuOGVtXG5cdFx0c2l6ZSA1MHB4IDUwcHhcblx0XHR2ZXJ0aWNhbC1hbGlnbiBtaWRkbGVcblx0XHRiYWNrZ3JvdW5kOiAkY29sb3JzLnJlZDFcblx0XHRsaW5lLWhlaWdodCA1MHB4XG5cdFx0dGV4dC1hbGlnbiBjZW50ZXJcblx0XHR6LWluZGV4IDEwMDBcblx0XHRpLmZhLWNsb3NlXG5cdFx0XHRsaW5lLWhlaWdodCA1MHB4XG5cdGxhYmVsOm50aC1jaGlsZCgyKVxuXHRcdGFic29sdXRlIHRvcCAwIGxlZnQgMFxuXHRcdHNpemUgMTAwJSAxMDAlXG5cdFx0ei1pbmRleCAyXG5cdGZvcm1cblx0XHR6LWluZGV4IDEwMFxuXHRcdHNpemUgNjAwcHggNTBweFxuXHRcdG1hcmdpbiAtMjVweCAwIDAgLTMwMHB4XG5cdFx0YWJzb2x1dGUgdG9wIDUwJSBsZWZ0IDUwJVxuXHRcdGJvcmRlci1ib3R0b20gMXB4IHNvbGlkICB3aGl0ZVxuXHRcdEBtZWRpYShtYXgtd2lkdGggJC50YWJsZXQtbGFuZHNjYXBlKVxuXHRcdFx0c2l6ZSA5NSUgNTBweFxuXHRcdFx0YWJzb2x1dGUgdG9wIDE1JSBsZWZ0IDIlXG5cdFx0XHRtYXJnaW4gMCAhaW1wb3J0YW50XG5cdFx0aW5wdXRcblx0XHRcdHNwYW4oOS8xMClcblx0XHRcdHBhZGRpbmcgMCBcblx0XHRcdGZvbnQtc2l6ZSAxLjhlbVxuXHRcdFx0Y29sb3IgI0ZGRlxuXHRcdFx0Zm9udC1mYW1pbHkgJGZvbnQxXG5cdFx0XHRmb250LXdlaWdodCA3MDBcblx0XHRcdGxpbmUtaGVpZ2h0IDUwcHhcblx0XHRcdGhlaWdodCA1MHB4XG5cdFx0XHRib3JkZXIgbm9uZVxuXHRcdFx0YmFja2dyb3VuZCB0cmFuc3BhcmVudFxuXHRcdFx0Ym94LXNoYWRvdyAwcHggMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjQpXG5cdFx0YnV0dG9uXG5cdFx0XHRzcGFuKDEvMTApXG5cdFx0XHRjdXJzb3IgcG9pbnRlclxuXHRcdFx0aGVpZ2h0IDUwcHhcblx0XHRcdHRleHQtYWxpZ24gcmlnaHRcblx0XHRcdGZvbnQtc2l6ZSAxLjhlbVxuXHRcdFx0Y29sb3IgI0ZGRlxuXHRcdFx0YmFja2dyb3VuZCBub25lXG5cdFx0XHRib3JkZXIgbm9uZVx0XHRcbi5wYWdpbmF0aW9uXG5cdHRleHQtYWxpZ24gY2VudGVyXG4ucGFnZXJcblx0bWFyZ2luIDAgMCAyMHB4IDBcblx0cGFkZGluZyAwIDAgMjBweCAwXG5cdGFcblx0XHR0ZXh0LWRlY29yYXRpb24gbm9uZVxuXHRcdGNvbG9yIHJnYmEoMCwwLDAsLjgpXG5cdFx0Jjpob3ZlclxuXHRcdFx0Y29sb3IgY29sb3IxXG5cdCNwcmV2XG5cdFx0ZmxvYXQgbGVmdFxuXHRcdG1hcmdpbi1sZWZ0IDVweFxuXHQjbmV4dFxuXHRcdGZsb2F0IHJpZ2h0XG5cdFx0bWFyZ2luLXJpZ2h0IDVweFxuXHRsYWJlbFxuXHRcdEBtZWRpYShtYXgtd2lkdGggJC50YWJsZXQtbGFuZHNjYXBlKVxuXHRcdFx0ZGlzcGxheSBub25lXG5cdFx0Zm9udC13ZWlnaHQgYm9sZGVyXG5cdFx0Y3Vyc29yIGhlbHBcblx0XHRjb2xvciByZ2JhKDAsMCwwLC4zKVxuXHRcdHRleHQtc2hhZG93IDFweCAxcHggMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjkpXG4ucGFnaW5hdG9yXG5cdGZvbnQtZmFtaWx5ICRmb250MlxuXHRzaXplIDEwMCUgYXV0b1xuYSNpbmZpbml0ZS1zY3JvbGxcblx0Zm9udC1mYW1pbHkgJGZvbnQyXG5cdGRpc3BsYXkgYmxvY2tcblx0c2l6ZSAxMDAlIGF1dG9cblx0QG1lZGlhKG1heC13aWR0aCAkLnRhYmxldC1sYW5kc2NhcGUpXG5cdFx0Y2VudGVyKClcblx0XHRzaXplIDk1JSBhdXRvXG5cdHBhZGRpbmcgMTBweCAwXG5cdGJhY2tncm91bmQgbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgwLDAsMCwuMSkscmdiYSgwLDAsMCwuMikpXG5cdGJvcmRlci1yYWRpdXMgNXB4IFxuXHRtYXJnaW4gMTBweCAwXG5cdGJvcmRlci1sZWZ0IDFweCBzb2xpZCByZ2JhKDAsMCwwLC4xKVxuXHRib3JkZXItcmlnaHQgMXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpXG5cdGJvcmRlci1ib3R0b20gMnB4IHNvbGlkIHJnYmEoMCwwLDAsLjQpXG5cdHRleHQtZGVjb3JhdGlvbiBub25lXG5cdGNvbG9yIHJnYmEoMCwwLDAsLjgpXG5cdHRleHQtc2hhZG93IDFweCAxcHggMHB4IHJnYmEoMjU1LDI1NSwyNTUsMSlcblx0dHJhbnNpdGlvbiBhbGwgLjJzIGVhc2Utb3V0XG5cdGN1cnNvciBwb2ludGVyXG5cdCY6aG92ZXJcblx0XHQvLyBib3JkZXItdG9wIDRweCBzb2xpZCAjZWVmMmY0XG5cdFx0Ym9yZGVyLWJvdHRvbSAycHggc29saWQgcmdiYSgwLDAsMCwuMilcblx0XHR0cmFuc2Zvcm0gdHJhbnNsYXRlWSgycHgpXG5cdFx0dHJhbnNpdGlvbiBhbGwgLjJzIGVhc2UtaW5cblx0JjphY3RpdmVcblx0XHRib3gtc2hhZG93IGluc2V0IDBweCAycHggOHB4IC0ycHggcmdiYSgwLDAsMCwuNylcbiNpbmZpbml0ZS1zY3JvbGwtbG9hZGVyXG5cdG1hcmdpbiAxNXB4XG5cdGRpc3BsYXkgbm9uZVxuI2luZmluaXRlLXNjcm9sbC1lbmRcblx0cGFkZGluZyAxNXB4XG5cdHRleHQtYWxpZ24gY2VudGVyXG4ucGFnaW5hdGlvblxuXHRmb250LWZhbWlseSAkZm9udDJcblx0Y2YoKVxuXHQucGFnaW5hdG9yIFxuXHRcdHNpemUgMTAwJVxuXHRcdHBhZGRpbmcgMTBweCAwIDAgMFxuXHRcdHRhYmxlIFxuXHRcdFx0Ym9yZGVyLWNvbGxhcHNlIGNvbGxhcHNlXG5cdFx0XHR0YWJsZS1sYXlvdXQgZml4ZWRcblx0XHRcdHdpZHRoIDEwMCVcblx0XHRcdHRkIFxuXHRcdFx0XHRwYWRkaW5nIDBcblx0XHRcdFx0d2hpdGUtc3BhY2Ugbm93cmFwXG5cdFx0XHRcdHRleHQtYWxpZ24gY2VudGVyXG5cdFx0c3BhbiBcblx0XHRcdGRpc3BsYXkgYmxvY2tcblx0XHRcdHBhZGRpbmcgM3B4IDBcblx0XHRcdGNvbG9yICNmZmZcblx0XHRcdHN0cm9uZ1xuXHRcdFx0YSBcblx0XHRcdFx0cGFkZGluZyAycHggNnB4XG5cdFx0XHRcdHRleHQtZGVjb3JhdGlvbiBub25lXG5cdFx0XHRcdGNvbG9yIHJnYmEoMCwwLDAsLjgpXG5cdFx0XHRcdCY6aG92ZXJcblx0XHRcdFx0XHRjb2xvciBjb2xvcjFcblx0XHRcdHN0cm9uZyBcblx0XHRcdFx0YmFja2dyb3VuZCAjYjhiOGI4XG5cdFx0XHRcdGZvbnQtc3R5bGUgbm9ybWFsXG5cdFx0XHRcdGZvbnQtd2VpZ2h0IG5vcm1hbCBcblx0XHRcdFx0Ym9yZGVyLWJvdHRvbSAxcHggc29saWQgcmdiYSgwLDAsMCwxKVxuXHRcdFx0XHRjb2xvciAgI0ZGRlxuXHRcdFx0XHR0ZXh0LXNoYWRvdyAxcHggMXB4IDBweCByZ2JhKDAsMCwwLDEpXG5cdFx0XHRcdGJvcmRlci1yYWRpdXMgNXB4XG5cblx0XHQuc2Nyb2xsX2JhciBcblx0XHRcdHNpemUgMTAwJSAyMHB4XG5cdFx0XHRwb3NpdGlvbiByZWxhdGl2ZVxuXHRcdFx0bWFyZ2luLXRvcCAxMHB4IFxuXG5cdFx0LnNjcm9sbF90cm91Z2ggXG5cdFx0XHRzaXplIDEwMCUgN3B4XG5cdFx0XHRiYWNrZ3JvdW5kICNjY2Ncblx0XHRcdG92ZXJmbG93IGhpZGRlblxuXHRcdC5zY3JvbGxfa25vYlxuXHRcdFx0c2l6ZSBcblxuXG5cblx0XHQuY3VycmVudF9wYWdlX21hcmsgXG5cdFx0XHRwb3NpdGlvbiBhYnNvbHV0ZVxuXHRcdFx0ei1pbmRleCAxXG5cdFx0XHR0b3AgMCBcblx0XHRcdGxlZnQgMFxuXHRcdFx0c2l6ZSAwIDdweFxuXHRcdFx0b3ZlcmZsb3cgaGlkZGVuXG5cdFx0XHRiYWNrZ3JvdW5kIHRyYW5zcGFyZW50ICFpbXBvcnRhbnRcblx0XHRcdGNvbG9yICByZWQgIWltcG9ydGFudFxuXHQucGFnaW5hdG9yX3BhZ2VzIFxuXHRcdHdpZHRoIDEwMCVcblx0XHRwYWRkaW5nIDEwcHggMTBweCAxMHB4IDAgXG5cdFx0Y2YoKVxuXHRcdGZsb2F0IHJpZ2h0XG5cdFx0Zm9udC1zaXplIDAuOGVtIFxuXHRcdGNvbG9yICM4MDgwODBcblx0XHRtYXJnaW4tdG9wIC0xMHB4IFxuXHR0YWJsZVxuXHRcdGJvcmRlciBub25lICFpbXBvcnRhbnRcblx0XHR0clxuXHRcdFx0dGRcblx0XHRcdFx0Ym9yZGVyIG5vbmUgIWltcG9ydGFudFxuLnRvb2x0aXBcblx0Y3Vyc29yIGhlbHBcblx0cG9zaXRpb24gcmVsYXRpdmVcblx0JjphZnRlclxuXHRcdGJhY2tncm91bmQtY29sb3IgcmdiYSgwLDAsMCwuOClcdFxuXHRcdGJvcmRlci1yYWRpdXMgNXB4XG5cdFx0Y29sb3IgI0ZGRlxuXHRcdHRleHQtc2hhZG93ICMwMDBcblx0XHRjb250ZW50IGF0dHIoZGF0YS10aXRsZSlcblx0XHRwYWRkaW5nIDdweCA3cHhcblx0XHRmb250LWZhbWlseSAkZm9udDFcblx0XHRsaW5lLWhlaWdodCAxLjRlbVxuXHRcdGFic29sdXRlIGJvdHRvbSAtMjAwJSBcblx0XHRzaXplIDMwMHB4IGF1dG9cblx0XHR0cmFuc2Zvcm0gdHJhbnNsYXRlWCgtNTAlKVxuXHRcdGZvbnQtc2l6ZSAuOGVtXG5cdFx0dGV4dC1zaGFkb3cgbm9uZSAhaW1wb3J0YW50XG5cdFx0dmlzaWJpbGl0eSBoaWRkZW5cblx0XHRvcGFjaXR5IDBcblx0XHR0cmFuc2l0aW9uIGFsbCAuNHMgZWFzZS1pbi1vdXRcblx0Jjpob3Zlcjo6YWZ0ZXJcblx0XHRvcGFjaXR5IDFcblx0XHR2aXNpYmlsaXR5IHZpc2libGVcbmJsb2NrcXVvdGVcblx0cGFkZGluZyAxMHB4XG5cdC8vYm9yZGVyLXRvcCAzcHggc29saWQgcmdiYSgwLDAsMCwuMilcblx0Ym9yZGVyLWJvdHRvbSAzcHggc29saWQgcmdiYSgwLDAsMCwuMSlcblx0Ym94LXNoYWRvdyAwcHggMXB4IDVweCByZ2JhKDAsMCwwLC4zKVxuXHRib3JkZXItcmFkaXVzIDVweFxuXHRtYXJnaW4gMTBweCAwcHggMjBweFxuXHRjb2xvciByZ2JhKDAsMCwwLC43KVxuXHRiYWNrZ3JvdW5kLWNvbG9yIHJnYmEoMCwwLDAsLjEpXG5cdHBcblx0XHRtYXJnaW4gMTBweCAhaW1wb3J0YW50XG5cdFx0cGFkZGluZyAwICFpbXBvcnRhbnRcbiIsIi8vIEJhc2VkIG9uIFtFcmljIE1leWVyJ3MgcmVzZXRdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90aG91Z2h0cy8yMDA3LzA1LzAxL3Jlc2V0LXJlbG9hZGVkLylcblxuZ2xvYmFsLXJlc2V0KClcbiAgaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGRcbiAgICByZXNldC1ib3gtbW9kZWwoKVxuICAgIHJlc2V0LWZvbnQoKVxuICBib2R5XG4gICAgcmVzZXQtYm9keSgpXG4gIG9sLCB1bFxuICAgIGxpc3Qtc3R5bGU6IG5vbmVcbiAgdGFibGVcbiAgICByZXNldC10YWJsZSgpXG4gIGNhcHRpb24sIHRoLCB0ZFxuICAgIHJlc2V0LXRhYmxlLWNlbGwoKVxuICBhIGltZ1xuICAgIGJvcmRlcjogbm9uZVxuXG5uZXN0ZWQtcmVzZXQoKVxuICBkaXYsIHNwYW4sIG9iamVjdCwgaWZyYW1lLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLFxuICBwcmUsIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGNvZGUsIGRlbCwgZGZuLCBlbSwgaW1nLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLCBmaWVsZHNldCwgZm9ybSwgbGFiZWwsXG4gIGxlZ2VuZCwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHJcbiAgICByZXNldC1ib3gtbW9kZWwoKVxuICAgIHJlc2V0LWZvbnQoKVxuICB0YWJsZVxuICAgIHJlc2V0LXRhYmxlKClcbiAgY2FwdGlvbiwgdGgsIHRkXG4gICAgcmVzZXQtdGFibGUtY2VsbCgpXG4gIGEgaW1nXG4gICAgYm9yZGVyOiBub25lXG5cbnJlc2V0LWJveC1tb2RlbCgpXG4gIG1hcmdpbjogMFxuICBwYWRkaW5nOiAwXG4gIGJvcmRlcjogMFxuICBvdXRsaW5lOiAwXG5cbnJlc2V0LWZvbnQoKVxuICBmb250LXdlaWdodDogaW5oZXJpdFxuICBmb250LXN0eWxlOiBpbmhlcml0XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0XG4gIGZvbnQtc2l6ZTogMTAwJVxuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmVcblxucmVzZXQtYm9keSgpXG4gIGxpbmUtaGVpZ2h0OiAxXG4gIGNvbG9yOiBibGFja1xuICBiYWNrZ3JvdW5kOiB3aGl0ZVxuXG5yZXNldC10YWJsZSgpXG4gIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGVcbiAgYm9yZGVyLXNwYWNpbmc6IDBcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZVxuXG5yZXNldC10YWJsZS1jZWxsKClcbiAgdGV4dC1hbGlnbjogbGVmdFxuICBmb250LXdlaWdodDogbm9ybWFsXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGVcblxucmVzZXQtaHRtbDUoKVxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBmaWdjYXB0aW9uLFxuICBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdixcbiAgc2VjdGlvbiwgc3VtbWFyeSwgbWFpblxuICAgIHJlc2V0LWJveC1tb2RlbCgpXG4gICAgZGlzcGxheTogYmxvY2tcbiAgYXVkaW8sIGNhbnZhcywgdmlkZW9cbiAgICBkaXNwbGF5IGlubGluZS1ibG9ja1xuICAgICpkaXNwbGF5IGlubGluZVxuICAgICp6b29tIDFcbiAgYXVkaW86bm90KFtjb250cm9sc10pLFtoaWRkZW5dXG4gICAgZGlzcGxheSBub25lXG4iLCIvKlxuICogYm9yZGVyOiA8Y29sb3I+XG4gKiBib3JkZXI6IC4uLlxuICovXG5cbmJvcmRlcihjb2xvciwgYXJncy4uLilcbiAgaWYgY29sb3IgaXMgYSAnY29sb3InXG4gICAgYm9yZGVyOiAxcHggc29saWQgY29sb3IgYXJnc1xuICBlbHNlXG4gICAgYm9yZGVyOiBhcmd1bWVudHNcbiIsInVzZSgnLi4vbm9kZXMvdmVuZG9yLWhlbHBlcnMuanMnKVxuQGltcG9ydCAnY29uZmlnJ1xuXG4vKlxuICogQWxpYXMgXCJub3dyYXBcIiBhcyBcIm5vLXdyYXBcIi5cbiAqL1xuXG5uby13cmFwID0gdW5xdW90ZSgnbm93cmFwJylcblxuLypcbiAqIEhlbHBlciB0byBmaW5kIG91dCBpZiBhIGdpdmVuIHZhbHVlIGlzIGEgd2lkdGhcbiAqL1xuXG5pcy13aWR0aCh2YWwpXG4gIGlmIGF1dG8gPT0gdmFsXG4gICAgcmV0dXJuIHRydWVcbiAgZWxzZSBpZiB2YWwgJiYgJ3VuaXQnID09IHR5cGUodmFsKVxuICAgIC8vIFN0eWx1cyBkb2VzIG5vdCBzaG9ydCBjaXJjdWl0IHNvIHdlIG5lZWQgdG8gcGVyZm9ybSB0aGlzIGFzIGEgZGlzdGluY3RcbiAgICAvLyBvcGVyYXRpb24gdG8gcHJldmVudCBlcnJvcnNcbiAgICByZXR1cm4gJycgIT0gdW5pdCh2YWwpXG4gIHJldHVybiBmYWxzZVxuXG4vKlxuICogVmVuZG9yIHN1cHBvcnQgZm9yIHRoZSBnaXZlbiBwcm9wIC8gYXJndW1lbnRzLCBvcHRpb25hbGx5IHNwZWNpZnlpbmcgdGhlXG4gKiBvbmx5IHByZWZpeGVzIHRvIHV0aWxpemUsIG9yIHRob3NlIHdoaWNoIHNob3VsZCBiZSBpZ25vcmVkLlxuICovXG5cbnZlbmRvcihwcm9wLCBhcmdzLCBvbmx5ID0gbnVsbCwgaWdub3JlID0gbnVsbCwgdmVuZG9yLXByb3BlcnR5ID0gdHJ1ZSlcbiAgbmVlZF9ub3JtYWxpemUgPSAhdmVuZG9yLXByb3BlcnR5IG9yIHByb3AgaW4gKCd0cmFuc2l0aW9uJyAndHJhbnNpdGlvbi1wcm9wZXJ0eScgJ2JvcmRlci1pbWFnZScgJ2JvcmRlci1pbWFnZS1zbGljZScpXG4gIGZvciBwcmVmaXggaW4gdmVuZG9yLXByZWZpeGVzXG4gICAgdW5sZXNzIChvbmx5IGFuZCAhKHByZWZpeCBpbiBvbmx5KSkgb3IgKGlnbm9yZSBhbmQgcHJlZml4IGluIGlnbm9yZSlcbiAgICAgIGlmIG9mZmljaWFsID09IHByZWZpeFxuICAgICAgICBpZiBuZWVkX25vcm1hbGl6ZVxuICAgICAgICAgIHtwcm9wfTogbm9ybWFsaXplKHByb3AsKCclcycgJSBhcmdzKSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHtwcm9wfTogYXJnc1xuICAgICAgZWxzZVxuICAgICAgICBuZXdwcm9wID0gcHJvcFxuICAgICAgICBuZXdwcm9wID0gJy0nICsgcHJlZml4ICsgJy0nICsgcHJvcCBpZiB2ZW5kb3ItcHJvcGVydHlcblxuICAgICAgICBpZiBuZWVkX25vcm1hbGl6ZVxuICAgICAgICAgIHtuZXdwcm9wfTogbm9ybWFsaXplKHByb3AsKCclcycgJSBhcmdzKSxwcmVmaXgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7bmV3cHJvcH06IGFyZ3Ncbi8qXG4gKiBWZW5kb3JpemUgdGhlIGdpdmVuIHZhbHVlLlxuICovXG5cbnZlbmRvci12YWx1ZShhcmcsIG9ubHkgPSBudWxsLCBpZ25vcmUgPSBudWxsKVxuICBwcm9wID0gY3VycmVudC1wcm9wZXJ0eVswXVxuICBmb3IgcHJlZml4IGluIHZlbmRvci1wcmVmaXhlc1xuICAgIHVubGVzcyAob25seSBhbmQgIShwcmVmaXggaW4gb25seSkpIG9yIChpZ25vcmUgYW5kIHByZWZpeCBpbiBpZ25vcmUpIG9yIG9mZmljaWFsID09IHByZWZpeFxuICAgICAgYWRkLXByb3BlcnR5KHByb3AsICctJXMtJXMnICUgKHByZWZpeCBhcmcpKVxuICBhcmdcblxuLypcbiAqIFZlbmRvciBcImJveC1zaGFkb3dcIiBzdXBwb3J0LlxuICovXG5cbmJveC1zaGFkb3coKVxuICB2ZW5kb3IoJ2JveC1zaGFkb3cnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcInVzZXItc2VsZWN0XCIgc3VwcG9ydC5cbiAqL1xuXG51c2VyLXNlbGVjdCgpXG4gIHZlbmRvcigndXNlci1zZWxlY3QnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tY291bnRcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1jb3VudCgpXG4gIHZlbmRvcignY29sdW1uLWNvdW50JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLWdhcFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLWdhcCgpXG4gIHZlbmRvcignY29sdW1uLWdhcCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1ydWxlXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tcnVsZSgpXG4gIHZlbmRvcignY29sdW1uLXJ1bGUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZS1jb2xvclwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUtY29sb3IoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlLWNvbG9yJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGUtd2lkdGhcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlLXdpZHRoKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS13aWR0aCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1ydWxlLXN0eWxlXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tcnVsZS1zdHlsZSgpXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtc3R5bGUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4td2lkdGhcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi13aWR0aCgpXG4gIHZlbmRvcignY29sdW1uLXdpZHRoJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXNwYW5cIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1zcGFuKClcbiAgdmVuZG9yKCdjb2x1bW4tc3BhbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLWZpbGxcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1maWxsKClcbiAgdmVuZG9yKCdjb2x1bW4tZmlsbCcsIGFyZ3VtZW50cywgb25seTogbW96KVxuXG4vKlxuICogTGVnYWN5IHN5bnRheCBzdXBwb3J0IGZvciBiYWNrZ3JvdW5kLWNsaXAgYW5kIGJhY2tncm91bmQtb3JpZ2luXG4gKi9cblxubGVnYWN5LWJnLXZhbHVlcyhwcm9wZXJ0eSwgYXJncylcbiAgbGVnYWN5X2FyZ3MgPSAoKVxuICBpbXBvcnRhbmNlID0gdW5xdW90ZSgnJylcbiAgZm9yIHN1YmFyZ3MgaW4gYXJnc1xuICAgIGZvciBhcmcgaW4gc3ViYXJnc1xuICAgICAgaWYgYXJnIGluIChib3JkZXItYm94IHBhZGRpbmctYm94IGNvbnRlbnQtYm94KVxuICAgICAgICBhcmcgPSB1bnF1b3RlKCdib3JkZXInKSAgaWYgYXJnID09IGJvcmRlci1ib3hcbiAgICAgICAgYXJnID0gdW5xdW90ZSgncGFkZGluZycpIGlmIGFyZyA9PSBwYWRkaW5nLWJveFxuICAgICAgICBhcmcgPSB1bnF1b3RlKCdjb250ZW50JykgaWYgYXJnID09IGNvbnRlbnQtYm94XG4gICAgICBpZiBhcmcgIT0gJyFpbXBvcnRhbnQnXG4gICAgICAgIHB1c2gobGVnYWN5X2FyZ3MsYXJnKVxuICAgICAgZWxzZVxuICAgICAgICBpbXBvcnRhbmNlID0gIWltcG9ydGFudFxuICB2ZW5kb3IocHJvcGVydHksIHVucXVvdGUoam9pbignLCAnLGxlZ2FjeV9hcmdzKSkgaW1wb3J0YW5jZSwgb25seTogbW96IHdlYmtpdClcblxuLypcbiAqIFZlbmRvciBcImJhY2tncm91bmQtY2xpcFwiIHN1cHBvcnQuXG4gKi9cblxuYmFja2dyb3VuZC1jbGlwKClcbiAgaWYgYXJndW1lbnRzWzBdID09IHRleHRcbiAgICB2ZW5kb3IoJ2JhY2tncm91bmQtY2xpcCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0KVxuICBlbHNlXG4gICAgbGVnYWN5LWJnLXZhbHVlcygnYmFja2dyb3VuZC1jbGlwJywgYXJndW1lbnRzKVxuICAgIGJhY2tncm91bmQtY2xpcDogYXJndW1lbnRzXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZ3JvdW5kLW9yaWdpblwiIHN1cHBvcnQuXG4gKi9cblxuYmFja2dyb3VuZC1vcmlnaW4oKVxuICBsZWdhY3ktYmctdmFsdWVzKCdiYWNrZ3JvdW5kLW9yaWdpbicsIGFyZ3VtZW50cylcbiAgYmFja2dyb3VuZC1vcmlnaW46IGFyZ3VtZW50c1xuXG4vKlxuICogVmVuZG9yIFwiYmFja2dyb3VuZC1zaXplXCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZ3JvdW5kLXNpemUoKVxuICB2ZW5kb3IoJ2JhY2tncm91bmQtc2l6ZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcInRyYW5zZm9ybVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNmb3JtKClcbiAgdmVuZG9yKCd0cmFuc2Zvcm0nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2Zvcm0tb3JpZ2luXCIgc3VwcG9ydC5cbiAqL1xudHJhbnNmb3JtLW9yaWdpbigpXG4gICAgdmVuZG9yKCd0cmFuc2Zvcm0tb3JpZ2luJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNmb3JtLXN0eWxlXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2Zvcm0tc3R5bGUoKVxuICB2ZW5kb3IoJ3RyYW5zZm9ybS1zdHlsZScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImJvcmRlci1pbWFnZVwiIHN1cHBvcnQuXG4gKi9cblxuYm9yZGVyLWltYWdlKClcbiAgdmVuZG9yKCdib3JkZXItaW1hZ2UnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb25cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24oKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uLXByb3BlcnR5XCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2l0aW9uLXByb3BlcnR5KClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uLXByb3BlcnR5JywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi1kdXJhdGlvblwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi1kdXJhdGlvbigpXG4gIHZlbmRvcigndHJhbnNpdGlvbi1kdXJhdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbigpXG4gIHZlbmRvcigndHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uLWRlbGF5XCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2l0aW9uLWRlbGF5KClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uLWRlbGF5JywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYmFja2ZhY2UtdmlzaWJpbGl0eVwiIHN1cHBvcnQuXG4gKi9cblxuYmFja2ZhY2UtdmlzaWJpbGl0eSgpXG4gIHZlbmRvcignYmFja2ZhY2UtdmlzaWJpbGl0eScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcInBlcnNwZWN0aXZlXCIgc3VwcG9ydC5cbiAqL1xuXG5wZXJzcGVjdGl2ZSgpXG4gIGlmIG1peGluXG4gICAgdmVuZG9yKCdwZXJzcGVjdGl2ZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcbiAgZWxzZVxuICAgICdwZXJzcGVjdGl2ZSglcyknICUgYXJndW1lbnRzXG5cbi8qXG4gKiBWZW5kb3IgXCJwZXJzcGVjdGl2ZS1vcmlnaW5cIiBzdXBwb3J0LlxuICovXG5cbnBlcnNwZWN0aXZlLW9yaWdpbigpXG4gIHZlbmRvcigncGVyc3BlY3RpdmUtb3JpZ2luJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogT3BhY2l0eSB3aXRoIGNvbmRpdGlvbmFsIElFIHN1cHBvcnQuXG4gKi9cblxub3BhY2l0eShuLCBhcmdzLi4uKVxuICBvcGFjaXR5OiBuIGFyZ3NcbiAgaWYgc3VwcG9ydC1mb3ItaWVcbiAgICBpZiBuID09IGluaGVyaXQgb3IgbiA9PSBpbml0aWFsXG4gICAgICAtbXMtZmlsdGVyOiBuIGFyZ3NcbiAgICAgIGZpbHRlcjogbiBhcmdzXG4gICAgZWxzZVxuICAgICAgdmFsID0gcm91bmQobiAqIDEwMClcbiAgICAgIGlmIHZhbCA9PSAxMDBcbiAgICAgICAgLW1zLWZpbHRlcjogbm9uZSBhcmdzXG4gICAgICAgIGZpbHRlcjogbm9uZSBhcmdzXG4gICAgICBlbHNlXG4gICAgICAgIC1tcy1maWx0ZXI6ICdcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PSVzKVwiJyAlIHZhbCBhcmdzXG4gICAgICAgIGZpbHRlcjogJ2FscGhhKG9wYWNpdHk9JXMpJyAlIHZhbCBhcmdzXG5cbi8qXG4gKiBWZW5kb3IgXCJ0ZXh0LXNpemUtYWRqdXN0XCJcbiAqL1xuXG50ZXh0LXNpemUtYWRqdXN0KClcbiAgdmVuZG9yKCd0ZXh0LXNpemUtYWRqdXN0JywgYXJndW1lbnRzKVxuXG4vKlxuICogQWxpYXMgdGhlIFwid2hpdGUtc3BhY2VcIiBwcm9wZXJ0eS5cbiAqL1xuXG53aGl0ZXNwYWNlKClcbiAgd2hpdGUtc3BhY2U6IGFyZ3VtZW50c1xuXG4vKlxuICogVmVuZG9yIFwiYm94LXNpemluZ1wiIHN1cHBvcnQuXG4gKi9cblxuYm94LXNpemluZygpXG4gIHZlbmRvcignYm94LXNpemluZycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1vcmllbnRcIiBzdXBwb3J0LlxuICovXG5cbmJveC1vcmllbnQoKVxuICB2ZW5kb3IoJ2JveC1vcmllbnQnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtZmxleC1ncm91cFwiIHN1cHBvcnQuXG4gKi9cblxuYm94LWZsZXgtZ3JvdXAoKVxuICB2ZW5kb3IoJ2JveC1mbGV4LWdyb3VwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LW9yZGluYWwtZ3JvdXBcIiBzdXBwb3J0LlxuICovXG5cbmJveC1vcmRpbmFsLWdyb3VwKClcbiAgdmVuZG9yKCdib3gtb3JkaW5hbC1ncm91cCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuXG4vKlxuICogVmVuZG9yIFwiYm94LWFsaWduXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtYWxpZ24oKVxuICB2ZW5kb3IoJ2JveC1hbGlnbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1wYWNrXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtcGFjaygpXG4gIHZlbmRvcignYm94LXBhY2snLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtZGlyZWN0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtZGlyZWN0aW9uKClcbiAgdmVuZG9yKCdib3gtZGlyZWN0aW9uJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbicsIGFyZ3VtZW50cylcblxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLW5hbWVcIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1uYW1lKClcbiAgdmVuZG9yKCdhbmltYXRpb24tbmFtZScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1kdXJhdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWR1cmF0aW9uKClcbiAgdmVuZG9yKCdhbmltYXRpb24tZHVyYXRpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZGVsYXlcIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1kZWxheSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLWRlbGF5JywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWRpcmVjdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWRpcmVjdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uLWRpcmVjdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnRcIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uKClcbiAgdmVuZG9yKCdhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLXBsYXktc3RhdGVcIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1wbGF5LXN0YXRlKClcbiAgdmVuZG9yKCdhbmltYXRpb24tcGxheS1zdGF0ZScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1maWxsLW1vZGVcIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1maWxsLW1vZGUoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1maWxsLW1vZGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJoeXBoZW5zXCIgc3VwcG9ydC5cbiAqL1xuXG5oeXBoZW5zKClcbiAgdmVuZG9yKCdoeXBoZW5zJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYXBwZWFyYW5jZVwiIHN1cHBvcnQuXG4gKi9cblxuYXBwZWFyYW5jZSgpXG4gIHZlbmRvcignYXBwZWFyYW5jZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcInRhYi1zaXplXCIgc3VwcG9ydC5cbiAqL1xuXG50YWItc2l6ZSgpXG4gIHZlbmRvcigndGFiLXNpemUnLCBhcmd1bWVudHMsIG9ubHk6IG1veiBvIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwib3ZlcmZsb3ctc2Nyb2xsaW5nXCIgc3VwcG9ydC5cbiAqL1xuXG5vdmVyZmxvdy1zY3JvbGxpbmcoKVxuICB2ZW5kb3IoJ292ZXJmbG93LXNjcm9sbGluZycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidGV4dC1vdmVyZmxvd1wiIHN1cHBvcnQsICwgLW8tIGZvciBvcGVyYSA5LiogLSAxMC4qXG4gKi9cblxudGV4dC1vdmVyZmxvdygpXG4gIHZlbmRvcigndGV4dC1vdmVyZmxvdycsIGFyZ3VtZW50cywgb25seTogb2ZmaWNpYWwgbylcblxuLypcbiAqIFZlbmRvciBcInRleHQtc2l6ZS1hZGp1c3RcIiBzdXBwb3J0LlxuICovXG50ZXh0LXNpemUtYWRqdXN0KClcbiAgdmVuZG9yKCd0ZXh0LXNpemUtYWRqdXN0JywgYXJndW1lbnRzLCBvbmx5OiBvZmZpY2lhbCB3ZWJraXQgbXMpXG5cbi8qXG4gKiBWZW5kb3IgXCJmb250LXNtb290aGluZ1wiIHN1cHBvcnQsIHdlYmtpdCBvbmx5LlxuICovXG5mb250LXNtb290aGluZygpXG4gIHZlbmRvcignZm9udC1zbW9vdGhpbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdClcblxuLypcbiAqIEhlbHBlciBmb3IgYm9yZGVyLXJhZGl1cygpLlxuICovXG5cbi1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcbiAgaWYgbGVuZ3RoKHBvcykgPT0gM1xuICAgIC8vIGJvcmRlci1yYWRpdXM6IDx0b3AgfCBidXR0b20+IDxsZWZ0IHwgcmlnaHQ+IDxuPlxuICAgIHkgPSBwb3NbMF1cbiAgICB4ID0gcG9zWzFdXG4gICAgLy8gV2UgZG9uJ3QgdXNlIG1veiBmb3Igc2ltcGxlIGJvZGVyLXJhZGl1cyBhbnltb3JlXG4gICAgLy8gdmVuZG9yKCdib3JkZXItcmFkaXVzLSVzJXMnICUgcG9zLCBwb3NbMl0sIG9ubHk6IG1veilcbiAgICB2ZW5kb3IoJ2JvcmRlci0lcy0lcy1yYWRpdXMnICUgcG9zLCBwb3NbMl0gaW1wb3J0YW5jZSwgb25seTogd2Via2l0IG9mZmljaWFsKVxuICBlbHNlIGlmIHBvc1swXSBpbiAodG9wIGJvdHRvbSlcbiAgICAvLyBib3JkZXItcmFkaXVzOiA8dG9wIHwgYm90dG9tPiA8bj5cbiAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3NbMF0gbGVmdCBwb3NbMV0sIGltcG9ydGFuY2UpXG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zWzBdIHJpZ2h0IHBvc1sxXSwgaW1wb3J0YW5jZSlcbiAgZWxzZSBpZiBwb3NbMF0gaW4gKGxlZnQgcmlnaHQpXG4gICAgLy8gYm9yZGVyLXJhZGl1czogPGxlZnQgfCByaWdodD4gPG4+XG4gICAgdW5zaGlmdChwb3MsIHRvcCk7XG4gICAgLWFwcGx5LWJvcmRlci1yYWRpdXMocG9zLCBpbXBvcnRhbmNlKVxuICAgIHBvc1swXSA9IGJvdHRvbVxuICAgIC1hcHBseS1ib3JkZXItcmFkaXVzKHBvcywgaW1wb3J0YW5jZSlcblxuLypcbiAqIGJvcmRlci1yYWRpdXMgc3VwcG9ydGluZyB2ZW5kb3IgcHJlZml4ZXMgYW5kXG4gKiBhdWdtZW50ZWQgYmVoYXZpb3IuXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgYm9yZGVyLXJhZGl1czogMnB4IDVweFxuICogICAgYm9yZGVyLXJhZGl1czogdG9wIDVweCBib3R0b20gMTBweFxuICogICAgYm9yZGVyLXJhZGl1czogbGVmdCA1cHhcbiAqICAgIGJvcmRlci1yYWRpdXM6IHRvcCBsZWZ0IDVweFxuICogICAgYm9yZGVyLXJhZGl1czogdG9wIGxlZnQgMTBweCBib3R0b20gcmlnaHQgNXB4XG4gKiAgICBib3JkZXItcmFkaXVzOiB0b3AgbGVmdCAxMHB4LCBib3R0b20gcmlnaHQgNXB4XG4gKlxuICovXG5cbmJvcmRlci1yYWRpdXMoKVxuICBwb3MgPSAoKVxuICBhdWdtZW50ZWQgPSBmYWxzZVxuICBpbXBvcnRhbmNlID0gYXJndW1lbnRzW2xlbmd0aChhcmd1bWVudHMpIC0gMV0gPT0gIWltcG9ydGFudCA/ICFpbXBvcnRhbnQgOiB1bnF1b3RlKCcnKVxuXG4gIGZvciBhcmdzIGluIGFyZ3VtZW50c1xuICAgIGZvciBhcmcgaW4gYXJnc1xuICAgICAgaWYgYXJnIGlzIGEgJ2lkZW50J1xuICAgICAgICBhcHBlbmQocG9zLCBhcmcpXG4gICAgICAgIGF1Z21lbnRlZCA9IHRydWVcbiAgICAgIGVsc2VcbiAgICAgICAgYXBwZW5kKHBvcywgYXJnKVxuICAgICAgICBpZiBhdWdtZW50ZWRcbiAgICAgICAgICAtYXBwbHktYm9yZGVyLXJhZGl1cyhwb3MsIGltcG9ydGFuY2UpXG4gICAgICAgICAgcG9zID0gKClcbiAgdmVuZG9yKCdib3JkZXItcmFkaXVzJywgcG9zLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpIHVubGVzcyBhdWdtZW50ZWRcblxuLyoqXG4gKiBWZW5kb3IgaW5wdXQtcGxhY2Vob2xkZXIvcGxhY2Vob2xkZXIgc3VwcG9ydC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqICAgIC8vIERlZmF1bHQgc3ludGF4XG4gKiAgICBib2R5XG4gKiAgICAgIHBsYWNlaG9sZGVyKGNvbG9yICMzMzMsIGZvbnQtd2VpZ2h0IG5vcm1hbClcbiAqXG4gKiAgICAvLyBUaGUgY29tbWEgaXMgaW1wb3J0YW50XG4gKiAgICAucGxhY2Vob2xkZXItcmVkXG4gKiAgICAgIHBsYWNlaG9sZGVyKGNvbG9yIHJlZCwpXG4gKlxuICogICAgLy8gV2UgY2FuIHBhc3MgYSBmdW5jdGlvblxuICogICAgZ3JlZW4tcGxhY2Vob2xkZXIoKVxuICogICAgICBjb2xvciBncmVlblxuICogICAgLnBsYWNlaG9sZGVyLWdyZWVuXG4gKiAgICAgIHBsYWNlaG9sZGVyKGdyZWVuLXBsYWNlaG9sZGVyKVxuICpcbiAqICAgIC8vIFdlIGNhbiBwYXNzIGEgaGFzaFxuICogICAgdGV4dGFyZWFcbiAqICAgICAgcGxhY2Vob2xkZXIoKGZvbnQtc3R5bGUgaXRhbGljKSAoZm9udC13ZWlnaHQgYm9sZCkgKHBhZGRpbmcgJzRweCAxMHB4JykpXG4gKi9cbnBsYWNlaG9sZGVyKClcbiAgZm9yIHYgaW4gJzotd2Via2l0LWlucHV0JyAnLW1veicgJzotbW96JyAnLW1zLWlucHV0J1xuICAgICY6e3Z9LXBsYWNlaG9sZGVyXG4gICAgICBmb3IgcGFpciBpbiBhcmd1bWVudHNcbiAgICAgICAgaWYgdHlwZW9mKHBhaXIpID09ICdmdW5jdGlvbidcbiAgICAgICAgICBwYWlyKClcbiAgICAgICAgZWxzZSBpZiBwYWlyIGlzIG5vdCBudWxsICYmIHBhaXJbMF0gaXMgbm90IG51bGxcbiAgICAgICAgICB7cGFpclswXX06IHR5cGUocGFpclsxXSkgPT0gJ3N0cmluZycgPyBzKHBhaXJbMV0pIDogcGFpclsxXVxuaW5wdXQtcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlclxuXG4vKlxuICogVmVuZG9yIGJhY2tncm91bmQgc3VwcG9ydCAoZ3JhZGllbnRzKS5cbiAqL1xuXG5iYWNrZ3JvdW5kKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2JhY2tncm91bmQnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBiYWNrZ3JvdW5kIGFyZ3VtZW50c1xuXG5iYWNrZ3JvdW5kLWltYWdlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2JhY2tncm91bmQtaW1hZ2UnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBiYWNrZ3JvdW5kLWltYWdlIGFyZ3VtZW50c1xuXG5jdXJzb3IoKVxuICBpZiBtYXRjaCgnLWdyYWRpZW50XFwoJywgJycrYXJndW1lbnRzKVxuICAgIHZlbmRvcignY3Vyc29yJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgY3Vyc29yIGFyZ3VtZW50c1xuXG5saXN0LXN0eWxlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2xpc3Qtc3R5bGUnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBsaXN0LXN0eWxlIGFyZ3VtZW50c1xuXG5saXN0LXN0eWxlLWltYWdlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2xpc3Qtc3R5bGUtaW1hZ2UnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBsaXN0LXN0eWxlLWltYWdlIGFyZ3VtZW50c1xuIiwiLypcbiAqIFNpemUgdXRpbGl0eS5cbiAqXG4gKiBTeW5vcHNpczpcbiAqXG4gKiAgIHNpemU6IDx3aWR0aD4gPGhlaWdodD4gfCA8d2lkdGggJiBoZWlnaHQ+XG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIHNpemU6IDEwMCUgMzBweFxuICogICAgICAgeWllbGRzOlxuICogICAgICAgICB3aWR0aDogMTAwJVxuICogICAgICAgICBoZWlnaHQ6IDMwcHhcbiAqXG4gKiAgICAgc2l6ZTogNXB4XG4gKiAgICAgICB5aWVsZHM6XG4gKiAgICAgICAgIHdpZHRoOiA1cHhcbiAqICAgICAgICAgaGVpZ2h0OiA1cHhcbiAqXG4gKi9cblxuc2l6ZSgpXG4gIGlmIGxlbmd0aChhcmd1bWVudHMpID09IDFcbiAgICB3aWR0aDogYXJndW1lbnRzWzBdXG4gICAgaGVpZ2h0OiBhcmd1bWVudHNbMF1cbiAgZWxzZVxuICAgIHdpZHRoOiBhcmd1bWVudHNbMF1cbiAgICBoZWlnaHQ6IGFyZ3VtZW50c1sxXVxuIiwiLypcbiAqIFZlbmRvciBcImRpc3BsYXk6IGZsZXhcIiBzdXBwb3J0IHdpdGggZmFsbGJhY2sgdG8gb2Jzb2xldGUgdmVyc2lvbnMuXG4gKi9cblxuZmxleC12ZXJzaW9uID89IGJveCBmbGV4XG5cbi8vXG4vLyAxLiBEaXNwbGF5IHZhbHVlc1xuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI2ZsZXgtY29udGFpbmVyc1xuLy9cbmRpc3BsYXkodHlwZSwgYXJncy4uLilcbiAgaWYgZmxleCA9PSB0eXBlIHx8IGlubGluZS1mbGV4ID09IHR5cGVcbiAgICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgICBpZiBmbGV4ID09IHR5cGVcbiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3ggYXJnc1xuICAgICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoYm94IGFyZ3MsIG9ubHk6IG1veiB3ZWJraXQpXG4gICAgICBlbHNlXG4gICAgICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveCBhcmdzXG4gICAgICAgIGRpc3BsYXk6IHZlbmRvci12YWx1ZShpbmxpbmUtYm94IGFyZ3MsIG9ubHk6IG1veiB3ZWJraXQpXG4gICAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICAgIGRpc3BsYXk6IHZlbmRvci12YWx1ZShhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbCkgLy8gb3ZlcndyaXRlcyBvbGQgd2Via2l0XG4gIGVsc2VcbiAgICBkaXNwbGF5OiBhcmd1bWVudHNcblxuLypcbiAqIE5ldyBzeW50YXggZm9yIGJyb3dzZXJzIGxpa2UgR29vZ2xlIENocm9tZS5cbiAqIFBsdXMgYSB0cmFuc2xhdGlvbiB0byB0aGUgb2xkIHN5bnRheCwgaWYgcG9zc2libGUuXG4gKi9cblxuXG4vL1xuLy8gNS4gT3JkZXJpbmcgYW5kIE9yaWVudGF0aW9uXG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jb3JkZXJpbmctYW5kLW9yaWVudGF0aW9uXG4vL1xuLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGRpcmVjdGlvbilcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIGlmIHJvdy1yZXZlcnNlID09IGRpcmVjdGlvbiB8fCBjb2x1bW4tcmV2ZXJzZSA9PSBkaXJlY3Rpb25cbiAgICAgIHZlbmRvcignYm94LWRpcmVjdGlvbicsIHJldmVyc2UsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbiAgICBpZiByb3cgPT0gZGlyZWN0aW9uIHx8IHJvdy1yZXZlcnNlID09IGRpcmVjdGlvblxuICAgICAgdmVuZG9yKCdib3gtb3JpZW50JywgaG9yaXpvbnRhbCwgaWdub3JlOiBtcyBvZmZpY2lhbClcbiAgICBlbHNlIGlmIGNvbHVtbiA9PSBkaXJlY3Rpb24gfHwgY29sdW1uLXJldmVyc2UgPT0gZGlyZWN0aW9uXG4gICAgICB2ZW5kb3IoJ2JveC1vcmllbnQnLCB2ZXJ0aWNhbCwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuLWZsZXgtb2Jzb2xldGUtd3JhcCh2YWx1ZSlcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIC8vIFdBUk46IHdyYXAtcmV2ZXJzZSBkb2VzIG5vdCBoYXZlIGEgYm94IGVxdWl2YWxlbnQuIFRoaXMgd2lsbCByZW5kZXIgaW4gZGlmZmVyZW50IG1hbm5lcnNcbiAgICAvLyAgICBvbiBib3ggdnMuIGZsZXggdmFsdWVzLlxuICAgIGlmICd3cmFwJyA9PSB2YWx1ZSB8fCB3cmFwLXJldmVyc2UgPT0gdmFsdWVcbiAgICAgIHZlbmRvcignYm94LWxpbmVzJywgbXVsdGlwbGUsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG4gICAgZWxzZSBpZiBub3dyYXAgPT0gdmFsdWVcbiAgICAgIHZlbmRvcignYm94LWxpbmVzJywgc2luZ2xlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG5mbGV4LWRpcmVjdGlvbihkaXJlY3Rpb24pXG4gIC8vIG9ic29sZXRlXG4gIC1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihkaXJlY3Rpb24pXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWRpcmVjdGlvbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxuXG5mbGV4LXdyYXAodmFsdWUpXG4gIC8vIG9ic29sZXRlXG4gIC1mbGV4LW9ic29sZXRlLXdyYXAodmFsdWUpXG5cbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtd3JhcCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1zIG9mZmljaWFsKVxuXG5mbGV4LWZsb3coKVxuICAvLyBvYnNvbGV0ZVxuICAtZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oYXJndW1lbnRzWzBdKVxuICAtZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oYXJndW1lbnRzWzFdKVxuICAtZmxleC1vYnNvbGV0ZS13cmFwKGFyZ3VtZW50c1swXSlcbiAgLWZsZXgtb2Jzb2xldGUtd3JhcChhcmd1bWVudHNbMV0pXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWZsb3cnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuXG5vcmRlcigpXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2JveC1vcmRpbmFsLWdyb3VwJywgYXJndW1lbnRzLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1vcmRlcicsIGFyZ3VtZW50cywgb25seTogbXMpXG4gICAgdmVuZG9yKCdvcmRlcicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5cbi8vXG4vLyA3LiBGbGV4aWJpbGl0eVxuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI2ZsZXhpYmlsaXR5XG4vL1xuZmxleC1ncm93KGdyb3d0aClcbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYm94LWZsZXgnLCBncm93dGgpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWdyb3cnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuZmxleC1iYXNpcygpXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWJhc2lzJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmZsZXgtc2hyaW5rKClcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtc2hyaW5rJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmZsZXgoZ3Jvd3RoKVxuXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICBzaHJpbmsgPSAxXG5cbiAgICBpZiBub25lID09IGdyb3d0aCB8fCBpbml0aWFsID09IGdyb3d0aFxuICAgICAgLy8gV2VsbCBrbm93biB2YWx1ZXNcbiAgICAgIHNocmluayA9IDAgaWYgbm9uZSA9PSBncm93dGhcbiAgICAgIGdyb3d0aCA9IDBcbiAgICBlbHNlIGlmIGlzLXdpZHRoKGdyb3d0aCkgPT0gdHJ1ZVxuICAgICAgLy8gQmFzaXMgaXMgZGVmaW5lZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyXG4gICAgICBncm93dGggPSBhcmd1bWVudHNbMV0gfHwgMFxuICAgICAgc2hyaW5rID0gYXJndW1lbnRzWzJdIGlmIDMgPD0gbGVuZ3RoKGFyZ3VtZW50cylcbiAgICBlbHNlIGlmIGFyZ3VtZW50c1sxXSAmJiBpcy13aWR0aChhcmd1bWVudHNbMV0pID09IGZhbHNlXG4gICAgICAvLyBHcm93dGggaXMgZmlyc3QgYW5kIHNocmluayBpcyBzZWNvbmRcbiAgICAgIHNocmluayA9IGFyZ3VtZW50c1sxXVxuXG4gICAgLy8gU2luY2Ugd2UgY2FuJ3QgbWFrZSB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBncm93aW5nIGFuZCBzaHJpbmtpbmcgaW4gdGhlIGJveCBtb2RlbCwgdGFrZVxuICAgIC8vIHRoZSBvbmUgdGhhdCBwcm92aWRlcyB0aGUgbW9zdCBmbGV4aWJpbGl0eS5cbiAgICB2ZW5kb3IoJ2JveC1mbGV4JywgbWF4KGdyb3d0aCwgc2hyaW5rKSwgaWdub3JlOiBtcylcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuXG4vLyBjb252ZXJ0cyB0aGUganVzdGlmaWNhdGlvbiBhbGlnbm1lbnRcbi1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pXG4gIGlmIGZsZXgtc3RhcnQgPT0gYWxpZ25cbiAgICByZXR1cm4gc3RhcnRcbiAgZWxzZSBpZiBmbGV4LWVuZCA9PSBhbGlnblxuICAgIHJldHVybiBlbmRcbiAgZWxzZSBpZiBzcGFjZS1hcm91bmQgPT0gYWxpZ25cbiAgICByZXR1cm4gZGlzdHJpYnV0ZVxuICBlbHNlIGlmIHNwYWNlLWJldHdlZW4gPT0gYWxpZ25cbiAgICByZXR1cm4ganVzdGlmeVxuICBlbHNlXG4gICAgcmV0dXJuIGFsaWduXG5cbi8vXG4vLyA4LiBBbGlnbm1lbnRcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNhbGlnbm1lbnRcbi8vXG5qdXN0aWZ5LWNvbnRlbnQoYWxpZ24pXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2JveC1wYWNrJywgLWNvbnZlcnQtanVzdGlmeShhbGlnbiksIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LXBhY2snLCAtY29udmVydC1qdXN0aWZ5KGFsaWduKSwgb25seTogbXMpXG4gICAgdmVuZG9yKCdqdXN0aWZ5LWNvbnRlbnQnLCBhbGlnbiwgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5hbGlnbi1jb250ZW50KGFsaWduKVxuICAvLyBXQVJOOiBPYnNvbGV0ZSBzcGVjIGRvZXMgbm90IGFsbG93IGZvciBhZGp1c3RtZW50IGhlcmVcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtbGluZS1wYWNrJywgLWNvbnZlcnQtanVzdGlmeShhbGlnbiksIG9ubHk6IG1zKVxuICAgIHZlbmRvcignYWxpZ24tY29udGVudCcsIGFsaWduLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8vIGNvbnZlcnRzIGFsaWdubWVudCBmcm9tICdmbGV4JyB0byBub3JtYWwgdmFsdWVcbi1jb252ZXJ0LWFsaWdubWVudChhbGlnbilcbiAgaWYgZmxleC1zdGFydCA9PSBhbGlnblxuICAgIHJldHVybiBzdGFydFxuICBlbHNlIGlmIGZsZXgtZW5kID09IGFsaWduXG4gICAgcmV0dXJuIGVuZFxuICBlbHNlXG4gICAgcmV0dXJuIGFsaWduXG5cbmFsaWduLWl0ZW1zKGFsaWduKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtYWxpZ24nLCAtY29udmVydC1hbGlnbm1lbnQoYWxpZ24pLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1hbGlnbicsIC1jb252ZXJ0LWFsaWdubWVudChhbGlnbiksIG9ubHk6IG1zKVxuICAgIHZlbmRvcignYWxpZ24taXRlbXMnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuYWxpZ24tc2VsZihhbGlnbilcbiAgLy8gV0FSTjogT2Jzb2xldGUgc3BlYyBkb2VzIG5vdCBhbGxvdyBmb3Igb3ZlcnJpZGluZyBhbGlnbm1lbnQgb24gaW5kaXZpZHVhbCBpdGVtcy5cbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2FsaWduLXNlbGYnLCBhbGlnbiwgb25seTogd2Via2l0IG9mZmljaWFsKVxuICAgIHZlbmRvcignZmxleC1pdGVtLWFsaWduJywgLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKSwgb25seTogbXMpXG4iLCIvKlxuICogT3ZlcmZsb3cgdXRpbGl0eS4gTWFwcyB0byByZWd1bGFyIG92ZXJmbG93LCBhbmQgYWRkcyBhbiBlbGxpcHNpcyB2YWx1ZS5cbiAqXG4gKiBTeW5vcHNpczpcbiAqXG4gKiAgIG92ZXJmbG93OiA8dHlwZT5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgb3ZlcmZsb3c6IGF1dG9cbiAqICAgICBvdmVyZmxvdzogaGlkZGVuXG4gKiAgICAgb3ZlcmZsb3c6IGVsbGlwc2lzXG4gKlxuICovXG5cbm92ZXJmbG93KClcbiAgaWYgYXJndW1lbnRzWzBdID09IGVsbGlwc2lzXG4gICAgZWxsaXBzaXMoKVxuICBlbHNlXG4gICAgb3ZlcmZsb3c6IGFyZ3VtZW50c1xuIiwiLy8gaGVscGVyXG5cbi1wb3ModHlwZSwgYXJncylcbiAgaSA9IDBcbiAgcG9zaXRpb246IHVucXVvdGUodHlwZSlcbiAgZm9yIGogaW4gKDEuLjQpXG4gICAgaWYgbGVuZ3RoKGFyZ3MpID4gaVxuICAgICAge2FyZ3NbaV19OiBhcmdzW2kgKyAxXSBpcyBhICd1bml0JyA/IGFyZ3NbaSArPSAxXSA6IDBcbiAgICBpICs9IDFcblxuLypcbiAqIFBvc2l0aW9uIHV0aWxpdHkuXG4gKlxuICogU3lub3BzaXM6XG4gKlxuICogICBmaXhlZDogPHBvcz4gW25dIDxwb3M+IFtuXVxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICBmaXhlZDogdG9wIGxlZnRcbiAqICAgICBmaXhlZDogdG9wIDVweCBsZWZ0XG4gKiAgICAgZml4ZWQ6IHRvcCBsZWZ0IDVweFxuICogICAgIGZpeGVkOiB0b3AgNXB4IGxlZnQgNXB4XG4gKlxuICovXG5cbmZpeGVkKClcbiAgLXBvcygnZml4ZWQnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBQb3NpdGlvbiB1dGlsaXR5LlxuICpcbiAqIFN5bm9wc2lzOlxuICpcbiAqICAgYWJzb2x1dGU6IDxwb3M+IFtuXSA8cG9zPiBbbl1cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgYWJzb2x1dGU6IHRvcCBsZWZ0XG4gKiAgICAgYWJzb2x1dGU6IHRvcCA1cHggbGVmdFxuICogICAgIGFic29sdXRlOiB0b3AgbGVmdCA1cHhcbiAqICAgICBhYnNvbHV0ZTogdG9wIDVweCBsZWZ0IDVweFxuICpcbiAqL1xuXG5hYnNvbHV0ZSgpXG4gIC1wb3MoJ2Fic29sdXRlJywgYXJndW1lbnRzKVxuXG4vKlxuICogUG9zaXRpb24gdXRpbGl0eS5cbiAqXG4gKiBTeW5vcHNpczpcbiAqXG4gKiAgIHJlbGF0aXZlOiA8cG9zPiBbbl0gPHBvcz4gW25dXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIHJlbGF0aXZlOiB0b3AgbGVmdFxuICogICAgIHJlbGF0aXZlOiB0b3AgNXB4IGxlZnRcbiAqICAgICByZWxhdGl2ZTogdG9wIGxlZnQgNXB4XG4gKiAgICAgcmVsYXRpdmU6IHRvcCA1cHggbGVmdCA1cHhcbiAqXG4gKi9cblxucmVsYXRpdmUoKVxuICAtcG9zKCdyZWxhdGl2ZScsIGFyZ3VtZW50cylcbiIsIi8qXG4gKiBUaGUgTWFnbmlmaWNlbnQgTWljcm8gQ2xlYXJmaXhcbiAqXG4gKiBVc2VmdWwgZm9yIGNsZWFyaW5nIGZsb2F0cyB3aXRob3V0IHN0cnVjdHVyYWwgbWFya3VwLlxuICogUHJldmVudHMgbWFyZ2luLWNvbGxhcHNpbmcgb24gY2hpbGQgZWxlbWVudHMgaW4gbW9zdCBjYXNlcy5cbiAqXG4gKiBLbm93biBpc3N1ZXM6XG4gKlxuICogMS4gRm9yIElFIDYvNyB3aGVuIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aGF0IGNvbnRhaW5zIG9ubHkgbGVmdC1mbG9hdGVkXG4gKiAgICBjaGlsZHJlbiB0aGUgYm90dG9tIG1hcmdpbiBvbiBjaGlsZCBlbGVtZW50cyB3aWxsIGJlIGNvbGxhcHNlZC5cbiAqXG4gKiAyLiBGb3IgRmlyZWZveCB2ZXJzaW9ucyBwcmlvciB0byAzLjUgd2hlbiBhcHBsaWVkIHRvIHRoZSBmaXJzdCBjaGlsZCBlbGVtZW50XG4gKiAgICBvZiBib2R5LCBhbmQgdGhlIGVsZW1lbnQgZG9lcyBub3QgaGF2ZSBub24temVybyBwYWRkaW5nLCBleHRyYSBzcGFjZSB3aWxsXG4gKiAgICBhcHBlYXIgYmV0d2VlbiB0aGUgYm9keSBhbmQgdGhlIGZpcnN0IGNoaWxkLlxuICpcbiAqIFNlZSBodHRwOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay9cbiAqIGFuZCBodHRwOi8vai5tcC9iZXN0Y2xlYXJmaXhcbiAqXG4gKi9cblxuY2xlYXJmaXgoKVxuICAmOmJlZm9yZVxuICAmOmFmdGVyXG4gICAgY29udGVudDogXCJcIlxuICAgIGRpc3BsYXk6IHRhYmxlXG4gICY6YWZ0ZXJcbiAgICBjbGVhcjogYm90aFxuICB6b29tOiAxIGlmIHN1cHBvcnQtZm9yLWllXG4iLCIvKipcbiAqIFN0eWxlIGFuIGVsZW1lbnQgYXMgYSBjb2x1bW4gd2l0aCBhIGd1dHRlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW29mZnNldD0wXSAtIEEgb2Zmc2V0IHNwZWNpZmllZCBhcyBhIGZyYWN0aW9uIChzZWUgcmF0aW9zKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbY3ljbGU9MF0gLSBFYXNpbHkgY3JlYXRlIGFuIG50aCBjb2x1bW4gZ3JpZCB3aGVyZSBjeWNsZSBlcXVhbHMgdGhlIG51bWJlciBvZiBjb2x1bW5zLlxuICogQHBhcmFtIHtudW1iZXJ9IFt1bmN5Y2xlPTBdIC0gVW5kbyBhIHByZXZpb3VzIGN5Y2xlIHZhbHVlIHRvIGFsbG93IGZvciBhIG5ldyBvbmUuXG4gKiBAcGFyYW0ge251bWJlcn0gW2d1dHRlcj1qZWV0Lmd1dHRlcl0gLSBTcGVjaWZ5IHRoZSBndXR0ZXIgd2lkdGggYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBjb250YWluZXJzIHdpZHRoLlxuICovXG5jb2x1bW4ocmF0aW9zID0gMSwgb2Zmc2V0ID0gMCwgY3ljbGUgPSAwLCB1bmN5Y2xlID0gMCwgZ3V0dGVyID0gamVldC5ndXR0ZXIpXG4gIHNpZGUgPSBqZWV0LWdldC1sYXlvdXQtZGlyZWN0aW9uKClcbiAgb3Bwb3NpdGUtc2lkZSA9IG9wcG9zaXRlLXBvc2l0aW9uKHNpZGUpXG4gIGNvbHVtbi13aWR0aHMgPSBqZWV0LWdldC1jb2x1bW4ocmF0aW9zLCBndXR0ZXIpXG4gIG1hcmdpbi1sYXN0ID0gMFxuICBtYXJnaW4tbCA9IG1hcmdpbi1sYXN0XG4gIG1hcmdpbi1yID0gY29sdW1uLXdpZHRoc1sxXVxuXG4gIHVubGVzcyBvZmZzZXQgPT0gMFxuICAgIGlmIG9mZnNldCA8IDBcbiAgICAgIG9mZnNldCAqPSAtMVxuICAgICAgb2Zmc2V0ID0gamVldC1nZXQtY29sdW1uKG9mZnNldCwgY29sdW1uLXdpZHRoc1sxXSlbMF1cbiAgICAgIG1hcmdpbi1yID0gbWFyZ2luLWxhc3QgPSBvZmZzZXQgKyBjb2x1bW4td2lkdGhzWzFdICogMlxuICAgIGVsc2VcbiAgICAgIG9mZnNldCA9IGplZXQtZ2V0LWNvbHVtbihvZmZzZXQsIGNvbHVtbi13aWR0aHNbMV0pWzBdXG4gICAgICBtYXJnaW4tbCA9IG9mZnNldCArIGNvbHVtbi13aWR0aHNbMV1cblxuICBjZigpXG4gIGZsb2F0OiBzaWRlXG4gIGNsZWFyOiBub25lXG4gIHRleHQtYWxpZ246IGluaGVyaXRcbiAgd2lkdGg6IChjb2x1bW4td2lkdGhzWzBdKSVcbiAgbWFyZ2luLXtzaWRlfTogKG1hcmdpbi1sKSVcbiAgbWFyZ2luLXtvcHBvc2l0ZS1zaWRlfTogKG1hcmdpbi1yKSVcblxuICBpZiB1bmN5Y2xlICE9IDBcbiAgICAmOm50aC1jaGlsZCh7dW5jeWNsZX1uKVxuICAgICAgbWFyZ2luLXtvcHBvc2l0ZS1zaWRlfTogKG1hcmdpbi1yKSVcbiAgICAgIGZsb2F0OiBzaWRlXG4gICAgJjpudGgtY2hpbGQoe3VuY3ljbGV9bisxKVxuICAgICAgY2xlYXI6IG5vbmVcblxuICBpZiBjeWNsZSAhPSAwXG4gICAgJjpudGgtY2hpbGQoe2N5Y2xlfW4pXG4gICAgICBtYXJnaW4te29wcG9zaXRlLXNpZGV9OiAobWFyZ2luLWxhc3QpJVxuICAgICAgZmxvYXQ6IG9wcG9zaXRlLXNpZGVcbiAgICAmOm50aC1jaGlsZCh7Y3ljbGV9bisxKVxuICAgICAgY2xlYXI6IGJvdGhcbiAgIGVsc2VcbiAgICAmOmxhc3QtY2hpbGRcbiAgICAgIG1hcmdpbi17b3Bwb3NpdGUtc2lkZX06IChtYXJnaW4tbGFzdCklXG5cbi8qKlxuICogQW4gYWxpYXMgZm9yIHRoZSBjb2x1bW4gbWl4aW4uXG4gKi9cbmNvbCA9IGNvbHVtblxuXG4vKipcbiAqIEdldCB0aGUgd2lkdGggb2YgYSBjb2x1bW4gYW5kIG5vdGhpbmcgZWxzZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbcmF0aW9zPTFdIC0gQSB3aWR0aCByZWxhdGl2ZSB0byBpdHMgY29udGFpbmVyIGFzIGEgZnJhY3Rpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2d1dHRlcj1qZWV0Lmd1dHRlcl0gLSBTcGVjaWZ5IHRoZSBndXR0ZXIgd2lkdGggYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBjb250YWluZXJzIHdpZHRoLlxuICovXG5jb2x1bW4td2lkdGgocmF0aW9zID0gMSwgZ3V0dGVyID0gamVldC5ndXR0ZXIpXG4gIHJldHVybiBqZWV0LWdldC1jb2x1bW4ocmF0aW9zLCBndXR0ZXIpWzBdICsgJyUnXG5cbi8qKlxuICogQW4gYWxpYXMgZm9yIHRoZSBjb2x1bW4td2lkdGggZnVuY3Rpb24uXG4gKi9cbmN3ID0gY29sdW1uLXdpZHRoXG5cbi8qKlxuICogR2V0IHRoZSBndXR0ZXIgc2l6ZSBvZiBhIGNvbHVtbiBhbmQgbm90aGluZyBlbHNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtyYXRpb3M9MV0gLSBBIHdpZHRoIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXIgYXMgYSBmcmFjdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZ3V0dGVyPWplZXQuZ3V0dGVyXSAtIFNwZWNpZnkgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGNvbnRhaW5lcnMgd2lkdGguXG4gKi9cbmNvbHVtbi1ndXR0ZXIocmF0aW9zID0gMSwgZ3V0dGVyID0gamVldC5ndXR0ZXIpXG4gIHJldHVybiBqZWV0LWdldC1jb2x1bW4ocmF0aW9zLCBndXR0ZXIpWzFdICsgJyUnXG5cbi8qKlxuICogQW4gYWxpYXMgZm9yIHRoZSBjb2x1bW4tZ3V0dGVyIGZ1bmN0aW9uLlxuICovXG5jZyA9IGNvbHVtbi1ndXR0ZXJcblxuLyoqXG4gKiBTdHlsZSBhbiBlbGVtZW50IGFzIGEgY29sdW1uIHdpdGhvdXQgYW55IGd1dHRlcnMgZm9yIGEgc2VhbWxlc3Mgcm93LlxuICogQHBhcmFtIHtudW1iZXJ9IFtyYXRpb3M9MV0gLSBBIHdpZHRoIHJlbGF0aXZlIHRvIGl0cyBjb250YWluZXIgYXMgYSBmcmFjdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbb2Zmc2V0PTBdIC0gQSBvZmZzZXQgc3BlY2lmaWVkIGFzIGEgZnJhY3Rpb24gKHNlZSByYXRpb3MpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtjeWNsZT0wXSAtIEVhc2lseSBjcmVhdGUgYW4gbnRoIGNvbHVtbiBncmlkIHdoZXJlIGN5Y2xlIGVxdWFscyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuXG4gKiBAcGFyYW0ge251bWJlcn0gW3VuY3ljbGU9MF0gLSBVbmRvIGEgcHJldmlvdXMgY3ljbGUgdmFsdWUgdG8gYWxsb3cgZm9yIGEgbmV3IG9uZS5cbiAqL1xuc3BhbihyYXRpbyA9IDEsIG9mZnNldCA9IDAsIGN5Y2xlID0gMCwgdW5jeWNsZSA9IDApXG4gIHNpZGUgPSBqZWV0LWdldC1sYXlvdXQtZGlyZWN0aW9uKClcbiAgb3Bwb3NpdGUtc2lkZSA9IG9wcG9zaXRlLXBvc2l0aW9uKHNpZGUpXG4gIHNwYW4td2lkdGggPSBqZWV0LWdldC1zcGFuKHJhdGlvKVxuICBtYXJnaW4tciA9IDBcbiAgbWFyZ2luLWwgPSBtYXJnaW4tclxuXG4gIHVubGVzcyBvZmZzZXQgPT0gMFxuICAgIGlmIG9mZnNldCA8IDBcbiAgICAgIG9mZnNldCAqPSAtMVxuICAgICAgbWFyZ2luLXIgPSBqZWV0LWdldC1zcGFuKG9mZnNldClcbiAgICBlbHNlXG4gICAgICBtYXJnaW4tbCA9IGplZXQtZ2V0LXNwYW4ob2Zmc2V0KVxuXG4gIGNmKClcbiAgZmxvYXQ6IHNpZGVcbiAgY2xlYXI6IG5vbmVcbiAgdGV4dC1hbGlnbjogaW5oZXJpdFxuICB3aWR0aDogKHNwYW4td2lkdGgpJVxuICBtYXJnaW4te3NpZGV9OiAobWFyZ2luLWwpJVxuICBtYXJnaW4te29wcG9zaXRlLXNpZGV9OiAobWFyZ2luLXIpJVxuXG4gIGlmIGN5Y2xlICE9IDBcbiAgICAmOm50aC1jaGlsZCh7Y3ljbGV9bilcbiAgICAgIGZsb2F0OiBvcHBvc2l0ZS1zaWRlXG4gICAgJjpudGgtY2hpbGQoe2N5Y2xlfW4gKyAxKVxuICAgICAgY2xlYXI6IGJvdGhcblxuICBpZiB1bmN5Y2xlICE9IDBcbiAgICAmOm50aC1jaGlsZCh7dW5jeWNsZX1uKVxuICAgICAgZmxvYXQ6IHNpZGVcbiAgICAmOm50aC1jaGlsZCh7dW5jeWNsZX1uICsgMSlcbiAgICAgIGNsZWFyOiBub25lXG5cbi8qKlxuICogUmVvcmRlciBjb2x1bW5zIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIEhUTUwuXG4gKiBAcGFyYW0ge251bWJlcn0gW3JhdGlvcz0wXSAtIFNwZWNpZnkgaG93IGZhciBhbG9uZyB5b3Ugd2FudCB0aGUgZWxlbWVudCB0byBtb3ZlLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2wtb3Itc3Bhbj1jb2x1bW5dIC0gU3BlY2lmeSB3aGV0aGVyIHRoZSBlbGVtZW50IGhhcyBhIGd1dHRlciBvciBub3QuXG4gKiBAcGFyYW0ge251bWJlcn0gW2d1dHRlcj1qZWV0Lmd1dHRlcl0gLSBTcGVjaWZ5IHRoZSBndXR0ZXIgd2lkdGggYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBjb250YWluZXJzIHdpZHRoLlxuICovXG5zaGlmdChyYXRpb3MgPSAwLCBjb2wtb3Itc3BhbiA9IGNvbHVtbiwgZ3V0dGVyID0gamVldC5ndXR0ZXIpXG4gIHRyYW5zbGF0ZSA9ICcnXG4gIHNpZGUgPSBqZWV0LWdldC1sYXlvdXQtZGlyZWN0aW9uKClcblxuICBpZiBzaWRlID09IHJpZ2h0XG4gICAgcmF0aW9zID0gamVldC1yZXBsYWNlLW50aChyYXRpb3MsIDAsIHJhdGlvc1swXSAqIC0xKVxuXG4gIGlmIGNvbC1vci1zcGFuID09IGNvbHVtbiBvciBjb2wtb3Itc3BhbiA9PSBjb2wgb3IgY29sLW9yLXNwYW4gPT0gY1xuICAgIGNvbHVtbi13aWR0aHMgPSBqZWV0LWdldC1jb2x1bW4ocmF0aW9zLCBndXR0ZXIpXG4gICAgdHJhbnNsYXRlID0gY29sdW1uLXdpZHRoc1swXSArIGNvbHVtbi13aWR0aHNbMV1cbiAgZWxzZVxuICAgIHRyYW5zbGF0ZSA9IGplZXQtZ2V0LXNwYW4ocmF0aW9zKVxuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZVxuICBsZWZ0OiAodHJhbnNsYXRlKSVcblxuLyoqXG4gKiBSZXNldCBhbiBlbGVtZW50IHRoYXQgaGFzIGhhZCBzaGlmdCgpIGFwcGxpZWQgdG8gaXQuXG4gKi9cbnVuc2hpZnQoKVxuICBwb3NpdGlvbjogc3RhdGljXG4gIGxlZnQ6IDBcblxuLyoqXG4gKiBWaWV3IHRoZSBncmlkIGFuZCBpdHMgbGF5ZXJzIGZvciBlYXN5IGRlYnVnZ2luZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29sb3I9YmxhY2tdIC0gVGhlIGJhY2tncm91bmQgdGludCBhcHBsaWVkLlxuICogQHBhcmFtIHtib29sZWFufSBbaW1wb3J0YW50PWZhbHNlXSAtIFdoZXRoZXIgdG8gYXBwbHkgdGhlIHN0eWxlIGFzICFpbXBvcnRhbnQuXG4gKi9cbmVkaXQoY29sb3IgPSBibGFjaywgaW1wb3J0YW50ID0gZmFsc2UpXG4gIGlmIGltcG9ydGFudFxuICAgICpcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoY29sb3IsIDUlKSAhaW1wb3J0YW50XG4gIGVsc2VcbiAgICAqXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKGNvbG9yLCA1JSlcblxuLyoqXG4gKiAgQWxpYXMgZm9yIGVkaXQoKS5cbiAqL1xuZGVidWcgPSBlZGl0XG5cbi8qKlxuICogSG9yaXpvbnRhbGx5IGNlbnRlciBhbiBlbGVtZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IFttYXgtd2lkdGg9amVldC5tYXgtd2lkdGhdIC0gVGhlIG1heCB3aWR0aCB0aGUgZWxlbWVudCBjYW4gYmUuXG4gKiBAcGFyYW0ge251bWJlcn0gW3BhZD0wXSAtIFNwZWNpZnkgdGhlIGVsZW1lbnQncyBsZWZ0IGFuZCByaWdodCBwYWRkaW5nLlxuICovXG5jZW50ZXIobWF4LXdpZHRoID0gamVldC5tYXgtd2lkdGgsIHBhZCA9IDApXG4gIGNmKClcbiAgd2lkdGg6IGF1dG9cbiAgbWF4LXdpZHRoOiBtYXgtd2lkdGhcbiAgZmxvYXQ6IG5vbmVcbiAgZGlzcGxheTogdW5xdW90ZSgnYmxvY2snKVxuICBtYXJnaW4tcmlnaHQ6IGF1dG9cbiAgbWFyZ2luLWxlZnQ6IGF1dG9cbiAgcGFkZGluZy1sZWZ0OiBwYWRcbiAgcGFkZGluZy1yaWdodDogcGFkXG5cbi8qKlxuICogVW5jZW50ZXIgYW4gZWxlbWVudC5cbiAqL1xudW5jZW50ZXIoKVxuICBtYXgtd2lkdGg6IG5vbmVcbiAgbWFyZ2luLXJpZ2h0OiAwXG4gIG1hcmdpbi1sZWZ0OiAwXG4gIHBhZGRpbmctbGVmdDogMFxuICBwYWRkaW5nLXJpZ2h0OiAwXG5cbi8qKlxuICogU3RhY2sgYW4gZWxlbWVudCBzbyB0aGF0IG5vdGhpbmcgaXMgZWl0aGVyIHNpZGUgb2YgaXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW3BhZD0wXSAtIFNwZWNpZnkgdGhlIGVsZW1lbnQncyBsZWZ0IGFuZCByaWdodCBwYWRkaW5nLlxuICogQHBhcmFtIHtib2xsZWFuL3N0cmluZ30gW2FsaWduPWZhbHNlXSAtIFNwZWNpZnkgdGhlIHRleHQgYWxpZ24gZm9yIHRoZSBlbGVtZW50LlxuICovXG5zdGFjayhwYWQgPSAwLCBhbGlnbiA9IGZhbHNlKVxuICBzaWRlID0gamVldC1nZXQtbGF5b3V0LWRpcmVjdGlvbigpXG4gIG9wcG9zaXRlLXNpZGUgPSBvcHBvc2l0ZS1wb3NpdGlvbihzaWRlKVxuXG4gIGRpc3BsYXk6IHVucXVvdGUoJ2Jsb2NrJylcbiAgY2xlYXI6IGJvdGhcbiAgZmxvYXQ6IG5vbmVcbiAgd2lkdGg6IDEwMCVcbiAgbWFyZ2luLWxlZnQ6IGF1dG9cbiAgbWFyZ2luLXJpZ2h0OiBhdXRvXG5cbiAgJjpmaXJzdC1jaGlsZFxuICAgIG1hcmdpbi17c2lkZX06IGF1dG9cblxuICAmOmxhc3QtY2hpbGRcbiAgICBtYXJnaW4te29wcG9zaXRlLXNpZGV9OiBhdXRvXG5cbiAgaWYgcGFkICE9IDBcbiAgICBwYWRkaW5nLWxlZnQ6IHBhZFxuICAgIHBhZGRpbmctcmlnaHQ6IHBhZFxuXG4gIGlmIChhbGlnbiBpcyBub3QgZmFsc2UpXG4gICAgaWYgKGFsaWduID09IGNlbnRlcikgb3IgKGFsaWduID09IGMpXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXJcbiAgICBpZiAoYWxpZ24gPT0gbGVmdCkgb3IgKGFsaWduID09IGwpXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0XG4gICAgaWYgKGFsaWduID09IHJpZ2h0KSBvciAoYWxpZ24gPT0gcilcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0XG5cbi8qKlxuICogVW5zdGFjayBhbiBlbGVtZW50LlxuICovXG51bnN0YWNrKClcbiAgc2lkZSA9IGplZXQtZ2V0LWxheW91dC1kaXJlY3Rpb24oKVxuICBvcHBvc2l0ZS1zaWRlID0gb3Bwb3NpdGUtcG9zaXRpb24oc2lkZSlcblxuICB0ZXh0LWFsaWduOiBzaWRlXG4gIGRpc3BsYXk6IGlubGluZVxuICBjbGVhcjogbm9uZVxuICB3aWR0aDogYXV0b1xuICBtYXJnaW4tbGVmdDogMFxuICBtYXJnaW4tcmlnaHQ6IDBcblxuICAmOmZpcnN0LWNoaWxkXG4gICAgbWFyZ2luLXtzaWRlfTogMFxuXG4gICY6bGFzdC1jaGlsZFxuICAgIG1hcmdpbi17b3Bwb3NpdGUtc2lkZX06IDBcblxuLyoqXG4gKiBDZW50ZXIgYW4gZWxlbWVudCBvbiBlaXRoZXIgb3IgYm90aCBheGVzLlxuICogQHJlcXVpcmVzIEEgcGFyZW50IGNvbnRhaW5lciB3aXRoIHJlbGF0aXZlIHBvc2l0aW9uaW5nLlxuICogQHBhcmFtIHtzdHJpbmd9IFtkaXJlY3Rpb249Ym90aF0gLSBTcGVjaWZ5IHdoaWNoIGF4ZXMgdG8gY2VudGVyIHRoZSBlbGVtZW50IG9uLlxuICovXG5hbGlnbihkaXJlY3Rpb24gPSBib3RoKVxuICBwb3NpdGlvbjogYWJzb2x1dGVcbiAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZFxuXG4gIGlmIChkaXJlY3Rpb24gPT0gaG9yaXpvbnRhbCkgb3IgKGRpcmVjdGlvbiA9PSBoKVxuICAgIGxlZnQ6IDUwJVxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKVxuICBlbHNlIGlmIChkaXJlY3Rpb24gPT0gdmVydGljYWwpIG9yIChkaXJlY3Rpb24gPT0gdilcbiAgICB0b3A6IDUwJVxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKVxuICBlbHNlXG4gICAgdG9wOiA1MCVcbiAgICBsZWZ0OiA1MCVcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKVxuXG4vKipcbiAqIEFwcGx5IGEgY2xlYXJmaXggdG8gYW4gZWxlbWVudC5cbiAqL1xuY2YoKVxuICAqem9vbTogMVxuXG4gICY6YmVmb3JlLCAmOmFmdGVyXG4gICAgY29udGVudDogJydcbiAgICBkaXNwbGF5OiB0YWJsZVxuXG4gICY6YWZ0ZXJcbiAgICBjbGVhcjogYm90aFxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9 */
