/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** 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]!./assets/visual_editor/EditorVisualApp.vue?vue&type=style&index=0&id=e1ad691a&scoped=true&lang=css ***!
  \*****************************************************************************************************************************************************************************************************************************************************************************************/

.ev-editor[data-v-e1ad691a] { display: flex; flex-direction: column; gap: 16px;
}

/* ── Canvas card ── */
.se-canvas-card[data-v-e1ad691a] {
  background: #fff;
  border-radius: 16px;
  border: 1px solid #e8e6e2;
  overflow: hidden;
}
.se-canvas-toolbar[data-v-e1ad691a] {
  padding: 12px 18px;
  border-bottom: 1px solid #f0ede8;
  display: flex; align-items: center; justify-content: space-between;
}
.se-canvas-title[data-v-e1ad691a] { font-size: 13px; font-weight: 600; color: #555; display: flex; align-items: center; gap: 8px;
}
.se-canvas-badge[data-v-e1ad691a] { background: #f0ede8; color: #888; font-size: 11px; padding: 2px 8px; border-radius: 10px; font-weight: 500;
}
.se-zoom-controls[data-v-e1ad691a] { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #aaa;
}
.se-zoom-btn[data-v-e1ad691a] {
  width: 26px; height: 26px;
  border: 1.5px solid #e8e6e2; border-radius: 6px; background: #fafaf9;
  font-size: 14px; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  color: #555; transition: all .15s;
}
.se-zoom-btn[data-v-e1ad691a]:hover { border-color: #1a1a1a; color: #1a1a1a;
}
.se-canvas-area[data-v-e1ad691a] {
  background: repeating-conic-gradient(#e8e6e2 0% 25%, #f5f3f0 0% 50%) 0 0 / 18px 18px;
  min-height: 340px;
  position: relative;
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.se-canvas-info[data-v-e1ad691a] {
  position: absolute; bottom: 10px; left: 12px;
  font-size: 10px; color: #bbb;
  background: rgba(255,255,255,.85);
  padding: 3px 8px; border-radius: 6px;
}
.se-canvas-info--topright[data-v-e1ad691a] {
  position: absolute; top: 10px; right: 12px;
  display: flex; gap: 6px; align-items: center;
}

/* ── Upload bar ── */
.se-upload-bar[data-v-e1ad691a] {
  padding: 12px 18px;
  border-top: 1px solid #f0ede8;
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 8px;
}
.se-upload-actions[data-v-e1ad691a] { display: flex; gap: 8px; flex-wrap: wrap;
}
.se-btn-upload[data-v-e1ad691a] {
  display: flex; align-items: center; gap: 6px;
  padding: 7px 14px;
  border-radius: 8px; border: 1.5px solid #e8e6e2; background: #fafaf9;
  font-size: 13px; font-weight: 600; color: #333; cursor: pointer;
  transition: all .15s; white-space: nowrap;
}
.se-btn-upload[data-v-e1ad691a]:hover { border-color: #1a1a1a; background: #f5f3f0;
}
.se-btn-upload.primary[data-v-e1ad691a] { background: #1a1a1a; border-color: #1a1a1a; color: #fff;
}
.se-btn-upload.primary[data-v-e1ad691a]:hover { background: #333;
}
.se-btn-upload.danger[data-v-e1ad691a] { color: #dc3545; border-color: #f5c6cb; background: #fff5f5;
}
.se-btn-upload.danger[data-v-e1ad691a]:hover { background: #ffe5e5; border-color: #dc3545;
}
.se-upload-hint[data-v-e1ad691a] { font-size: 11px; color: #bbb;
}

/* ── Visual options ── */
.se-visual-card[data-v-e1ad691a] { background: #fff; border-radius: 16px; border: 1px solid #e8e6e2; padding: 18px 20px;
}
.se-label[data-v-e1ad691a] { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.8px; color: #999; margin-bottom: 12px;
}
.se-visual-options[data-v-e1ad691a] { display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
}
.se-visual-option[data-v-e1ad691a] { border: 1.5px solid #e8e6e2; border-radius: 10px; padding: 12px 14px; cursor: pointer; transition: all .15s; position: relative;
}
.se-visual-option[data-v-e1ad691a]:hover { border-color: #c0bdb8; background: #fafaf9;
}
.se-visual-option.active[data-v-e1ad691a] { border-color: #1a1a1a; background: #fafaf9;
}
.se-visual-name[data-v-e1ad691a] { font-size: 13px; font-weight: 600; color: #222; margin-bottom: 2px;
}
.se-visual-desc[data-v-e1ad691a] { font-size: 11px; color: #aaa; line-height: 1.3;
}
.se-visual-check[data-v-e1ad691a] { position: absolute; top: 10px; right: 10px; width: 18px; height: 18px; border-radius: 50%; border: 1.5px solid #e0ddd8; background: #fff;
}
.se-visual-option.active .se-visual-check[data-v-e1ad691a] { background: #1a1a1a; border-color: #1a1a1a;
}
.se-visual-option.active .se-visual-check[data-v-e1ad691a]::after { content: ''; display: block; width: 5px; height: 8px; border: 2px solid #fff; border-top: none; border-left: none; transform: rotate(45deg) translate(3px, 1px);
}
.se-border-sub[data-v-e1ad691a] { margin-top: 12px; padding-top: 12px; border-top: 1px solid #f0ede8;
}
.se-border-sub-label[data-v-e1ad691a] { font-size: 11px; color: #999; margin-bottom: 6px; font-weight: 500;
}
.se-slider[data-v-e1ad691a] { flex: 1; accent-color: #1a1a1a;
}

/* ── Joystick ── */
.se-size-joystick[data-v-e1ad691a] {
  position: absolute; bottom: 12px; right: 12px;
  display: flex; align-items: center; gap: 6px;
  background: rgba(255,255,255,0.92); backdrop-filter: blur(4px);
  border: 1px solid #e8e6e2; border-radius: 20px; padding: 5px 10px;
  z-index: 20; box-shadow: 0 2px 8px rgba(0,0,0,0.12); user-select: none;
}
.se-joy-btn[data-v-e1ad691a] { width: 26px; height: 26px; border: 1.5px solid #e0ddd8; border-radius: 50%; background: #fafaf9; font-size: 16px; font-weight: 300; color: #555; cursor: pointer; display: flex; align-items: center; justify-content: center; flex-shrink: 0; transition: all .1s;
}
.se-joy-btn[data-v-e1ad691a]:hover { border-color: #1a1a1a; color: #1a1a1a; background: #f0ede8;
}
.se-joy-btn[data-v-e1ad691a]:active { background: #1a1a1a; color: #fff; border-color: #1a1a1a;
}
.se-joy-slider[data-v-e1ad691a] { width: 90px; accent-color: #1a1a1a; cursor: pointer;
}

/* ── Corte visual ── */
.corte-visual[data-v-e1ad691a] { background: #fff; transition: width .2s, height .2s, border-radius .2s; overflow: visible;
}
.corte-visual img[data-v-e1ad691a] { pointer-events: none;
}
.corte-visual[data-v-e1ad691a]:active { cursor: grabbing !important;
}
.resize-handle[data-v-e1ad691a] { position: absolute; width: 12px; height: 12px; background: #fff; border: 2px solid #1a1a1a; border-radius: 2px; pointer-events: auto; z-index: 10; box-shadow: 0 1px 4px rgba(0,0,0,0.25);
}
.resize-handle[data-v-e1ad691a]:hover { background: #1a1a1a;
}

/* ── Botón guardar ── */
.se-save-btn[data-v-e1ad691a] {
  width: 100%; padding: 13px;
  background: linear-gradient(135deg, #1a1a1a 0%, #333 100%);
  color: #fff; border: none; border-radius: 10px;
  font-size: 14px; font-weight: 700; cursor: pointer;
  display: flex; align-items: center; justify-content: center; gap: 8px;
  transition: opacity .15s, transform .1s;
}
.se-save-btn[data-v-e1ad691a]:hover:not(:disabled) { opacity: .88; transform: translateY(-1px);
}
.se-save-btn[data-v-e1ad691a]:disabled { opacity: .45; cursor: not-allowed;
}
.se-save-btn svg[data-v-e1ad691a] { width: 15px; height: 15px; opacity: .8;
}

/* ── Overlay ── */
.se-overlay[data-v-e1ad691a] {
  position: fixed; inset: 0; background: rgba(0,0,0,.45);
  display: flex; align-items: center; justify-content: center; z-index: 9999;
}
.se-overlay-card[data-v-e1ad691a] { background: #fff; border-radius: 16px; padding: 32px 40px; text-align: center;
}
.se-overlay-title[data-v-e1ad691a] { font-size: 15px; font-weight: 700; color: #1a1a1a; margin-top: 12px;
}
.se-overlay-subtitle[data-v-e1ad691a] { font-size: 12px; color: #aaa; margin-top: 4px;
}
.se-image-spinner[data-v-e1ad691a] {
  width: 36px; height: 36px; border: 3px solid #e8e6e2;
  border-top-color: #1a1a1a; border-radius: 50%;
  animation: spin-e1ad691a .7s linear infinite; margin: 0 auto;
}
@keyframes spin-e1ad691a {
to { transform: rotate(360deg);
}
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFBRTtBQUN0RTtFQUNFLFdBQVcsRUFBRSxZQUFZLEVBQUUseUJBQXlCO0VBQ3BELHlCQUF5QixFQUFFLGtCQUFrQjtFQUM3Qyw0Q0FBbUMsRUFBRSxjQUFjO0FBQ3JEO0FBQ0E7QUFBa0IsS0FBSyx5QkFBeUI7QUFBRTtBQUFFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vYXNzZXRzL3Zpc3VhbF9lZGl0b3IvRWRpdG9yVmlzdWFsQXBwLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJldi1lZGl0b3JcIj5cblxuICAgIDwhLS0gQ2FudmFzIGNhcmQgLS0+XG4gICAgPGRpdiBjbGFzcz1cInNlLWNhbnZhcy1jYXJkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2UtY2FudmFzLXRvb2xiYXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlLWNhbnZhcy10aXRsZVwiPlxuICAgICAgICAgIFZpc3RhIHByZXZpYVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2UtY2FudmFzLWJhZGdlXCI+e3sgZGltZW5zaW9uTGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2Utem9vbS1jb250cm9sc1wiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZS16b29tLWJ0blwiIEBjbGljaz1cImVzY2FsYSA9IE1hdGgubWF4KDEwLCBlc2NhbGEgLSA1KVwiPuKIkjwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuPnt7IGVzY2FsYSB9fXB4L2NtPC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZS16b29tLWJ0blwiIEBjbGljaz1cImVzY2FsYSA9IE1hdGgubWluKDYwLCBlc2NhbGEgKyA1KTsgY2xhbXBFc2NhbGEoKVwiPis8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDYW52YXMgZGUgcHJldmlldyAtLT5cbiAgICAgIDxkaXYgcmVmPVwicHJldmlld1JlZlwiIGNsYXNzPVwic2UtY2FudmFzLWFyZWFcIlxuICAgICAgICAgICBAZHJhZ292ZXIucHJldmVudCBAZHJvcC5wcmV2ZW50PVwib25Ecm9wXCI+XG5cbiAgICAgICAgPCEtLSBKb3lzdGljayBkZSB0YW1hw7FvIGRlIGltYWdlbiAtLT5cbiAgICAgICAgPGRpdiB2LWlmPVwiaW1hZ2VuU3JjXCIgY2xhc3M9XCJzZS1zaXplLWpveXN0aWNrXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlLWpveS1idG5cIlxuICAgICAgICAgICAgICAgICAgQG1vdXNlZG93bi5wcmV2ZW50PVwiaW5pY2lhclNjYWxlU3RlcCgtMSlcIiBAbW91c2V1cD1cImRldGVuZXJTY2FsZVN0ZXBcIlxuICAgICAgICAgICAgICAgICAgQG1vdXNlbGVhdmU9XCJkZXRlbmVyU2NhbGVTdGVwXCJcbiAgICAgICAgICAgICAgICAgIEB0b3VjaHN0YXJ0LnByZXZlbnQ9XCJpbmljaWFyU2NhbGVTdGVwKC0xKVwiIEB0b3VjaGVuZD1cImRldGVuZXJTY2FsZVN0ZXBcIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJSZWR1Y2lyIGltYWdlblwiPuKIkjwvYnV0dG9uPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cInNlLWpveS1zbGlkZXJcIiBtaW49XCIwXCIgbWF4PVwiMTAwXCIgc3RlcD1cIjFcIlxuICAgICAgICAgICAgICAgICA6dmFsdWU9XCJzY2FsZVNsaWRlclwiXG4gICAgICAgICAgICAgICAgIEBpbnB1dD1cInNjYWxlU2xpZGVyID0gcGFyc2VJbnQoJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2Utam95LWJ0blwiXG4gICAgICAgICAgICAgICAgICBAbW91c2Vkb3duLnByZXZlbnQ9XCJpbmljaWFyU2NhbGVTdGVwKDEpXCIgQG1vdXNldXA9XCJkZXRlbmVyU2NhbGVTdGVwXCJcbiAgICAgICAgICAgICAgICAgIEBtb3VzZWxlYXZlPVwiZGV0ZW5lclNjYWxlU3RlcFwiXG4gICAgICAgICAgICAgICAgICBAdG91Y2hzdGFydC5wcmV2ZW50PVwiaW5pY2lhclNjYWxlU3RlcCgxKVwiIEB0b3VjaGVuZD1cImRldGVuZXJTY2FsZVN0ZXBcIlxuICAgICAgICAgICAgICAgICAgdGl0bGU9XCJBZ3JhbmRhciBpbWFnZW5cIj4rPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZVwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2tcIj5cblxuICAgICAgICAgIDxkaXYgcmVmPVwiY29ydGVSZWZcIlxuICAgICAgICAgICAgICAgY2xhc3M9XCJjb3J0ZS12aXN1YWwgcG9zaXRpb24tcmVsYXRpdmVcIlxuICAgICAgICAgICAgICAgOnN0eWxlPVwiY29ydGVTdHlsZVwiXG4gICAgICAgICAgICAgICBAbW91c2Vkb3duLnByZXZlbnQ9XCJpbmljaWFyRHJhZ1wiXG4gICAgICAgICAgICAgICBAZHJhZ292ZXIucHJldmVudFxuICAgICAgICAgICAgICAgQGRyb3AucHJldmVudD1cIm9uRHJvcFwiXG4gICAgICAgICAgICAgICBAdG91Y2hzdGFydC5wcmV2ZW50PVwib25Ub3VjaFN0YXJ0XCJcbiAgICAgICAgICAgICAgIEB0b3VjaG1vdmUucHJldmVudD1cIm9uVG91Y2hNb3ZlXCJcbiAgICAgICAgICAgICAgIEB0b3VjaGVuZC5wcmV2ZW50PVwib25Ub3VjaEVuZFwiPlxuXG4gICAgICAgICAgICA8aW1nIHYtaWY9XCJpbWFnZW5TcmNcIlxuICAgICAgICAgICAgICAgICByZWY9XCJpbWdSZWZcIlxuICAgICAgICAgICAgICAgICA6c3JjPVwiaW1hZ2VuU3JjXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXG4gICAgICAgICAgICAgICAgIDpzdHlsZT1cImltYWdlblN0eWxlXCJcbiAgICAgICAgICAgICAgICAgZHJhZ2dhYmxlPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICBAbG9hZD1cIm9uSW1hZ2VMb2FkXCIvPlxuXG4gICAgICAgICAgICA8ZGl2IHYtZWxzZVxuICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBoLTEwMCB0ZXh0LWNlbnRlciBweC0yXCJcbiAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb2ludGVyLWV2ZW50czpub25lOyBjb2xvcjojY2NjXCI+XG4gICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIzNlwiIGhlaWdodD1cIjM2XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCI+XG4gICAgICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiM1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHJ4PVwiMlwiLz5cbiAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiOC41XCIgY3k9XCI4LjVcIiByPVwiMS41XCIvPlxuICAgICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIyMSAxNSAxNiAxMCA1IDIxXCIvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZvbnQtc2l6ZToxMnB4O2NvbG9yOiNhYWE7bWFyZ2luLXRvcDo4cHg7bGluZS1oZWlnaHQ6MS40XCI+XG4gICAgICAgICAgICAgICAgQXJyYXN0csOhIHVuYSBpbWFnZW48YnI+byB1c8OhIGVsIGJvdMOzblxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEJvcmRlIGJsYW5jbyBvdmVybGF5IC0tPlxuICAgICAgICAgICAgPGRpdiB2LWlmPVwiYm9yZGVCbGFuY29cIiA6c3R5bGU9XCJib3JkZUJsYW5jb092ZXJsYXlTdHlsZVwiPjwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEJvcmRlIGRlIGNvcnRlIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLWFic29sdXRlIHRvcC0wIHN0YXJ0LTAgdy0xMDAgaC0xMDBcIlxuICAgICAgICAgICAgICAgICA6c3R5bGU9XCJib3JkZUNvcnRlU3R5bGVcIlxuICAgICAgICAgICAgICAgICBzdHlsZT1cInBvaW50ZXItZXZlbnRzOm5vbmU7IGJveC1zaXppbmc6Ym9yZGVyLWJveFwiPjwvZGl2PlxuXG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIEJvcmRlIHNhbmdyw61hIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1hYnNvbHV0ZVwiXG4gICAgICAgICAgICAgICA6c3R5bGU9XCJib3JkZUJsZWVkU3R5bGVcIlxuICAgICAgICAgICAgICAgc3R5bGU9XCJwb2ludGVyLWV2ZW50czpub25lOyBib3gtc2l6aW5nOmJvcmRlci1ib3hcIj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gSGFuZGxlcyBkZSBlc2NhbGEgLS0+XG4gICAgICAgICAgPGRpdiB2LWlmPVwiaW1hZ2VuU3JjXCJcbiAgICAgICAgICAgICAgIGNsYXNzPVwicG9zaXRpb24tYWJzb2x1dGUgdG9wLTAgc3RhcnQtMCB3LTEwMCBoLTEwMFwiXG4gICAgICAgICAgICAgICBzdHlsZT1cIm92ZXJmbG93OnZpc2libGU7IHBvaW50ZXItZXZlbnRzOm5vbmVcIj5cbiAgICAgICAgICAgIDxkaXYgdi1mb3I9XCJoIGluIGhhbmRsZVBvc2l0aW9uc1wiIDprZXk9XCJoLmlkXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNpemUtaGFuZGxlXCJcbiAgICAgICAgICAgICAgICAgOnN0eWxlPVwieyBsZWZ0OiBoLnggLSA2ICsgJ3B4JywgdG9wOiBoLnkgLSA2ICsgJ3B4JywgY3Vyc29yOiBoLmN1cnNvciB9XCJcbiAgICAgICAgICAgICAgICAgQG1vdXNlZG93bi5zdG9wLnByZXZlbnQ9XCJpbmljaWFyUmVzaXplKCRldmVudClcIlxuICAgICAgICAgICAgICAgICBAdG91Y2hzdGFydC5zdG9wLnByZXZlbnQ9XCJpbmljaWFyUmVzaXplVG91Y2goJGV2ZW50KVwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZS1jYW52YXMtaW5mb1wiPkVsIGZvbmRvIHRyYW5zcGFyZW50ZSBubyBzZSBpbXByaW1lPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZS1jYW52YXMtaW5mby0tdG9wcmlnaHRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlLWNhbnZhcy1pbmZvXCIgc3R5bGU9XCJwb3NpdGlvbjpzdGF0aWM7IGNvbG9yOiMwNmI2ZDQ7XCI+wrfCt8K3IHNhbmdyw61hIDJtbTwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlLWNhbnZhcy1pbmZvXCIgc3R5bGU9XCJwb3NpdGlvbjpzdGF0aWM7XCI+PHNwYW4gc3R5bGU9XCJjb2xvcjojZmYwMGZmXCI+LSAtIC08L3NwYW4+IGzDrW5lYSBkZSBjb3J0ZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj48IS0tIC9jYW52YXMtYXJlYSAtLT5cblxuICAgICAgPCEtLSBVcGxvYWQgYmFyIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlLXVwbG9hZC1iYXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlLXVwbG9hZC1hY3Rpb25zXCI+XG4gICAgICAgICAgPGlucHV0IHJlZj1cImZpbGVJbnB1dFwiIHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiaW1hZ2UvanBlZyxpbWFnZS9wbmcsaW1hZ2UvZ2lmXCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLW5vbmVcIiBAY2hhbmdlPVwib25GaWxlU2VsZWN0XCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlLWJ0bi11cGxvYWQgcHJpbWFyeVwiIEBjbGljaz1cIiRyZWZzLmZpbGVJbnB1dC5jbGljaygpXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjIuNVwiPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTRcIi8+XG4gICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIxNyA4IDEyIDMgNyA4XCIvPlxuICAgICAgICAgICAgICA8bGluZSB4MT1cIjEyXCIgeTE9XCIzXCIgeDI9XCIxMlwiIHkyPVwiMTVcIi8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIFN1YmlyIGltYWdlblxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZS1idG4tdXBsb2FkXCIgQGNsaWNrPVwicGVnYXJQb3J0YXBhcGVsZXNcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPlxuICAgICAgICAgICAgICA8cmVjdCB4PVwiOVwiIHk9XCI5XCIgd2lkdGg9XCIxM1wiIGhlaWdodD1cIjEzXCIgcng9XCIyXCIvPlxuICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgMTVINGEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg5YTIgMiAwIDAgMSAyIDJ2MVwiLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgUGVnYXJcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIHYtaWY9XCJpbWFnZW5TcmNcIiBjbGFzcz1cInNlLWJ0bi11cGxvYWRcIiBAY2xpY2s9XCJjZW50cmFySW1hZ2VuXCI+XG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj5cbiAgICAgICAgICAgICAgPHBvbHlsaW5lIHBvaW50cz1cIjUgOSAyIDEyIDUgMTVcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjkgNSAxMiAyIDE1IDVcIi8+XG4gICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIxNSAxOSAxMiAyMiA5IDE5XCIvPjxwb2x5bGluZSBwb2ludHM9XCIxOSA5IDIyIDEyIDE5IDE1XCIvPlxuICAgICAgICAgICAgICA8bGluZSB4MT1cIjJcIiB5MT1cIjEyXCIgeDI9XCIyMlwiIHkyPVwiMTJcIi8+PGxpbmUgeDE9XCIxMlwiIHkxPVwiMlwiIHgyPVwiMTJcIiB5Mj1cIjIyXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICBDZW50cmFyXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiB2LWlmPVwiaW1hZ2VuU3JjXCIgY2xhc3M9XCJzZS1idG4tdXBsb2FkIGRhbmdlclwiIEBjbGljaz1cInF1aXRhckltYWdlblwiPlxuICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCI+XG4gICAgICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIzIDYgNSA2IDIxIDZcIi8+PHBhdGggZD1cIk0xOSA2bC0xIDE0YTIgMiAwIDAgMS0yIDJIOGEyIDIgMCAwIDEtMi0yTDUgNlwiLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAxMXY2XCIvPjxwYXRoIGQ9XCJNMTQgMTF2NlwiLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgUXVpdGFyXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2UtdXBsb2FkLWhpbnRcIj5BcnJhc3Ryw6EgcGFyYSByZXBvc2ljaW9uYXIgwrcgRXNxdWluYXMgcGFyYSBlc2NhbGFyPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj48IS0tIC9jYW52YXMtY2FyZCAtLT5cblxuICAgIDwhLS0gVmlzdWFsIG9wdGlvbnMgY2FyZCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwic2UtdmlzdWFsLWNhcmRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZS1sYWJlbFwiPk9wY2lvbmVzIHZpc3VhbGVzPC9kaXY+XG5cbiAgICAgIDwhLS0gUmFkaW8gZGUgZXNxdWluYXMg4oCUIHNvbG8gcmVjdF9yZWRvbmRlYWRvIC0tPlxuICAgICAgPGRpdiB2LWlmPVwiZm9ybWEgPT09ICdyZWN0X3JlZG9uZGVhZG8nXCIgY2xhc3M9XCJzZS1ib3JkZXItc3ViXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOjE2cHhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlLWJvcmRlci1zdWItbGFiZWxcIj5SYWRpbyBkZSBlc3F1aW5hczwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwicmFuZ2VcIiBjbGFzcz1cInNlLXNsaWRlclwiIG1pbj1cIjAuMlwiIG1heD1cIjVcIiBzdGVwPVwiMC4xXCJcbiAgICAgICAgICAgICAgICAgdi1tb2RlbC5udW1iZXI9XCJyYWRpb0xvY2FsXCI+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6MTJweDtmb250LXdlaWdodDo2MDA7Y29sb3I6IzU1NTttaW4td2lkdGg6NDZweFwiPnt7IHJhZGlvTG9jYWwudG9GaXhlZCgxKSB9fSBjbTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNlLXZpc3VhbC1vcHRpb25zXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZS12aXN1YWwtb3B0aW9uXCIgOmNsYXNzPVwieyBhY3RpdmU6IGJvcmRlQmxhbmNvIH1cIiBAY2xpY2s9XCJib3JkZUJsYW5jbyA9IHRydWVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2UtdmlzdWFsLWNoZWNrXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlLXZpc3VhbC1uYW1lXCI+Qm9yZGUgYmxhbmNvPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlLXZpc3VhbC1kZXNjXCI+Q29udG9ybm8gYmxhbmNvIGFscmVkZWRvciBkZWwgZGlzZcOxbzwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlLXZpc3VhbC1vcHRpb25cIiA6Y2xhc3M9XCJ7IGFjdGl2ZTogIWJvcmRlQmxhbmNvIH1cIiBAY2xpY2s9XCJib3JkZUJsYW5jbyA9IGZhbHNlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlLXZpc3VhbC1jaGVja1wiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZS12aXN1YWwtbmFtZVwiPlNpbiBib3JkZTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZS12aXN1YWwtZGVzY1wiPkNvcnRlIHNpZ3VpZW5kbyBlbCBjb250b3JubyBkZWwgZGlzZcOxbzwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiB2LWlmPVwiYm9yZGVCbGFuY29cIiBjbGFzcz1cInNlLWJvcmRlci1zdWJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlLWJvcmRlci1zdWItbGFiZWxcIj5Hcm9zb3IgZGVsIGJvcmRlPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJyYW5nZVwiIGNsYXNzPVwic2Utc2xpZGVyXCIgbWluPVwiMlwiIG1heD1cIjEwXCIgc3RlcD1cIjAuNVwiXG4gICAgICAgICAgICAgICAgIHYtbW9kZWwubnVtYmVyPVwiYm9yZGVCbGFuY29NbVwiPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiM1NTU7bWluLXdpZHRoOjM2cHhcIj57eyBib3JkZUJsYW5jb01tIH19bW08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEJvdMOzbiBndWFyZGFyIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2Utc2F2ZS1idG5cIiBAY2xpY2s9XCJndWFyZGFyKClcIiA6ZGlzYWJsZWQ9XCIhaW1hZ2VuU3JjIHx8IGd1YXJkYW5kb1wiPlxuICAgICAgICA8c3BhbiB2LWlmPVwiZ3VhcmRhbmRvXCIgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSBtZS0xXCI+PC9zcGFuPlxuICAgICAgICA8c3ZnIHYtZWxzZSB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyLjVcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTE5IDIxSDVhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTFsNSA1djExYTIgMiAwIDAgMS0yIDJ6XCIvPlxuICAgICAgICAgIDxwb2x5bGluZSBwb2ludHM9XCIxNyAyMSAxNyAxMyA3IDEzIDcgMjFcIi8+PHBvbHlsaW5lIHBvaW50cz1cIjcgMyA3IDggMTUgOFwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIHt7IGd1YXJkYW5kbyA/ICdHdWFyZGFuZG/igKYnIDogJ0d1YXJkYXIgeSBhZ3JlZ2FyIGFsIGNhcnJpdG8nIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgdi1pZj1cImVycm9yR3VhcmRhZG9cIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBweS0yIG1iLTAgbXQtMiBzbWFsbFwiPnt7IGVycm9yR3VhcmRhZG8gfX08L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gT3ZlcmxheSBkZSBjYXJnYSAtLT5cbiAgICA8ZGl2IHYtaWY9XCJndWFyZGFuZG9cIiBjbGFzcz1cInNlLW92ZXJsYXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZS1vdmVybGF5LWNhcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlLWltYWdlLXNwaW5uZXJcIj48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlLW92ZXJsYXktdGl0bGVcIj5TdWJpZW5kbyBpbWFnZW4uLi48L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlLW92ZXJsYXktc3VidGl0bGVcIj5ObyBjaWVycmVzIGVzdGEgdmVudGFuYTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IHsgcmVmLCByZWFjdGl2ZSwgY29tcHV0ZWQsIG9uTW91bnRlZCwgb25CZWZvcmVVbm1vdW50LCBuZXh0VGljayB9IGZyb20gJ3Z1ZSc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ0VkaXRvclZpc3VhbEFwcCcsXG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3QgbW91bnRFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3ItdmlzdWFsLWFwcCcpO1xuXG4gICAgY29uc3QgcHBJZCAgICAgICAgICAgPSBtb3VudEVsLmRhdGFzZXQucGVkaWRvUHJvZHVjdG9JZDtcbiAgICBjb25zdCB1cmxHdWFyZGFyICAgICA9IG1vdW50RWwuZGF0YXNldC51cmxHdWFyZGFyO1xuICAgIGNvbnN0IHVybENhcnJpdG8gICAgID0gbW91bnRFbC5kYXRhc2V0LnVybENhcnJpdG87XG4gICAgY29uc3QgZm9ybWEgICAgICAgICAgPSByZWYobW91bnRFbC5kYXRhc2V0LmZvcm1hIHx8ICdjdWFkcmFkbycpO1xuICAgIGNvbnN0IGRpbXMgICAgICAgICAgID0gcmVhY3RpdmUoSlNPTi5wYXJzZShtb3VudEVsLmRhdGFzZXQuZGltcyB8fCAne1wiYW5jaG9cIjoxMCxcImFsdG9cIjoxMH0nKSk7XG4gICAgY29uc3QgaW1hZ2VuVXJsSW5pY2lhbCA9IG1vdW50RWwuZGF0YXNldC5pbWFnZW5VcmwgfHwgJyc7XG4gICAgY29uc3QgdHJhbnNmb3JtSW5pY2lhbCA9IEpTT04ucGFyc2UobW91bnRFbC5kYXRhc2V0LmltYWdlblRyYW5zZm9ybSB8fCAnbnVsbCcpO1xuXG4gICAgLy8gLS0tLSBFc3RhZG8gdmlzdWFsIC0tLS1cbiAgICBjb25zdCBib3JkZUJsYW5jbyAgID0gcmVmKHRyYW5zZm9ybUluaWNpYWw/LmJvcmRlQmxhbmNvID8/IGZhbHNlKTtcbiAgICBjb25zdCBib3JkZUJsYW5jb01tID0gcmVmKHRyYW5zZm9ybUluaWNpYWw/LmJvcmRlQmxhbmNvTW0gPz8gMyk7XG4gICAgY29uc3QgcmFkaW9Mb2NhbCAgICA9IHJlZih0cmFuc2Zvcm1JbmljaWFsPy5yYWRpbyA/PyAxKTtcbiAgICBjb25zdCBlc2NhbGEgICAgICAgID0gcmVmKHRyYW5zZm9ybUluaWNpYWw/LmVzY2FsYSA/PyAyNSk7XG5cbiAgICAvLyAtLS0tIEltYWdlbiAtLS0tXG4gICAgY29uc3QgaW1hZ2VuU3JjICAgICAgID0gcmVmKGltYWdlblVybEluaWNpYWwgfHwgbnVsbCk7XG4gICAgY29uc3QgaW1hZ2VuRmlsZSAgICAgID0gcmVmKG51bGwpO1xuICAgIGNvbnN0IGltYWdlbk5hdHVyYWwgICA9IHJlYWN0aXZlKHsgdzogMCwgaDogMCB9KTtcbiAgICBjb25zdCBpbWFnZW5UcmFuc2Zvcm0gPSByZWFjdGl2ZSh0cmFuc2Zvcm1JbmljaWFsID8/IHsgeDogMCwgeTogMCwgc2NhbGU6IDEgfSk7XG4gICAgY29uc3QgaW1nUmVmICAgICAgICAgID0gcmVmKG51bGwpO1xuICAgIGNvbnN0IGNvcnRlUmVmICAgICAgICA9IHJlZihudWxsKTtcbiAgICBjb25zdCBwcmV2aWV3UmVmICAgICAgPSByZWYobnVsbCk7XG4gICAgY29uc3QgZmlsZUlucHV0ICAgICAgID0gcmVmKG51bGwpO1xuICAgIGNvbnN0IGZpdFNjYWxlICAgICAgICA9IHJlZigxKTtcblxuICAgIGNvbnN0IGVycm9yR3VhcmRhZG8gPSByZWYoJycpO1xuXG4gICAgY29uc3QgTUFYX0lNR19QWCA9IDEyMDA7XG5cbiAgICBmdW5jdGlvbiBtb3N0cmFySW1hZ2VuRW5QcmV2aWV3KHNyYywgZmlsZSkge1xuICAgICAgaW1hZ2VuRmlsZS52YWx1ZSA9IGZpbGU7XG4gICAgICBpbWFnZW5TcmMudmFsdWUgPSBzcmM7XG4gICAgICBpbWFnZW5UcmFuc2Zvcm0ueCA9IDA7XG4gICAgICBpbWFnZW5UcmFuc2Zvcm0ueSA9IDA7XG4gICAgICBpbWFnZW5UcmFuc2Zvcm0uc2NhbGUgPSAxO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uSW1hZ2VMb2FkKCkge1xuICAgICAgaWYgKCFpbWdSZWYudmFsdWUpIHJldHVybjtcbiAgICAgIGltYWdlbk5hdHVyYWwudyA9IGltZ1JlZi52YWx1ZS5uYXR1cmFsV2lkdGg7XG4gICAgICBpbWFnZW5OYXR1cmFsLmggPSBpbWdSZWYudmFsdWUubmF0dXJhbEhlaWdodDtcbiAgICAgIGlmIChpbWFnZW5UcmFuc2Zvcm0uc2NhbGUgPT09IDEgJiYgaW1hZ2VuVHJhbnNmb3JtLnggPT09IDAgJiYgaW1hZ2VuVHJhbnNmb3JtLnkgPT09IDApIHtcbiAgICAgICAgY2VudHJhckltYWdlbigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNlbnRyYXJJbWFnZW4oKSB7XG4gICAgICBpZiAoIWltYWdlbk5hdHVyYWwudyB8fCAhY29ydGVSZWYudmFsdWUpIHJldHVybjtcbiAgICAgIGNvbnN0IGNXID0gY29ydGVSZWYudmFsdWUub2Zmc2V0V2lkdGg7XG4gICAgICBjb25zdCBjSCA9IGNvcnRlUmVmLnZhbHVlLm9mZnNldEhlaWdodDtcbiAgICAgIGNvbnN0IHMgPSBNYXRoLm1heChjVyAvIGltYWdlbk5hdHVyYWwudywgY0ggLyBpbWFnZW5OYXR1cmFsLmgpO1xuICAgICAgZml0U2NhbGUudmFsdWUgPSBzO1xuICAgICAgaW1hZ2VuVHJhbnNmb3JtLnNjYWxlID0gcztcbiAgICAgIGltYWdlblRyYW5zZm9ybS54ID0gMDtcbiAgICAgIGltYWdlblRyYW5zZm9ybS55ID0gMDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBxdWl0YXJJbWFnZW4oKSB7XG4gICAgICBpbWFnZW5TcmMudmFsdWUgPSBudWxsOyBpbWFnZW5GaWxlLnZhbHVlID0gbnVsbDtcbiAgICAgIGltYWdlblRyYW5zZm9ybS54ID0gMDsgaW1hZ2VuVHJhbnNmb3JtLnkgPSAwOyBpbWFnZW5UcmFuc2Zvcm0uc2NhbGUgPSAxO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNhcmdhckltYWdlbkRlc2RlRmlsZShmaWxlKSB7XG4gICAgICBpZiAoIWZpbGUgfHwgIWZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkgcmV0dXJuO1xuICAgICAgZXJyb3JHdWFyZGFkby52YWx1ZSA9ICcnO1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSBlID0+IHtcbiAgICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmVlZHNSZXNpemUgPSBpbWcud2lkdGggPiBNQVhfSU1HX1BYIHx8IGltZy5oZWlnaHQgPiBNQVhfSU1HX1BYO1xuICAgICAgICAgIGlmICghbmVlZHNSZXNpemUpIHtcbiAgICAgICAgICAgIG1vc3RyYXJJbWFnZW5FblByZXZpZXcoZS50YXJnZXQucmVzdWx0LCBmaWxlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmF0aW8gID0gTWF0aC5taW4oTUFYX0lNR19QWCAvIGltZy53aWR0aCwgTUFYX0lNR19QWCAvIGltZy5oZWlnaHQpO1xuICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICAgIGNhbnZhcy53aWR0aCAgPSBNYXRoLnJvdW5kKGltZy53aWR0aCAgKiByYXRpbyk7XG4gICAgICAgICAgY2FudmFzLmhlaWdodCA9IE1hdGgucm91bmQoaW1nLmhlaWdodCAqIHJhdGlvKTtcbiAgICAgICAgICBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKS5kcmF3SW1hZ2UoaW1nLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICAgIGNhbnZhcy50b0Jsb2IoYmxvYiA9PiB7XG4gICAgICAgICAgICBpZiAoIWJsb2IpIHsgZXJyb3JHdWFyZGFkby52YWx1ZSA9ICdObyBzZSBwdWRvIHByZXBhcmFyIGxhIGltYWdlbi4nOyByZXR1cm47IH1cbiAgICAgICAgICAgIG1vc3RyYXJJbWFnZW5FblByZXZpZXcoY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyksIG5ldyBGaWxlKFtibG9iXSwgZmlsZS5uYW1lLCB7IHR5cGU6ICdpbWFnZS9wbmcnIH0pKTtcbiAgICAgICAgICB9LCAnaW1hZ2UvcG5nJyk7XG4gICAgICAgIH07XG4gICAgICAgIGltZy5vbmVycm9yID0gKCkgPT4geyBlcnJvckd1YXJkYWRvLnZhbHVlID0gJ05vIHNlIHB1ZG8gY2FyZ2FyIGxhIGltYWdlbi4nOyB9O1xuICAgICAgICBpbWcuc3JjID0gZS50YXJnZXQucmVzdWx0O1xuICAgICAgfTtcbiAgICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4geyBlcnJvckd1YXJkYWRvLnZhbHVlID0gJ05vIHNlIHB1ZG8gbGVlciBsYSBpbWFnZW4uJzsgfTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uRmlsZVNlbGVjdChlKSB7IGNhcmdhckltYWdlbkRlc2RlRmlsZShlLnRhcmdldC5maWxlc1swXSk7IH1cbiAgICBmdW5jdGlvbiBvbkRyb3AoZSkgICAgICAgeyBjYXJnYXJJbWFnZW5EZXNkZUZpbGUoZS5kYXRhVHJhbnNmZXI/LmZpbGVzPy5bMF0pOyB9XG5cbiAgICBmdW5jdGlvbiBvbldpbmRvd1Bhc3RlKGUpIHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gZS5jbGlwYm9hcmREYXRhPy5pdGVtcztcbiAgICAgIGlmICghaXRlbXMpIHJldHVybjtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICBpZiAoaXRlbS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSB7XG4gICAgICAgICAgY29uc3QgZmlsZSA9IGl0ZW0uZ2V0QXNGaWxlKCk7XG4gICAgICAgICAgaWYgKGZpbGUpIGNhcmdhckltYWdlbkRlc2RlRmlsZShmaWxlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwZWdhclBvcnRhcGFwZWxlcygpIHtcbiAgICAgIGlmIChuYXZpZ2F0b3IuY2xpcGJvYXJkPy5yZWFkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgaXRlbXMgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWQoKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdHlwZSBvZiBpdGVtLnR5cGVzKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IGl0ZW0uZ2V0VHlwZSh0eXBlKTtcbiAgICAgICAgICAgICAgICBjYXJnYXJJbWFnZW5EZXNkZUZpbGUobmV3IEZpbGUoW2Jsb2JdLCAncGFzdGUucG5nJywgeyB0eXBlIH0pKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggeyAvKiBzaW4gcGVybWlzbyAqLyB9XG4gICAgICB9XG4gICAgICBhbGVydCgnUHJlc2lvbsOhIEN0cmwrViAobyBDbWQrVikgcGFyYSBwZWdhciBsYSBpbWFnZW4uJyk7XG4gICAgfVxuXG4gICAgLy8gLS0tLSBEcmFnIC0tLS1cbiAgICBjb25zdCBkcmFnZ2luZyAgPSByZWYoZmFsc2UpO1xuICAgIGxldCAgIGxhc3RNb3VzZSA9IHsgeDogMCwgeTogMCB9O1xuXG4gICAgZnVuY3Rpb24gaW5pY2lhckRyYWcoZSkge1xuICAgICAgaWYgKCFpbWFnZW5TcmMudmFsdWUpIHJldHVybjtcbiAgICAgIGRyYWdnaW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIGxhc3RNb3VzZSA9IHsgeDogZS5jbGllbnRYLCB5OiBlLmNsaWVudFkgfTtcbiAgICB9XG5cbiAgICAvLyAtLS0tIFJlc2l6ZSAtLS0tXG4gICAgY29uc3QgcmVzaXppbmcgICAgICAgID0gcmVmKGZhbHNlKTtcbiAgICBsZXQgICByZXNpemVTdGFydFNjYWxlID0gMTtcbiAgICBsZXQgICByZXNpemVPcmlnRGlzdCAgID0gMDtcbiAgICBsZXQgICByZXNpemVDZW50ZXIgICAgID0geyB4OiAwLCB5OiAwIH07XG5cbiAgICBmdW5jdGlvbiBpbmljaWFyUmVzaXplKGUpIHtcbiAgICAgIHJlc2l6aW5nLnZhbHVlICAgID0gdHJ1ZTtcbiAgICAgIHJlc2l6ZVN0YXJ0U2NhbGUgID0gaW1hZ2VuVHJhbnNmb3JtLnNjYWxlO1xuICAgICAgY29uc3QgcmVjdCA9IGNvcnRlUmVmLnZhbHVlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3QgY1cgICA9IGNvcnRlUmVmLnZhbHVlLm9mZnNldFdpZHRoO1xuICAgICAgY29uc3QgY0ggICA9IGNvcnRlUmVmLnZhbHVlLm9mZnNldEhlaWdodDtcbiAgICAgIHJlc2l6ZUNlbnRlciA9IHtcbiAgICAgICAgeDogcmVjdC5sZWZ0ICsgY1cgLyAyICsgaW1hZ2VuVHJhbnNmb3JtLngsXG4gICAgICAgIHk6IHJlY3QudG9wICArIGNIIC8gMiArIGltYWdlblRyYW5zZm9ybS55LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGR4ID0gZS5jbGllbnRYIC0gcmVzaXplQ2VudGVyLng7XG4gICAgICBjb25zdCBkeSA9IGUuY2xpZW50WSAtIHJlc2l6ZUNlbnRlci55O1xuICAgICAgcmVzaXplT3JpZ0Rpc3QgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpIHx8IDE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5pY2lhclJlc2l6ZVRvdWNoKGUpIHtcbiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoICE9PSAxKSByZXR1cm47XG4gICAgICBpbmljaWFyUmVzaXplKHsgY2xpZW50WDogZS50b3VjaGVzWzBdLmNsaWVudFgsIGNsaWVudFk6IGUudG91Y2hlc1swXS5jbGllbnRZIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uTW91c2VNb3ZlKGUpIHtcbiAgICAgIGlmIChyZXNpemluZy52YWx1ZSkge1xuICAgICAgICBjb25zdCBkeCA9IGUuY2xpZW50WCAtIHJlc2l6ZUNlbnRlci54O1xuICAgICAgICBjb25zdCBkeSA9IGUuY2xpZW50WSAtIHJlc2l6ZUNlbnRlci55O1xuICAgICAgICBjb25zdCBuZXdEaXN0ID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbiAgICAgICAgaW1hZ2VuVHJhbnNmb3JtLnNjYWxlID0gTWF0aC5tYXgoMC4wNSwgcmVzaXplU3RhcnRTY2FsZSAqIChuZXdEaXN0IC8gcmVzaXplT3JpZ0Rpc3QpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGRyYWdnaW5nLnZhbHVlKSB7XG4gICAgICAgIGltYWdlblRyYW5zZm9ybS54ICs9IGUuY2xpZW50WCAtIGxhc3RNb3VzZS54O1xuICAgICAgICBpbWFnZW5UcmFuc2Zvcm0ueSArPSBlLmNsaWVudFkgLSBsYXN0TW91c2UueTtcbiAgICAgICAgbGFzdE1vdXNlID0geyB4OiBlLmNsaWVudFgsIHk6IGUuY2xpZW50WSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uTW91c2VVcCgpIHsgZHJhZ2dpbmcudmFsdWUgPSBmYWxzZTsgcmVzaXppbmcudmFsdWUgPSBmYWxzZTsgfVxuXG4gICAgLy8gLS0tLSBKb3lzdGljayBlc2NhbGEgLS0tLVxuICAgIGNvbnN0IHNjYWxlU2xpZGVyID0gY29tcHV0ZWQoe1xuICAgICAgZ2V0KCkge1xuICAgICAgICBjb25zdCBtaW5TID0gZml0U2NhbGUudmFsdWUgKiAwLjI7XG4gICAgICAgIGNvbnN0IG1heFMgPSBmaXRTY2FsZS52YWx1ZSAqIDU7XG4gICAgICAgIGNvbnN0IHBvcyAgPSBNYXRoLmxvZyhpbWFnZW5UcmFuc2Zvcm0uc2NhbGUgLyBtaW5TKSAvIE1hdGgubG9nKG1heFMgLyBtaW5TKTtcbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoTWF0aC5tYXgoMCwgTWF0aC5taW4oMTAwLCBwb3MgKiAxMDApKSk7XG4gICAgICB9LFxuICAgICAgc2V0KHYpIHtcbiAgICAgICAgY29uc3QgbWluUyA9IGZpdFNjYWxlLnZhbHVlICogMC4yO1xuICAgICAgICBjb25zdCBtYXhTID0gZml0U2NhbGUudmFsdWUgKiA1O1xuICAgICAgICBpbWFnZW5UcmFuc2Zvcm0uc2NhbGUgPSBtaW5TICogTWF0aC5wb3cobWF4UyAvIG1pblMsIHYgLyAxMDApO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGxldCBzY2FsZUludGVydmFsID0gbnVsbDtcbiAgICBmdW5jdGlvbiBpbmljaWFyU2NhbGVTdGVwKGRpcikge1xuICAgICAgY29uc3Qgc3RlcCA9ICgpID0+IHsgc2NhbGVTbGlkZXIudmFsdWUgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIHNjYWxlU2xpZGVyLnZhbHVlICsgZGlyICogMikpOyB9O1xuICAgICAgc3RlcCgpO1xuICAgICAgc2NhbGVJbnRlcnZhbCA9IHNldEludGVydmFsKHN0ZXAsIDgwKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZGV0ZW5lclNjYWxlU3RlcCgpIHsgY2xlYXJJbnRlcnZhbChzY2FsZUludGVydmFsKTsgc2NhbGVJbnRlcnZhbCA9IG51bGw7IH1cblxuICAgIC8vIC0tLS0gVG91Y2ggLS0tLVxuICAgIGxldCBsYXN0VG91Y2hlcyAgID0gW107XG4gICAgbGV0IGxhc3RQaW5jaERpc3QgPSBudWxsO1xuXG4gICAgZnVuY3Rpb24gb25Ub3VjaFN0YXJ0KGUpIHtcbiAgICAgIGxhc3RUb3VjaGVzICAgPSBBcnJheS5mcm9tKGUudG91Y2hlcyk7XG4gICAgICBsYXN0UGluY2hEaXN0ID0gbGFzdFRvdWNoZXMubGVuZ3RoID09PSAyID8gZ2V0VG91Y2hEaXN0KGxhc3RUb3VjaGVzKSA6IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gb25Ub3VjaE1vdmUoZSkge1xuICAgICAgY29uc3QgdG91Y2hlcyA9IEFycmF5LmZyb20oZS50b3VjaGVzKTtcbiAgICAgIGlmICh0b3VjaGVzLmxlbmd0aCA9PT0gMSAmJiBsYXN0VG91Y2hlcy5sZW5ndGggPT09IDEgJiYgaW1hZ2VuU3JjLnZhbHVlKSB7XG4gICAgICAgIGltYWdlblRyYW5zZm9ybS54ICs9IHRvdWNoZXNbMF0uY2xpZW50WCAtIGxhc3RUb3VjaGVzWzBdLmNsaWVudFg7XG4gICAgICAgIGltYWdlblRyYW5zZm9ybS55ICs9IHRvdWNoZXNbMF0uY2xpZW50WSAtIGxhc3RUb3VjaGVzWzBdLmNsaWVudFk7XG4gICAgICB9IGVsc2UgaWYgKHRvdWNoZXMubGVuZ3RoID09PSAyICYmIGxhc3RQaW5jaERpc3QpIHtcbiAgICAgICAgY29uc3QgZGlzdCA9IGdldFRvdWNoRGlzdCh0b3VjaGVzKTtcbiAgICAgICAgaW1hZ2VuVHJhbnNmb3JtLnNjYWxlID0gTWF0aC5tYXgoMC4wNSwgaW1hZ2VuVHJhbnNmb3JtLnNjYWxlICogKGRpc3QgLyBsYXN0UGluY2hEaXN0KSk7XG4gICAgICAgIGxhc3RQaW5jaERpc3QgPSBkaXN0O1xuICAgICAgfVxuICAgICAgbGFzdFRvdWNoZXMgPSB0b3VjaGVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uVG91Y2hFbmQoKSB7IGxhc3RUb3VjaGVzID0gW107IGxhc3RQaW5jaERpc3QgPSBudWxsOyB9XG5cbiAgICBmdW5jdGlvbiBnZXRUb3VjaERpc3QodG91Y2hlcykge1xuICAgICAgY29uc3QgZHggPSB0b3VjaGVzWzBdLmNsaWVudFggLSB0b3VjaGVzWzFdLmNsaWVudFg7XG4gICAgICBjb25zdCBkeSA9IHRvdWNoZXNbMF0uY2xpZW50WSAtIHRvdWNoZXNbMV0uY2xpZW50WTtcbiAgICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuICAgIH1cblxuICAgIC8vIC0tLS0gSGFuZGxlcyAtLS0tXG4gICAgY29uc3QgaGFuZGxlUG9zaXRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKCFpbWFnZW5OYXR1cmFsLncgfHwgIWNvcnRlUmVmLnZhbHVlKSByZXR1cm4gW107XG4gICAgICBjb25zdCBjVyAgPSBjb3J0ZVJlZi52YWx1ZS5vZmZzZXRXaWR0aDtcbiAgICAgIGNvbnN0IGNIICA9IGNvcnRlUmVmLnZhbHVlLm9mZnNldEhlaWdodDtcbiAgICAgIGNvbnN0IGN4ICA9IGNXIC8gMiArIGltYWdlblRyYW5zZm9ybS54O1xuICAgICAgY29uc3QgY3kgID0gY0ggLyAyICsgaW1hZ2VuVHJhbnNmb3JtLnk7XG4gICAgICBjb25zdCBodyAgPSAoaW1hZ2VuTmF0dXJhbC53IC8gMikgKiBpbWFnZW5UcmFuc2Zvcm0uc2NhbGU7XG4gICAgICBjb25zdCBoaCAgPSAoaW1hZ2VuTmF0dXJhbC5oIC8gMikgKiBpbWFnZW5UcmFuc2Zvcm0uc2NhbGU7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7IGlkOiAndGwnLCB4OiBjeCAtIGh3LCB5OiBjeSAtIGhoLCBjdXJzb3I6ICdudy1yZXNpemUnIH0sXG4gICAgICAgIHsgaWQ6ICd0cicsIHg6IGN4ICsgaHcsIHk6IGN5IC0gaGgsIGN1cnNvcjogJ25lLXJlc2l6ZScgfSxcbiAgICAgICAgeyBpZDogJ2JsJywgeDogY3ggLSBodywgeTogY3kgKyBoaCwgY3Vyc29yOiAnc3ctcmVzaXplJyB9LFxuICAgICAgICB7IGlkOiAnYnInLCB4OiBjeCArIGh3LCB5OiBjeSArIGhoLCBjdXJzb3I6ICdzZS1yZXNpemUnIH0sXG4gICAgICBdO1xuICAgIH0pO1xuXG4gICAgLy8gLS0tLSBab29tIGNsYW1wIC0tLS1cbiAgICBmdW5jdGlvbiBjbGFtcEVzY2FsYSgpIHtcbiAgICAgIGlmICghcHJldmlld1JlZi52YWx1ZSkgcmV0dXJuO1xuICAgICAgY29uc3QgY1cgICA9IHByZXZpZXdSZWYudmFsdWUub2Zmc2V0V2lkdGggIHx8IDM2MDtcbiAgICAgIGNvbnN0IGNIICAgPSBwcmV2aWV3UmVmLnZhbHVlLm9mZnNldEhlaWdodCB8fCAzNDA7XG4gICAgICBjb25zdCBkaW1XID0gZm9ybWEudmFsdWUgPT09ICdjaXJjdWxvJyA/IChkaW1zLmRpYW1ldHJvID8/IDUpIDogKGRpbXMuYW5jaG8gPz8gOCk7XG4gICAgICBjb25zdCBkaW1IID0gZm9ybWEudmFsdWUgPT09ICdjaXJjdWxvJyA/IChkaW1zLmRpYW1ldHJvID8/IDUpIDogKGRpbXMuYWx0byAgPz8gNSk7XG4gICAgICBpZiAoIWRpbVcgfHwgIWRpbUgpIHJldHVybjtcbiAgICAgIGNvbnN0IG1heEVzY2FsYSA9IE1hdGguZmxvb3IoTWF0aC5taW4oY1cgKiAwLjkyIC8gZGltVywgY0ggKiAwLjkyIC8gZGltSCkpO1xuICAgICAgaWYgKGVzY2FsYS52YWx1ZSA+IG1heEVzY2FsYSkge1xuICAgICAgICBlc2NhbGEudmFsdWUgPSBNYXRoLm1heCgxMCwgbWF4RXNjYWxhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0tIEVzdGlsb3MgY29tcHV0YWRvcyAtLS0tXG4gICAgY29uc3QgY29ydGVTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IHB4ID0gY20gPT4gYCR7Y20gKiBlc2NhbGEudmFsdWV9cHhgO1xuICAgICAgY29uc3QgYmxlZWRQeCA9IDIgKiBlc2NhbGEudmFsdWUgLyAxMDtcbiAgICAgIGxldCB3LCBoLCBib3JkZXJSYWRpdXMsIGNsaXBQYXRoO1xuICAgICAgaWYgKGZvcm1hLnZhbHVlID09PSAnY2lyY3VsbycpIHtcbiAgICAgICAgdyA9IGggPSBweChkaW1zLmRpYW1ldHJvID8/IDUpO1xuICAgICAgICBib3JkZXJSYWRpdXMgPSAnNTAlJztcbiAgICAgICAgY2xpcFBhdGggPSBgY2lyY2xlKGNhbGMoNTAlICsgJHtibGVlZFB4fXB4KSlgO1xuICAgICAgfSBlbHNlIGlmIChmb3JtYS52YWx1ZSA9PT0gJ2N1YWRyYWRvJykge1xuICAgICAgICB3ID0gaCA9IHB4KGRpbXMuYW5jaG8gPz8gNSk7XG4gICAgICAgIGJvcmRlclJhZGl1cyA9ICcwJztcbiAgICAgICAgY2xpcFBhdGggPSBgaW5zZXQoJHstYmxlZWRQeH1weClgO1xuICAgICAgfSBlbHNlIGlmIChmb3JtYS52YWx1ZSA9PT0gJ3JlY3Rhbmd1bG8nKSB7XG4gICAgICAgIHcgPSBweChkaW1zLmFuY2hvID8/IDgpOyBoID0gcHgoZGltcy5hbHRvID8/IDUpO1xuICAgICAgICBib3JkZXJSYWRpdXMgPSAnMCc7XG4gICAgICAgIGNsaXBQYXRoID0gYGluc2V0KCR7LWJsZWVkUHh9cHgpYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHcgPSBweChkaW1zLmFuY2hvID8/IDgpOyBoID0gcHgoZGltcy5hbHRvID8/IDUpO1xuICAgICAgICBjb25zdCByYWRpb1B4ID0gKHJhZGlvTG9jYWwudmFsdWUpICogZXNjYWxhLnZhbHVlO1xuICAgICAgICBib3JkZXJSYWRpdXMgPSBweChyYWRpb0xvY2FsLnZhbHVlKTtcbiAgICAgICAgY2xpcFBhdGggPSBgaW5zZXQoJHstYmxlZWRQeH1weCByb3VuZCAke3JhZGlvUHggKyBibGVlZFB4fXB4KWA7XG4gICAgICB9XG4gICAgICByZXR1cm4geyB3aWR0aDogdywgaGVpZ2h0OiBoLCBib3JkZXJSYWRpdXMsIGNsaXBQYXRoLCBjdXJzb3I6IGltYWdlblNyYy52YWx1ZSA/ICdncmFiJyA6ICdkZWZhdWx0JywgYm94U2hhZG93OiAnMCA0cHggMjRweCByZ2JhKDAsMCwwLDAuMTUpJyB9O1xuICAgIH0pO1xuXG4gICAgY29uc3QgYm9yZGVCbGFuY29PdmVybGF5U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAoIWJvcmRlQmxhbmNvLnZhbHVlKSByZXR1cm4ge307XG4gICAgICBjb25zdCBicHggICAgID0gTWF0aC5yb3VuZChib3JkZUJsYW5jb01tLnZhbHVlICogZXNjYWxhLnZhbHVlIC8gMTApO1xuICAgICAgY29uc3QgYmxlZWRQeCA9IDIgKiBlc2NhbGEudmFsdWUgLyAxMDtcbiAgICAgIGNvbnN0IHIgPSBmb3JtYS52YWx1ZSA9PT0gJ2NpcmN1bG8nICAgICAgICAgID8gJzUwJSdcbiAgICAgICAgICAgICAgIDogZm9ybWEudmFsdWUgPT09ICdyZWN0X3JlZG9uZGVhZG8nID8gYCR7KHJhZGlvTG9jYWwudmFsdWUpICogZXNjYWxhLnZhbHVlICsgYmxlZWRQeH1weGBcbiAgICAgICAgICAgICAgIDogJzAnO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcG9zaXRpb246ICAgICAgJ2Fic29sdXRlJyxcbiAgICAgICAgdG9wOiAgICAgICAgICAgYC0ke2JsZWVkUHh9cHhgLFxuICAgICAgICBsZWZ0OiAgICAgICAgICBgLSR7YmxlZWRQeH1weGAsXG4gICAgICAgIHdpZHRoOiAgICAgICAgIGBjYWxjKDEwMCUgKyAkezIgKiBibGVlZFB4fXB4KWAsXG4gICAgICAgIGhlaWdodDogICAgICAgIGBjYWxjKDEwMCUgKyAkezIgKiBibGVlZFB4fXB4KWAsXG4gICAgICAgIGJvcmRlcjogICAgICAgIGAke2JweCArIGJsZWVkUHh9cHggc29saWQgd2hpdGVgLFxuICAgICAgICBib3JkZXJSYWRpdXM6ICByLFxuICAgICAgICBib3hTaXppbmc6ICAgICAnYm9yZGVyLWJveCcsXG4gICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgekluZGV4OiAgICAgICAgMyxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBib3JkZUNvcnRlU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCByID0gZm9ybWEudmFsdWUgPT09ICdjaXJjdWxvJyAgICAgICAgICA/ICc1MCUnXG4gICAgICAgICAgICAgICA6IGZvcm1hLnZhbHVlID09PSAncmVjdF9yZWRvbmRlYWRvJyA/IGAkeyhyYWRpb0xvY2FsLnZhbHVlKSAqIGVzY2FsYS52YWx1ZX1weGBcbiAgICAgICAgICAgICAgIDogJzAnO1xuICAgICAgcmV0dXJuIHsgYm9yZGVyOiAnMnB4IGRhc2hlZCAjZmYwMGZmJywgYm9yZGVyUmFkaXVzOiByLCB6SW5kZXg6IDUgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGJvcmRlQmxlZWRTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGJsZWVkUHggPSAyICogZXNjYWxhLnZhbHVlIC8gMTA7XG4gICAgICBjb25zdCByID0gZm9ybWEudmFsdWUgPT09ICdjaXJjdWxvJyAgICAgICAgICA/ICc1MCUnXG4gICAgICAgICAgICAgICA6IGZvcm1hLnZhbHVlID09PSAncmVjdF9yZWRvbmRlYWRvJyA/IGAkeygocmFkaW9Mb2NhbC52YWx1ZSkgKiAxMCArIDIpICogZXNjYWxhLnZhbHVlIC8gMTB9cHhgXG4gICAgICAgICAgICAgICA6ICcwJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJvcmRlcjogJzFweCBkb3R0ZWQgIzA2YjZkNCcsXG4gICAgICAgIGJvcmRlclJhZGl1czogcixcbiAgICAgICAgdG9wOiBgLSR7YmxlZWRQeH1weGAsIGxlZnQ6IGAtJHtibGVlZFB4fXB4YCxcbiAgICAgICAgd2lkdGg6IGBjYWxjKDEwMCUgKyAkezIgKiBibGVlZFB4fXB4KWAsXG4gICAgICAgIGhlaWdodDogYGNhbGMoMTAwJSArICR7MiAqIGJsZWVkUHh9cHgpYCxcbiAgICAgICAgekluZGV4OiA0LFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGltYWdlblN0eWxlID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAgIHRvcDogJzUwJScsIGxlZnQ6ICc1MCUnLFxuICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlKC01MCUsIC01MCUpIHRyYW5zbGF0ZSgke2ltYWdlblRyYW5zZm9ybS54fXB4LCAke2ltYWdlblRyYW5zZm9ybS55fXB4KSBzY2FsZSgke2ltYWdlblRyYW5zZm9ybS5zY2FsZX0pYCxcbiAgICAgIHRyYW5zZm9ybU9yaWdpbjogJ2NlbnRlciBjZW50ZXInLFxuICAgICAgbWF4V2lkdGg6ICdub25lJyxcbiAgICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICB9KSk7XG5cbiAgICBjb25zdCBkaW1lbnNpb25MYWJlbCA9IGNvbXB1dGVkKCgpID0+XG4gICAgICBmb3JtYS52YWx1ZSA9PT0gJ2NpcmN1bG8nXG4gICAgICAgID8gYOKMgCAke2RpbXMuZGlhbWV0cm8gPz8gNX0gY21gXG4gICAgICAgIDogYCR7ZGltcy5hbmNobyA/PyA4fSDDlyAke2RpbXMuYWx0byA/PyA1fSBjbWBcbiAgICApO1xuXG4gICAgLy8gLS0tLSBHdWFyZGFyIC0tLS1cbiAgICBjb25zdCBndWFyZGFuZG8gPSByZWYoZmFsc2UpO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gZ3VhcmRhcigpIHtcbiAgICAgIGVycm9yR3VhcmRhZG8udmFsdWUgPSAnJztcbiAgICAgIGlmICghaW1hZ2VuU3JjLnZhbHVlKSB7IGVycm9yR3VhcmRhZG8udmFsdWUgPSAnQWdyZWfDoSB1bmEgaW1hZ2VuIGFudGVzIGRlIGd1YXJkYXIuJzsgcmV0dXJuOyB9XG5cbiAgICAgIGd1YXJkYW5kby52YWx1ZSA9IHRydWU7XG4gICAgICBhd2FpdCBuZXh0VGljaygpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBmZCA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmZC5hcHBlbmQoJ3BlZGlkb19wcm9kdWN0b19pZCcsIHBwSWQpO1xuXG4gICAgICAgIC8vIE5vbWJyZSB5IG9ic2VydmFjaW9uOiBjYW1wb3MgZnVlcmEgZGVsIGNvbXBvbmVudGUgKGVuIGVsIG1vZGFsKVxuICAgICAgICBjb25zdCBub21icmVFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdldi1ub21icmUtdHJhYmFqbycpO1xuICAgICAgICBjb25zdCBvYnNFbCAgICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdldi1vYnNlcnZhY2lvbicpO1xuICAgICAgICBpZiAobm9tYnJlRWw/LnZhbHVlKSBmZC5hcHBlbmQoJ25vbWJyZScsIG5vbWJyZUVsLnZhbHVlKTtcbiAgICAgICAgaWYgKG9ic0VsPy52YWx1ZSkgICAgZmQuYXBwZW5kKCdvYnNlcnZhY2lvbicsIG9ic0VsLnZhbHVlKTtcblxuICAgICAgICBmZC5hcHBlbmQoJ2ltYWdlblRyYW5zZm9ybScsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAuLi5pbWFnZW5UcmFuc2Zvcm0sXG4gICAgICAgICAgZXNjYWxhOiAgICAgICAgZXNjYWxhLnZhbHVlLFxuICAgICAgICAgIGJvcmRlQmxhbmNvOiAgIGJvcmRlQmxhbmNvLnZhbHVlLFxuICAgICAgICAgIGJvcmRlQmxhbmNvTW06IGJvcmRlQmxhbmNvTW0udmFsdWUsXG4gICAgICAgICAgcmFkaW86ICAgICAgICAgcmFkaW9Mb2NhbC52YWx1ZSxcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGlmIChpbWFnZW5GaWxlLnZhbHVlKSB7XG4gICAgICAgICAgZmQuYXBwZW5kKCdpbWFnZW4nLCBpbWFnZW5GaWxlLnZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChpbWFnZW5TcmMudmFsdWU/LnN0YXJ0c1dpdGgoJ2RhdGE6JykpIHtcbiAgICAgICAgICBjb25zdCBibG9iID0gYXdhaXQgKGF3YWl0IGZldGNoKGltYWdlblNyYy52YWx1ZSkpLmJsb2IoKTtcbiAgICAgICAgICBmZC5hcHBlbmQoJ2ltYWdlbicsIGJsb2IsICdkaXNlbm8uanBnJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNwID0gYXdhaXQgZmV0Y2godXJsR3VhcmRhciwgeyBtZXRob2Q6ICdQT1NUJywgYm9keTogZmQgfSk7XG4gICAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCByZXNwLmpzb24oKTtcbiAgICAgICAgaWYgKCFyZXNwLm9rKSB0aHJvdyBuZXcgRXJyb3IoanNvbi5lcnJvciA/PyAnRXJyb3IgYWwgZ3VhcmRhcicpO1xuXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsQ2Fycml0bztcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBlcnJvckd1YXJkYWRvLnZhbHVlID0gZXJyLm1lc3NhZ2U7XG4gICAgICAgIGd1YXJkYW5kby52YWx1ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIC0tLS0gTGlmZWN5Y2xlIC0tLS1cbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uTW91c2VNb3ZlKTtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgIG9uTW91c2VVcCk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFzdGUnLCAgICBvbldpbmRvd1Bhc3RlKTtcblxuICAgICAgaWYgKHByZXZpZXdSZWYudmFsdWUpIHtcbiAgICAgICAgY29uc3QgY1cgICA9IHByZXZpZXdSZWYudmFsdWUub2Zmc2V0V2lkdGggIHx8IDM2MDtcbiAgICAgICAgY29uc3QgY0ggICA9IHByZXZpZXdSZWYudmFsdWUub2Zmc2V0SGVpZ2h0IHx8IDM2MDtcbiAgICAgICAgY29uc3QgZGltVyA9IGZvcm1hLnZhbHVlID09PSAnY2lyY3VsbycgPyAoZGltcy5kaWFtZXRybyA/PyA1KSA6IChkaW1zLmFuY2hvID8/IDgpO1xuICAgICAgICBjb25zdCBkaW1IID0gZm9ybWEudmFsdWUgPT09ICdjaXJjdWxvJyA/IChkaW1zLmRpYW1ldHJvID8/IDUpIDogKGRpbXMuYWx0byAgPz8gNSk7XG4gICAgICAgIGVzY2FsYS52YWx1ZSA9IE1hdGgucm91bmQoTWF0aC5taW4oKGNXICogMC43MCkgLyBkaW1XLCAoY0ggKiAwLjcwKSAvIGRpbUgpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIG9uQmVmb3JlVW5tb3VudCgoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgb25Nb3VzZU1vdmUpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCAgb25Nb3VzZVVwKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwYXN0ZScsICAgIG9uV2luZG93UGFzdGUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGVzY2FsYSwgY2xhbXBFc2NhbGEsXG4gICAgICBmb3JtYSwgZGltcywgcmFkaW9Mb2NhbCxcbiAgICAgIGJvcmRlQmxhbmNvLCBib3JkZUJsYW5jb01tLFxuICAgICAgaW1hZ2VuU3JjLCBpbWFnZW5UcmFuc2Zvcm0sIGltZ1JlZiwgY29ydGVSZWYsIHByZXZpZXdSZWYsIGZpbGVJbnB1dCxcbiAgICAgIG9uSW1hZ2VMb2FkLCBjZW50cmFySW1hZ2VuLCBxdWl0YXJJbWFnZW4sXG4gICAgICBvbkZpbGVTZWxlY3QsIG9uRHJvcCwgcGVnYXJQb3J0YXBhcGVsZXMsXG4gICAgICBpbmljaWFyRHJhZywgaW5pY2lhclJlc2l6ZSwgaW5pY2lhclJlc2l6ZVRvdWNoLFxuICAgICAgb25Ub3VjaFN0YXJ0LCBvblRvdWNoTW92ZSwgb25Ub3VjaEVuZCxcbiAgICAgIHNjYWxlU2xpZGVyLCBpbmljaWFyU2NhbGVTdGVwLCBkZXRlbmVyU2NhbGVTdGVwLFxuICAgICAgaGFuZGxlUG9zaXRpb25zLFxuICAgICAgY29ydGVTdHlsZSwgYm9yZGVCbGFuY29PdmVybGF5U3R5bGUsIGJvcmRlQ29ydGVTdHlsZSwgYm9yZGVCbGVlZFN0eWxlLCBpbWFnZW5TdHlsZSxcbiAgICAgIGRpbWVuc2lvbkxhYmVsLFxuICAgICAgZ3VhcmRhbmRvLCBlcnJvckd1YXJkYWRvLCBndWFyZGFyLFxuICAgIH07XG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4uZXYtZWRpdG9yIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxNnB4OyB9XG5cbi8qIOKUgOKUgCBDYW52YXMgY2FyZCDilIDilIAgKi9cbi5zZS1jYW52YXMtY2FyZCB7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlOGU2ZTI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2UtY2FudmFzLXRvb2xiYXIge1xuICBwYWRkaW5nOiAxMnB4IDE4cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjBlZGU4O1xuICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG4uc2UtY2FudmFzLXRpdGxlIHsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzU1NTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7IH1cbi5zZS1jYW52YXMtYmFkZ2UgeyBiYWNrZ3JvdW5kOiAjZjBlZGU4OyBjb2xvcjogIzg4ODsgZm9udC1zaXplOiAxMXB4OyBwYWRkaW5nOiAycHggOHB4OyBib3JkZXItcmFkaXVzOiAxMHB4OyBmb250LXdlaWdodDogNTAwOyB9XG4uc2Utem9vbS1jb250cm9scyB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjYWFhOyB9XG4uc2Utem9vbS1idG4ge1xuICB3aWR0aDogMjZweDsgaGVpZ2h0OiAyNnB4O1xuICBib3JkZXI6IDEuNXB4IHNvbGlkICNlOGU2ZTI7IGJvcmRlci1yYWRpdXM6IDZweDsgYmFja2dyb3VuZDogI2ZhZmFmOTtcbiAgZm9udC1zaXplOiAxNHB4OyBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBjb2xvcjogIzU1NTsgdHJhbnNpdGlvbjogYWxsIC4xNXM7XG59XG4uc2Utem9vbS1idG46aG92ZXIgeyBib3JkZXItY29sb3I6ICMxYTFhMWE7IGNvbG9yOiAjMWExYTFhOyB9XG5cbi5zZS1jYW52YXMtYXJlYSB7XG4gIGJhY2tncm91bmQ6IHJlcGVhdGluZy1jb25pYy1ncmFkaWVudCgjZThlNmUyIDAlIDI1JSwgI2Y1ZjNmMCAwJSA1MCUpIDAgMCAvIDE4cHggMThweDtcbiAgbWluLWhlaWdodDogMzQwcHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4uc2UtY2FudmFzLWluZm8ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMTBweDsgbGVmdDogMTJweDtcbiAgZm9udC1zaXplOiAxMHB4OyBjb2xvcjogI2JiYjtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwuODUpO1xuICBwYWRkaW5nOiAzcHggOHB4OyBib3JkZXItcmFkaXVzOiA2cHg7XG59XG4uc2UtY2FudmFzLWluZm8tLXRvcHJpZ2h0IHtcbiAgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwcHg7IHJpZ2h0OiAxMnB4O1xuICBkaXNwbGF5OiBmbGV4OyBnYXA6IDZweDsgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLyog4pSA4pSAIFVwbG9hZCBiYXIg4pSA4pSAICovXG4uc2UtdXBsb2FkLWJhciB7XG4gIHBhZGRpbmc6IDEycHggMThweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmMGVkZTg7XG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZmxleC13cmFwOiB3cmFwOyBnYXA6IDhweDtcbn1cbi5zZS11cGxvYWQtYWN0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBmbGV4LXdyYXA6IHdyYXA7IH1cbi5zZS1idG4tdXBsb2FkIHtcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA2cHg7XG4gIHBhZGRpbmc6IDdweCAxNHB4O1xuICBib3JkZXItcmFkaXVzOiA4cHg7IGJvcmRlcjogMS41cHggc29saWQgI2U4ZTZlMjsgYmFja2dyb3VuZDogI2ZhZmFmOTtcbiAgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzMzMzsgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgLjE1czsgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5zZS1idG4tdXBsb2FkOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiAjMWExYTFhOyBiYWNrZ3JvdW5kOiAjZjVmM2YwOyB9XG4uc2UtYnRuLXVwbG9hZC5wcmltYXJ5IHsgYmFja2dyb3VuZDogIzFhMWExYTsgYm9yZGVyLWNvbG9yOiAjMWExYTFhOyBjb2xvcjogI2ZmZjsgfVxuLnNlLWJ0bi11cGxvYWQucHJpbWFyeTpob3ZlciB7IGJhY2tncm91bmQ6ICMzMzM7IH1cbi5zZS1idG4tdXBsb2FkLmRhbmdlciB7IGNvbG9yOiAjZGMzNTQ1OyBib3JkZXItY29sb3I6ICNmNWM2Y2I7IGJhY2tncm91bmQ6ICNmZmY1ZjU7IH1cbi5zZS1idG4tdXBsb2FkLmRhbmdlcjpob3ZlciB7IGJhY2tncm91bmQ6ICNmZmU1ZTU7IGJvcmRlci1jb2xvcjogI2RjMzU0NTsgfVxuLnNlLXVwbG9hZC1oaW50IHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogI2JiYjsgfVxuXG4vKiDilIDilIAgVmlzdWFsIG9wdGlvbnMg4pSA4pSAICovXG4uc2UtdmlzdWFsLWNhcmQgeyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXItcmFkaXVzOiAxNnB4OyBib3JkZXI6IDFweCBzb2xpZCAjZThlNmUyOyBwYWRkaW5nOiAxOHB4IDIwcHg7IH1cbi5zZS1sYWJlbCB7IGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IDcwMDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNpbmc6IDAuOHB4OyBjb2xvcjogIzk5OTsgbWFyZ2luLWJvdHRvbTogMTJweDsgfVxuLnNlLXZpc3VhbC1vcHRpb25zIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyBnYXA6IDEwcHg7IH1cbi5zZS12aXN1YWwtb3B0aW9uIHsgYm9yZGVyOiAxLjVweCBzb2xpZCAjZThlNmUyOyBib3JkZXItcmFkaXVzOiAxMHB4OyBwYWRkaW5nOiAxMnB4IDE0cHg7IGN1cnNvcjogcG9pbnRlcjsgdHJhbnNpdGlvbjogYWxsIC4xNXM7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfVxuLnNlLXZpc3VhbC1vcHRpb246aG92ZXIgeyBib3JkZXItY29sb3I6ICNjMGJkYjg7IGJhY2tncm91bmQ6ICNmYWZhZjk7IH1cbi5zZS12aXN1YWwtb3B0aW9uLmFjdGl2ZSB7IGJvcmRlci1jb2xvcjogIzFhMWExYTsgYmFja2dyb3VuZDogI2ZhZmFmOTsgfVxuLnNlLXZpc3VhbC1uYW1lIHsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzIyMjsgbWFyZ2luLWJvdHRvbTogMnB4OyB9XG4uc2UtdmlzdWFsLWRlc2MgeyBmb250LXNpemU6IDExcHg7IGNvbG9yOiAjYWFhOyBsaW5lLWhlaWdodDogMS4zOyB9XG4uc2UtdmlzdWFsLWNoZWNrIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwcHg7IHJpZ2h0OiAxMHB4OyB3aWR0aDogMThweDsgaGVpZ2h0OiAxOHB4OyBib3JkZXItcmFkaXVzOiA1MCU7IGJvcmRlcjogMS41cHggc29saWQgI2UwZGRkODsgYmFja2dyb3VuZDogI2ZmZjsgfVxuLnNlLXZpc3VhbC1vcHRpb24uYWN0aXZlIC5zZS12aXN1YWwtY2hlY2sgeyBiYWNrZ3JvdW5kOiAjMWExYTFhOyBib3JkZXItY29sb3I6ICMxYTFhMWE7IH1cbi5zZS12aXN1YWwtb3B0aW9uLmFjdGl2ZSAuc2UtdmlzdWFsLWNoZWNrOjphZnRlciB7IGNvbnRlbnQ6ICcnOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDVweDsgaGVpZ2h0OiA4cHg7IGJvcmRlcjogMnB4IHNvbGlkICNmZmY7IGJvcmRlci10b3A6IG5vbmU7IGJvcmRlci1sZWZ0OiBub25lOyB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlKDNweCwgMXB4KTsgfVxuLnNlLWJvcmRlci1zdWIgeyBtYXJnaW4tdG9wOiAxMnB4OyBwYWRkaW5nLXRvcDogMTJweDsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmMGVkZTg7IH1cbi5zZS1ib3JkZXItc3ViLWxhYmVsIHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzk5OTsgbWFyZ2luLWJvdHRvbTogNnB4OyBmb250LXdlaWdodDogNTAwOyB9XG4uc2Utc2xpZGVyIHsgZmxleDogMTsgYWNjZW50LWNvbG9yOiAjMWExYTFhOyB9XG5cbi8qIOKUgOKUgCBKb3lzdGljayDilIDilIAgKi9cbi5zZS1zaXplLWpveXN0aWNrIHtcbiAgcG9zaXRpb246IGFic29sdXRlOyBib3R0b206IDEycHg7IHJpZ2h0OiAxMnB4O1xuICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjkyKTsgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDRweCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlOGU2ZTI7IGJvcmRlci1yYWRpdXM6IDIwcHg7IHBhZGRpbmc6IDVweCAxMHB4O1xuICB6LWluZGV4OiAyMDsgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwwLDAsMC4xMik7IHVzZXItc2VsZWN0OiBub25lO1xufVxuLnNlLWpveS1idG4geyB3aWR0aDogMjZweDsgaGVpZ2h0OiAyNnB4OyBib3JkZXI6IDEuNXB4IHNvbGlkICNlMGRkZDg7IGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogI2ZhZmFmOTsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogMzAwOyBjb2xvcjogIzU1NTsgY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZmxleC1zaHJpbms6IDA7IHRyYW5zaXRpb246IGFsbCAuMXM7IH1cbi5zZS1qb3ktYnRuOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiAjMWExYTFhOyBjb2xvcjogIzFhMWExYTsgYmFja2dyb3VuZDogI2YwZWRlODsgfVxuLnNlLWpveS1idG46YWN0aXZlIHsgYmFja2dyb3VuZDogIzFhMWExYTsgY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjogIzFhMWExYTsgfVxuLnNlLWpveS1zbGlkZXIgeyB3aWR0aDogOTBweDsgYWNjZW50LWNvbG9yOiAjMWExYTFhOyBjdXJzb3I6IHBvaW50ZXI7IH1cblxuLyog4pSA4pSAIENvcnRlIHZpc3VhbCDilIDilIAgKi9cbi5jb3J0ZS12aXN1YWwgeyBiYWNrZ3JvdW5kOiAjZmZmOyB0cmFuc2l0aW9uOiB3aWR0aCAuMnMsIGhlaWdodCAuMnMsIGJvcmRlci1yYWRpdXMgLjJzOyBvdmVyZmxvdzogdmlzaWJsZTsgfVxuLmNvcnRlLXZpc3VhbCBpbWcgeyBwb2ludGVyLWV2ZW50czogbm9uZTsgfVxuLmNvcnRlLXZpc3VhbDphY3RpdmUgeyBjdXJzb3I6IGdyYWJiaW5nICFpbXBvcnRhbnQ7IH1cblxuLnJlc2l6ZS1oYW5kbGUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAxMnB4OyBoZWlnaHQ6IDEycHg7IGJhY2tncm91bmQ6ICNmZmY7IGJvcmRlcjogMnB4IHNvbGlkICMxYTFhMWE7IGJvcmRlci1yYWRpdXM6IDJweDsgcG9pbnRlci1ldmVudHM6IGF1dG87IHotaW5kZXg6IDEwOyBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLDAsMCwwLjI1KTsgfVxuLnJlc2l6ZS1oYW5kbGU6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMWExYTFhOyB9XG5cbi8qIOKUgOKUgCBCb3TDs24gZ3VhcmRhciDilIDilIAgKi9cbi5zZS1zYXZlLWJ0biB7XG4gIHdpZHRoOiAxMDAlOyBwYWRkaW5nOiAxM3B4O1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMWExYTFhIDAlLCAjMzMzIDEwMCUpO1xuICBjb2xvcjogI2ZmZjsgYm9yZGVyOiBub25lOyBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGN1cnNvcjogcG9pbnRlcjtcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogOHB4O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4xNXMsIHRyYW5zZm9ybSAuMXM7XG59XG4uc2Utc2F2ZS1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkgeyBvcGFjaXR5OiAuODg7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsgfVxuLnNlLXNhdmUtYnRuOmRpc2FibGVkIHsgb3BhY2l0eTogLjQ1OyBjdXJzb3I6IG5vdC1hbGxvd2VkOyB9XG4uc2Utc2F2ZS1idG4gc3ZnIHsgd2lkdGg6IDE1cHg7IGhlaWdodDogMTVweDsgb3BhY2l0eTogLjg7IH1cblxuLyog4pSA4pSAIE92ZXJsYXkg4pSA4pSAICovXG4uc2Utb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDsgaW5zZXQ6IDA7IGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjQ1KTtcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IHotaW5kZXg6IDk5OTk7XG59XG4uc2Utb3ZlcmxheS1jYXJkIHsgYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyLXJhZGl1czogMTZweDsgcGFkZGluZzogMzJweCA0MHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbi5zZS1vdmVybGF5LXRpdGxlIHsgZm9udC1zaXplOiAxNXB4OyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogIzFhMWExYTsgbWFyZ2luLXRvcDogMTJweDsgfVxuLnNlLW92ZXJsYXktc3VidGl0bGUgeyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjYWFhOyBtYXJnaW4tdG9wOiA0cHg7IH1cbi5zZS1pbWFnZS1zcGlubmVyIHtcbiAgd2lkdGg6IDM2cHg7IGhlaWdodDogMzZweDsgYm9yZGVyOiAzcHggc29saWQgI2U4ZTZlMjtcbiAgYm9yZGVyLXRvcC1jb2xvcjogIzFhMWExYTsgYm9yZGVyLXJhZGl1czogNTAlO1xuICBhbmltYXRpb246IHNwaW4gLjdzIGxpbmVhciBpbmZpbml0ZTsgbWFyZ2luOiAwIGF1dG87XG59XG5Aa2V5ZnJhbWVzIHNwaW4geyB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfVxuPC9zdHlsZT5cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/