/*!********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./public/assets/vue/Dashboard.vue?vue&type=style&index=0&id=cb2eee32&scoped=true&lang=css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************/

.dashboard-container[data-v-cb2eee32] {
  padding: 20px;
}
.dashboard-header[data-v-cb2eee32] {
  margin-bottom: 20px;
}
.status-summary[data-v-cb2eee32] {
  display: flex;
  gap: 10px;
  margin-bottom: 3em;
}
.status-card[data-v-cb2eee32] {
  flex: 1;
  padding: 15px;
  border-radius: 10px;
  text-align: center;
}
.status-card h2[data-v-cb2eee32] {
  font-size: 18px;
  font-style: italic;
}
.charts-row[data-v-cb2eee32] {
  display: flex;
  gap: 20px;
}
.chart-container[data-v-cb2eee32] {
  flex: 1;
  padding: 20px;
  background-color: #ffffff;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.donut-chart[data-v-cb2eee32],
.bar-chart[data-v-cb2eee32] {
  width: 100%;
  height: 300px;
}
.table-invoices[data-v-cb2eee32] {
  margin-top: 20px;
}
.status-label[data-v-cb2eee32] {
  background-color: #ef476f;
  padding: 2px 8px;
  border-radius: 4px;
  color: #fff;
}
.table-invoices h5[data-v-cb2eee32] {
  margin: 1em 0 -6em 0;
}
.status-option[data-v-cb2eee32] {
  padding: 0.5rem;
  border-radius: 4px;
  color: white !important;
  font-weight: 500;
  width: 100%;
}
[data-v-cb2eee32] .p-dropdown {
  min-width: 150px;
}
[data-v-cb2eee32] .p-dropdown-panel .p-dropdown-items {
  padding: 0.5rem;
}
[data-v-cb2eee32] .p-dropdown-panel .p-dropdown-item {
  padding: 0 !important;
  margin: 0.2rem 0;
}
[data-v-cb2eee32] .p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
  background-color: transparent !important;
}
[data-v-cb2eee32] .p-dropdown-panel .p-dropdown-items .p-dropdown-item:hover {
  background-color: rgba(255, 255, 255, 0.1) !important;
}
[data-v-cb2eee32] .p-dropdown:not(.p-disabled).p-focus {
  box-shadow: none;
  border-color: #dee2e6;
}
[data-v-cb2eee32] .p-dropdown .p-dropdown-label {
  padding: 0;
}
[data-v-cb2eee32] .p-dropdown-panel {
  background: white;
  border-radius: 6px;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
}
.filterStatusDashboard {
[data-v-cb2eee32] .p-dropdown-trigger {
    color: white;
}
}

/*:deep(.p-dropdown-item),
:deep(.p-dropdown-label),
:deep(.status-option) {
  color: #FFFFFF !important;
}*/
.status-badge[data-v-cb2eee32] {
  display: inline-block;
  padding: 0.3em 0.6em;
  border-radius: 4px;
  font-weight: bold;
  text-align: center;
  min-width: 80px;
  color: white;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.dropdown-site[data-v-cb2eee32] {
  margin-bottom: 20px;
  color: #000000!important;
}
[data-v-cb2eee32] .dropdown-site #pv_id_1{
  border: 1px solid gray;
  padding: 10px;
  border-radius: 8px;
}
[data-v-cb2eee32] .p-dropdown{
  color: #000000!important;
  padding: 10px;
  border-radius: 8px;
}

/*!*******************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./public/assets/vue/Customer.vue?vue&type=style&index=0&id=d278cb4a&scoped=true&lang=css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************************/

