/*
 * @description: ocs console bussiness stylesheet
 * @version: 0.1
 */
/*
 * @description: common css variable and function
 * @version: 0.1
 */
 .views{
  width: 100%;
  height: 100%;
  overflow: hidden;
}

.views>div{
 width: 100%;
 height: 100%;
 overflow: hidden;
}
.views .manualPlacementView{
 width: 100%;
 height: 100%;
 /*overflow-x: scroll !important;*/
}
.views>div .side{
 width: 100%;
 height: 100%;
 overflow: hidden;
}
.page {
  padding-left: 230px;
  transition: padding-left 0.1s linear;
  overflow: hidden;
  height: 100%;
}
.page .content{
  width: 100%;
  height: 100%;
  overflow: hidden;
}
.page .content .module{
  overflow-x: hidden;
  height: calc(100% - 100px);
  margin-left: 0 !important;
  clear: both;
}
@media screen and (max-width: 1045px){
  .page .content .module{
    overflow-x: scroll !important;
  }
}

.thin-left-nav .page {
  padding-left: 70px;
}

.top-prompt {
  height: 34px;
  padding: 7px 20px 0 20px;
  background-color: #ffe3a6;
}
.top-prompt .txt-bright {
  text-decoration: underline;
}
.top-prompt .icon-cancel {
  float: right;
  margin-top: 4px;
}

.header {
  width: 100%;
  padding: 15px 20px 15px 20px;
  color: #fff;
}
.header .breadcrunmbs {
  padding-top: 10px;
  padding-bottom: 10px;
}
.header .breadcrunmbs .breadcrumb {
  display: inline-block;
  background: none;
  padding: 0;
  margin: 0;
  padding-left: 14px;
  border-radius: 0px;
}
.header .breadcrunmbs .breadcrumb a, .header .breadcrunmbs .breadcrumb span {
  color: #888;
}
.header .breadcrunmbs .sidebar a {
  color: #444;
}
.header .breadcrunmbs .sidebar a:hover {
  color: #188ae2;
}
.header .header-item > li {
  margin-left: 24px;
  display: inline-block;
  vertical-align: top;
}
.header .header-item > li.header-doc a {
  color: #888;
}
.header .header-item > li.header-doc .icon-doc {
  margin-right: 10px;
}
.header .header-item > li.header-user {
  position: relative;
  min-width: 80px;
}
.header .header-item > li.header-user .user-header {
  height: 26px;
  width: 26px;
  border-radius: 50%;
  margin-right: 10px;
}
.header .header-item > li.header-user .username {
  display: block;
  text-align: right;
  color: #888;
}
.header .header-item > li.header-user .username .icon-down-white {
  margin-left: 8px;
}
.header .page-info {
  overflow: hidden;
}
.header .page-info .page-title {
  float: left;
  margin: 5px 40px 21px 0;
  font-size: 22px;
}
.header .page-info .page-detail {
  display: block;
  margin-top: 8px;
}

.mod-option {
  padding: 20px;
}
.mod-option.hasborder {
  border-bottom: 10px solid #def0fe;
}
.mod-option .ui-btn-lg {
  height: 34px;
  width: 100px;
  color: #fff;
  font-size: 14px;
  font-weight: normal;
  background-color: #188ae2;
}
.mod-option .ui-btn-lg .icon-add-white {
  margin-right: 4px;
}
.mod-option .right-option .ui-input-search {
  margin-left: 34px;
}
.mod-option .right-option .icon-down-white {
  margin-left: 4px;
}

.mod-list .ui-table-ocs .ui-btn:not(:first-child) {
  margin-left: 10px;
}

.detail-header {
  padding: 20px 20px 20px 20px;
  border-bottom: 20px solid #f0f2f5;
  overflow: hidden;
}
.detail-header .detail-item {
  float: left;
}
.detail-header .detail-item .item-name {
  display: block;
  font-size: 14px;
}
.detail-header .detail-item .item-content {
  display: inline-block;
  margin-top: 4px;
  color: #444;
}
.detail-header .detail-item .item-content + .item-content {
  margin-left: 8px;
}
.detail-header .detail-sep {
  float: left;
  display: block;
  height: 30px;
  width: 2px;
  margin: 13px 22px 0 22px;
  background-color: #eee;
}

.mod-tips-info {
  padding-left: 20px;
}

.mod-title {
  font-weight: bold;
  font-size: 14px;
  margin: 18px 0 18px 42px;
}

.mod-project .setting-type {
  display: inline-block;
  width: 200px;
  height: 100px;
  margin-right: 14px;
  padding: 12px 6px 12px;
  border: 2px solid transparent;
  background-color: #f0f2f5;
  border-radius: 3px;
  vertical-align: top;
  -moz-transition: background-color 0.2s;
  -o-transition: background-color 0.2s;
  -webkit-transition: background-color 0.2s;
  transition: background-color 0.2s;
}
.mod-project .setting-type:hover {
  cursor: pointer;
}
.mod-project .setting-type:hover, .mod-project .setting-type.active {
  border: 2px solid #188ae2;
  background-color: #fff;
}
.mod-project .setting-type h4 {
  margin-bottom: 14px;
  font-size: 14px;
  font-weight: bold;
}
.mod-project .setting-type p {
  font-size: 12px;
}

.com-creator-selection {
  display: inline-block;
}
.com-creator-selection .com-select-con {
  display: inline-block;
}
.com-creator-selection .role-select {
  width: 80px;
  margin-right: 10px;
}

.com-list-info {
  padding: 20px;
}
.com-list-info > li {
  display: table;
  width: 100%;
}
.com-list-info > li .info-name {
  display: table-cell;
  width: 162px;
  padding: 21px 8px;
  vertical-align: top;
  font-weight: bold;
}
.com-list-info > li .info-name.not-align-input {
  padding-top: 16px;
}
.com-list-info > li .info-name.info-name-sm {
  padding-top: 23px;
}
.com-list-info > li .info-name.info-name-lg {
  padding-top: 33px;
}
.com-list-info > li .info-simple {
  display: inline-block;
  width: 70%;
  padding: 23px 0 16px 45px;
}
.com-list-info > li .info-content {
  display: table-cell;
  padding: 15px 20px;
}
.com-list-info > li .info-content.nochild {
  padding-top: 23px;
}
.com-list-info > li .info-content.info-content-lg-height {
  padding-top: 21px;
}
.com-list-info > li .info-content .com-check-con {
  margin-right: 40px;
}
.com-list-info > li .info-content .log-topic {
  display: -webkit-flex;
  display: flex;
}
.com-list-info > li .info-content .log-topic .ui-input-fill {
  -webkit-flex: 1;
  flex: 1;
  margin-right: 0;
}
.com-list-info > li .info-content .auto-collect {
  display: inline-block;
  padding-top: 8px;
  top: 0 !important;
}
.com-list-info > li .info-content .container-unit {
  display: inline-block;
  margin-top: 8px;
}
.com-list-info > li .info-content .host-txt-con {
  display: -webkit-flex;
  display: flex;
  width: 100%;
  height: auto;
  min-height: 34px;
}
.com-list-info > li .info-content .line-short, .com-list-info > li .info-content .line-long, .com-list-info > li .info-content .line-single, .com-list-info > li .info-content .line-longer {
  position: relative;
  width: 40%;
  display: -webkit-flex;
  display: flex;
}
.com-list-info > li .info-content .line-short:not(:first-child), .com-list-info > li .info-content .line-long:not(:first-child), .com-list-info > li .info-content .line-single:not(:first-child), .com-list-info > li .info-content .line-longer:not(:first-child) {
  margin-top: 15px;
}
.com-list-info > li .info-content .txt-wrap {
  position: absolute;
  left: 100%;
  top: 7px;
  margin-left: 10px;
  width: 300px;
}
.com-list-info > li .info-content .txt-wrap-icon {
  position: absolute;
  left: 100%;
  margin-left: 10px;
}
.com-list-info > li .info-content .line-long {
  width: 60%;
}
.com-list-info > li .info-content .line-longer {
  width: 70%;
}
.com-list-info > li .info-content .line-single {
  position: relative;
  width: 70%;
}
.com-list-info > li .info-content .line-single .single-element {
  width: 100%;
}
.com-list-info > li .info-content .line-element {
  position: relative;
  flex: 1;
}
.com-list-info > li .info-content .child-name {
  width: 120px;
  line-height: 30px;
}
.com-list-info > li .info-content .child-info .ui-input-fill {
  width: 100%;
  margin-bottom: 16px;
}
.com-list-info > li .info-content .child-info .child-repeat {
  position: relative;
}
.com-list-info > li .info-content .child-error {
  padding-left: 122px;
}
.com-list-info > li .info-content .child-txt {
  line-height: 30px;
}
.com-list-info > li .info-content .top-margin {
  margin-top: 20px;
}
.com-list-info > li .info-content .align-name {
  display: block;
  padding-top: 4px;
}
.com-list-info > li.has-border {
  border-bottom: 1px solid #f0f2f5;
}
.com-list-info.border-info {
  border: 1px solid #f0f2f5;
}
.com-list-info.border-info li {
  border-top: 1px solid #f0f2f5;
}

.com-list-info.border-info li:first-child {
  border-top: none;
}
.com-list-info.border-info li .info-simple, .com-list-info.border-info li .info-content {
  border-left: 1px solid #f0f2f5;
}

.mod-deploy .log-error {
  padding-left: 110px;
}
.mod-deploy .add-loadbalance {
  margin-top: 12px;
}
.mod-deploy .add-log {
  margin-top: 12px;
}
.mod-deploy .log-item:not(:first-child) {
  margin-top: 12px;
}
.mod-deploy .log-item {
  position: relative;
  width: 60%;
  padding: 10px 30px 10px 10px;
  border: 1px solid #f0f2f5;
}
.mod-deploy .log-item .cancel-log {
  position: absolute;
  top: 8px;
  right: 8px;
}
.mod-deploy .log-item .element-full {
  width: 100%;
}
.mod-deploy .log-item .log-check, .mod-deploy .log-item .ips {
  margin-top: 10px;
}
.mod-deploy .log-item .ips {
  position: relative;
}
.mod-deploy .log-item .ips:first-child {
  margin-top: 0;
}
.mod-deploy .log-item .line-full {
  margin-top: 10px;
  display: -webkit-flex;
  display: flex;
}
.mod-deploy .log-item .line-full .log-title {
  width: 110px;
  padding-top: 6px;
}
.mod-deploy .log-item .line-full .log-title.not-align-input {
  padding-top: 0;
}
.mod-deploy .log-item .line-full .serlog-title {
  width: 130px;
  padding-top: 6px;
}
.mod-deploy .log-item .unit {
  display: inline-block;
  margin: 7px 0 0 10px;
}
.mod-deploy .com-bottom-option-create {
  padding-top: 30px;
  padding-bottom: 30px;
  text-align: left;
  margin-left: 190px;
}
.mod-deploy input[name="volumeNameKey"]::-webkit-input-placeholder {
  color: #888 !important;
}
.mod-deploy input[name="volumeNameKey"]:-moz-placeholder {
  /* Firefox 18- */
  color: #888 !important;
}
.mod-deploy input[name="volumeNameKey"]::-moz-placeholder {
  /* Firefox 19+ */
  color: #888 !important;
}
.mod-deploy input[name="volumeNameKey"]:-ms-input-placeholder {
  color: #888 !important;
}

.mod-cluster .select-creator {
  width: 70%;
}
.mod-cluster .cluster-log-con {
  width: 70%;
}
.mod-cluster .cluster-log-con .cluster-log {
  width: 100%;
}
.mod-cluster .cluster-log-con .cluster-log:not(:first-child) {
  margin-top: 10px;
}
.mod-cluster .protocol {
  margin: 8px 8px 0 0;
}

.modal-newpw .info-name {
  display: inline-block;
  margin-top: 6px;
}

.modal-container .com-select-con {
  display: inline-block;
  width: 400px;
}

.modal-buildModal .info-txt input {
  width: 100%;
}

.modal-instance .com-list-table {
  margin: 0 -15px 0 -15px;
  max-height: 300px;
  overflow-y: auto;
}

.modal-scale ul {
  display: inline-block;
  text-align: left;
}
.modal-scale .info-name {
  display: inline-block;
  width: 106px;
  padding-top: 6px;
  vertical-align: top;
}
.modal-scale .info-content {
  display: inline-block;
}
.modal-scale .info-content .ui-input-white {
  width: 126px;
  margin-right: 10px;
}

.modal-scale.modal-scale-daemonset .info-content .ui-input-white {
  width: 200px;
}

.modal-scale-daemonset li .info-content .txt-wrap {
  display: inline-block;
  padding-top: 7px;
  vertical-align: top;
  margin-left: 10px;
}

.alarm-tpl-detail .btn-edit {
  margin: 18px 0 20px 42px;
  margin-bottom: 12px;
}

.code-info-modal ul {
  display: table;
  width: auto;
  text-align: right;
  margin: 0 auto;
}
.code-info-modal ul li {
  padding-top: 0;
  padding-bottom: 10px;
}
.code-info-modal ul li .info-name {
  padding-right: 25px;
  font-weight: bold;
  width: auto;
}