.typology-badge[data-v-d278cb4a] {
  display: inline-block;
  background-color: #263746;
  color: white;
  padding: 5px 10px;
  border-radius: 50%;
  text-align: center;
  min-width: 30px;
  min-height: 30px;
  line-height: 20px;
  font-size: 12px;
}
.exportBtnCustomer[data-v-d278cb4a] {
  position: relative;
  right: 43em;
  background: #007bff;
  border: none;
  color: white;
  font-weight: 600;
  border-radius: 8px;
  height: 3em;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./public/assets/vue/CustomerCard.vue?vue&type=style&index=0&id=25e8d80b&lang=css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************/

.status-optionCcard {
  padding: 0.5rem;
  border-radius: 4px;
  color: white !important;
  font-weight: 500;
  width: 111%;
  height: 3em;
  position: relative;
  bottom: 0.5em;
  right: 0.5em;
}
:deep(.p-dropdown) {
  min-width: 150px;
}
:deep(.p-dropdown-panel .p-dropdown-items) {
  padding: 0.5rem;
}
:deep(.p-dropdown-panel .p-dropdown-item) {
  padding: 0 !important;
  margin: 0.2rem 0;
}
:deep(.p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight) {
  background-color: transparent !important;
}
:deep(.p-dropdown-panel .p-dropdown-items .p-dropdown-item:hover) {
  background-color: rgba(255, 255, 255, 0.1) !important;
}
:deep(.p-dropdown:not(.p-disabled).p-focus) {
  box-shadow: none;
  border-color: #dee2e6;
}
:deep(.p-dropdown .p-dropdown-label) {
  padding: 0;
}
:deep(.p-dropdown-panel) {
  background: white;
  border-radius: 6px;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
}
.filterStatusC {
:deep(.p-dropdown-trigger) {
  color: white;
}
}
:deep(.p-dropdown-item),
:deep(.p-dropdown-label),
:deep(.status-optionCcard) {
  color: white !important;
}
.status-badge {
  display: inline-block;
  padding: 0.3em 0.6em;
  border-radius: 4px;
  font-weight: bold;
  text-align: center;
  min-width: 80px;
  color: white;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.status-badge.credit {
  background-color: #FFFFFF!important;
  color: black;
}
.credit-row {
  background-color: #FCE4D6 !important;
  color: black !important;
}


/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./public/assets/vue/Historique.vue?vue&type=style&index=0&id=10f77d0c&scoped=true&lang=css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************/

.grayed-out[data-v-10f77d0c] {
  color: gray;
  opacity: 0.4;
  pointer-events: none;
}
.reminder-user[data-v-10f77d0c] {
  font-size: 0.9em;
  color: #666;
  margin-top: -4px;
  margin-left: 100px;
}
.reminder-user i[data-v-10f77d0c] {
  margin-right: 6px;
  color: #6998ed;
}

/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./public/assets/vue/DocuFlowUpload.vue?vue&type=style&index=0&id=d70b4aae&scoped=true&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************/

.upload-section[data-v-d70b4aae] {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  margin-left: 15em;
}
.custom-upload[data-v-d70b4aae] {
  /*border: 2px dashed #B0B7BD !important;*/
  border-radius: 8px;
  padding: 40px;
  text-align: center;
  background-color: #fafafa;
  transition: all 0.3s ease-in-out;
}
.upload-container[data-v-d70b4aae] {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.upload-container h3[data-v-d70b4aae] {
  font-weight: 600;
}
.custom-upload[data-v-d70b4aae]:hover {
  background-color: #f3f4f6;
}
.upload-icon[data-v-d70b4aae] {
  font-size: 2rem;
  color: #0042FF;
  margin-bottom: 10px;
}
.upload-text[data-v-d70b4aae] {
  font-weight: 500;
  font-size: 16px;
}
.upload-link[data-v-d70b4aae] {
  color: #0042FF;
  cursor: pointer;
  text-decoration: underline;
}
.add-input[data-v-d70b4aae] {
  border-radius: 50%;
  width: 30px;
  height: 30px;
  margin-left: 7px;
  background-color: #000000 !important;
  border-color: transparent !important;
}
.add-input p[data-v-d70b4aae]{
  margin: -7px;
}
.del-input[data-v-d70b4aae] {
  border-radius: 50%;
  width: 30px;
  height: 30px;
  margin-left: 8px;
  background-color: #FF4F4F !important;
  border-color: transparent !important;
}
.del-input p[data-v-d70b4aae]{
  margin: -7px;
}
.flex.justify-between.gap-8[data-v-d70b4aae] {
  display: flex;
  padding: 55px 80px;
}
.flex.justify-between.gap-8 h2[data-v-d70b4aae]{
  font-weight: 600;
}
.upload-flow[data-v-d70b4aae] {
  width: 100%;
  max-width: 1560px;
  margin: 0 auto;
  margin-bottom: 3em;
  border-radius: 20px !important;
  padding: 2rem;
  margin-left: 20em !important;
}
.table-upload[data-v-d70b4aae]{
  margin-left: 20em !important;
  width: 1560px;
  border-radius: 20px !important;
}
.table-upload-h2[data-v-d70b4aae]  {
  margin-left: 10em !important;
  margin-bottom: 0.5em;
  font-weight: 600;
}
.dropdown-upload[data-v-d70b4aae] {
  width: 592px;
  height: 60px;
  border-color: #0042FF !important;
  margin-bottom: 2em;
  width: 93%;
}

/*.dropdown-upload .p-dropdown-label .p-dropdown-trigger {
  color: #0B4AFF!important;
}*/
.dropdown-upload .p-dropdown-label .p-dropdown-trigger .p-dropdown-label[data-v-d70b4aae] {
  color: #0042FF!important;
}
[data-v-d70b4aae] .dropdown-upload .p-dropdown-label {
  color: #0042FF!important;
}
[data-v-d70b4aae] .dropdown-upload .p-dropdown-trigger {
  color: #0042FF!important;
}
[data-v-d70b4aae] .dropdown-upload .p-dropdown-item {
  color: #0042FF!important;
}
[data-v-d70b4aae] .dropdown-upload .p-dropdown-item-label {
  color: #0042FF!important;
}
.input-upload[data-v-d70b4aae]{
  width: 565px;
  height: 60px;
}
.flex-1 p[data-v-d70b4aae] {
  margin-bottom: 2em !important;
}
.speedbtn[data-v-d70b4aae] {
  position: relative;
  height: 2.5rem;
  display: flex;
  justify-content: center;
  align-items: center;
}
[data-v-d70b4aae] .p-button.p-component.p-button-icon-only.p-speeddial-button.p-button-rounded.p-speeddial-rotate {
  width: 37px!important;
  height: 37px!important;
  font-size: 10px!important;
  border-radius: 50%!important;
  background: #040404!important;
  border-color: transparent!important;
}
[data-v-d70b4aae] .p-button.p-component.p-button-icon-only.p-speeddial-button.p-button-rounded.p-speeddial-rotate .p-icon {
  width: 11px;
}
.upload-container[data-v-d70b4aae] {
  width: 100%;
  max-width: 600px;
  margin: 0 auto;
  text-align: center;
}



/*  Texte principal */
.upload-text[data-v-d70b4aae] {
  font-weight: 500;
  font-size: 16px;
}

/*  Lien "browse" en bleu */
.upload-link[data-v-d70b4aae] {
  color: #0042FF;
  cursor: pointer;
  text-decoration: underline;
}

/*  Texte supplémentaire */
.upload-info[data-v-d70b4aae] {
  font-size: 12px;
  color: #6b7280;
  margin-top: 5px;
}
[data-v-d70b4aae] .p-fileupload-content {
  display: flex;
  flex-direction: column;
  align-items: center;
}
[data-v-d70b4aae] .p-fileupload-choose {
  display: none;
}
/*:deep(.p-fileupload.p-fileupload-advanced.p-component) {
  width: 70%;
}*/

/*:deep(.p-fileupload .p-fileupload-content) {
  width: 502px;
  margin-left: 100px;
}*/

/*:deep( .p-fileupload .p-fileupload-buttonbar) {
  margin-left: 165px;
}*/
[data-v-d70b4aae] .p-fileupload-buttonbar {
  display: none !important;
}

/* Responsive */
@media (min-width: 768px) and (max-width: 1380px) {
[data-v-d70b4aae] .upload-flow {
    width: 100% !important;
    padding: 0 !important;
}
[data-v-d70b4aae] .table-upload {
    width: 100% !important;
}
}
[data-v-d70b4aae] .p-menu {
  z-index: 9999 !important;
}
[data-v-d70b4aae] .p-column-title {
  color: black !important;
  opacity: 1 !important;
}
[data-v-d70b4aae] .p-column-header-content,[data-v-d70b4aae] .p-column-title,[data-v-d70b4aae] .p-column-header {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: initial !important;
}
[data-v-d70b4aae] .p-datatable-tbody td {
  white-space: normal !important;
}
[data-v-d70b4aae] .p-menuitem-text {
  color: #000000 !important;
}
[data-v-d70b4aae] .p-menu {
  border-radius: 15px !important;
}
[data-v-d70b4aae] p-fileupload.p-fileupload-advanced.p-component {
  width: 80%;
  left: 5%;
  position: relative;
}
[data-v-d70b4aae] .p-inputtext-lg .p-inputtext{
  padding: 0.8rem 0.8rem !important;
}
[data-v-d70b4aae] .p-badge.p-badge-warning {
  background-color: #D8E1EA !important;
}
[data-v-d70b4aae]  .p-fileupload .p-fileupload-file {
  width: 100% !important;
}
[data-v-d70b4aae] .p-fileupload-file img {
  display: none !important;
}
[data-v-d70b4aae] .p-datatable-wrapper {
  margin-top: 0 !important;
}
.dropdown-site[data-v-d70b4aae],
.dropdown-country-iso[data-v-d70b4aae] {
  width: 93%;
}
[data-v-d70b4aae] .p-toast {
  z-index: 99999 !important;
  top: 100px !important;
}
.table-upload[data-v-d70b4aae]{
  margin-bottom: 2em;
}
[data-v-d70b4aae] .p-datepicker {
  width: auto !important;
  max-width: 360px !important;
  box-shadow: 0 2px 10px rgba(0,0,0,0.1);
  border-radius: 12px;
}
[data-v-d70b4aae] .p-datepicker .p-datepicker-group {
  width: 100% !important;
}
[data-v-d70b4aae] .p-datepicker-panel {
  max-width: 360px !important;
}
[data-v-d70b4aae] .p-datepicker .p-datepicker-calendar {
  width: 100% !important;
}
[data-v-d70b4aae] .p-datepicker .p-component {
  max-width: 360px !important;
}
[data-v-d70b4aae] #pv_id_10_panel{
  max-width: 360px !important;
}
.p-tooltip[data-v-d70b4aae] {
  background-color: #333;
  color: white;
  padding: 8px 12px;
  border-radius: 8px;
  font-size: 0.875rem;
  box-shadow: 0px 0px 10px rgba(0,0,0,0.3);
}
.p-tooltip-arrow[data-v-d70b4aae] {
  border-top-color: #333 !important;
}
[data-v-d70b4aae] .p-fileupload.p-fileupload-advanced.p-component {
    width: 90%;
    left: 15%;
    position: relative;
}


/*!**********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./public/assets/vue/OrderDetail.vue?vue&type=style&index=0&id=cc31b15c&scoped=true&lang=css ***!
  \**********************************************************************************************************************************************************************************************************************************************************************************/

.order-wrapper[data-v-cc31b15c] {
  width: 82%;
  margin-left: 20em;
}
.order-title[data-v-cc31b15c] {
  font-size: 28px;
  font-weight: bold;
  color: #263746;
  margin-bottom: 1rem;
}
.order-grid[data-v-cc31b15c] {
  display: flex;
  flex-wrap: wrap;
  gap: 2em;
  margin-bottom: 2em;
}
.order-section h3[data-v-cc31b15c] {
  font-weight: bold;
  margin-bottom: 0.5em;
}
.document-group h4[data-v-cc31b15c] {
  font-weight: bold;
  margin: 0.3em 0;
}
.timeline-step[data-v-cc31b15c] {
  padding-top: 0.5em;
}
.timeline-label[data-v-cc31b15c] {
  font-weight: bold;
}
.timeline-date[data-v-cc31b15c] {
  font-size: 0.9em;
  color: #666;
}
[data-v-cc31b15c] .timeline-marker {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  display: block;
  /*margin: 0 auto;*/
}
.shipped-ok[data-v-cc31b15c] {
  color: #4BDA80;
  font-weight: bold;
}
.shipped-mismatch[data-v-cc31b15c] {
  color: red;
  font-weight: bold;
}
.btn-blue[data-v-cc31b15c] {
  color: white;
  background-color: #2563eb;
  padding: 4px 8px;
  border-radius: 6px;
  display: inline-block;
  text-decoration: none;
  font-weight: 500;
}
.btn-grey[data-v-cc31b15c] {
  color: #111;
  background-color: #e5e7eb;
  padding: 4px 8px;
  border-radius: 6px;
  display: inline-block;
  text-decoration: none;
  font-weight: 500;
}
.timeline-container[data-v-cc31b15c] {
  width: 100%;
  display: flex;
  justify-content: center;
}
[data-v-cc31b15c] .timeline-block .p-timeline {
  flex-grow: 1;
  width: 100%;
}
[data-v-cc31b15c] .timeline-block .p-timeline-event {
  flex: 1 1 0;
  text-align: center;
}
[data-v-cc31b15c] .timeline-block .p-timeline-event-content {
  margin-top: 1em;
}
[data-v-cc31b15c] .timeline-block .p-timeline-event-opposite {
  display: none;
}
[data-v-cc31b15c] .timeline-block .p-timeline-event-connector {
  background-color: #d1d5db;
  height: 2px;
}
.timeline-label[data-v-cc31b15c] {
  font-weight: bold;
  margin-bottom: 0.2em;
}
.timeline-date[data-v-cc31b15c] {
  color: #666;
  font-size: 0.85em;
}
.timeline-step[data-v-cc31b15c] {
  text-align: left;
}
[data-v-cc31b15c] .timeline-connector {
  display: block;
  height: 2px;
  flex-grow: 1;
}
.order-header-grid[data-v-cc31b15c] {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 2rem;
  /*padding: 1rem 0;*/
}
.order-box[data-v-cc31b15c] {
  flex: 1 1 30%;
  padding: 1rem;
 /* background: #f9f9f9;
  border-radius: 8px;*/
}
.order-box h3[data-v-cc31b15c] {
  font-weight: bold;
  text-transform: uppercase;
}
.order-box p[data-v-cc31b15c] {
  margin: 0.5em 0;
  display: grid;
  color: #AAB8DB;
}
.order-box p span[data-v-cc31b15c]{
  color: #2563eb;
  font-size: 1.3rem;
  font-weight: bold;
}
.total-price[data-v-cc31b15c] {
  font-size: 2rem;
  font-weight: bold;
  color: #2563eb!important;
  text-transform: uppercase;
}
.download-pdf-order[data-v-cc31b15c] {
  margin-bottom: 2em;
  border: 1px solid #d1d5db !important;
  border-radius: 12px !important;
}
.product-line-title[data-v-cc31b15c] {
  color: #263746;
}
.product-line-grid[data-v-cc31b15c] {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}
@media (min-width: 768px) {
.product-line-grid[data-v-cc31b15c] {
    grid-template-columns: repeat(2, 1fr);
}
}
.product-line-grid[data-v-cc31b15c] {
  padding: 1em 0 0 5em;
}
/*.product-line-grid > div {
  padding: 1rem;
}*/
.product-line-grid h3[data-v-cc31b15c] {
  font-size: 1.1rem;
  margin-bottom: 0.75rem;
  color: #263746;
}
.p-timeline[data-v-cc31b15c]{
  padding: 2em 0 0 5em;
}
.order-box-right > div[data-v-cc31b15c]:last-child {
  border-top: 1px solid #e5e7eb;
  padding-top: 1rem;
}
@media (min-width: 1024px) {
.product-line-grid[data-v-cc31b15c] {
    grid-template-columns: repeat(3, 1fr);
}
}
.doc-pill[data-v-cc31b15c] {
  display: inline-flex;
  align-items: center;
  padding: 0.4rem 0.8rem;
  border-radius: 20px;
  background-color: #eef2ff;
  color: #1e3a8a;
  font-weight: 500;
  font-size: 0.9rem;
  transition: all 0.2s ease;
  text-decoration: none;
}
.doc-pill[data-v-cc31b15c]:hover {
  background-color: #dbeafe;
}
.doc-button[data-v-cc31b15c] {
@apply inline-flex items-center border border-gray-300 px-4 py-2 rounded-md text-sm font-medium text-gray-700 bg-white hover:bg-gray-50;
}
.doc-button[data-v-cc31b15c] {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 6px 12px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-size: 0.875rem;
  font-weight: 500;
  background-color: #fff;
  color: #2563eb !important;
  transition: background-color 0.2s ease;
  text-decoration: none;
  width: 200px;
  height: 45px;
  margin-right: 10px;
}
.doc-button[data-v-cc31b15c]:hover {
  background-color: #f3f4f6;
}

/*.doc-button i {
  display: inline-block;
  font-family: 'PrimeIcons';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  font-size: 1rem;
}*/
.tracking-top-order[data-v-cc31b15c]{
  position: relative;
  top: -4em;
  width: 105%;
}
.docu-flow-docs-order[data-v-cc31b15c] {
  background-color: #F4F4F4;
  padding: 7px;
  borer-radius: 8px;
  position: relative;
  top: -1em;
}
.docu-flow-docs-order a[data-v-cc31b15c]{
  margin-bottom: 12px;
}
.tracking-top-order a[data-v-cc31b15c] {
  margin-right: 28px !important;
  width: 198px !important;
}
.btn-blue-outline[data-v-cc31b15c] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 10px 18px;
  border: 1px solid #2563eb;
  border-radius: 12px;
  background-color: white;
  color: #2563eb;
  font-weight: 500;
  font-size: 0.9rem;
  transition: all 0.2s ease;
  text-decoration: none;
}
.pi[data-v-cc31b15c]::before {
  font-family: 'PrimeIcons' !important;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  speak: none;
  line-height: 1;
  display: inline-block;
  text-decoration: inherit;
  width: auto;
  height: auto;
  font-size: 1rem; /* ou ajuste */
  margin-right: 0.5rem;
}
.btn-blue-outline[data-v-cc31b15c]:hover {
  background-color: #eff6ff;
}
.product-info[data-v-cc31b15c]{
  width: 266px;
  display: block;
  background-color: #F4F4F4;
  height: 50px;
  padding: 6px 0 2px 15px;
  font-size: 20px;
  border-radius: 8px;
  color: #2563eb;
  font-weight: bold;
}
.price-row[data-v-cc31b15c] {
  position: inherit;
  float: right;
  position: relative;
  top: 7em;
}
.price-row p[data-v-cc31b15c] {
  margin-bottom: -10px!important;
}
.font-bold[data-v-cc31b15c] {
  font-weight: bold;
  font-size: 1.3em;
  text-align: right;
}
.unit-price[data-v-cc31b15c] {
  color: #2563eb;
  font-weight: bold;
  font-size: 1.8em;
}
.p-card[data-v-cc31b15c] {
  border-radius: 10px!important;
}
.order-box span[data-v-cc31b15c] {
  margin-bottom: 1rem;
}
[data-v-cc31b15c] .pi .pi-file-pdf{
  color: red!important;
  font-size: 20px!important;
}
.order-box h3[data-v-cc31b15c] {
  margin-bottom: -1rem;
}
.status-badge[data-v-cc31b15c] {
  display: inline-block;
  padding: 6px 14px;
  border-radius: 12px;
  font-size: 0.9rem;
  font-weight: bold;
  color: white;
  margin-left: 1rem;
  position: relative;
  bottom: 0.3rem;
}
.status-green[data-v-cc31b15c] {
  background-color: #4CAF50; /* vert */
  color: white;
}
.status-yellow[data-v-cc31b15c] {
  background-color: #FFB300; /* jaune/orange */
  color: white;
}
.status-orange[data-v-cc31b15c] {
  background-color: #FB8C00; /* orange plus foncé */
  color: white;
}
.pi[data-v-cc31b15c] {
  font-family: 'PrimeIcons' !important;
  display: inline-block;
  font-style: normal;
  font-weight: normal;
}



/*!******************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./public/assets/vue/components/CustomerReminderInfo.vue?vue&type=style&index=0&id=6f16992c&scoped=true&lang=css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************/

.p-dialog[data-v-6f16992c] {
  border-radius: 12px;
}
.status-header[data-v-6f16992c] {
  display: flex;
  align-items: center;
  gap: 0.8em;
  padding: 0.7em 1em;
  border-radius: 8px;
  font-weight: 600;
  font-size: 14px;
  color: white;
  width: 100%;
}

/* Couleurs des stauts */
.status-1[data-v-6f16992c] { background: #77E2A2;
}
.status-2[data-v-6f16992c] { background: #F6C453;
}
.status-3[data-v-6f16992c] { background: #F6A58D;
}
.status-4[data-v-6f16992c] { background: #F26D75;
}
.status-5[data-v-6f16992c] { background: #720202;
}
.p-accordion-content[data-v-6f16992c] {
  padding: 1em 1.2em;
  font-size: 14px;
  line-height: 1.5;
}
.info-button[data-v-6f16992c] {
  color: #0042FF !important; /* bleu branding */
  font-size: 1.2rem;
  margin-right: 1rem;
}
.info-button[data-v-6f16992c]:hover {
  background: rgba(0, 66, 255, 0.08) !important;
  color: #002bb8 !important;
  transition: 0.2s ease;
}
.p-tooltip[data-v-6f16992c] {
  background: #0042FF !important;   /* bleu branding */
  color: #fff !important;
  font-size: 13px;
  padding: 6px 10px;
  border-radius: 6px;
}
.p-tooltip .p-tooltip-arrow[data-v-6f16992c] {
  border-top-color: #0042FF !important; /* flèche bleue */
}


/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??clonedRuleSet-4.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./public/assets/vue/DocuFlowFinder.vue?vue&type=style&index=0&id=7077ab64&scoped=true&lang=css ***!
  \*************************************************************************************************************************************************************************************************************************************************************************************/

[data-v-7077ab64] .p-tag {
  font-size: 0.8rem;
  padding: 0.25rem 0.5rem;
}
.p-6.bg-white.rounded-xl.shadow-md[data-v-7077ab64] {
  width: 1560px;
  position: relative;
  left: 17%;
  border-radius: 0.75rem;
}

/* Barre de recherche */
.p-input-icon-left input[data-v-7077ab64] {
  border: 2px solid #2563eb; /* Bleu vif */
  border-radius: 10px;
  padding: 0.6rem 1rem;
  font-size: 0.95rem;
  background-color: white;
}

/* Icône de recherche alignée joliment */
.p-input-icon-left > i[data-v-7077ab64] {
  left: 10px;
  color: #2563eb;
  font-size: 1rem;
  top: 50%;
  transform: translateY(-50%);
}

/* Dropdowns (langue, état, date) */
.p-dropdown[data-v-7077ab64] {
  border: 1px solid #d1d5db !important;
  border-radius: 10px !important;
  font-size: 0.95rem;
  padding: 0.2rem 0.5rem;
  background-color: white;
  box-shadow: none;
  min-height: 40px;
}

/* Option sélectionnée */
.p-dropdown-label[data-v-7077ab64] {
  padding-left: 0.5rem;
}

/* Boutons de type (TDS, SDS, ...) */
button.bg-blue-500[data-v-7077ab64] {
  background-color: #0042FF !important;
  color: white !important;
  border-radius: 10px !important;
  font-weight: 500;
  border: none;
  margin-left: 10px;
  width: 8.313rem;
  height: 48px;
}
button.bg-gray-200[data-v-7077ab64] {
  background-color: #FFFFFF !important;
  color: #374151 !important;
  border-radius: 10px !important;
  font-weight: 500;
  border: 1px solid #A3AED0;
  margin-left: 10px;
  width: 9.313rem;
  height: 48px;
}

/* Global container padding */
.p-6.bg-white.rounded-xl.shadow-md[data-v-7077ab64] {
  padding: 2rem;
  border-radius: 1rem;
  background-color: #fff;
}
.button-type[data-v-7077ab64] {
  margin-left: 1.875rem;
}
.filters-finder[data-v-7077ab64] {
  margin-left: 2.5rem;
  margin-bottom: 2rem;
  display: flex;
}
#search[data-v-7077ab64] {
  width: 585px;
  height: 50px;
  border-radius: 12px;
  margin-right: 8rem;
}
#search[data-v-7077ab64]:focus {
  box-shadow: 0 0 0 0.1rem #0042FF!important;
  border-color: #0042FF!important;
}
.reset[data-v-7077ab64] {
  width: 10rem;
  height: 50px;
  border-radius: 8px;
  background-color: #0042FF!important;
}
.p-dialog-content label[data-v-7077ab64]{
  margin-bottom: 0px!important;
  margin-left: 10px;
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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a0I7QUFDcEI7QUFFQTtFQUNFLDBDQUEwQztFQUMxQywrQkFBK0I7QUFDakM7QUFFQTtFQUNFLFlBQVk7RUFDWixZQUFZO0VBQ1osa0JBQWtCO0VBQ2xCLG1DQUFtQztBQUNyQztBQUVBO0VBQ0UsNEJBQTRCO0VBQzVCLGlCQUFpQjtBQUNuQiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3B1YmxpYy9hc3NldHMvdnVlL0Rhc2hib2FyZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcHVibGljL2Fzc2V0cy92dWUvQ3VzdG9tZXIudnVlIiwid2VicGFjazovLy8uL3B1YmxpYy9hc3NldHMvdnVlL0N1c3RvbWVyQ2FyZC52dWUiLCJ3ZWJwYWNrOi8vLy4vcHVibGljL2Fzc2V0cy92dWUvSGlzdG9yaXF1ZS52dWUiLCJ3ZWJwYWNrOi8vLy4vcHVibGljL2Fzc2V0cy92dWUvRG9jdUZsb3dVcGxvYWQudnVlIiwid2VicGFjazovLy8uL3B1YmxpYy9hc3NldHMvdnVlL09yZGVyRGV0YWlsLnZ1ZSIsIndlYnBhY2s6Ly8vLi9wdWJsaWMvYXNzZXRzL3Z1ZS9jb21wb25lbnRzL0N1c3RvbWVyUmVtaW5kZXJJbmZvLnZ1ZSIsIndlYnBhY2s6Ly8vLi9wdWJsaWMvYXNzZXRzL3Z1ZS9Eb2N1Rmxvd0ZpbmRlci52dWUiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWNvbnRhaW5lclwiPlxuXG4gICAgPGhlYWRlciBjbGFzcz1cImRhc2hib2FyZC1oZWFkZXJcIj5cbiAgICAgIDxoMT57eyAkdCgnZGFzaGJvYXJkLndlbGNvbWUnLCB7IGZpcnN0bmFtZTogdXNlci5maXJzdG5hbWUgfSkgfX08L2gxPlxuICAgIDwvaGVhZGVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLXNpdGVcIj5cbiAgICAgIDxNdWx0aVNlbGVjdFxuICAgICAgICAgIHYtbW9kZWw9XCJzZWxlY3RlZFNpdGVcIlxuICAgICAgICAgIDpvcHRpb25zPVwic2l0ZU9wdGlvbnNcIlxuICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgIDpwbGFjZWhvbGRlcj1cIiR0KCdkYXNoYm9hcmQuZmlsdGVyQnlTaXRlJylcIlxuICAgICAgICAgIGRpc3BsYXk9XCJjaGlwXCJcbiAgICAgICAgICBjbGFzcz1cInctZnVsbCBtZDp3LTIwcmVtXCJcbiAgICAgICAgICBAY2hhbmdlPVwib25TaXRlQ2hhbmdlXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLXN1bW1hcnlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY2FyZFwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogIzYzRTNBRDsgY29sb3I6ICMwMzcwMkM7XCI+XG4gICAgICAgIDxoMj57eyAkdCgnZGFzaGJvYXJkLnN0YXR1c2VzLnMxJykgfX08L2gyPlxuICAgICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTogMjRweDsgY29sb3I6IHdoaXRlOyBmb250LXdlaWdodDogYm9sZDsgbWFyZ2luLXJpZ2h0OiAzLjVlbTtcIj57eyBzdGF0dXNDb3VudHNbMV0gfX08L3A+XG4gICAgICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4OyBjb2xvcjogd2hpdGU7IG1hcmdpbi10b3A6IC0yLjhlbTsgbWFyZ2luLWxlZnQ6IDEuNWVtO1wiPnt7ICR0KCdkYXNoYm9hcmQuaW52b2ljZXMnKX19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWNhcmRcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICNGRkM4NUQ7IGNvbG9yOiAjOUY3MzAxO1wiPlxuICAgICAgICA8aDI+e3sgJHQoJ2Rhc2hib2FyZC5zdGF0dXNlcy5zMicpIH19PC9oMj5cbiAgICAgICAgPHAgc3R5bGU9XCJmb250LXNpemU6IDI0cHg7IGNvbG9yOiB3aGl0ZTsgZm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbi1yaWdodDogMy41ZW07XCI+e3sgc3RhdHVzQ291bnRzWzJdIH19PC9wPlxuICAgICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTogMThweDsgY29sb3I6IHdoaXRlOyBtYXJnaW4tdG9wOiAtMi44ZW07IG1hcmdpbi1sZWZ0OiAxLjVlbTtcIj57eyAkdCgnZGFzaGJvYXJkLmludm9pY2VzJyl9fTwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1jYXJkXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjRkZBNTdFOyBjb2xvcjogIzg1MkYwQjtcIj5cbiAgICAgICAgPGgyPnt7ICR0KCdkYXNoYm9hcmQuc3RhdHVzZXMuczMnKSB9fTwvaDI+XG4gICAgICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOiAyNHB4OyBjb2xvcjogd2hpdGU7IGZvbnQtd2VpZ2h0OiBib2xkOyBtYXJnaW4tcmlnaHQ6IDMuNWVtO1wiPnt7IHN0YXR1c0NvdW50c1szXSB9fTwvcD5cbiAgICAgICAgPHAgc3R5bGU9XCJmb250LXNpemU6IDE4cHg7IGNvbG9yOiB3aGl0ZTsgbWFyZ2luLXRvcDogLTIuOGVtOyBtYXJnaW4tbGVmdDogMS41ZW07XCI+e3sgJHQoJ2Rhc2hib2FyZC5pbnZvaWNlcycpfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY2FyZFwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI0ZGNjc3MTsgY29sb3I6ICM4RjEzMTM7XCI+XG4gICAgICAgIDxoMj57eyAkdCgnZGFzaGJvYXJkLnN0YXR1c2VzLnM0JykgfX08L2gyPlxuICAgICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTogMjRweDsgY29sb3I6IHdoaXRlOyBmb250LXdlaWdodDogYm9sZDsgbWFyZ2luLXJpZ2h0OiAzLjVlbTtcIj57eyBzdGF0dXNDb3VudHNbNF0gfX08L3A+XG4gICAgICAgIDxwIHN0eWxlPVwiZm9udC1zaXplOiAxOHB4OyBjb2xvcjogd2hpdGU7IG1hcmdpbi10b3A6IC0yLjhlbTsgbWFyZ2luLWxlZnQ6IDEuNWVtO1wiPnt7ICR0KCdkYXNoYm9hcmQuaW52b2ljZXMnKX19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWNhcmRcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6ICM4NzAwMDA7IGNvbG9yOiAjRkZGRkZGO1wiPlxuICAgICAgICA8aDI+e3sgJHQoJ2Rhc2hib2FyZC5zdGF0dXNlcy5zNScpIH19PC9oMj5cbiAgICAgICAgPHAgc3R5bGU9XCJmb250LXNpemU6IDI0cHg7IGNvbG9yOiB3aGl0ZTsgZm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbi1yaWdodDogMy41ZW07XCI+e3sgc3RhdHVzQ291bnRzWzVdIH19PC9wPlxuICAgICAgICA8cCBzdHlsZT1cImZvbnQtc2l6ZTogMThweDsgY29sb3I6IHdoaXRlOyBtYXJnaW4tdG9wOiAtMi44ZW07IG1hcmdpbi1sZWZ0OiAxLjVlbTtcIj57eyAkdCgnZGFzaGJvYXJkLmludm9pY2VzJyl9fTwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNoYXJ0cy1yb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj5cbiAgICAgICAgPGgzPnt7ICR0KCdkYXNoYm9hcmQuY2hhcnRzLmJhclRpdGxlJykgfX08L2gzPlxuICAgICAgICA8Q2hhcnQgdHlwZT1cImJhclwiIDpkYXRhPVwiYmFyQ2hhcnREYXRhXCIgOm9wdGlvbnM9XCJiYXJDaGFydE9wdGlvbnNcIiBjbGFzcz1cImJhci1jaGFydFwiIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNoYXJ0LWNvbnRhaW5lclwiPlxuICAgICAgICA8aDM+e3sgJHQoJ2Rhc2hib2FyZC5jaGFydHMuZG9udXRUaXRsZScpIH19PC9oMz5cbiAgICAgICAgPENoYXJ0IHR5cGU9XCJkb3VnaG51dFwiIDpkYXRhPVwiY2hhcnREYXRhXCIgOm9wdGlvbnM9XCJjaGFydE9wdGlvbnNcIiBjbGFzcz1cImRvbnV0LWNoYXJ0XCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInRhYmxlLWludm9pY2VzXCI+XG4gICAgICA8aDU+XG4gICAgICAgIHt7ICR0KCdkYXNoYm9hcmQuaW52b2ljZXNUaXRsZScpIH19XG4gICAgICAgIDxEcm9wZG93blxuICAgICAgICAgICAgdi1tb2RlbD1cInNlbGVjdGVkU3RhdHV0XCJcbiAgICAgICAgICAgIDpvcHRpb25zPVwiYWxsU3RhdHVzZXNcIlxuICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICA6cGxhY2Vob2xkZXI9XCIkdCgnZGFzaGJvYXJkLmNvbHVtbnMuc3RhdHVzJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJmaWx0ZXJTdGF0dXMgZmlsdGVyU3RhdHVzRGFzaGJvYXJkXCJcbiAgICAgICAgICAgIDpjbGFzcz1cIidzdGF0dXMtJyArIHNlbGVjdGVkU3RhdHV0LnZhbHVlXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjdmFsdWU9XCJzbG90UHJvcHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtb3B0aW9uXCIgOnN0eWxlPVwieyBiYWNrZ3JvdW5kQ29sb3I6IGdldFN0YXR1c0NvbG9yKHNsb3RQcm9wcy52YWx1ZS52YWx1ZSkgfVwiPlxuICAgICAgICAgICAgICB7eyBzbG90UHJvcHMudmFsdWUubGFiZWwgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPHRlbXBsYXRlICNvcHRpb249XCJzbG90UHJvcHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtb3B0aW9uXCIgOnN0eWxlPVwieyBiYWNrZ3JvdW5kQ29sb3I6IGdldFN0YXR1c0NvbG9yKHNsb3RQcm9wcy5vcHRpb24udmFsdWUpIH1cIj5cbiAgICAgICAgICAgICAge3sgc2xvdFByb3BzLm9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9Ecm9wZG93bj5cbiAgICAgIDwvaDU+XG5cbiAgICAgIDxicj48YnI+PGJyPlxuICAgICAgPHAgdi1pZj1cImxvYWRpbmdcIj57eyAkdCgnZGFzaGJvYXJkLmxvYWRpbmcnKSB9fTwvcD5cblxuICAgICAgPERhdGFUYWJsZSA6dmFsdWU9XCJpbnZvaWNlc1wiIDpwYWdpbmF0b3I9XCJmYWxzZVwiIDpyb3dzPVwiNFwiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIj5cbiAgICAgICAgPENvbHVtbiBmaWVsZD1cImludm9pY2VJZFwiIDpoZWFkZXI9XCIkdCgnZGFzaGJvYXJkLmNvbHVtbnMuaW52b2ljZUlkJylcIiAvPlxuICAgICAgICA8Q29sdW1uIGZpZWxkPVwiY3VzdG9tZXJJZFwiIDpoZWFkZXI9XCIkdCgnZGFzaGJvYXJkLmNvbHVtbnMuY3VzdG9tZXJJZCcpXCIgLz5cbiAgICAgICAgPENvbHVtbiBmaWVsZD1cImNvbXBhbnlOYW1lXCIgOmhlYWRlcj1cIiR0KCdkYXNoYm9hcmQuY29sdW1ucy5jb21wYW55TmFtZScpXCIgLz5cbiAgICAgICAgPENvbHVtbiBmaWVsZD1cImludm9pY2VEYXRlXCIgOmhlYWRlcj1cIiR0KCdkYXNoYm9hcmQuY29sdW1ucy5pbnZvaWNlRGF0ZScpXCIgLz5cbiAgICAgICAgPENvbHVtbiBmaWVsZD1cImR1ZURhdGVcIiA6aGVhZGVyPVwiJHQoJ2Rhc2hib2FyZC5jb2x1bW5zLmR1ZURhdGUnKVwiIC8+XG4gICAgICAgIDxDb2x1bW4gZmllbGQ9XCJsYXN0UmVtaW5kZXJcIiA6aGVhZGVyPVwiJHQoJ2Rhc2hib2FyZC5jb2x1bW5zLmxhc3RSZW1pbmRlcicpXCI+XG4gICAgICAgICAgPHRlbXBsYXRlICNib2R5PVwic2xvdFByb3BzXCI+XG4gICAgICAgICAgICB7eyBmb3JtYXREYXRlKHNsb3RQcm9wcy5kYXRhLmxhc3RSZW1pbmRlcikgfX1cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L0NvbHVtbj5cbiAgICAgICAgPENvbHVtbiBmaWVsZD1cImRheXNPZkRlbGF5c1wiIDpoZWFkZXI9XCIkdCgnZGFzaGJvYXJkLmNvbHVtbnMuZGF5c09mRGVsYXlzJylcIj5cbiAgICAgICAgICA8dGVtcGxhdGUgI2JvZHk9XCJzbG90UHJvcHNcIj5cbiAgICAgICAgICAgIHt7IHNsb3RQcm9wcy5kYXRhLmRheXNPZkRlbGF5cyB9fSB7eyAkdCgnZGFzaGJvYXJkLmRheXMnKSB9fVxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvQ29sdW1uPlxuICAgICAgICA8Q29sdW1uIDpoZWFkZXI9XCIkdCgnZGFzaGJvYXJkLmNvbHVtbnMuc3RhdHVzJylcIj5cbiAgICAgICAgICA8dGVtcGxhdGUgI2JvZHk9XCJzbG90UHJvcHNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RhdHVzLWJhZGdlXCJcbiAgICAgICAgICAgICAgICAgIDpzdHlsZT1cInsgYmFja2dyb3VuZENvbG9yOiBmb3JtYXRTdGF0dXMoc2xvdFByb3BzLmRhdGEuc3RhdHVzKS5iYWNrZ3JvdW5kQ29sb3IsIGNvbG9yOiBmb3JtYXRTdGF0dXMoc2xvdFByb3BzLmRhdGEuc3RhdHVzKS5jb2xvciB9XCI+XG4gICAgICAgICAgICAgIHt7IGZvcm1hdFN0YXR1cyhzbG90UHJvcHMuZGF0YS5zdGF0dXMpLmxhYmVsIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9Db2x1bW4+XG4gICAgICAgIDxDb2x1bW4gZmllbGQ9XCJ0b3RhbEFtb3VudFRheEV4Y2xJbnZvaWNlXCIgOmhlYWRlcj1cIiR0KCdkYXNoYm9hcmQuY29sdW1ucy50b3RhbCcpXCIgc3R5bGU9XCJmb250LXdlaWdodDogYm9sZFwiIC8+XG4gICAgICA8L0RhdGFUYWJsZT5cblxuICAgICAgPHAgQGNsaWNrPVwiZ29Ub0ludm9pY2VzXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHJpZ2h0OyBtYXJnaW4tcmlnaHQ6IDEuNWVtOyBjdXJzb3I6IHBvaW50ZXI7XCI+XG4gICAgICAgIHt7ICR0KCdkYXNoYm9hcmQuc2VlQWxsJykgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IERhdGFUYWJsZSBmcm9tICdwcmltZXZ1ZS9kYXRhdGFibGUnO1xuaW1wb3J0IENvbHVtbiBmcm9tICdwcmltZXZ1ZS9jb2x1bW4nO1xuaW1wb3J0IENoYXJ0IGZyb20gJ3ByaW1ldnVlL2NoYXJ0JztcbmltcG9ydCBEcm9wZG93biBmcm9tIFwicHJpbWV2dWUvZHJvcGRvd25cIjtcbmltcG9ydCBNdWx0aVNlbGVjdCBmcm9tICdwcmltZXZ1ZS9tdWx0aXNlbGVjdCc7XG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnRGFzaGJvYXJkJyxcbiAgY29tcG9uZW50czogeyBEYXRhVGFibGUsIENvbHVtbiwgQ2hhcnQsIERyb3Bkb3duLE11bHRpU2VsZWN0IH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgICBpbnZvaWNlczogW10sXG4gICAgICBzdGF0dXNDb3VudHM6IHsgMTogMCwgMjogMCwgMzogMCwgNDogMCwgNTogMCB9LFxuICAgICAgdXNlcjogeyBmaXJzdG5hbWU6ICcnLCBsYXN0bmFtZTogJycsIGVtYWlsOiAnJyB9LFxuICAgICAgY2hhcnREYXRhOiBudWxsLFxuICAgICAgY2hhcnRPcHRpb25zOiBudWxsLFxuICAgICAgYmFyQ2hhcnREYXRhOiBudWxsLFxuICAgICAgYmFyQ2hhcnRPcHRpb25zOiBudWxsLFxuICAgICAgc2VsZWN0ZWRTdGF0dXQ6IHsgbGFiZWw6ICdTdGF0dXQgMCcsIHZhbHVlOiAnMCcgfSxcbiAgICAgIHNlbGVjdGVkU2l0ZTogbnVsbCxcbiAgICAgIHNpdGVPcHRpb25zOiBbXG4gICAgICAgIHsgbGFiZWw6ICdHbG9iYWwnLCB2YWx1ZTogbnVsbCB9LFxuICAgICAgICB7IGxhYmVsOiAnQTA2JywgdmFsdWU6ICdBMDYnIH0sXG4gICAgICAgIHsgbGFiZWw6ICdBMDcnLCB2YWx1ZTogJ0EwNycgfSxcbiAgICAgICAgeyBsYWJlbDogJ0UwMScsIHZhbHVlOiAnRTAxJyB9LFxuICAgICAgICB7IGxhYmVsOiAnRTA1JywgdmFsdWU6ICdFMDUnIH0sXG4gICAgICAgIHsgbGFiZWw6ICdYMDEnLCB2YWx1ZTogJ1gwMScgfSxcbiAgICAgICAgeyBsYWJlbDogJ1gwMicsIHZhbHVlOiAnWDAyJyB9LFxuICAgICAgICB7IGxhYmVsOiAnSzAxJywgdmFsdWU6ICdLMDEnIH0sXG4gICAgICAgIHsgbGFiZWw6ICdOMDEnLCB2YWx1ZTogJ04wMScgfSxcbiAgICAgICAgeyBsYWJlbDogJ1AwMScsIHZhbHVlOiAnUDAxJyB9XG4gICAgICBdLFxuICAgICAgc3RhdHVzQ29sb3JzOiB7XG4gICAgICAgICcwJzogJyM2M0UzQUQnLCAnMSc6ICcjNjNFM0FEJywgJzInOiAnI0ZGQzg1RCcsICczJzogJyNGRkE1N0UnLFxuICAgICAgICAnNCc6ICcjRkY2NzcxJywgJzUnOiAnIzg3MDAwMCcsICc2JzogJyMwMDAwMDAnLCAnNyc6ICcjMDAwMDAwJ1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIHdhdGNoOiB7XG4gICAgc2VsZWN0ZWRTdGF0dXQobmV3VmFsKSB7XG4gICAgICB0aGlzLmZldGNoSW52b2ljZXMobmV3VmFsLnZhbHVlKTtcbiAgICB9LFxuICAgIHNlbGVjdGVkU2l0ZToge1xuICAgICAgaGFuZGxlcihuZXdWYWwpIHtcbiAgICAgICAgdGhpcy5mZXRjaEludm9pY2VzKHRoaXMuc2VsZWN0ZWRTdGF0dXQudmFsdWUpO1xuICAgICAgICB0aGlzLmxvYWRTdGF0dXNDb3VudHMoKTtcbiAgICAgICAgdGhpcy5sb2FkSW52b2ljZVN1bXMoKTtcbiAgICAgIH0sXG4gICAgICBkZWVwOiB0cnVlXG4gICAgfVxuICB9LFxuICBtb3VudGVkKCkge1xuICAgIHRoaXMuZmV0Y2hVc2VyKCk7XG4gICAgdGhpcy5mZXRjaEludm9pY2VzKCk7XG4gICAgdGhpcy5sb2FkU3RhdHVzQ291bnRzKCk7XG4gICAgdGhpcy5sb2FkSW52b2ljZVN1bXMoKTtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHBEYXNoYm9hcmQnKTtcbiAgICBpZiAoZWwpIHtcbiAgICAgIHRoaXMuJGkxOG4ubG9jYWxlID0gZWwuZGF0YXNldC5sb2NhbGUgfHwgJ2ZyJztcbiAgICAgIHRoaXMuaW52b2ljZXMgPSBKU09OLnBhcnNlKGVsLmRhdGFzZXQuaW52b2ljZXMpO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIG9uU2l0ZUNoYW5nZSgpIHtcbiAgICAgIHRoaXMuZmV0Y2hJbnZvaWNlcyh0aGlzLnNlbGVjdGVkU3RhdHV0LnZhbHVlKTtcbiAgICAgIHRoaXMubG9hZFN0YXR1c0NvdW50cygpO1xuICAgICAgdGhpcy5sb2FkSW52b2ljZVN1bXMoKTtcbiAgICB9LFxuICAgIGdvVG9JbnZvaWNlcygpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYC9pbnZvaWNlYDtcbiAgICB9LFxuICAgIGdldFN0YXR1c0NvbG9yKHN0YXR1cykge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzQ29sb3JzW3N0YXR1c10gfHwgJyMwMDAwMDAnO1xuICAgIH0sXG4gICAgZm9ybWF0RGF0ZShkYXRlKSB7XG4gICAgICBpZiAoIWRhdGUpIHJldHVybiAnQXVjdW5lIHJlbGFuY2UnO1xuICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpLnRvTG9jYWxlRGF0ZVN0cmluZygnZnItQ0EnKTtcbiAgICB9LFxuICAgIGFzeW5jIGZldGNoSW52b2ljZXMoc3RhdHVzID0gJzAnKSB7XG4gICAgICBjb25zdCBzaXRlUGFyYW1zID0gdGhpcy5zZWxlY3RlZFNpdGUgJiYgdGhpcy5zZWxlY3RlZFNpdGUubGVuZ3RoID4gMFxuICAgICAgICAgID8gdGhpcy5zZWxlY3RlZFNpdGUubWFwKHMgPT4gcy52YWx1ZSkuam9pbignLCcpXG4gICAgICAgICAgOiAnJztcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXhpb3MuZ2V0KGAvYXBpL2ludm9pY2VzRGFzaGJvYXJkP3N0YXR1cz0ke3N0YXR1c30mc2l0ZT0ke3NpdGVQYXJhbXN9YCk7XG4gICAgICAgIHRoaXMuaW52b2ljZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyZXVyIGxvcnMgZGUgbGEgcsOpY3Vww6lyYXRpb24gZGVzIGZhY3R1cmVzJywgZXJyb3IpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGxvYWRTdGF0dXNDb3VudHMoKSB7XG4gICAgICBjb25zdCBzaXRlUGFyYW0gPSB0aGlzLnNlbGVjdGVkU2l0ZSAmJiB0aGlzLnNlbGVjdGVkU2l0ZS5sZW5ndGggPiAwXG4gICAgICAgICAgPyBgP3NpdGU9JHt0aGlzLnNlbGVjdGVkU2l0ZS5tYXAocyA9PiBzLnZhbHVlKS5qb2luKCcsJyl9YFxuICAgICAgICAgIDogJyc7XG4gICAgICBheGlvcy5nZXQoYC9hcGkvc3RhdHVzLXN1bSR7c2l0ZVBhcmFtfWApXG4gICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGF0dXNDb3VudHMgPSB7IDE6IDAsIDI6IDAsIDM6IDAsIDQ6IDAsIDU6IDAgfTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW3N0YXR1cywgY291bnRdIG9mIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmRhdGEpKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnN0YXR1c0NvdW50cy5oYXNPd25Qcm9wZXJ0eShzdGF0dXMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0dXNDb3VudHNbc3RhdHVzXSA9IGNvdW50O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoYXJ0RGF0YSA9IHRoaXMuc2V0Q2hhcnREYXRhKHRoaXMuc3RhdHVzQ291bnRzKTtcbiAgICAgICAgICAgIHRoaXMuY2hhcnRPcHRpb25zID0gdGhpcy5zZXRDaGFydE9wdGlvbnMoKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJldXIgbG9ycyBkZSBsYSByw6ljdXDDqXJhdGlvbiBkZXMgc29tbWVzIHBhciBzdGF0dXQgOicsIGVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgbG9hZEludm9pY2VTdW1zKCkge1xuICAgICAgY29uc3Qgc2l0ZVBhcmFtID0gdGhpcy5zZWxlY3RlZFNpdGUgJiYgdGhpcy5zZWxlY3RlZFNpdGUubGVuZ3RoID4gMFxuICAgICAgICAgID8gYD9zaXRlPSR7dGhpcy5zZWxlY3RlZFNpdGUubWFwKHMgPT4gcy52YWx1ZSkuam9pbignLCcpfWBcbiAgICAgICAgICA6ICcnO1xuICAgICAgYXhpb3MuZ2V0KGAvYXBpL2ludm9pY2Utc3VtJHtzaXRlUGFyYW19YClcbiAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJhckNoYXJ0RGF0YSA9IHRoaXMuc2V0QmFyQ2hhcnREYXRhKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgdGhpcy5iYXJDaGFydE9wdGlvbnMgPSB0aGlzLnNldEJhckNoYXJ0T3B0aW9ucygpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGludm9pY2Ugc3VtczonLCBlcnJvcik7XG4gICAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qd2F0Y2g6IHtcbiAgICAgIHNlbGVjdGVkU3RhdHV0KG5ld1ZhbHVlKSB7XG4gICAgICAgIHRoaXMuZmV0Y2hJbnZvaWNlcyhuZXdWYWx1ZS52YWx1ZSk7XG4gICAgICB9LFxuICAgICAgc2VsZWN0ZWRTaXRlOiB7XG4gICAgICAgIGhhbmRsZXIobmV3VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmxvYWRTdGF0dXNDb3VudHMoKTtcbiAgICAgICAgICB0aGlzLmxvYWRJbnZvaWNlU3VtcygpO1xuICAgICAgICAgIHRoaXMuZmV0Y2hJbnZvaWNlcyh0aGlzLnNlbGVjdGVkU3RhdHV0LnZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZGVlcDogdHJ1ZVxuICAgICAgfVxuICAgIH0sKi9cblxuXG4gICAgc2V0Q2hhcnREYXRhKGNvdW50cykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGFiZWxzOiBbJ1N0YXR1dCAxJywgJ1N0YXR1dCAyJywgJ1N0YXR1dCAzJywgJ1N0YXR1dCA0JywgJ1N0YXR1dCA1J10sXG4gICAgICAgIGRhdGFzZXRzOiBbe1xuICAgICAgICAgIGRhdGE6IFtjb3VudHNbMV0sIGNvdW50c1syXSwgY291bnRzWzNdLCBjb3VudHNbNF0sIGNvdW50c1s1XV0sXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBbJyM2M0UzQUQnLCcjRkZDODVEJywnI0ZGQTU3RScsJyNGRjY3NzEnLCcjODcwMDAwJ10sXG4gICAgICAgICAgaG92ZXJCYWNrZ3JvdW5kQ29sb3I6IFsnIzYzRTNBRCcsJyNGRkM4NUQnLCcjRkZBNTdFJywnI0ZGNjc3MScsJyM4NzAwMDAnXVxuICAgICAgICB9XVxuICAgICAgfTtcbiAgICB9LFxuICAgIHNldENoYXJ0T3B0aW9ucygpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXG4gICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgICBwbHVnaW5zOiB7XG4gICAgICAgICAgbGVnZW5kOiB7IGxhYmVsczogeyBjb2xvcjogJyMwMDAwMDAnIH0gfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0sXG4gICAgc2V0QmFyQ2hhcnREYXRhKHN1bXMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxhYmVsczogWydOb24gw4ljaHVlcycsICfDiWNodWVzJywgJ1RvdGFsJ10sXG4gICAgICAgIGRhdGFzZXRzOiBbe1xuICAgICAgICAgIGxhYmVsOiAnTW9udGFudCBUb3RhbCAo4oKsKScsXG4gICAgICAgICAgZGF0YTogW3N1bXMubm9uX2VjaHVlcywgc3Vtcy5lY2h1ZXMsIHN1bXMudG90YWxdLFxuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogWycjMzZBMkVCJywgJyNGRjYzODQnLCAnI0ZGQ0U1NiddXG4gICAgICAgIH1dXG4gICAgICB9O1xuICAgIH0sXG4gICAgc2V0QmFyQ2hhcnRPcHRpb25zKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXG4gICAgICAgIHNjYWxlczoge1xuICAgICAgICAgIHg6IHsgdGlja3M6IHsgY29sb3I6ICcjMDAwMDAwJyB9LCBncmlkOiB7IGNvbG9yOiAnI0NDQ0NDQycgfSB9LFxuICAgICAgICAgIHk6IHsgdGlja3M6IHsgY29sb3I6ICcjMDAwMDAwJyB9LCBncmlkOiB7IGNvbG9yOiAnI0NDQ0NDQycgfSB9XG4gICAgICAgIH0sXG4gICAgICAgIHBsdWdpbnM6IHtcbiAgICAgICAgICBsZWdlbmQ6IHsgbGFiZWxzOiB7IGNvbG9yOiAnIzAwMDAwMCcgfSB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfSxcbiAgICBmb3JtYXRTdGF0dXMoc3RhdHVzKSB7XG4gICAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAgIDA6IHsgbGFiZWw6ICdTVEFUVVQgMCcsIGJhY2tncm91bmRDb2xvcjogJyM2M0UzQUQnLCBjb2xvcjogJyNGRkZGRkYnIH0sXG4gICAgICAgIDE6IHsgbGFiZWw6ICdTVEFUVVQgMScsIGJhY2tncm91bmRDb2xvcjogJyM2M0UzQUQnLCBjb2xvcjogJyNGRkZGRkYnIH0sXG4gICAgICAgIDI6IHsgbGFiZWw6ICdTVEFUVVQgMicsIGJhY2tncm91bmRDb2xvcjogJyNGRkM4NUQnLCBjb2xvcjogJyNGRkZGRkYnIH0sXG4gICAgICAgIDM6IHsgbGFiZWw6ICdTVEFUVVQgMycsIGJhY2tncm91bmRDb2xvcjogJyNGRkE1N0UnLCBjb2xvcjogJyNGRkZGRkYnIH0sXG4gICAgICAgIDQ6IHsgbGFiZWw6ICdTVEFUVVQgNCcsIGJhY2tncm91bmRDb2xvcjogJyNGRjY3NzEnLCBjb2xvcjogJyNGRkZGRkYnIH0sXG4gICAgICAgIDU6IHsgbGFiZWw6ICdTVEFUVVQgNScsIGJhY2tncm91bmRDb2xvcjogJyM4NzAwMDAnLCBjb2xvcjogJyNGRkZGRkYnIH0sXG4gICAgICAgIDY6IHsgbGFiZWw6ICdTVEFUVVQgNicsIGJhY2tncm91bmRDb2xvcjogJyMwMDAwMDAnLCBjb2xvcjogJyNGRkZGRkYnIH0sXG4gICAgICAgIDc6IHsgbGFiZWw6ICdTVEFUVVQgNycsIGJhY2tncm91bmRDb2xvcjogJyMwMDAwMDAnLCBjb2xvcjogJyNGRkZGRkYnIH0sXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGNvbmZpZ1tzdGF0dXNdIHx8IHsgbGFiZWw6ICdTdGF0dXQgaW5jb25udScsIGJhY2tncm91bmRDb2xvcjogJyNDQ0NDQ0MnLCBjb2xvcjogJyMwMDAwMDAnIH07XG4gICAgfSxcbiAgICBhc3luYyBmZXRjaFVzZXIoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGF4aW9zLmdldCgnL2FwaS91c2VyJyk7XG4gICAgICAgIHRoaXMudXNlciA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJldXIgbG9ycyBkZSBsYSByw6ljdXDDqXJhdGlvbiBkZSBs4oCZdXRpbGlzYXRldXIgY29ubmVjdMOpIDonLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuPC9zY3JpcHQ+XG5cblxuPHN0eWxlIHNjb3BlZD5cbi5kYXNoYm9hcmQtY29udGFpbmVyIHtcbiAgcGFkZGluZzogMjBweDtcbn1cblxuLmRhc2hib2FyZC1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4uc3RhdHVzLXN1bW1hcnkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDEwcHg7XG4gIG1hcmdpbi1ib3R0b206IDNlbTtcbn1cblxuLnN0YXR1cy1jYXJkIHtcbiAgZmxleDogMTtcbiAgcGFkZGluZzogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4uc3RhdHVzLWNhcmQgaDIge1xuICBmb250LXNpemU6IDE4cHg7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmNoYXJ0cy1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDIwcHg7XG59XG5cbi5jaGFydC1jb250YWluZXIge1xuICBmbGV4OiAxO1xuICBwYWRkaW5nOiAyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLmRvbnV0LWNoYXJ0LFxuLmJhci1jaGFydCB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDMwMHB4O1xufVxuXG4udGFibGUtaW52b2ljZXMge1xuICBtYXJnaW4tdG9wOiAyMHB4O1xufVxuXG4uc3RhdHVzLWxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VmNDc2ZjtcbiAgcGFkZGluZzogMnB4IDhweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLnRhYmxlLWludm9pY2VzIGg1IHtcbiAgbWFyZ2luOiAxZW0gMCAtNmVtIDA7XG59XG5cbi5zdGF0dXMtb3B0aW9uIHtcbiAgcGFkZGluZzogMC41cmVtO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogNTAwO1xuICB3aWR0aDogMTAwJTtcbn1cblxuOmRlZXAoLnAtZHJvcGRvd24pIHtcbiAgbWluLXdpZHRoOiAxNTBweDtcbn1cblxuOmRlZXAoLnAtZHJvcGRvd24tcGFuZWwgLnAtZHJvcGRvd24taXRlbXMpIHtcbiAgcGFkZGluZzogMC41cmVtO1xufVxuXG46ZGVlcCgucC1kcm9wZG93bi1wYW5lbCAucC1kcm9wZG93bi1pdGVtKSB7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAwLjJyZW0gMDtcbn1cblxuOmRlZXAoLnAtZHJvcGRvd24tcGFuZWwgLnAtZHJvcGRvd24taXRlbXMgLnAtZHJvcGRvd24taXRlbS5wLWhpZ2hsaWdodCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG46ZGVlcCgucC1kcm9wZG93bi1wYW5lbCAucC1kcm9wZG93bi1pdGVtcyAucC1kcm9wZG93bi1pdGVtOmhvdmVyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSAhaW1wb3J0YW50O1xufVxuXG5cbjpkZWVwKC5wLWRyb3Bkb3duOm5vdCgucC1kaXNhYmxlZCkucC1mb2N1cykge1xuICBib3gtc2hhZG93OiBub25lO1xuICBib3JkZXItY29sb3I6ICNkZWUyZTY7XG59XG5cbjpkZWVwKC5wLWRyb3Bkb3duIC5wLWRyb3Bkb3duLWxhYmVsKSB7XG4gIHBhZGRpbmc6IDA7XG59XG5cbjpkZWVwKC5wLWRyb3Bkb3duLXBhbmVsKSB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4uZmlsdGVyU3RhdHVzRGFzaGJvYXJkIHtcbiAgOmRlZXAoLnAtZHJvcGRvd24tdHJpZ2dlcikge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxufVxuXG4vKjpkZWVwKC5wLWRyb3Bkb3duLWl0ZW0pLFxuOmRlZXAoLnAtZHJvcGRvd24tbGFiZWwpLFxuOmRlZXAoLnN0YXR1cy1vcHRpb24pIHtcbiAgY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDtcbn0qL1xuXG4uc3RhdHVzLWJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAwLjNlbSAwLjZlbTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtaW4td2lkdGg6IDgwcHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cblxuLmRyb3Bkb3duLXNpdGUge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICBjb2xvcjogIzAwMDAwMCFpbXBvcnRhbnQ7XG59XG5cbjpkZWVwKC5kcm9wZG93bi1zaXRlICNwdl9pZF8xKXtcbiAgYm9yZGVyOiAxcHggc29saWQgZ3JheTtcbiAgcGFkZGluZzogMTBweDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG46ZGVlcCgucC1kcm9wZG93bil7XG4gIGNvbG9yOiAjMDAwMDAwIWltcG9ydGFudDtcbiAgcGFkZGluZzogMTBweDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZpbHRlcnMgZmlsdGVyQ3VzdG9tZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaDFDdXN0b21lclwiPjxoMT57eyAkdCgnY3VzdG9tZXJMaXN0Lmxpc3RUaXRsZScpIH19PC9oMT48L2Rpdj5cblxuICAgIDxEcm9wZG93blxuICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRTaXRlXCJcbiAgICAgICAgOm9wdGlvbnM9XCJzaXRlQWRkZXZXaXRoQWxsXCJcbiAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgIDpwbGFjZWhvbGRlcj1cIiR0KCdjdXN0b21lckxpc3QuZmlsdGVycy5zaXRlJylcIlxuICAgICAgICBjbGFzcz1cImZpbHRlclNpdGUgZmlsdGVyXCJcbiAgICAvPlxuICAgIDxEcm9wZG93blxuICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRDbGllbnRUeXBlXCJcbiAgICAgICAgOm9wdGlvbnM9XCJhbGxUeXBlc1wiXG4gICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICA6cGxhY2Vob2xkZXI9XCIkdCgnY3VzdG9tZXJMaXN0LmZpbHRlcnMudHlwZScpXCJcbiAgICAgICAgY2xhc3M9XCJmaWx0ZXJcIlxuICAgIC8+XG4gICAgPElucHV0VGV4dFxuICAgICAgICB2LW1vZGVsPVwiZ2xvYmFsRmlsdGVyXCJcbiAgICAgICAgOnBsYWNlaG9sZGVyPVwiJHQoJ2N1c3RvbWVyTGlzdC5maWx0ZXJzLnNlYXJjaCcpXCJcbiAgICAgICAgY2xhc3M9XCJmaWx0ZXJcIlxuICAgIC8+XG4gICAgPEJ1dHRvblxuICAgICAgICA6bGFiZWw9XCIkdCgnY3VzdG9tZXJMaXN0LmV4cG9ydCcpXCJcbiAgICAgICAgaWNvbj1cInBpIHBpLWZpbGVcIlxuICAgICAgICBAY2xpY2s9XCJleHBvcnRFeGNlbFwiXG4gICAgICAgIGNsYXNzPVwiZmlsdGVyIGV4cG9ydEJ0bkN1c3RvbWVyXCJcbiAgICAvPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNhcmRDdXN0b21lclwiPlxuICAgIDxkaXYgdi1pZj1cImxvYWRpbmdcIiBjbGFzcz1cImxvYWRpbmctY29udGFpbmVyXCI+XG4gICAgICA8UHJvZ3Jlc3NTcGlubmVyIC8+XG4gICAgICA8cD5DaGFyZ2VtZW50IGRlcyBjbGllbnRzLi4uPC9wPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgdi1lbHNlPlxuICAgICAgPERhdGFUYWJsZVxuICAgICAgICAgIDp2YWx1ZT1cInVuaXF1ZUN1c3RvbWVyc1wiXG4gICAgICAgICAgcGFnaW5hdG9yXG4gICAgICAgICAgcGFnaW5hdG9yVGVtcGxhdGU9XCJSb3dzUGVyUGFnZURyb3Bkb3duIEZpcnN0UGFnZUxpbmsgUHJldlBhZ2VMaW5rIEN1cnJlbnRQYWdlUmVwb3J0IE5leHRQYWdlTGluayBMYXN0UGFnZUxpbmtcIlxuICAgICAgICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IHRvIHtsYXN0fSBvZiB7dG90YWxSZWNvcmRzfVwiXG4gICAgICAgICAgOnJvd3M9XCJyb3dzXCJcbiAgICAgICAgICA6cm93c1BlclBhZ2VPcHRpb25zPVwiWzEwLCA1MCwxMDAsIDIwMF1cIlxuICAgICAgICAgIHRhYmxlU3R5bGU9XCJtaW4td2lkdGg6IDUwcmVtXCJcbiAgICAgICAgICBAcm93LWNsaWNrPVwiZ29Ub0N1c3RvbWVyRGV0YWlsc1wiXG4gICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCJcbiAgICAgID5cbiAgICAgICAgPENvbHVtbiBmaWVsZD1cImN1c3RvbWVySWRcIiB2LWJpbmQ6aGVhZGVyPVwiJHQoJ2N1c3RvbWVyTGlzdC5jb2x1bW5zLmN1c3RvbWVySWQnKVwiIHNvcnRhYmxlPjwvQ29sdW1uPlxuICAgICAgICA8Q29sdW1uIGZpZWxkPVwiY29tcGFueU5hbWVcIiA6aGVhZGVyPVwiJHQoJ2N1c3RvbWVyTGlzdC5jb2x1bW5zLmNvbXBhbnlOYW1lJylcIiBzb3J0YWJsZT48L0NvbHVtbj5cbiAgICAgICAgPENvbHVtbiBmaWVsZD1cImVtYWlsXCIgOmhlYWRlcj1cIiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy5lbWFpbCcpXCIgc29ydGFibGUgc3R5bGU9XCJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XCI+PC9Db2x1bW4+XG4gICAgICAgIDxDb2x1bW4gZmllbGQ9XCJzZWxsaW5nU2l0ZVwiIDpoZWFkZXI9XCIkdCgnY3VzdG9tZXJMaXN0LmNvbHVtbnMuc2l0ZScpXCIgc29ydGFibGU+PC9Db2x1bW4+XG4gICAgICAgIDxDb2x1bW4gZmllbGQ9XCJyZXAxXCIgOmhlYWRlcj1cIiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy5yZXAxJylcIiBzb3J0YWJsZT48L0NvbHVtbj5cbiAgICAgICAgPENvbHVtbiBmaWVsZD1cInJlcDJcIiA6aGVhZGVyPVwiJHQoJ2N1c3RvbWVyTGlzdC5jb2x1bW5zLnJlcDInKVwiIHNvcnRhYmxlPjwvQ29sdW1uPlxuICAgICAgICA8Q29sdW1uIGZpZWxkPVwidHlwb2xvZ3lcIiA6aGVhZGVyPVwiJHQoJ2N1c3RvbWVyTGlzdC5jb2x1bW5zLnR5cGUnKVwiIHNvcnRhYmxlPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjYm9keT1cInNsb3RQcm9wc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0eXBvbG9neS1iYWRnZVwiPnt7IHNsb3RQcm9wcy5kYXRhLnR5cG9sb2d5IH19PC9zcGFuPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvQ29sdW1uPlxuICAgICAgICA8Q29sdW1uIGZpZWxkPVwiZHNvXCIgOmhlYWRlcj1cIiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy5kc28nKVwiIHNvcnRhYmxlPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjYm9keT1cInNsb3RQcm9wc1wiPlxuICAgICAgICAgICAge3sgcGFyc2VGbG9hdChzbG90UHJvcHMuZGF0YS5kc28pLnRvRml4ZWQoMSkgfX1cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L0NvbHVtbj5cbiAgICAgICAgPENvbHVtbiBmaWVsZD1cInRvdGFsRWNodVwiIDpoZWFkZXI9XCIkdCgnY3VzdG9tZXJMaXN0LmNvbHVtbnMudG90YWxFY2h1JylcIiBzb3J0YWJsZT5cbiAgICAgICAgICA8dGVtcGxhdGUgI2JvZHk9XCJzbG90UHJvcHNcIj5cbiAgICAgICAgICAgIHt7IHBhcnNlRmxvYXQoc2xvdFByb3BzLmRhdGEudG90YWxFY2h1KS50b0ZpeGVkKDIpIH19XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9Db2x1bW4+XG4gICAgICAgIDxDb2x1bW4gZmllbGQ9XCJ0b3RhbE5vbkVjaHVcIiA6aGVhZGVyPVwiJHQoJ2N1c3RvbWVyTGlzdC5jb2x1bW5zLnRvdGFsTm9uRWNodScpXCIgc29ydGFibGU+XG4gICAgICAgICAgPHRlbXBsYXRlICNib2R5PVwic2xvdFByb3BzXCI+XG4gICAgICAgICAgICB7eyBwYXJzZUZsb2F0KHNsb3RQcm9wcy5kYXRhLnRvdGFsTm9uRWNodSkudG9GaXhlZCgyKSB9fVxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvQ29sdW1uPlxuICAgICAgICA8Q29sdW1uIGZpZWxkPVwidG90YWxDb21wdGVcIiA6aGVhZGVyPVwiJHQoJ2N1c3RvbWVyTGlzdC5jb2x1bW5zLnRvdGFsQ29tcHRlJylcIiBzb3J0YWJsZT5cbiAgICAgICAgICA8dGVtcGxhdGUgI2JvZHk9XCJzbG90UHJvcHNcIj5cbiAgICAgICAgICAgIHt7IHBhcnNlRmxvYXQoc2xvdFByb3BzLmRhdGEudG90YWxDb21wdGUpLnRvRml4ZWQoMikgfX1cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L0NvbHVtbj5cbiAgICAgIDwvRGF0YVRhYmxlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgeyByZWYsIGNvbXB1dGVkLCBvbk1vdW50ZWQgfSBmcm9tICd2dWUnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCBEYXRhVGFibGUgZnJvbSAncHJpbWV2dWUvZGF0YXRhYmxlJztcbmltcG9ydCBDb2x1bW4gZnJvbSAncHJpbWV2dWUvY29sdW1uJztcbmltcG9ydCBCdXR0b24gZnJvbSAncHJpbWV2dWUvYnV0dG9uJztcbmltcG9ydCBEcm9wZG93biBmcm9tICdwcmltZXZ1ZS9kcm9wZG93bic7XG5pbXBvcnQgSW5wdXRUZXh0IGZyb20gJ3ByaW1ldnVlL2lucHV0dGV4dCc7XG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xuaW1wb3J0IFByb2dyZXNzU3Bpbm5lciBmcm9tICdwcmltZXZ1ZS9wcm9ncmVzc3NwaW5uZXInO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdDdXN0b21lckxpc3QnLFxuICBjb21wb25lbnRzOiB7XG4gICAgRGF0YVRhYmxlLFxuICAgIENvbHVtbixcbiAgICBCdXR0b24sXG4gICAgRHJvcGRvd24sXG4gICAgSW5wdXRUZXh0LFxuICAgIFByb2dyZXNzU3Bpbm5lclxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjdXN0b21lcnM6IFtdLFxuICAgICAgc2VsZWN0ZWRTaXRlOiBudWxsLFxuICAgICAgdHlwZUNsaWVudDogbnVsbCxcbiAgICAgIHNlbGVjdGVkQ2xpZW50VHlwZTogbnVsbCxcbiAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgICBnbG9iYWxGaWx0ZXI6ICcnLFxuICAgICAgcm93czogMTAsXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBmaWx0ZXJlZERhdGEoKSB7XG4gICAgICBsZXQgZGF0YSA9IHRoaXMuY3VzdG9tZXJzO1xuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZFNpdGUgJiYgdGhpcy5zZWxlY3RlZFNpdGUudmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxsaW5nU2l0ZSA9PT0gdGhpcy5zZWxlY3RlZFNpdGUudmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZENsaWVudFR5cGUgJiYgdGhpcy5zZWxlY3RlZENsaWVudFR5cGUudmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS50eXBvbG9neSA9PT0gdGhpcy5zZWxlY3RlZENsaWVudFR5cGUudmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5nbG9iYWxGaWx0ZXIpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVGV4dCA9IHRoaXMuZ2xvYmFsRmlsdGVyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgICAoaXRlbS5jdXN0b21lcklkICYmIGl0ZW0uY3VzdG9tZXJJZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclRleHQpKSB8fFxuICAgICAgICAgICAgKGl0ZW0uY29tcGFueU5hbWUgJiYgaXRlbS5jb21wYW55TmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclRleHQpKSB8fFxuICAgICAgICAgICAgKGl0ZW0uZW1haWwgJiYgaXRlbS5lbWFpbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclRleHQpKSB8fFxuICAgICAgICAgICAgKGl0ZW0uc2VsbGluZ1NpdGUgJiYgaXRlbS5zZWxsaW5nU2l0ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclRleHQpKSB8fFxuICAgICAgICAgICAgKGl0ZW0ucmVwMSAmJiBpdGVtLnJlcDEudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJUZXh0KSkgfHxcbiAgICAgICAgICAgIChpdGVtLnJlcDIgJiYgaXRlbS5yZXAyLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVGV4dCkpIHx8XG4gICAgICAgICAgICAoaXRlbS50eXBvbG9neSAmJiBpdGVtLnR5cG9sb2d5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVGV4dCkpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0sXG4gICAgdW5pcXVlQ3VzdG9tZXJzKCkge1xuICAgICAgY29uc3QgZ3JvdXBlZCA9IG5ldyBNYXAoKTtcblxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuZmlsdGVyZWREYXRhKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IFN0cmluZyhpdGVtLmN1c3RvbWVySWQpLnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xuXG4gICAgICAgIGlmICghZ3JvdXBlZC5oYXMoa2V5KSkge1xuICAgICAgICAgIGdyb3VwZWQuc2V0KGtleSwge1xuICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgIHRvdGFsQ29tcHRlOiBwYXJzZUZsb2F0KGl0ZW0udG90YWxDb21wdGUgPz8gMCksXG4gICAgICAgICAgICB0b3RhbEVjaHU6IHBhcnNlRmxvYXQoaXRlbS50b3RhbEVjaHUgPz8gMCksXG4gICAgICAgICAgICB0b3RhbE5vbkVjaHU6IHBhcnNlRmxvYXQoaXRlbS50b3RhbE5vbkVjaHUgPz8gMCksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIEFycmF5LmZyb20oZ3JvdXBlZC52YWx1ZXMoKSk7XG4gICAgfSxcbiAgICBzaXRlQWRkZXZXaXRoQWxsKCkge1xuICAgICAgY29uc3Qgc2l0ZXMgPSBbLi4ubmV3IFNldCh0aGlzLmN1c3RvbWVycy5tYXAoaXRlbSA9PiBpdGVtLnNlbGxpbmdTaXRlKS5maWx0ZXIoc2l0ZSA9PiBzaXRlKSldO1xuICAgICAgcmV0dXJuIFt7IGxhYmVsOiAnVG91cyBsZXMgc2l0ZXMnLCB2YWx1ZTogbnVsbCB9LCAuLi5zaXRlcy5tYXAoc2l0ZSA9PiAoeyBsYWJlbDogc2l0ZSwgdmFsdWU6IHNpdGUgfSkpXTtcbiAgICB9LFxuICAgIGFsbFR5cGVzKCkge1xuICAgICAgY29uc3QgdHlwZXMgPSBbLi4ubmV3IFNldCh0aGlzLmN1c3RvbWVycy5tYXAoaXRlbSA9PiBpdGVtLnR5cG9sb2d5KS5maWx0ZXIodHlwZSA9PiB0eXBlKSldO1xuICAgICAgY29uc3Qgc29ydGVkVHlwZXMgPSB0eXBlcy5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpO1xuICAgICAgcmV0dXJuIFt7IGxhYmVsOiAnVG91cyBsZXMgc3RhdHV0cycsIHZhbHVlOiBudWxsIH0sIC4uLnNvcnRlZFR5cGVzLm1hcCh0eXBlID0+ICh7IGxhYmVsOiB0eXBlLCB2YWx1ZTogdHlwZSB9KSldO1xuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIC8vIFLDqWN1cMOocmUgbGEgbG9jYWxlIGFjdGl2ZSBkZXB1aXMgbOKAmVVSTCwgaTE4biBvdSBkYXRhLWxvY2FsZVxuICAgIGdldEN1cnJlbnRMb2NhbGUoKSB7XG4gICAgICBjb25zdCBTVVBQT1JURUQgPSBbJ2ZyJywgJ2VuJywgJ3BsJ107XG5cbiAgICAgIC8vIDEpIFByZW1pZXIgc2VnbWVudCBkZSBs4oCZVVJMOiAvZnIvLi4uIC9lbi8uLi4gL3BsLy4uLlxuICAgICAgY29uc3Qgc2VnMSA9ICh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoJy8nKVsxXSB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChTVVBQT1JURUQuaW5jbHVkZXMoc2VnMSkpIHJldHVybiBzZWcxO1xuXG4gICAgICAvLyAyKSBMb2NhbGUgZGUgdnVlLWkxOG4gc2kgZGlzcG9cbiAgICAgIGNvbnN0IGkxOG5Mb2NhbGUgPSB0aGlzLiRpMThuPy5sb2NhbGU/LnNsaWNlKDAsIDIpPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKFNVUFBPUlRFRC5pbmNsdWRlcyhpMThuTG9jYWxlKSkgcmV0dXJuIGkxOG5Mb2NhbGU7XG5cbiAgICAgIC8vIDMpIEF0dHJpYnV0IGRhdGEtbG9jYWxlIGluamVjdMOpIGPDtHTDqSBiYWNrIChleDogI2NyLWRhc2hib2FyZC1hcHApXG4gICAgICBjb25zdCBkYXRhTG9jYWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NyLWRhc2hib2FyZC1hcHAnKT8uZGF0YXNldD8ubG9jYWxlXG4gICAgICAgICAgPy5zbGljZSgwLCAyKT8udG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChTVVBQT1JURUQuaW5jbHVkZXMoZGF0YUxvY2FsZSkpIHJldHVybiBkYXRhTG9jYWxlO1xuXG4gICAgICAvLyA0KSBGYWxsYmFja1xuICAgICAgcmV0dXJuICdmcic7XG4gICAgfSxcblxuICAgIGdvVG9DdXN0b21lckRldGFpbHMoZXZlbnQpIHtcbiAgICAgIGNvbnN0IGN1c3RvbWVySWQgPSBldmVudD8uZGF0YT8uY3VzdG9tZXJJZDtcbiAgICAgIGlmICghY3VzdG9tZXJJZCkgcmV0dXJuIGNvbnNvbGUuZXJyb3IoJ2N1c3RvbWVySWQgbm9uIHRyb3V2w6knKTtcblxuICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5nZXRDdXJyZW50TG9jYWxlKCk7XG4gICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvJHtlbmNvZGVVUklDb21wb25lbnQobG9jYWxlKX0vY3VzdG9tZXItY2FyZC8ke2VuY29kZVVSSUNvbXBvbmVudChjdXN0b21lcklkKX1gO1xuXG4gICAgICAvLyBTaSB0dSB1dGlsaXNlcyB2dWUtcm91dGVyIGF2ZWMgdW5lIHJvdXRlIG5vbW3DqWU6XG4gICAgICAvLyB0aGlzLiRyb3V0ZXIucHVzaCh7IG5hbWU6ICdjdXN0b21lci1jYXJkJywgcGFyYW1zOiB7IGxvY2FsZSwgaWQ6IGN1c3RvbWVySWQgfSB9KVxuICAgIH0sXG5cbiAgICBmZXRjaEN1c3RvbWVycygpIHtcbiAgICAgIGF4aW9zLmdldCgnL2FwaS9jdXN0b21lcnMnKVxuICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25uw6llcyBjbGllbnQgYnJ1dGVzIDonLCByZXNwb25zZS5kYXRhWzBdKTtcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tZXJzID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJldXIgbG9ycyBkZSBsYSByw6ljdXDDqXJhdGlvbiBkZXMgY2xpZW50cyAhJywgZXJyb3IpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIGV4cG9ydEV4Y2VsKCkge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMudW5pcXVlQ3VzdG9tZXJzO1xuICAgICAgY29uc3QgaGVhZGVycyA9IFtcbiAgICAgICAgdGhpcy4kdCgnY3VzdG9tZXJMaXN0LmNvbHVtbnMuY3VzdG9tZXJJZCcpLFxuICAgICAgICB0aGlzLiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy5jb21wYW55TmFtZScpLFxuICAgICAgICB0aGlzLiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy5lbWFpbCcpLFxuICAgICAgICB0aGlzLiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy5zaXRlJyksXG4gICAgICAgIHRoaXMuJHQoJ2N1c3RvbWVyTGlzdC5jb2x1bW5zLnJlcDEnKSxcbiAgICAgICAgdGhpcy4kdCgnY3VzdG9tZXJMaXN0LmNvbHVtbnMucmVwMicpLFxuICAgICAgICB0aGlzLiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy50eXBlJyksXG4gICAgICAgIHRoaXMuJHQoJ2N1c3RvbWVyTGlzdC5jb2x1bW5zLmRzbycpLFxuICAgICAgICB0aGlzLiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy50b3RhbEVjaHUnKSxcbiAgICAgICAgdGhpcy4kdCgnY3VzdG9tZXJMaXN0LmNvbHVtbnMudG90YWxOb25FY2h1JyksXG4gICAgICAgIHRoaXMuJHQoJ2N1c3RvbWVyTGlzdC5jb2x1bW5zLnRvdGFsQ29tcHRlJylcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGV4Y2VsRGF0YSA9IGRhdGEubWFwKHJvdyA9PiAoe1xuICAgICAgICBbdGhpcy4kdCgnY3VzdG9tZXJMaXN0LmNvbHVtbnMuY3VzdG9tZXJJZCcpXTogcm93LmN1c3RvbWVySWQsXG4gICAgICAgIFt0aGlzLiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy5jb21wYW55TmFtZScpXTogcm93LmNvbXBhbnlOYW1lLFxuICAgICAgICBbdGhpcy4kdCgnY3VzdG9tZXJMaXN0LmNvbHVtbnMuZW1haWwnKV06IHJvdy5lbWFpbCxcbiAgICAgICAgW3RoaXMuJHQoJ2N1c3RvbWVyTGlzdC5jb2x1bW5zLnNpdGUnKV06IHJvdy5zZWxsaW5nU2l0ZSxcbiAgICAgICAgW3RoaXMuJHQoJ2N1c3RvbWVyTGlzdC5jb2x1bW5zLnJlcDEnKV06IHJvdy5yZXAxLFxuICAgICAgICBbdGhpcy4kdCgnY3VzdG9tZXJMaXN0LmNvbHVtbnMucmVwMicpXTogcm93LnJlcDIsXG4gICAgICAgIFt0aGlzLiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy50eXBlJyldOiByb3cudHlwb2xvZ3ksXG4gICAgICAgIFt0aGlzLiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy5kc28nKV06IHJvdy5kc28sXG4gICAgICAgIFt0aGlzLiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy50b3RhbEVjaHUnKV06IHJvdy50b3RhbEVjaHUsXG4gICAgICAgIFt0aGlzLiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy50b3RhbE5vbkVjaHUnKV06IHJvdy50b3RhbE5vbkVjaHUsXG4gICAgICAgIFt0aGlzLiR0KCdjdXN0b21lckxpc3QuY29sdW1ucy50b3RhbENvbXB0ZScpXTogcm93LnRvdGFsQ29tcHRlXG4gICAgICB9KSk7XG5cbiAgICAgIGNvbnN0IHdvcmtzaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChleGNlbERhdGEsIHsgaGVhZGVyOiBoZWFkZXJzIH0pO1xuICAgICAgY29uc3Qgd29ya2Jvb2sgPSBYTFNYLnV0aWxzLmJvb2tfbmV3KCk7XG4gICAgICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KHdvcmtib29rLCB3b3Jrc2hlZXQsICdDbGllbnRzJyk7XG4gICAgICBjb25zdCBleGNlbEJ1ZmZlciA9IFhMU1gud3JpdGUod29ya2Jvb2ssIHsgYm9va1R5cGU6ICd4bHN4JywgdHlwZTogJ2FycmF5JyB9KTtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZXhjZWxCdWZmZXJdLCB7IHR5cGU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nIH0pO1xuICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICBsaW5rLmRvd25sb2FkID0gJ2RhdGFDdXN0b21lcnMueGxzeCc7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgbGluay5jbGljaygpO1xuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5mZXRjaEN1c3RvbWVycygpO1xuICB9XG5cblxufTtcbjwvc2NyaXB0PlxuXG5cbjxzdHlsZSBzY29wZWQ+XG4udHlwb2xvZ3ktYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyNjM3NDY7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtaW4td2lkdGg6IDMwcHg7XG4gIG1pbi1oZWlnaHQ6IDMwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBmb250LXNpemU6IDEycHg7XG59XG5cbi5leHBvcnRCdG5DdXN0b21lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcmlnaHQ6IDQzZW07XG4gIGJhY2tncm91bmQ6ICMwMDdiZmY7XG4gIGJvcmRlcjogbm9uZTtcbiAgY29sb3I6IHdoaXRlO1xuICBmb250LXdlaWdodDogNjAwO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGhlaWdodDogM2VtO1xufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImN1c3RvbWVyLWNhcmQtdGFibGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgICA8aDIgc3R5bGU9XCJtYXJnaW4tbGVmdDogMS41ZW1cIj57eyAkdCgnY3VzdG9tZXJDYXJkLnRpdGxlJykgfX08L2gyPlxuICAgICAgPGJ1dHRvbiBAY2xpY2s9XCJleHBvcnRUb0V4Y2VsXCIgY2xhc3M9XCJleHBvcnQtYnRuIGV4Y2xcIj5cbiAgICAgICAge3sgJHQoJ2N1c3RvbWVyQ2FyZC5leHBvcnQnKSB9fVxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxEcm9wZG93blxuICAgICAgICAgIHYtbW9kZWw9XCJmaWx0ZXJzWydyZW1pbmRfc3RhdHVzJ11cIlxuICAgICAgICAgIDpvcHRpb25zPVwic3RhdHVzT3B0aW9uc1wiXG4gICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgOnBsYWNlaG9sZGVyPVwiJHQoJ2N1c3RvbWVyQ2FyZC5maWx0ZXJTdGF0dXMnKVwiXG4gICAgICAgICAgY2xhc3M9XCJzdGF0dXMtZHJvcGRvd24gZmlsdGVyU3RhdHVzQ1wiXG4gICAgICAgICAgOmNsYXNzPVwiJ3N0YXR1cy0nICsgKGZpbHRlcnNbJ3JlbWluZF9zdGF0dXMnXT8udmFsdWUgfHwgJycpXCJcbiAgICAgID5cbiAgICAgICAgPHRlbXBsYXRlICN2YWx1ZT1cInNsb3RQcm9wc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtb3B0aW9uQ2NhcmRcIiA6c3R5bGU9XCJ7YmFja2dyb3VuZENvbG9yOiBnZXRTdGF0dXNDb2xvcihzbG90UHJvcHMudmFsdWU/LnZhbHVlKSwgY29sb3I6IHNsb3RQcm9wcy52YWx1ZT8udmFsdWUgPyAnd2hpdGUnIDogJ2JsYWNrJ31cIj5cbiAgICAgICAgICAgIHt7IHNsb3RQcm9wcy52YWx1ZT8ubGFiZWwgfHwgJHQoJ2N1c3RvbWVyQ2FyZC5maWx0ZXJTdGF0dXMnKSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgI29wdGlvbj1cInNsb3RQcm9wc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtb3B0aW9uQ2NhcmRcIiA6c3R5bGU9XCJ7YmFja2dyb3VuZENvbG9yOiBnZXRTdGF0dXNDb2xvcihzbG90UHJvcHMub3B0aW9uPy52YWx1ZSksIGNvbG9yOiAnd2hpdGUnfVwiPlxuICAgICAgICAgICAge3sgc2xvdFByb3BzLm9wdGlvbj8ubGFiZWwgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIDwvRHJvcGRvd24+XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICAgIHYtbW9kZWw9XCJmaWx0ZXJzWydnbG9iYWwnXS52YWx1ZVwiXG4gICAgICAgICAgOnBsYWNlaG9sZGVyPVwiJHQoJ2N1c3RvbWVyQ2FyZC5zZWFyY2gnKVwiXG4gICAgICAgICAgY2xhc3M9XCJzZWFyY2gtYmFyIGZpbHRlclNlYXJjaENcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cblxuICAgIDxwIHYtaWY9XCJsb2FkaW5nXCI+e3sgJHQoJ2Rhc2hib2FyZC5sb2FkaW5nJykgfX08L3A+XG4gICAgPERhdGFUYWJsZVxuICAgICAgICB2LWVsc2UtaWY9XCJpbnZvaWNlcy5sZW5ndGggPiAwXCJcbiAgICAgICAgOnZhbHVlPVwiaW52b2ljZXNcIlxuICAgICAgICBkYXRhS2V5PVwiaW52b2ljZV9pZFwiXG4gICAgICAgIDpmaWx0ZXJzPVwiZmlsdGVyc1wiXG4gICAgICAgIGZpbHRlckRpc3BsYXk9XCJtZW51XCJcbiAgICAgICAgOmdsb2JhbEZpbHRlckZpZWxkcz1cIltcbiAgICAgICAgJ2ludm9pY2VfaWQnLFxuICAgICAgICAnY3VzdG9tZXJfaWQnLFxuICAgICAgICAnY29tcGFueV9uYW1lJyxcbiAgICAgICAgJ2ludm9pY2VfZGF0ZScsXG4gICAgICAgICdkdWVfZGF0ZScsXG4gICAgICAgICdkYXlzX29mX2RlbGF5JyxcbiAgICAgICAgJ3JlbWluZF9zdGF0dXMnLFxuICAgICAgICAndG90YWxfYW1vdW50X3RheF9pbmNsX2ludm9pY2UnLFxuICAgICAgICAndHlwb2xvZ3knLFxuICAgICAgICAncG9fbnVtYmVyJ1xuICAgICAgXVwiXG4gICAgICAgIGNsYXNzPVwiZnVsbC13aWR0aC10YWJsZVwiXG4gICAgICAgIDpzY3JvbGxhYmxlPVwidHJ1ZVwiXG4gICAgICAgIDpyb3dDbGFzcz1cImdldFJvd0NsYXNzXCJcbiAgICA+XG4gICAgICA8Q29sdW1uIGhlYWRlclN0eWxlPVwid2lkdGg6IDNyZW1cIj5cbiAgICAgICAgPHRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIDptb2RlbFZhbHVlPVwiaXNBbGxTZWxlY3RlZFwiXG4gICAgICAgICAgICAgIDpiaW5hcnk9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgOmluZGV0ZXJtaW5hdGU9XCJpc0luZGV0ZXJtaW5hdGVcIlxuICAgICAgICAgICAgICBAY2hhbmdlPVwidG9nZ2xlU2VsZWN0QWxsXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgI2JvZHk9XCJzbG90UHJvcHNcIj5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgOm1vZGVsVmFsdWU9XCJpc1NlbGVjdGVkKHNsb3RQcm9wcy5kYXRhKVwiXG4gICAgICAgICAgICAgIDpiaW5hcnk9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbFZhbHVlPVwiKHZhbHVlKSA9PiB0b2dnbGVTZWxlY3Rpb24odmFsdWUsIHNsb3RQcm9wcy5kYXRhKVwiXG4gICAgICAgICAgICAgIDpkaXNhYmxlZD1cImlzU2VsZWN0aW9uRGlzYWJsZWQoc2xvdFByb3BzLmRhdGEpXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9Db2x1bW4+XG5cbiAgICAgIDxDb2x1bW4gZmllbGQ9XCJpbnZvaWNlX2lkXCIgOmhlYWRlcj1cIiR0KCdjdXN0b21lckNhcmQuY29sdW1ucy5pbnZvaWNlSWQnKVwiIHNvcnRhYmxlIC8+XG4gICAgICA8Q29sdW1uIGZpZWxkPVwicG9fbnVtYmVyXCIgOmhlYWRlcj1cIiR0KCdjdXN0b21lckNhcmQuY29sdW1ucy5wb051bWJlcicpXCIgc29ydGFibGUgLz5cbiAgICAgIDxDb2x1bW4gZmllbGQ9XCJjdXN0b21lcl9pZFwiIDpoZWFkZXI9XCIkdCgnY3VzdG9tZXJDYXJkLmNvbHVtbnMuY3VzdG9tZXJJZCcpXCIgc29ydGFibGUgLz5cbiAgICAgIDxDb2x1bW4gZmllbGQ9XCJjb21wYW55X25hbWVcIiA6aGVhZGVyPVwiJHQoJ2N1c3RvbWVyQ2FyZC5jb2x1bW5zLmNvbXBhbnlOYW1lJylcIiBzb3J0YWJsZSAvPlxuICAgICAgPENvbHVtbiBmaWVsZD1cImludm9pY2VfZGF0ZVwiIDpoZWFkZXI9XCIkdCgnY3VzdG9tZXJDYXJkLmNvbHVtbnMuaW52b2ljZURhdGUnKVwiIHNvcnRhYmxlIC8+XG4gICAgICA8Q29sdW1uIGZpZWxkPVwiZHVlX2RhdGVcIiA6aGVhZGVyPVwiJHQoJ2N1c3RvbWVyQ2FyZC5jb2x1bW5zLmR1ZURhdGUnKVwiIHNvcnRhYmxlIC8+XG4gICAgICA8Q29sdW1uIGZpZWxkPVwiZGF5c19vZl9kZWxheVwiIDpoZWFkZXI9XCIkdCgnY3VzdG9tZXJDYXJkLmNvbHVtbnMuZGVsYXknKVwiIHNvcnRhYmxlIC8+XG4gICAgICA8Q29sdW1uXG4gICAgICAgICAgZmllbGQ9XCJyZW1pbmRfc3RhdHVzXCJcbiAgICAgICAgICA6aGVhZGVyPVwiJHQoJ2N1c3RvbWVyQ2FyZC5jb2x1bW5zLnN0YXR1cycpXCJcbiAgICAgICAgICA6ZmlsdGVyPVwidHJ1ZVwiXG4gICAgICAgICAgZmlsdGVyRmllbGQ9XCJyZW1pbmRfc3RhdHVzXCJcbiAgICAgICAgICBzb3J0YWJsZVxuICAgICAgPlxuICAgICAgICA8dGVtcGxhdGUgI2JvZHk9XCJzbG90UHJvcHNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwic3RhdHVzLWJhZGdlXCJcbiAgICAgICAgICAgICAgOmNsYXNzPVwieyBjcmVkaXQ6IHNsb3RQcm9wcy5kYXRhLnR5cGUgPT09ICdjcmVkaXQnIH1cIlxuICAgICAgICAgICAgICA6c3R5bGU9XCJ7XG4gICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogZ2V0U3RhdHVzQ29sb3Ioc2xvdFByb3BzLmRhdGEucmVtaW5kX3N0YXR1cywgc2xvdFByb3BzLmRhdGEudHlwZSksXG4gICAgICAgICAgICAgIGNvbG9yOiBzbG90UHJvcHMuZGF0YS50eXBlID09PSAnY3JlZGl0JyA/ICdibGFjaycgOiAnd2hpdGUnXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBzbG90UHJvcHMuZGF0YS50eXBlID09PSAnY3JlZGl0JyA/ICR0KCdjdXN0b21lckNhcmQuc3RhdHVzLmNyZWRpdCcpIDogZ2V0U3RhdHVzTGFiZWwoc2xvdFByb3BzLmRhdGEucmVtaW5kX3N0YXR1cykgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIDwvQ29sdW1uPlxuXG4gICAgICA8Q29sdW1uXG4gICAgICAgICAgZmllbGQ9XCJ0b3RhbF9hbW91bnRfdGF4X2luY2xfaW52b2ljZVwiXG4gICAgICAgICAgOmhlYWRlcj1cIiR0KCdjdXN0b21lckNhcmQuY29sdW1ucy50b3RhbCcpXCJcbiAgICAgICAgICBzb3J0YWJsZVxuICAgICAgICAgIHN0eWxlPVwiZm9udC13ZWlnaHQ6IGJvbGQ7XCJcbiAgICAgID5cbiAgICAgICAgPHRlbXBsYXRlICNib2R5PVwic2xvdFByb3BzXCI+XG4gICAgICAgICAge3sgc2xvdFByb3BzLmRhdGEudG90YWxfYW1vdW50X3RheF9pbmNsX2ludm9pY2UgfX0ge3sgc2xvdFByb3BzLmRhdGEuY3VycmVuY3kgfHwgJ0VVUicgfX1cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIDwvQ29sdW1uPlxuICAgIDwvRGF0YVRhYmxlPlxuXG4gICAgPHAgdi1lbHNlPnt7ICR0KCdjdXN0b21lckNhcmQubm9JbnZvaWNlcycpIH19PC9wPlxuXG4gICAgPGJ1dHRvblxuICAgICAgICB2LWlmPVwic2VsZWN0ZWRJbnZvaWNlcy5sZW5ndGggPiAwXCJcbiAgICAgICAgY2xhc3M9XCJzZW5kLWJ1dHRvblwiXG4gICAgICAgIEBjbGljaz1cInNlbmRTZWxlY3RlZEludm9pY2VzXCJcbiAgICA+XG4gICAgICB7eyAkdCgnY3VzdG9tZXJDYXJkLnNlbmRCdXR0b24nKSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cblxuPHNjcmlwdD5cbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgRHJvcGRvd24gZnJvbSAncHJpbWV2dWUvZHJvcGRvd24nO1xuaW1wb3J0IENoZWNrYm94IGZyb20gJ3ByaW1ldnVlL2NoZWNrYm94JztcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHJvcHM6IHtcbiAgICBjdXN0b21lcklkOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICB9LFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZvaWNlczogW10sXG4gICAgICBsb2FkaW5nOiB0cnVlLFxuICAgICAgc2VsZWN0ZWRJbnZvaWNlczogW10sXG4gICAgICBzdGF0dXNPcHRpb25zOiBbXG4gICAgICAgIHsgbGFiZWw6ICdUb3VzIGxlcyBTdGF0dXRzJywgdmFsdWU6IG51bGwgfSxcbiAgICAgICAgeyBsYWJlbDogJ1N0YXR1dCAwIChOb24gw6ljaHUpJywgdmFsdWU6ICcwJyB9LFxuICAgICAgICB7IGxhYmVsOiAnU3RhdHV0IDEnLCB2YWx1ZTogJzEnIH0sXG4gICAgICAgIHsgbGFiZWw6ICdTdGF0dXQgMicsIHZhbHVlOiAnMicgfSxcbiAgICAgICAgeyBsYWJlbDogJ1N0YXR1dCAzJywgdmFsdWU6ICczJyB9LFxuICAgICAgICB7IGxhYmVsOiAnU3RhdHV0IDQnLCB2YWx1ZTogJzQnIH0sXG4gICAgICAgIHsgbGFiZWw6ICdTdGF0dXQgNScsIHZhbHVlOiAnNScgfSxcbiAgICAgICAgeyBsYWJlbDogJ0NvZmFjZSAxJywgdmFsdWU6ICc2JyB9LFxuICAgICAgICB7IGxhYmVsOiAnQ29mYWNlIDInLCB2YWx1ZTogJzcnIH0sXG4gICAgICBdLFxuICAgICAgZmlsdGVyczoge1xuICAgICAgICBnbG9iYWw6IHsgdmFsdWU6IG51bGwsIG1hdGNoTW9kZTogJ2NvbnRhaW5zJyB9LFxuICAgICAgICByZW1pbmRfc3RhdHVzOiB7IHZhbHVlOiBudWxsLCBtYXRjaE1vZGU6ICdlcXVhbHMnIH0sXG4gICAgICB9LFxuICAgICAgc3RhdHVzQ29sb3JzOiB7XG4gICAgICAgICcwJzogJyM2M0UzQUQnLFxuICAgICAgICAnMSc6ICcjNjNFM0FEJyxcbiAgICAgICAgJzInOiAnI0ZGQzg1RCcsXG4gICAgICAgICczJzogJyNGRkE1N0UnLFxuICAgICAgICAnNCc6ICcjRkY2NzcxJyxcbiAgICAgICAgJzUnOiAnIzg3MDAwMCcsXG4gICAgICAgICc2JzogJyMwMDAwMDAnLFxuICAgICAgICAnNyc6ICcjMDAwMDAwJyxcbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgRHJvcGRvd24sXG4gICAgQ2hlY2tib3gsXG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgc2VsZWN0YWJsZUludm9pY2VzKCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW52b2ljZXMuZmlsdGVyKChpbnZvaWNlKSA9PiAhdGhpcy5pc1NlbGVjdGlvbkRpc2FibGVkKGludm9pY2UpKTtcbiAgICB9LFxuICAgIGlzQWxsU2VsZWN0ZWQoKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZvaWNlcy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEludm9pY2VzLmxlbmd0aCA9PT0gdGhpcy5zZWxlY3RhYmxlSW52b2ljZXMubGVuZ3RoXG4gICAgICApO1xuICAgIH0sXG4gICAgaXNJbmRldGVybWluYXRlKCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSW52b2ljZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZvaWNlcy5sZW5ndGggPCB0aGlzLnNlbGVjdGFibGVJbnZvaWNlcy5sZW5ndGhcbiAgICAgICk7XG4gICAgfSxcbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICBheGlvc1xuICAgICAgICAuZ2V0KGAvY3VzdG9tZXItY2FyZC8ke3RoaXMuY3VzdG9tZXJJZH0vaW52b2ljZXNgLCB7IHRpbWVvdXQ6IDEwMDAwIH0pXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuaW52b2ljZXMgPSByZXNwb25zZS5kYXRhO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycmV1ciBsb3JzIGRlIGxhIHLDqWN1cMOpcmF0aW9uIGRlcyBmYWN0dXJlcyA6XCIsIGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcEN1c3RvbWVyQ2FyZCcpO1xuXG4gICAgLyogQXBwbGlxdWUgbGEgbG9jYWxlIFN5bWZvbnkgYXUgaTE4biBnbG9iYWwgKi9cbiAgICBjb25zdCBhcHBsaWVkTG9jYWxlID0gZWwuZGF0YXNldC5sb2NhbGUgfHwgdGhpcy5sb2NhbGUgfHwgJ2ZyJztcbiAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7XG4gICAgICB0aGlzLiRpMThuLmxvY2FsZSA9IGFwcGxpZWRMb2NhbGU7XG4gICAgICBjb25zb2xlLmxvZygnTG9jYWxlIGFwcGxpcXXDqWUgOicsIGFwcGxpZWRMb2NhbGUpO1xuICAgIH0pO1xuICAgIHRoaXMuJHdhdGNoKCgpID0+IHRoaXMuJGkxOG4ubG9jYWxlLCAoKSA9PiB7XG5cbiAgICB9KTtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGdldFN0YXR1c0xhYmVsKHN0YXR1cykge1xuICAgICAgaWYgKHN0YXR1cyA9PT0gbnVsbCkgcmV0dXJuICdJbmNvbm51JztcbiAgICAgIGNvbnN0IHN0YXR1c09wdGlvbiA9IHRoaXMuc3RhdHVzT3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gc3RhdHVzKTtcbiAgICAgIHJldHVybiBzdGF0dXNPcHRpb24gPyBzdGF0dXNPcHRpb24ubGFiZWwgOiAnSW5jb25udSc7XG4gICAgfSxcbiAgICBnZXRTdGF0dXNDb2xvcihzdGF0dXMsIHR5cGUpIHtcbiAgICAgIGlmICh0eXBlID09PSAnY3JlZGl0Jykge1xuICAgICAgICByZXR1cm4gJyNENEVEREEnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuc3RhdHVzQ29sb3JzW3N0YXR1c10gfHwgJyMwMDAwMDAnO1xuICAgIH0sXG4gICAgaXNTZWxlY3Rpb25EaXNhYmxlZChyb3dEYXRhKSB7XG4gICAgICBpZiAocm93RGF0YS50eXBlID09PSAnY3JlZGl0Jykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBjb25zdCBzdGF0dXMgPSBOdW1iZXIocm93RGF0YS5yZW1pbmRfc3RhdHVzKTtcbiAgICAgIHJldHVybiAhWzQsIDUsIDYsIDddLmluY2x1ZGVzKHN0YXR1cyk7XG4gICAgfSxcbiAgICBpc1NlbGVjdGVkKGludm9pY2UpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSW52b2ljZXMuc29tZSgoaSkgPT4gaS5pbnZvaWNlX2lkID09PSBpbnZvaWNlLmludm9pY2VfaWQpO1xuICAgIH0sXG4gICAgdG9nZ2xlU2VsZWN0aW9uKHZhbHVlLCBpbnZvaWNlKSB7XG4gICAgICBjb25zb2xlLmxvZyhcInRvZ2dsZVNlbGVjdGlvbiBpbnZvcXXDqSAtIHZhbHVlOlwiLCB2YWx1ZSwgXCJpbnZvaWNlOlwiLCBpbnZvaWNlKTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKGludm9pY2UpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEludm9pY2VzLnB1c2goaW52b2ljZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZvaWNlcyA9IHRoaXMuc2VsZWN0ZWRJbnZvaWNlcy5maWx0ZXIoXG4gICAgICAgICAgICAoaSkgPT4gaS5pbnZvaWNlX2lkICE9PSBpbnZvaWNlLmludm9pY2VfaWRcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coXCJzZWxlY3RlZEludm9pY2VzIGFwcsOocyB0b2dnbGVTZWxlY3Rpb246XCIsIHRoaXMuc2VsZWN0ZWRJbnZvaWNlcyk7XG4gICAgfSxcbiAgICB0b2dnbGVTZWxlY3RBbGwoKSB7XG4gICAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbnZvaWNlcyA9IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEludm9pY2VzID0gWy4uLnRoaXMuc2VsZWN0YWJsZUludm9pY2VzXTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKFwic2VsZWN0ZWRJbnZvaWNlcyBhcHLDqHMgdG9nZ2xlU2VsZWN0QWxsOlwiLCB0aGlzLnNlbGVjdGVkSW52b2ljZXMpO1xuICAgIH0sXG4gICAgc2VuZFNlbGVjdGVkSW52b2ljZXMoKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEludm9pY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBhbGVydChcIkF1Y3VuZSBmYWN0dXJlIHPDqWxlY3Rpb25uw6llLlwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbnZvaWNlSWRzID0gdGhpcy5zZWxlY3RlZEludm9pY2VzLm1hcCgoaW52b2ljZSkgPT4gaW52b2ljZS5pbnZvaWNlX2lkKTtcblxuICAgICAgYXhpb3NcbiAgICAgICAgICAucG9zdChgL2N1c3RvbWVyLWNhcmQvJHt0aGlzLmN1c3RvbWVySWR9L3NlbmQtZW1haWxgLCB7IGludm9pY2VJZHMgfSlcbiAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGFsZXJ0KFwiRW1haWwgZW52b3nDqSBhdmVjIHN1Y2PDqHMgIVwiKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJldXIgbG9ycyBkZSBsJ2Vudm9pIGRlIGwnZW1haWwgOlwiLCBlcnJvci5yZXNwb25zZSB8fCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgIGFsZXJ0KFwiRXJyZXVyIGxvcnMgZGUgbCdlbnZvaSBkZSBsJ2VtYWlsLlwiKTtcbiAgICAgICAgICB9KTtcbiAgICB9LFxuICAgIGV4cG9ydFRvRXhjZWwoKSB7XG4gICAgICBjb25zdCBleHBvcnRGaWVsZHMgPSBbXG4gICAgICAgICdpbnZvaWNlX2lkJyxcbiAgICAgICAgJ3BvX251bWJlcicsXG4gICAgICAgICdjdXN0b21lcl9pZCcsXG4gICAgICAgICdjb21wYW55X25hbWUnLFxuICAgICAgICAnaW52b2ljZV9kYXRlJyxcbiAgICAgICAgJ2R1ZV9kYXRlJyxcbiAgICAgICAgJ2RheXNfb2ZfZGVsYXknLFxuICAgICAgICAncmVtaW5kX3N0YXR1cycsXG4gICAgICAgICd0b3RhbF9hbW91bnRfdGF4X2luY2xfaW52b2ljZScsXG4gICAgICBdO1xuXG4gICAgICBjb25zdCBjbGVhbmVkRGF0YSA9IHRoaXMuaW52b2ljZXMubWFwKGludiA9PiB7XG4gICAgICAgIGNvbnN0IHJvdyA9IHt9O1xuICAgICAgICBleHBvcnRGaWVsZHMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgcm93W2ZpZWxkXSA9IGludltmaWVsZF07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcm93O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHdvcmtzaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChjbGVhbmVkRGF0YSk7XG4gICAgICBjb25zdCB3b3JrYm9vayA9IFhMU1gudXRpbHMuYm9va19uZXcoKTtcbiAgICAgIFhMU1gudXRpbHMuYm9va19hcHBlbmRfc2hlZXQod29ya2Jvb2ssIHdvcmtzaGVldCwgXCJGYWN0dXJlc1wiKTtcbiAgICAgIFhMU1gud3JpdGVGaWxlKHdvcmtib29rLCBgRmFjdHVyZXMtJHt0aGlzLmN1c3RvbWVySWR9Lnhsc3hgKTtcbiAgICB9LFxuICAgIGdldFJvd0NsYXNzKHJvd0RhdGEpIHtcbiAgICAgIHJldHVybiByb3dEYXRhLnR5cGUgPT09ICdjcmVkaXQnID8gJ2NyZWRpdC1yb3cnIDogJyc7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuLnN0YXR1cy1vcHRpb25DY2FyZCB7XG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgd2lkdGg6IDExMSU7XG4gIGhlaWdodDogM2VtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvdHRvbTogMC41ZW07XG4gIHJpZ2h0OiAwLjVlbTtcbn1cblxuOmRlZXAoLnAtZHJvcGRvd24pIHtcbiAgbWluLXdpZHRoOiAxNTBweDtcbn1cblxuOmRlZXAoLnAtZHJvcGRvd24tcGFuZWwgLnAtZHJvcGRvd24taXRlbXMpIHtcbiAgcGFkZGluZzogMC41cmVtO1xufVxuXG46ZGVlcCgucC1kcm9wZG93bi1wYW5lbCAucC1kcm9wZG93bi1pdGVtKSB7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgbWFyZ2luOiAwLjJyZW0gMDtcbn1cblxuOmRlZXAoLnAtZHJvcGRvd24tcGFuZWwgLnAtZHJvcGRvd24taXRlbXMgLnAtZHJvcGRvd24taXRlbS5wLWhpZ2hsaWdodCkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG46ZGVlcCgucC1kcm9wZG93bi1wYW5lbCAucC1kcm9wZG93bi1pdGVtcyAucC1kcm9wZG93bi1pdGVtOmhvdmVyKSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSAhaW1wb3J0YW50O1xufVxuXG5cbjpkZWVwKC5wLWRyb3Bkb3duOm5vdCgucC1kaXNhYmxlZCkucC1mb2N1cykge1xuICBib3gtc2hhZG93OiBub25lO1xuICBib3JkZXItY29sb3I6ICNkZWUyZTY7XG59XG5cbjpkZWVwKC5wLWRyb3Bkb3duIC5wLWRyb3Bkb3duLWxhYmVsKSB7XG4gIHBhZGRpbmc6IDA7XG59XG5cbjpkZWVwKC5wLWRyb3Bkb3duLXBhbmVsKSB7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4uZmlsdGVyU3RhdHVzQyB7XG46ZGVlcCgucC1kcm9wZG93bi10cmlnZ2VyKSB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cbn1cblxuOmRlZXAoLnAtZHJvcGRvd24taXRlbSksXG46ZGVlcCgucC1kcm9wZG93bi1sYWJlbCksXG46ZGVlcCguc3RhdHVzLW9wdGlvbkNjYXJkKSB7XG4gIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50O1xufVxuXG4uc3RhdHVzLWJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAwLjNlbSAwLjZlbTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBtaW4td2lkdGg6IDgwcHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbn1cbi5zdGF0dXMtYmFkZ2UuY3JlZGl0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRiFpbXBvcnRhbnQ7XG4gIGNvbG9yOiBibGFjaztcbn1cbi5jcmVkaXQtcm93IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZDRTRENiAhaW1wb3J0YW50O1xuICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcbn1cblxuPC9zdHlsZT4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJoaXN0b3JpcXVlLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJoaXN0b3JpcXVlLXN0YXR1dEFsbFwiPlxuICAgICAgPGRpdlxuICAgICAgICAgIHYtZm9yPVwic3RhdHV0IGluIHN0YXR1dHNcIlxuICAgICAgICAgIDprZXk9XCJzdGF0dXQua2V5XCJcbiAgICAgICAgICBjbGFzcz1cInN0YXR1dC1jb250YWluZXJcIlxuICAgICAgICAgIDpjbGFzcz1cInsgJ2dyYXllZC1vdXQnOiBpc0dyYXllZE91dChzdGF0dXQua2V5KSB9XCJcbiAgICAgID5cbiAgICAgICAgPGg0IDpjbGFzcz1cInN0YXR1dC5jbGFzc1wiPnt7ICR0KGBoaXN0b3JpcXVlLnN0YXR1dHMuJHtzdGF0dXQua2V5fWApIH19PC9oND5cblxuICAgICAgICA8cCBjbGFzcz1cInJlbWluZGVyLWRhdGVcIj57eyAkdCgnaGlzdG9yaXF1ZS5sYWJlbHMucmVtaW5kZXJEYXRlJykgfX08L3A+XG4gICAgICAgIDxwIGNsYXNzPVwiZGF0ZVJlbGFuY2VcIiB2LWlmPVwiIWlzR3JheWVkT3V0KHN0YXR1dC5rZXkpXCI+XG4gICAgICAgICAge3sgZm9ybWF0RGF0ZShnZXRJbnZvaWNlQnlTdGF0dXMoc3RhdHV0LmtleSk/LmRhdGVTdGFtcCkgfX1cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxwIGNsYXNzPVwicmVtaW5kZXItdHlwZVwiPnt7ICR0KCdoaXN0b3JpcXVlLmxhYmVscy5yZW1pbmRlclR5cGUnKSB9fTwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJhdXRvXCIgdi1pZj1cIiFpc0dyYXllZE91dChzdGF0dXQua2V5KVwiPlxuICAgICAgICAgIHt7IGdldEludm9pY2VCeVN0YXR1cyhzdGF0dXQua2V5KT8udHlwZVJlbGFuY2UgfHwgJ+KAlCcgfX1cbiAgICAgICAgPC9wPlxuXG4gICAgICAgIDxwIGNsYXNzPVwicmVtaW5kZXItdXNlclwiIHYtaWY9XCIhaXNHcmF5ZWRPdXQoc3RhdHV0LmtleSlcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtdXNlclwiPjwvaT4gPGJyPlxuICAgICAgICAgIHt7IGdldEludm9pY2VCeVN0YXR1cyhzdGF0dXQua2V5KT8udHJpZ3JhbW1lIHx8ICfigJQnIH19XG4gICAgICAgIDwvcD5cblxuICAgICAgICA8cCBjbGFzcz1cImVtYWlsU2VuZFwiIHYtaWY9XCIhaXNHcmF5ZWRPdXQoc3RhdHV0LmtleSlcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZWNrXCI+PC9pPiB7eyAkdCgnaGlzdG9yaXF1ZS5sYWJlbHMuZW1haWxTZW50JykgfX1cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBwcm9wczoge1xuICAgIGludm9pY2VJZDogeyB0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLCByZXF1aXJlZDogZmFsc2UgfVxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpbnZvaWNlczogW10sXG4gICAgICBjdXJyZW50U3RhdHVzOiAwLFxuICAgICAgc3RhdHV0czogW1xuICAgICAgICB7IGtleTogMSwgY2xhc3M6IFwiczFcIiB9LFxuICAgICAgICB7IGtleTogMiwgY2xhc3M6IFwiczJcIiB9LFxuICAgICAgICB7IGtleTogMywgY2xhc3M6IFwiczNcIiB9LFxuICAgICAgICB7IGtleTogNCwgY2xhc3M6IFwiczRcIiB9LFxuICAgICAgICB7IGtleTogNSwgY2xhc3M6IFwiczVcIiB9LFxuICAgICAgICB7IGtleTogNiwgY2xhc3M6IFwiY29mYWNlMVwiIH0sXG4gICAgICAgIHsga2V5OiA3LCBjbGFzczogXCJjb2ZhY2UyXCIgfVxuICAgICAgXVxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgcmVzb2x2ZWRJbnZvaWNlSWQoKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICAgIHRoaXMuaW52b2ljZUlkIHx8XG4gICAgICAgICAgdGhpcy4kcm91dGU/LnBhcmFtcz8uaW52b2ljZV9pZCB8fFxuICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYXBwSGlzdG9yaXF1ZVwiKT8uZGF0YXNldD8uaW52b2ljZUlkIHx8XG4gICAgICAgICAgbnVsbFxuICAgICAgKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBhc3luYyBmZXRjaEhpc3RvcmlxdWVFbWFpbCgpIHtcbiAgICAgIGlmICghdGhpcy5yZXNvbHZlZEludm9pY2VJZCkge1xuICAgICAgICB0aGlzLmludm9pY2VzID0gW107XG4gICAgICAgIHRoaXMuY3VycmVudFN0YXR1cyA9IDA7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5nZXQoXCIvYXBpL2hpc3RvcmlxdWUvZW1haWxcIiwge1xuICAgICAgICAgIHBhcmFtczogeyBpbnZvaWNlSWQ6IHRoaXMucmVzb2x2ZWRJbnZvaWNlSWQgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pbnZvaWNlcyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogW107XG4gICAgICAgIGNvbnN0IHN0YXR1c2VzID0gdGhpcy5pbnZvaWNlc1xuICAgICAgICAgICAgLm1hcChyID0+IE51bWJlcihyLnJlbWluZF9zdGF0dXMpKVxuICAgICAgICAgICAgLmZpbHRlcihuID0+IE51bWJlci5pc0Zpbml0ZShuKSk7XG4gICAgICAgIHRoaXMuY3VycmVudFN0YXR1cyA9IHN0YXR1c2VzLmxlbmd0aCA/IE1hdGgubWF4KC4uLnN0YXR1c2VzKSA6IDA7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhpcy5pbnZvaWNlcyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnRTdGF0dXMgPSAwO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0SW52b2ljZUJ5U3RhdHVzKHN0YXR1dEtleSkge1xuICAgICAgcmV0dXJuIHRoaXMuaW52b2ljZXMuZmluZChyID0+IE51bWJlcihyLnJlbWluZF9zdGF0dXMpID09PSBOdW1iZXIoc3RhdHV0S2V5KSk7XG4gICAgfSxcbiAgICBpc0dyYXllZE91dChzdGF0dXRLZXkpIHtcbiAgICAgIHJldHVybiBOdW1iZXIoc3RhdHV0S2V5KSA+IE51bWJlcih0aGlzLmN1cnJlbnRTdGF0dXMpO1xuICAgIH0sXG4gICAgZm9ybWF0RGF0ZShpc28pIHtcbiAgICAgIGlmICghaXNvKSByZXR1cm4gXCLigJRcIjtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShpc28pLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLiRpMThuPy5sb2NhbGUgfHwgXCJmci1GUlwiKTtcbiAgICB9XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5mZXRjaEhpc3RvcmlxdWVFbWFpbCgpO1xuICB9XG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4uZ3JheWVkLW91dCB7XG4gIGNvbG9yOiBncmF5O1xuICBvcGFjaXR5OiAwLjQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4ucmVtaW5kZXItdXNlciB7XG4gIGZvbnQtc2l6ZTogMC45ZW07XG4gIGNvbG9yOiAjNjY2O1xuICBtYXJnaW4tdG9wOiAtNHB4O1xuICBtYXJnaW4tbGVmdDogMTAwcHg7XG59XG5cbi5yZW1pbmRlci11c2VyIGkge1xuICBtYXJnaW4tcmlnaHQ6IDZweDtcbiAgY29sb3I6ICM2OTk4ZWQ7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8VG9hc3QgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIi8+XG4gIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSB1cGxvYWQtZmxvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBnYXAtOFwiPlxuICAgICAgPCEtLSBQYXJ0aWUgR2F1Y2hlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZCBtYi0zXCI+e3sgJHQoJ2RvY3VGbG93VXBsb2FkLnRpdGxlMScpIH19PC9oMz5cbiAgICAgICAgICAgIDxEcm9wZG93blxuICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJzZWxlY3RlZERvY3VtZW50XCJcbiAgICAgICAgICAgICAgICA6b3B0aW9ucz1cImRvY3VtZW50VHlwZXNcIlxuICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIHAtaW5wdXR0ZXh0LWxnIG1iLTYgYm9yZGVyIGJvcmRlci1ibHVlLTUwMCByb3VuZGVkLWxnIGRyb3Bkb3duLXVwbG9hZFwiXG4gICAgICAgICAgICAgICAgOmFyaWEtcmVxdWlyZWQ9XCJ0cnVlXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtbGcgZm9udC1zZW1pYm9sZCBtYi0zXCI+e3sgJHQoJ2RvY3VGbG93VXBsb2FkLnRpdGxlMicpIH19PC9oMz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkIGdyaWQtY29scy0zIGdhcC00XCI+XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYmxvY2sgdGV4dC1ncmF5LTcwMCBmb250LW1lZGl1bSBtYi0xXCI+e3sgJHQoJ2RvY3VGbG93VXBsb2FkLnNpdGUnKSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPERyb3Bkb3duXG4gICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJzZWxlY3RlZFNpdGVcIlxuICAgICAgICAgICAgICAgICAgICA6b3B0aW9ucz1cInNpdGVzXCJcbiAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XCIkdCgnZG9jdUZsb3dVcGxvYWQuc2VsZWN0U2l0ZScpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInctZnVsbCBwLWlucHV0dGV4dC1sZyBtYi00IGJvcmRlciBib3JkZXItYmx1ZS01MDAgcm91bmRlZC1sZyBkcm9wZG93bi1zaXRlXCJcbiAgICAgICAgICAgICAgICA6YXJpYS1yZXF1aXJlZD1cInRydWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJibG9jayB0ZXh0LWdyYXktNzAwIGZvbnQtbWVkaXVtIG1iLTFcIj57eyAkdCgnZG9jdUZsb3dVcGxvYWQubGFuZ3VhZ2UnKSB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8RHJvcGRvd25cbiAgICAgICAgICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRMYW5ndWVcIlxuICAgICAgICAgICAgICAgIDpvcHRpb25zPVwibGFuZ3VhZ2VPcHRpb25zXCJcbiAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICA6cGxhY2Vob2xkZXI9XCIkdCgnZG9jdUZsb3dVcGxvYWQuc2VsZWN0TGFuZ3VhZ2UnKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgcC1pbnB1dHRleHQtbGcgbWItNCBib3JkZXIgYm9yZGVyLWJsdWUtNTAwIHJvdW5kZWQtbGcgZHJvcGRvd24tY291bnRyeS1pc29cIlxuICAgICAgICAgICAgICAgIGZpbHRlclxuICAgICAgICAgICAgICAgIDpmaWx0ZXJQbGFjZWhvbGRlcj1cIiR0KCdkb2N1Rmxvd1VwbG9hZC5zZWFyY2gnKVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiB2LWZvcj1cIihmaWVsZCwgaW5kZXgpIGluIGZpZWxkc1wiIDprZXk9XCJmaWVsZC5pZFwiIGNsYXNzPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImJsb2NrIHRleHQtZ3JheS03MDAgZm9udC1tZWRpdW0gbWItMVwiPnt7IGZpZWxkLmxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBmbGV4LWF1dG9cIj5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB2LWlmPVwiZmllbGQudHlwZSA9PT0gJ0RhdGUgZOKAmcOpbWlzc2lvbidcIlxuICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cImZpZWxkLm1vZGVsXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIHAtMiBib3JkZXIgcm91bmRlZC1sZyBpbnB1dC11cGxvYWQgbWItMlwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICAgICAgICB2LW1vZGVsPVwiZmllbGQubW9kZWxcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgcC0yIGJvcmRlciByb3VuZGVkLWxnIGlucHV0LXVwbG9hZCBtYi0yXCJcbiAgICAgICAgICAgICAgICAgIDpyZXF1aXJlZD1cInRydWVcIlxuICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHYtaWY9XCJmaWVsZC5pc0Jhc2UgJiYgZmllbGQudHlwZSAhPT0gJ0RhdGUgZOKAmcOpbWlzc2lvbidcIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiYWRkRmllbGQoZmllbGQudHlwZSlcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYWRkLWlucHV0XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwPis8L3A+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHYtaWY9XCIhZmllbGQuaXNCYXNlXCJcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cInJlbW92ZUZpZWxkKGZpZWxkLmlkLCBmaWVsZC50eXBlKVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBkZWwtaW5wdXRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHA+eDwvcD5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQYXJ0aWUgRHJvaXRlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1jb250YWluZXJcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTNcIj57eyAkdCgnZG9jdUZsb3dVcGxvYWQudGl0bGUzJykgfX08L2gzPlxuICAgICAgICA8RmlsZVVwbG9hZFxuICAgICAgICAgICAgbmFtZT1cImZpbGVcIlxuICAgICAgICAgICAgOmN1c3RvbVVwbG9hZD1cInRydWVcIlxuICAgICAgICAgICAgOmF1dG89XCJmYWxzZVwiXG4gICAgICAgICAgICA6bXVsdGlwbGU9XCJmYWxzZVwiXG4gICAgICAgICAgICBhY2NlcHQ9XCIuanBnLC5wbmcsLnBkZiwueGxzLC5jc3YsLnppcFwiXG4gICAgICAgICAgICA6bWF4RmlsZVNpemU9XCIxMDAwMDAwMFwiXG4gICAgICAgICAgICByZWY9XCJmaWxlVXBsb2FkZXJcIlxuICAgICAgICAgICAgY2xhc3M9XCJjdXN0b20tdXBsb2FkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjZW1wdHk+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1jbG91ZC11cGxvYWQgdXBsb2FkLWljb25cIj48L2k+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidXBsb2FkLXRleHRcIj5cbiAgICAgICAgICAgICAgICB7eyAkdCgnZG9jdUZsb3dVcGxvYWQuZHJvcEZpbGUnKSB9fVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLWxpbmtcIiBAY2xpY2s9XCJicm93c2VGaWxlXCI+e3sgJHQoJ2RvY3VGbG93VXBsb2FkLmJyb3dzZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidXBsb2FkLWluZm9cIj57eyAkdCgnZG9jdUZsb3dVcGxvYWQuc3VwcG9ydGVkVHlwZXMnKSB9fTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvRmlsZVVwbG9hZD5cbiAgICAgICAgPHAgY2xhc3M9XCJmaWxlLXR5cGVzXCI+e3sgJHQoJ2RvY3VGbG93VXBsb2FkLnN1cHBvcnRlZCcpIH19PC9wPlxuICAgICAgICA8QnV0dG9uIDpsYWJlbD1cIiR0KCd1cGxvYWQuc2VuZCcpXCIgQGNsaWNrPVwiaGFuZGxlVXBsb2FkXCIgY2xhc3M9XCJzdWJtaXQtdXBsb2FkXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8aDIgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZCB0YWJsZS11cGxvYWQtaDJcIj57eyAkdCgnZG9jdUZsb3dVcGxvYWQudGFibGVUaXRsZScpIH19PC9oMj5cbiAgPGRpdiBjbGFzcz1cInAtNiBiZy13aGl0ZSByb3VuZGVkLWxnIHNoYWRvdy1sZyBtYXgtdy03eGwgbXgtYXV0byB0YWJsZS11cGxvYWRcIj5cbiAgICA8RGF0YVRhYmxlIDp2YWx1ZT1cInVwbG9hZGVkRmlsZXNcIiByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCIgY2xhc3M9XCJtdC00XCI+XG4gICAgICA8Q29sdW1uIGZpZWxkPVwidHlwZVwiIDpoZWFkZXI9XCIkdCgnZG9jdUZsb3dVcGxvYWQudGFibGUudHlwZScpXCIgOnN0eWxlPVwie3dpZHRoOic4NXB4J31cIj5cbiAgICAgICAgPHRlbXBsYXRlICNib2R5PVwieyBkYXRhIH1cIj5cbiAgICAgICAgICA8VGFnIDp2YWx1ZT1cImRhdGEudHlwZVwiIDpzdHlsZT1cImdldFR5cGVTdHlsZShkYXRhLnR5cGUpXCIgLz5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIDwvQ29sdW1uPlxuICAgICAgPENvbHVtblxuICAgICAgICAgIGZpZWxkPVwic3RvcmVkX25hbWVcIlxuICAgICAgICAgIDpoZWFkZXI9XCIkdCgnZG9jdUZsb3dVcGxvYWQudGFibGUubmFtZScpXCJcbiAgICAgICAgICA6Ym9keVN0eWxlPVwieyBtYXhXaWR0aDogJzMwMHB4Jywgb3ZlcmZsb3c6ICdoaWRkZW4nIH1cIlxuICAgICAgPlxuICAgICAgICA8dGVtcGxhdGUgI2JvZHk9XCJ7IGRhdGEgfVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0cnVuY2F0ZSB3aGl0ZXNwYWNlLW5vd3JhcCBvdmVyZmxvdy1oaWRkZW4gdGV4dC1lbGxpcHNpc1wiXG4gICAgICAgICAgICAgIHYtdG9vbHRpcC50b3A9XCJkYXRhLnN0b3JlZF9uYW1lXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBkYXRhLnN0b3JlZF9uYW1lIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L0NvbHVtbj5cblxuICAgICAgPENvbHVtbiBmaWVsZD1cInNpemVcIiA6aGVhZGVyPVwiJHQoJ2RvY3VGbG93VXBsb2FkLnRhYmxlLnNpemUnKVwiIC8+XG4gICAgICA8Q29sdW1uIGZpZWxkPVwiZGF0ZVwiIDpoZWFkZXI9XCIkdCgnZG9jdUZsb3dVcGxvYWQudGFibGUuY3JlYXRlZEF0JylcIiAvPlxuICAgICAgPENvbHVtbiBmaWVsZD1cImNvbnRyaWJ1dG9yXCIgOmhlYWRlcj1cIiR0KCdkb2N1Rmxvd1VwbG9hZC50YWJsZS5jb250cmlidXRvcicpXCIgLz5cbiAgICAgIDxDb2x1bW4gZmllbGQ9XCJzdGF0dXNcIiA6aGVhZGVyPVwiJHQoJ2RvY3VGbG93VXBsb2FkLnRhYmxlLnN0YXR1cycpXCI+XG4gICAgICAgIDx0ZW1wbGF0ZSAjYm9keT1cInsgZGF0YSB9XCI+XG4gICAgICAgICAgPFRhZ1xuICAgICAgICAgICAgICA6dmFsdWU9XCJ0KCdkb2N1Rmxvd1VwbG9hZC5zdGF0dXMuJyArIGdldFN0YXR1c0tleShkYXRhLnN0YXR1cykpXCJcbiAgICAgICAgICAgICAgOnN0eWxlPVwie1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGRhdGEuc3RhdHVzID09PSAnYWN0aXZlJyA/ICcjMDBCRTc5JyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN0YXR1cyA9PT0gJ2FyY2hpdmVkJyA/ICcjRjRBRTJCJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN0YXR1cyA9PT0gJ2Rpc2FibGVkJyA/ICcjRkY0RjRGJyA6ICcjY2NjJyxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCdcbiAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIDwvQ29sdW1uPlxuICAgICAgPENvbHVtbiBjbGFzcz1cImFjdGlvbi1jb2xcIiA6c3R5bGU9XCJ7d2lkdGg6Jzg1cHgnfVwiPlxuICAgICAgICA8dGVtcGxhdGUgI2JvZHk9XCJ7IGRhdGEgfVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBpbmxpbmUtYmxvY2sgdGV4dC1sZWZ0XCI+XG4gICAgICAgICAgICA8QnV0dG9uIGljb249XCJwaSBwaS1lbGxpcHNpcy12XCIgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIiBAY2xpY2s9XCJ0b2dnbGVNZW51KCRldmVudCwgZGF0YSlcIiAvPlxuICAgICAgICAgICAgPE1lbnUgOm1vZGVsPVwic2VsZWN0ZWRSb3c/LnN0YXR1cyA9PT0gJ0FyY2hpdsOpJyA/IG1lbnVBcmNoaXZlT25seSA6IG1lbnVGdWxsSXRlbXNcIiA6cG9wdXA9XCJ0cnVlXCIgcmVmPVwibWVudVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L0NvbHVtbj5cbiAgICA8L0RhdGFUYWJsZT5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwPlxuaW1wb3J0IHsgcmVmLCB3YXRjaCwgb25Nb3VudGVkIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IEZpbGVVcGxvYWQgZnJvbSBcInByaW1ldnVlL2ZpbGV1cGxvYWRcIjtcbmltcG9ydCBEYXRhVGFibGUgZnJvbSBcInByaW1ldnVlL2RhdGF0YWJsZVwiO1xuaW1wb3J0IENvbHVtbiBmcm9tIFwicHJpbWV2dWUvY29sdW1uXCI7XG5pbXBvcnQgRHJvcGRvd24gZnJvbSBcInByaW1ldnVlL2Ryb3Bkb3duXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJwcmltZXZ1ZS9idXR0b25cIjtcbmltcG9ydCBUYWcgZnJvbSBcInByaW1ldnVlL3RhZ1wiO1xuaW1wb3J0IHsgdXNlVG9hc3QgfSBmcm9tIFwicHJpbWV2dWUvdXNldG9hc3RcIjtcbmltcG9ydCBUb2FzdCBmcm9tICdwcmltZXZ1ZS90b2FzdCc7XG5cbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgTWVudSBmcm9tICdwcmltZXZ1ZS9tZW51JztcbmltcG9ydCBjb3VudHJpZXMgZnJvbSBcImkxOG4taXNvLWNvdW50cmllc1wiO1xuaW1wb3J0IGVuTG9jYWxlIGZyb20gXCJpMThuLWlzby1jb3VudHJpZXMvbGFuZ3MvZW4uanNvblwiO1xuaW1wb3J0IFRvb2x0aXAgZnJvbSAncHJpbWV2dWUvdG9vbHRpcCc7XG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSAndnVlLWkxOG4nO1xuXG5jb25zdCB0b2FzdCA9IHVzZVRvYXN0KCk7XG5jb25zdCBmaWxlVXBsb2FkZXIgPSByZWYobnVsbCk7XG5jb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIERyb3Bkb3duc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IGRvY3VtZW50VHlwZXMgPSByZWYoW1xuICB7IGxhYmVsOiB0KCdkb2N1Rmxvd1VwbG9hZC5kb2N1bWVudFR5cGVzLlREUycpLCB2YWx1ZTogXCJURFNcIiB9LFxuICB7IGxhYmVsOiB0KCdkb2N1Rmxvd1VwbG9hZC5kb2N1bWVudFR5cGVzLlNEUycpLCB2YWx1ZTogXCJTRFNcIiB9LFxuICB7IGxhYmVsOiB0KCdkb2N1Rmxvd1VwbG9hZC5kb2N1bWVudFR5cGVzLkNPQycpLCB2YWx1ZTogXCJDT0NcIiB9LFxuICB7IGxhYmVsOiB0KCdkb2N1Rmxvd1VwbG9hZC5kb2N1bWVudFR5cGVzLkNPQScpLCB2YWx1ZTogXCJDT0FcIiB9LFxuICB7IGxhYmVsOiB0KCdkb2N1Rmxvd1VwbG9hZC5kb2N1bWVudFR5cGVzLkJBTVMnKSwgdmFsdWU6IFwiQkFNU1wiIH0sXG4gIHsgbGFiZWw6IHQoJ2RvY3VGbG93VXBsb2FkLmRvY3VtZW50VHlwZXMuSUZUSCcpLCB2YWx1ZTogXCJJRlRIXCIgfSxcbiAgeyBsYWJlbDogdCgnZG9jdUZsb3dVcGxvYWQuZG9jdW1lbnRUeXBlcy5ERVJPRycpLCB2YWx1ZTogXCJERVJPR1wiIH0sXG4gIHsgbGFiZWw6IHQoJ2RvY3VGbG93VXBsb2FkLmRvY3VtZW50VHlwZXMuRkFJJyksIHZhbHVlOiBcIkZBSVwiIH0sXG4gIHsgbGFiZWw6IHQoJ2RvY3VGbG93VXBsb2FkLmRvY3VtZW50VHlwZXMuV1InKSwgdmFsdWU6IFwiV1JcIiB9XG5dKTtcbmNvbnN0IHNlbGVjdGVkRG9jdW1lbnQgPSByZWYoZG9jdW1lbnRUeXBlcy52YWx1ZVswXSk7XG5cbmNvbnN0IHNpdGVzID0gcmVmKFtcbiAgeyBsYWJlbDogXCJBMDcgLSBBRERFViBBREhJU1wiLCB2YWx1ZTogXCJBMDdcIiB9LFxuICB7IGxhYmVsOiBcIkEwNiAtIEFESElTIENoYXNzaWV1XCIsIHZhbHVlOiBcIkEwNlwifSxcbiAgeyBsYWJlbDogXCJFMDEgLSBBRERFViBNSUNFTFwiLCB2YWx1ZTogXCJFMDFcIiB9LFxuICB7IGxhYmVsOiBcIkcwMSAtIEFEREVWIE1hdGVyaWFscyBTcCBab29cIiwgdmFsdWU6IFwiRzAxXCIgfSxcbiAgeyBsYWJlbDogXCJYMDEgLSBBTUFGXCIsIHZhbHVlOiBcIlgwMVwiIH0sXG4gIHsgbGFiZWw6IFwiUDAxIC0gQURERVYgUFJPRk9NXCIsIHZhbHVlOiBcIlAwMVwiIH0sXG5dKTtcblxuY291bnRyaWVzLnJlZ2lzdGVyTG9jYWxlKGVuTG9jYWxlKTtcbmNvbnN0IHNlbGVjdGVkTGFuZ3VlID0gcmVmKG51bGwpO1xuXG5jb25zdCBwcmlvcml0eUxhbmdzID0gW1xuICB7IGxhYmVsOiBcIkZyYW7Dp2Fpc1wiLCB2YWx1ZTogXCJGUlwiIH0sXG4gIHsgbGFiZWw6IFwiQW5nbGFpc1wiLCB2YWx1ZTogXCJFTlwiIH0sXG4gIHsgbGFiZWw6IFwiQWxsZW1hbmRcIiwgdmFsdWU6IFwiREVcIiB9XG5dO1xuXG5jb25zdCBhbGxDb3VudHJpZXMgPSBPYmplY3QuZW50cmllcyhjb3VudHJpZXMuZ2V0TmFtZXMoXCJlblwiKSkubWFwKChbY29kZSwgbmFtZV0pID0+ICh7XG4gIGxhYmVsOiBgJHtnZXRGbGFnRW1vamkoY29kZSl9ICR7bmFtZX1gLFxuICB2YWx1ZTogY29kZVxufSkpO1xuXG5jb25zdCByZW1haW5pbmdDb3VudHJpZXMgPSBhbGxDb3VudHJpZXMuZmlsdGVyKGMgPT5cbiAgICAhcHJpb3JpdHlMYW5ncy5maW5kKHAgPT4gcC52YWx1ZSA9PT0gYy52YWx1ZSlcbik7XG5yZW1haW5pbmdDb3VudHJpZXMuc29ydCgoYSwgYikgPT4gYS5sYWJlbC5sb2NhbGVDb21wYXJlKGIubGFiZWwpKTtcbmNvbnN0IHNlcGFyYXRvciA9IHsgbGFiZWw6ICctIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gJywgdmFsdWU6IG51bGwsIGRpc2FibGVkOiB0cnVlIH07XG5jb25zdCBsYW5ndWFnZU9wdGlvbnMgPSByZWYoWy4uLnByaW9yaXR5TGFuZ3MsIHNlcGFyYXRvciwgLi4ucmVtYWluaW5nQ291bnRyaWVzXSk7XG5cbmZ1bmN0aW9uIGdldEZsYWdFbW9qaShjb3VudHJ5Q29kZSkge1xuICBjb25zdCBjb2RlUG9pbnRzID0gY291bnRyeUNvZGUudG9VcHBlckNhc2UoKS5zcGxpdCgnJykubWFwKGNoYXIgPT4gMTI3Mzk3ICsgY2hhci5jaGFyQ29kZUF0KCkpO1xuICByZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uY29kZVBvaW50cyk7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUYWJsZSArIEZpZWxkc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IHNlbGVjdGVkU2l0ZSA9IHJlZihudWxsKTtcbmNvbnN0IGZpZWxkSWQgPSByZWYoMSk7XG5jb25zdCBjb3VudHMgPSByZWYoe30pO1xuY29uc3QgZmllbGRzID0gcmVmKFtdKTtcbmNvbnN0IHVwbG9hZGVkRmlsZXMgPSByZWYoW10pO1xuY29uc3QgbWVudSA9IHJlZihudWxsKTtcbmNvbnN0IHNlbGVjdGVkUm93ID0gcmVmKG51bGwpO1xuXG5jb25zdCB0b2dnbGVNZW51ID0gKGV2ZW50LCByb3dEYXRhKSA9PiB7XG4gIHNlbGVjdGVkUm93LnZhbHVlID0gcm93RGF0YTtcbiAgbWVudS52YWx1ZS50b2dnbGUoZXZlbnQpO1xufTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE1lbnUgQWN0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IG1lbnVGdWxsSXRlbXMgPSBbXG4gIHsgbGFiZWw6ICdUw6lsw6ljaGFyZ2VyJywgaWNvbjogJ3BpIHBpLWRvd25sb2FkJywgY29tbWFuZDogKCkgPT4gc2VsZWN0ZWRSb3cudmFsdWUgJiYgZG93bmxvYWREb2N1bWVudChzZWxlY3RlZFJvdy52YWx1ZS5zdG9yZWRfbmFtZSkgfSxcbiAgeyBzZXBhcmF0b3I6IHRydWUgfSxcbiAge1xuICAgIGxhYmVsOiAnQXJjaGl2ZXInLCBpY29uOiAncGkgcGktZm9sZGVyJyxcbiAgICBjb21tYW5kOiBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0ZWRSb3cudmFsdWUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBheGlvcy5wb3N0KGAvYXBpL2RvY3VtZW50LyR7c2VsZWN0ZWRSb3cudmFsdWUuaWR9L2FyY2hpdmVgKTtcbiAgICAgICAgICB0b2FzdC5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiAnQXJjaGl2w6knLCBkZXRhaWw6ICdMZSBmaWNoaWVyIGEgw6l0w6kgYXJjaGl2w6kuJywgbGlmZTogMzAwMCB9KTtcbiAgICAgICAgICBhd2FpdCBmZXRjaE15VXBsb2FkcygpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICB0b2FzdC5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ0VycmV1cicsIGRldGFpbDogJ8OJY2hlYyBkZSBs4oCZYXJjaGl2YWdlJywgbGlmZTogMzAwMCB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnQWN0aXZlcicsIGljb246ICdwaSBwaS1jaGVjaycsXG4gICAgY29tbWFuZDogYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHNlbGVjdGVkUm93LnZhbHVlKSB7XG4gICAgICAgIGF3YWl0IGF4aW9zLnBvc3QoYC9hcGkvZG9jdW1lbnQvJHtzZWxlY3RlZFJvdy52YWx1ZS5pZH0vYWN0aXZhdGVgKTtcbiAgICAgICAgdG9hc3QuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0FjdGl2w6knLCBkZXRhaWw6ICdEb2N1bWVudCBhY3RpdsOpJyB9KTtcbiAgICAgICAgYXdhaXQgZmV0Y2hNeVVwbG9hZHMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0TDqXNhY3RpdmVyJywgaWNvbjogJ3BpIHBpLWJhbicsXG4gICAgY29tbWFuZDogYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHNlbGVjdGVkUm93LnZhbHVlKSB7XG4gICAgICAgIGF3YWl0IGF4aW9zLnBvc3QoYC9hcGkvZG9jdW1lbnQvJHtzZWxlY3RlZFJvdy52YWx1ZS5pZH0vZGVhY3RpdmF0ZWApO1xuICAgICAgICB0b2FzdC5hZGQoeyBzZXZlcml0eTogJ3dhcm4nLCBzdW1tYXJ5OiAnRMOpc2FjdGl2w6knLCBkZXRhaWw6ICdEb2N1bWVudCBkw6lzYWN0aXbDqScgfSk7XG4gICAgICAgIGF3YWl0IGZldGNoTXlVcGxvYWRzKCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdTdXBwcmltZXInLCBpY29uOiAncGkgcGktdHJhc2gnLFxuICAgIGNvbW1hbmQ6IGFzeW5jICgpID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZFJvdy52YWx1ZSAmJiB3aW5kb3cuY29uZmlybSgnRXMtdHUgc8O7ciBkZSB2b3Vsb2lyIHN1cHByaW1lciBjZSBkb2N1bWVudCA/JykpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBheGlvcy5kZWxldGUoYC9hcGkvZG9jdW1lbnQvJHtzZWxlY3RlZFJvdy52YWx1ZS5pZH0vZGVsZXRlYCk7XG4gICAgICAgICAgdG9hc3QuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ1N1cHByaW3DqScsIGRldGFpbDogJ0RvY3VtZW50IHN1cHByaW3DqScsIGxpZmU6IDMwMDAgfSk7XG4gICAgICAgICAgYXdhaXQgZmV0Y2hNeVVwbG9hZHMoKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgdG9hc3QuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJldXInLCBkZXRhaWw6ICfDiWNoZWMgZGUgbGEgc3VwcHJlc3Npb24nLCBsaWZlOiAzMDAwIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5dO1xuXG5jb25zdCBtZW51QXJjaGl2ZU9ubHkgPSBbXG4gIHtcbiAgICBsYWJlbDogJ0TDqXNhcmNoaXZlcicsXG4gICAgaWNvbjogJ3BpIHBpLWZvbGRlci1vcGVuJyxcbiAgICBjb21tYW5kOiBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoc2VsZWN0ZWRSb3cudmFsdWUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBheGlvcy5wb3N0KGAvYXBpL2RvY3VtZW50LyR7c2VsZWN0ZWRSb3cudmFsdWUuaWR9L3VuYXJjaGl2ZWApO1xuICAgICAgICAgIHRvYXN0LmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6ICdEw6lzYXJjaGl2w6knLCBkZXRhaWw6ICdGaWNoaWVyIGTDqXNhcmNoaXbDqS4nIH0pO1xuICAgICAgICAgIGF3YWl0IGZldGNoTXlVcGxvYWRzKCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHRvYXN0LmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiAnRXJyZXVyJywgZGV0YWlsOiAnw4ljaGVjIGR1IGTDqXNhcmNoaXZhZ2UnIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5dO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRmllbGQgQ29uZmlndXJhdGlvbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBmaWVsZENvbmZpZ3MgPSB7XG4gIFREUzogW1wiU0tVXCJdLFxuICBTRFM6IFtcIlNLVVwiXSxcbiAgQ09DOiBbXCJObyBMb3RcIiwgXCJObyBkZSBsb3QgZm91cm5pc3NldXJcIiwgXCJTS1VcIiBdLFxuICBDT0E6IFtcIk5vIExvdFwiLCBcIk5vIGRlIGxvdCBmb3Vybmlzc2V1clwiLCBcIlNLVVwiIF0sXG4gIEJBTVM6IFtcIlNLVVwiLCBcIk5vIExvdFwiLCBcIk5vIGRlIGxvdCBmb3Vybmlzc2V1clwiXSxcbiAgSUZUSDogW1wiU0tVXCIsIFwiTm8gTG90XCIsIFwiTm8gZGUgbG90IGZvdXJuaXNzZXVyXCJdLFxuICBERVJPRzogW1wiSUQgQ3VzdG9tZXJcIiwgXCJTS1VcIiwgXCJObyBERVJPR0FUSU9OXCIsIFwiTm8gTG90XCIsIFwiTm8gZGUgbG90IGZvdXJuaXNzZXVyXCJdLFxuICBGQUk6IFtcIk5vIExvdFwiLCBcIk5vIGRlIGxvdCBmb3Vybmlzc2V1clwiLCBcIlNLVVwiLCBcIkRhdGUgZOKAmcOpbWlzc2lvblwiXSxcbiAgV1I6IFtcIk5vIExvdFwiLCBcIk5vIGRlIGxvdCBmb3Vybmlzc2V1clwiLCBcIlNLVVwiXVxufTtcblxuY29uc3Qgbm9ybWFsaXplRmllbGRLZXkgPSAodGV4dCkgPT5cbiAgICB0ZXh0Lm5vcm1hbGl6ZShcIk5GRFwiKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXFxz4oCZJy4tXS9nLCAnXycpLnJlcGxhY2UoL1teYS16MC05X10vZywgJycpO1xuXG5jb25zdCBnZW5lcmF0ZUZpZWxkcyA9IChkb2NUeXBlKSA9PiB7XG4gIGZpZWxkcy52YWx1ZSA9IFtdO1xuICBjb3VudHMudmFsdWUgPSB7fTtcbiAgY29uc3QgdHlwZXMgPSBmaWVsZENvbmZpZ3NbZG9jVHlwZV0gfHwgW107XG4gIHR5cGVzLmZvckVhY2godHlwZSA9PiB7XG4gICAgY291bnRzLnZhbHVlW3R5cGVdID0gMDtcbiAgICBmaWVsZHMudmFsdWUucHVzaCh7XG4gICAgICBpZDogZmllbGRJZC52YWx1ZSsrLFxuICAgICAgdHlwZSxcbiAgICAgIGxhYmVsOiBgJHt0KCdkb2N1Rmxvd1VwbG9hZC5maWVsZHMuJyArIG5vcm1hbGl6ZUZpZWxkS2V5KHR5cGUpKX0gKmAsXG4gICAgICBtb2RlbDogXCJcIixcbiAgICAgIGlzQmFzZTogdHJ1ZVxuICAgIH0pO1xuICB9KTtcbn07XG53YXRjaChzZWxlY3RlZERvY3VtZW50LCAobmV3RG9jKSA9PiBnZW5lcmF0ZUZpZWxkcyhuZXdEb2MudmFsdWUpLCB7IGltbWVkaWF0ZTogdHJ1ZSB9KTtcblxuY29uc3QgYWRkRmllbGQgPSAodHlwZSkgPT4ge1xuICBjb3VudHMudmFsdWVbdHlwZV0rKztcbiAgY29uc3QgZmllbGRLZXkgPSBub3JtYWxpemVGaWVsZEtleSh0eXBlKTtcbiAgY29uc3QgdHJhbnNsYXRlZExhYmVsID0gYCR7dCgnZG9jdUZsb3dVcGxvYWQuZmllbGRzLicgKyBmaWVsZEtleSl9ICR7Y291bnRzLnZhbHVlW3R5cGVdfWA7XG4gIGNvbnN0IG5ld0ZpZWxkID0geyBpZDogZmllbGRJZC52YWx1ZSsrLCB0eXBlLCBsYWJlbDogdHJhbnNsYXRlZExhYmVsLCBtb2RlbDogXCJcIiwgaXNCYXNlOiBmYWxzZSB9O1xuICBjb25zdCBsYXN0SW5kZXggPSBmaWVsZHMudmFsdWUubWFwKGYgPT4gZi50eXBlKS5sYXN0SW5kZXhPZih0eXBlKTtcbiAgZmllbGRzLnZhbHVlLnNwbGljZShsYXN0SW5kZXggKyAxLCAwLCBuZXdGaWVsZCk7XG59O1xuY29uc3QgcmVtb3ZlRmllbGQgPSAoaWQsIHR5cGUpID0+IHtcbiAgZmllbGRzLnZhbHVlID0gZmllbGRzLnZhbHVlLmZpbHRlcihmID0+IGYuaWQgIT09IGlkKTtcbiAgY291bnRzLnZhbHVlW3R5cGVdID0gZmllbGRzLnZhbHVlLmZpbHRlcihmID0+IGYudHlwZSA9PT0gdHlwZSAmJiAhZi5pc0Jhc2UpLmxlbmd0aDtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVcGxvYWQgbG9naWNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBmZXRjaE15VXBsb2FkcyA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGF4aW9zLmdldCgnL2FwaS9teS10b2RheXMtdXBsb2FkcycpO1xuICAgIHVwbG9hZGVkRmlsZXMudmFsdWUgPSBkYXRhLm1hcChmID0+ICh7XG4gICAgICBpZDogZi5pZCxcbiAgICAgIHR5cGU6IGYudHlwZSxcbiAgICAgIHN0b3JlZF9uYW1lOiBmLnN0b3JlZF9uYW1lLFxuICAgICAgc2l6ZTogKGYuZmlsZV9zaXplIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSArICcgTWInLFxuICAgICAgZGF0ZTogbmV3IERhdGUoZi5jcmVhdGVkX2F0KS50b0xvY2FsZURhdGVTdHJpbmcoKSxcbiAgICAgIGNvbnRyaWJ1dG9yOiBmLmNvbnRyaWJ1dG9yLFxuICAgICAgc3RhdHVzOiBmLmlzX2FyY2hpdmVkID8gJ2FyY2hpdmVkJyA6IGYuaXNfYWN0aXZlID8gJ2FjdGl2ZScgOiAnZGlzYWJsZWQnXG4gICAgfSkpO1xuICB9IGNhdGNoIHtcbiAgICB0b2FzdC5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ0VycmV1cicsIGRldGFpbDogJ0NoYXJnZW1lbnQgZGVzIGZpY2hpZXJzIGltcG9zc2libGUnLCBsaWZlOiAzMDAwIH0pO1xuICB9XG59O1xub25Nb3VudGVkKGZldGNoTXlVcGxvYWRzKTtcblxuY29uc3QgaGFuZGxlVXBsb2FkID0gYXN5bmMgKCkgPT4ge1xuICB0b2FzdC5hZGQoeyBzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiAnRW52b2kgZW4gY291cnMnLCBkZXRhaWw6ICdWb3RyZSBmaWNoaWVyIGVzdCBlbiB0cmFpbiBk4oCZw6p0cmUgZW52b3nDqS4uLicsIGxpZmU6IDMwMDAgfSk7XG5cbiAgY29uc3QgZmlsZSA9IGZpbGVVcGxvYWRlci52YWx1ZS5maWxlc1swXTtcbiAgaWYgKCFmaWxlKSByZXR1cm4gdG9hc3QuYWRkKHsgc2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogJ0F1Y3VuIGZpY2hpZXInLCBkZXRhaWw6ICdWZXVpbGxleiBzw6lsZWN0aW9ubmVyIHVuIGZpY2hpZXInLCBsaWZlOiAzMDAwIH0pO1xuICBpZiAoIXNlbGVjdGVkU2l0ZS52YWx1ZSB8fCAhc2VsZWN0ZWRMYW5ndWUudmFsdWUpXG4gICAgcmV0dXJuIHRvYXN0LmFkZCh7IHNldmVyaXR5OiAnd2FybicsIHN1bW1hcnk6ICdDaGFtcHMgcmVxdWlzJywgZGV0YWlsOiAnVmV1aWxsZXogc8OpbGVjdGlvbm5lciB1biBzaXRlIGV0IHVuZSBsYW5ndWUuJywgbGlmZTogMzAwMCB9KTtcblxuICBjb25zdCBlbXB0eUZpZWxkID0gZmllbGRzLnZhbHVlLmZpbmQoZiA9PlxuICAgICAgKFxuICAgICAgICAgICFmLm1vZGVsIHx8XG4gICAgICAgICAgKHR5cGVvZiBmLm1vZGVsID09PSAnc3RyaW5nJyAmJiBmLm1vZGVsLnRyaW0oKSA9PT0gJycpXG4gICAgICApXG4gICAgICAmJiAhZi50eXBlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2ZvdXJuaXNzZXVyJykgLy8g4pyFIG9uIGlnbm9yZSBcImxvdCBmb3Vybmlzc2V1clwiXG4gICk7XG5cbiAgaWYgKGVtcHR5RmllbGQpXG4gICAgcmV0dXJuIHRvYXN0LmFkZCh7IHNldmVyaXR5OiAnd2FybicsIHN1bW1hcnk6ICdDaGFtcHMgcmVxdWlzJywgZGV0YWlsOiBgTGUgY2hhbXAgXCIke2VtcHR5RmllbGQubGFiZWx9XCIgZXN0IHZpZGUuYCwgbGlmZTogMzAwMCB9KTtcblxuICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgZm9ybURhdGEuYXBwZW5kKCd0eXBlJywgc2VsZWN0ZWREb2N1bWVudC52YWx1ZS52YWx1ZSk7XG4gIGZvcm1EYXRhLmFwcGVuZCgnc2l0ZScsIHNlbGVjdGVkU2l0ZS52YWx1ZSB8fCAnJyk7XG4gIGZvcm1EYXRhLmFwcGVuZCgnY29udHJpYnV0b3InLCAnQ0RBJyk7XG4gIGZvcm1EYXRhLmFwcGVuZCgnY3JlYXRpb25EYXRlJywgbmV3IERhdGUoKS50b0lTT1N0cmluZygpKTtcbiAgZm9ybURhdGEuYXBwZW5kKCdsYW5ndWUnLCBzZWxlY3RlZExhbmd1ZS52YWx1ZSk7XG5cbiAgY29uc3Qgc2t1TGlzdCA9IFtdO1xuICBjb25zdCBleHRyYUZpZWxkcyA9IHt9O1xuXG4gIGZpZWxkcy52YWx1ZS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICBjb25zdCBrZXkgPSBmaWVsZC50eXBlLm5vcm1hbGl6ZShcIk5GRFwiKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJykudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXFxz4oCZJ10rL2csICdfJykucmVwbGFjZSgvW15hLXowLTlfXS9nLCAnJyk7XG5cbiAgICBpZiAoa2V5LmluY2x1ZGVzKCdmb3Vybmlzc2V1cicpKSB7XG4gICAgICBpZiAoIWV4dHJhRmllbGRzLmxvdF9zdXBwbGllcikgZXh0cmFGaWVsZHMubG90X3N1cHBsaWVyID0gW107XG4gICAgICBleHRyYUZpZWxkcy5sb3Rfc3VwcGxpZXIucHVzaChmaWVsZC5tb2RlbCk7XG4gICAgfSBlbHNlIGlmIChrZXkuaW5jbHVkZXMoJ2xvdCcpIHx8IGtleS5pbmNsdWRlcygnbm9fbG90JykgfHwga2V5LmluY2x1ZGVzKCdsb3RfZmFicmljYW50JykpIHtcbiAgICAgIGlmICghZXh0cmFGaWVsZHMubG90X251bWJlcikgZXh0cmFGaWVsZHMubG90X251bWJlciA9IFtdO1xuICAgICAgZXh0cmFGaWVsZHMubG90X251bWJlci5wdXNoKGZpZWxkLm1vZGVsKTtcbiAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3NrdScpIHtcbiAgICAgIHNrdUxpc3QucHVzaChmaWVsZC5tb2RlbCk7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRlX2RfZW1pc3Npb24nKSB7XG4gICAgICBleHRyYUZpZWxkc1trZXldID0gZmllbGQubW9kZWwgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgPyBmaWVsZC5tb2RlbC50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF1cbiAgICAgICAgICA6IGZpZWxkLm1vZGVsO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHRyYUZpZWxkc1trZXldID0gZmllbGQubW9kZWw7XG4gICAgfVxuICB9KTtcblxuICBpZiAoZXh0cmFGaWVsZHMubG90X251bWJlcikge1xuICAgIGV4dHJhRmllbGRzLmxvdF9udW1iZXIuZm9yRWFjaChsID0+IGZvcm1EYXRhLmFwcGVuZCgnbG90X251bWJlcltdJywgbCkpO1xuICAgIGRlbGV0ZSBleHRyYUZpZWxkcy5sb3RfbnVtYmVyO1xuICB9XG4gIGlmIChleHRyYUZpZWxkcy5sb3Rfc3VwcGxpZXIpIHtcbiAgICBleHRyYUZpZWxkcy5sb3Rfc3VwcGxpZXIuZm9yRWFjaChsID0+IGZvcm1EYXRhLmFwcGVuZCgnbG90X3N1cHBsaWVyW10nLCBsKSk7XG4gICAgZGVsZXRlIGV4dHJhRmllbGRzLmxvdF9zdXBwbGllcjtcbiAgfVxuXG4gIHNrdUxpc3QuZm9yRWFjaChza3UgPT4gZm9ybURhdGEuYXBwZW5kKCdza3VbXScsIHNrdSkpO1xuICBPYmplY3QuZW50cmllcyhleHRyYUZpZWxkcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiBmb3JtRGF0YS5hcHBlbmQoa2V5LCB2YWx1ZSkpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgYXhpb3MucG9zdCgnL3VwbG9hZC1kb2N1bWVudCcsIGZvcm1EYXRhLCB7IGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyB9IH0pO1xuICAgIGZpbGVVcGxvYWRlci52YWx1ZS5jbGVhcigpO1xuICAgIGF3YWl0IGZldGNoTXlVcGxvYWRzKCk7XG4gICAgdG9hc3QuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ1N1Y2PDqHMnLCBkZXRhaWw6ICdMZSBmaWNoaWVyIGEgw6l0w6kgdMOpbMOpdmVyc8OpIGF2ZWMgc3VjY8OocyAhJywgbGlmZTogMzAwMCB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0b2FzdC5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogJ0VycmV1cicsIGRldGFpbDogJ1TDqWzDqXZlcnNlbWVudCDDqWNob3XDqScsIGxpZmU6IDMwMDAgfSk7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIH1cbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVdGlsc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IGJyb3dzZUZpbGUgPSAoKSA9PiBmaWxlVXBsb2FkZXIudmFsdWU/LmNob29zZSgpO1xuXG5jb25zdCBkb3dubG9hZERvY3VtZW50ID0gKGZpbGVuYW1lKSA9PiB7XG4gIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYC9kb3dubG9hZC1kb2N1bWVudC8ke2VuY29kZVVSSUNvbXBvbmVudChmaWxlbmFtZSl9YDtcbn07XG5cbmNvbnN0IGdldFR5cGVTdHlsZSA9ICh0eXBlKSA9PiAoe1xuICBiYWNrZ3JvdW5kQ29sb3I6ICcjMDA0MkZGJyxcbiAgY29sb3I6ICd3aGl0ZScsXG4gIGJvcmRlcjogJ25vbmUnLFxuICBmb250V2VpZ2h0OiAnYm9sZCdcbn0pO1xuXG5jb25zdCBnZXRTdGF0dXNLZXkgPSAoc3RhdHVzKSA9PlxuICAgIFsnYXJjaGl2ZWQnLCAnYWN0aXZlJywgJ2Rpc2FibGVkJ10uaW5jbHVkZXMoc3RhdHVzKSA/IHN0YXR1cyA6ICd1bmtub3duJztcbjwvc2NyaXB0PlxuXG5cblxuPHN0eWxlIHNjb3BlZD5cblxuLnVwbG9hZC1zZWN0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBtYXJnaW4tbGVmdDogMTVlbTtcbn1cblxuLmN1c3RvbS11cGxvYWQge1xuICAvKmJvcmRlcjogMnB4IGRhc2hlZCAjQjBCN0JEICFpbXBvcnRhbnQ7Ki9cbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBwYWRkaW5nOiA0MHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2UtaW4tb3V0O1xufVxuXG4udXBsb2FkLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi51cGxvYWQtY29udGFpbmVyIGgzIHtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLmN1c3RvbS11cGxvYWQ6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmNGY2O1xufVxuXG4udXBsb2FkLWljb24ge1xuICBmb250LXNpemU6IDJyZW07XG4gIGNvbG9yOiAjMDA0MkZGO1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG4udXBsb2FkLXRleHQge1xuICBmb250LXdlaWdodDogNTAwO1xuICBmb250LXNpemU6IDE2cHg7XG59XG5cbi51cGxvYWQtbGluayB7XG4gIGNvbG9yOiAjMDA0MkZGO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4uYWRkLWlucHV0IHtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB3aWR0aDogMzBweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBtYXJnaW4tbGVmdDogN3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbn1cblxuLmFkZC1pbnB1dCBwe1xuICBtYXJnaW46IC03cHg7XG59XG5cbi5kZWwtaW5wdXQge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiAzMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGRjRGNEYgIWltcG9ydGFudDtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xufVxuXG4uZGVsLWlucHV0IHB7XG4gIG1hcmdpbjogLTdweDtcbn1cblxuLmZsZXguanVzdGlmeS1iZXR3ZWVuLmdhcC04IHtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogNTVweCA4MHB4O1xufVxuXG4uZmxleC5qdXN0aWZ5LWJldHdlZW4uZ2FwLTggaDJ7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi51cGxvYWQtZmxvdyB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDE1NjBweDtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIG1hcmdpbi1ib3R0b206IDNlbTtcbiAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAycmVtO1xuICBtYXJnaW4tbGVmdDogMjBlbSAhaW1wb3J0YW50O1xufVxuXG4udGFibGUtdXBsb2Fke1xuICBtYXJnaW4tbGVmdDogMjBlbSAhaW1wb3J0YW50O1xuICB3aWR0aDogMTU2MHB4O1xuICBib3JkZXItcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7XG59XG5cbi50YWJsZS11cGxvYWQtaDIgIHtcbiAgbWFyZ2luLWxlZnQ6IDEwZW0gIWltcG9ydGFudDtcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5kcm9wZG93bi11cGxvYWQge1xuICB3aWR0aDogNTkycHg7XG4gIGhlaWdodDogNjBweDtcbiAgYm9yZGVyLWNvbG9yOiAjMDA0MkZGICFpbXBvcnRhbnQ7XG4gIG1hcmdpbi1ib3R0b206IDJlbTtcbiAgd2lkdGg6IDkzJTtcbn1cblxuLyouZHJvcGRvd24tdXBsb2FkIC5wLWRyb3Bkb3duLWxhYmVsIC5wLWRyb3Bkb3duLXRyaWdnZXIge1xuICBjb2xvcjogIzBCNEFGRiFpbXBvcnRhbnQ7XG59Ki9cblxuLmRyb3Bkb3duLXVwbG9hZCAucC1kcm9wZG93bi1sYWJlbCAucC1kcm9wZG93bi10cmlnZ2VyIC5wLWRyb3Bkb3duLWxhYmVsIHtcbiAgY29sb3I6ICMwMDQyRkYhaW1wb3J0YW50O1xufVxuXG46ZGVlcCguZHJvcGRvd24tdXBsb2FkIC5wLWRyb3Bkb3duLWxhYmVsKSB7XG4gIGNvbG9yOiAjMDA0MkZGIWltcG9ydGFudDtcbn1cblxuOmRlZXAoLmRyb3Bkb3duLXVwbG9hZCAucC1kcm9wZG93bi10cmlnZ2VyKSB7XG4gIGNvbG9yOiAjMDA0MkZGIWltcG9ydGFudDtcbn1cblxuOmRlZXAoLmRyb3Bkb3duLXVwbG9hZCAucC1kcm9wZG93bi1pdGVtKSB7XG4gIGNvbG9yOiAjMDA0MkZGIWltcG9ydGFudDtcbn1cblxuOmRlZXAoLmRyb3Bkb3duLXVwbG9hZCAucC1kcm9wZG93bi1pdGVtLWxhYmVsKSB7XG4gIGNvbG9yOiAjMDA0MkZGIWltcG9ydGFudDtcbn1cblxuLmlucHV0LXVwbG9hZHtcbiAgd2lkdGg6IDU2NXB4O1xuICBoZWlnaHQ6IDYwcHg7XG59XG5cbi5mbGV4LTEgcCB7XG4gIG1hcmdpbi1ib3R0b206IDJlbSAhaW1wb3J0YW50O1xufVxuXG5cbi5zcGVlZGJ0biB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgaGVpZ2h0OiAyLjVyZW07XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG46ZGVlcCgucC1idXR0b24ucC1jb21wb25lbnQucC1idXR0b24taWNvbi1vbmx5LnAtc3BlZWRkaWFsLWJ1dHRvbi5wLWJ1dHRvbi1yb3VuZGVkLnAtc3BlZWRkaWFsLXJvdGF0ZSkge1xuICB3aWR0aDogMzdweCFpbXBvcnRhbnQ7XG4gIGhlaWdodDogMzdweCFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMTBweCFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDUwJSFpbXBvcnRhbnQ7XG4gIGJhY2tncm91bmQ6ICMwNDA0MDQhaW1wb3J0YW50O1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50IWltcG9ydGFudDtcbn1cblxuOmRlZXAoLnAtYnV0dG9uLnAtY29tcG9uZW50LnAtYnV0dG9uLWljb24tb25seS5wLXNwZWVkZGlhbC1idXR0b24ucC1idXR0b24tcm91bmRlZC5wLXNwZWVkZGlhbC1yb3RhdGUgLnAtaWNvbikge1xuICB3aWR0aDogMTFweDtcbn1cblxuXG4udXBsb2FkLWNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDYwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5cblxuLyogIFRleHRlIHByaW5jaXBhbCAqL1xuLnVwbG9hZC10ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxNnB4O1xufVxuXG4vKiAgTGllbiBcImJyb3dzZVwiIGVuIGJsZXUgKi9cbi51cGxvYWQtbGluayB7XG4gIGNvbG9yOiAjMDA0MkZGO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4vKiAgVGV4dGUgc3VwcGzDqW1lbnRhaXJlICovXG4udXBsb2FkLWluZm8ge1xuICBmb250LXNpemU6IDEycHg7XG4gIGNvbG9yOiAjNmI3MjgwO1xuICBtYXJnaW4tdG9wOiA1cHg7XG59XG5cblxuOmRlZXAoLnAtZmlsZXVwbG9hZC1jb250ZW50KSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbjpkZWVwKC5wLWZpbGV1cGxvYWQtY2hvb3NlKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4vKjpkZWVwKC5wLWZpbGV1cGxvYWQucC1maWxldXBsb2FkLWFkdmFuY2VkLnAtY29tcG9uZW50KSB7XG4gIHdpZHRoOiA3MCU7XG59Ki9cblxuLyo6ZGVlcCgucC1maWxldXBsb2FkIC5wLWZpbGV1cGxvYWQtY29udGVudCkge1xuICB3aWR0aDogNTAycHg7XG4gIG1hcmdpbi1sZWZ0OiAxMDBweDtcbn0qL1xuXG4vKjpkZWVwKCAucC1maWxldXBsb2FkIC5wLWZpbGV1cGxvYWQtYnV0dG9uYmFyKSB7XG4gIG1hcmdpbi1sZWZ0OiAxNjVweDtcbn0qL1xuXG46ZGVlcCgucC1maWxldXBsb2FkLWJ1dHRvbmJhcikge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qIFJlc3BvbnNpdmUgKi9cblxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogMTM4MHB4KSB7XG4gIDpkZWVwKC51cGxvYWQtZmxvdykge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICB9XG5cbiAgOmRlZXAoLnRhYmxlLXVwbG9hZCkge1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuOmRlZXAoLnAtbWVudSkge1xuICB6LWluZGV4OiA5OTk5ICFpbXBvcnRhbnQ7XG59XG5cbjpkZWVwKC5wLWNvbHVtbi10aXRsZSkge1xuICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcbiAgb3BhY2l0eTogMSAhaW1wb3J0YW50O1xufVxuXG46ZGVlcCgucC1jb2x1bW4taGVhZGVyLWNvbnRlbnQpLFxuOmRlZXAoLnAtY29sdW1uLXRpdGxlKSxcbjpkZWVwKC5wLWNvbHVtbi1oZWFkZXIpIHtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50O1xuICB0ZXh0LW92ZXJmbG93OiBpbml0aWFsICFpbXBvcnRhbnQ7XG59XG5cbjpkZWVwKC5wLWRhdGF0YWJsZS10Ym9keSB0ZCkge1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnQ7XG59XG5cbjpkZWVwKC5wLW1lbnVpdGVtLXRleHQpIHtcbiAgY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDtcbn1cblxuOmRlZXAoLnAtbWVudSkge1xuICBib3JkZXItcmFkaXVzOiAxNXB4ICFpbXBvcnRhbnQ7XG59XG5cbjpkZWVwKHAtZmlsZXVwbG9hZC5wLWZpbGV1cGxvYWQtYWR2YW5jZWQucC1jb21wb25lbnQpIHtcbiAgd2lkdGg6IDgwJTtcbiAgbGVmdDogNSU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuOmRlZXAoLnAtaW5wdXR0ZXh0LWxnIC5wLWlucHV0dGV4dCl7XG4gIHBhZGRpbmc6IDAuOHJlbSAwLjhyZW0gIWltcG9ydGFudDtcbn1cblxuOmRlZXAoLnAtYmFkZ2UucC1iYWRnZS13YXJuaW5nKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNEOEUxRUEgIWltcG9ydGFudDtcbn1cblxuOmRlZXAoIC5wLWZpbGV1cGxvYWQgLnAtZmlsZXVwbG9hZC1maWxlKSB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbjpkZWVwKC5wLWZpbGV1cGxvYWQtZmlsZSBpbWcpIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG46ZGVlcCgucC1kYXRhdGFibGUtd3JhcHBlcikge1xuICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7XG59XG5cbi5kcm9wZG93bi1zaXRlLFxuLmRyb3Bkb3duLWNvdW50cnktaXNvIHtcbiAgd2lkdGg6IDkzJTtcbn1cblxuOmRlZXAoLnAtdG9hc3QpIHtcbiAgei1pbmRleDogOTk5OTkgIWltcG9ydGFudDtcbiAgdG9wOiAxMDBweCAhaW1wb3J0YW50O1xufVxuXG4udGFibGUtdXBsb2Fke1xuICBtYXJnaW4tYm90dG9tOiAyZW07XG59XG5cblxuOmRlZXAoLnAtZGF0ZXBpY2tlcikge1xuICB3aWR0aDogYXV0byAhaW1wb3J0YW50O1xuICBtYXgtd2lkdGg6IDM2MHB4ICFpbXBvcnRhbnQ7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDEwcHggcmdiYSgwLDAsMCwwLjEpO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xufVxuXG46ZGVlcCgucC1kYXRlcGlja2VyIC5wLWRhdGVwaWNrZXItZ3JvdXApIHtcbiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbn1cblxuOmRlZXAoLnAtZGF0ZXBpY2tlci1wYW5lbCkge1xuICBtYXgtd2lkdGg6IDM2MHB4ICFpbXBvcnRhbnQ7XG59XG5cbjpkZWVwKC5wLWRhdGVwaWNrZXIgLnAtZGF0ZXBpY2tlci1jYWxlbmRhcikge1xuICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG46ZGVlcCgucC1kYXRlcGlja2VyIC5wLWNvbXBvbmVudCkge1xuICBtYXgtd2lkdGg6IDM2MHB4ICFpbXBvcnRhbnQ7XG59XG5cbjpkZWVwKCNwdl9pZF8xMF9wYW5lbCl7XG4gIG1heC13aWR0aDogMzYwcHggIWltcG9ydGFudDtcbn1cblxuLnAtdG9vbHRpcCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzMzM7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZzogOHB4IDEycHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAxMHB4IHJnYmEoMCwwLDAsMC4zKTtcbn1cbi5wLXRvb2x0aXAtYXJyb3cge1xuICBib3JkZXItdG9wLWNvbG9yOiAjMzMzICFpbXBvcnRhbnQ7XG59XG5cbjpkZWVwKC5wLWZpbGV1cGxvYWQucC1maWxldXBsb2FkLWFkdmFuY2VkLnAtY29tcG9uZW50KSB7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBsZWZ0OiAxNSU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG48L3N0eWxlPlxuXG5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm9yZGVyLXdyYXBwZXJcIj5cbiAgICA8IS0tIFLDqXN1bcOpIGRlIGNvbW1hbmRlIC0tPlxuICAgIDxhXG4gICAgICAgIDpocmVmPVwiYmFja1VybFwiXG4gICAgICAgIGNsYXNzPVwiYnRuLWJsdWUtb3V0bGluZSBtYi00IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlclwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJwaSBwaS1hbmdsZS1sZWZ0XCI+PC9pPlxuICAgICAge3sgJHQoJ29yZGVyLmJhY2tUb0xpc3QnKSB9fVxuICAgIDwvYT5cblxuICAgIDxkaXYgY2xhc3M9XCJvcmRlci10aXRsZVwiPlxuICAgICAge3sgJHQoJ29yZGVyLmN1c3RvbWVyT3JkZXJObycpIH19XG4gICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiMwMDQyRkY7XCI+e3sgb3JkZXIueW91ck9yZGVyTm8gfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cInN0YXR1cy1iYWRnZVwiIDpjbGFzcz1cInN0YXR1c0Nzc1wiPlxuICAgICAgICB7eyBnbG9iYWxTdGF0dXMgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8Q2FyZCBjbGFzcz1cIm1iLTRcIj5cbiAgICAgIDx0ZW1wbGF0ZSAjdGl0bGU+XG48IS0tICAgICAgICA8ZGl2IGNsYXNzPVwib3JkZXItdGl0bGVcIj5cbiAgICAgICAgICB7eyAkdCgnb3JkZXIuY3VzdG9tZXJPcmRlck5vJykgfX1cbiAgICAgICAgICA8c3BhbiBzdHlsZT1cImNvbG9yOiMwMDQyRkY7XCI+e3sgb3JkZXIueW91ck9yZGVyTm8gfX08L3NwYW4+XG4gICAgICAgIDwvZGl2Pi0tPlxuICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgPHRlbXBsYXRlICNjb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3JkZXItaGVhZGVyLWdyaWRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JkZXItYm94XCI+XG4gICAgICAgICAgICA8aDM+e3sgJHQoJ29yZGVyLnlvdXJPcmRlcicpIH19PC9oMz5cbiAgICAgICAgICAgIDxwPnt7ICR0KCdvcmRlci5hZGRldk9yZGVyTm8nKSB9fTxzcGFuPnt7IG9yZGVyLmFkZGV2T3JkZXJObyB9fTwvc3Bhbj48L3A+XG4gICAgICAgICAgICA8cD57eyAkdCgnb3JkZXIub3JkZXJEYXRlJykgfX08c3Bhbj57eyBvcmRlci5jcmVhdGlvbkRhdGUgfX08L3NwYW4+PC9wPlxuICAgICAgICAgICAgPHA+e3sgJHQoJ29yZGVyLmRlbGl2ZXJ5SWQnKSB9fTxzcGFuPnt7IG9yZGVyLmRlbGl2ZXJ5SWQgfX08L3NwYW4+PC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZGVyLWJveFwiPlxuICAgICAgICAgICAgPGgzPnt7ICR0KCdvcmRlci5kZWxpdmVyeUluZm8nKSB9fTwvaDM+XG4gICAgICAgICAgICA8cD57eyAkdCgnb3JkZXIuc3RyZWV0JykgfX08c3Bhbj57eyBvcmRlci5zdHJlZXQxIH19PC9zcGFuPjwvcD5cbiAgICAgICAgICAgIDxwIHYtaWY9XCJvcmRlci5zdHJlZXQyXCI+PHNwYW4+e3sgb3JkZXIuc3RyZWV0MiB9fTwvc3Bhbj48L3A+XG4gICAgICAgICAgICA8cCB2LWlmPVwib3JkZXIuc3RyZWV0M1wiPjxzcGFuPnt7IG9yZGVyLnN0cmVldDMgfX08L3NwYW4+PC9wPlxuICAgICAgICAgICAgPHA+e3sgJHQoJ29yZGVyLnppcENpdHknKSB9fTxzcGFuPnt7IG9yZGVyLnBvc3Rjb2RlIH19IHt7IG9yZGVyLmNpdHkgfX08L3NwYW4+PC9wPlxuICAgICAgICAgICAgPHA+e3sgJHQoJ29yZGVyLmNvdW50cnknKSB9fTxzcGFuPnt7IG9yZGVyLmNvdW50cnkgfX08L3NwYW4+PC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZGVyLWJveCB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICA8RHJvcGRvd25cbiAgICAgICAgICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRMYW5nXCJcbiAgICAgICAgICAgICAgICA6b3B0aW9ucz1cInBkZkxhbmd1YWdlc1wiXG4gICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgbWQ6dy0xNnJlbSBkb3dubG9hZC1wZGYtb3JkZXJcIlxuICAgICAgICAgICAgICAgIEBjaGFuZ2U9XCJkb3dubG9hZFBERlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjdmFsdWU9XCJzbG90UHJvcHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtdGhpbiBmYS1maWxlLXBkZlwiIHN0eWxlPVwiY29sb3I6ICNmZjAwMDA7XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDE1cHg7XCI+e3sgc2xvdFByb3BzLnZhbHVlID8gc2xvdFByb3BzLnZhbHVlLmxhYmVsIDogJHQoJ29yZGVyLmdlbmVyYXRlUGRmJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjb3B0aW9uPVwic2xvdFByb3BzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZpbGUtcGRmIHRleHQtcmVkLTUwMFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNsb3RQcm9wcy5vcHRpb24ubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8L0Ryb3Bkb3duPlxuXG4gICAgICAgICAgICA8aDMgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2VcIj57eyAkdCgnb3JkZXIudG90YWxQcmljZScpIH19PC9oMz5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwidG90YWwtcHJpY2VcIj57eyBvcmRlci50b3RhbEFtb3VudFRheEV4Y2xPcmRlciB9fSB7eyBvcmRlci5jdXJyZW5jeSB9fTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvQ2FyZD5cblxuICAgIDwhLS0gTGlnbmVzIGRlIGNvbW1hbmRlIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWxpbmUtaXRlbXNcIj5cbiAgICAgIDxDYXJkXG4gICAgICAgICAgdi1mb3I9XCIocHJvZHVjdCwgaW5kZXgpIGluIG9yZGVyLnByb2R1Y3RzXCJcbiAgICAgICAgICA6a2V5PVwiaW5kZXhcIlxuICAgICAgICAgIGNsYXNzPVwicHJvZHVjdC1saW5lLWNhcmQgbWItNFwiXG4gICAgICA+XG4gICAgICAgIDx0ZW1wbGF0ZSAjdGl0bGU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3QtbGluZS10aXRsZSBmb250LXNlbWlib2xkIHRleHQtbGdcIj5cbiAgICAgICAgICAgIDxoNT57eyBwcm9kdWN0LkxBQkVMIHx8ICR0KCdvcmRlci5saW5lTGFiZWwnLCB7IG46IGluZGV4ICsgMSB9KSB9fTwvaDU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgPHRlbXBsYXRlICNjb250ZW50PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9kdWN0LWxpbmUtZ3JpZFwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPHA+PHN0cm9uZz57eyAkdCgnb3JkZXIucHJvZHVjdElkJykgfX08L3N0cm9uZz48c3BhbiBjbGFzcz1cInByb2R1Y3QtaW5mb1wiPnt7IHByb2R1Y3QuUFJPRFVDVElEIH19PC9zcGFuPjwvcD5cbjwhLS0gICAgICAgICAgICAgIDxwPjxzdHJvbmc+e3sgJHQoJ29yZGVyLnF1YW50aXR5JykgfX08L3N0cm9uZz4ge3sgcHJvZHVjdC5TQUxFU1FVQU5USVRZIH19IHt7IHByb2R1Y3QuU0FMRVNVTklUIH19PC9wPi0tPlxuICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICA8c3Ryb25nPnt7ICR0KCdvcmRlci5zaGlwcGVkJykgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3BhbiA6Y2xhc3M9XCJwcm9kdWN0LlNISVBQRURRVUFOVElUWSA9PT0gcHJvZHVjdC5TQUxFU1FVQU5USVRZID8gJ3NoaXBwZWQtb2snIDogJ3NoaXBwZWQtbWlzbWF0Y2gnXCIgc3R5bGU9XCJjb2xvcjojNEJEQTgwXCI+XG4gICAgICAgICAgICAgICAgICB7eyBwcm9kdWN0LlNISVBQRURRVUFOVElUWSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8cD48c3Ryb25nPnt7ICR0KCdvcmRlci51bml0UHJpY2UnKSB9fTwvc3Ryb25nPiA8c3BhbiBzdHlsZT1cImNvbG9yOiMyNTYzZWI7Zm9udC13ZWlnaHQ6IGJvbGQ7Zm9udC1zaXplOiAxOHB4O1wiPnt7IHByb2R1Y3QuUFJJQ0VQRVJVTklUIH19IHt7IG9yZGVyLmN1cnJlbmN5IH19PC9zcGFuPjwvcD5cbiAgICAgICAgICAgICAgPHA+PHN0cm9uZz57eyAkdCgnb3JkZXIuc2FsZXNVbml0JykgfX08L3N0cm9uZz48c3BhbiBzdHlsZT1cImNvbG9yOiMyNTYzZWI7Zm9udC13ZWlnaHQ6IGJvbGQ7Zm9udC1zaXplOiAxOHB4O1wiPnt7IHByb2R1Y3QuU0FMRVNVTklUIH19PC9zcGFuPjwvcD5cbiAgICAgICAgICAgICAgPHA+PHN0cm9uZz57eyAkdCgnb3JkZXIudG90YWwnKSB9fTwvc3Ryb25nPiA8c3BhbiBzdHlsZT1cImNvbG9yOiMyNTYzZWI7Zm9udC13ZWlnaHQ6IGJvbGQ7XCI+e3sgcHJvZHVjdC5UT1RBTFBSSUNFLnRvRml4ZWQoMikgfX0ge3sgb3JkZXIuY3VycmVuY3kgfX08L3NwYW4+PC9wPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxwPjxzdHJvbmc+e3sgJHQoJ29yZGVyLnF1YW50aXR5JykgfX08L3N0cm9uZz48c3BhbiBjbGFzcz1cInByb2R1Y3QtaW5mb1wiPnt7IHByb2R1Y3QuU0FMRVNRVUFOVElUWSB9fTwvc3Bhbj4gPC9wPlxuICAgICAgICAgICAgICA8cD48c3Ryb25nPnt7ICR0KCdvcmRlci5vcmRlckRhdGUnKSB9fTwvc3Ryb25nPiA8c3BhbiBzdHlsZT1cImNvbG9yOiMyNTYzZWI7Zm9udC13ZWlnaHQ6IGJvbGQ7XCI+e3sgcHJvZHVjdC5PUkRFUkRBVEUgfX08L3NwYW4+PC9wPlxuICAgICAgICAgICAgICA8cD48c3Ryb25nPnt7ICR0KCdvcmRlci5zaGlwcGluZycpIH19PC9zdHJvbmc+IDxzcGFuIHN0eWxlPVwiY29sb3I6IzI1NjNlYjtmb250LXdlaWdodDogYm9sZDtcIj57eyBwcm9kdWN0LlNISVBQSU5HREFURSB9fTwvc3Bhbj48L3A+XG4gICAgICAgICAgICAgIDxwPjxzdHJvbmc+e3sgJHQoJ29yZGVyLmVzdGltYXRlZERlbGl2ZXJ5JykgfX08L3N0cm9uZz4gPHNwYW4gc3R5bGU9XCJjb2xvcjojMjU2M2ViO2ZvbnQtd2VpZ2h0OiBib2xkO1wiPnt7IHByb2R1Y3QuRVNUSU1BVEVEREVMSVZFUllEQVRFIH19PC9zcGFuPjwvcD5cblxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxlZnQgc3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGdhcC0zIHRyYWNraW5nLXRvcC1vcmRlclwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIHYtaWY9XCJwcm9kdWN0LlRSQUNLSU5HTk9cIlxuICAgICAgICAgICAgICAgICAgICA6aHJlZj1cInByb2R1Y3QuVFJBQ0tJTkdOT1wiXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9jLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXRydWNrLWZhc3RcIj48L2k+XG4gICAgICAgICAgICAgICAgICB7eyAkdCgnb3JkZXIudHJhY2tpbmdMaW5rJykgfX1cbiAgICAgICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICB2LWlmPVwicHJvZHVjdC5ERUxJVkVSWVBST09GXCJcbiAgICAgICAgICAgICAgICAgICAgOmhyZWY9XCJwcm9kdWN0LkRFTElWRVJZUFJPT0ZcIlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvYy1idXR0b25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtcmVndWxhciBmYS1wZXJzb24tY2FycnktYm94XCI+PC9pPlxuICAgICAgICAgICAgICAgICAge3sgJHQoJ29yZGVyLmRlbGl2ZXJ5UHJvb2YnKSB9fVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jdS1mbG93LWRvY3Mtb3JkZXJcIiB2LWlmPVwicHJvZHVjdC5ET0NVTUVOVFM/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgbWItMyB0ZXh0LWNlbnRlclwiPnt7ICR0KCdvcmRlci5kb2NCdW5kbGUnKSB9fTwvaDQ+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgdi1mb3I9XCJkb2MgaW4gcHJvZHVjdC5ET0NVTUVOVFNcIlxuICAgICAgICAgICAgICAgICAgICAgIDprZXk9XCJkb2MuZmlsZW5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgIDpocmVmPVwiZG9jLnVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvYy1idXR0b24ganVzdGlmeS1zdGFydFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIDpjbGFzcz1cImljb25CeVR5cGUoZG9jLnR5cGUpXCIgY2xhc3M9XCJtci0yXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyBsYWJlbEJ5VHlwZShkb2MudHlwZSkgfX1cbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxwIHYtZWxzZSBjbGFzcz1cInRleHQteHMgdGV4dC1ncmF5LTQwMFwiPnt7ICR0KCdvcmRlci5ub0RvYycpIH19PC9wPlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00IHByaWNlLXJvd1wiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1ib2xkXCI+e3sgJHQoJ29yZGVyLnByaWNlJykgfX08L3A+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC1ibHVlLTYwMCB1bml0LXByaWNlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBwcm9kdWN0LlRPVEFMUFJJQ0UudG9GaXhlZCgyKSB9fSB7eyBvcmRlci5jdXJyZW5jeSB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBUaW1lbGluZSAtLT5cbiAgICAgICAgICA8VGltZWxpbmVcbiAgICAgICAgICAgICAgOnZhbHVlPVwic3RhdHVzU3RlcHNcIlxuICAgICAgICAgICAgICBsYXlvdXQ9XCJob3Jpem9udGFsXCJcbiAgICAgICAgICAgICAgYWxpZ249XCJ0b3BcIlxuICAgICAgICAgICAgICBjbGFzcz1cInRpbWVsaW5lLWJsb2NrIG10LTZcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSAjY29udGVudD1cInNsb3RQcm9wc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGltZWxpbmUtc3RlcFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGltZWxpbmUtbGFiZWxcIj57eyBzbG90UHJvcHMuaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRpbWVsaW5lLWRhdGVcIj57eyBzbG90UHJvcHMuaXRlbS5kYXRlIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8dGVtcGxhdGUgI21hcmtlcj1cInNsb3RQcm9wc1wiPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aW1lbGluZS1tYXJrZXJcIlxuICAgICAgICAgICAgICAgICAgOnN0eWxlPVwieyBiYWNrZ3JvdW5kQ29sb3I6IHNsb3RQcm9wcy5pdGVtLmNvbG9yID09PSAnZ3JlZW4nID8gJyMyMmM1NWUnIDogJyNmOTczMTYnIH1cIlxuICAgICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8L1RpbWVsaW5lPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9DYXJkPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgVGltZWxpbmUgZnJvbSAncHJpbWV2dWUvdGltZWxpbmUnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdPcmRlckRldGFpbCcsXG4gIGNvbXBvbmVudHM6IHsgVGltZWxpbmUgfSxcbiAgcHJvcHM6IHtcbiAgICBsb2NhbGU6IHsgdHlwZTogU3RyaW5nLCBkZWZhdWx0OiAnZnInIH0sXG4gICAgcm9sZTogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6ICdjdXN0b21lcicgfSxcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3JkZXI6IHt9LFxuICAgICAgc3RhdHVzU3RlcHM6IFtdLFxuICAgICAgc2VsZWN0ZWRMYW5nOiBudWxsLFxuICAgICAgYmFja1VybDogd2luZG93LmxvY2F0aW9uLm9yaWdpbiArICcvJyArIHRoaXMubG9jYWxlICsgJy9vcmRlci9jdXN0b21lcicsXG4gICAgICBwZGZMYW5ndWFnZXM6IFtcbiAgICAgICAgeyBsYWJlbDogJ0xhbmd1ZSBwYXIgZMOpZmF1dCcsIGNvZGU6IG51bGwgfSxcbiAgICAgICAgeyBsYWJlbDogJ0VuZ2xpc2gnLCBjb2RlOiAnZW4nIH0sXG4gICAgICAgIHsgbGFiZWw6ICdGcmFuw6dhaXMnLCBjb2RlOiAnZnInIH0sXG4gICAgICAgIHsgbGFiZWw6ICdQb2xza2knLCBjb2RlOiAncGwnIH1cbiAgICAgIF0sXG4gICAgfTtcbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmRlci1kZXRhaWwtYXBwJyk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMub3JkZXIgPSBKU09OLnBhcnNlKGVsLmRhdGFzZXQub3JkZXIpO1xuICAgICAgY29uc29sZS5sb2coJ09SREVSIERBVEE6JywgdGhpcy5vcmRlcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignSlNPTiBwYXJzZSBlcnJvcjonLCBlKTtcbiAgICB9XG4gICAgY29uc3QgYXBwbGllZExvY2FsZSA9IGVsLmRhdGFzZXQubG9jYWxlIHx8IHRoaXMubG9jYWxlIHx8ICdmcic7XG4gICAgdGhpcy4kaTE4bi5sb2NhbGUgPSBhcHBsaWVkTG9jYWxlO1xuICAgIHRoaXMuYnVpbGRTdGF0dXNTdGVwcygpO1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgaWNvbkJ5VHlwZSh0eXBlKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gKHR5cGUgfHwgJycpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgIC8vIPCflLkgbcOqbWUgaWPDtG5lIHBvdXIgdG91cyBsZXMgdGVzdHMgdGVjaG5pcXVlc1xuICAgICAgaWYgKFsnQkFNUycsICdGQUknLCAnV1InLCAnSUZUSCddLmluY2x1ZGVzKG5vcm1hbGl6ZWQpKSB7XG4gICAgICAgIHJldHVybiAnZmEtbGlnaHQgZmEtZmxhc2stdmlhbCc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGljb25zID0ge1xuICAgICAgICBURFM6ICdmYS1saWdodCBmYS1maWxlLWxpbmVzJyxcbiAgICAgICAgU0RTOiAnZmEtbGlnaHQgZmEtc2hpZWxkLXVzZXInLFxuICAgICAgICBDT0E6ICdmYS1saWdodCBmYS1jbGlwYm9hcmQtY2hlY2snLFxuICAgICAgICBDT0M6ICdmYS1saWdodCBmYS1jZXJ0aWZpY2F0ZScsXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gaWNvbnNbbm9ybWFsaXplZF0gfHwgJ2ZhLWxpZ2h0IGZhLWZpbGUnO1xuICAgIH0sXG5cbiAgICBsYWJlbEJ5VHlwZSh0eXBlKSB7XG4gICAgICBpZiAoIXR5cGUpIHJldHVybiB0aGlzLiR0KCdkb2NzLmRlZmF1bHQnKTtcblxuICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHR5cGUudHJpbSgpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgIC8vIPCflLkgUmVncm91cGVtZW50IGRlcyB0eXBlc1xuICAgICAgY29uc3QgdGVjaG5pY2FsR3JvdXAgPSBbJ0JBTVMnLCAnRkFJJywgJ1dSJywgJ0lGVEgnXTtcblxuICAgICAgaWYgKHRlY2huaWNhbEdyb3VwLmluY2x1ZGVzKG5vcm1hbGl6ZWQpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiR0KCdkb2NzLnRlY2huaWNhbFRlc3RzJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIPCflLkgTWFwcGluZyBkaXJlY3QgZGVzIGF1dHJlcyB0eXBlc1xuICAgICAgY29uc3QgbWFwID0ge1xuICAgICAgICBURFM6ICdURFMnLFxuICAgICAgICBTRFM6ICdTRFMnLFxuICAgICAgICBDT0E6ICdDT0EnLFxuICAgICAgICBDT0M6ICdDT0MnLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qga2V5ID0gbWFwW25vcm1hbGl6ZWRdIHx8ICdkZWZhdWx0JztcbiAgICAgIHJldHVybiB0aGlzLiR0KCdkb2NzLicgKyBrZXkpO1xuICAgIH0sXG4gICAgYnVpbGRTdGF0dXNTdGVwcygpIHtcbiAgICAgIGNvbnN0IHN0ZXBzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbGFiZWw6IHRoaXMuJHQoJ29yZGVyLnRpbWVsaW5lLnJlY29yZGVkJyksXG4gICAgICAgICAgZGF0ZTogdGhpcy5vcmRlci5jcmVhdGlvbkRhdGUgfHwgJy0nLFxuICAgICAgICAgIGNvbG9yOiB0aGlzLm9yZGVyLmNyZWF0aW9uRGF0ZSA/ICdncmVlbicgOiAnb3JhbmdlJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiB0aGlzLiR0KCdvcmRlci50aW1lbGluZS5zaGlwcGVkJyksXG4gICAgICAgICAgZGF0ZTogdGhpcy5vcmRlci5zaGlwcGluZ0RhdGUgfHwgJy0nLFxuICAgICAgICAgIGNvbG9yOiB0aGlzLm9yZGVyLnNoaXBwaW5nRGF0ZSA/ICdncmVlbicgOiAnb3JhbmdlJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiB0aGlzLiR0KCdvcmRlci50aW1lbGluZS5lc3RpbWF0ZWQnKSxcbiAgICAgICAgICBkYXRlOiB0aGlzLm9yZGVyLmV4cGVjdGVkRGVsaXZlcnlEYXRlIHx8ICctJyxcbiAgICAgICAgICBjb2xvcjogdGhpcy5vcmRlci5leHBlY3RlZERlbGl2ZXJ5RGF0ZSA/ICdncmVlbicgOiAnb3JhbmdlJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgICBzdGVwcy5mb3JFYWNoKChzLCBpKSA9PiAocy5jb25uZWN0b3JDb2xvciA9IHN0ZXBzW2kgKyAxXT8uY29sb3IpKTtcbiAgICAgIHRoaXMuc3RhdHVzU3RlcHMgPSBzdGVwcztcbiAgICB9LFxuICAgIGRvd25sb2FkUERGKCkge1xuICAgICAgaWYgKCF0aGlzLm9yZGVyPy5hZGRldk9yZGVyTm8pIHJldHVybjtcbiAgICAgIGNvbnN0IGJhc2UgPSBgL29yZGVyL3BkZi8ke3RoaXMub3JkZXIuYWRkZXZPcmRlck5vfWA7XG4gICAgICBjb25zdCBsYW5nID0gdGhpcy5zZWxlY3RlZExhbmc/LmNvZGU7XG4gICAgICB3aW5kb3cub3BlbihsYW5nID8gYCR7YmFzZX0/bGFuZ3VhZ2U9JHtsYW5nfWAgOiBiYXNlLCAnX2JsYW5rJyk7XG4gICAgfSxcbiAgfSxcblxuICBjb21wdXRlZDoge1xuICAgIGdsb2JhbFN0YXR1cygpIHtcbiAgICAgIGlmICghdGhpcy5vcmRlcj8ucHJvZHVjdHM/Lmxlbmd0aCkgcmV0dXJuICcnO1xuICAgICAgY29uc3QgcCA9IHRoaXMub3JkZXIucHJvZHVjdHNbMF07IC8vIG91IGxvZ2lxdWUgY29tYmluw6llXG4gICAgICBpZiAocC5TSElQUElOR0RBVEUgJiYgcC5FU1RJTUFURURERUxJVkVSWURBVEUpIHJldHVybiB0aGlzLiR0KCdvcmRlci5zdGF0dXMuZGVsaXZlcmVkJyk7XG4gICAgICBpZiAocC5TSElQUElOR0RBVEUpIHJldHVybiB0aGlzLiR0KCdvcmRlci5zdGF0dXMuY29uZmlybWVkJyk7XG4gICAgICByZXR1cm4gdGhpcy4kdCgnb3JkZXIuc3RhdHVzLnByZXBhcmF0aW9uJyk7XG4gICAgfSxcbiAgICBzdGF0dXNDc3MoKSB7XG4gICAgICBjb25zdCBzdGF0dXMgPSB0aGlzLmdsb2JhbFN0YXR1cztcbiAgICAgIGlmIChzdGF0dXMgPT09IHRoaXMuJHQoJ29yZGVyLnN0YXR1cy5kZWxpdmVyZWQnKSkgcmV0dXJuICdzdGF0dXMtZ3JlZW4nO1xuICAgICAgaWYgKHN0YXR1cyA9PT0gdGhpcy4kdCgnb3JkZXIuc3RhdHVzLmNvbmZpcm1lZCcpKSByZXR1cm4gJ3N0YXR1cy15ZWxsb3cnO1xuICAgICAgaWYgKHN0YXR1cyA9PT0gdGhpcy4kdCgnb3JkZXIuc3RhdHVzLnByZXBhcmF0aW9uJykpIHJldHVybiAnc3RhdHVzLW9yYW5nZSc7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59O1xuPC9zY3JpcHQ+XG5cblxuPHN0eWxlIHNjb3BlZD5cblxuQGltcG9ydCAncHJpbWVpY29ucy9wcmltZWljb25zLmNzcyc7XG5cbi5vcmRlci13cmFwcGVyIHtcbiAgd2lkdGg6IDgyJTtcbiAgbWFyZ2luLWxlZnQ6IDIwZW07XG59XG4ub3JkZXItdGl0bGUge1xuICBmb250LXNpemU6IDI4cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogIzI2Mzc0NjtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cbi5vcmRlci1ncmlkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IDJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMmVtO1xufVxuLm9yZGVyLXNlY3Rpb24gaDMge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG59XG4uZG9jdW1lbnQtZ3JvdXAgaDQge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luOiAwLjNlbSAwO1xufVxuLnRpbWVsaW5lLXN0ZXAge1xuICBwYWRkaW5nLXRvcDogMC41ZW07XG59XG4udGltZWxpbmUtbGFiZWwge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi50aW1lbGluZS1kYXRlIHtcbiAgZm9udC1zaXplOiAwLjllbTtcbiAgY29sb3I6ICM2NjY7XG59XG46ZGVlcCgudGltZWxpbmUtbWFya2VyKSB7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIC8qbWFyZ2luOiAwIGF1dG87Ki9cbn1cbi5zaGlwcGVkLW9rIHtcbiAgY29sb3I6ICM0QkRBODA7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLnNoaXBwZWQtbWlzbWF0Y2gge1xuICBjb2xvcjogcmVkO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cbi5idG4tYmx1ZSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzI1NjNlYjtcbiAgcGFkZGluZzogNHB4IDhweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cbi5idG4tZ3JleSB7XG4gIGNvbG9yOiAjMTExO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlN2ViO1xuICBwYWRkaW5nOiA0cHggOHB4O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuLnRpbWVsaW5lLWNvbnRhaW5lciB7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbjpkZWVwKC50aW1lbGluZS1ibG9jayAucC10aW1lbGluZSkge1xuICBmbGV4LWdyb3c6IDE7XG4gIHdpZHRoOiAxMDAlO1xufVxuOmRlZXAoLnRpbWVsaW5lLWJsb2NrIC5wLXRpbWVsaW5lLWV2ZW50KSB7XG4gIGZsZXg6IDEgMSAwO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG46ZGVlcCgudGltZWxpbmUtYmxvY2sgLnAtdGltZWxpbmUtZXZlbnQtY29udGVudCkge1xuICBtYXJnaW4tdG9wOiAxZW07XG59XG46ZGVlcCgudGltZWxpbmUtYmxvY2sgLnAtdGltZWxpbmUtZXZlbnQtb3Bwb3NpdGUpIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbjpkZWVwKC50aW1lbGluZS1ibG9jayAucC10aW1lbGluZS1ldmVudC1jb25uZWN0b3IpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2QxZDVkYjtcbiAgaGVpZ2h0OiAycHg7XG59XG4udGltZWxpbmUtbGFiZWwge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luLWJvdHRvbTogMC4yZW07XG59XG4udGltZWxpbmUtZGF0ZSB7XG4gIGNvbG9yOiAjNjY2O1xuICBmb250LXNpemU6IDAuODVlbTtcbn1cbi50aW1lbGluZS1zdGVwIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbjpkZWVwKC50aW1lbGluZS1jb25uZWN0b3IpIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMnB4O1xuICBmbGV4LWdyb3c6IDE7XG59XG5cbi5vcmRlci1oZWFkZXItZ3JpZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBnYXA6IDJyZW07XG4gIC8qcGFkZGluZzogMXJlbSAwOyovXG59XG5cbi5vcmRlci1ib3gge1xuICBmbGV4OiAxIDEgMzAlO1xuICBwYWRkaW5nOiAxcmVtO1xuIC8qIGJhY2tncm91bmQ6ICNmOWY5Zjk7XG4gIGJvcmRlci1yYWRpdXM6IDhweDsqL1xufVxuXG4ub3JkZXItYm94IGgzIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5vcmRlci1ib3ggcCB7XG4gIG1hcmdpbjogMC41ZW0gMDtcbiAgZGlzcGxheTogZ3JpZDtcbiAgY29sb3I6ICNBQUI4REI7XG59XG5cbi5vcmRlci1ib3ggcCBzcGFue1xuICBjb2xvcjogIzI1NjNlYjtcbiAgZm9udC1zaXplOiAxLjNyZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4udG90YWwtcHJpY2Uge1xuICBmb250LXNpemU6IDJyZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogIzI1NjNlYiFpbXBvcnRhbnQ7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5kb3dubG9hZC1wZGYtb3JkZXIge1xuICBtYXJnaW4tYm90dG9tOiAyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGIgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogMTJweCAhaW1wb3J0YW50O1xufVxuXG4ucHJvZHVjdC1saW5lLXRpdGxlIHtcbiAgY29sb3I6ICMyNjM3NDY7XG59XG5cbi5wcm9kdWN0LWxpbmUtZ3JpZCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyO1xuICBnYXA6IDJyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAucHJvZHVjdC1saW5lLWdyaWQge1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7XG4gIH1cbn1cbi5wcm9kdWN0LWxpbmUtZ3JpZCB7XG4gIHBhZGRpbmc6IDFlbSAwIDAgNWVtO1xufVxuLyoucHJvZHVjdC1saW5lLWdyaWQgPiBkaXYge1xuICBwYWRkaW5nOiAxcmVtO1xufSovXG5cbi5wcm9kdWN0LWxpbmUtZ3JpZCBoMyB7XG4gIGZvbnQtc2l6ZTogMS4xcmVtO1xuICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtO1xuICBjb2xvcjogIzI2Mzc0Njtcbn1cblxuLnAtdGltZWxpbmV7XG4gIHBhZGRpbmc6IDJlbSAwIDAgNWVtO1xufVxuXG4ub3JkZXItYm94LXJpZ2h0ID4gZGl2Omxhc3QtY2hpbGQge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTdlYjtcbiAgcGFkZGluZy10b3A6IDFyZW07XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLnByb2R1Y3QtbGluZS1ncmlkIHtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpO1xuICB9XG59XG5cbi5kb2MtcGlsbCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nOiAwLjRyZW0gMC44cmVtO1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmMmZmO1xuICBjb2xvcjogIzFlM2E4YTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAwLjlyZW07XG4gIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5kb2MtcGlsbDpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNkYmVhZmU7XG59XG5cbi5kb2MtYnV0dG9uIHtcbiAgQGFwcGx5IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBib3JkZXIgYm9yZGVyLWdyYXktMzAwIHB4LTQgcHktMiByb3VuZGVkLW1kIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTcwMCBiZy13aGl0ZSBob3ZlcjpiZy1ncmF5LTUwO1xufVxuXG4uZG9jLWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbiAgcGFkZGluZzogNnB4IDEycHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY29sb3I6ICMyNTYzZWIgIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgd2lkdGg6IDIwMHB4O1xuICBoZWlnaHQ6IDQ1cHg7XG4gIG1hcmdpbi1yaWdodDogMTBweDtcbn1cbi5kb2MtYnV0dG9uOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjRmNjtcbn1cblxuLyouZG9jLWJ1dHRvbiBpIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LWZhbWlseTogJ1ByaW1lSWNvbnMnO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBmb250LXNpemU6IDFyZW07XG59Ki9cbi50cmFja2luZy10b3Atb3JkZXJ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtNGVtO1xuICB3aWR0aDogMTA1JTtcbn1cblxuLmRvY3UtZmxvdy1kb2NzLW9yZGVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0Y0RjRGNDtcbiAgcGFkZGluZzogN3B4O1xuICBib3Jlci1yYWRpdXM6IDhweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IC0xZW07XG59XG5cbi5kb2N1LWZsb3ctZG9jcy1vcmRlciBhe1xuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xufVxuXG4udHJhY2tpbmctdG9wLW9yZGVyIGEge1xuICBtYXJnaW4tcmlnaHQ6IDI4cHggIWltcG9ydGFudDtcbiAgd2lkdGg6IDE5OHB4ICFpbXBvcnRhbnQ7XG59XG5cbi5idG4tYmx1ZS1vdXRsaW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDAuNXJlbTtcbiAgcGFkZGluZzogMTBweCAxOHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjMjU2M2ViO1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgY29sb3I6ICMyNTYzZWI7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi5waTo6YmVmb3JlIHtcbiAgZm9udC1mYW1pbHk6ICdQcmltZUljb25zJyAhaW1wb3J0YW50O1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgc3BlYWs6IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbiAgd2lkdGg6IGF1dG87XG4gIGhlaWdodDogYXV0bztcbiAgZm9udC1zaXplOiAxcmVtOyAvKiBvdSBhanVzdGUgKi9cbiAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG59XG5cblxuLmJ0bi1ibHVlLW91dGxpbmU6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWZmNmZmO1xufVxuXG4ucHJvZHVjdC1pbmZve1xuICB3aWR0aDogMjY2cHg7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNEY0O1xuICBoZWlnaHQ6IDUwcHg7XG4gIHBhZGRpbmc6IDZweCAwIDJweCAxNXB4O1xuICBmb250LXNpemU6IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgY29sb3I6ICMyNTYzZWI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLnByaWNlLXJvdyB7XG4gIHBvc2l0aW9uOiBpbmhlcml0O1xuICBmbG9hdDogcmlnaHQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiA3ZW07XG59XG5cbi5wcmljZS1yb3cgcCB7XG4gIG1hcmdpbi1ib3R0b206IC0xMHB4IWltcG9ydGFudDtcbn1cblxuLmZvbnQtYm9sZCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBmb250LXNpemU6IDEuM2VtO1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLnVuaXQtcHJpY2Uge1xuICBjb2xvcjogIzI1NjNlYjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMS44ZW07XG59XG5cbi5wLWNhcmQge1xuICBib3JkZXItcmFkaXVzOiAxMHB4IWltcG9ydGFudDtcbn1cblxuLm9yZGVyLWJveCBzcGFuIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuOmRlZXAoLnBpIC5waS1maWxlLXBkZil7XG4gIGNvbG9yOiByZWQhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDIwcHghaW1wb3J0YW50O1xufVxuXG4ub3JkZXItYm94IGgzIHtcbiAgbWFyZ2luLWJvdHRvbTogLTFyZW07XG59XG5cbi5zdGF0dXMtYmFkZ2Uge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBhZGRpbmc6IDZweCAxNHB4O1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBmb250LXNpemU6IDAuOXJlbTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm90dG9tOiAwLjNyZW07XG59XG5cbi5zdGF0dXMtZ3JlZW4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNENBRjUwOyAvKiB2ZXJ0ICovXG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnN0YXR1cy15ZWxsb3cge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZCMzAwOyAvKiBqYXVuZS9vcmFuZ2UgKi9cbiAgY29sb3I6IHdoaXRlO1xufVxuXG4uc3RhdHVzLW9yYW5nZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGQjhDMDA7IC8qIG9yYW5nZSBwbHVzIGZvbmPDqSAqL1xuICBjb2xvcjogd2hpdGU7XG59XG4ucGkge1xuICBmb250LWZhbWlseTogJ1ByaW1lSWNvbnMnICFpbXBvcnRhbnQ7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG5cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXY+XG4gICAgPCEtLSBCb3V0b24gZCdvdXZlcnR1cmUgLS0+XG4gICAgPEJ1dHRvblxuICAgICAgICBpY29uPVwicGkgcGktaW5mby1jaXJjbGVcIlxuICAgICAgICBjbGFzcz1cImluZm8tYnV0dG9uXCJcbiAgICAgICAgdi10b29sdGlwLnRvcD1cInQoJ2N1c3RvbWVyUmVtaW5kZXJJbmZvLnRpdGxlJylcIlxuICAgICAgICB0ZXh0XG4gICAgICAgIHJvdW5kZWRcbiAgICAgICAgQGNsaWNrPVwidmlzaWJsZSA9IHRydWVcIlxuICAgIC8+XG5cbiAgICA8IS0tIE1vZGFsZSAtLT5cbiAgICA8RGlhbG9nIHYtbW9kZWw6dmlzaWJsZT1cInZpc2libGVcIiBtb2RhbCA6aGVhZGVyPVwidCgnY3VzdG9tZXJSZW1pbmRlckluZm8uZGlhbG9nSGVhZGVyJylcIiA6c3R5bGU9XCJ7IHdpZHRoOiAnNDVlbScgfVwiPlxuICAgICAgPEFjY29yZGlvbiBtdWx0aXBsZT5cbiAgICAgICAgPEFjY29yZGlvblRhYj5cbiAgICAgICAgICA8dGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtaGVhZGVyIHN0YXR1cy0xXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktY2hlY2stY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjdXN0b21lclJlbWluZGVySW5mby5zdGF0dXNlcy4xLmxhYmVsJykgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDxwPnt7IHQoJ2N1c3RvbWVyUmVtaW5kZXJJbmZvLnN0YXR1c2VzLjEuZGVzYycpIH19PC9wPlxuICAgICAgICA8L0FjY29yZGlvblRhYj5cblxuICAgICAgICA8IS0tIFN0YXR1dCAyIC0tPlxuICAgICAgICA8QWNjb3JkaW9uVGFiPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1oZWFkZXIgc3RhdHVzLTJcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1jbG9ja1wiPjwvaT5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgdCgnY3VzdG9tZXJSZW1pbmRlckluZm8uc3RhdHVzZXMuMi5sYWJlbCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8cD57eyB0KCdjdXN0b21lclJlbWluZGVySW5mby5zdGF0dXNlcy4yLmRlc2MnKSB9fTwvcD5cbiAgICAgICAgPC9BY2NvcmRpb25UYWI+XG5cbiAgICAgICAgPCEtLSBTdGF0dXQgMyAtLT5cbiAgICAgICAgPEFjY29yZGlvblRhYj5cbiAgICAgICAgICA8dGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtaGVhZGVyIHN0YXR1cy0zXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZW52ZWxvcGVcIj48L2k+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2N1c3RvbWVyUmVtaW5kZXJJbmZvLnN0YXR1c2VzLjMubGFiZWwnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPHA+e3sgdCgnY3VzdG9tZXJSZW1pbmRlckluZm8uc3RhdHVzZXMuMy5kZXNjJykgfX08L3A+XG4gICAgICAgIDwvQWNjb3JkaW9uVGFiPlxuXG4gICAgICAgIDwhLS0gU3RhdHV0IDQgLS0+XG4gICAgICAgIDxBY2NvcmRpb25UYWI+XG4gICAgICAgICAgPHRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWhlYWRlciBzdGF0dXMtNFwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlXCI+PC9pPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCdjdXN0b21lclJlbWluZGVySW5mby5zdGF0dXNlcy40LmxhYmVsJykgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDxwPnt7IHQoJ2N1c3RvbWVyUmVtaW5kZXJJbmZvLnN0YXR1c2VzLjQuZGVzYycpIH19PC9wPlxuICAgICAgICA8L0FjY29yZGlvblRhYj5cblxuICAgICAgICA8IS0tIFN0YXR1dCA1IC0tPlxuICAgICAgICA8QWNjb3JkaW9uVGFiPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1oZWFkZXIgc3RhdHVzLTVcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1iYW5cIj48L2k+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IHQoJ2N1c3RvbWVyUmVtaW5kZXJJbmZvLnN0YXR1c2VzLjUubGFiZWwnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPHA+e3sgdCgnY3VzdG9tZXJSZW1pbmRlckluZm8uc3RhdHVzZXMuNS5kZXNjJykgfX08L3A+XG4gICAgICAgIDwvQWNjb3JkaW9uVGFiPlxuICAgICAgPC9BY2NvcmRpb24+XG4gICAgPC9EaWFsb2c+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cD5cbmltcG9ydCB7IHJlZiB9IGZyb20gJ3Z1ZSdcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tICd2dWUtaTE4bidcbmltcG9ydCBEaWFsb2cgZnJvbSAncHJpbWV2dWUvZGlhbG9nJ1xuaW1wb3J0IEJ1dHRvbiBmcm9tICdwcmltZXZ1ZS9idXR0b24nXG5pbXBvcnQgQWNjb3JkaW9uIGZyb20gJ3ByaW1ldnVlL2FjY29yZGlvbidcbmltcG9ydCBBY2NvcmRpb25UYWIgZnJvbSAncHJpbWV2dWUvYWNjb3JkaW9udGFiJ1xuXG5jb25zdCB7IHQgfSA9IHVzZUkxOG4oKVxuY29uc3QgdmlzaWJsZSA9IHJlZihmYWxzZSlcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuXG4ucC1kaWFsb2cge1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xufVxuXG4uc3RhdHVzLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC44ZW07XG4gIHBhZGRpbmc6IDAuN2VtIDFlbTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi8qIENvdWxldXJzIGRlcyBzdGF1dHMgKi9cbi5zdGF0dXMtMSB7IGJhY2tncm91bmQ6ICM3N0UyQTI7IH1cbi5zdGF0dXMtMiB7IGJhY2tncm91bmQ6ICNGNkM0NTM7IH1cbi5zdGF0dXMtMyB7IGJhY2tncm91bmQ6ICNGNkE1OEQ7IH1cbi5zdGF0dXMtNCB7IGJhY2tncm91bmQ6ICNGMjZENzU7IH1cbi5zdGF0dXMtNSB7IGJhY2tncm91bmQ6ICM3MjAyMDI7IH1cblxuLnAtYWNjb3JkaW9uLWNvbnRlbnQge1xuICBwYWRkaW5nOiAxZW0gMS4yZW07XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmluZm8tYnV0dG9uIHtcbiAgY29sb3I6ICMwMDQyRkYgIWltcG9ydGFudDsgLyogYmxldSBicmFuZGluZyAqL1xuICBmb250LXNpemU6IDEuMnJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xufVxuXG4uaW5mby1idXR0b246aG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDY2LCAyNTUsIDAuMDgpICFpbXBvcnRhbnQ7XG4gIGNvbG9yOiAjMDAyYmI4ICFpbXBvcnRhbnQ7XG4gIHRyYW5zaXRpb246IDAuMnMgZWFzZTtcbn1cblxuLnAtdG9vbHRpcCB7XG4gIGJhY2tncm91bmQ6ICMwMDQyRkYgIWltcG9ydGFudDsgICAvKiBibGV1IGJyYW5kaW5nICovXG4gIGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgcGFkZGluZzogNnB4IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbn1cbi5wLXRvb2x0aXAgLnAtdG9vbHRpcC1hcnJvdyB7XG4gIGJvcmRlci10b3AtY29sb3I6ICMwMDQyRkYgIWltcG9ydGFudDsgLyogZmzDqGNoZSBibGV1ZSAqL1xufVxuXG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8VG9hc3QgcG9zaXRpb249XCJib3R0b20tcmlnaHRcIiAvPlxuXG4gIDxkaXYgY2xhc3M9XCJwLTYgYmctd2hpdGUgcm91bmRlZC14bCBzaGFkb3ctbWRcIj5cbiAgICA8IS0tIPCflLkgRmlsdHJlcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gZ2FwLTYgaXRlbXMtc3RhcnQgbWItNlwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtNCBmaWx0ZXJzLWZpbmRlclwiPlxuICAgICAgICA8IS0tIFJlY2hlcmNoZSAtLT5cbiAgICAgICAgPEZsb2F0TGFiZWwgdmFyaWFudD1cIm9uXCI+XG4gICAgICAgICAgPElucHV0VGV4dCBpZD1cInNlYXJjaFwiIHYtbW9kZWw9XCJzZWFyY2hcIiBAaW5wdXQ9XCJmZXRjaERvY3VtZW50c1wiIGNsYXNzPVwicGwtMTAgdy1mdWxsXCIgLz5cbiAgICAgICAgICA8bGFiZWwgZm9yPVwic2VhcmNoXCI+e3sgdCgnZG9jdUZsb3dGaW5kZXIuc2VhcmNoUGxhY2Vob2xkZXInKSB9fTwvbGFiZWw+XG4gICAgICAgIDwvRmxvYXRMYWJlbD5cblxuICAgICAgICA8IS0tIExhbmd1ZSAtLT5cbiAgICAgICAgPERyb3Bkb3duXG4gICAgICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRMYW5ndWVcIlxuICAgICAgICAgICAgOm9wdGlvbnM9XCJsYW5ndWVPcHRpb25zXCJcbiAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICA6cGxhY2Vob2xkZXI9XCJ0KCdkb2N1Rmxvd0ZpbmRlci5sYW5ndWFnZScpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy0zNiBtbC1bMS44NzVyZW1dXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJmZXRjaERvY3VtZW50c1wiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPCEtLSDDiXRhdCAtLT5cbiAgICAgICAgPERyb3Bkb3duXG4gICAgICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRFdGF0XCJcbiAgICAgICAgICAgIDpvcHRpb25zPVwiZXRhdE9wdGlvbnNcIlxuICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICBvcHRpb25WYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgIDpwbGFjZWhvbGRlcj1cInQoJ2RvY3VGbG93RmluZGVyLnN0YXR1cycpXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy0zNiBtbC1bMS44NzVyZW1dXCJcbiAgICAgICAgICAgIEBjaGFuZ2U9XCJmZXRjaERvY3VtZW50c1wiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPCEtLSBNb2lzIC0tPlxuICAgICAgICA8Q2FsZW5kYXJcbiAgICAgICAgICAgIHYtbW9kZWw9XCJzZWxlY3RlZE1vbnRoXCJcbiAgICAgICAgICAgIHZpZXc9XCJtb250aFwiXG4gICAgICAgICAgICBkYXRlRm9ybWF0PVwibW0veXlcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LTQwXCJcbiAgICAgICAgICAgIDpwbGFjZWhvbGRlcj1cInQoJ2RvY3VGbG93RmluZGVyLm1vbnRoRmlsdGVyJylcIlxuICAgICAgICAgICAgQHVwZGF0ZTptb2RlbFZhbHVlPVwiZmV0Y2hEb2N1bWVudHNcIlxuICAgICAgICAvPlxuXG4gICAgICAgIDwhLS0gUsOpaW5pdGlhbGlzZXIgLS0+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIDpsYWJlbD1cInQoJ2RvY3VGbG93RmluZGVyLnJlc2V0QnRuJylcIlxuICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcbiAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5IHJlc2V0XCJcbiAgICAgICAgICAgIEBjbGljaz1cInJlc2V0RmlsdGVyc1wiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBUeXBlcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBnYXAtMyBidXR0b24tdHlwZVwiPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICB2LWZvcj1cInR5cGUgaW4gdHlwZXNcIlxuICAgICAgICAgICAgOmtleT1cInR5cGVcIlxuICAgICAgICAgICAgOmxhYmVsPVwidHlwZVwiXG4gICAgICAgICAgICA6Y2xhc3M9XCJbc2VsZWN0ZWRUeXBlcy5pbmNsdWRlcyh0eXBlKSA/ICdiZy1ibHVlLTUwMCB0ZXh0LXdoaXRlJyA6ICdiZy1ncmF5LTIwMCB0ZXh0LWdyYXktODAwJ11cIlxuICAgICAgICAgICAgY2xhc3M9XCJweC00IHB5LTJcIlxuICAgICAgICAgICAgQGNsaWNrPVwidG9nZ2xlVHlwZSh0eXBlKVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0g8J+UuSBUYWJsZSAtLT5cbiAgICA8RGF0YVRhYmxlXG4gICAgICAgIDp2YWx1ZT1cImRvY3VtZW50c1wiXG4gICAgICAgIDpsb2FkaW5nPVwibG9hZGluZ1wiXG4gICAgICAgIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIlxuICAgICAgICBjbGFzcz1cInRleHQtc21cIlxuICAgICAgICBwYWdpbmF0b3JcbiAgICAgICAgOnJvd3M9XCIxMFwiXG4gICAgICAgIDpyb3dzUGVyUGFnZU9wdGlvbnM9XCJbMTAsIDIwLCA1MF1cIlxuICAgICAgICA6c29ydEZpZWxkPVwic29ydEZpZWxkXCJcbiAgICAgICAgOnNvcnRPcmRlcj1cInNvcnRPcmRlclwiXG4gICAgICAgIEBzb3J0PVwib25Tb3J0XCJcbiAgICA+XG4gICAgICA8Q29sdW1uIGZpZWxkPVwidHlwZVwiIDpoZWFkZXI9XCJ0KCdkb2N1Rmxvd0ZpbmRlci50eXBlSGVhZGVyJylcIiBzdHlsZT1cIndpZHRoOiA4MHB4XCIgc29ydGFibGU+XG4gICAgICAgIDx0ZW1wbGF0ZSAjYm9keT1cInsgZGF0YSB9XCI+XG4gICAgICAgICAgPFRhZyA6dmFsdWU9XCJkYXRhLnR5cGVcIiA6c3R5bGU9XCJnZXRUeXBlU3R5bGUoZGF0YS50eXBlKVwiIC8+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L0NvbHVtbj5cblxuICAgICAgPENvbHVtbiBmaWVsZD1cInN0b3JlZF9uYW1lXCIgOmhlYWRlcj1cInQoJ2RvY3VGbG93RmluZGVyLm5hbWVIZWFkZXInKVwiIHN0eWxlPVwid2lkdGg6IDIyMHB4XCIgc29ydGFibGU+XG4gICAgICAgIDx0ZW1wbGF0ZSAjYm9keT1cInsgZGF0YSB9XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInRydW5jYXRlIHdoaXRlc3BhY2Utbm93cmFwIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWVsbGlwc2lzIHRleHQtbGVmdFwiXG4gICAgICAgICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiAyMDBweDtcIlxuICAgICAgICAgICAgICA6dGl0bGU9XCJkYXRhLnN0b3JlZF9uYW1lXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBkYXRhLnN0b3JlZF9uYW1lIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L0NvbHVtbj5cblxuICAgICAgPENvbHVtbiBmaWVsZD1cImxhbmd1ZVwiIDpoZWFkZXI9XCJ0KCdkb2N1Rmxvd0ZpbmRlci5sYW5ndWFnZUhlYWRlcicpXCIgc3R5bGU9XCJ3aWR0aDogODBweFwiIHNvcnRhYmxlIC8+XG5cbiAgICAgIDxDb2x1bW4gZmllbGQ9XCJmaWxlX3NpemVcIiA6aGVhZGVyPVwidCgnZG9jdUZsb3dGaW5kZXIuc2l6ZUhlYWRlcicpXCIgc3R5bGU9XCJ3aWR0aDogMTAwcHhcIiBzb3J0YWJsZT5cbiAgICAgICAgPHRlbXBsYXRlICNib2R5PVwieyBkYXRhIH1cIj5cbiAgICAgICAgICB7eyAoZGF0YS5maWxlX3NpemUgLyAxMDI0IC8gMTAyNCkudG9GaXhlZCgyKSB9fSBNYlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9Db2x1bW4+XG5cbiAgICAgIDxDb2x1bW4gZmllbGQ9XCJjcmVhdGVkX2F0XCIgOmhlYWRlcj1cInQoJ2RvY3VGbG93RmluZGVyLmNyZWF0ZWRIZWFkZXInKVwiIHN0eWxlPVwid2lkdGg6IDEzMHB4XCIgc29ydGFibGU+XG4gICAgICAgIDx0ZW1wbGF0ZSAjYm9keT1cInsgZGF0YSB9XCI+XG4gICAgICAgICAge3sgbmV3IERhdGUoZGF0YS5jcmVhdGVkX2F0KS50b0xvY2FsZURhdGVTdHJpbmcoKSB9fVxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9Db2x1bW4+XG5cbiAgICAgIDxDb2x1bW4gZmllbGQ9XCJjb250cmlidXRvclwiIDpoZWFkZXI9XCJ0KCdkb2N1Rmxvd0ZpbmRlci5jb250cmlidXRvckhlYWRlcicpXCIgc3R5bGU9XCJ3aWR0aDogMjAwcHhcIiBzb3J0YWJsZSAvPlxuXG4gICAgICA8Q29sdW1uIGZpZWxkPVwic3RhdHVzXCIgOmhlYWRlcj1cInQoJ2RvY3VGbG93RmluZGVyLnN0YXRlSGVhZGVyJylcIiBzdHlsZT1cIndpZHRoOiAxMDBweFwiIHNvcnRhYmxlPlxuICAgICAgICA8dGVtcGxhdGUgI2JvZHk9XCJ7IGRhdGEgfVwiPlxuICAgICAgICAgIDxUYWdcbiAgICAgICAgICAgICAgOnZhbHVlPVwidCgnZG9jdUZsb3dGaW5kZXIuc3RhdHVzTGFiZWxzLicgKyAoZGF0YS5zdGF0dXNfa2V5ID8/IGdldFN0YXR1c0tleShkYXRhLnN0YXR1cykpKVwiXG4gICAgICAgICAgICAgIDpzdHlsZT1cIntcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBnZXRTdGF0dXNDb2xvckZyb21GbGFncyhkYXRhKSxcbiAgICAgICAgICAgICAgY29sb3I6ICd3aGl0ZScsXG4gICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCdcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L0NvbHVtbj5cblxuICAgICAgPENvbHVtbiBjbGFzcz1cImFjdGlvbi1jb2xcIiBzdHlsZT1cIndpZHRoOiA4NXB4XCI+XG4gICAgICAgIDx0ZW1wbGF0ZSAjYm9keT1cInsgZGF0YSB9XCI+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpY29uPVwicGkgcGktZWxsaXBzaXMtdlwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgICAgQGNsaWNrPVwidG9nZ2xlTWVudSgkZXZlbnQsIGRhdGEpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxNZW51IDptb2RlbD1cImNvbnRleHRNZW51SXRlbXNcIiA6cG9wdXA9XCJ0cnVlXCIgcmVmPVwibWVudVwiIC8+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L0NvbHVtbj5cbiAgICA8L0RhdGFUYWJsZT5cblxuICAgIDwhLS0g8J+UuSBEaWFsb2cgc3VwcHJlc3Npb24gLS0+XG4gICAgPERpYWxvZ1xuICAgICAgICA6aGVhZGVyPVwidCgnZG9jdUZsb3dGaW5kZXIuZGVsZXRlQ29uZmlybVRpdGxlJylcIlxuICAgICAgICB2LW1vZGVsOnZpc2libGU9XCJzaG93RGVsZXRlRGlhbG9nXCJcbiAgICAgICAgbW9kYWxcbiAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogJzQwMHB4JyB9XCJcbiAgICA+XG4gICAgICA8cCBjbGFzcz1cIm1iLTRcIj57eyB0KCdkb2N1Rmxvd0ZpbmRlci5kZWxldGVDb25maXJtTXNnJykgfX08L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgbWItNFwiPlxuICAgICAgICA8Q2hlY2tib3ggdi1tb2RlbD1cImNvbmZpcm1EZWxldGVDaGVja2VkXCIgOmJpbmFyeT1cInRydWVcIiBpbnB1dElkPVwiY29uZmlybURlbGV0ZVwiIC8+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJjb25maXJtRGVsZXRlXCI+e3sgdCgnZG9jdUZsb3dGaW5kZXIuZGVsZXRlQ29uZmlybUNoZWNrJykgfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIGdhcC0yXCI+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIDpsYWJlbD1cInQoJ2RvY3VGbG93RmluZGVyLmNhbmNlbCcpXCJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS10aW1lc1wiXG4gICAgICAgICAgICBzZXZlcml0eT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJzaG93RGVsZXRlRGlhbG9nID0gZmFsc2VcIlxuICAgICAgICAvPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICA6bGFiZWw9XCJ0KCdkb2N1Rmxvd0ZpbmRlci5kZWxldGUnKVwiXG4gICAgICAgICAgICBpY29uPVwicGkgcGktdHJhc2hcIlxuICAgICAgICAgICAgc2V2ZXJpdHk9XCJkYW5nZXJcIlxuICAgICAgICAgICAgOmRpc2FibGVkPVwiIWNvbmZpcm1EZWxldGVDaGVja2VkXCJcbiAgICAgICAgICAgIEBjbGljaz1cImhhbmRsZURlbGV0ZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0RpYWxvZz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwPlxuaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQsIG5leHRUaWNrIH0gZnJvbSAndnVlJ1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJ1xuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gJ3Z1ZS1pMThuJ1xuaW1wb3J0IFRvYXN0IGZyb20gJ3ByaW1ldnVlL3RvYXN0J1xuaW1wb3J0IElucHV0VGV4dCBmcm9tICdwcmltZXZ1ZS9pbnB1dHRleHQnXG5pbXBvcnQgQnV0dG9uIGZyb20gJ3ByaW1ldnVlL2J1dHRvbidcbmltcG9ydCBUYWcgZnJvbSAncHJpbWV2dWUvdGFnJ1xuaW1wb3J0IERhdGFUYWJsZSBmcm9tICdwcmltZXZ1ZS9kYXRhdGFibGUnXG5pbXBvcnQgQ29sdW1uIGZyb20gJ3ByaW1ldnVlL2NvbHVtbidcbmltcG9ydCBEcm9wZG93biBmcm9tICdwcmltZXZ1ZS9kcm9wZG93bidcbmltcG9ydCBNZW51IGZyb20gJ3ByaW1ldnVlL21lbnUnXG5pbXBvcnQgeyB1c2VUb2FzdCB9IGZyb20gJ3ByaW1ldnVlL3VzZXRvYXN0J1xuaW1wb3J0IEZsb2F0TGFiZWwgZnJvbSAncHJpbWV2dWUvZmxvYXRsYWJlbCdcbmltcG9ydCBEaWFsb2cgZnJvbSAncHJpbWV2dWUvZGlhbG9nJ1xuaW1wb3J0IENoZWNrYm94IGZyb20gJ3ByaW1ldnVlL2NoZWNrYm94J1xuaW1wb3J0IENhbGVuZGFyIGZyb20gJ3ByaW1ldnVlL2NhbGVuZGFyJ1xuaW1wb3J0IHsgaTE4biB9IGZyb20gJy9hc3NldHMvaTE4bi9pbmRleC5qcydcblxuY29uc3QgeyB0IH0gPSB1c2VJMThuKClcbmNvbnN0IHRvYXN0ID0gdXNlVG9hc3QoKVxuXG5jb25zdCBkb2N1bWVudHMgPSByZWYoW10pXG5jb25zdCBsb2FkaW5nID0gcmVmKGZhbHNlKVxuY29uc3Qgc2VhcmNoID0gcmVmKCcnKVxuY29uc3Qgc2VsZWN0ZWRMYW5ndWUgPSByZWYobnVsbClcbmNvbnN0IHNlbGVjdGVkRXRhdCA9IHJlZihudWxsKVxuY29uc3Qgc2VsZWN0ZWRNb250aCA9IHJlZihudWxsKVxuY29uc3Qgc2VsZWN0ZWRUeXBlcyA9IHJlZihbXSlcbmNvbnN0IG1lbnUgPSByZWYobnVsbClcbmNvbnN0IHNlbGVjdGVkUm93ID0gcmVmKG51bGwpXG5jb25zdCBzaG93RGVsZXRlRGlhbG9nID0gcmVmKGZhbHNlKVxuY29uc3QgY29uZmlybURlbGV0ZUNoZWNrZWQgPSByZWYoZmFsc2UpXG5jb25zdCBzb3J0RmllbGQgPSByZWYobnVsbClcbmNvbnN0IHNvcnRPcmRlciA9IHJlZihudWxsKVxuXG5jb25zdCB0eXBlcyA9IFsnVERTJywgJ1NEUycsICdDT0MnLCAnQ09BJywgJ0JBTVMnLCAnSUZUSCcsICdGQUknLCAnV1InLCAnREVST0cnXVxuXG5jb25zdCBsYW5ndWVPcHRpb25zID0gcmVmKFtdKVxuY29uc3QgZXRhdE9wdGlvbnMgPSBbXG4gIHsgbGFiZWw6IHQoJ2RvY3VGbG93RmluZGVyLnN0YXR1c0xhYmVscy5hY3RpdmUnKSwgdmFsdWU6ICdhY3RpdmUnIH0sXG4gIHsgbGFiZWw6IHQoJ2RvY3VGbG93RmluZGVyLnN0YXR1c0xhYmVscy5hcmNoaXZlZCcpLCB2YWx1ZTogJ2FyY2hpdmVkJyB9LFxuICB7IGxhYmVsOiB0KCdkb2N1Rmxvd0ZpbmRlci5zdGF0dXNMYWJlbHMuaW5hY3RpdmUnKSwgdmFsdWU6ICdpbmFjdGl2ZScgfVxuXVxuXG5jb25zdCBvblNvcnQgPSAoZXZlbnQpID0+IHtcbiAgc29ydEZpZWxkLnZhbHVlID0gZXZlbnQuc29ydEZpZWxkXG4gIHNvcnRPcmRlci52YWx1ZSA9IGV2ZW50LnNvcnRPcmRlclxufVxuXG5jb25zdCBnZXRTdGF0dXNLZXkgPSAoc3RhdHVzKSA9PiB7XG4gIGlmICghc3RhdHVzKSByZXR1cm4gJ2luYWN0aXZlJ1xuICBjb25zdCBzID0gc3RhdHVzLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKVxuICBpZiAocy5pbmNsdWRlcygnYXJjaGl2JykpIHJldHVybiAnYXJjaGl2ZWQnXG4gIGlmIChzLmluY2x1ZGVzKCdhY3RpdicpICYmICFzLmluY2x1ZGVzKCdpbmFjdGl2JykpIHJldHVybiAnYWN0aXZlJ1xuICBpZiAocy5pbmNsdWRlcygnaW5hY3RpZicpIHx8IHMuaW5jbHVkZXMoJ2TDqXNhY3RpdicpIHx8IHMuaW5jbHVkZXMoJ2luYWN0aXZlJykgfHwgcy5pbmNsdWRlcygnZGVzYWN0aXYnKSkgcmV0dXJuICdpbmFjdGl2ZSdcbiAgcmV0dXJuICdpbmFjdGl2ZSdcbn1cblxuZnVuY3Rpb24gZ2V0U3RhdHVzQ29sb3JGcm9tRmxhZ3MoZG9jKSB7XG4gIGlmIChkb2MuaXNfYXJjaGl2ZWQpIHJldHVybiAnI0Y0QUUyQicgIC8vIG9yYW5nZVxuICBpZiAoIWRvYy5pc19hY3RpdmUpIHJldHVybiAnI0ZGNEY0RicgICAvLyByb3VnZVxuICByZXR1cm4gJyMwMEJFNzknICAgICAgICAgICAgICAgICAgICAgIC8vIHZlcnRcbn1cblxuY29uc3QgZ2V0VHlwZVN0eWxlID0gKHR5cGUpID0+ICh7XG4gIGJhY2tncm91bmRDb2xvcjogJyMwMDQyRkYnLFxuICBjb2xvcjogJ3doaXRlJyxcbiAgYm9yZGVyOiAnbm9uZScsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJ1xufSlcblxuY29uc3QgZ2V0RmxhZ0Vtb2ppID0gKGNvdW50cnlDb2RlKSA9PiB7XG4gIGlmICghY291bnRyeUNvZGUpIHJldHVybiAnJ1xuICBjb25zdCBjb2RlUG9pbnRzID0gY291bnRyeUNvZGUudG9VcHBlckNhc2UoKS5zcGxpdCgnJykubWFwKGNoYXIgPT4gMTI3Mzk3ICsgY2hhci5jaGFyQ29kZUF0KCkpXG4gIHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5jb2RlUG9pbnRzKVxufVxuXG5jb25zdCBsb2FkTGFuZ3VhZ2VzID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgYXhpb3MuZ2V0KCcvYXBpL2RvY3VtZW50LWxhbmd1YWdlcycpXG4gICAgbGFuZ3VlT3B0aW9ucy52YWx1ZSA9IGRhdGEubWFwKGxhbmcgPT4gKHtcbiAgICAgIGxhYmVsOiBgJHtnZXRGbGFnRW1vamkobGFuZy52YWx1ZSl9ICR7bGFuZy5sYWJlbH1gLFxuICAgICAgdmFsdWU6IGxhbmcudmFsdWVcbiAgICB9KSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJldXIgbG9ycyBkdSBjaGFyZ2VtZW50IGRlcyBsYW5ndWVzJywgZXJyb3IpXG4gIH1cbn1cblxuY29uc3QgZmV0Y2hEb2N1bWVudHMgPSBhc3luYyAoKSA9PiB7XG4gIGxvYWRpbmcudmFsdWUgPSB0cnVlXG4gIHRyeSB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgc2VhcmNoOiBzZWFyY2gudmFsdWUsXG4gICAgICBsYW5ndWU6IHNlbGVjdGVkTGFuZ3VlLnZhbHVlLFxuICAgICAgZXRhdDogc2VsZWN0ZWRFdGF0LnZhbHVlLFxuICAgICAgdHlwZTogc2VsZWN0ZWRUeXBlcy52YWx1ZS5qb2luKCcsJyksXG4gICAgICB0OiBEYXRlLm5vdygpXG4gICAgfVxuXG4gICAgaWYgKHNlbGVjdGVkTW9udGgudmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICBjb25zdCB5ZWFyID0gc2VsZWN0ZWRNb250aC52YWx1ZS5nZXRGdWxsWWVhcigpXG4gICAgICBjb25zdCBtb250aCA9IFN0cmluZyhzZWxlY3RlZE1vbnRoLnZhbHVlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpXG4gICAgICBwYXJhbXMubW9udGggPSBgJHt5ZWFyfS0ke21vbnRofWBcbiAgICB9XG5cbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGF4aW9zLmdldCgnL2FwaS9kb2N1bWVudC1maW5kZXInLCB7IHBhcmFtcyB9KVxuICAgIGNvbnNvbGUubG9nKCdEb2N1bWVudHMgcmXDp3VzOicsIGRhdGEpXG4gICAgZG9jdW1lbnRzLnZhbHVlID0gW11cbiAgICBhd2FpdCBuZXh0VGljaygpXG4gICAgZG9jdW1lbnRzLnZhbHVlID0gZGF0YVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0VycmV1ciBsb3JzIGR1IGZldGNoIGRlcyBkb2N1bWVudHM6JywgZXJyb3IpXG4gIH0gZmluYWxseSB7XG4gICAgbG9hZGluZy52YWx1ZSA9IGZhbHNlXG4gIH1cbn1cblxuY29uc3QgcmVzZXRGaWx0ZXJzID0gKCkgPT4ge1xuICBzZWFyY2gudmFsdWUgPSAnJ1xuICBzZWxlY3RlZExhbmd1ZS52YWx1ZSA9IG51bGxcbiAgc2VsZWN0ZWRFdGF0LnZhbHVlID0gbnVsbFxuICBzZWxlY3RlZE1vbnRoLnZhbHVlID0gbnVsbFxuICBzZWxlY3RlZFR5cGVzLnZhbHVlID0gW11cbiAgZmV0Y2hEb2N1bWVudHMoKVxufVxuXG5jb25zdCB0b2dnbGVUeXBlID0gKHR5cGUpID0+IHtcbiAgY29uc3QgaW5kZXggPSBzZWxlY3RlZFR5cGVzLnZhbHVlLmluZGV4T2YodHlwZSlcbiAgaWYgKGluZGV4ID4gLTEpIHNlbGVjdGVkVHlwZXMudmFsdWUuc3BsaWNlKGluZGV4LCAxKVxuICBlbHNlIHNlbGVjdGVkVHlwZXMudmFsdWUucHVzaCh0eXBlKVxuICBmZXRjaERvY3VtZW50cygpXG59XG5cbi8vIPCflLkgQ29udGV4dCBNZW51XG5jb25zdCBjb250ZXh0TWVudUl0ZW1zID0gcmVmKFtdKVxuXG5jb25zdCB0b2dnbGVNZW51ID0gKGV2ZW50LCByb3dEYXRhKSA9PiB7XG4gIHNlbGVjdGVkUm93LnZhbHVlID0gcm93RGF0YVxuICBjb250ZXh0TWVudUl0ZW1zLnZhbHVlID0gcm93RGF0YS5zdGF0dXMgPT09ICdBcmNoaXbDqScgPyBtZW51QXJjaGl2ZU9ubHkgOiBtZW51RnVsbEl0ZW1zXG4gIGlmIChtZW51LnZhbHVlKSBtZW51LnZhbHVlLnRvZ2dsZShldmVudClcbn1cblxuY29uc3QgbWVudUZ1bGxJdGVtcyA9IFtcbiAge1xuICAgIGxhYmVsOiB0KCdkb2N1Rmxvd0ZpbmRlci5kb3dubG9hZCcpLFxuICAgIGljb246ICdwaSBwaS1kb3dubG9hZCcsXG4gICAgY29tbWFuZDogKCkgPT4gc2VsZWN0ZWRSb3cudmFsdWUgJiYgZG93bmxvYWREb2N1bWVudChzZWxlY3RlZFJvdy52YWx1ZS5zdG9yZWRfbmFtZSlcbiAgfSxcbiAgeyBzZXBhcmF0b3I6IHRydWUgfSxcbiAge1xuICAgIGxhYmVsOiB0KCdkb2N1Rmxvd0ZpbmRlci5hcmNoaXZlJyksXG4gICAgaWNvbjogJ3BpIHBpLWZvbGRlcicsXG4gICAgY29tbWFuZDogYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXhpb3MucG9zdChgL2FwaS9kb2N1bWVudC8ke3NlbGVjdGVkUm93LnZhbHVlLmlkfS9hcmNoaXZlYClcbiAgICAgICAgdG9hc3QuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogdCgnZG9jdUZsb3dGaW5kZXIuc3VjY2Vzc0FyY2hpdmVkJyksIGxpZmU6IDMwMDAgfSlcbiAgICAgICAgYXdhaXQgZmV0Y2hEb2N1bWVudHMoKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRvYXN0LmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiB0KCdkb2N1Rmxvd0ZpbmRlci5lcnJvckFyY2hpdmVkJyksIGxpZmU6IDMwMDAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHtcbiAgICBsYWJlbDogdCgnZG9jdUZsb3dGaW5kZXIuZWRpdCcpLFxuICAgIGljb246ICdwaSBwaS1wZW5jaWwnLFxuICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZFJvdy52YWx1ZSkge1xuICAgICAgICBjb25zdCBsb2NhbGUgPSBpMThuLmdsb2JhbC5sb2NhbGUudmFsdWUgfHwgJ2ZyJ1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvJHtsb2NhbGV9L2RvY3VtZW50LyR7c2VsZWN0ZWRSb3cudmFsdWUuaWR9L2VkaXRgXG4gICAgICB9XG4gICAgfVxuICB9LFxuICB7XG4gICAgbGFiZWw6IHQoJ2RvY3VGbG93RmluZGVyLmFjdGl2YXRlJyksXG4gICAgaWNvbjogJ3BpIHBpLWNoZWNrJyxcbiAgICBjb21tYW5kOiBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBheGlvcy5wb3N0KGAvYXBpL2RvY3VtZW50LyR7c2VsZWN0ZWRSb3cudmFsdWUuaWR9L2FjdGl2YXRlYClcbiAgICAgICAgdG9hc3QuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogdCgnZG9jdUZsb3dGaW5kZXIuc3VjY2Vzc0FjdGl2YXRlZCcpLCBsaWZlOiAzMDAwIH0pXG4gICAgICAgIGF3YWl0IGZldGNoRG9jdW1lbnRzKClcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0b2FzdC5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogdCgnZG9jdUZsb3dGaW5kZXIuZXJyb3JBY3RpdmF0ZWQnKSwgbGlmZTogMzAwMCB9KVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAge1xuICAgIGxhYmVsOiB0KCdkb2N1Rmxvd0ZpbmRlci5kZWFjdGl2YXRlJyksXG4gICAgaWNvbjogJ3BpIHBpLWJhbicsXG4gICAgY29tbWFuZDogYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBheGlvcy5wb3N0KGAvYXBpL2RvY3VtZW50LyR7c2VsZWN0ZWRSb3cudmFsdWUuaWR9L2RlYWN0aXZhdGVgKVxuICAgICAgICBpZiAoZGF0YT8uc3VjY2Vzcykge1xuICAgICAgICAgIHRvYXN0LmFkZCh7IHNldmVyaXR5OiAnd2FybicsIHN1bW1hcnk6IHQoJ2RvY3VGbG93RmluZGVyLnN1Y2Nlc3NEZWFjdGl2YXRlZCcpLCBsaWZlOiAzMDAwIH0pXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDMwMCkpXG4gICAgICAgIGF3YWl0IGZldGNoRG9jdW1lbnRzKClcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0b2FzdC5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogdCgnZG9jdUZsb3dGaW5kZXIuZXJyb3JEZWFjdGl2YXRlZCcpLCBsaWZlOiAzMDAwIH0pXG4gICAgICB9XG4gICAgfVxuICB9LFxuICB7XG4gICAgbGFiZWw6IHQoJ2RvY3VGbG93RmluZGVyLmRlbGV0ZScpLFxuICAgIGljb246ICdwaSBwaS10cmFzaCcsXG4gICAgY29tbWFuZDogKCkgPT4ge1xuICAgICAgY29uZmlybURlbGV0ZUNoZWNrZWQudmFsdWUgPSBmYWxzZVxuICAgICAgc2hvd0RlbGV0ZURpYWxvZy52YWx1ZSA9IHRydWVcbiAgICB9XG4gIH1cbl1cblxuY29uc3QgbWVudUFyY2hpdmVPbmx5ID0gW1xuICB7XG4gICAgbGFiZWw6IHQoJ2RvY3VGbG93RmluZGVyLnVuYXJjaGl2ZScpLFxuICAgIGljb246ICdwaSBwaS1mb2xkZXItb3BlbicsXG4gICAgY29tbWFuZDogYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXhpb3MucG9zdChgL2FwaS9kb2N1bWVudC8ke3NlbGVjdGVkUm93LnZhbHVlLmlkfS91bmFyY2hpdmVgKVxuICAgICAgICB0b2FzdC5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiB0KCdkb2N1Rmxvd0ZpbmRlci5zdWNjZXNzVW5hcmNoaXZlZCcpLCBsaWZlOiAzMDAwIH0pXG4gICAgICAgIGF3YWl0IGZldGNoRG9jdW1lbnRzKClcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0b2FzdC5hZGQoeyBzZXZlcml0eTogJ2Vycm9yJywgc3VtbWFyeTogdCgnZG9jdUZsb3dGaW5kZXIuZXJyb3JVbmFyY2hpdmVkJyksIGxpZmU6IDMwMDAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cbl1cblxuY29uc3QgZG93bmxvYWREb2N1bWVudCA9IChmaWxlbmFtZSkgPT4ge1xuICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAvZG93bmxvYWQtZG9jdW1lbnQvJHtlbmNvZGVVUklDb21wb25lbnQoZmlsZW5hbWUpfWBcbn1cblxuY29uc3QgaGFuZGxlRGVsZXRlID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIGF3YWl0IGF4aW9zLmRlbGV0ZShgL2FwaS9kb2N1bWVudC8ke3NlbGVjdGVkUm93LnZhbHVlLmlkfS9kZWxldGVgKVxuICAgIHRvYXN0LmFkZCh7IHNldmVyaXR5OiAnc3VjY2VzcycsIHN1bW1hcnk6IHQoJ2RvY3VGbG93RmluZGVyLnN1Y2Nlc3NEZWxldGVkJyksIGxpZmU6IDMwMDAgfSlcbiAgICBhd2FpdCBmZXRjaERvY3VtZW50cygpXG4gIH0gY2F0Y2gge1xuICAgIHRvYXN0LmFkZCh7IHNldmVyaXR5OiAnZXJyb3InLCBzdW1tYXJ5OiB0KCdkb2N1Rmxvd0ZpbmRlci5lcnJvckRlbGV0ZWQnKSwgbGlmZTogMzAwMCB9KVxuICB9IGZpbmFsbHkge1xuICAgIHNob3dEZWxldGVEaWFsb2cudmFsdWUgPSBmYWxzZVxuICB9XG59XG5cbm9uTW91bnRlZCgoKSA9PiB7XG4gIGxvYWRMYW5ndWFnZXMoKVxuICBmZXRjaERvY3VtZW50cygpXG59KVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG46OnYtZGVlcCgucC10YWcpIHtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtO1xufVxuXG4ucC02LmJnLXdoaXRlLnJvdW5kZWQteGwuc2hhZG93LW1kIHtcbiAgd2lkdGg6IDE1NjBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiAxNyU7XG4gIGJvcmRlci1yYWRpdXM6IDAuNzVyZW07XG59XG5cbi8qIEJhcnJlIGRlIHJlY2hlcmNoZSAqL1xuLnAtaW5wdXQtaWNvbi1sZWZ0IGlucHV0IHtcbiAgYm9yZGVyOiAycHggc29saWQgIzI1NjNlYjsgLyogQmxldSB2aWYgKi9cbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgcGFkZGluZzogMC42cmVtIDFyZW07XG4gIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG5cbi8qIEljw7RuZSBkZSByZWNoZXJjaGUgYWxpZ27DqWUgam9saW1lbnQgKi9cbi5wLWlucHV0LWljb24tbGVmdCA+IGkge1xuICBsZWZ0OiAxMHB4O1xuICBjb2xvcjogIzI1NjNlYjtcbiAgZm9udC1zaXplOiAxcmVtO1xuICB0b3A6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuXG4vKiBEcm9wZG93bnMgKGxhbmd1ZSwgw6l0YXQsIGRhdGUpICovXG4ucC1kcm9wZG93biB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGIgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogMTBweCAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDAuOTVyZW07XG4gIHBhZGRpbmc6IDAuMnJlbSAwLjVyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBib3gtc2hhZG93OiBub25lO1xuICBtaW4taGVpZ2h0OiA0MHB4O1xufVxuXG4vKiBPcHRpb24gc8OpbGVjdGlvbm7DqWUgKi9cbi5wLWRyb3Bkb3duLWxhYmVsIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG59XG5cbi8qIEJvdXRvbnMgZGUgdHlwZSAoVERTLCBTRFMsIC4uLikgKi9cbmJ1dHRvbi5iZy1ibHVlLTUwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQyRkYgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHggIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgYm9yZGVyOiBub25lO1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgd2lkdGg6IDguMzEzcmVtO1xuICBoZWlnaHQ6IDQ4cHg7XG59XG5cbmJ1dHRvbi5iZy1ncmF5LTIwMCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkYgIWltcG9ydGFudDtcbiAgY29sb3I6ICMzNzQxNTEgIWltcG9ydGFudDtcbiAgYm9yZGVyLXJhZGl1czogMTBweCAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogNTAwO1xuICBib3JkZXI6IDFweCBzb2xpZCAjQTNBRUQwO1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgd2lkdGg6IDkuMzEzcmVtO1xuICBoZWlnaHQ6IDQ4cHg7XG59XG5cbi8qIEdsb2JhbCBjb250YWluZXIgcGFkZGluZyAqL1xuLnAtNi5iZy13aGl0ZS5yb3VuZGVkLXhsLnNoYWRvdy1tZCB7XG4gIHBhZGRpbmc6IDJyZW07XG4gIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbi5idXR0b24tdHlwZSB7XG4gIG1hcmdpbi1sZWZ0OiAxLjg3NXJlbTtcbn1cblxuLmZpbHRlcnMtZmluZGVyIHtcbiAgbWFyZ2luLWxlZnQ6IDIuNXJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuI3NlYXJjaCB7XG4gIHdpZHRoOiA1ODVweDtcbiAgaGVpZ2h0OiA1MHB4O1xuICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICBtYXJnaW4tcmlnaHQ6IDhyZW07XG59XG5cbiNzZWFyY2g6Zm9jdXMge1xuICBib3gtc2hhZG93OiAwIDAgMCAwLjFyZW0gIzAwNDJGRiFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogIzAwNDJGRiFpbXBvcnRhbnQ7XG59XG5cbi5yZXNldCB7XG4gIHdpZHRoOiAxMHJlbTtcbiAgaGVpZ2h0OiA1MHB4O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDQyRkYhaW1wb3J0YW50O1xufVxuXG4ucC1kaWFsb2ctY29udGVudCBsYWJlbHtcbiAgbWFyZ2luLWJvdHRvbTogMHB4IWltcG9ydGFudDtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG59XG48L3N0eWxlPiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/