/*# sourceMappingURL=data:application/json;charset=utf8;base64,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Q2hCLGNBQWMsRUFBRSxHQUFHO0FBRXBCLDBCQUFhO0VBQ1osT0FBTyxFQUFFLFlBQVk7RUFDckIsMENBQWU7SUFDZCxLQUFLLEVBQUUsS0FBSztJQUNaLFlBQVksRUFBRSxJQUFJOztBQUlyQixnRUFBaUU7RUFDN0QsS0FBSyxFQUFFLEtBQUs7O0FBRWhCLGlEQUFrRDtFQUM5QyxPQUFPLEVBQUUsWUFBWTtFQUNyQixXQUFXLEVBQUUsR0FBRztFQUNoQixjQUFjLEVBQUUsR0FBRztFQUN0QixXQUFXLEVBQUUsSUFBSTs7QUFJakIsMkJBQVM7RUFDUixNQUFNLEVBQUUsZ0JBQWdCO0VBQ3hCLGFBQWEsRUFBRSxJQUFJOztBQUtwQixtQkFBRTtFQUNHLE9BQU8sRUFBRSxLQUFLO0VBQ2QsS0FBSyxFQUFFLElBQUk7RUFDWCxVQUFVLEVBQUUsS0FBSztFQUNqQixNQUFNLEVBQUUsTUFBTTtFQUNkLHNCQUFFO0lBQ0EsV0FBVyxFQUFDLENBQUM7SUFDYixjQUFjLEVBQUUsSUFBSTtJQUNwQixpQ0FBVTtNQUNSLGFBQWEsRUFBRSxJQUFJO01BQ25CLFdBQVcsRUFBRSxJQUFJO01BQ2pCLEtBQUssRUFBRSxJQUFJIiwic291cmNlcyI6WyJpbmRleC9jc3MvYnVzc2luZXNzLnNjc3MiLCJjb21tb24vY3NzL19jb21tb24uc2NzcyIsIi4uLy4uLy4uLy4uLy4uLy4uL0xpYnJhcnkvUnVieS9HZW1zLzIuMC4wL2dlbXMvY29tcGFzcy1jb3JlLTEuMC4zL3N0eWxlc2hlZXRzL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi4uLy4uLy4uLy4uLy4uLy4uL0xpYnJhcnkvUnVieS9HZW1zLzIuMC4wL2dlbXMvY29tcGFzcy1jb3JlLTEuMC4zL3N0eWxlc2hlZXRzL2NvbXBhc3MvY3NzMy9fdHJhbnNpdGlvbi5zY3NzIiwiLi4vLi4vLi4vLi4vLi4vLi4vTGlicmFyeS9SdWJ5L0dlbXMvMi4wLjAvZ2Vtcy9jb21wYXNzLWNvcmUtMS4wLjMvc3R5bGVzaGVldHMvY29tcGFzcy9jc3MzL19mbGV4Ym94LnNjc3MiXSwibmFtZXMiOltdLCJmaWxlIjoiaW5kZXgvY3NzL2J1c3NpbmVzcy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQGRlc2NyaXB0aW9uOiBkb21lIGNvbnNvbGUgYnVzc2luZXNzIHN0eWxlc2hlZXRcbiAqIEB2ZXJzaW9uOiAwLjFcbiAqL1xuIEBpbXBvcnQgXCJjb21wYXNzL2NzczNcIjtcbiBAaW1wb3J0IFwiY29tbW9uL2Nzcy9jb21tb24uc2Nzc1wiO1xuLy8gcGFnZSBrZXlmcmFtZVxuLnBhZ2Uge1xuICAgIHBhZGRpbmctbGVmdDogJG5hdi13aWR0aDtcbiAgICB0cmFuc2l0aW9uOiBwYWRkaW5nLWxlZnQgJG5hdi10cmFuc2l0aW9uLWR1cmF0aW9uIGxpbmVhcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgLmNvbnRlbnQge1xuICAgICAgICAubW9kdWxlIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgICAgICAgIG1hcmdpbjogMCAyMHB4IDIwcHggMjBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRkZWZhdWx0LXJhZGl1cztcbiAgICAgICAgfVxuICAgIH1cbn1cbkBtZWRpYSAobWF4LWhlaWdodDogMTMwMHB4KSB7XG4gICAgLm1vZHVsZXtcbiAgICAgICAgbWluLWhlaWdodDogMTIwMHB4O1xuICAgIH1cbn1cbkBtZWRpYSAobWF4LWhlaWdodDogNjQwcHgpIHtcbiAgICAubW9kdWxle1xuICAgICAgICBtaW4taGVpZ2h0OiA0NjBweDtcbiAgICB9XG59XG5AbWVkaWEgKG1heC1oZWlnaHQ6IDc5MHB4KSB7XG4gICAgLm1vZHVsZXtcbiAgICAgICAgbWluLWhlaWdodDogNTYwcHg7XG4gICAgfVxufVxuLnRoaW4tbGVmdC1uYXYgLnBhZ2Uge1xuICAgIHBhZGRpbmctbGVmdDogJHRoaW4tbmF2LXdpZHRoO1xufVxuLnRvcC1wcm9tcHR7XG5cdGhlaWdodDogMzRweDtcblx0cGFkZGluZzogN3B4ICRwYWdlLXBhZGRpbmcgMCAkcGFnZS1wYWRkaW5nO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlM2E2O1xuXHQudHh0LWJyaWdodHtcblx0XHR0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcblx0fVxuXHQuaWNvbi1jYW5jZWx7XG5cdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdG1hcmdpbi10b3A6IDRweDtcblx0fVxufVxuLy8gdG9wIGhlYWRlclxuLmhlYWRlcntcblx0d2lkdGg6IDEwMCU7XG5cdHBhZGRpbmc6IDE1cHggJHBhZ2UtcGFkZGluZyAxNXB4ICRwYWdlLXBhZGRpbmc7XG5cdGNvbG9yOiAjZmZmO1xuXHQvL0BleHRlbmQgJWRvbWUtYmFja2dyb3VuZDtcblx0LmJyZWFkY3J1bm1ic3tcblx0XHRwYWRkaW5nLXRvcDogMTBweDtcblx0XHRwYWRkaW5nLWJvdHRvbTogMTBweDtcblx0XHQuYnJlYWRjcnVtYntcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdGJhY2tncm91bmQ6IG5vbmU7XG5cdFx0XHRwYWRkaW5nOiAwO1xuXHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0cGFkZGluZy1sZWZ0OjE0cHg7XG5cdFx0XHRib3JkZXItcmFkaXVzOiAwcHg7XG5cdFx0XHRhLHNwYW57XG5cdFx0XHRcdGNvbG9yOiBkb21lLWNvbG9yKGZvbnQsZGVmYXVsdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC5zaWRlYmFye1xuXHRcdFx0YXtcblx0XHRcdFx0Y29sb3I6IGRvbWUtY29sb3IoZm9udCxlbWJlZCk7XG5cdFx0XHR9XG5cdFx0XHRhOmhvdmVye1xuXHRcdFx0XHRjb2xvcjogZG9tZS1jb2xvcihkb21lLGJyaWdodCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC5oZWFkZXItaXRlbXtcblx0XHQkaWNvbi1kaXN0YW5jZToxMHB4O1xuXHRcdCY+bGl7XG5cdFx0XHQvLyBmbG9hdDogcmlnaHQ7XG5cdFx0XHRtYXJnaW4tbGVmdDogMjRweDtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdHZlcnRpY2FsLWFsaWduOnRvcDtcblx0XHRcdC8vIGxpbmUtaGVpZ2h0OiAyNnB4O1xuXHRcdFx0Ji5oZWFkZXItZG9je1xuXHRcdFx0XHRhe1xuXHRcdFx0XHRcdGNvbG9yOiBkb21lLWNvbG9yKGZvbnQsZGVmYXVsdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Lmljb24tZG9je1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDokaWNvbi1kaXN0YW5jZTtcblxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQmLmhlYWRlci11c2Vye1xuXHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdG1pbi13aWR0aDogODBweDtcblx0XHRcdFx0LnVzZXItaGVhZGVye1xuXHRcdFx0XHRcdGhlaWdodDogMjZweDtcblx0XHRcdFx0XHR3aWR0aDogMjZweDtcblx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XG5cdFx0XHRcdFx0bWFyZ2luLXJpZ2h0OiAkaWNvbi1kaXN0YW5jZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQudXNlcm5hbWV7XG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0XHRcdFx0Y29sb3I6IGRvbWUtY29sb3IoZm9udCxkZWZhdWx0KTtcblx0XHRcdFx0XHQvLyBsaW5lLWhlaWdodDogMjZweDtcblx0XHRcdFx0XHQuaWNvbi1kb3duLXdoaXRle1xuXHRcdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDhweDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0LnBhZ2UtaW5mb3tcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdC5wYWdlLXRpdGxle1xuXHRcdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0XHRtYXJnaW46IDVweCA0MHB4IDIxcHggMDtcblx0XHRcdGZvbnQtc2l6ZTpmb250LXNpemUodGl0bGUpO1xuXHRcdH1cblx0XHQucGFnZS1kZXRhaWx7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdG1hcmdpbi10b3A6IDhweDtcblx0XHR9XG5cdH1cbn1cbi8vIGNvbnRlbnQgZGl2IC0tPiBjb21tb24gdG9wIG9wdGlvblxuLm1vZC1vcHRpb257XG5cdC8vIGhlaWdodDogNzlweDtcblx0cGFkZGluZzoyMHB4O1xuXHQmLmhhc2JvcmRlcntcblx0XHRib3JkZXItYm90dG9tOiAxMHB4IHNvbGlkIGRvbWUtY29sb3IoYmFja2dyb3VuZCxwcmltYXJ5KTtcblx0fVxuXHQudWktYnRuLWxne1xuXHRcdGhlaWdodDogMzRweDtcblx0XHR3aWR0aDogMTAwcHg7XG5cdFx0Y29sb3I6ICNmZmY7XG5cdFx0Zm9udC1zaXplOjE0cHg7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBkb21lLWNvbG9yKGRvbWUsYnJpZ2h0KTtcblx0XHQuaWNvbi1hZGQtd2hpdGV7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDRweDtcblx0XHR9XG5cdH1cblx0LnJpZ2h0LW9wdGlvbntcblx0XHQvLyBwYWRkaW5nLXRvcDogMTBweDtcblx0XHQudWktaW5wdXQtc2VhcmNoe1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDM0cHg7XG5cdFx0XHQvLyBtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdFx0fVxuXHRcdC5pY29uLWRvd24td2hpdGV7XG5cdFx0XHRtYXJnaW4tbGVmdDogNHB4O1xuXHRcdH1cblx0fVxufVxuLy8gY29udGVudCBkaXYgLS0+IGNvbW1vbiBpbmZvIGxpc3Rcbi5tb2QtbGlzdHtcblx0LnVpLXRhYmxlLWRvbWV7XG5cdFx0Jj50Ym9keT50cj50ZDpmaXJzdC1jaGlsZCwmPnRoZWFkPnRyPnRoOmZpcnN0LWNoaWxke1xuXHRcdFx0Ly8gcGFkZGluZy1sZWZ0OiAkd2lkZXItcGFkZGluZztcblx0XHR9XG5cdFx0Jj50Ym9keT50cj50ZDpsYXN0LWNoaWxkLCY+dGhlYWQ+dHI+dGg6bGFzdC1jaGlsZHtcblx0XHRcdC8vIHBhZGRpbmctcmlnaHQ6ICR3aWRlci1wYWRkaW5nO1xuXHRcdH1cblx0XHQudWktYnRuOm5vdCg6Zmlyc3QtY2hpbGQpe1xuXHRcdFx0bWFyZ2luLWxlZnQ6IDEwcHg7XG5cdFx0fVxuXHR9XG59XG5cbi8vIChlZzogZGVwbG95IGRldGFpbCBoZWFkZXIpXG4uZGV0YWlsLWhlYWRlcntcblx0cGFkZGluZzogMjBweCAkcGFnZS1wYWRkaW5nIDIwcHggMjBweDsvLyRwYWdlLXBhZGRpbmctPjBcblx0Ym9yZGVyLWJvdHRvbTogMjBweCBzb2xpZCBkb21lLWNvbG9yKGJhY2tncm91bmQsbGlnaHQpO1xuXHRvdmVyZmxvdzogaGlkZGVuO1xuXHQuZGV0YWlsLWl0ZW17XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0Lml0ZW0tbmFtZXtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0Zm9udC1zaXplOiAxNHB4O1xuXHRcdH1cblx0XHQuaXRlbS1jb250ZW50e1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0bWFyZ2luLXRvcDogNHB4O1xuXHRcdFx0Y29sb3I6IGRvbWUtY29sb3IoZm9udCxlbWJlZCk7XG5cdFx0XHQmKy5pdGVtLWNvbnRlbnR7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiA4cHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC5kZXRhaWwtc2Vwe1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGhlaWdodDogMzBweDtcblx0XHR3aWR0aDogMnB4O1xuXHRcdG1hcmdpbjogMTNweCAyMnB4IDAgMjJweDtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBkb21lLWNvbG9yKGJvcmRlcixsaWdodCk7XG5cdH1cblxufVxuLm1vZC10aXBzLWluZm97XG5cdHBhZGRpbmctbGVmdDogMjBweDtcbn1cbi5tb2QtdGl0bGV7XG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRmb250LXNpemU6IDE0cHg7XG5cdG1hcmdpbjogMThweCAwIDE4cHggNDJweDtcbn1cbi5tb2QtcHJvamVjdHtcblx0LnNldHRpbmctdHlwZXtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0d2lkdGg6IDIwMHB4O1xuXHRcdGhlaWdodDogMTAwcHg7XG5cdFx0bWFyZ2luLXJpZ2h0OiAxNHB4O1xuXHRcdHBhZGRpbmc6IDEycHggNnB4IDEycHg7XG5cdFx0Ym9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogZG9tZS1jb2xvcihiYWNrZ3JvdW5kLGxpZ2h0KTtcblx0XHRib3JkZXItcmFkaXVzOiAkZGVmYXVsdC1yYWRpdXM7XG5cdFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0XHRAaW5jbHVkZSB0cmFuc2l0aW9uKGJhY2tncm91bmQtY29sb3IgLjJzKTtcblx0XHQmOmhvdmVye1xuXHRcdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdH1cblx0XHQmOmhvdmVyLCYuYWN0aXZle1xuXHRcdFx0Ym9yZGVyOjJweCBzb2xpZCBkb21lLWNvbG9yKGRvbWUsYnJpZ2h0KTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG5cdFx0fVxuXHRcdGg0e1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMTRweDtcblx0XHRcdGZvbnQtc2l6ZTogMTRweDtcblx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdH1cblx0XHRwe2ZvbnQtc2l6ZTogMTJweDt9XG5cdH1cbn1cbi5jb20tY3JlYXRvci1zZWxlY3Rpb257XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0LmNvbS1zZWxlY3QtY29ue1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0fVxuXHQucm9sZS1zZWxlY3R7XG5cdFx0d2lkdGg6IDgwcHg7XG5cdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xuXHR9XG59XG5cbi8vIGxpc3QgaW5mbyBkaXNwbGF5LihlZzogY3JlYXRlIGRlcGxveeOAgWNyZWF0ZSBjbHVzdGVyKVxuLmNvbS1saXN0LWluZm97XG5cdHBhZGRpbmc6IDIwcHg7XG5cdCY+bGl7XG5cdFx0ZGlzcGxheTogdGFibGU7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0LmluZm8tbmFtZXtcblx0XHRcdGRpc3BsYXk6IHRhYmxlLWNlbGw7XG5cdFx0XHR3aWR0aDogMTYycHg7XG5cdFx0XHRwYWRkaW5nOiAyMXB4IDhweDtcblx0XHRcdHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHRcdCYubm90LWFsaWduLWlucHV0e1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogMTZweDtcblx0XHRcdH1cblx0XHRcdCYuaW5mby1uYW1lLXNte1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogMjNweDtcblx0XHRcdH1cblx0XHRcdCYuaW5mby1uYW1lLWxne1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogMzNweDtcblx0XHRcdH1cblx0XHR9XG5cdFx0LmluZm8tc2ltcGxle1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0d2lkdGg6IDcwJTtcblx0XHRcdHBhZGRpbmc6IDIzcHggMCAxNnB4IDQ1cHg7XG5cdFx0fVxuXHRcdC5pbmZvLWNvbnRlbnR7XG5cdFx0XHRkaXNwbGF5OiB0YWJsZS1jZWxsO1xuXHRcdFx0cGFkZGluZzogMTVweCAyMHB4O1xuXHRcdFx0Ji5ub2NoaWxke1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogMjNweDtcblx0XHRcdH1cblx0XHRcdCYuaW5mby1jb250ZW50LWxnLWhlaWdodHtcblx0XHRcdFx0cGFkZGluZy10b3A6IDIxcHg7XG5cdFx0XHR9XG5cdFx0XHQuY29tLWNoZWNrLWNvbntcblx0XHRcdFx0bWFyZ2luLXJpZ2h0OiA0MHB4O1xuXHRcdFx0fVxuXHRcdFx0LmxvZy10b3BpY3tcblx0XHRcdFx0QGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuXHRcdFx0XHQudWktaW5wdXQtZmlsbHtcblx0XHRcdFx0XHRAaW5jbHVkZSBmbGV4KDEpO1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LmF1dG8tY29sbGVjdHtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogOHB4O1xuXHRcdFx0XHR0b3A6IDAgIWltcG9ydGFudDtcblx0XHRcdH1cblx0XHRcdC5jb250YWluZXItdW5pdHtcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRtYXJnaW4tdG9wOiA4cHg7XG5cdFx0XHR9XG5cdFx0XHQuaG9zdC10eHQtY29ue1xuXHRcdFx0XHRAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0XHRcdG1pbi1oZWlnaHQ6IDM0cHg7XG5cdFx0XHR9XG5cdFx0XHQvLyAuY29tLXNlbGVjdC1jb257XG5cdFx0XHQvLyBcdCY6bm90KDpmaXJzdC1jaGlsZCl7XG5cdFx0XHQvLyBcdFx0bWFyZ2luLWxlZnQ6IDEwcHg7XG5cdFx0XHQvLyBcdH1cblx0XHRcdC8vIH1cblx0XHRcdC5saW5lLXNob3J0LC5saW5lLWxvbmcsLmxpbmUtc2luZ2xlLC5saW5lLWxvbmdlcntcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHR3aWR0aDogNDAlO1xuXHRcdFx0XHRAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG5cdFx0XHRcdCY6bm90KDpmaXJzdC1jaGlsZCl7XG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogMTVweDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LnR4dC13cmFwe1xuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHRcdGxlZnQ6IDEwMCU7XG5cdFx0XHRcdHRvcDogN3B4O1xuXHRcdFx0XHRtYXJnaW4tbGVmdDogMTBweDtcblx0XHRcdFx0d2lkdGg6IDMwMHB4O1xuXHRcdFx0fVxuXHRcdFx0LnR4dC13cmFwLWljb257XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0bGVmdDogMTAwJTtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDEwcHg7XG5cdFx0XHR9XG5cdFx0XHQubGluZS1sb25ne1xuXHRcdFx0XHR3aWR0aDogNjAlO1xuXHRcdFx0fVxuXHRcdFx0LmxpbmUtbG9uZ2Vye1xuXHRcdFx0XHR3aWR0aDogNzAlO1xuXHRcdFx0fVxuXHRcdFx0LmxpbmUtc2luZ2xle1xuXHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdHdpZHRoOiA3MCU7XG5cdFx0XHRcdC5zaW5nbGUtZWxlbWVudHtcblx0XHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LmxpbmUtZWxlbWVudHtcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0XHRmbGV4OjE7XG5cdFx0XHR9XG5cdFx0XHQuY2hpbGQtbmFtZSB7XG5cdFx0XHRcdHdpZHRoOiAxMjBweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDMwcHg7XG5cdFx0XHR9XG5cdFx0XHQuY2hpbGQtaW5mb3tcblx0XHRcdFx0LnVpLWlucHV0LWZpbGx7XG5cdFx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMTZweDtcblx0XHRcdFx0fVxuXHRcdFx0XHQuY2hpbGQtcmVwZWF0e1xuXHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LmNoaWxkLWVycm9ye1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IDEyMnB4O1xuXHRcdFx0fVxuXHRcdFx0LmNoaWxkLXR4dCB7XG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiAzMHB4O1xuXHRcdFx0fVxuXHRcdFx0LnRvcC1tYXJnaW57XG5cdFx0XHRcdG1hcmdpbi10b3A6IDIwcHg7XG5cdFx0XHR9XG5cdFx0XHQuYWxpZ24tbmFtZXtcblx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiA0cHg7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdCYuaGFzLWJvcmRlcntcblx0XHRcdGJvcmRlci1ib3R0b206ICRsaWdodC1ib3JkZXI7XG5cdFx0fVxuXHR9XG5cdCYuYm9yZGVyLWluZm97XG5cdFx0Ym9yZGVyOiAkbGlnaHQtYm9yZGVyO1xuXHRcdGxpe1xuXHRcdFx0Ym9yZGVyLXRvcDogICRsaWdodC1ib3JkZXI7XG5cdFx0XHQmOmZpcnN0LWNoaWxke1xuXHRcdFx0XHRib3JkZXItdG9wOiBub25lO1xuXHRcdFx0fVxuXHRcdFx0LmluZm8tc2ltcGxlLC5pbmZvLWNvbnRlbnR7XG5cdFx0XHRcdGJvcmRlci1sZWZ0OiAkbGlnaHQtYm9yZGVyO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuLy8gZGVwbG95IG1vZHVsZSBzdHlsZXNoZWV0XG4ubW9kLWRlcGxveXtcblx0LmxvZy1lcnJvcntcblx0XHRwYWRkaW5nLWxlZnQ6IDExMHB4O1xuXHR9XG5cdC5hZGQtbG9hZGJhbGFuY2V7XG5cdFx0bWFyZ2luLXRvcDogMTJweDtcblx0fVxuXHQuYWRkLWxvZ3tcblx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXHR9XG5cdC5sb2ctaXRlbTpub3QoOmZpcnN0LWNoaWxkKXtcblx0XHRtYXJnaW4tdG9wOiAxMnB4O1xuXHR9XG5cdC5sb2ctaXRlbXtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0d2lkdGg6IDYwJTtcblx0XHRwYWRkaW5nOiAxMHB4IDMwcHggMTBweCAxMHB4O1xuXHRcdC8vIG1hcmdpbi1ib3R0b206IDEycHg7XG5cdFx0Ym9yZGVyOiRsaWdodC1ib3JkZXI7XG5cdFx0LmNhbmNlbC1sb2d7XG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0XHR0b3A6IDhweDtcblx0XHRcdHJpZ2h0OiA4cHg7XG5cdFx0fVxuXHRcdC5lbGVtZW50LWZ1bGx7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHR9XG5cdFx0LmxvZy1jaGVjaywuaXBze1xuXHRcdFx0bWFyZ2luLXRvcDogMTBweDtcblx0XHR9XG5cdFx0Lmlwc3tcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdCY6Zmlyc3QtY2hpbGR7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC5saW5lLWZ1bGx7XG5cdFx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRcdFx0QGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuXHRcdFx0LmxvZy10aXRsZSB7XG5cdFx0XHRcdHdpZHRoOiAxMTBweDtcblx0XHRcdFx0cGFkZGluZy10b3A6IDZweDtcblx0XHRcdFx0Ji5ub3QtYWxpZ24taW5wdXR7XG5cdFx0XHRcdFx0cGFkZGluZy10b3A6IDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdC5zZXJsb2ctdGl0bGUge1xuXHRcdFx0XHR3aWR0aDogMTMwcHg7XG5cdFx0XHRcdHBhZGRpbmctdG9wOiA2cHg7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC51bml0e1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0bWFyZ2luOiA3cHggMCAwIDEwcHg7XG5cdFx0fVxuXHR9XG5cdC5jb20tYm90dG9tLW9wdGlvbi1jcmVhdGUge1xuXHQgICAgcGFkZGluZy10b3A6IDMwcHg7XG5cdCAgICBwYWRkaW5nLWJvdHRvbTogMzBweDtcblx0ICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cdCAgICBtYXJnaW4tbGVmdDogMTkwcHg7XG5cdH1cbiAgICBpbnB1dFtuYW1lPVwidm9sdW1lTmFtZUtleVwiXTo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogIzg4OCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIGlucHV0W25hbWU9XCJ2b2x1bWVOYW1lS2V5XCJdOi1tb3otcGxhY2Vob2xkZXIgeyAvKiBGaXJlZm94IDE4LSAqL1xuICAgICAgY29sb3I6ICM4ODggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBpbnB1dFtuYW1lPVwidm9sdW1lTmFtZUtleVwiXTo6LW1vei1wbGFjZWhvbGRlciB7ICAvKiBGaXJlZm94IDE5KyAqL1xuICAgICAgY29sb3I6ICM4ODggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICBpbnB1dFtuYW1lPVwidm9sdW1lTmFtZUtleVwiXTotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICM4ODggIWltcG9ydGFudDtcbiAgICB9XG59XG4vLyBjbHVzdGVyIG1vZHVsZSBzdHlsZXNoZWV0XG4ubW9kLWNsdXN0ZXJ7XG5cdC5zZWxlY3QtY3JlYXRvcntcblx0XHR3aWR0aDogNzAlO1xuXHR9XG5cdC5jbHVzdGVyLWxvZy1jb257XG5cdFx0d2lkdGg6IDcwJTtcblx0XHQuY2x1c3Rlci1sb2d7XG5cdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdCY6bm90KDpmaXJzdC1jaGlsZCl7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDEwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC5wcm90b2NvbHtcblx0XHRtYXJnaW46IDhweCA4cHggMCAwO1xuXHR9XG59XG4vLyBtb2RhbDogL2luZGV4L3RwbC9nbG9iYWxTZXR0aW5nL2dsb2JhbFNldHRpbmcuaHRtbC0tPm5ld1Bhc3N3ZE1vZGFsXG4ubW9kYWwtbmV3cHd7XG5cdC5pbmZvLW5hbWV7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdG1hcmdpbi10b3A6IDZweDtcblx0fVxuXHQvLyAuaW5mby1jb250ZW50e1xuXHQvLyBcdG1hcmdpbi1sZWZ0OjEycHg7d2lkdGg6MzAwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7XG5cdC8vIFx0dmVydGljYWwtYWxpZ246IHRvcDtcblx0Ly8gfVxufVxuLy8gbW9kYWw6IC9pbmRleC90cGwvbW9kYWwvc2VsZWN0Q29udGFpbmVyTW9kYWwvc2VsZWN0Q29udGFpbmVyTW9kYWwuaHRtbFxuLm1vZGFsLWNvbnRhaW5lcntcblx0LmNvbS1zZWxlY3QtY29ue1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHR3aWR0aDogNDAwcHg7XG5cdH1cbn1cbi8vIG1vZGFsOiAvaW5kZXgvdHBsL21vZGFsL2J1aWxkTW9kYWwvYnVpbGRNb2RhbC5odG1sXG4ubW9kYWwtYnVpbGRNb2RhbHtcblx0LmluZm8tdHh0e1xuXHRcdGlucHV0e1xuXHRcdFx0d2lkdGg6MTAwJTtcblx0XHR9XG5cdH1cbn1cbi8vIG1vZGFsOiAvaW5kZXgvdHBsL21vZGFsL2luc3RhbmNlTG9nTW9kYWwvaW5zdGFuY2VMb2dNb2RhbC5odG1sXG4ubW9kYWwtaW5zdGFuY2V7XG5cdC5jb20tbGlzdC10YWJsZXtcblx0XHRtYXJnaW46IDAgLTE1cHggMCAtMTVweDtcblx0XHRtYXgtaGVpZ2h0OiAzMDBweDtcblx0XHRvdmVyZmxvdy15OmF1dG87XG5cdH1cbn1cbi8vIG1vZGFsOiAvaW5kZXgvdHBsL2RlcGxveURldGFpbC9kZXBsb3lEZXRhaWwuaHRtbCAtLT4gc2NhbGVNb2RhbFxuLm1vZGFsLXNjYWxle1xuXHR1bHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0fVxuXHQuaW5mby1uYW1le1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHR3aWR0aDogMTA2cHg7XG5cdFx0cGFkZGluZy10b3A6IDZweDtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuXHR9XG5cdC5pbmZvLWNvbnRlbnR7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdC51aS1pbnB1dC13aGl0ZXtcblx0XHRcdHdpZHRoOiAxMjZweDtcblx0XHRcdG1hcmdpbi1yaWdodDogMTBweDtcblx0XHR9XG5cdH1cbn1cbi5tb2RhbC1zY2FsZS5tb2RhbC1zY2FsZS1kYWVtb25zZXQgLmluZm8tY29udGVudCAudWktaW5wdXQtd2hpdGUge1xuICAgIHdpZHRoOiAyMDBweDtcbn1cbi5tb2RhbC1zY2FsZS1kYWVtb25zZXQgbGkgLmluZm8tY29udGVudCAudHh0LXdyYXAge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nLXRvcDogN3B4O1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cdG1hcmdpbi1sZWZ0OiAxMHB4O1xufVxuLy8gcGFnZTogL2luZGV4L3RwbC9hbGFybVRlbXBsYXRlRGV0YWlsL2FsYXJtVGVtcGxhdGVEZXRhaWwuaHRtbFxuLmFsYXJtLXRwbC1kZXRhaWx7XG5cdC5idG4tZWRpdHtcblx0XHRtYXJnaW46IDE4cHggMCAyMHB4IDQycHg7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTJweDtcblx0fVxufVxuLy8gcGFnZTogL2luZGV4L3RwbC9tb2RhbC9jb2RlSW5mb01vZGFsL2NvZGVJbmZvTW9kYWwuaHRtbFxuLmNvZGUtaW5mby1tb2RhbHtcblx0dWx7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgIGxpe1xuICAgICAgICBwYWRkaW5nLXRvcDowO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgLmluZm8tbmFtZXtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAyNXB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgIHdpZHRoOiBhdXRvO1xuXG5cbiAgICAgICAgfVxuICAgICAgfVxuXHR9XG59XG4iLCIvKlxuICogQGRlc2NyaXB0aW9uOiBjb21tb24gY3NzIHZhcmlhYmxlIGFuZCBmdW5jdGlvblxuICogQHZlcnNpb246IDAuMVxuICovXG5cbiRkZWZhdWx0LXJhZGl1czozcHg7XG4kbmF2LXdpZHRoOjIyNXB4O1xuJHRoaW4tbmF2LXdpZHRoOjcwcHg7XG4kbmF2LXRyYW5zaXRpb24tZHVyYXRpb246MC4xcztcbiRwYWdlLXBhZGRpbmc6MjBweDtcbiR3aWRlci1wYWRkaW5nOjBweDsvLzUycHhcbiRsaXN0LXBhZGRpbmc6OHB4O1xuJHRhYmxlLWhlaWdodDo0NXB4O1xuLy9hY3RpdmU6Izc3YmY0Zixcbi8vc2FmZTojNGVkNmIyLFxuLy9icmlnaHQ6IzE4OGFlMixcbiRkb21lLWNvbG9yczooXG4gICAgZG9tZTooXG4gICAgICAgIGFjdGl2ZTojNGJkMzk2LFxuICAgICAgICB3YXJuaW5nOiNmOWM4NTEsXG4gICAgICAgIGVycm9yOiNmNTcwN2EsXG4gICAgICAgIHNhZmU6IzRiZDM5NixcbiAgICAgICAgcHJpbWFyeTojNWRhYmYzLFxuICAgICAgICBicmlnaHQ6IzE4OGFlMixcbiAgICAgICAgd2hpdGU6I2ZmZixcbiAgICAgICAgYWN0aXZlLWZvbnQ6IzE4OGFlMixcbiAgICAgICAgZGlzYWJsZWQ6I2FhYVxuICAgICAgICApLFxuICAgIGJvcmRlcjooXG4gICAgICAgIGRlZXA6Izk5OSxcbiAgICAgICAgZGVmYXVsdDojY2ZjZmNmLFxuICAgICAgICBsaWdodDojZWVlXG4gICAgICAgICksXG4gICAgZm9udDooXG4gICAgICAgIHByb21wdDojYmJiLFxuICAgICAgICBkZWZhdWx0OiM4ODgsXG4gICAgICAgIGVtYmVkOiM0NDQsXG4gICAgICAgIGxpZ2h0LWJsdWU6IzdmYzFmY1xuICAgICAgICApLFxuICAgIGJhY2tncm91bmQ6KFxuICAgICAgICBsaWdodDojZjBmMmY1LFxuICAgICAgICBwcmltYXJ5OiNkZWYwZmUsXG4gICAgICAgIHdoaXRlOiNmZmYsXG4gICAgICAgIHRhYmxlLWhvdmVyLWJhY2tncm91bmQ6ICNmOWY5ZjlcbiAgICAgICAgKVxuICAgICk7XG4kZm9udC1zaXplOihcbiAgICB0aXRsZToyMnB4LFxuICAgIGxhcmdlOjE2cHgsXG4gICAgZGVmYXVsdDoxNHB4LFxuICAgIHByb21wdDoxMnB4XG4gICAgKTtcbiRsaWdodC1ib3JkZXI6MXB4IHNvbGlkICNmMGYyZjU7XG4kZGVlcC1ib3JkZXI6MXB4IHNvbGlkICNkZGQ7XG4lZG9tZS1iYWNrZ3JvdW5ke1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQobGluZWFyLWdyYWRpZW50KGxlZnQsIzVkYWJmMywgIzRlZDZiMikpOyBcbn1cbiVub3dyYXB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4lbm9iYWNre1xuICAgICYsJjpmb2N1cywmOmxpbmssJjp2aXNpdGVkLCY6aG92ZXIsJjphY3RpdmV7XG4gICAgICAgIGJhY2tncm91bmQ6bm9uZTtcbiAgICAgICAgYm9yZGVyOm5vbmU7XG4gICAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB9XG59XG4lY3Vyc29ye1xuICAgICY6aG92ZXJ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG59XG4ldmVydGljYWwtbWlkZGxle1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLy8gY29tbW9uICBmdW5jdGlvblxuQGZ1bmN0aW9uIGZvbnQtc2l6ZSgkZm9ybWF0KXtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZvbnQtc2l6ZSwkZm9ybWF0KXtcbiAgICAgICAgQHJldHVybiBtYXAtZ2V0KCRmb250LXNpemUsJGZvcm1hdCk7XG4gICAgfVxuICAgIEB3YXJuIFwiTm8gY29sb3IgZm91bmQgZm9yICRmb250LXNpemUgaW4gI3skZm9ybWF0fSBtYXAuXCI7XG59XG5AZnVuY3Rpb24gZG9tZS1jb2xvcigkbWFwLCRjb2xvcil7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRkb21lLWNvbG9ycywkbWFwKXtcbiAgICAgICAgQGlmIG1hcC1oYXMta2V5KG1hcC1nZXQoJGRvbWUtY29sb3JzLCRtYXApLCRjb2xvcil7XG4gICAgICAgICAgICBAcmV0dXJuIG1hcC1nZXQobWFwLWdldCgkZG9tZS1jb2xvcnMsJG1hcCksJGNvbG9yKTtcbiAgICAgICAgfVxuICAgICAgICBAd2FybiBcIk5vIGNvbG9yIGZvdW5kIGZvciAjeyRjb2xvcn0gaW4gI3skbWFwfSBtYXAuXCI7XG4gICAgfVxuICAgIEB3YXJuIFwiTm8gY29sb3IgZm91bmQgZm9yICN7JG1hcH0gaW4gJGRvbWUtY29sb3JzIG1hcC5cIjtcbn1cbkBmdW5jdGlvbiBjb2xvcigkbWFwLCRjb2xvcil7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRtYXAsJGNvbG9yKXtcbiAgICAgICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsJGNvbG9yKTtcbiAgICB9XG4gICAgQHdhcm4gXCJObyBjb2xvciBmb3VuZCBmb3IgI3skY29sb3J9IGluICN7JG1hcH0gbWFwLlwiO1xufVxuQG1peGluIGdldC1zcHJpdGUoJGljb24sJG5hbWUsJGlzLWJsb2NrKXtcbiAgICBiYWNrZ3JvdW5kOiBzcHJpdGUtdXJsKCRpY29uKSBuby1yZXBlYXQgc3ByaXRlLXBvc2l0aW9uKCRpY29uLCAkbmFtZSk7XG4gICAgQGlmICRpcy1ibG9ja3tcbiAgICAgICAgQGV4dGVuZCAldmVydGljYWwtbWlkZGxlO1xuICAgICAgICBAaW5jbHVkZSBzcHJpdGUtZGltZW5zaW9ucygkaWNvbiwgJG5hbWUpO1xuICAgIH1cbn1cblxuLy8ga2V5ZnJhbWVzIG1peGluXG5AbWl4aW4gc2V0S2V5ZnJhbWVzKCRuYW1lKSB7XG4gICAgQGluY2x1ZGUga2V5ZnJhbWVzKCRuYW1lKXtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgfVxufVxuIiwiLy8gTWFwIG9mIGNvbXBhc3MgZXh0ZW5zaW9ucyB0aGF0IGFyZSBsb2FkZWQuIFRoZSB2YWx1ZSB3aWxsIGVpdGhlciBiZVxuLy8gdGhlIHZlcnNpb24gb2YgdGhlIGV4dGVuc2lvbiBvciBgdHJ1ZWAgaWYgdGhlIHZlcnNpb24gaXMgdW5rbm93bi5cbiRjb21wYXNzLWV4dGVuc2lvbnM6IGNvbXBhc3MtZXh0ZW5zaW9ucygpICFkZWZhdWx0O1xuXG4vLyBUaGUgbGlzdCBvZiBicm93c2VycyB5b3Ugd2FudCB0byBzdXBwb3J0LlxuLy8gRGVmYXVsdHMgdG8gYWxsLlxuJHN1cHBvcnRlZC1icm93c2VyczogYnJvd3NlcnMoKSAhZGVmYXVsdDtcblxuLy8gVGhlIGJyb3dzZXIgdXNhZ2UgdGhyZXNob2xkIGZvciBmZWF0dXJlcyB0aGF0IGdyYWNlZnVsbHkgZGVncmFkZVxuLy8gRGVmYXVsdHMgdG8gMSB1c2VyIGluIDEsMDAwLlxuJGdyYWNlZnVsLXVzYWdlLXRocmVzaG9sZDogMC4xICFkZWZhdWx0O1xuXG4vLyBUaGUgYnJvd3NlciB1c2FnZSB0aHJlc2hvbGQgZm9yIGZlYXR1cmVzIHRoYXQgY2Fubm90IGRlZ3JhZGUgZ3JhY2VmdWxseVxuLy8gRGVmYXVsdHMgdG8gMSB1c2VyIGluIDEwLDAwMC5cbiRjcml0aWNhbC11c2FnZS10aHJlc2hvbGQ6IDAuMDEgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGlzIHRvIHRydWUgdG8gZ2VuZXJhdGUgY29tbWVudHMgdGhhdCB3aWxsIGV4cGxhaW4gd2h5IGEgcHJlZml4IHdhcyBpbmNsdWRlZCBvciBvbWl0dGVkLlxuJGRlYnVnLWJyb3dzZXItc3VwcG9ydDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIE1pbmltdW0gYnJvd3NlciB2ZXJzaW9ucyB0aGF0IG11c3QgYmUgc3VwcG9ydGVkLlxuLy8gVGhlIGtleXMgb2YgdGhpcyBtYXAgYXJlIGFueSB2YWxpZCBicm93c2VyIGFjY29yZGluZyB0byBgYnJvd3NlcnMoKWAuXG4vLyBUaGUgdmFsdWVzIG9mIHRoaXMgbWFwIGFyZSB0aGUgbWluIHZlcnNpb24gdGhhdCBpcyB2YWxpZCBmb3IgdGhhdCBicm93c2VyXG4vLyBhY2NvcmRpbmcgdG8gYGJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIpYFxuJGJyb3dzZXItbWluaW11bS12ZXJzaW9uczogKFxuICAnY2hyb21lJzogIG51bGwsXG4gICdmaXJlZm94JzogbnVsbCxcbiAgJ2llJzogICAgICBudWxsLFxuICAnc2FmYXJpJzogIG51bGwsXG4gICdvcGVyYSc6ICAgbnVsbFxuKSAhZGVmYXVsdDtcblxuXG4vLyBAcHJpdmF0ZVxuJGRlZmF1bHQtY2FwYWJpbGl0eS1vcHRpb25zOiAoXG4gIChmdWxsLXN1cHBvcnQ6IHRydWUpLFxuICAocGFydGlhbC1zdXBwb3J0OiB0cnVlKVxuKTtcblxuLy8gV2hlbiBhIHByZWZpeCBpbiBpbiBjb250ZXh0LCBidXQgdGhlcmUgaXMgbm8gY3VycmVudCBwcmVmaXhcbi8vIFRoYXQgY29udGV4dCBpcyByZWNvcmRlZCBoZXJlIHNvIG90aGVyIHByZWZpeGVzIGNhbiBiZSBhdm9pZGVkLlxuJHByZWZpeC1jb250ZXh0OiBudWxsO1xuXG4vLyBXaGVuIGEgcHJlZml4IGlzIGluIGEgc2VsZWN0b3Igb3IgZGlyZWN0aXZlIHNjb3BlLCB0aGlzIGlzIHNldCB0byB0aGVcbi8vIGN1cnJlbnQgcHJlZml4IHZhbHVlLiAgV2hlbiBgbnVsbGAsIGVpdGhlciB0aGVyZSBpcyBubyBwcmVmaXggaW4gc2NvcGVcbi8vIG9yIHRoZSBvZmZpY2lhbCBwcmVmaXggaXMgYmVpbmcgcmVuZGVyZWQuIFRoZSBgJHByZWZpeC1jb250ZXh0YFxuLy8gdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gbWFrZSB0aGF0IGRpc3RpbmN0aW9uLlxuJGN1cnJlbnQtcHJlZml4OiBudWxsO1xuXG4vLyBXaGVuIGluIGEgY29udGV4dCB0aGF0IG9ubHkgZXhpc3RzIGluIGEgcGFydGljdWxhciB2ZXJzaW9uXG4vLyB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byB0aG9zZSB2ZXJzaW9ucy5cbiRjdXJyZW50LWJyb3dzZXItdmVyc2lvbnM6ICgpO1xuXG4vLyBUaGUgbGVnYWN5IHN1cHBvcnQgQ1NTIDIuMSBTZWxlY3RvcnMuXG4vLyBEZWZhdWx0cyB0byB0aGUgJGNyaXRpY2FsLXVzYWdlLXRocmVzaG9sZC5cbiRjc3Mtc2VsMi1zdXBwb3J0LXRocmVzaG9sZDogJGNyaXRpY2FsLXVzYWdlLXRocmVzaG9sZCAhZGVmYXVsdDtcblxuLy8gQ2hlY2sgaWYgdGhlIGJyb3dzZXIgaXMgaW4gc2NvcGUgZ2l2ZW4gdGhlIGJyb3dzZXIgc3VwcG9ydCBhbmQgY3VycmVudCBwcmVmaXggbWluaW11bXMuXG5AZnVuY3Rpb24gYnJvd3Nlci1vdXQtb2Ytc2NvcGUoJGJyb3dzZXIsICR2ZXJzaW9uOiBudWxsKSB7XG4gIEBpZiBub3QgaW5kZXgoJHN1cHBvcnRlZC1icm93c2VycywgJGJyb3dzZXIpIHtcbiAgICBAaWYgJGRlYnVnLWJyb3dzZXItc3VwcG9ydCB7XG4gICAgICBAcmV0dXJuIFwiI3skYnJvd3Nlcn0gaXMgbm90IGxpc3RlZCBhcyBhIHN1cHBvcnRlZCBicm93c2VyLlwiXG4gICAgfSBAZWxzZSB7XG4gICAgICBAcmV0dXJuIHRydWU7XG4gICAgfVxuICB9IEBlbHNlIGlmIG5vdCAoJGN1cnJlbnQtcHJlZml4ID09IG51bGwgb3IgJGN1cnJlbnQtcHJlZml4ID09IGJyb3dzZXItcHJlZml4KCRicm93c2VyKSkge1xuICAgIEBpZiAkZGVidWctYnJvd3Nlci1zdXBwb3J0IHtcbiAgICAgIEByZXR1cm4gXCIjeyRicm93c2VyfSAjeyR2ZXJzaW9ufSBpcyBpbmNvbXBhdGlibGUgd2l0aCAjeyRjdXJyZW50LXByZWZpeH0uXCJcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgJGN1cnJlbnQtcmFuZ2U6IG1hcC1nZXQoJGN1cnJlbnQtYnJvd3Nlci12ZXJzaW9ucywgJGJyb3dzZXIpO1xuICAkY3VycmVudC1taW46IGlmKCRjdXJyZW50LXJhbmdlLCBudGgoJGN1cnJlbnQtcmFuZ2UsIDEpLCBudWxsKTtcbiAgJGN1cnJlbnQtbWF4OiBpZigkY3VycmVudC1yYW5nZSwgbnRoKCRjdXJyZW50LXJhbmdlLCAyKSwgbnVsbCk7XG4gIEBpZiBub3QgKCR2ZXJzaW9uIGFuZCAkY3VycmVudC1tYXgpIHtcbiAgICAvLyBXZSBkb24ndCBoYXZlIGFueSB2ZXJzaW9ucyB0byBjb21wYXJlXG4gICAgQHJldHVybiBmYWxzZTtcbiAgfSBAZWxzZSB7XG4gICAgLy8gSWYgdGhlIHZlcnNpb24gaXMgbGVzcyB0aGFuIHRoZSBjdXJyZW50IG1pbiwgaXQgaXMgbm90IHN1cHBvcnRlZFxuICAgICR0b28tb2xkOiBjb21wYXJlLWJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIsICR2ZXJzaW9uLCAkY3VycmVudC1taW4pIDwgMDtcbiAgICAkdG9vLW5ldzogY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkdmVyc2lvbiwgJGN1cnJlbnQtbWF4KSA+IDA7XG4gICAgQGlmICR0b28tb2xkIG9yICR0b28tbmV3IHtcbiAgICAgIEBpZiAkZGVidWctYnJvd3Nlci1zdXBwb3J0IHtcbiAgICAgICAgQHJldHVybiBcIlRoZSBjdXJyZW50IHNjb3BlIG9ubHkgd29ya3Mgd2l0aCAje2Rpc3BsYXktYnJvd3Nlci1yYW5nZSgkYnJvd3NlciwgJGN1cnJlbnQtbWluLCAkY3VycmVudC1tYXgpfS5cIjtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufVxuXG4vLyBDaGVjayB3aGV0aGVyIHRoZSBicm93c2VyIGlzIHN1cHBvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIHN1cHBvcnRlZCBicm93c2Vycyxcbi8vIGRlY2xhcmVkIG1pbmltdW0gc3VwcG9ydCBhbmQgdXNhZ2UgdGhyZXNob2xkcy5cbkBmdW5jdGlvbiBzdXBwb3J0LWxlZ2FjeS1icm93c2VyKCRicm93c2VyLCAkbWluLXZlcnNpb24sICRtYXgtdmVyc2lvbjogbnVsbCwgJHRocmVzaG9sZDogJGNyaXRpY2FsLXVzYWdlLXRocmVzaG9sZCkge1xuICBAaWYgbm90IGluZGV4KCRzdXBwb3J0ZWQtYnJvd3NlcnMsICRicm93c2VyKSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBDaGVjayBhZ2Fpc3QgdXNhZ2Ugc3RhdHMgYW5kIGRlY2xhcmVkIG1pbmltdW1zXG4gICRtaW4tcmVxdWlyZWQtdmVyc2lvbjogbWFwLWdldCgkYnJvd3Nlci1taW5pbXVtLXZlcnNpb25zLCAkYnJvd3Nlcik7XG4gICR1c2FnZTogaWYoJG1heC12ZXJzaW9uLFxuICAgICAgICAgICAgIG9taXR0ZWQtdXNhZ2UoJGJyb3dzZXIsICRtaW4tdmVyc2lvbiwgJG1heC12ZXJzaW9uKSxcbiAgICAgICAgICAgICBvbWl0dGVkLXVzYWdlKCRicm93c2VyLCAkbWluLXZlcnNpb24pKTtcbiAgQHJldHVybiAkdXNhZ2UgPiAkdGhyZXNob2xkIG9yXG4gICAgICAgICAgKCRtaW4tcmVxdWlyZWQtdmVyc2lvbiBhbmRcbiAgICAgICAgICAgY29tcGFyZS1icm93c2VyLXZlcnNpb25zKCRicm93c2VyLCAkbWF4LXZlcnNpb24gb3IgJG1pbi12ZXJzaW9uLCAkbWluLXJlcXVpcmVkLXZlcnNpb24pID49IDApO1xufVxuXG4vLyBJbmNsdWRlIGNvbnRlbnQgZm9yIGEgbGVnYWN5IGJyb3dzZXJcbi8vIFZlcnNpb24gY2FuIGJlIGEgc2luZ2xlIHZlcnNpb24gc3RyaW5nIG9yIGEgbGlzdCBvZiB2ZXJzaW9ucyBvcmRlcmVkIGZyb20gb2xkZXN0IHRvIG5ld2VzdC5cbkBtaXhpbiBmb3ItbGVnYWN5LWJyb3dzZXIoJGJyb3dzZXIsICRtaW4tdmVyc2lvbiwgJG1heC12ZXJzaW9uOiAkbWluLXZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICR0aHJlc2hvbGQ6ICRjcml0aWNhbC11c2FnZS10aHJlc2hvbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICRyYW5nZXM6ICgkYnJvd3NlcjogJG1pbi12ZXJzaW9uICRtYXgtdmVyc2lvbikpIHtcbiAgQGlmIG5vdCBicm93c2VyLW91dC1vZi1zY29wZSgkYnJvd3NlciwgJG1heC12ZXJzaW9uKSBhbmRcbiAgICAgIHN1cHBvcnQtbGVnYWN5LWJyb3dzZXIoJGJyb3dzZXIsICRtaW4tdmVyc2lvbiwgJG1heC12ZXJzaW9uLCAkdGhyZXNob2xkKVxuICB7XG4gICAgQGlmICRkZWJ1Zy1icm93c2VyLXN1cHBvcnQge1xuICAgICAgLyogQ29udGVudCBmb3IgI3tkaXNwbGF5LWJyb3dzZXItcmFuZ2UoJGJyb3dzZXIsICRtaW4tdmVyc2lvbiwgJG1heC12ZXJzaW9uKX0uXG4gICAgICBNaW4gdmVyc2lvbjogI3ttYXAtZ2V0KCRicm93c2VyLW1pbmltdW0tdmVyc2lvbnMsICRicm93c2VyKSBvciB1bnNwZWNpZmllZH0uXG4gICAgICBVc2VyIHRocmVzaG9sZCB0byBrZWVwOiAjeyR0aHJlc2hvbGR9JS4gSWYgI3tkaXNwbGF5LWJyb3dzZXItcmFuZ2UoJGJyb3dzZXIsICRtaW4tdmVyc2lvbiwgJG1heC12ZXJzaW9uKX0gYXJlIG9taXR0ZWQ6ICN7b21pdHRlZC11c2FnZSgkYnJvd3NlciwgJG1pbi12ZXJzaW9uLCAkbWF4LXZlcnNpb24pfSUuICovXG4gICAgfVxuICAgIEBpbmNsdWRlIHdpdGgtYnJvd3Nlci1yYW5nZXMoaW50ZXJzZWN0LWJyb3dzZXItcmFuZ2VzKCRjdXJyZW50LWJyb3dzZXItdmVyc2lvbnMsICRyYW5nZXMpKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJGRlYnVnLWJyb3dzZXItc3VwcG9ydCBhbmQgYnJvd3Nlci1vdXQtb2Ytc2NvcGUoJGJyb3dzZXIsICRtYXgtdmVyc2lvbikge1xuICAgIC8qIENvbnRlbnQgZm9yICN7ZGlzcGxheS1icm93c2VyLXJhbmdlKCRicm93c2VyLCAkbWluLXZlcnNpb24sICRtYXgtdmVyc2lvbil9IG9taXR0ZWQuXG4gICAgICAgTm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQgc2NvcGU6ICN7YnJvd3Nlci1vdXQtb2Ytc2NvcGUoJGJyb3dzZXIsICRtYXgtdmVyc2lvbil9ICovXG4gIH0gQGVsc2UgaWYgJGRlYnVnLWJyb3dzZXItc3VwcG9ydCBhbmQgbm90XG4gICAgICAgICAgICAgc3VwcG9ydC1sZWdhY3ktYnJvd3NlcigkYnJvd3NlciwgJG1pbi12ZXJzaW9uLCAkbWF4LXZlcnNpb24sICR0aHJlc2hvbGQpIHtcbiAgICBAaWYgb21pdHRlZC11c2FnZSgkYnJvd3NlciwgJG1pbi12ZXJzaW9uLCAkbWF4LXZlcnNpb24pID4gJHRocmVzaG9sZCB7XG4gICAgICAvKiBDb250ZW50IGZvciAje2Rpc3BsYXktYnJvd3Nlci1yYW5nZSgkYnJvd3NlciwgJG1pbi12ZXJzaW9uLCAkbWF4LXZlcnNpb24pfSBvbWl0dGVkLlxuICAgICAgICAgVXNlciB0aHJlc2hvbGQgdG8ga2VlcDogI3skdGhyZXNob2xkfSUuIElmICN7ZGlzcGxheS1icm93c2VyLXJhbmdlKCRicm93c2VyLCAkbWluLXZlcnNpb24sICRtYXgtdmVyc2lvbil9IGFuZCBiZWxvdyBhcmUgb21pdHRlZDogI3tvbWl0dGVkLXVzYWdlKCRicm93c2VyLCAkbWluLXZlcnNpb24sICRtYXgtdmVyc2lvbil9JS4gKi9cbiAgICB9IEBlbHNlIHtcbiAgICAgIC8qIENvbnRlbnQgZm9yICN7ZGlzcGxheS1icm93c2VyLXJhbmdlKCRicm93c2VyLCAkbWluLXZlcnNpb24sICRtYXgtdmVyc2lvbil9IG9taXR0ZWQuXG4gICAgICAgICBNaW5pbXVtIHN1cHBvcnQgaXMgI3ttYXAtZ2V0KCRicm93c2VyLW1pbmltdW0tdmVyc2lvbnMsICRicm93c2VyKX0uICovXG4gICAgfVxuICB9XG59XG5cbkBmdW5jdGlvbiBkaXNwbGF5LWJyb3dzZXItcmFuZ2UoJGJyb3dzZXIsICRtaW4tdmVyc2lvbiwgJG1heC12ZXJzaW9uOiAkbWluLXZlcnNpb24pIHtcbiAgQHJldHVybiBcIiN7dW5xdW90ZSgkYnJvd3Nlcil9ICN7dW5xdW90ZSgkbWluLXZlcnNpb24pfSN7aWYoJG1heC12ZXJzaW9uICE9ICRtaW4tdmVyc2lvbiwgdW5xdW90ZSgnIC0nKSB1bnF1b3RlKCRtYXgtdmVyc2lvbiksIG51bGwpfVwiO1xufVxuXG5cbi8vIFJlbmRlcnMgdGhlIGNvbnRlbnQgb25jZSBpZiBhbnkgb2YgdGhlIGxlZ2FjeSBicm93c2VycyBhcmUgc3VwcG9ydGVkLlxuLy8gJGJyb3dzZXJzIGlzIGEgbWFwIG9mIGJyb3dzZXIgbmFtZSB0byB2ZXJzaW9uIHJhbmdlc1xuQG1peGluIGZvci1sZWdhY3ktYnJvd3NlcnMoJGJyb3dzZXJzLCAkdGhyZXNob2xkOiAkY3JpdGljYWwtdXNhZ2UtdGhyZXNob2xkKSB7XG4gICRyZW5kZXJlZDogZmFsc2U7XG4gIEBlYWNoICRicm93c2VyLCAkcmFuZ2UgaW4gJGJyb3dzZXJzIHtcbiAgICBAaWYgbm90ICRyZW5kZXJlZCB7XG4gICAgICBAaW5jbHVkZSBmb3ItbGVnYWN5LWJyb3dzZXIoJGJyb3dzZXIsICRyYW5nZS4uLiwgJHRocmVzaG9sZDogJHRocmVzaG9sZCwgJHJhbmdlczogJGJyb3dzZXJzKSB7XG4gICAgICAgICRyZW5kZXJlZDogdHJ1ZTtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIElmIHRoZXJlJ3MgYSBwcmVmaXggY29udGV4dCBpbiBzY29wZSwgdGhpcyB3aWxsIG9ubHkgb3V0cHV0IHRoZSBjb250ZW50IGlmIHRoZSBwcmVmaXggbWF0Y2hlcy5cbi8vIE90aGVyd2lzZSwgc2V0cyB0aGUgY3VycmVudCBwcmVmaXggc2NvcGUgYW5kIG91dHB1dHMgdGhlIGNvbnRlbnQuXG5AbWl4aW4gd2l0aC1wcmVmaXgoJHByZWZpeCkge1xuICBAaWYgJGN1cnJlbnQtcHJlZml4IG9yICRwcmVmaXgtY29udGV4dCB7XG4gICAgQGlmICRjdXJyZW50LXByZWZpeCA9PSAkcHJlZml4IG9yICRwcmVmaXgtY29udGV4dCA9PSAkcHJlZml4IHtcbiAgICAgIEBpZiAkZGVidWctYnJvd3Nlci1zdXBwb3J0IHtcbiAgICAgICAgQGlmICRwcmVmaXgge1xuICAgICAgICAgIC8qIGNvbnRlbnQgZm9yICN7JHByZWZpeH0gYmVjYXVzZSAjeyRjdXJyZW50LXByZWZpeCBvciAkcHJlZml4LWNvbnRleHR9IGlzIGFscmVhZHkgaW4gc2NvcGUuICovXG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIC8qIHVucHJlZml4ZWQgY29udGVudC4gI3skY3VycmVudC1wcmVmaXggb3IgJHByZWZpeC1jb250ZXh0fSBpcyBhbHJlYWR5IGluIHNjb3BlLiAqL1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkb2xkLXByZWZpeC1jb250ZXh0OiAkcHJlZml4LWNvbnRleHQ7XG4gICAgICAkb2xkLXByZWZpeDogJGN1cnJlbnQtcHJlZml4O1xuICAgICAgJHByZWZpeC1jb250ZXh0OiAkcHJlZml4LWNvbnRleHQgb3IgJGN1cnJlbnQtcHJlZml4ICFnbG9iYWw7XG4gICAgICAkY3VycmVudC1wcmVmaXg6ICRwcmVmaXggIWdsb2JhbDtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJHByZWZpeC1jb250ZXh0OiAkb2xkLXByZWZpeC1jb250ZXh0ICFnbG9iYWw7XG4gICAgICAkY3VycmVudC1wcmVmaXg6ICRvbGQtcHJlZml4ICFnbG9iYWw7XG4gICAgfSBAZWxzZSBpZiAkcHJlZml4ID09IG51bGwge1xuICAgICAgJG9sZC1wcmVmaXgtY29udGV4dDogJHByZWZpeC1jb250ZXh0O1xuICAgICAgJHByZWZpeC1jb250ZXh0OiAkcHJlZml4LWNvbnRleHQgb3IgJGN1cnJlbnQtcHJlZml4ICFnbG9iYWw7XG4gICAgICAkY3VycmVudC1wcmVmaXg6IG51bGwgIWdsb2JhbDtcbiAgICAgIEBpZiAkZGVidWctYnJvd3Nlci1zdXBwb3J0IHtcbiAgICAgICAgLyogQ29udGVudCBmb3Igb2ZmaWNpYWwgc3ludGF4LiBQcmVmaXggY29udGV4dCBpcyBzdGlsbCAjeyRwcmVmaXgtY29udGV4dH0uICovXG4gICAgICB9XG4gICAgICBAY29udGVudDtcbiAgICAgICRjdXJyZW50LXByZWZpeDogJHByZWZpeC1jb250ZXh0ICFnbG9iYWw7XG4gICAgICAkcHJlZml4LWNvbnRleHQ6ICRvbGQtcHJlZml4LWNvbnRleHQgIWdsb2JhbDtcbiAgICB9IEBlbHNlIGlmICRkZWJ1Zy1icm93c2VyLXN1cHBvcnQge1xuICAgICAgLyogT21pdHRpbmcgY29udGVudCBmb3IgI3skcHJlZml4fSBiZWNhdXNlICN7JGN1cnJlbnQtcHJlZml4fSBpcyBhbHJlYWR5IGluIHNjb3BlLiAqL1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmICRkZWJ1Zy1icm93c2VyLXN1cHBvcnQgYW5kICRwcmVmaXgge1xuICAgICAgLyogQ3JlYXRpbmcgbmV3ICN7JHByZWZpeH0gY29udGV4dC4gKi9cbiAgICB9XG4gICAgJHByZWZpeC1jb250ZXh0OiAkcHJlZml4ICFnbG9iYWw7XG4gICAgJGN1cnJlbnQtcHJlZml4OiAkcHJlZml4ICFnbG9iYWw7XG4gICAgQGNvbnRlbnQ7XG4gICAgJGN1cnJlbnQtcHJlZml4OiBudWxsICFnbG9iYWw7XG4gICAgJHByZWZpeC1jb250ZXh0OiBudWxsICFnbG9iYWw7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHByZWZpeGVzLWZvci1jYXBhYmlsaXR5KCRjYXBhYmlsaXR5LCAkdGhyZXNob2xkLCAkY2FwYWJpbGl0eS1vcHRpb25zOiAkZGVmYXVsdC1jYXBhYmlsaXR5LW9wdGlvbnMpIHtcbiAgJHJlc3VsdDogKCk7XG4gIEBlYWNoICRwcmVmaXggaW4gYnJvd3Nlci1wcmVmaXhlcygkc3VwcG9ydGVkLWJyb3dzZXJzKSB7XG4gICAgJHJlc3VsdDogbWFwLW1lcmdlKCRyZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgICAgKCRwcmVmaXg6IHVzZS1wcmVmaXgoJHByZWZpeCwgJGNhcGFiaWxpdHksICR0aHJlc2hvbGQsICRjYXBhYmlsaXR5LW9wdGlvbnMpKSk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG4vLyBZaWVsZHMgdG8gdGhlIG1peGluIGNvbnRlbnQgb25jZSBmb3IgZWFjaCBwcmVmaXggcmVxdWlyZWQuXG4vLyBUaGUgY3VycmVudCBwcmVmaXggaXMgc2V0IHRvIHRoZSAkY3VycmVudC1wcmVmaXggZ2xvYmFsIGZvciB1c2UgYnkgdGhlIGluY2x1ZGVkIGNvbnRlbnQuXG4vLyBBbHNvIHlpZWxkcyB0byB0aGUgY29udGVudCBvbmNlIHdpdGggJGN1cnJlbnQtcHJlZml4IHNldCB0byBudWxsIGZvciB0aGUgb2ZmaWNpYWwgdmVyc2lvblxuLy8gYXMgbG9uZyBhcyB0aGVyZSdzIG5vdCBhbHJlYWR5IGEgcHJlZml4IGluIHNjb3BlLlxuQG1peGluIHdpdGgtZWFjaC1wcmVmaXgoJGNhcGFiaWxpdHksICR0aHJlc2hvbGQsICRjYXBhYmlsaXR5LW9wdGlvbnM6ICRkZWZhdWx0LWNhcGFiaWxpdHktb3B0aW9ucykge1xuICBAZWFjaCAkcHJlZml4LCAkc2hvdWxkLXVzZS1wcmVmaXggaW4gcHJlZml4ZXMtZm9yLWNhcGFiaWxpdHkoJGNhcGFiaWxpdHksICR0aHJlc2hvbGQsICRjYXBhYmlsaXR5LW9wdGlvbnMpIHtcbiAgICBAaWYgJHNob3VsZC11c2UtcHJlZml4IHtcbiAgICAgIEBpZiAkZGVidWctYnJvd3Nlci1zdXBwb3J0IGFuZCB0eXBlLW9mKCRzaG91bGQtdXNlLXByZWZpeCkgPT0gbGlzdCB7XG4gICAgICAgIC8qIENhcGFiaWxpdHkgI3skY2FwYWJpbGl0eX0gaXMgcHJlZml4ZWQgd2l0aCAjeyRwcmVmaXh9IGJlY2F1c2UgI3skc2hvdWxkLXVzZS1wcmVmaXh9IGlzIHJlcXVpcmVkLiAqL1xuICAgICAgfSBAZWxzZSBpZiAkZGVidWctYnJvd3Nlci1zdXBwb3J0IGFuZCB0eXBlLW9mKCRzaG91bGQtdXNlLXByZWZpeCkgPT0gbnVtYmVyIHtcbiAgICAgICAgLyogQ2FwYWJpbGl0eSAjeyRjYXBhYmlsaXR5fSBpcyBwcmVmaXhlZCB3aXRoICN7JHByZWZpeH0gYmVjYXVzZSAjeyRzaG91bGQtdXNlLXByZWZpeH0lIG9mIHVzZXJzIG5lZWQgaXQgd2hpY2ggaXMgbW9yZSB0aGFuIHRoZSB0aHJlc2hvbGQgb2YgI3skdGhyZXNob2xkfSUuICovXG4gICAgICB9XG4gICAgICBAaW5jbHVkZSB3aXRoLXByZWZpeCgkcHJlZml4KSB7XG4gICAgICAgIEBpbmNsdWRlIHdpdGgtYnJvd3Nlci1yYW5nZXMoJGNhcGFiaWxpdHkpIHtcbiAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJGRlYnVnLWJyb3dzZXItc3VwcG9ydCB7XG4gICAgICAvKiBDYXBhYmlsaXR5ICN7JGNhcGFiaWxpdHl9IGlzIG5vdCBwcmVmaXhlZCB3aXRoICN7JHByZWZpeH0gYmVjYXVzZSAje3ByZWZpeC11c2FnZSgkcHJlZml4LCAkY2FwYWJpbGl0eSwgJGNhcGFiaWxpdHktb3B0aW9ucyl9JSBvZiB1c2VycyBhcmUgYWZmZWN0ZWQgd2hpY2ggaXMgbGVzcyB0aGFuIHRoZSB0aHJlc2hvbGQgb2YgI3skdGhyZXNob2xkfS4gKi9cbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgd2l0aC1wcmVmaXgobnVsbCkge1xuICAgIEBpbmNsdWRlIHdpdGgtYnJvd3Nlci1yYW5nZXMoJGNhcGFiaWxpdHkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLyBSZXR1cm5zIHRydWUgaWYgYXQgbGVhc3Qgb25lIGJyb3dzZXItdmVyc2lvbiBwYWlyIGluICRzdWJzZXQtcmFuZ2VzXG4vLyBpcyBhIGhpZ2hlciAob3Igc2FtZSkgdmVyc2lvbiB0aGFuIHRoZSBicm93c2VyLXZlcnNpb24gcGFpcnMgaW5cbi8vICRyYW5nZXMuXG5AZnVuY3Rpb24gaGFzLWJyb3dzZXItc3Vic2V0KCRyYW5nZXMsICRzdWJzZXQtcmFuZ2VzKSB7XG4gICRmb3VuZC1taXNtYXRjaDogZmFsc2U7XG4gIEBlYWNoICRicm93c2VyLCAkc3Vic2V0LXJhbmdlIGluICRzdWJzZXQtcmFuZ2VzIHtcbiAgICAkcmFuZ2U6IG1hcC1nZXQoJHJhbmdlcywgJGJyb3dzZXIpO1xuICAgIEBpZiAkcmFuZ2Uge1xuICAgICAgJG1pbi0xOiBudGgoJHN1YnNldC1yYW5nZSwgMSk7XG4gICAgICAkbWF4LTE6IG50aCgkc3Vic2V0LXJhbmdlLCAyKTtcbiAgICAgICRtaW4tMjogbnRoKCRyYW5nZSwgMSk7XG4gICAgICAkbWF4LTI6IG50aCgkcmFuZ2UsIDIpO1xuICAgICAgQGlmIChjb21wYXJlLWJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIsICRtaW4tMiwgJG1pbi0xKSA8PSAwIGFuZFxuICAgICAgICAgICBjb21wYXJlLWJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIsICRtaW4tMSwgJG1heC0yKSA8PSAwKSBvclxuICAgICAgICAgIChjb21wYXJlLWJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIsICRtaW4tMiwgJG1heC0xKSA8PSAwIGFuZFxuICAgICAgICAgICBjb21wYXJlLWJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIsICRtYXgtMSwgJG1heC0yKSA8PSAwKSBvclxuICAgICAgICAgIChjb21wYXJlLWJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIsICRtaW4tMSwgJG1pbi0yKSA8PSAwIGFuZFxuICAgICAgICAgICBjb21wYXJlLWJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIsICRtYXgtMSwgJG1heC0yKSA+PSAwKSBvclxuICAgICAgICAgIChjb21wYXJlLWJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIsICRtaW4tMSwgJG1pbi0yKSA+PSAwIGFuZFxuICAgICAgICAgICBjb21wYXJlLWJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIsICRtYXgtMSwgJG1heC0yKSA8PSAwKSB7XG4gICAgICAgIEByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZm91bmQtbWlzbWF0Y2g6IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiBub3QgJGZvdW5kLW1pc21hdGNoO1xufVxuXG4vLyBXaGVuIHRoZSBzYW1lIGJyb3dzZXIgaXMgaW4gYm90aCBtYXBzLCB0aGVuIHRoZSBtaW5pbXVtIHdpbGwgYmUgc2V0XG4vLyB0byB0aGUgbWF4aW11bSBvZiB0aGUgdHdvIG1pbmltdW0gdmVyc2lvbnMsIGFuZCB0aGUgbWF4aW11bSB3aWxsIGJlXG4vLyBzZXQgdG8gdGhlIG1pbm11bSBvZiB0aGUgdHdvIG1heGltdW0gdmVyc2lvbnMuXG5AZnVuY3Rpb24gaW50ZXJzZWN0LWJyb3dzZXItcmFuZ2VzKCRyYW5nZXMsICRuZXctcmFuZ2VzKSB7XG4gIEBlYWNoICRicm93c2VyLCAkbmV3LXJhbmdlIGluICRuZXctcmFuZ2VzIHtcbiAgICAkb2xkLXJhbmdlOiBtYXAtZ2V0KCRyYW5nZXMsICRicm93c2VyKTtcbiAgICBAaWYgJG9sZC1yYW5nZSB7XG4gICAgICAkb2xkLW1pbjogbnRoKCRvbGQtcmFuZ2UsIDEpO1xuICAgICAgJG9sZC1tYXg6IGlmKGxlbmd0aCgkb2xkLXJhbmdlKSA9PSAxLCAkb2xkLW1pbiwgbnRoKCRvbGQtcmFuZ2UsIDIpKTtcbiAgICAgICRuZXctbWluOiBudGgoJG5ldy1yYW5nZSwgMSk7XG4gICAgICAkbmV3LW1heDogaWYobGVuZ3RoKCRuZXctcmFuZ2UpID09IDEsICRuZXctbWluLCBudGgoJG5ldy1yYW5nZSwgMikpO1xuICAgICAgJG1heGltaW46IGlmKGNvbXBhcmUtYnJvd3Nlci12ZXJzaW9ucygkYnJvd3NlciwgJG9sZC1taW4sICRuZXctbWluKSA+IDAsXG4gICAgICAgICAgICAgICAgICAgJG9sZC1taW4sICRuZXctbWluKTtcbiAgICAgICRtaW5pbWF4OiBpZihjb21wYXJlLWJyb3dzZXItdmVyc2lvbnMoJGJyb3dzZXIsICRvbGQtbWF4LCAkbmV3LW1heCkgPCAwLFxuICAgICAgICAgICAgICAgICAgICRvbGQtbWF4LCAkbmV3LW1heCk7XG4gICAgICAkcmFuZ2VzOiBtYXAtbWVyZ2UoJHJhbmdlcywgKCRicm93c2VyOiAkbWF4aW1pbiAkbWluaW1heCkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJhbmdlczogbWFwLW1lcmdlKCRyYW5nZXMsICgkYnJvd3NlcjogJG5ldy1yYW5nZSkpO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRyYW5nZXM7XG59XG5cbi8vIElmIHBhc3NlZCBhIG1hcCwgdGhhdCB3aWxsIGJlIHRoZSBuZXcgYnJvd3NlciByYW5nZXMuXG4vLyBPdGhlcndpc2UgYSByYW5nZSBtYXAgd2lsbCBiZSBjcmVhdGVkIGJhc2VkIG9uIHRoZSBnaXZlbiBjYXBhYmlsaXR5IGFuZCBwcmVmaXhcbi8vIHVzaW5nIHRoZSBgYnJvd3Nlci1yYW5nZXMoJGNhcGFiaWxpdHksICRwcmVmaXgpYCBmdW5jdGlvbi5cbi8vXG4vLyBJZiB0aGVyZSBhcmUgY3VycmVudCByYW5nZXMgaW4gc2NvcGUgYW5kIHRoZSBuZXcgcmFuZ2VzIGhhdmUgc29tZSBvdmVybGFwXG4vLyB3aXRoIHRoZSBjdXJyZW50LCBcbi8vXG4vLyBJZiB0aGVyZSBpcyBubyBvdmVybGFwLCB0aGVuIHRoZSBjb250ZW50IHdpbGwgbm90IGJlIHJlbmRlcmVkLlxuQG1peGluIHdpdGgtYnJvd3Nlci1yYW5nZXMoJGNhcGFiaWxpdHksICRwcmVmaXg6ICRjdXJyZW50LXByZWZpeCkge1xuICAkbmV3LXJhbmdlczogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJGNhcGFiaWxpdHkpID09IG1hcCB7XG4gICAgJG5ldy1yYW5nZXM6ICRjYXBhYmlsaXR5O1xuICB9IEBlbHNlIHtcbiAgICAkbmV3LXJhbmdlczogYnJvd3Nlci1yYW5nZXMoJGNhcGFiaWxpdHksICRwcmVmaXgpO1xuICB9XG5cbiAgQGlmIGhhcy1icm93c2VyLXN1YnNldCgkY3VycmVudC1icm93c2VyLXZlcnNpb25zLCAkbmV3LXJhbmdlcykge1xuICAgICRvbGQtcmFuZ2VzOiAkY3VycmVudC1icm93c2VyLXZlcnNpb25zO1xuICAgICRjdXJyZW50LWJyb3dzZXItdmVyc2lvbnM6IGludGVyc2VjdC1icm93c2VyLXJhbmdlcygkb2xkLXJhbmdlcywgJG5ldy1yYW5nZXMpICFnbG9iYWw7XG4gICAgQGNvbnRlbnQ7XG4gICAgJGN1cnJlbnQtYnJvd3Nlci12ZXJzaW9uczogJG9sZC1yYW5nZXMgIWdsb2JhbDtcbiAgfSBAZWxzZSBpZiAkZGVidWctYnJvd3Nlci1zdXBwb3J0IHtcbiAgICAvKiBFeGNsdWRpbmcgY29udGVudCBiZWNhdXNlICN7aW5zcGVjdCgkbmV3LXJhbmdlcyl9IGlzIG5vdCBpbmNsdWRlZCB3aXRoaW5cbiAgICAgICAje2luc3BlY3QoJGN1cnJlbnQtYnJvd3Nlci12ZXJzaW9ucyl9ICovXG4gIH1cbn1cblxuLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwcmVmaXhlZCB1c2FnZSBzdGF0cyBmb3IgdGhlIGNhcGFiaWxpdHkgZXhjZWVkIHRoZSB0aHJlc2hvbGRcbi8vIG9yIGlmIHRoZSBtaW5pbXVtIHZlcnNpb24gZm9yIGEgc3VwcG9ydGVkIGJyb3dzZXIgd291bGQgcmVxdWlyZSBhIHByZWZpeCBmb3IgdGhlIGNhcGFiaWxpdHkuXG5AZnVuY3Rpb24gdXNlLXByZWZpeCgkcHJlZml4LCAkY2FwYWJpbGl0eSwgJHRocmVzaG9sZCwgJGNhcGFiaWxpdHktb3B0aW9uczogJGRlZmF1bHQtY2FwYWJpbGl0eS1vcHRpb25zKSB7XG4gICR1c2FnZTogcHJlZml4LXVzYWdlKCRwcmVmaXgsICRjYXBhYmlsaXR5LCAkY2FwYWJpbGl0eS1vcHRpb25zKTtcbiAgQGlmICR1c2FnZSA+ICR0aHJlc2hvbGQge1xuICAgIEByZXR1cm4gJHVzYWdlO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkYnJvd3NlciBpbiBicm93c2VycygkcHJlZml4KSB7XG4gICAgICBAaWYgaW5kZXgoJHN1cHBvcnRlZC1icm93c2VycywgJGJyb3dzZXIpIHtcbiAgICAgICAgJG1pbi12ZXJzaW9uOiBtYXAtZ2V0KCRicm93c2VyLW1pbmltdW0tdmVyc2lvbnMsICRicm93c2VyKTtcbiAgICAgICAgQGlmICRtaW4tdmVyc2lvbiB7XG4gICAgICAgICAgJGFjdHVhbC1wcmVmaXg6IGJyb3dzZXItcmVxdWlyZXMtcHJlZml4KCRicm93c2VyLCAkbWluLXZlcnNpb24sICRjYXBhYmlsaXR5LCAkY2FwYWJpbGl0eS1vcHRpb25zKTtcbiAgICAgICAgICBAaWYgJGFjdHVhbC1wcmVmaXggYW5kICRwcmVmaXggPT0gJGFjdHVhbC1wcmVmaXgge1xuICAgICAgICAgICAgQHJldHVybiAkYnJvd3NlciAkbWluLXZlcnNpb247XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEByZXR1cm4gZmFsc2U7XG59XG5cbkBmdW5jdGlvbiBwcmVmaXgtaWRlbnRpZmllcigkaWRlbnQsICRwcmVmaXg6ICRjdXJyZW50LXByZWZpeCkge1xuICBAcmV0dXJuIHVucXVvdGUoXCIjeyRwcmVmaXh9I3tpZigkcHJlZml4LCAnLScsIG51bGwpfSN7JGlkZW50fVwiKTtcbn1cblxuLy8gT3V0cHV0IGEgcHJvcGVydHkgYW5kIHZhbHVlIHVzaW5nIHRoZSBjdXJyZW50IHByZWZpeC5cbi8vIEl0IHdpbGwgYmUgdW5wcmVmaXhlZCBpZiAkY3VycmVudC1wcmVmaXggaXMgbnVsbC5cbkBtaXhpbiBwcmVmaXgtcHJvcCgkcHJvcGVydHksICR2YWx1ZSwgJHByZWZpeDogJGN1cnJlbnQtcHJlZml4KSB7XG4gICN7cHJlZml4LWlkZW50aWZpZXIoJHByb3BlcnR5LCAkcHJlZml4KX06ICR2YWx1ZTtcbn1cblxuLy8gRW1pdCBhIHNldCBvZiBwcm9wZXJ0aWVzIHdpdGggdGhlIHByZWZpeCBnb3Zlcm5lZCBieSB0aGUgY2FwYWJpbGl0eSBhbmQgdXNhZ2UgdGhyZXNob2xkIGdpdmVuLlxuLy9cbi8vIEV4YW1wbGU6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHByZWZpeGVkLXByb3BlcnRpZXMoY3NzLWFuaW1hdGlvbiwgJGFuaW1hdGlvbi1zdXBwb3J0LXRocmVzaG9sZCxcbi8vICAgICAgIChhbmltYXRpb24tbmFtZTogZm9vLCBhbmltYXRpb24tZHVyYXRpb246IDJzKVxuLy8gICAgICk7XG5AbWl4aW4gcHJlZml4ZWQtcHJvcGVydGllcygkY2FwYWJpbGl0eSwgJHRocmVzaG9sZCwgJHByb3BlcnRpZXMsICRjYXBhYmlsaXR5LW9wdGlvbnM6ICRkZWZhdWx0LWNhcGFiaWxpdHktb3B0aW9ucykge1xuICBAaW5jbHVkZSB3aXRoLWVhY2gtcHJlZml4KCRjYXBhYmlsaXR5LCAkdGhyZXNob2xkLCAkY2FwYWJpbGl0eS1vcHRpb25zKSB7XG4gICAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkcHJvcGVydGllcyB7XG4gICAgICBAaW5jbHVkZSBwcmVmaXgtcHJvcCgkcHJvcCwgJHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBAcHJpdmF0ZVxuQGZ1bmN0aW9uIHdhcm4tYWJvdXQtb2xkLXZhcmlhYmxlcygpIHtcbiAgJG9sZC12YXJpYWJsZXMtaW4tdXNlOiAoKTtcbiAgQGVhY2ggJG9sZC12YXJpYWJsZS1uYW1lIGluXG4gICAgICAgIChsZWdhY3ktc3VwcG9ydC1mb3ItaWUsIGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYsIGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcsXG4gICAgICAgICBsZWdhY3ktc3VwcG9ydC1mb3ItaWU4LCBsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYSwgbGVnYWN5LXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgICAgICAgIGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLCBleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAgICAgICAgZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLCBleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAgICAgICAgZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLCBleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnKVxuICB7XG4gICAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoJG9sZC12YXJpYWJsZS1uYW1lKSB7XG4gICAgICAkb2xkLXZhcmlhYmxlcy1pbi11c2U6IGFwcGVuZCgkb2xkLXZhcmlhYmxlcy1pbi11c2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnF1b3RlKFwiJCN7JG9sZC12YXJpYWJsZS1uYW1lfVwiKSwgY29tbWEpO1xuICAgIH1cbiAgfVxuICBAaWYgbGVuZ3RoKCRvbGQtdmFyaWFibGVzLWluLXVzZSkgPiAwIHtcbiAgICBAd2FybiBcIkNvbXBhc3MgaGFzIGNoYW5nZWQgaG93IGJyb3dzZXIgc3VwcG9ydCBpcyBjb25maWd1cmVkLiBcIiArXG4gICAgICAgICAgXCJUaGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIFwiICtcbiAgICAgICAgICBcImFyZSBubyBsb25nZXIgc3VwcG9ydGVkOiAjeyRvbGQtdmFyaWFibGVzLWluLXVzZX0uXCIgK1xuICAgICAgICAgIFwiRGV0YWlsczogaHR0cDovL2NvbXBhc3Mtc3R5bGUub3JnL2hlbHAvZG9jdW1lbnRhdGlvbi90dW5pbmctdmVuZG9yLXByZWZpeGVzL1wiXG4gIH1cbiAgQHJldHVybiAkb2xkLXZhcmlhYmxlcy1pbi11c2U7XG59XG5cbi8vIEBwcml2YXRlXG5AZnVuY3Rpb24gd2Fybi1hYm91dC1waWUtcmVtb3ZhbCgpIHtcbiAgQGlmIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSkge1xuICAgIEB3YXJuIFwiQ29tcGFzcyBubyBsb25nZXIgc3VwcG9ydHMgY3NzM3BpZS5cIjtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vIEVuYWJsZSBicm93c2VyIHN1cHBvcnQgZGVidWdnaW5nIHdpdGhpbiB0aGUgY29udGVudCBibG9jay5cbi8vIE9yIHlvdSBjYW4gZW5hYmxlIGl0IGZvciB0aGUgd2hvbGUgc3R5bGVzaGVldCBieSBzZXR0aW5nIGAkZGVidWctYnJvd3Nlci1zdXBwb3J0YCB0byB0cnVlLlxuQG1peGluIHdpdGgtYnJvd3Nlci1zdXBwb3J0LWRlYnVnZ2luZyB7XG4gICRjdXJyZW50LXN0YXR1czogJGRlYnVnLWJyb3dzZXItc3VwcG9ydDtcbiAgJGRlYnVnLWJyb3dzZXItc3VwcG9ydDogdHJ1ZSAhZ2xvYmFsO1xuICBAY29udGVudDtcbiAgJGRlYnVnLWJyb3dzZXItc3VwcG9ydDogJGN1cnJlbnQtc3RhdHVzICFnbG9iYWw7XG59XG5cbi8vIFNldCBhIGRlZmF1bHQgdmFsdWUgaWYgdGhlIGdpdmVuIGFyZ2xpc3QgaXMgZW1wdHlcbkBmdW5jdGlvbiBzZXQtYXJnbGlzdC1kZWZhdWx0KCRhcmdsaXN0LCAkZGVmYXVsdCkge1xuICAkZGVmYXVsdC1pbmRleDogaW5kZXgoJGFyZ2xpc3QsIGRlZmF1bHQpO1xuICBAaWYgJGRlZmF1bHQtaW5kZXgge1xuICAgICRhcmdsaXN0OiBzZXQtbnRoKCRhcmdsaXN0LCAkZGVmYXVsdC1pbmRleCwgJGRlZmF1bHQpXG4gIH1cbiAgQHJldHVybiBpZihsZW5ndGgoJGFyZ2xpc3QpID4gMCwgJGFyZ2xpc3QsICRkZWZhdWx0KTtcbn1cblxuXG4vLyBAcHJpdmF0ZVxuJG9sZC12YXJpYWJsZS13YXJuaW5ncy1pc3N1ZWQ6IHdhcm4tYWJvdXQtb2xkLXZhcmlhYmxlcygpICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuJHBpZS1yZW1vdmFsLXdhcm5pbmctaXNzdWVkOiB3YXJuLWFib3V0LXBpZS1yZW1vdmFsKCkgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG5AZnVuY3Rpb24gd2Fybi1hYm91dC11c2VsZXNzLXByZWZpeC1hcmd1bWVudHMoJG1vejogbnVsbCwgJHdlYmtpdDogbnVsbCwgJG86IG51bGwsICRraHRtbDogbnVsbCwgJG9mZmljaWFsOiBudWxsKSB7XG4gIEBpZiAkbW96ICE9IG51bGwgb3IgJHdlYmtpdCAhPSBudWxsIG9yICRvICE9IG51bGwgb3IgJGtodG1sICE9IG51bGwgb3IgJG9mZmljaWFsICE9IG51bGwge1xuICAgIEB3YXJuIFwiQnJvd3NlciBwcmVmaXggYXJndW1lbnRzIHRvIHRoaXMgbWl4aW4gYXJlIG5vIGxvbmdlciB1c2VkIGFuZCBcIiArXG4gICAgICAgICAgXCJ3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS5cIjtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbi8vIGNvZXJjZSBhIGxpc3QgdG8gYmUgY29tbWEgZGVsaW1pdGVkIG9yIG1ha2UgYSBuZXcsIGVtcHR5IGNvbW1hIGRlbGltaXRlZCBsaXN0LlxuQGZ1bmN0aW9uIGNvbW1hLWxpc3QoJGxpc3Q6ICgpKSB7XG4gIEByZXR1cm4gam9pbigoKSwgJGxpc3QsIGNvbW1hKTtcbn1cblxuLy8gQHByaXZhdGUgUmV0dXJucyB0aGUgbGVnYWN5IHZhbHVlIGZvciBhIGdpdmVuIGJveC1tb2RlbFxuLy8gLSBVc2VkIGJ5IGJhY2tncm91bmQtY2xpcCBhbmQgLW9yaWdpbi5cbkBmdW5jdGlvbiBsZWdhY3ktYm94KCRib3gpIHtcbiAgJGJveDogdW5xdW90ZSgkYm94KTtcbiAgQGlmICRib3ggPT0gcGFkZGluZy1ib3ggeyAkYm94OiBwYWRkaW5nOyB9XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggeyAkYm94OiBib3JkZXI7IH1cbiAgQGlmICRib3ggPT0gY29udGVudC1ib3ggeyAkYm94OiBjb250ZW50OyB9XG4gIEByZXR1cm4gJGJveDtcbn1cbiIsIkBpbXBvcnQgXCJjb21wYXNzL3N1cHBvcnRcIjtcblxuLy8gVGhlIHRoZSB1c2VyIHRocmVzaG9sZCBmb3IgdHJhbnNpdGlvbiBzdXBwb3J0LiBEZWZhdWx0cyB0byBgJGdyYWNlZnVsLXVzYWdlLXRocmVzaG9sZGBcbiR0cmFuc2l0aW9uLXN1cHBvcnQtdGhyZXNob2xkOiAkZ3JhY2VmdWwtdXNhZ2UtdGhyZXNob2xkICFkZWZhdWx0O1xuXG5cbi8vIENTUyBUcmFuc2l0aW9uc1xuLy8gQ3VycmVudGx5IG9ubHkgd29ya3MgaW4gV2Via2l0LlxuLy9cbi8vICogZXhwZWN0ZWQgaW4gQ1NTMywgRmlyZUZveCAzLjYvNyBhbmQgT3BlcmEgUHJlc3RvIDIuM1xuLy8gKiBXZSdsbCBiZSBwcmVwYXJlZC5cbi8vXG4vLyBJbmNsdWRpbmcgdGhpcyBzdWJtb2R1bGUgc2V0cyBmb2xsb3dpbmcgZGVmYXVsdHMgZm9yIHRoZSBtaXhpbnM6XG4vL1xuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHkgOiBhbGxcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uIDogMXNcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uIDogZmFsc2Vcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5ICAgIDogZmFsc2Vcbi8vXG4vLyBPdmVycmlkZSB0aGVtIGlmIHlvdSBsaWtlLiBUaW1pbmctZnVuY3Rpb24gYW5kIGRlbGF5IGFyZSBzZXQgdG8gZmFsc2UgZm9yIGJyb3dzZXIgZGVmYXVsdHMgKGVhc2UsIDBzKS5cblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxcyAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbjogbnVsbCAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheTogbnVsbCAhZGVmYXVsdDtcblxuJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlczogdHJhbnNmb3JtLCB0cmFuc2Zvcm0tb3JpZ2luICFkZWZhdWx0O1xuXG5cblxuLy8gQ2hlY2tzIGlmIHRoZSB2YWx1ZSBnaXZlbiBpcyBhIHVuaXQgb2YgdGltZS5cbkBmdW5jdGlvbiBpcy10aW1lKCR2YWx1ZSkge1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJHZhbHVlKSA9PSBudW1iZXIsIG5vdCBub3QgaW5kZXgocyBtcywgdW5pdCgkdmFsdWUpKSwgZmFsc2UpO1xufVxuXG4vLyBSZXR1cm5zIGAkcHJvcGVydHlgIHdpdGggdGhlIGdpdmVuIHByZWZpeCBpZiBpdCBpcyBmb3VuZCBpbiBgJHRyYW5zaXRpb25hYmxlLXByZWZpeGVkLXZhbHVlc2AuXG5AZnVuY3Rpb24gcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oJHByZWZpeCwgJHByb3BlcnR5KSB7XG4gIEBpZiBub3QgJHByZWZpeCB7XG4gICAgQHJldHVybiAkcHJvcGVydHk7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5KSA9PSBsaXN0IG9yIHR5cGUtb2YoJHByb3BlcnR5KSA9PSBhcmdsaXN0IHtcbiAgICAkbmV3LWxpc3Q6IGNvbW1hLWxpc3QoKTtcbiAgICBAZWFjaCAkdiBpbiAkcHJvcGVydHkge1xuICAgICAgJG5ldy1saXN0OiBhcHBlbmQoJG5ldy1saXN0LCBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigkcHJlZml4LCAkdikpO1xuICAgIH1cbiAgICBAcmV0dXJuICRuZXctbGlzdDtcbiAgfSBAZWxzZSB7XG4gICAgQGlmIGluZGV4KCR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXMsICRwcm9wZXJ0eSkge1xuICAgICAgQHJldHVybiAjeyRwcmVmaXh9LSN7JHByb3BlcnR5fTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gJHByb3BlcnR5O1xuICAgIH1cbiAgfVxufVxuXG4vLyBSZXR1cm5zICR0cmFuc2l0aW9uLW1hcCB3aGljaCBpbmNsdWRlcyBrZXkgYW5kIHZhbHVlcyB0aGF0IG1hcCB0byBhIHRyYW5zaXRpb24gZGVjbGFyYXRpb25cbkBmdW5jdGlvbiB0cmFuc2l0aW9uLW1hcCgkdHJhbnNpdGlvbikge1xuICAkdHJhbnNpdGlvbi1tYXA6ICgpO1xuXG4gIEBlYWNoICRpdGVtIGluICR0cmFuc2l0aW9uIHtcbiAgICBAaWYgaXMtdGltZSgkaXRlbSkge1xuICAgICAgQGlmIG1hcC1oYXMta2V5KCR0cmFuc2l0aW9uLW1hcCwgZHVyYXRpb24pIHtcbiAgICAgICAgJHRyYW5zaXRpb24tbWFwOiBtYXAtbWVyZ2UoJHRyYW5zaXRpb24tbWFwLCAoZGVsYXk6ICRpdGVtKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJHRyYW5zaXRpb24tbWFwOiBtYXAtbWVyZ2UoJHRyYW5zaXRpb24tbWFwLCAoZHVyYXRpb246ICRpdGVtKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiBtYXAtaGFzLWtleSgkdHJhbnNpdGlvbi1tYXAsIHByb3BlcnR5KSB7XG4gICAgICAkdHJhbnNpdGlvbi1tYXA6IG1hcC1tZXJnZSgkdHJhbnNpdGlvbi1tYXAsICh0aW1pbmctZnVuY3Rpb246ICRpdGVtKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkdHJhbnNpdGlvbi1tYXA6IG1hcC1tZXJnZSgkdHJhbnNpdGlvbi1tYXAsIChwcm9wZXJ0eTogJGl0ZW0pKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICR0cmFuc2l0aW9uLW1hcDtcbn1cblxuLy8gT25lIG9yIG1vcmUgcHJvcGVydGllcyB0byB0cmFuc2l0aW9uXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIGFsc28gYWNjZXB0cyBcImFsbFwiIG9yIFwibm9uZVwiXG5cbkBtaXhpbiB0cmFuc2l0aW9uLXByb3BlcnR5KCRwcm9wZXJ0aWVzLi4uKSB7XG4gICRwcm9wZXJ0aWVzOiBzZXQtYXJnbGlzdC1kZWZhdWx0KCRwcm9wZXJ0aWVzLCAkZGVmYXVsdC10cmFuc2l0aW9uLXByb3BlcnR5KTtcbiAgQGluY2x1ZGUgd2l0aC1lYWNoLXByZWZpeChjc3MtdHJhbnNpdGlvbnMsICR0cmFuc2l0aW9uLXN1cHBvcnQtdGhyZXNob2xkKSB7XG4gICAgJHByb3BzOiBpZigkY3VycmVudC1wcmVmaXgsIHByZWZpeGVkLWZvci10cmFuc2l0aW9uKCRjdXJyZW50LXByZWZpeCwgJHByb3BlcnRpZXMpLCAkcHJvcGVydGllcyk7XG4gICAgQGluY2x1ZGUgcHJlZml4LXByb3AodHJhbnNpdGlvbi1wcm9wZXJ0eSwgJHByb3BzKTtcbiAgfVxufVxuXG4vLyBPbmUgb3IgbW9yZSBkdXJhdGlvbnMgaW4gc2Vjb25kc1xuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiB0aGVzZSBkdXJhdGlvbnMgd2lsbCBhZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi1kdXJhdGlvbigkZHVyYXRpb25zLi4uKSB7XG4gICRkdXJhdGlvbnM6IHNldC1hcmdsaXN0LWRlZmF1bHQoJGR1cmF0aW9ucywgJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbik7XG4gIEBpbmNsdWRlIHByZWZpeGVkLXByb3BlcnRpZXMoY3NzLXRyYW5zaXRpb25zLCAkdHJhbnNpdGlvbi1zdXBwb3J0LXRocmVzaG9sZCwgKFxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbnNcbiAgKSk7XG59XG5cbi8vIE9uZSBvciBtb3JlIHRpbWluZyBmdW5jdGlvbnNcbi8vXG4vLyAqIFsgZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0IHwgY3ViaWMtYmV6aWVyKHgxLCB5MSwgeDIsIHkyKV1cbi8vICogRm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiBUaGVzZSBmdW5jdGlvbnMgd2lsbCBlZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oJGZ1bmN0aW9ucy4uLikge1xuICAkZnVuY3Rpb25zOiBzZXQtYXJnbGlzdC1kZWZhdWx0KCRmdW5jdGlvbnMsICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24pO1xuICBAaW5jbHVkZSBwcmVmaXhlZC1wcm9wZXJ0aWVzKGNzcy10cmFuc2l0aW9ucywgJHRyYW5zaXRpb24tc3VwcG9ydC10aHJlc2hvbGQsIChcbiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogJGZ1bmN0aW9uc1xuICApKTtcbn1cblxuLy8gT25lIG9yIG1vcmUgdHJhbnNpdGlvbi1kZWxheXMgaW4gc2Vjb25kc1xuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiB0aGVzZSBkZWxheXMgd2lsbCBlZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi1kZWxheSgkZGVsYXlzLi4uKSB7XG4gICRkZWxheXM6IHNldC1hcmdsaXN0LWRlZmF1bHQoJGRlbGF5cywgJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSk7XG4gIEBpbmNsdWRlIHByZWZpeGVkLXByb3BlcnRpZXMoY3NzLXRyYW5zaXRpb25zLCAkdHJhbnNpdGlvbi1zdXBwb3J0LXRocmVzaG9sZCwgKFxuICAgIHRyYW5zaXRpb24tZGVsYXk6ICRkZWxheXNcbiAgKSk7XG59XG5cbi8vIFRyYW5zaXRpb24gYWxsLWluLW9uZSBzaG9ydGhhbmRcblxuQG1peGluIHNpbmdsZS10cmFuc2l0aW9uKFxuICAkcHJvcGVydHk6ICRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHksXG4gICRkdXJhdGlvbjogJGRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbixcbiAgJGZ1bmN0aW9uOiAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uLFxuICAkZGVsYXk6ICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXlcbikge1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKGNvbXBhY3QoJHByb3BlcnR5ICRkdXJhdGlvbiAkZnVuY3Rpb24gJGRlbGF5KSk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uKCR0cmFuc2l0aW9ucy4uLikge1xuICAkZGVmYXVsdDogKGNvbXBhY3QoJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24gJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSksKTtcbiAgJHRyYW5zaXRpb25zOiBpZihsZW5ndGgoJHRyYW5zaXRpb25zKSA9PSAxIGFuZCB0eXBlLW9mKG50aCgkdHJhbnNpdGlvbnMsIDEpKSA9PSBsaXN0IGFuZCBsaXN0LXNlcGFyYXRvcihudGgoJHRyYW5zaXRpb25zLCAxKSkgPT0gY29tbWEsIG50aCgkdHJhbnNpdGlvbnMsIDEpLCAkdHJhbnNpdGlvbnMpO1xuICAkdHJhbnNpdGlvbnM6IHNldC1hcmdsaXN0LWRlZmF1bHQoJHRyYW5zaXRpb25zLCAkZGVmYXVsdCk7XG5cblxuICBAaW5jbHVkZSB3aXRoLWVhY2gtcHJlZml4KGNzcy10cmFuc2l0aW9ucywgJHRyYW5zaXRpb24tc3VwcG9ydC10aHJlc2hvbGQpIHtcbiAgICAkZGVsYXlzOiBjb21tYS1saXN0KCk7XG4gICAgJHRyYW5zaXRpb25zLXdpdGhvdXQtZGVsYXlzOiBjb21tYS1saXN0KCk7XG4gICAgJHRyYW5zaXRpb25zLXdpdGgtZGVsYXlzOiBjb21tYS1saXN0KCk7XG4gICAgJGhhcy1kZWxheXM6IGZhbHNlO1xuXG5cbiAgICAvLyBUaGlzIGJsb2NrIGNhbiBiZSBtYWRlIGNvbnNpZGVyYWJseSBzaW1wbGVyIGF0IHRoZSBwb2ludCBpbiB0aW1lIHRoYXRcbiAgICAvLyB3ZSBubyBsb25nZXIgbmVlZCB0byBkZWFsIHdpdGggdGhlIGRpZmZlcmVuY2VzIGluIGhvdyBkZWxheXMgYXJlIHRyZWF0ZWQuXG4gICAgQGVhY2ggJHRyYW5zaXRpb24gaW4gJHRyYW5zaXRpb25zIHtcbiAgICAgIC8vIERlY2xhcmUgaW5pdGlhbCB2YWx1ZXMgZm9yIHRyYW5zaXRpb25cbiAgICAgICR0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLW1hcCgkdHJhbnNpdGlvbik7XG5cbiAgICAgICRwcm9wZXJ0eTogbWFwLWdldCgkdHJhbnNpdGlvbiwgcHJvcGVydHkpO1xuICAgICAgJGR1cmF0aW9uOiBtYXAtZ2V0KCR0cmFuc2l0aW9uLCBkdXJhdGlvbik7XG4gICAgICAkdGltaW5nLWZ1bmN0aW9uOiBtYXAtZ2V0KCR0cmFuc2l0aW9uLCB0aW1pbmctZnVuY3Rpb24pO1xuICAgICAgJGRlbGF5OiBtYXAtZ2V0KCR0cmFuc2l0aW9uLCBkZWxheSk7XG5cbiAgICAgIC8vIFBhcnNlIHRyYW5zaXRpb24gc3RyaW5nIHRvIGFzc2lnbiB2YWx1ZXMgaW50byBjb3JyZWN0IHZhcmlhYmxlc1xuICAgICAgJGhhcy1kZWxheXM6ICRoYXMtZGVsYXlzIG9yICRkZWxheTtcblxuICAgICAgQGlmICRjdXJyZW50LXByZWZpeCA9PSAtd2Via2l0IHtcbiAgICAgICAgLy8gS2VlcCBhIGxpc3Qgb2YgZGVsYXlzIGluIGNhc2Ugb25lIGlzIHNwZWNpZmllZFxuICAgICAgICAkZGVsYXlzOiBhcHBlbmQoJGRlbGF5cywgaWYoJGRlbGF5LCAkZGVsYXksIDBzKSk7XG4gICAgICAgICR0cmFuc2l0aW9ucy13aXRob3V0LWRlbGF5czogYXBwZW5kKCR0cmFuc2l0aW9ucy13aXRob3V0LWRlbGF5cyxcbiAgICAgICAgICBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigkY3VycmVudC1wcmVmaXgsICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR0cmFuc2l0aW9ucy13aXRoLWRlbGF5czogYXBwZW5kKCR0cmFuc2l0aW9ucy13aXRoLWRlbGF5cyxcbiAgICAgICAgICBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigkY3VycmVudC1wcmVmaXgsICRwcm9wZXJ0eSkgJGR1cmF0aW9uICR0aW1pbmctZnVuY3Rpb24gJGRlbGF5KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGN1cnJlbnQtcHJlZml4ID09IC13ZWJraXQge1xuICAgICAgQGluY2x1ZGUgcHJlZml4LXByb3AodHJhbnNpdGlvbiwgJHRyYW5zaXRpb25zLXdpdGhvdXQtZGVsYXlzKTtcbiAgICAgIEBpZiAkaGFzLWRlbGF5cyB7XG4gICAgICAgIEBpbmNsdWRlIHByZWZpeC1wcm9wKHRyYW5zaXRpb24tZGVsYXksICRkZWxheXMpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJGN1cnJlbnQtcHJlZml4IHtcbiAgICAgIEBpbmNsdWRlIHByZWZpeC1wcm9wKHRyYW5zaXRpb24sICR0cmFuc2l0aW9ucy13aXRoLWRlbGF5cyk7XG4gICAgfSBAZWxzZSB7XG4gICAgICB0cmFuc2l0aW9uOiAkdHJhbnNpdGlvbnMtd2l0aC1kZWxheXM7XG4gICAgfVxuICB9XG59XG4iLCIvLyBUaGVyZSBhcmUgdHdvIHdheXMgdG8gdXNlIHRoZSBmbGV4Ym94IG1vZHVsZS5cbi8vIElmIHlvdSdyZSB1c2luZyB0aGUgZmluYWwgdmVyc2lvbiBvZiB0aGUgc3BlYyxcbi8vIHlvdSBjYW4gdXNlIHRoZSBwcm9wZXJ0eSBtaXhpbnMgYXMgZWxzZXdoZXJlIGluXG4vLyB0aGUgY3NzMyBtb2R1bGUuXG4vL1xuLy8gWW91IGNhbiBhbHNvIHVzZSB0aGUgZmxleGJveCBwcmVmaXhpbmcgbWl4aW4gYGZsZXhib3hgLlxuLy8gVGhpcyBtaXhpbiB0YWtlcyBhbiBvcHRpb25hbCBgJHZlcnNpb25gIGFyZ3VtZW50IHdoaWNoXG4vLyBhbGxvd3MgeW91IHRvIHNwZWNpZnkgd2hpY2ggc3BlYyB2ZXJzaW9uIHRoZSBwcm9wZXJ0aWVzXG4vLyBhcmUgdXNpbmcgc28gdGhhdCB0aGV5IHdpbGwgYmUgcHJlZml4ZWQgY29ycmVjdGx5LlxuLy9cbi8vIEV4YW1wbGU6XG4vL1xuLy8gICAgIC5mbGV4LWNvbHVtbiB7XG4vLyAgICAgICAvKiBGb3IgZmxleGJveCBzcGVjIHYxICovXG4vLyAgICAgICBAaW5jbHVkZSBmbGV4Ym94KChcbi8vICAgICAgICAgZGlzcGxheTogYm94LFxuLy8gICAgICAgICBib3gtb3JpZW50OiB2ZXJ0aWNhbCxcbi8vICAgICAgICksICR2ZXJzaW9uOiAxKTtcbi8vICAgICAgIFxuLy8gICAgICAgLyogRm9yIGZsZXhib3ggc3BlYyB2MiAqL1xuLy8gICAgICAgQGluY2x1ZGUgZmxleGJveCgoXG4vLyAgICAgICAgIGRpc3BsYXk6IGZsZXhib3gsXG4vLyAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4sXG4vLyAgICAgICApLCAkdmVyc2lvbjogMik7XG4vLyAgICAgICBcbi8vICAgICAgIC8qIExhdGVzdCBTcGVjICovXG4vLyAgICAgICBAaW5jbHVkZSBmbGV4Ym94KChcbi8vICAgICAgICAgZGlzcGxheTogZmxleCxcbi8vICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbixcbi8vICAgICAgICkpO1xuLy8gICAgIH1cbi8vXG4vLyBXaGljaCBjb21waWxlcyB0bzpcbi8vXG4vLyAgICAgLmZsZXgtcm93IHtcbi8vICAgICAgIC8qIEZvciBmbGV4Ym94IHNwZWMgdjEgKi9cbi8vICAgICAgIGRpc3BsYXk6IC1tb3otYm94O1xuLy8gICAgICAgLW1vei1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbi8vICAgICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuLy8gICAgICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbi8vICAgICAgIFxuLy8gICAgICAgLyogRm9yIGZsZXhib3ggc3BlYyB2MiAqL1xuLy8gICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7XG4vLyAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbi8vICAgICAgIFxuLy8gICAgICAgLyogTGF0ZXN0IFNwZWMgKi9cbi8vICAgICAgIGRpc3BsYXk6IC13ZWJraXQtZmxleDtcbi8vICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbi8vICAgICAgIGRpc3BsYXk6IGZsZXg7XG4vLyAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuLy8gICAgIH1cblxuQGltcG9ydCBcImNvbXBhc3Mvc3VwcG9ydFwiO1xuXG4kZmxleGJveC1zdXBwb3J0LXRocmVzaG9sZDogJGNyaXRpY2FsLXVzYWdlLXRocmVzaG9sZCAhZGVmYXVsdDtcblxuXG4vLyBAcHJpdmF0ZVxuJGZsZXhib3gtY2FwYWJpbGl0eS1vcHRpb25zOiAoXG4gIChmdWxsLXN1cHBvcnQ6IHRydWUpLFxuICAocGFydGlhbC1zdXBwb3J0OiB0cnVlLCBzcGVjLXZlcnNpb25zOiAzKVxuKTtcblxuLy8gVGhpcyBpcyB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHRoZSBvdGhlciBtaXhpbnMgaW4gdGhpcyBtb2R1bGUuXG4vLyBJdCBpcyB0aGUgb25seSB3YXkgdG8gYWNjZXNzIHByZWZpeCBzdXBwb3J0IGZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3BlYy5cbi8vXG4vLyBgJHByb3BlcnRpZXNgOiBtYXAgb2YgcHJvcGVydHktdmFsdWUgcGFpcnMgdGhhdCBzaG91bGQgYmUgcHJlZml4ZWRcblxuLy8gYCR2ZXJzaW9uMTogdGhlIHZlcnNpb24gb2YgdGhlIHNwZWMgdG8gdXNlIHdoZW4gY29uc2lkZXJpbmcgd2hhdCBwcmVmaXhcbi8vIHRvIGFwcHBseS4gRGVmYXVsdHMgdG8gdGhlIG1vc3QgcmVjZW50IChzcGVjIHZlcnNpb24gMykuIE9ubHkgdGhlIG1vc3Rcbi8vIHJlY2VudCB2ZXJzaW9uIG9mIHRoZSBzcGVjIG91dHB1dHMgYW4gdW5wcmVmaXhlZCB2ZXJzaW9uLlxuQG1peGluIGZsZXhib3goJHByb3BlcnRpZXMsICR2ZXJzaW9uOiBudWxsKSB7XG4gICRjYXBhYmlsaXR5LW9wdGlvbnM6ICRmbGV4Ym94LWNhcGFiaWxpdHktb3B0aW9ucztcbiAgQGlmICR2ZXJzaW9uIHtcbiAgICAkY2FwYWJpbGl0eS1vcHRpb25zOiAocGFydGlhbC1zdXBwb3J0OiB0cnVlLCBzcGVjLXZlcnNpb25zOiAkdmVyc2lvbik7XG4gIH1cblxuICBAaW5jbHVkZSB3aXRoLWVhY2gtcHJlZml4KGZsZXhib3gsICRmbGV4Ym94LXN1cHBvcnQtdGhyZXNob2xkLCAkY2FwYWJpbGl0eS1vcHRpb25zKSB7XG4gICAgLy8gRG9uJ3Qgb3V0cHV0IHVucHJlZml4ZWQgdmVyc2lvbnMgd2hlbiB0aGUgc3BlYyB2ZXJzaW9uIGlzIG5vdCB0aGUgZmluYWwgdmVyc2lvblxuICAgIEBpZiAkdmVyc2lvbiBhbmQgJGN1cnJlbnQtcHJlZml4IG9yIG5vdCAkdmVyc2lvbiBvciAkdmVyc2lvbiA9PSAzIHtcbiAgICAgIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJHByb3BlcnRpZXMge1xuICAgICAgICBAaWYgJHByb3AgPT0gZGlzcGxheSB7XG4gICAgICAgICAgZGlzcGxheTogcHJlZml4LWlkZW50aWZpZXIoJHZhbHVlKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGluY2x1ZGUgcHJlZml4LXByb3AoJHByb3AsICR2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gVmFsdWVzIGZvciAkZGlzcGxheSBhcmU6IGZsZXggKGRlZmF1bHQpLCBpbmxpbmUtZmxleFxuQG1peGluIGRpc3BsYXktZmxleCgkZGlzcGxheTogZmxleCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChkaXNwbGF5OiAkZGlzcGxheSkpO1xufVxuXG4vLyBWYWx1ZXM6IHJvdyB8IHJvdy1yZXZlcnNlIHwgY29sdW1uIHwgY29sdW1uLXJldmVyc2VcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkZGlyZWN0aW9uKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtZGlyZWN0aW9uOiAkZGlyZWN0aW9uKSk7XG59XG5cbi8vIFZhbHVlczogbm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZVxuQG1peGluIGZsZXgtd3JhcCgkd3JhcCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LXdyYXA6ICR3cmFwKSk7XG59XG5cbi8vIFNob3J0aGFuZCBmb3IgZmxleC1kaXJlY3Rpb24gYW5kIGZsZXgtd3JhcC5cbkBtaXhpbiBmbGV4LWZsb3coJGZsb3cpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1mbG93OiAkZmxvdykpO1xufVxuXG4vLyBBY2NlcHRzIGFuIGludGVnZXJcbkBtaXhpbiBvcmRlcigkb3JkZXIpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgob3JkZXI6ICRvcmRlcikpO1xufVxuXG4vLyBTaG9ydGhhbmQgZm9yIGZsZXgtZ3JvdywgZmxleC1zaHJpbmsgYW5kIG9wdGlvbmFsbHkgZmxleC1iYXNpcy5cbi8vIFNwYWNlIHNlcGFyYXRlZCwgaW4gdGhhdCBvcmRlci5cbkBtaXhpbiBmbGV4KCRmbGV4KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXg6ICRmbGV4KSk7XG59XG5cbi8vIEFjY2VwdHMgYSBudW1iZXIuXG5AbWl4aW4gZmxleC1ncm93KCRmbGV4LWdyb3cpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1ncm93OiAkZmxleC1ncm93KSk7XG59XG5cbi8vIEFjY2VwdHMgYSBudW1iZXIuXG5AbWl4aW4gZmxleC1zaHJpbmsoJGZsZXgtc2hyaW5rKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtc2hyaW5rOiAkZmxleC1zaHJpbmspKTtcbn1cblxuLy8gQWNjZXB0cyBhbnkgbGVnYWwgdmFsdWUgZm9yIHRoZSB3aWR0aCBwcm9wZXJ0eS5cbkBtaXhpbiBmbGV4LWJhc2lzKCRmbGV4LWJhc2lzKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtYmFzaXM6ICRmbGV4LWJhc2lzKSk7XG59XG5cbi8vIExlZ2FsIHZhbHVlczogZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZFxuQG1peGluIGp1c3RpZnktY29udGVudCgkanVzdGlmeS1jb250ZW50KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGp1c3RpZnktY29udGVudDogJGp1c3RpZnktY29udGVudCkpO1xufVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaFxuQG1peGluIGFsaWduLWl0ZW1zKCRhbGlnbi1pdGVtcykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChhbGlnbi1pdGVtczogJGFsaWduLWl0ZW1zKSk7XG59XG5cbi8vIExlZ2FsIHZhbHVlczogYXV0byB8IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaFxuQG1peGluIGFsaWduLXNlbGYoJGFsaWduLXNlbGYpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24tc2VsZjogJGFsaWduLXNlbGYpKTtcbn1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kIHwgc3RyZXRjaFxuQG1peGluIGFsaWduLWNvbnRlbnQoJGFsaWduLWNvbnRlbnQpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoYWxpZ24tY29udGVudDogJGFsaWduLWNvbnRlbnQpKTtcbn1cbiJdfQ== */

/*# sourceMappingURL=../../maps/index/css/bussiness.css.map */


.mod-option .ui-btn-lg{background-color: #0099CC!important;border-radius: 0px!important;}
.project-collection-manage .project-collection-list li .project-collection-item .project-collection-header .project-collection-name{color: #2DB7F5!important;}
.header .breadcrunmbs .breadcrumb a{color: #2DB7F5!important;}

/*修改*/
label[for='tab2'], label[for='tab1'] ,label[for='tab3'] {
  border-bottom: 1px solid #ddd;
  margin-top: 20px;
}
label[for='tab1']{
  margin-left: 20px;
  clear: both;
}
.navbar-nav{
  margin: 0;
}
.navbar-default.navs{
  background-color: #03A9F5 !important;
  border-radius: 0;
  min-height: 60px;
  position: fixed !important;
  width: 100%;
  top: 0;
  left: 0;
  z-index: 999;
}
.navbar-default.navs .navbar-nav>li>a{
  color: #fff;
  line-height: 60px;
  padding-top: 0;
  padding-bottom: 0;
}
.navs .logo{
  /*width: 230px;*/
  float: left;
  height: 60px;
  line-height: 60px;
}
.navs .logo img{
 height: 45px;
 margin-top: 7px;
 vertical-align: top;
}
.navs .logo p{
  display: inline-block;
  height: 45px;
  font-size: 25px;
  color: #fff;
}
.navs .nav li{
 color:#fff;
 height: 60px;
 line-height: 60px;
 margin-left: 5px;
 float: left;
}
.navs .nav li.admin{
  margin: 0 15px;
}
.navs .nav li.admin img{
  width:40px;
  height: 40px;
  margin-right: 5px;
}
.navs .nav li.horn a img{
  position: relative;
}
.navs .nav li.horn a span{
  width: 18px;
  height: 18px;
  line-height: 18px;
  font-size: 12px;
  text-align: center;
  display: inline-block;
  background: #FF7442;
  color: #fff;
  border-radius: 50%;
  -moz-border-radius: 50%;
  -webkit-border-radius: 50%;
  -o-border-radius: 50%;
  position: absolute;
  top: 15px;
  left: 5px;
}
.navs .nav li .horn{
  font-size: 15px;
}

/*manage.html*/
.manage {
  margin-top: 60px;
  overflow-x: hidden;
  height: calc(100% - 100px);
}
.manage  .in-content{
  text-align: center;
}
.manage  .in-content .time{
  color: #575757;
  text-align: right;
  margin-right: 20px;
  padding-top: 10px;
}
.manage  .in-content span{
  margin-right: 10px;
}
.manage  .in-content .sys{
  color: #03a9f5;
  font-size: 35px;
  text-align: center;
  letter-spacing: .2em;
  margin-left: .4em;
  padding-top: 20px;
}
.manage  .in-content img{
  margin: 20px 0;
}
.manage .manage-icon{
  padding: 35px 0 0;
  width: 80%;
  min-height: 660px;
  margin: 0 auto;
}
.manage .manage-icon ul {
  width: 100%;
  height: auto;
}
.manage .manage-icon ul li{
  width: 16.66%;
  height: 140px;
  float: left;
  text-align: center;
}
.manage .manage-icon ul li a{
  color: #575757;
}
.manage .manage-icon ul li p{
  margin-top: 10px;
}
.manage .manage-icon ul li div{
  background-image: url(../../images/manageBg.png);
  width: 84px;
  height: 84px;
  margin: 0 auto;
}

/*侧边栏图标*/

/*公共资源管理*/

/*教室资源管理*/
.left-nav .nav-lists li .nav-item .jwgld_jcsjgl_jszygl{
  background-image: url(../../images/classroom.png);
}
/*代码库管理*/
.left-nav .nav-lists li .nav-item .jwgld_jcsjgl_dmkgl{
  background-image: url(../../images/code-library.png);
}
/*专业信息管理*/
.left-nav .nav-lists li .nav-item .jwgld_jcsjgl_zyxxgl{
  background-image: url(../../images/major.png);
}
/*公共代码管理*/
.left-nav .nav-lists li .nav-item .jwgld_jcsjgl_ggdmgl{
  background-image: url(../../images/code.png);
}
/*课程管理*/
.left-nav .nav-lists li .nav-item .jwgld_jcsjgl_kcgl{
  background-image: url(../../images/curriculum.png);
}
/*教师电子档案管理*/
.left-nav .nav-lists li .nav-item .jwgld_jcsjgl_jsdzdagl{
  background-image: url(../../images/teacher.png);
}
/*学期节次管理*/
.left-nav .nav-lists li .nav-item .jwgld_jcsjgl_xqjcgl{
  background-image: url(../../images/semester.png);
}

/*预警管理*/
/*学业预警管理*/
.left-nav .nav-lists li .nav-item .jwgld_xyyjgl_xyyjgl{
  background-image: url(../../images/academic.png);
}
/*预警效果评估*/
.left-nav .nav-lists li .nav-item .jwgld_xyyjgl_yjxgpg{
  background-image: url(../../images/early.png);
}

/*系统管理*/
/*待办事务管理*/
.left-nav .nav-lists li .nav-item .jwgld_xtgl_dbswgl{
  background-image: url(../../images/todo.png);
}
/*模块使用时间管理*/
.left-nav .nav-lists li .nav-item .jwgld_xtgl_mksysjgl{
  background-image: url(../../images/time.png);
}
/*日志管理*/
.left-nav .nav-lists li .nav-item .jwgld_xtgl_rzgl{
  background-image: url(../../images/log.png);
}
/* 问卷调查 */
.left-nav .nav-lists li .nav-item .jwgld_xtgl_wjdc{
  background-image: url(../../images/invest3.png);
}

/*学籍管理*/
/*班级管理*/
.left-nav .nav-lists li .nav-item .jwgld_xjgl_bjgl{
  background-image: url(../../images/class.png);
}
/*学籍信息管理*/
.left-nav .nav-lists li .nav-item .jwgld_xjgl_xjxxgl{
  background-image: url(../../images/school.png);
}

/*接收交流生管理*/
.left-nav .nav-lists li .nav-item .jwgld_jlsgl_jsjlsgl{
  background-image: url(../../images/communication.png);
}
/*派出交流生管理*/
.left-nav .nav-lists li .nav-item .jwgld_jlsgl_pcjlsgl{
  background-image: url(../../images/send.png);
}
/*交流项目信息管理*/
.left-nav .nav-lists li .nav-item .jwgld_jlsgl_jlxmxxgl{
  background-image: url(../../images/project.png);
}
/*招生数据管理*/
.left-nav .nav-lists li .nav-item .jwgld_xjgl_zssjgl{
  background-image: url(../../images/recruit.png);
}
/*学籍表采集管理*/
.left-nav .nav-lists li .nav-item .jwgld_xjgl_xjbcjgl{
  background-image: url(../../images/collection.png);
}
/*学籍异动管理*/
.left-nav .nav-lists li .nav-item .jwgld_xjgl_xjydgl{
  background-image: url(../../images/status.png);
}
/*学籍查询统计*/
.left-nav .nav-lists li .nav-item .jwgld_xjgl_xjcxtj{
  background-image: url(../../images/query.png);
}
/*学生档案管理*/
.left-nav .nav-lists li .nav-item .jwgld_xjgl_xsdagl{
  background-image: url(../../images/archives.png);
}

/*培养方案管理*/
.left-nav .nav-lists li .nav-item .jwgld_pyfa_pyfa{
  background-image: url(../../images/train.png);
}
/* 交流生管理
.left-nav .nav-lists li .nav-item .jwgld_pyfa_pyfa{
  background-image: url(../../images/train.png);
}
 */

/*管理端首页图标*/
/*
1-1 -74px -79px
1-2 -74px -201px
1-3 -74px -314px
1-4 -74px 400px
1-5 -76px 295px
1-6 -76px 182px

2-1 -254px -79px
2-2 -254px -201px
2-3 -254px -314px
2-4 -254px 400px
2-5 -254px 293px
2-6 -254px 182px

3-1 -434px -79px
3-2 -434px -201px
3-3 -434px -314px
3-4 -434px 400px
3-5 -434px 293px

4-1 -613px -79px
4-2 -613px -201px
4-3 -613px -314px
4-4 -613px 400px
4-5 -613px 293px

5-1 -790px -79px
5-2 -790px -201px
5-3 -790px -314px
5-4 -790px 400px
5-5 -790px 293px

6-1 857px -79px
6-2 857px -201px
6-3 857px -314px
6-4 857px 400px
6-5 857px 293px

7-1 678px -79px
7-2 678px -201px
7-3 678px -314px
7-4 678px 400px
7-5 678px 293px

8-1 496px -79px
8-2 496px -201px
8-3 496px -314px
8-4 496px 400px
8-5 496px 293px

9-1 316px -79px
9-2 316px -201px
9-3 316px -314px
9-4 316px 400px
9-5 316px 293px

10-1 135px -79px
10-2 138px -201px
10-3 138px -314px
10-4 138px 400px
10-5 135px 293px
*/

/*系统管理    3-2*/
.jwgld_xtgl{
  background-position: -434px -201px;
}
/*基础数据管理 9-4*/
.jwgld_jcsjgl{
  background-position: 316px 400px;
}
/*学业预警管理 6-3*/
.jwgld_xyyjgl{
  background-position: 857px -314px;
}
/*培养方案管理 3-3*/
.jwgld_pyfa{
  background-position: -434px -314px;
}
/*学籍管理   8-3*/
.jwgld_xjgl{
  background-position: 496px -314px;
}
/*交流生管理   10-5*/
.jwgld_jlsgl{
  background-position: -434px 293px;
}

/*教室上课情况及空闲教室查询    3-4*/
.jwgld_jsskqkjkxjscx{
  background-position: -434px 400px;
}
/*教学大纲管理 1-5*/
.jwgld_jxdggl{
  background-position: -76px 295px;
}
/*调停课管理 10-2*/
.jwgld_ttkgl{
  background-position: 138px -201px;
}
/*模板管理 5-3*/
.jwgld_demo{
  background-position: -790px -314px;
}
/*学籍异动    5-1*/
.jwgld_xjyd{
  background-position: -790px -79px;
}
/*排课管理   4-3*/
.jwgld_pkgl{
  background-position: -613px -314px;
}

/*转专业管理    4-1*/
.jwgld_zzygl{
  background-position: -613px -79px;
}
/*新培养方案管理 3-3*/
.jwgld_new_pyfa{
  background-position: -434px -314px;
}
/*个人培养方案管理 6-5*/
/*.jwgld_new_pyfa{
  background-position: 857px 293px;
}*/
/*开课管理 8-4*/
.jwgld_kkgl{
  background-position: 496px 400px;
}
/*报到注册管理:jwgld_zcbdgl 1-6*/
.jwgld_zcbdgl{
  background-position: -76px 182px;
}
/*教室调度管理:jwgld_jsddgl    2-5*/
.jwgld_jsddgl{
  background-position: -254px 293px;
}
/*辅修学籍管理:jwgld_fxxjgl   7-5*/
.jwgld_fxxjgl{
  background-position: 678px 293px;
}

/*成绩管理:jwgld_zcbdgl 10-5 2-4*/
.jwgld_cjgl{
  background-position: -254px 400px;
}
/*教学类项目管理:jwgld_jxlxmgl    10-4*/
.jwgld_jxlxmgl{
  background-position: 138px 400px;
}
/*选课管理:jwgld_xkgl   7-3*/
.jwgld_xkgl{
  background-position: 678px -314px;
}

/*毕业学位管理:jwgld_byxwgl 4-2*/
.jwgld_byxwgl{
  background-position: -613px -201px;
}
/*评教管理:jwgld_pjgl 1-3*/
.jwgld_pjgl{
  background-position: -74px -314px;
}

/*考务管理:jwgld_kwgl 1-3*/
.jwgld_kwgl{
  background-position: 678px -79px;
}

/*考务管理:jwgld_kwgl 9-3*/
.jwgld_ysxfgl{
  background-position: 316px -314px;
}

/*进修教师管理:jwgld_jxjsgl 9-3*/
.jwgld_jxjsgl{
  background-position: 496px -314px;
}

/*信息发布管理:jwgld_xxfb 9-3*/
.jwgld_xxfb{
  background-position: 137px -535px;
}

/*交流生管理:jwgld_xjlsgl 9-3*/
.jwgld_xjlsgl{
  background-position: -434px 293px;
}
