.frame.svelte-1k0u4gw{background-color:white}
.frame.svelte-3hm264.svelte-3hm264{display:flex;flex-wrap:nowrap;justify-content:space-between;background-color:#ecf0f1;padding:5px 5px 0}.frame.svelte-3hm264 .category.svelte-3hm264{height:24px;width:24px;background-image:url(/kategorije/16x16px/orange/pin.svg);background-repeat:no-repeat;background-size:contain;background-position:center center;text-align:center;color:white;font-weight:bold;font-size:12px;font-style:italic;padding-top:4px}.active.svelte-3hm264.svelte-3hm264{cursor:pointer}
.frame.svelte-ab3chs.svelte-ab3chs{--searchbox-ht:33px;height:var(--searchbox-ht);background-color:#ecf0f1;display:flex;align-items:center;flex:1 1 auto}.frame.svelte-ab3chs .search-icon.svelte-ab3chs{position:relative;height:30px;width:30px}.frame.svelte-ab3chs .search-icon img.svelte-ab3chs{height:15px;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.frame.svelte-ab3chs .text.svelte-ab3chs{width:100%;font-size:15px;margin:0 5px 0 0;padding:0;color:gray}.frame.svelte-ab3chs .text-active.svelte-ab3chs{color:black}
.frame.svelte-tt7rj6.svelte-tt7rj6{flex:1;padding:1px;display:flex;overflow-x:scroll;align-items:center}.frame.svelte-tt7rj6 .brand-item.svelte-tt7rj6{height:30px;width:28px;border:1px solid red;border-radius:3px;margin:0px 2px;overflow:hidden;cursor:pointer}.frame.svelte-tt7rj6 .isNotSelected.svelte-tt7rj6{background:black}.frame.svelte-tt7rj6 .isSelected.svelte-tt7rj6{background:yellow}
.frame.svelte-1cbmxfj.svelte-1cbmxfj{display:flex;flex-direction:column;justify-content:space-between;max-width:calc(100vw - 20px)}.frame.svelte-1cbmxfj .categories-and-keyword-frame.svelte-1cbmxfj{display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.frame.svelte-1cbmxfj .categories-and-keyword-frame .full-width.svelte-1cbmxfj{width:100%;margin:0;padding:10px 0 0}.frame.svelte-1cbmxfj .categories-and-keyword-frame .keyword-filter-frame.svelte-1cbmxfj{display:flex;flex-wrap:nowrap;align-items:center;min-width:300px;margin:0 3px 0 0;flex:1}.frame.svelte-1cbmxfj .categories-and-keyword-frame .keyword-filter-frame .icon.svelte-1cbmxfj{position:relative;height:33px;width:33px;margin:0 3px 0 0;background-color:rgba(236, 240, 240, 1);border-radius:3px}.frame.svelte-1cbmxfj .categories-and-keyword-frame .keyword-filter-frame .icon img.svelte-1cbmxfj{position:absolute;height:22px;top:50%;left:50%;transform:translate(-50%, -50%)}.frame.svelte-1cbmxfj .categories-and-keyword-frame .categories-filter-frame.svelte-1cbmxfj{flex:1}.frame.svelte-1cbmxfj .dsa-filter-frame.svelte-1cbmxfj{flex:1;margin:10px 0 0;padding:5px;background-color:#ecf0f1;display:flex}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-action-buttons.svelte-1cbmxfj{display:flex}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-action-buttons .button.svelte-1cbmxfj{height:35px;width:40px;margin-right:5px;border:1px solid white;background-color:white;padding:3px;border-radius:3px;overflow:hidden;cursor:pointer}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-action-buttons .button--inactive.svelte-1cbmxfj{cursor:default;opacity:0.5}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-action-buttons .button img.svelte-1cbmxfj{height:25px;width:30px;object-fit:contain}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel.svelte-1cbmxfj{flex:1;background-color:rgb(255, 255, 255);padding:1px;display:flex;overflow-x:scroll;justify-content:flex-start;align-items:center}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel--inactive.svelte-1cbmxfj{opacity:0.5;cursor:pointer;pointer-events:none}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa.svelte-1cbmxfj{flex:0 0 auto;cursor:pointer;margin:1px 2px;padding:1px;border-radius:3px;color:white;font-weight:bold;font-size:12px;opacity:0.5;height:fit-content}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa--m.svelte-1cbmxfj{background-color:#5289d1}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa--w.svelte-1cbmxfj{background-color:#eb5c5c}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa--x.svelte-1cbmxfj{background-color:#daa520}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa--hovered.svelte-1cbmxfj{color:white;opacity:1}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .dsa--selected.svelte-1cbmxfj{color:white;opacity:1}.frame.svelte-1cbmxfj .dsa-filter-frame .dsa-filter-carousel .text.svelte-1cbmxfj{font-size:15px;margin:0 5px;user-select:none;opacity:0.6}{}
tr.svelte-fkgv8{background-color:grey;line-height:16px}th.svelte-fkgv8{width:14px;font-size:10px;text-align:center;color:white;background-color:grey;padding:0px}.isWeekend.svelte-fkgv8{color:black;background-color:lightgray}.null.svelte-fkgv8{background-color:white}.separator.svelte-fkgv8{width:1px;background-color:white}
td.svelte-1ip3p4u{position:relative;width:14px;font-size:10px;text-align:center;height:12px;color:darkslategrey;border:1px dotted lightgray;cursor:pointer;padding:0px}.isEvenYear.svelte-1ip3p4u{color:darkslategrey}.isWithinSelectedDateRange.svelte-1ip3p4u{background:rgba(128, 128, 128, 0.616);color:whitesmoke;font-weight:bold}.isToday.svelte-1ip3p4u{background:slategrey;color:whitesmoke}.isTodayInEvenYear.svelte-1ip3p4u{background:slategrey;color:whitesmoke}.isHighlighted.svelte-1ip3p4u{background:#e22c3b;color:white}.isDSAHighlighted.svelte-1ip3p4u{background:#e22c3b63;color:white}.hasEvents.svelte-1ip3p4u{background:#545ad260}.hasEventsAndIsWithinSelectedDateRange.svelte-1ip3p4u{background:#545bd2;color:white}.hasListedEvents.svelte-1ip3p4u{background:#f5a0205d}.hasListedEventsAndIsWithinSelectedDateRange.svelte-1ip3p4u{background:#f5a020;color:white}.tooltiptext.svelte-1ip3p4u{width:70px;background-color:darkslategrey;color:white;text-align:center;padding:3px 0;border-radius:6px;font-size:12px;font-weight:normal;position:absolute;top:-35px;left:-65px;z-index:1}
tr.svelte-16p9zxv{height:16px}td.svelte-16p9zxv{width:14px;font-size:11px;text-align:end;padding:0px}.separator.svelte-16p9zxv{width:1px}.monthName.svelte-16p9zxv{color:darkslategrey;width:50px;border-bottom:1px solid lightgrey;cursor:pointer}.isEvenYear.svelte-16p9zxv{color:darkslategrey}.bolder.svelte-16p9zxv{font-weight:bolder}
:root{--calendar-width:739px}.main.svelte-1phwrkj.svelte-1phwrkj{width:var(--calendar-width)}.season-picker.svelte-1phwrkj.svelte-1phwrkj{display:flex;justify-content:center;padding:2px 0;user-select:none}.season-picker.svelte-1phwrkj .season.svelte-1phwrkj{display:flex;width:80px;font-weight:bold;justify-content:center}.season-picker.svelte-1phwrkj .unselected.svelte-1phwrkj{color:lightslategray}.season-picker.svelte-1phwrkj .unselected.svelte-1phwrkj:hover{color:darkslategrey}.season-picker.svelte-1phwrkj .selected.svelte-1phwrkj{color:white;background-color:#f58b20;border-radius:3px}table.svelte-1phwrkj.svelte-1phwrkj{width:100%;border:1px solid slategray;padding:0px;background:white;user-select:none}
.datepickers-frame.svelte-1i08p23{margin-top:5px;display:flex;justify-content:space-between;background-color:white;flex-wrap:wrap}.datepicker.svelte-1i08p23{width:49%;height:36px;background-color:#ecf0f1;border-radius:3px;display:flex}img.svelte-1i08p23{align-self:center;height:25px;padding:0 2vw 0 1vw}.date.svelte-1i08p23{flex:1;font-size:12px;text-align:center;background-color:#ecf0f1}
.frame--no-sidepane.svelte-1t5wawv{background-color:white}.frame--sidepane-on.svelte-1t5wawv{background-color:rgba(255, 255, 255, 0.7)}
.mapdiv.svelte-1kj6swc{position:absolute;width:100%;top:0;bottom:0}.markerIcon{background-image:url(/kategorije/16x16px/orange/pin.svg);background-repeat:no-repeat;background-size:contain;background-position:center center;text-align:center;color:white;font-weight:bold;font-size:12px;font-style:italic;padding-top:2px}.highlightedMarkerIcon{background-image:url(/kategorije/16x16px/red/pin.svg);background-repeat:no-repeat;background-size:contain;background-position:center center;text-align:center;color:white;font-weight:bold;font-size:12px;font-style:italic;padding-top:2px}
:root{--flag-width:45px;--flag-height:32px}.event-card.svelte-1fi46q8.svelte-1fi46q8{margin:10px;background-color:whitesmoke;border-radius:3px;box-shadow:0 0 5px 5px var(--color-backg-mid);display:flex;flex-direction:column}.isHighlighted.svelte-1fi46q8.svelte-1fi46q8{box-shadow:0 0 5px 5px rgba(221, 11, 11, 0.5)}.event-card.svelte-1fi46q8 .isUnpublished.svelte-1fi46q8{background-color:darkslategrey;color:white}.event-card.svelte-1fi46q8 .body.svelte-1fi46q8{position:relative;width:100%;padding:10px 10px 5px 10px;display:flex;flex-direction:row;overflow:hidden}.event-card.svelte-1fi46q8 .body .brand-bg.svelte-1fi46q8{position:absolute;left:0;top:0;object-fit:cover;width:100%;opacity:0.15}.event-card.svelte-1fi46q8 .body .event-info.svelte-1fi46q8{width:calc(100% - 28px);flex:1 0 auto;display:flex;flex-direction:column;justify-content:flex-start;cursor:pointer;z-index:2}.event-card.svelte-1fi46q8 .body .event-info .flag-place-date.svelte-1fi46q8{height:var(--flag-height);display:flex}.event-card.svelte-1fi46q8 .body .event-info .flag-place-date .flag.svelte-1fi46q8{height:var(--flag-height);width:var(--flag-width);overflow:hidden;box-shadow:0 0 5px 5px var(--color-backg-mid)}.event-card.svelte-1fi46q8 .body .event-info .flag-place-date .flag img.svelte-1fi46q8{height:var(--flag-height);width:var(--flag-width);object-fit:cover}.event-card.svelte-1fi46q8 .body .event-info .place-date.svelte-1fi46q8{flex:1 1 auto;padding-left:5px;display:flex;flex-direction:column}.event-card.svelte-1fi46q8 .body .event-info .place-date .place.svelte-1fi46q8{font-size:15px;font-weight:bolder}.event-card.svelte-1fi46q8 .body .event-info .place-date .date.svelte-1fi46q8{}.event-card.svelte-1fi46q8 .body .event-info .event-title.svelte-1fi46q8{height:55px;padding:10px 0;display:flex;flex-direction:column;justify-content:center;align-items:center}.event-card.svelte-1fi46q8 .body .event-info .event-title .text.svelte-1fi46q8{font-size:16px;text-align:center}.event-card.svelte-1fi46q8 .body .categories.svelte-1fi46q8{width:28px;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-end;font-size:8px;z-index:2}.EventCard__category.svelte-1fi46q8.svelte-1fi46q8{height:26px;width:26px;background-image:url(/kategorije/16x16px/orange/pin.svg);background-repeat:no-repeat;background-size:contain;background-position:center center;text-align:center;color:white;font-weight:bold;font-size:14px;font-style:italic;padding-top:4px}.event-card.svelte-1fi46q8 .footer.svelte-1fi46q8{height:40px;padding:0 10px;background-color:var(--color-foreg-shadow);border-radius:3px;display:flex;justify-content:space-between;align-items:center}.event-card.svelte-1fi46q8 .footer .brands.svelte-1fi46q8{display:flex;flex:1 0 auto;justify-content:flex-start;align-items:center}.event-card.svelte-1fi46q8 .footer .brands .warrantor-icon.svelte-1fi46q8{height:30px;width:30px;margin:0 3px 0 0;cursor:pointer}.event-card.svelte-1fi46q8 .footer .brands .warrantor-icon img.svelte-1fi46q8{width:100%;object-fit:contain;border-radius:3px}.event-card.svelte-1fi46q8 .footer .brands .brand-icon.svelte-1fi46q8{height:30px;width:30px;margin:0 3px 0 0;cursor:pointer}.event-card.svelte-1fi46q8 .footer .brands .brand-icon img.svelte-1fi46q8{width:100%;object-fit:contain}.event-card.svelte-1fi46q8 .footer .actions.svelte-1fi46q8{display:flex;justify-content:flex-end;align-items:center}.event-card.svelte-1fi46q8 .footer .actions .action-button.svelte-1fi46q8{height:30px;width:30px;padding:3px;margin:0 0 0 5px;border-radius:3px;background-color:var(--color-action-main);cursor:pointer}.event-card.svelte-1fi46q8 .footer .actions .action-button.svelte-1fi46q8:hover{background-color:var(--color-action-hover)}.event-card.svelte-1fi46q8 .footer .actions .action-button img.svelte-1fi46q8{width:100%;object-fit:contain}
.grid.svelte-1kb97n6{padding:10px;display:grid}.bottom-line.svelte-1kb97n6{min-height:20px;padding:5px;background-color:var(--color-foreg-shadow)}
.event-details.svelte-1r4eptt.svelte-1r4eptt{position:relative;z-index:3}.dsa-filter.svelte-1r4eptt.svelte-1r4eptt{position:relative;z-index:3}.frame.svelte-1r4eptt.svelte-1r4eptt{position:relative;z-index:1;height:calc(100vh - var(--navbar-ht));overflow:hidden}.frame.svelte-1r4eptt .geomap.svelte-1r4eptt{position:relative;z-index:1;height:calc(100vh - var(--navbar-ht) - 390px);min-height:300px;box-shadow:0 0 15px rgba(0, 0, 0, 0.2)}.frame.svelte-1r4eptt .geomap-on-narrow-screen.svelte-1r4eptt{position:relative;z-index:2;height:35vh;min-height:0;box-shadow:0 0 15px rgba(0, 0, 0, 0.2)}.frame.svelte-1r4eptt .lower-section.svelte-1r4eptt{position:absolute;display:flex;flex-direction:column;align-items:center;width:100%;z-index:2;bottom:10px}.frame.svelte-1r4eptt .lower-section-on-narrow-screen.svelte-1r4eptt{position:absolute;display:flex;flex-direction:column;align-items:center;width:100%;justify-content:flex-start;z-index:1;top:calc(35vh + 10px);bottom:0}.events-list-sidepane.svelte-1r4eptt.svelte-1r4eptt{position:fixed;top:var(--navbar-ht);bottom:0;right:0;box-shadow:0 0 15px rgba(0, 0, 0, 0.1);overflow-y:auto}.frame.svelte-1r4eptt .filters-and-events.svelte-1r4eptt{position:relative;display:flex;flex-wrap:wrap;margin:0 auto;top:0;overflow-y:auto}.frame.svelte-1r4eptt .filters-and-events .filters-frame.svelte-1r4eptt{position:sticky;z-index:3;top:-160px;margin:10px;padding:10px;max-width:calc(var(--calendar-width) + 40px);background-color:rgba(255, 255, 255, 0.8);border-radius:5px;box-shadow:0 0 15px rgba(0, 0, 0, 0.2)}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZTk0MTY1YjQuY3NzIiwic291cmNlcyI6WyIuLi8uLi8uLi9Ec2FGaWx0ZXIuc3ZlbHRlIiwiLi4vLi4vLi4vQ2F0ZWdvcmllc0ZpbHRlci5zdmVsdGUiLCIuLi8uLi8uLi9LZXl3b3JkRmlsdGVyLnN2ZWx0ZSIsIi4uLy4uLy4uL0JyYW5kc0ZpbHRlci5zdmVsdGUiLCIuLi8uLi8uLi9LZXl3b3JkQW5kUHJvZ3JhbUZpbHRlci5zdmVsdGUiLCIuLi8uLi8uLi9EYXlzT2ZXZWVrLnN2ZWx0ZSIsIi4uLy4uLy4uL0RheS5zdmVsdGUiLCIuLi8uLi8uLi9Nb250aC5zdmVsdGUiLCIuLi8uLi8uLi9pbmRleC5zdmVsdGUiLCIuLi8uLi8uLi9pbmRleC5zdmVsdGUiLCIuLi8uLi8uLi9EYXRlUmFuZ2VGaWx0ZXIuc3ZlbHRlIiwiLi4vLi4vLi4vR2VvTWFwLnN2ZWx0ZSIsIi4uLy4uLy4uL0V2ZW50Q2FyZC5zdmVsdGUiLCIuLi8uLi8uLi9FdmVudHNMaXN0LnN2ZWx0ZSIsIi4uLy4uLy4uL2luZGV4LnN2ZWx0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8c2NyaXB0PlxuICBpbXBvcnQgQ29tcGV0aXRpb25zUGlja2VyIGZyb20gXCIuLi8uLi91aS9Db21wZXRpdGlvbnNQaWNrZXIvaW5kZXguc3ZlbHRlXCI7XG5cbiAgZXhwb3J0IGxldCBkc2FGaWx0ZXIgPSBbXTtcbiAgZXhwb3J0IGNvbnN0IGRzYUZpbHRlck1vZGFsVyA9IDEzMTE7XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuICAuZnJhbWUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB9XG48L3N0eWxlPlxuXG48ZGl2IGNsYXNzPVwiZnJhbWVcIj5cbiAgPENvbXBldGl0aW9uc1BpY2tlciBiaW5kOnNlbGVjdGVkRHNhSXRlbXM9e2RzYUZpbHRlcn0gLz5cbjwvZGl2PlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IHsgYXBwZW5kIH0gZnJvbSBcInJhbWRhL3NyY1wiO1xuXG4gIGltcG9ydCB7IGdldEV2ZW50Q2F0ZWdvcmllc0Zyb21EQiB9IGZyb20gXCIuLi8uLi9wYWdlcy9FdmVudEVkaXRvclwiO1xuXG4gIGV4cG9ydCBsZXQgY2F0ZWdvcmllc0luRGF0YXNldCA9IFtdO1xuICBleHBvcnQgbGV0IGNhdGVnb3JpZXNGaWx0ZXIgPSBbXTtcbiAgbGV0IGFsbENhdGVnb3JpZXMgPSBnZXRFdmVudENhdGVnb3JpZXNGcm9tREIoKTtcblxuICBjb25zdCB0b2dnbGVDYXRlZ29yeUZpbHRlcmVkID0gKGNhdGVnb3J5KSA9PiB7XG4gICAgY2F0ZWdvcmllc0ZpbHRlciA9IGNhdGVnb3JpZXNGaWx0ZXIuaW5jbHVkZXMoY2F0ZWdvcnkpXG4gICAgICA/IGNhdGVnb3JpZXNGaWx0ZXIuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9PSBjYXRlZ29yeSlcbiAgICAgIDogYXBwZW5kKGNhdGVnb3J5LCBjYXRlZ29yaWVzRmlsdGVyKTtcbiAgfTtcblxuICBjYXRlZ29yaWVzRmlsdGVyID0gW1wiZlwiLCBcImVcIiwgXCJkXCIsIFwiY1wiLCBcImJcIiwgXCJhXCJdO1xuPC9zY3JpcHQ+XG5cbjxkaXYgY2xhc3M9XCJmcmFtZVwiPlxuICB7I2VhY2ggYWxsQ2F0ZWdvcmllcyBhcyBjYXRlZ29yeX1cbiAgICA8ZGl2XG4gICAgICBvbjpjbGljaz17KCkgPT4gdG9nZ2xlQ2F0ZWdvcnlGaWx0ZXJlZChjYXRlZ29yeS5uYW1lKX1cbiAgICAgIGNsYXNzPVwiY2F0ZWdvcnkge2NhdGVnb3JpZXNJbkRhdGFzZXQuaW5jbHVkZXMoY2F0ZWdvcnkubmFtZSlcbiAgICAgICAgPyAnYWN0aXZlJ1xuICAgICAgICA6ICcnfVwiXG4gICAgICBzdHlsZT1cIm9wYWNpdHk6IHtjYXRlZ29yaWVzSW5EYXRhc2V0LmluY2x1ZGVzKGNhdGVnb3J5Lm5hbWUpXG4gICAgICAgID8gY2F0ZWdvcmllc0ZpbHRlci5pbmNsdWRlcyhjYXRlZ29yeS5uYW1lKVxuICAgICAgICAgID8gJzEnXG4gICAgICAgICAgOiAnMC41J1xuICAgICAgICA6ICcwLjInfVwiXG4gICAgICBhbHQ9e2NhdGVnb3J5LmRlc2NyaXB0aW9ufVxuICAgICAgdGl0bGU9e2NhdGVnb3J5LmRlc2NyaXB0aW9ufVxuICAgID5cbiAgICAgIHtjYXRlZ29yeS5uYW1lLnRvVXBwZXJDYXNlKCl9XG4gICAgPC9kaXY+XG4gIHsvZWFjaH1cbjwvZGl2PlxuXG48c3R5bGU+XG4gIC5mcmFtZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VjZjBmMTtcbiAgICBwYWRkaW5nOiA1cHggNXB4IDA7XG4gIH1cbiAgLmZyYW1lIC5jYXRlZ29yeSB7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgva2F0ZWdvcmlqZS8xNngxNnB4L29yYW5nZS9waW4uc3ZnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gIH1cblxuICAvKiAuZnJhbWUgLmNhdGVnb3J5IGltZyB7XG4gICAgaGVpZ2h0OiAyNXB4O1xuICAgIHdpZHRoOiAyNXg7XG4gIH0gKi9cbiAgLmFjdGl2ZSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdD5cbiAgZXhwb3J0IGxldCBrZXl3b3JkRmlsdGVyID0gXCJcIjtcblxuICBsZXQga2V5d29yZCA9IFwiXCI7XG4gIGxldCBtaW5LZXl3b3JkTGVuZ3RoID0gMztcbiAgbGV0IHByZXZpb3VzS2V5d29yZExlbmd0aCA9IDA7XG4gIGxldCBpc0lpbml0aWFsS2V5d29yZEZpeGVkID0gZmFsc2U7XG5cbiAgbGV0IGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdCBjaGVja0tleXdvcmRDaGFuZ2VkID0gKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIGtleXdvcmQubGVuZ3RoICsgMSA9PT0gbWluS2V5d29yZExlbmd0aCAmJlxuICAgICAga2V5d29yZC5sZW5ndGggPCBwcmV2aW91c0tleXdvcmRMZW5ndGhcbiAgICApIHtcbiAgICAgIGtleXdvcmRGaWx0ZXIgPSBcIlwiO1xuICAgIH1cbiAgICBpZiAoIShrZXl3b3JkLmxlbmd0aCA8IG1pbktleXdvcmRMZW5ndGgpKSB7XG4gICAgICBrZXl3b3JkRmlsdGVyID0ga2V5d29yZDtcbiAgICB9XG4gICAgcHJldmlvdXNLZXl3b3JkTGVuZ3RoID0ga2V5d29yZC5sZW5ndGg7XG4gIH07XG5cbiAgJDogaWYgKCFpc0lpbml0aWFsS2V5d29yZEZpeGVkICYmIGtleXdvcmRGaWx0ZXIgIT0gXCJcIikge1xuICAgIGtleXdvcmQgPSBrZXl3b3JkRmlsdGVyO1xuICAgIGlzSWluaXRpYWxLZXl3b3JkRml4ZWQgPSB0cnVlO1xuICB9XG4gICQ6IG1pbktleXdvcmRMZW5ndGggPSBrZXl3b3JkLmluY2x1ZGVzKFwiOlwiKSA/IDQgOiAzO1xuICAkOiBpZiAoIWlzSW5pdGlhbGl6ZWQgJiYga2V5d29yZEZpbHRlci5sZW5ndGggPiAwKSB7XG4gICAgcHJldmlvdXNLZXl3b3JkTGVuZ3RoID0ga2V5d29yZEZpbHRlci5sZW5ndGg7XG4gICAgaXNJbml0aWFsaXplZCA9IHRydWU7XG4gIH1cbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwiZnJhbWVcIj5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1pY29uXCI+PGltZyBzcmM9XCJpY29ucy9zZWFyY2gucG5nXCIgLz48L2Rpdj5cbiAgPGlucHV0XG4gICAgYmluZDp2YWx1ZT17a2V5d29yZH1cbiAgICBvbjppbnB1dD17Y2hlY2tLZXl3b3JkQ2hhbmdlZH1cbiAgICB0eXBlPVwidGV4dFwiXG4gICAgY2xhc3M9XCJ0ZXh0XCJcbiAgICBjbGFzczp0ZXh0LWFjdGl2ZT17a2V5d29yZC5sZW5ndGggPj0gbWluS2V5d29yZExlbmd0aH1cbiAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBieSBldmVudCB0aXRsZSBvciB2ZW51ZVwiXG4gIC8+XG48L2Rpdj5cblxuPHN0eWxlPlxuICAuZnJhbWUge1xuICAgIC0tc2VhcmNoYm94LWh0OiAzM3B4O1xuICAgIGhlaWdodDogdmFyKC0tc2VhcmNoYm94LWh0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmMGYxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxuICAuZnJhbWUgLnNlYXJjaC1pY29uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICB9XG4gIC5mcmFtZSAuc2VhcmNoLWljb24gaW1nIHtcbiAgICBoZWlnaHQ6IDE1cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICAuZnJhbWUgLnRleHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBtYXJnaW46IDAgNXB4IDAgMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGNvbG9yOiBncmF5O1xuICB9XG4gIC5mcmFtZSAudGV4dC1hY3RpdmUge1xuICAgIGNvbG9yOiBibGFjaztcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlciB9IGZyb20gXCJzdmVsdGVcIjtcblxuICBpbXBvcnQgeyBnZXRFdmVudEJyYW5kc0Zyb21EQiB9IGZyb20gXCIuLi9FdmVudEVkaXRvci9pbmRleFwiO1xuICBpbXBvcnQgeyBhcHBlbmQgfSBmcm9tIFwicmFtZGEvc3JjXCI7XG5cbiAgZXhwb3J0IGxldCBicmFuZHNGaWx0ZXIgPSBbXTtcblxuICBsZXQgYnJhbmRzID0gZ2V0RXZlbnRCcmFuZHNGcm9tREIoKTtcblxuICBjb25zdCBkaXNwYXRjaCA9IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlcigpO1xuXG4gIGNvbnN0IHRvZ2dsZUJyYW5kc0ZpbHRlcmVkID0gKGJyYW5kKSA9PiB7XG4gICAgYnJhbmRzRmlsdGVyID0gYnJhbmRzRmlsdGVyLmluY2x1ZGVzKGJyYW5kLmlkKVxuICAgICAgPyBicmFuZHNGaWx0ZXIuZmlsdGVyKChpZCkgPT4gaWQgIT09IGJyYW5kLmlkKVxuICAgICAgOiBhcHBlbmQoYnJhbmQuaWQsIGJyYW5kc0ZpbHRlcik7XG4gICAgY29uc29sZS5sb2coYnJhbmRzRmlsdGVyKTtcbiAgfTtcblxuICBjb25zdCByZXF1ZXN0SGlnaGxpZ2h0QnJhbmQgPSAoYnJhbmQpID0+IHtcbiAgICBkaXNwYXRjaChcImhpZ2hsaWdodEJyYW5kUmVxdWVzdGVkXCIsIGJyYW5kKTtcbiAgfTtcbiAgY29uc3QgcmVxdWVzdFVuaGlnaGxpZ2h0QnJhbmQgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goXCJoaWdobGlnaHRCcmFuZFJlcXVlc3RlZFwiKTtcbiAgfTtcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4gIC5mcmFtZSB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nOiAxcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuICAuZnJhbWUgLmJyYW5kLWl0ZW0ge1xuICAgIGhlaWdodDogMzBweDtcbiAgICB3aWR0aDogMjhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZWQ7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIG1hcmdpbjogMHB4IDJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC5mcmFtZSAuaXNOb3RTZWxlY3RlZCB7XG4gICAgYmFja2dyb3VuZDogYmxhY2s7XG4gIH1cbiAgLmZyYW1lIC5pc1NlbGVjdGVkIHtcbiAgICBiYWNrZ3JvdW5kOiB5ZWxsb3c7XG4gIH1cbjwvc3R5bGU+XG5cbjxkaXYgY2xhc3M9XCJmcmFtZVwiPlxuICB7I2VhY2ggYnJhbmRzIGFzIGJyYW5kfVxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYnJhbmQtaXRlbSB7YnJhbmRzRmlsdGVyLmluY2x1ZGVzKGJyYW5kLmlkKSA/ICdpc1NlbGVjdGVkJyA6ICdpc05vdFNlbGVjdGVkJ31cIlxuICAgICAgb246bW91c2VlbnRlcj17KCkgPT4gcmVxdWVzdEhpZ2hsaWdodEJyYW5kKGJyYW5kKX1cbiAgICAgIG9uOm1vdXNlbGVhdmU9e3JlcXVlc3RVbmhpZ2hsaWdodEJyYW5kfVxuICAgICAgb246Y2xpY2s9eygpID0+IHRvZ2dsZUJyYW5kc0ZpbHRlcmVkKGJyYW5kKX1cbiAgICAgIHRpdGxlPVwie2JyYW5kLm93bmVyfSAtIHticmFuZFticmFuZC5wcF19XCI+XG4gICAgICB7YnJhbmRbYnJhbmQucHBdfTxiciAvPlxuICAgIDwvZGl2PlxuICB7L2VhY2h9XG48L2Rpdj5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCBDYXRlZ29yaWVzRmlsdGVyIGZyb20gXCIuL0NhdGVnb3JpZXNGaWx0ZXIuc3ZlbHRlXCI7XG4gIGltcG9ydCBLZXl3b3JkRmlsdGVyIGZyb20gXCIuL0tleXdvcmRGaWx0ZXIuc3ZlbHRlXCI7XG4gIGltcG9ydCBCcmFuZHNGaWx0ZXIgZnJvbSBcIi4vQnJhbmRzRmlsdGVyLnN2ZWx0ZVwiO1xuXG4gIGltcG9ydCB7IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlciB9IGZyb20gXCJzdmVsdGVcIjtcblxuICBpbXBvcnQgeyBwcmVwZW5kLCBjbG9uZSwgcmVtb3ZlIH0gZnJvbSBcInJhbWRhL3NyY1wiO1xuXG4gIGltcG9ydCB7IHVzZXIgfSBmcm9tIFwiLi4vLi4vc3RvcmVzXCI7XG5cbiAgZXhwb3J0IGxldCBpc0V2ZW50c1NpZGVwYW5lT247XG4gIGV4cG9ydCBsZXQgZHNhRmlsdGVyQWN0aXZlID0gZmFsc2U7XG4gIGV4cG9ydCBsZXQgZHNhRmlsdGVyID0gW107XG4gIGV4cG9ydCBsZXQgY2F0ZWdvcmllc0luRGF0YXNldDtcbiAgZXhwb3J0IGxldCBjYXRlZ29yaWVzRmlsdGVyO1xuICBleHBvcnQgbGV0IGJyYW5kc0ZpbHRlcjtcbiAgZXhwb3J0IGxldCBoaWdobGlnaHRlZEJyYW5kO1xuICBleHBvcnQgbGV0IGtleXdvcmRGaWx0ZXI7XG4gIGV4cG9ydCBsZXQgaXNOZXdzRmlsdGVyO1xuICBleHBvcnQgbGV0IGlzVmFjYW5jeUZpbHRlciA9IGZhbHNlXG4gIGV4cG9ydCBsZXQgaXNGb2xsb3dlZEZpbHRlcjtcbiAgZXhwb3J0IGxldCBpc0dyYW50ZWRGaWx0ZXI7XG4gIGV4cG9ydCBsZXQgZHNhSG92ZXJlZDtcbiAgZXhwb3J0IGxldCBkc2FTZWxlY3RlZCA9IFtdO1xuXG4gIGNvbnN0IGRpc3BhdGNoID0gY3JlYXRlRXZlbnREaXNwYXRjaGVyKCk7XG4gIGNvbnN0IHRvZ2dsZURzYUZpbHRlckFjdGl2ZSA9ICgpID0+IHtcbiAgICBkc2FGaWx0ZXJBY3RpdmUgPSAhZHNhRmlsdGVyQWN0aXZlO1xuICB9O1xuICBjb25zdCByZXF1ZXN0VG9nZ2xlRHNhRmlsdGVyU2hvd24gPSAoKSA9PiB7XG4gICAgaWYgKGRzYUZpbHRlckFjdGl2ZSkgZGlzcGF0Y2goXCJ0b2dnbGVEc2FGaWx0ZXJTaG93blJlcXVlc3RlZFwiKTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlRHNhSG92ZXJlZCA9IChkc2EpID0+IHtcbiAgICBkc2FIb3ZlcmVkID0gZHNhO1xuICB9O1xuICBjb25zdCBoYW5kbGVEc2FVbmhvdmVyZWQgPSAoKSA9PiB7XG4gICAgZHNhSG92ZXJlZCA9IG51bGw7XG4gIH07XG4gIGNvbnN0IHRvZ2dsZURzYVNlbGVjdGVkID0gKGRzYSkgPT4ge1xuICAgIGRzYVNlbGVjdGVkID0gZHNhU2VsZWN0ZWQuaW5jbHVkZXMoZHNhKVxuICAgICAgPyBkc2FTZWxlY3RlZC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0gIT09IGRzYSlcbiAgICAgIDogcHJlcGVuZChkc2EsIGRzYVNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3QgdG9nZ2xlTmV3c0ZpbHRlciA9ICgpID0+IHtcbiAgICBpc05ld3NGaWx0ZXIgPSAhaXNOZXdzRmlsdGVyO1xuICB9O1xuICBjb25zdCB0b2dnbGVJc0ZvbGxvd2VkRmlsdGVyID0gKCkgPT4ge1xuICAgIGlzRm9sbG93ZWRGaWx0ZXIgPSAhaXNGb2xsb3dlZEZpbHRlcjtcbiAgfTtcbiAgY29uc3QgdG9nZ2xlSXNHcmFudGVkRmlsdGVyID0gKCkgPT4ge1xuICAgIGlzR3JhbnRlZEZpbHRlciA9ICFpc0dyYW50ZWRGaWx0ZXI7XG4gIH07XG4gIGNvbnN0IHRvZ2dsZVZhY2FuY3lGaWx0ZXIgPSAoKSA9PiB7XG4gICAgaXNWYWNhbmN5RmlsdGVyID0gIWlzVmFjYW5jeUZpbHRlclxuICB9XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuICAuZnJhbWUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgLyogbWFyZ2luOiAwIDAgNXB4O1xuICAgIHBhZGRpbmc6IDAgMCA1cHg7ICovXG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMHZ3IC0gMjBweCk7XG4gIH1cbiAgLmZyYW1lIC5jYXRlZ29yaWVzLWFuZC1rZXl3b3JkLWZyYW1lIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG4gIC5mcmFtZSAuY2F0ZWdvcmllcy1hbmQta2V5d29yZC1mcmFtZSAuZnVsbC13aWR0aCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDEwcHggMCAwO1xuICB9XG4gIC5mcmFtZSAuY2F0ZWdvcmllcy1hbmQta2V5d29yZC1mcmFtZSAua2V5d29yZC1maWx0ZXItZnJhbWUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtaW4td2lkdGg6IDMwMHB4O1xuICAgIG1hcmdpbjogMCAzcHggMCAwO1xuICAgIGZsZXg6IDE7XG4gIH1cbiAgLmZyYW1lIC5jYXRlZ29yaWVzLWFuZC1rZXl3b3JkLWZyYW1lIC5rZXl3b3JkLWZpbHRlci1mcmFtZSAuaWNvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMzNweDtcbiAgICB3aWR0aDogMzNweDtcbiAgICBtYXJnaW46IDAgM3B4IDAgMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzNiwgMjQwLCAyNDAsIDEpO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgfVxuICAuZnJhbWUgLmNhdGVnb3JpZXMtYW5kLWtleXdvcmQtZnJhbWUgLmtleXdvcmQtZmlsdGVyLWZyYW1lIC5pY29uIGltZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMjJweDtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgLmZyYW1lIC5jYXRlZ29yaWVzLWFuZC1rZXl3b3JkLWZyYW1lIC5jYXRlZ29yaWVzLWZpbHRlci1mcmFtZSB7XG4gICAgZmxleDogMTtcbiAgfVxuICAuZnJhbWUgLmRzYS1maWx0ZXItZnJhbWUge1xuICAgIGZsZXg6IDE7XG4gICAgbWFyZ2luOiAxMHB4IDAgMDtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VjZjBmMTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIC5mcmFtZSAuZHNhLWZpbHRlci1mcmFtZSAuZHNhLWZpbHRlci1hY3Rpb24tYnV0dG9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuICAuZnJhbWUgLmRzYS1maWx0ZXItZnJhbWUgLmRzYS1maWx0ZXItYWN0aW9uLWJ1dHRvbnMgLmJ1dHRvbiB7XG4gICAgaGVpZ2h0OiAzNXB4O1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHdoaXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDNweDtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWFjdGlvbi1idXR0b25zIC5idXR0b24tLWluYWN0aXZlIHtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgb3BhY2l0eTogMC41O1xuICB9XG4gIC5mcmFtZSAuZHNhLWZpbHRlci1mcmFtZSAuZHNhLWZpbHRlci1hY3Rpb24tYnV0dG9ucyAuYnV0dG9uIGltZyB7XG4gICAgaGVpZ2h0OiAyNXB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIHtcbiAgICBmbGV4OiAxO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTtcbiAgICBwYWRkaW5nOiAxcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBvdmVyZmxvdy14OiBzY3JvbGw7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsLS1pbmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgfVxuICAuZnJhbWUgLmRzYS1maWx0ZXItZnJhbWUgLmRzYS1maWx0ZXItY2Fyb3VzZWwgLmRzYSB7XG4gICAgZmxleDogMCAwIGF1dG87XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG1hcmdpbjogMXB4IDJweDtcbiAgICBwYWRkaW5nOiAxcHg7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGhlaWdodDogZml0LWNvbnRlbnQ7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIC5kc2EtLW0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1Mjg5ZDE7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIC5kc2EtLXcge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlYjVjNWM7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIC5kc2EtLXgge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkYWE1MjA7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIC5kc2EtLWhvdmVyZWQge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIC5mcmFtZSAuZHNhLWZpbHRlci1mcmFtZSAuZHNhLWZpbHRlci1jYXJvdXNlbCAuZHNhLS1zZWxlY3RlZCB7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgLmZyYW1lIC5kc2EtZmlsdGVyLWZyYW1lIC5kc2EtZmlsdGVyLWNhcm91c2VsIC50ZXh0IHtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgbWFyZ2luOiAwIDVweDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICBvcGFjaXR5OiAwLjY7XG4gIH1cbiAgLmZyYW1lIC5icmFuZC1maWx0ZXJzLWZyYW1lIHtcbiAgfVxuPC9zdHlsZT5cblxuPGRpdiBjbGFzcz1cImZyYW1lXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXRlZ29yaWVzLWFuZC1rZXl3b3JkLWZyYW1lXCI+XG4gICAgPGRpdiBjbGFzcz1cImtleXdvcmQtZmlsdGVyLWZyYW1lIHshaXNFdmVudHNTaWRlcGFuZU9uID8gJ2Z1bGwtd2lkdGgnIDogJyd9XCI+XG4gICAgICB7I2lmICR1c2VyLnJvbGUgIT09ICdndWVzdCd9XG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImljb25cIiBvbjpjbGljaz17dG9nZ2xlTmV3c0ZpbHRlcn0+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgc3JjPXtpc05ld3NGaWx0ZXIgPyAnaWNvbnMvbmV3cy1hY3RpdmUucG5nJyA6ICdpY29ucy9uZXdzLnBuZyd9IC8+XG4gICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIiBvbjpjbGljaz17dG9nZ2xlSXNGb2xsb3dlZEZpbHRlcn0+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgc3JjPXtpc0ZvbGxvd2VkRmlsdGVyID8gJ2ljb25zL2ZvbGxvd2luZy5wbmcnIDogJ2ljb25zL2ZvbGxvdy5wbmcnfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIiBvbjpjbGljaz17dG9nZ2xlSXNHcmFudGVkRmlsdGVyfT5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzcmM9e2lzR3JhbnRlZEZpbHRlciA/ICdpY29ucy9pc2dyYW50ZWQucG5nJyA6ICdpY29ucy9ncmFudGVkLnBuZyd9IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgey9pZn1cbiAgICAgIDxLZXl3b3JkRmlsdGVyIGJpbmQ6a2V5d29yZEZpbHRlciAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY2F0ZWdvcmllcy1maWx0ZXItZnJhbWUgeyFpc0V2ZW50c1NpZGVwYW5lT24gPyAnZnVsbC13aWR0aCcgOiAnJ31cIj5cbiAgICAgIDxDYXRlZ29yaWVzRmlsdGVyIHtjYXRlZ29yaWVzSW5EYXRhc2V0fSBiaW5kOmNhdGVnb3JpZXNGaWx0ZXIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkc2EtZmlsdGVyLWZyYW1lXCI+XG4gICAgPGRpdiBjbGFzcz1cImRzYS1maWx0ZXItYWN0aW9uLWJ1dHRvbnNcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJidXR0b25cIlxuICAgICAgICBvbjpjbGljaz17dG9nZ2xlVmFjYW5jeUZpbHRlcn1cbiAgICAgICAgdGl0bGU9XCJUb2dnbGUgdmFjYW5jeSBmaWx0ZXJcIj5cbiAgICAgICAgPGltZyBzcmM9XCJpY29ucy9oaXJpbmd7aXNWYWNhbmN5RmlsdGVyID8gJy0tYWN0aXZlJyA6ICcnfS5wbmdcIiBhbHQ9XCJcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYnV0dG9uXCJcbiAgICAgICAgb246Y2xpY2s9e3RvZ2dsZURzYUZpbHRlckFjdGl2ZX1cbiAgICAgICAgdGl0bGU9XCJUb2dnbGUgcHJvZ3JhbSBmaWx0ZXIgYWN0aXZlXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiL2ljb25zL3N3aXRjaF97ZHNhRmlsdGVyQWN0aXZlID8gJ29uJyA6ICdvZmYnfS5wbmdcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYnV0dG9uIHshZHNhRmlsdGVyQWN0aXZlID8gJ2J1dHRvbi0taW5hY3RpdmUnIDogJyd9XCJcbiAgICAgICAgb246Y2xpY2s9e3JlcXVlc3RUb2dnbGVEc2FGaWx0ZXJTaG93bn1cbiAgICAgICAgdGl0bGU9XCJPcGVuIHByb2dyYW0gcGlja2VyXCI+XG4gICAgICAgIDxpbWcgc3JjPVwiaWNvbnMvZXF1aWxpemVye2RzYUZpbHRlckFjdGl2ZSA/ICctLWFjdGl2ZScgOiAnJ30ucG5nXCIgYWx0PVwiXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZHNhLWZpbHRlci1jYXJvdXNlbCB7IWRzYUZpbHRlckFjdGl2ZSA/ICdkc2EtZmlsdGVyLWNhcm91c2VsLS1pbmFjdGl2ZScgOiAnJ31cIj5cbiAgICAgIHsjaWYgZHNhRmlsdGVyQWN0aXZlICYmIGRzYUZpbHRlci5sZW5ndGggPiAwfVxuICAgICAgICB7I2VhY2ggZHNhRmlsdGVyIGFzIGRzYX1cbiAgICAgICAgICB7I2lmIGlzRXZlbnRzU2lkZXBhbmVPbn1cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJkc2FcIlxuICAgICAgICAgICAgICBjbGFzczpkc2EtLW09e2RzYS5pbmNsdWRlcygnLW0tJyl9XG4gICAgICAgICAgICAgIGNsYXNzOmRzYS0tdz17ZHNhLmluY2x1ZGVzKCctdy0nKX1cbiAgICAgICAgICAgICAgY2xhc3M6ZHNhLS14PXtkc2EuaW5jbHVkZXMoJy14LScpfVxuICAgICAgICAgICAgICBjbGFzczpkc2EtLWhvdmVyZWQ9e2RzYSA9PT0gZHNhSG92ZXJlZH1cbiAgICAgICAgICAgICAgY2xhc3M6ZHNhLS1zZWxlY3RlZD17ZHNhU2VsZWN0ZWQuaW5jbHVkZXMoZHNhKX1cbiAgICAgICAgICAgICAgb246bW91c2VlbnRlcj17KCkgPT4gaGFuZGxlRHNhSG92ZXJlZChkc2EpfVxuICAgICAgICAgICAgICBvbjptb3VzZWxlYXZlPXtoYW5kbGVEc2FVbmhvdmVyZWR9XG4gICAgICAgICAgICAgIG9uOmNsaWNrPXsoKSA9PiB0b2dnbGVEc2FTZWxlY3RlZChkc2EpfT5cbiAgICAgICAgICAgICAge2RzYVxuICAgICAgICAgICAgICAgIC50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoJy1NJywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoJy1XJywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoJy1YJywgJycpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgezplbHNlfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImRzYVwiXG4gICAgICAgICAgICAgIGNsYXNzOmRzYS0tbT17ZHNhLmluY2x1ZGVzKCctbS0nKX1cbiAgICAgICAgICAgICAgY2xhc3M6ZHNhLS13PXtkc2EuaW5jbHVkZXMoJy13LScpfVxuICAgICAgICAgICAgICBjbGFzczpkc2EtLXg9e2RzYS5pbmNsdWRlcygnLXgtJyl9XG4gICAgICAgICAgICAgIGNsYXNzOmRzYS0taG92ZXJlZD17ZHNhID09PSBkc2FIb3ZlcmVkfVxuICAgICAgICAgICAgICBjbGFzczpkc2EtLXNlbGVjdGVkPXtkc2FTZWxlY3RlZC5pbmNsdWRlcyhkc2EpfVxuICAgICAgICAgICAgICBvbjpjbGljaz17KCkgPT4gdG9nZ2xlRHNhU2VsZWN0ZWQoZHNhKX0+XG4gICAgICAgICAgICAgIHtkc2FcbiAgICAgICAgICAgICAgICAudG9VcHBlckNhc2UoKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCctTScsICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCctVycsICcnKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKCctWCcsICcnKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHsvaWZ9XG4gICAgICAgIHsvZWFjaH1cbiAgICAgIHs6ZWxzZX1cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5GaWx0ZXIgYnkgZGlzY2lwbGluZXMgaW4gcHJvZ3JhbTwvZGl2PlxuICAgICAgey9pZn1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDwhLS0gPGRpdiBjbGFzcz1cImJyYW5kLWZpbHRlcnMtZnJhbWVcIj5cbiAgICA8QnJhbmRzRmlsdGVyIGJpbmQ6aGlnaGxpZ2h0ZWRCcmFuZCBiaW5kOmJyYW5kc0ZpbHRlciAvPlxuICA8L2Rpdj4gLS0+XG48L2Rpdj5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7IGdldERheU5hbWUsIGNoZWNrSXNTbG90V2Vla2VuZCB9IGZyb20gXCIuL0RheXNPZldlZWtcIjtcblxuICBleHBvcnQgbGV0IG1vbnRoRGF5c1Nsb3RzO1xuICBleHBvcnQgbGV0IGZpcnN0RGF5T2ZXZWVrO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbiAgdHIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIH1cbiAgdGgge1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgcGFkZGluZzogMHB4O1xuICB9XG4gIC5pc1dlZWtlbmQge1xuICAgIGNvbG9yOiBibGFjaztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyYXk7XG4gIH1cbiAgLm51bGwge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICB9XG4gIC5zZXBhcmF0b3Ige1xuICAgIHdpZHRoOiAxcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIH1cbjwvc3R5bGU+XG5cbjx0cj5cbiAgPHRoIGNsYXNzPVwibnVsbFwiIC8+XG4gIHsjZWFjaCBtb250aERheXNTbG90cyBhcyBzbG90fVxuICAgIHsjaWYgc2xvdC53ZWVrRGF5ID09PSBmaXJzdERheU9mV2Vla31cbiAgICAgIDx0aCBjbGFzczpzZXBhcmF0b3I9e3RydWV9IC8+XG4gICAgey9pZn1cbiAgICA8IS0tIDx0aCBrZXk9e2B3ZWVrZGF5LSR7c2xvdC5pZH1gfSBjbGFzczpib2xkZXI9e3Nsb3Qud2Vla0RheU5vID09PSAwfT5cbiAgICAgIHtnZXREYXlOYW1lKGRheSl9XG4gICAgPC90aD4gLS0+XG4gICAgPHRoIGNsYXNzOmlzV2Vla2VuZD17Y2hlY2tJc1Nsb3RXZWVrZW5kKHNsb3QpfT5cbiAgICAgIHtnZXREYXlOYW1lKHNsb3QpfVxuICAgIDwvdGg+XG4gIHsvZWFjaH1cbjwvdHI+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQge1xuICAgIGNoZWNrSWZEYXlJc1dpdGhpbkRhdGVSYW5nZSxcbiAgICBjaGVja0lmRGF5aXNUb2RheSxcbiAgICBnZXROb09mSXRlbXNGb3JEYXksXG4gIH0gZnJvbSBcIi4vRGF5XCI7XG5cbiAgZXhwb3J0IGxldCBkYXk7XG4gIGV4cG9ydCBsZXQgdG9kYXk7XG4gIGV4cG9ydCBsZXQgaXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgZHNhSG92ZXJlZEl0ZW1zQnlEYXRlO1xuICBleHBvcnQgbGV0IGxpc3RlZEl0ZW1zQnlEYXRlO1xuICBleHBvcnQgbGV0IHNob3J0bGlzdGVkSXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgaXNFdmVuWWVhcjtcbiAgZXhwb3J0IGxldCBoaWdobGlnaHRlZERhdGVSYW5nZTtcbiAgZXhwb3J0IGxldCBzZWxlY3RlZFllYXJEYXRlUmFuZ2U7XG4gIGV4cG9ydCBsZXQgaG92ZXJlZERhdGU7XG4gIGxldCBpc0hvdmVyZWQgPSBmYWxzZTtcblxuICBjb25zdCB1cGRhdGVTZWxlY3RlZERhdGVSYW5nZSA9ICgpID0+IHtcbiAgICBzZWxlY3RlZFllYXJEYXRlUmFuZ2Uuc3RhcnQgPT09IHNlbGVjdGVkWWVhckRhdGVSYW5nZS5lbmRcbiAgICAgID8gZGF5LnllYXJEYXkgPj0gc2VsZWN0ZWRZZWFyRGF0ZVJhbmdlLnN0YXJ0XG4gICAgICAgID8gKHNlbGVjdGVkWWVhckRhdGVSYW5nZS5lbmQgPSBkYXkueWVhckRheSlcbiAgICAgICAgOiAoc2VsZWN0ZWRZZWFyRGF0ZVJhbmdlLnN0YXJ0ID0gZGF5LnllYXJEYXkpXG4gICAgICA6IChzZWxlY3RlZFllYXJEYXRlUmFuZ2Uuc3RhcnQgPSBzZWxlY3RlZFllYXJEYXRlUmFuZ2UuZW5kID0gZGF5LnllYXJEYXkpO1xuICB9O1xuICBjb25zdCB0b2dnbGVEYXlJc0hvdmVyZWQgPSAoKSA9PiB7XG4gICAgaXNIb3ZlcmVkID0gIWlzSG92ZXJlZDtcbiAgICBob3ZlcmVkRGF0ZSA9IGlzSG92ZXJlZCA/IGRheS55ZWFyRGF5IDogdW5kZWZpbmVkO1xuICB9O1xuXG4gICQ6IGlzV2l0aGluU2VsZWN0ZWREYXRlUmFuZ2UgPSBjaGVja0lmRGF5SXNXaXRoaW5EYXRlUmFuZ2UoXG4gICAgZGF5LFxuICAgIHNlbGVjdGVkWWVhckRhdGVSYW5nZVxuICApO1xuICAkOiBpc1RvZGF5ID0gZGF5Lm1vbnRoLnllYXIgPyBjaGVja0lmRGF5aXNUb2RheShkYXksIHRvZGF5KSA6IGZhbHNlO1xuICAvLyoqKipcbiAgJDogaXNEU0FIaWdobGlnaHRlZCA9IGdldE5vT2ZJdGVtc0ZvckRheShkYXksIGRzYUhvdmVyZWRJdGVtc0J5RGF0ZSkgPiAwO1xuICAvLyoqKipcbiAgJDogaXNIaWdobGlnaHRlZCA9XG4gICAgaXNIb3ZlcmVkIHx8IGNoZWNrSWZEYXlJc1dpdGhpbkRhdGVSYW5nZShkYXksIGhpZ2hsaWdodGVkRGF0ZVJhbmdlKTtcbiAgLy8gfHwgZ2V0Tm9PZkl0ZW1zRm9yRGF5KGRheSwgc2hvcnRsaXN0ZWRJdGVtc0J5RGF0ZSkgPiAwO1xuICAkOiBub09mRXZlbnRzID0gZ2V0Tm9PZkl0ZW1zRm9yRGF5KGRheSwgaXRlbXNCeURhdGUpO1xuICAkOiBub09mTGlzdGVkRXZlbnRzID0gZ2V0Tm9PZkl0ZW1zRm9yRGF5KGRheSwgbGlzdGVkSXRlbXNCeURhdGUpO1xuPC9zY3JpcHQ+XG5cbjx0ZFxuICBvbjpjbGljaz17dXBkYXRlU2VsZWN0ZWREYXRlUmFuZ2V9XG4gIG9uOm1vdXNlZW50ZXI9e3RvZ2dsZURheUlzSG92ZXJlZH1cbiAgb246bW91c2VsZWF2ZT17dG9nZ2xlRGF5SXNIb3ZlcmVkfVxuICBjbGFzczppc0V2ZW5ZZWFyXG4gIGNsYXNzOmlzSGlnaGxpZ2h0ZWRcbiAgY2xhc3M6aXNEU0FIaWdobGlnaHRlZD17IWlzSGlnaGxpZ2h0ZWQgJiYgaXNEU0FIaWdobGlnaHRlZH1cbiAgY2xhc3M6aXNXaXRoaW5TZWxlY3RlZERhdGVSYW5nZVxuICBjbGFzczpoYXNFdmVudHM9eyFpc0hpZ2hsaWdodGVkICYmXG4gICAgIWlzRFNBSGlnaGxpZ2h0ZWQgJiZcbiAgICAhaXNUb2RheSAmJlxuICAgIG5vT2ZFdmVudHMgPiAwfVxuICBjbGFzczpoYXNFdmVudHNBbmRJc1dpdGhpblNlbGVjdGVkRGF0ZVJhbmdlPXshaXNIaWdobGlnaHRlZCAmJlxuICAgICFpc0RTQUhpZ2hsaWdodGVkICYmXG4gICAgIWlzVG9kYXkgJiZcbiAgICBub09mRXZlbnRzID4gMCAmJlxuICAgIGlzV2l0aGluU2VsZWN0ZWREYXRlUmFuZ2V9XG4gIGNsYXNzOmhhc0xpc3RlZEV2ZW50cz17IWlzSGlnaGxpZ2h0ZWQgJiZcbiAgICAhaXNEU0FIaWdobGlnaHRlZCAmJlxuICAgICFpc1RvZGF5ICYmXG4gICAgbm9PZkxpc3RlZEV2ZW50cyA+IDB9XG4gIGNsYXNzOmhhc0xpc3RlZEV2ZW50c0FuZElzV2l0aGluU2VsZWN0ZWREYXRlUmFuZ2U9eyFpc0hpZ2hsaWdodGVkICYmXG4gICAgIWlzRFNBSGlnaGxpZ2h0ZWQgJiZcbiAgICAhaXNUb2RheSAmJlxuICAgIG5vT2ZMaXN0ZWRFdmVudHMgPiAwICYmXG4gICAgaXNXaXRoaW5TZWxlY3RlZERhdGVSYW5nZX1cbiAgY2xhc3M9e2lzVG9kYXkgPyAoaXNFdmVuWWVhciA/IFwiaXNUb2RheUluRXZlblllYXJcIiA6IFwiaXNUb2RheVwiKSA6IFwiXCJ9XG4+XG4gIHtkYXkubW9udGhEYXl9XG4gIHsjaWYgaXNIb3ZlcmVkICYmIG5vT2ZFdmVudHMgPiAwfVxuICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcHRleHRcIj5cbiAgICAgIHtgJHtkYXkubW9udGhEYXl9LyR7ZGF5Lm1vbnRoLm1vbnRoTm99LyR7ZGF5Lm1vbnRoLnllYXJ9YH08YnIgLz5cbiAgICAgIHsjaWYgaXNXaXRoaW5TZWxlY3RlZERhdGVSYW5nZX17bm9PZkxpc3RlZEV2ZW50c30vey9pZn17bm9PZkV2ZW50c31cbiAgICAgIGV2ZW50e25vT2ZFdmVudHMgPiAxID8gXCJzXCIgOiBcIlwifTwvc3BhblxuICAgID5cbiAgey9pZn1cbjwvdGQ+XG5cbjxzdHlsZT5cbiAgdGQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTRweDtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGhlaWdodDogMTJweDtcbiAgICAvKiBjb2xvcjogYmxhY2s7ICovXG4gICAgY29sb3I6IGRhcmtzbGF0ZWdyZXk7XG4gICAgYm9yZGVyOiAxcHggZG90dGVkIGxpZ2h0Z3JheTtcbiAgICAvKiBwYWRkaW5nOiAwcHggMXB4OyAqL1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAwcHg7XG4gIH1cblxuICAuaXNFdmVuWWVhciB7XG4gICAgY29sb3I6IGRhcmtzbGF0ZWdyZXk7XG4gIH1cblxuICAuaXNXaXRoaW5TZWxlY3RlZERhdGVSYW5nZSB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjgsIDEyOCwgMTI4LCAwLjYxNik7XG4gICAgLyogYm9yZGVyOiAxcHggc29saWQgZGFya3NsYXRlZ3JleTsgKi9cbiAgICBjb2xvcjogd2hpdGVzbW9rZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgfVxuXG4gIC5pc1RvZGF5IHtcbiAgICBiYWNrZ3JvdW5kOiBzbGF0ZWdyZXk7XG4gICAgY29sb3I6IHdoaXRlc21va2U7XG4gICAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovXG4gIH1cblxuICAuaXNUb2RheUluRXZlblllYXIge1xuICAgIGJhY2tncm91bmQ6IHNsYXRlZ3JleTtcbiAgICBjb2xvcjogd2hpdGVzbW9rZTtcbiAgICAvKiBmb250LXdlaWdodDogYm9sZGVyOyAqL1xuICB9XG5cbiAgLmlzSGlnaGxpZ2h0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlMjJjM2I7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIC8qIGZvbnQtd2VpZ2h0OiBib2xkOyAqL1xuICB9XG5cbiAgLmlzRFNBSGlnaGxpZ2h0ZWQge1xuICAgIGJhY2tncm91bmQ6ICNlMjJjM2I2MztcbiAgICBjb2xvcjogd2hpdGU7XG4gIH1cblxuICAuaGFzRXZlbnRzIHtcbiAgICBiYWNrZ3JvdW5kOiAjNTQ1YWQyNjA7XG4gICAgLyogY29sb3I6IGRhcmtzbGF0ZWdyZXk7ICovXG4gICAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovXG4gICAgLyogYm9yZGVyOiAxcHggc29saWQgcmVkOyAqL1xuICB9XG5cbiAgLmhhc0V2ZW50c0FuZElzV2l0aGluU2VsZWN0ZWREYXRlUmFuZ2Uge1xuICAgIGJhY2tncm91bmQ6ICM1NDViZDI7XG4gICAgY29sb3I6IHdoaXRlO1xuICB9XG5cbiAgLmhhc0xpc3RlZEV2ZW50cyB7XG4gICAgYmFja2dyb3VuZDogI2Y1YTAyMDVkO1xuICAgIC8qIGNvbG9yOiBibGFjazsgKi9cbiAgICAvKiBmb250LXN0eWxlOiBpdGFsaWM7ICovXG4gICAgLyogZm9udC13ZWlnaHQ6IGJvbGQ7ICovXG4gICAgLyogYm9yZGVyOiAxcHggc29saWQgcmVkOyAqL1xuICB9XG5cbiAgLmhhc0xpc3RlZEV2ZW50c0FuZElzV2l0aGluU2VsZWN0ZWREYXRlUmFuZ2Uge1xuICAgIGJhY2tncm91bmQ6ICNmNWEwMjA7XG4gICAgY29sb3I6IHdoaXRlO1xuICB9XG5cbiAgLnRvb2x0aXB0ZXh0IHtcbiAgICB3aWR0aDogNzBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrc2xhdGVncmV5O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcGFkZGluZzogM3B4IDA7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuXG4gICAgLyogUG9zaXRpb24gdGhlIHRvb2x0aXAgdGV4dCAtIHNlZSBleGFtcGxlcyBiZWxvdyEgKi9cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMzVweDtcbiAgICBsZWZ0OiAtNjVweDtcbiAgICB6LWluZGV4OiAxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IHsgbWFrZU1vbnRoRGF5cyB9IGZyb20gXCIuL01vbnRoXCI7XG5cbiAgaW1wb3J0IERheSBmcm9tIFwiLi9EYXkuc3ZlbHRlXCI7XG5cbiAgZXhwb3J0IGxldCBtb250aDtcbiAgZXhwb3J0IGxldCBtb250aERheXNTbG90cztcbiAgZXhwb3J0IGxldCBmaXJzdERheU9mV2VlaztcbiAgZXhwb3J0IGxldCB0b2RheTtcbiAgZXhwb3J0IGxldCBpdGVtc0J5RGF0ZTtcbiAgZXhwb3J0IGxldCBkc2FIb3ZlcmVkSXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgbGlzdGVkSXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgc2hvcnRsaXN0ZWRJdGVtc0J5RGF0ZTtcbiAgZXhwb3J0IGxldCBpc0V2ZW5ZZWFyO1xuICBleHBvcnQgbGV0IGhpZ2hsaWdodGVkRGF0ZVJhbmdlO1xuICBleHBvcnQgbGV0IHNlbGVjdGVkWWVhckRhdGVSYW5nZTtcbiAgZXhwb3J0IGxldCBob3ZlcmVkRGF0ZTtcblxuICBjb25zdCBzZWxlY3RNb250aCA9ICgpID0+IHtcbiAgICBzZWxlY3RlZFllYXJEYXRlUmFuZ2Uuc3RhcnQgPSBtb250aC5maXJzdERheVllYXJEYXk7XG4gICAgc2VsZWN0ZWRZZWFyRGF0ZVJhbmdlLmVuZCA9IG1vbnRoLmxhc3REYXlZZWFyRGF5O1xuICB9O1xuXG4gICQ6IG1vbnRoRGF5cyA9IG1ha2VNb250aERheXMobW9udGgsIG1vbnRoRGF5c1Nsb3RzKTtcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4gIHRyIHtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gIH1cbiAgdGQge1xuICAgIHdpZHRoOiAxNHB4O1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbiAgICB0ZXh0LWFsaWduOiBlbmQ7XG4gICAgcGFkZGluZzogMHB4O1xuICB9XG4gIC5zZXBhcmF0b3Ige1xuICAgIHdpZHRoOiAxcHg7XG4gIH1cbiAgLm1vbnRoTmFtZSB7XG4gICAgY29sb3I6IGRhcmtzbGF0ZWdyZXk7XG4gICAgd2lkdGg6IDUwcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGxpZ2h0Z3JleTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgLmlzRXZlblllYXIge1xuICAgIGNvbG9yOiBkYXJrc2xhdGVncmV5O1xuICB9XG4gIC5ib2xkZXIge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG4gIH1cbjwvc3R5bGU+XG5cbjx0cj5cbiAgPHRkIGNsYXNzPVwiYm9sZGVyIG1vbnRoTmFtZVwiIGNsYXNzOmlzRXZlblllYXIgb246Y2xpY2s9e3NlbGVjdE1vbnRofT5cbiAgICB7bW9udGgubW9udGhZZWFyVGl0bGV9XG4gIDwvdGQ+XG4gIHsjZWFjaCBtb250aERheXMgYXMgZGF5fVxuICAgIHsjaWYgZGF5LndlZWtEYXkgPT09IGZpcnN0RGF5T2ZXZWVrfVxuICAgICAgPHRkIGNsYXNzOnNlcGFyYXRvcj17dHJ1ZX0gLz5cbiAgICB7L2lmfVxuICAgIHsjaWYgZGF5Lm1vbnRoRGF5fVxuICAgICAgPERheVxuICAgICAgICB7ZGF5fVxuICAgICAgICB7dG9kYXl9XG4gICAgICAgIHtpdGVtc0J5RGF0ZX1cbiAgICAgICAge2RzYUhvdmVyZWRJdGVtc0J5RGF0ZX1cbiAgICAgICAge2xpc3RlZEl0ZW1zQnlEYXRlfVxuICAgICAgICB7c2hvcnRsaXN0ZWRJdGVtc0J5RGF0ZX1cbiAgICAgICAge2lzRXZlblllYXJ9XG4gICAgICAgIHtoaWdobGlnaHRlZERhdGVSYW5nZX1cbiAgICAgICAgYmluZDpzZWxlY3RlZFllYXJEYXRlUmFuZ2VcbiAgICAgICAgYmluZDpob3ZlcmVkRGF0ZSAvPlxuICAgIHs6ZWxzZX1cbiAgICAgIDx0ZCAvPlxuICAgIHsvaWZ9XG4gIHsvZWFjaH1cbjwvdHI+XG4iLCI8c2NyaXB0PlxuICBpbXBvcnQgRGF5c09mV2VlayBmcm9tIFwiLi9EYXlzT2ZXZWVrLnN2ZWx0ZVwiO1xuICBpbXBvcnQgTW9udGggZnJvbSBcIi4vTW9udGguc3ZlbHRlXCI7XG5cbiAgaW1wb3J0IHtcbiAgICBtYWtlVG9kYXksXG4gICAgZ2V0V2Vla2VuZEluTldlZWtzLFxuICAgIG1ha2VNb250aHMsXG4gICAgbWFrZU1vbnRoRGF5c1Nsb3RzLFxuICB9IGZyb20gXCIuL2luZGV4XCI7XG5cbiAgbGV0IHRvZGF5ID0gbWFrZVRvZGF5KCk7XG4gIC8qIGNhbGVuZGFyIGRhdGEgKi9cbiAgZXhwb3J0IGxldCBpdGVtc0J5RGF0ZTtcbiAgZXhwb3J0IGxldCBkc2FIb3ZlcmVkSXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgbGlzdGVkSXRlbXNCeURhdGU7XG4gIGV4cG9ydCBsZXQgc2hvcnRsaXN0ZWRJdGVtc0J5RGF0ZTtcbiAgZXhwb3J0IGxldCBoaWdobGlnaHRlZERhdGVSYW5nZTtcbiAgZXhwb3J0IGxldCB5ZWFyID0gMjAyNzsgLy90b2RheS55ZWFyO1xuICBleHBvcnQgbGV0IHNlbGVjdGVkRGF0ZVJhbmdlO1xuICBleHBvcnQgbGV0IGhvdmVyZWREYXRlO1xuICAvKiByZW5kZXIgb3B0aW9ucyAqL1xuICBleHBvcnQgbGV0IGZpcnN0RGF5T2ZXZWVrID0gMTtcbiAgZXhwb3J0IGxldCBmb3JjZUZ1bGxXZWVrcyA9IGZhbHNlO1xuICBleHBvcnQgbGV0IHNob3dEYXlzT2ZXZWVrID0gdHJ1ZTtcbiAgY29uc3QgdG90YWxNb250aERheXNTbG90cyA9IGZvcmNlRnVsbFdlZWtzID8gNDIgOiAzNztcbiAgY29uc3QgbW9udGhEYXlzU2xvdHMgPSBtYWtlTW9udGhEYXlzU2xvdHMoXG4gICAgZmlyc3REYXlPZldlZWssXG4gICAgdG90YWxNb250aERheXNTbG90cyxcbiAgKTtcblxuICBjb25zdCBzZWxlY3RQcmV2aW91c1llYXIgPSAoKSA9PiB7XG4gICAgeWVhciA9IHllYXIgLSAxO1xuICB9O1xuICBjb25zdCBzZWxlY3ROZXh0WWVhciA9ICgpID0+IHtcbiAgICB5ZWFyID0geWVhciArIDE7XG4gIH07XG5cbiAgJDogc2VsZWN0ZWREYXRlUmFuZ2UgPSB7XG4gICAgLi4uc2VsZWN0ZWREYXRlUmFuZ2UsXG4gICAgW3llYXJdOlxuICAgICAgc2VsZWN0ZWREYXRlUmFuZ2UgJiYgc2VsZWN0ZWREYXRlUmFuZ2VbeWVhcl1cbiAgICAgICAgPyBzZWxlY3RlZERhdGVSYW5nZVt5ZWFyXVxuICAgICAgICA6IHllYXIgPT09IHRvZGF5LnllYXJcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgc3RhcnQ6IGdldFdlZWtlbmRJbk5XZWVrcyh0b2RheS5kYXRlLCAtMSksXG4gICAgICAgICAgICAgIGVuZDogZ2V0V2Vla2VuZEluTldlZWtzKHRvZGF5LmRhdGUsIDIpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBzdGFydDogMSxcbiAgICAgICAgICAgICAgZW5kOiAyMCxcbiAgICAgICAgICAgIH0sXG4gIH07XG4gICQ6IG1vbnRocyA9IG1ha2VNb250aHMoeWVhcik7XG4gICQ6IGlzRXZlblllYXIgPSAhKHllYXIgJSAyKTtcbjwvc2NyaXB0PlxuXG48ZGl2IGNsYXNzPVwibWFpblwiPlxuICA8ZGl2IGNsYXNzPVwic2Vhc29uLXBpY2tlclwiPlxuICAgIHsjaWYgeWVhciA+IDIwMjR9XG4gICAgICA8ZGl2IGNsYXNzPVwic2Vhc29uIHVuc2VsZWN0ZWRcIiBvbjpjbGljaz17c2VsZWN0UHJldmlvdXNZZWFyfT5cbiAgICAgICAge2Ake3llYXIgLSAxfSA8PGB9XG4gICAgICA8L2Rpdj5cbiAgICB7L2lmfVxuICAgIDxkaXYgY2xhc3M9XCJzZWFzb24gc2VsZWN0ZWRcIj57eWVhcn08L2Rpdj5cbiAgICB7I2lmIHllYXIgPCAyMDI3fVxuICAgICAgPGRpdiBjbGFzcz1cInNlYXNvbiB1bnNlbGVjdGVkXCIgb246Y2xpY2s9e3NlbGVjdE5leHRZZWFyfT5cbiAgICAgICAge2A+PiAke3llYXIgKyAxfWB9XG4gICAgICA8L2Rpdj5cbiAgICB7L2lmfVxuICA8L2Rpdj5cbiAgPHRhYmxlPlxuICAgIDx0aGVhZD5cbiAgICAgIHsjaWYgc2hvd0RheXNPZldlZWt9XG4gICAgICAgIDxEYXlzT2ZXZWVrIHttb250aERheXNTbG90c30ge2ZpcnN0RGF5T2ZXZWVrfSAvPlxuICAgICAgey9pZn1cbiAgICA8L3RoZWFkPlxuICAgIDx0Ym9keT5cbiAgICAgIHsjZWFjaCBtb250aHMgYXMgbW9udGh9XG4gICAgICAgIDxNb250aFxuICAgICAgICAgIHttb250aH1cbiAgICAgICAgICB7bW9udGhEYXlzU2xvdHN9XG4gICAgICAgICAge2ZpcnN0RGF5T2ZXZWVrfVxuICAgICAgICAgIHt0b2RheX1cbiAgICAgICAgICB7aXRlbXNCeURhdGV9XG4gICAgICAgICAge2RzYUhvdmVyZWRJdGVtc0J5RGF0ZX1cbiAgICAgICAgICB7bGlzdGVkSXRlbXNCeURhdGV9XG4gICAgICAgICAge3Nob3J0bGlzdGVkSXRlbXNCeURhdGV9XG4gICAgICAgICAge2lzRXZlblllYXJ9XG4gICAgICAgICAge2hpZ2hsaWdodGVkRGF0ZVJhbmdlfVxuICAgICAgICAgIGJpbmQ6c2VsZWN0ZWRZZWFyRGF0ZVJhbmdlPXtzZWxlY3RlZERhdGVSYW5nZVt5ZWFyXX1cbiAgICAgICAgICBiaW5kOmhvdmVyZWREYXRlXG4gICAgICAgIC8+XG4gICAgICB7L2VhY2h9XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbjwvZGl2PlxuXG48c3R5bGU+XG4gIDpyb290IHtcbiAgICAtLWNhbGVuZGFyLXdpZHRoOiA3MzlweDtcbiAgfVxuICAubWFpbiB7XG4gICAgd2lkdGg6IHZhcigtLWNhbGVuZGFyLXdpZHRoKTtcbiAgfVxuICAuc2Vhc29uLXBpY2tlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAycHggMDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxuICAuc2Vhc29uLXBpY2tlciAuc2Vhc29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdpZHRoOiA4MHB4O1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG4gIC5zZWFzb24tcGlja2VyIC51bnNlbGVjdGVkIHtcbiAgICBjb2xvcjogbGlnaHRzbGF0ZWdyYXk7XG4gIH1cbiAgLnNlYXNvbi1waWNrZXIgLnVuc2VsZWN0ZWQ6aG92ZXIge1xuICAgIGNvbG9yOiBkYXJrc2xhdGVncmV5O1xuICB9XG4gIC5zZWFzb24tcGlja2VyIC5zZWFzb24gLnVuc2VsZWN0ZWQ6aG92ZXIgLmlzSW5FdmVuWWVhciB7XG4gICAgY29sb3I6IGdvbGRlbnJvZDtcbiAgfVxuICAuc2Vhc29uLXBpY2tlciAuc2VsZWN0ZWQge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjU4YjIwO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICAvKiBmbGV4OiAxIDAgYXV0bzsgKi9cbiAgfVxuICAuc2Vhc29uLXBpY2tlciAuc2VsZWN0ZWQgLmlzSW5FdmVuWWVhciB7XG4gICAgY29sb3I6IGdvbGRlbnJvZDtcbiAgfVxuICB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgc2xhdGVncmF5O1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7IHRvRGF0ZSwgZ2V0RGF5T2ZZZWFyLCBmb3JtYXQsIGdldFdlZWtlbmRJbk5XZWVrcyB9IGZyb20gXCIuL2luZGV4XCI7XG5cbiAgLyogY2FsZW5kYXIgZGF0YSAqL1xuICAvLyBleHBvcnQgbGV0IGl0ZW1zQnlEYXRlO1xuICAvLyBleHBvcnQgbGV0IGxpc3RlZEl0ZW1zQnlEYXRlO1xuICAvLyBleHBvcnQgbGV0IGhpZ2hsaWdodGVkRGF0ZVJhbmdlO1xuICBsZXQgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICBleHBvcnQgbGV0IHllYXIgPSB0b2RheS5nZXRGdWxsWWVhcigpO1xuICBleHBvcnQgbGV0IHNlbGVjdGVkRGF0ZVJhbmdlID0geyBbeWVhcl06IHt9IH07XG4gIGNvbnNvbGUubG9nKHllYXIpO1xuICBsZXQgZGF0ZVJhbmdlID0ge1xuICAgIHN0YXJ0RGF0ZTogZ2V0V2Vla2VuZEluTldlZWtzKHRvZGF5LCAtMSksXG4gICAgZW5kRGF0ZTogZ2V0V2Vla2VuZEluTldlZWtzKHRvZGF5LCAyKSxcbiAgfTtcblxuICBjb25zdCBzdGFydERhdGVDaGFuZ2VkID0gKCkgPT4ge1xuICAgIGlmIChkYXRlUmFuZ2Uuc3RhcnREYXRlID4gZGF0ZVJhbmdlLmVuZERhdGUpXG4gICAgICBkYXRlUmFuZ2UuZW5kRGF0ZSA9IGRhdGVSYW5nZS5zdGFydERhdGU7XG4gICAgaWYgKGRhdGVSYW5nZS5zdGFydERhdGUuc3Vic3RyaW5nKDAsIDQpICE9PSB5ZWFyLnRvU3RyaW5nKCkpIHtcbiAgICAgIHllYXIgPSBkYXRlUmFuZ2Uuc3RhcnREYXRlLnN1YnN0cmluZygwLCA0KTtcbiAgICAgIGRhdGVSYW5nZS5lbmREYXRlID0gZGF0ZVJhbmdlLnN0YXJ0RGF0ZTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGVuZERhdGVDaGFuZ2VkID0gKCkgPT4ge1xuICAgIGlmIChkYXRlUmFuZ2UuZW5kRGF0ZSA8IGRhdGVSYW5nZS5zdGFydERhdGUpXG4gICAgICBkYXRlUmFuZ2Uuc3RhcnREYXRlID0gZGF0ZVJhbmdlLmVuZERhdGU7XG4gICAgaWYgKGRhdGVSYW5nZS5lbmREYXRlLnN1YnN0cmluZygwLCA0KSAhPT0geWVhci50b1N0cmluZygpKSB7XG4gICAgICB5ZWFyID0gZGF0ZVJhbmdlLmVuZERhdGUuc3Vic3RyaW5nKDAsIDQpO1xuICAgICAgZGF0ZVJhbmdlLnN0YXJ0RGF0ZSA9IGRhdGVSYW5nZS5lbmREYXRlO1xuICAgIH1cbiAgfTtcblxuICAkOiBpZiAoc2VsZWN0ZWREYXRlUmFuZ2VbeWVhcl0pXG4gICAgc2VsZWN0ZWREYXRlUmFuZ2VbeWVhcl0uc3RhcnQgPSBnZXREYXlPZlllYXIobmV3IERhdGUoZGF0ZVJhbmdlLnN0YXJ0RGF0ZSkpO1xuICAkOiBpZiAoc2VsZWN0ZWREYXRlUmFuZ2VbeWVhcl0pXG4gICAgc2VsZWN0ZWREYXRlUmFuZ2VbeWVhcl0uZW5kID0gZ2V0RGF5T2ZZZWFyKG5ldyBEYXRlKGRhdGVSYW5nZS5lbmREYXRlKSk7XG48L3NjcmlwdD5cblxuPGRpdiBjbGFzcz1cImRhdGVwaWNrZXJzLWZyYW1lXCI+XG4gIDxkaXYgY2xhc3M9XCJkYXRlcGlja2VyXCIgdGl0bGU9XCJzdGFydCBkYXRlXCI+XG4gICAgPGltZyBzcmM9XCJpY29ucy9zdGFydGRhdGUucG5nXCIgLz5cbiAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwiZGF0ZVwiXG4gICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICBtaW49XCIyMDIwLTAxLTAxXCJcbiAgICAgIG1heD1cIjIwMjctMTItMzFcIlxuICAgICAgYmluZDp2YWx1ZT17ZGF0ZVJhbmdlLnN0YXJ0RGF0ZX1cbiAgICAgIG9uOmlucHV0PXtzdGFydERhdGVDaGFuZ2VkfVxuICAgIC8+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlclwiIHRpdGxlPVwiZW5kIGRhdGVcIj5cbiAgICA8aW1nIHNyYz1cImljb25zL2VuZGRhdGUucG5nXCIgLz5cbiAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwiZGF0ZVwiXG4gICAgICB0eXBlPVwiZGF0ZVwiXG4gICAgICBtaW49XCIyMDIwLTAxLTAxXCJcbiAgICAgIG1heD1cIjIwMjctMTItMzFcIlxuICAgICAgYmluZDp2YWx1ZT17ZGF0ZVJhbmdlLmVuZERhdGV9XG4gICAgICBvbjppbnB1dD17ZW5kRGF0ZUNoYW5nZWR9XG4gICAgLz5cbiAgPC9kaXY+XG4gIDwhLS0gPGRpdiBjbGFzcz1cInRvZ2dsZUZpbHRlcnNcIj5cbiAgICAgIDxpbWcgc3JjPVwiaWNvbnMvZmlsdGVyLnBuZ1wiIC8+XG4gICAgPC9kaXY+IC0tPlxuPC9kaXY+XG5cbjxzdHlsZT5cbiAgLmRhdGVwaWNrZXJzLWZyYW1lIHtcbiAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG4gIC50b2dnbGVGaWx0ZXJzIHtcbiAgICB3aWR0aDogNyU7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlY2YwZjE7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cbiAgLmRhdGVwaWNrZXIge1xuICAgIHdpZHRoOiA0OSU7XG4gICAgaGVpZ2h0OiAzNnB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlY2YwZjE7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cbiAgaW1nIHtcbiAgICAvKiBmbGV4OiBub25lOyAqL1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICBoZWlnaHQ6IDI1cHg7XG4gICAgcGFkZGluZzogMCAydncgMCAxdnc7XG4gIH1cbiAgLmRhdGUge1xuICAgIGZsZXg6IDE7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWNmMGYxO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IFllYXJseUNhbGVuZGFyIGZyb20gXCIuLi8uLi91aS9ZZWFybHlDYWxlbmRhci9pbmRleC5zdmVsdGVcIjtcbiAgaW1wb3J0IERhdGVCcm93c2VyIGZyb20gXCIuLi8uLi91aS9EYXRlQnJvd3Nlci9pbmRleC5zdmVsdGVcIjtcblxuICBleHBvcnQgbGV0IGlzRXZlbnRzU2lkZXBhbmVPbjtcbiAgZXhwb3J0IGxldCBldmVudHNCeURhdGU7XG4gIGV4cG9ydCBsZXQgZHNhSG92ZXJlZEV2ZW50c0J5RGF0ZTtcbiAgZXhwb3J0IGxldCBsaXN0ZWRFdmVudHNCeURhdGU7XG4gIGV4cG9ydCBsZXQgaGlnaGxpZ2h0ZWREYXRlUmFuZ2U7XG4gIGV4cG9ydCBsZXQgc2hvcnRsaXN0ZWRFdmVudHNCeURhdGU7XG4gIGV4cG9ydCBsZXQgc2VsZWN0ZWRTZWFzb247XG4gIGV4cG9ydCBsZXQgZGF0ZVJhbmdlRmlsdGVyO1xuICBleHBvcnQgbGV0IGhvdmVyZWREYXRlO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbiAgLyogLmZyYW1lIHtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBtYXgtd2lkdGg6IGNhbGModmFyKC0tY2FsZW5kYXItd2lkdGgpICsgNDBweCk7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgIGJveC1zaGFkb3c6IDAgMCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgcGFkZGluZzogMjBweDtcbiAgfSAqL1xuICAuZnJhbWUtLW5vLXNpZGVwYW5lIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgfVxuICAuZnJhbWUtLXNpZGVwYW5lLW9uIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gIH1cbjwvc3R5bGU+XG5cbjxkaXZcbiAgY2xhc3M6ZnJhbWUtLW5vLXNpZGVwYW5lPXshaXNFdmVudHNTaWRlcGFuZU9ufVxuICBjbGFzczpmcmFtZS0tc2lkZXBhbmUtb249e2lzRXZlbnRzU2lkZXBhbmVPbn0+XG4gIHsjaWYgaXNFdmVudHNTaWRlcGFuZU9uICE9PSB1bmRlZmluZWR9XG4gICAgeyNpZiBpc0V2ZW50c1NpZGVwYW5lT259XG4gICAgICA8WWVhcmx5Q2FsZW5kYXJcbiAgICAgICAgaXRlbXNCeURhdGU9e2V2ZW50c0J5RGF0ZX1cbiAgICAgICAgZHNhSG92ZXJlZEl0ZW1zQnlEYXRlPXtkc2FIb3ZlcmVkRXZlbnRzQnlEYXRlfVxuICAgICAgICBsaXN0ZWRJdGVtc0J5RGF0ZT17bGlzdGVkRXZlbnRzQnlEYXRlfVxuICAgICAgICBzaG9ydGxpc3RlZEl0ZW1zQnlEYXRlPXtzaG9ydGxpc3RlZEV2ZW50c0J5RGF0ZX1cbiAgICAgICAge2hpZ2hsaWdodGVkRGF0ZVJhbmdlfVxuICAgICAgICBiaW5kOnllYXI9e3NlbGVjdGVkU2Vhc29ufVxuICAgICAgICBiaW5kOnNlbGVjdGVkRGF0ZVJhbmdlPXtkYXRlUmFuZ2VGaWx0ZXJ9XG4gICAgICAgIGJpbmQ6aG92ZXJlZERhdGUgLz5cbiAgICB7OmVsc2V9XG4gICAgICA8RGF0ZUJyb3dzZXJcbiAgICAgICAgYmluZDp5ZWFyPXtzZWxlY3RlZFNlYXNvbn1cbiAgICAgICAgYmluZDpzZWxlY3RlZERhdGVSYW5nZT17ZGF0ZVJhbmdlRmlsdGVyfSAvPlxuICAgIHsvaWZ9XG4gIHsvaWZ9XG48L2Rpdj5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlciwgb25Nb3VudCB9IGZyb20gXCJzdmVsdGVcIjtcblxuICBjb25zdCBkaXNwYXRjaCA9IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlcigpO1xuXG4gIGV4cG9ydCBsZXQgaG9tZUxvY2F0aW9uO1xuICBleHBvcnQgbGV0IGJvdW5kcztcbiAgZXhwb3J0IGxldCBjdXJyZW50TG9jYXRpb247XG4gIGV4cG9ydCBsZXQgZmVhdHVyZXM7XG4gIGV4cG9ydCBsZXQgc2hvcnRsaXN0ZWRGZWF0dXJlcztcbiAgZXhwb3J0IGxldCBoaWdobGlnaHRlZEZlYXR1cmUgPSB7fTtcbiAgZXhwb3J0IGxldCB2aWV3cG9ydFdIO1xuICBsZXQgbWFwO1xuICBsZXQgbWluaU1hcDtcbiAgbGV0IG1pbmltYXBXO1xuICBsZXQgbWluaU1hcFRpbGU7XG4gIGxldCBtb3VudGVkID0gZmFsc2U7XG4gIGxldCBmZWF0dXJlc0xheWVyO1xuICBsZXQgbWluaU1hcEZlYXR1cmVzTGF5ZXI7XG4gIGxldCBzaG9ydGxpc3RlZEZlYXR1cmVzTGF5ZXI7XG4gIGxldCBoaWdobGlnaHRlZEZlYXR1cmVMYXllcjtcbiAgbGV0IGV4dGVybmFsSGlnaGxpZ2h0ID0gdHJ1ZTtcbiAgY29uc3QgaW5pdGlhbGl6ZU1hcCA9ICgpID0+IHtcbiAgICAvLyBhdHRhY2ggbWFwIHRvIGRpdlxuICAgIG1hcCA9IEwubWFwKFwibWFwZGl2XCIsIHtcbiAgICAgIC8vIGNlbnRlcixcbiAgICAgIC8vIHpvb20sXG4gICAgICBzY3JvbGxXaGVlbFpvb206IHRydWUsXG4gICAgICB3aGVlbFB4UGVyWm9vbUxldmVsOiAyNDAsXG4gICAgICB6b29tQ29udHJvbDogZmFsc2UsXG4gICAgICBhdHRyaWJ1dGlvbkNvbnRyb2w6IGZhbHNlLFxuXHRcdFx0bWF4Qm91bmRzVmlzY29zaXR5OiAwLFxuXHRcdFx0bWF4Wm9vbTogMTYsXG5cdFx0XHRtaW5ab29tOiA0XG4gICAgICAvLyBnZXN0dXJlSGFuZGxpbmc6IHRydWVcbiAgICB9KTtcbiAgICAvLyBEZWZpbmUgdGhlIGdlb2dyYXBoaWNhbCBib3VuZHMgKGxhdGl0dWRlIGFuZCBsb25naXR1ZGUpIHRvIGxpbWl0IHRoZSBtYXAgcGFubmluZ1xuXHRcdC8vIGFuZCBsaW1pdCB0aGUgbWFwIHRvIHRoaXMgYm91bmRpbmcgYm94IHNvIHRoYXQgdGhlIG1hcCBjYW5ub3QgYmUgcGFubmVkIG91dHNpZGUgaXRcblx0XHRjb25zdCBtYXhCb3VuZHMgPSBMLmxhdExuZ0JvdW5kcyhcblx0XHRcdEwubGF0TG5nKC02MC4wLCAtMTkwLjApLCAvLyBTb3V0aHdlc3QgY29ybmVyIFtsYXRpdHVkZSwgbG9uZ2l0dWRlXVxuXHRcdFx0TC5sYXRMbmcoNzAuMCwgMTkwLjApIC8vIE5vcnRoZWFzdCBjb3JuZXIgW2xhdGl0dWRlLCBsb25naXR1ZGVdXG5cdFx0KTtcblx0XHRtYXAuc2V0TWF4Qm91bmRzKG1heEJvdW5kcyk7XG5cdFx0Ly8gZGV0ZXJtaW5lIG1hcCBjZW50ZXIgYW5kIHpvb21cbiAgICAvLyBkZXRlcm1pbmUgbWFwIGNlbnRlciBhbmQgem9vbVxuICAgIGxldCBjZW50ZXI7XG4gICAgbGV0IHpvb207XG4gICAgaWYgKGJvdW5kcy5fc291dGhXZXN0KSB7XG4gICAgICAvLyB1c2UgZXhpc3RpbmcgYm91bmRzLCBpZiBzZXQuLi5cbiAgICAgIGxldCBzd0Nvcm5lciA9IEwubGF0TG5nKGJvdW5kcy5fc291dGhXZXN0LmxhdCwgYm91bmRzLl9zb3V0aFdlc3QubG5nKTtcbiAgICAgIGxldCBuZUNvcm5lciA9IEwubGF0TG5nKGJvdW5kcy5fbm9ydGhFYXN0LmxhdCwgYm91bmRzLl9ub3J0aEVhc3QubG5nKTtcbiAgICAgIGJvdW5kcyA9IEwubGF0TG5nQm91bmRzKFtzd0Nvcm5lciwgbmVDb3JuZXJdKTtcbiAgICAgIGNlbnRlciA9IGJvdW5kcy5nZXRDZW50ZXIoKTtcbiAgICAgIHpvb20gPSBtYXAuZ2V0Qm91bmRzWm9vbShib3VuZHMpO1xuICAgICAgLy8gbWFwLmZpdEJvdW5kcyhib3VuZHMpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG90aGVyd2lzZSBnZXQgYm91bmRzIGZyb20gY3VycmVudCB1c2VyIGxvY2F0aW9uXG4gICAgICBjZW50ZXIgPVxuICAgICAgICBjdXJyZW50TG9jYXRpb24gJiZcbiAgICAgICAgY3VycmVudExvY2F0aW9uLmdlb21ldHJ5ICYmXG4gICAgICAgIGN1cnJlbnRMb2NhdGlvbi5nZW9tZXRyeS5jb29yZGluYXRlcy5sZW5ndGggPiAwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbi5nZW9tZXRyeS5jb29yZGluYXRlc1sxXSxcbiAgICAgICAgICAgICAgY3VycmVudExvY2F0aW9uLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdLFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogWzQ1LCAxNV07IC8vIGdlb2xva2FjaWphIFphZ3JlYmEsXG4gICAgICB6b29tID0gNjtcbiAgICB9XG4gICAgLy8gcmVkcmF3IG1hcCBvbiBsYXN0IHBvc2l0aW9uXG4gICAgbWFwLnNldFZpZXcoY2VudGVyKTtcbiAgICBtYXAuc2V0Wm9vbSh6b29tKTtcbiAgICBib3VuZHMgPSBtYXAuZ2V0Qm91bmRzKCk7XG4gICAgLy8gc2V0IG1hcCB2YXJpYWJsZXNcbiAgICBsZXQgbWFwVVJMID0gXCJodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZ1wiO1xuICAgIHZhciBjYXJ0b1VybCA9IFwiaHR0cDovL3tzfS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vZGFya19hbGwve3p9L3t4fS97eX0ucG5nXCI7XG4gICAgbGV0IGF0dHJpYnV0aW9uID0gYCZjb3B5OyA8YSBocmVmPVwiaHR0cHM6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0XCI+T3BlblN0cmVldE1hcDwvYT4gY29udHJpYnV0b3JzYDtcbiAgICAvLyBhdHRhY2ggYmFzZSB0aWxlIGxheWVyIHRvIG1hcFxuICAgIGxldCBtYXBUaWxlID0gTC50aWxlTGF5ZXIobWFwVVJMLCB7XG4gICAgICBhdHRyaWJ1dGlvbixcbiAgICB9KTtcbiAgICBtYXAuYWRkTGF5ZXIobWFwVGlsZSk7XG4gICAgLy8gYWRkIGF0dHJidXRpb25cbiAgICBMLmNvbnRyb2wuYXR0cmlidXRpb24oeyBwb3NpdGlvbjogXCJ0b3BsZWZ0XCIgfSkuYWRkVG8obWFwKTtcbiAgICAvLyBoYW5kbGUgdmlldyBjaGFuZ2VzXG4gICAgbWFwLm9uKFwicmVzaXplIG1vdmVlbmQgem9vbWVuZFwiLCAoKSA9PiB7XG4gICAgICBib3VuZHMgPSBtYXAuZ2V0Qm91bmRzKCk7XG4gICAgfSk7XG4gICAgLy8gYWRkIG1pbmltYXBcbiAgICBtaW5pTWFwVGlsZSA9IEwudGlsZUxheWVyKG1hcFVSTCwge1xuICAgICAgbWluWm9vbTogMCxcbiAgICAgIG1heFpvb206IDAsXG4gICAgfSk7XG4gICAgbWluaU1hcCA9IG5ldyBMLkNvbnRyb2wuTWluaU1hcChtaW5pTWFwVGlsZSwge1xuICAgICAgcG9zaXRpb246IFwidG9wcmlnaHRcIixcbiAgICAgIHRvZ2dsZURpc3BsYXk6IHRydWUsXG4gICAgICBoZWlnaHQ6IG1pbmltYXBXICogKDIgLyAzKSxcbiAgICAgIHdpZHRoOiBtaW5pbWFwVyxcbiAgICAgIHpvb21MZXZlbEZpeGVkOiAwLFxuICAgICAgLy8gY2VudGVyRml4ZWQ6IFszMCwgMTBdLFxuICAgICAgYWltaW5nUmVjdE9wdGlvbnM6IHsgY29sb3I6IFwic2xhdGVncmV5XCIsIHdlaWdodDogMiB9LFxuICAgICAgc2hhZG93UmVjdE9wdGlvbnM6IHtcbiAgICAgICAgY29sb3I6IFwiIzAwMDBBQVwiLFxuICAgICAgICB3ZWlnaHQ6IDEsXG4gICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgIGZpbGxPcGFjaXR5OiAwLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBtYXAuYWRkQ29udHJvbChtaW5pTWFwKTtcbiAgfTtcblxuICBjb25zdCBnZXRJY29uID0gKGZlYXR1cmUpID0+IHtcbiAgICBsZXQgaWNvblVybDtcbiAgICBzd2l0Y2ggKGZlYXR1cmUucHJvcGVydGllcy5icmFuZCkge1xuICAgICAgY2FzZSBcImVhcGNpcmN1aXRcIjpcbiAgICAgICAgaWNvblVybCA9IFwiYnJhbmRzL2VhcC1pbmFjdGl2ZS5zdmdcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZ29sZGVuZmx5XCI6XG4gICAgICAgIGljb25VcmwgPSBcImJyYW5kcy9nb2xkZW5mbHktaW5hY3RpdmUucG5nXCI7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gaWNvblVybFxuICAgICAgPyBMLmljb24oe1xuICAgICAgICAgIGljb25Vcmw6IGljb25VcmwsXG4gICAgICAgICAgaWNvblNpemU6IFsyMiwgMjJdLCAvLyBzaXplIG9mIHRoZSBpY29uXG4gICAgICAgICAgaWNvbkFuY2hvcjogWzEyLCAyNF0sIC8vIHBvaW50IG9mIHRoZSBpY29uIHdoaWNoIHdpbGwgY29ycmVzcG9uZCB0byBtYXJrZXIncyBsb2NhdGlvblxuICAgICAgICAgIHBvcHVwQW5jaG9yOiBbMjQsIDBdLCAvLyBwb2ludCBmcm9tIHdoaWNoIHRoZSBwb3B1cCBzaG91bGQgb3BlbiByZWxhdGl2ZSB0byB0aGUgaWNvbkFuY2hvclxuICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIH0pXG4gICAgICA6IEwuZGl2SWNvbih7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIm1hcmtlckljb25cIixcbiAgICAgICAgICBodG1sOiBmZWF0dXJlLnByb3BlcnRpZXMuY2F0ZWdvcnkudG9VcHBlckNhc2UoKSxcbiAgICAgICAgICBpY29uU2l6ZTogWzI0LCAyNF0sIC8vIHNpemUgb2YgdGhlIGljb25cbiAgICAgICAgICBpY29uQW5jaG9yOiBbMTIsIDI0XSwgLy8gcG9pbnQgb2YgdGhlIGljb24gd2hpY2ggd2lsbCBjb3JyZXNwb25kIHRvIG1hcmtlcidzIGxvY2F0aW9uXG4gICAgICAgICAgcG9wdXBBbmNob3I6IFsyNCwgMF0sIC8vIHBvaW50IGZyb20gd2hpY2ggdGhlIHBvcHVwIHNob3VsZCBvcGVuIHJlbGF0aXZlIHRvIHRoZSBpY29uQW5jaG9yXG4gICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgfSk7XG4gIH07XG4gIGNvbnN0IGdldEhvdmVyZWRJY29uID0gKGZlYXR1cmUpID0+IHtcbiAgICBsZXQgYWN0aXZlSWNvblVybDtcbiAgICBzd2l0Y2ggKGZlYXR1cmUucHJvcGVydGllcy5icmFuZCkge1xuICAgICAgY2FzZSBcImVhcGNpcmN1aXRcIjpcbiAgICAgICAgYWN0aXZlSWNvblVybCA9IFwiYnJhbmRzL2VhcC1hY3RpdmUuc3ZnXCI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImdvbGRlbmZseVwiOlxuICAgICAgICBhY3RpdmVJY29uVXJsID0gXCJicmFuZHMvZ29sZGVuZmx5LWFjdGl2ZS5wbmdcIjtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBhY3RpdmVJY29uVXJsXG4gICAgICA/IEwuaWNvbih7XG4gICAgICAgICAgaWNvblVybDogYWN0aXZlSWNvblVybCxcbiAgICAgICAgICBpY29uU2l6ZTogWzIyLCAyMl0sIC8vIHNpemUgb2YgdGhlIGljb25cbiAgICAgICAgICBpY29uQW5jaG9yOiBbMTIsIDI0XSwgLy8gcG9pbnQgb2YgdGhlIGljb24gd2hpY2ggd2lsbCBjb3JyZXNwb25kIHRvIG1hcmtlcidzIGxvY2F0aW9uXG4gICAgICAgICAgcG9wdXBBbmNob3I6IFsyNCwgMF0sIC8vIHBvaW50IGZyb20gd2hpY2ggdGhlIHBvcHVwIHNob3VsZCBvcGVuIHJlbGF0aXZlIHRvIHRoZSBpY29uQW5jaG9yXG4gICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgfSlcbiAgICAgIDogTC5kaXZJY29uKHtcbiAgICAgICAgICBjbGFzc05hbWU6IFwiaGlnaGxpZ2h0ZWRNYXJrZXJJY29uXCIsXG4gICAgICAgICAgaHRtbDogZmVhdHVyZS5wcm9wZXJ0aWVzLmNhdGVnb3J5LnRvVXBwZXJDYXNlKCksXG4gICAgICAgICAgaWNvblNpemU6IFsyNCwgMjRdLCAvLyBzaXplIG9mIHRoZSBpY29uXG4gICAgICAgICAgaWNvbkFuY2hvcjogWzEyLCAyNF0sIC8vIHBvaW50IG9mIHRoZSBpY29uIHdoaWNoIHdpbGwgY29ycmVzcG9uZCB0byBtYXJrZXIncyBsb2NhdGlvblxuICAgICAgICAgIHBvcHVwQW5jaG9yOiBbMjQsIDBdLCAvLyBwb2ludCBmcm9tIHdoaWNoIHRoZSBwb3B1cCBzaG91bGQgb3BlbiByZWxhdGl2ZSB0byB0aGUgaWNvbkFuY2hvclxuICAgICAgICAgIG9wYWNpdHk6IDEsXG4gICAgICAgIH0pO1xuICB9O1xuICBjb25zdCBnZXRTaG9ydGxpc3RlZEljb24gPSAoZmVhdHVyZSkgPT4gZ2V0SG92ZXJlZEljb24oZmVhdHVyZSk7XG4gIGNvbnN0IGdldEhpZ2hsaWdodGVkSWNvbiA9IChmZWF0dXJlKSA9PiBnZXRIb3ZlcmVkSWNvbihmZWF0dXJlKTtcblxuICBjb25zdCBoYW5kbGVIb3ZlckFuZENsaWNrID0gKG1hcmtlciwgZmVhdHVyZSkgPT4ge1xuICAgIG1hcmtlci5vbihcIm1vdXNlb3ZlclwiLCAoKSA9PiB7XG4gICAgICBleHRlcm5hbEhpZ2hsaWdodCA9IGZhbHNlO1xuICAgICAgZGlzcGF0Y2goXCJmZWF0dXJlSG92ZXJlZFwiLCBmZWF0dXJlKTtcbiAgICAgIG1hcmtlci5zZXRJY29uKGdldEhvdmVyZWRJY29uKGZlYXR1cmUpKTtcbiAgICB9KTtcbiAgICBtYXJrZXIub24oXCJjbGlja1wiLCAoKSA9PiB7XG4gICAgICBkaXNwYXRjaChcImZlYXR1cmVDbGlja2VkXCIsIGZlYXR1cmUpO1xuICAgIH0pO1xuICAgIHJldHVybiBtYXJrZXI7XG4gIH07XG4gIGNvbnN0IGZlYXR1cmVUb0xheWVyID0gKGZlYXR1cmUsIGxhdGxuZykgPT4ge1xuICAgIGNvbnN0IHpJbmRleE9mZnNldCA9IDYwMDtcbiAgICBsZXQgbWFya2VyID0gTC5tYXJrZXIobGF0bG5nKTtcbiAgICBtYXJrZXIuc2V0SWNvbihnZXRJY29uKGZlYXR1cmUpKTtcbiAgICBtYXJrZXIuc2V0WkluZGV4T2Zmc2V0KHpJbmRleE9mZnNldCk7XG4gICAgbWFya2VyLm9uKFwibW91c2VvdXRcIiwgKCkgPT4ge1xuICAgICAgZXh0ZXJuYWxIaWdobGlnaHQgPSB0cnVlO1xuICAgICAgbWFya2VyLnNldEljb24oZ2V0SWNvbihmZWF0dXJlKSk7XG4gICAgICBkaXNwYXRjaChcImZlYXR1cmVIb3ZlcmVkXCIpO1xuICAgIH0pO1xuICAgIHJldHVybiBoYW5kbGVIb3ZlckFuZENsaWNrKG1hcmtlciwgZmVhdHVyZSk7XG4gIH07XG4gIGNvbnN0IHNob3J0bGlzdGVkRmVhdHVyZVRvTGF5ZXIgPSAoZmVhdHVyZSwgbGF0bG5nKSA9PiB7XG4gICAgY29uc3QgekluZGV4T2Zmc2V0ID0gNjEwO1xuICAgIGxldCBtYXJrZXIgPSBMLm1hcmtlcihsYXRsbmcpO1xuICAgIG1hcmtlci5zZXRJY29uKGdldFNob3J0bGlzdGVkSWNvbihmZWF0dXJlKSk7XG4gICAgbWFya2VyLnNldFpJbmRleE9mZnNldCh6SW5kZXhPZmZzZXQpO1xuICAgIG1hcmtlci5vbihcIm1vdXNlb3V0XCIsICgpID0+IHtcbiAgICAgIGRpc3BhdGNoKFwiZmVhdHVyZUhvdmVyZWRcIik7XG4gICAgICBtYXJrZXIuc2V0SWNvbihnZXRTaG9ydGxpc3RlZEljb24oZmVhdHVyZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBoYW5kbGVIb3ZlckFuZENsaWNrKG1hcmtlciwgZmVhdHVyZSk7XG4gIH07XG4gIGNvbnN0IGhpZ2hsaWdodGVkRmVhdHVyZVRvTGF5ZXIgPSAoZmVhdHVyZSwgbGF0bG5nKSA9PiB7XG4gICAgY29uc3QgekluZGV4T2Zmc2V0ID0gNjIwO1xuICAgIGxldCBtYXJrZXIgPSBMLm1hcmtlcihsYXRsbmcpO1xuICAgIG1hcmtlci5zZXRJY29uKGdldEhpZ2hsaWdodGVkSWNvbihmZWF0dXJlKSk7XG4gICAgbWFya2VyLnNldFpJbmRleE9mZnNldCh6SW5kZXhPZmZzZXQpO1xuICAgIHJldHVybiBoYW5kbGVIb3ZlckFuZENsaWNrKG1hcmtlciwgZmVhdHVyZSk7XG4gIH07XG4gIGNvbnN0IGRpc3BsYXlGZWF0dXJlcyA9ICgpID0+IHtcbiAgICBpZiAoZmVhdHVyZXNMYXllcikgZmVhdHVyZXNMYXllci5jbGVhckxheWVycygpO1xuICAgIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBkcmF3IG1haW4gbWFwXG4gICAgICBmZWF0dXJlc0xheWVyID0gTC5nZW9KU09OKGZlYXR1cmVzLCB7XG4gICAgICAgIC8vIGZpbHRlciBvdXQgaXRlbXMgd2l0aCBubyBnZW9sb2NhdGlvbiBkYXRhLCBsZXN0IHRoZXkgd291bGQgYnJlYWsgbWFwIHJlbmRlclxuICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uIChmZWF0dXJlKSB7XG4gICAgICAgICAgaWYgKCFmZWF0dXJlLmdlb21ldHJ5LmNvb3JkaW5hdGVzWzBdKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG4gICAgICAgIHBvaW50VG9MYXllcjogZmVhdHVyZVRvTGF5ZXIsXG4gICAgICB9KTtcbiAgICAgIGZlYXR1cmVzTGF5ZXIuYWRkVG8obWFwKTtcbiAgICAgIC8vIGRyYXcgbWluaW1hcFxuICAgICAgbGV0IHB1YnMyID0gTC5nZW9Kc29uKGZlYXR1cmVzLCB7XG4gICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGZlYXR1cmUpIHtcbiAgICAgICAgICBpZiAoIWZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0pIHJldHVybiBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9pbnRUb0xheWVyOiBmdW5jdGlvbiAoZmVhdHVyZSwgbGF0bG5nKSB7XG4gICAgICAgICAgLy8gcmV0dXJuIG5ldyBMLkNpcmNsZU1hcmtlcihsYXRsbmcsIHsgcmFkaXVzOiAxLCBjb2xvcjogXCIjZjBiMDU0XCIgfSk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBMLkNpcmNsZU1hcmtlcihsYXRsbmcsIHtcbiAgICAgICAgICAgIHJhZGl1czogMSxcbiAgICAgICAgICAgIGNvbG9yOiBcIiNmNWEwMjBcIixcbiAgICAgICAgICAgIC8vIGNvbG9yOiBzaG9ydGxpc3RlZEZlYXR1cmVzLnNvbWUoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIC8vICAgaXRlbS5wcm9wZXJ0aWVzLmlkID09PSBmZWF0dXJlLnByb3BlcnRpZXMuaWQ7XG4gICAgICAgICAgICAvLyB9KVxuICAgICAgICAgICAgLy8gICA/IFwiI2Y1YTAyMFwiXG4gICAgICAgICAgICAvLyAgIDogXCIjNTQ1YmQyXCIsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGxldCBsYXllcnMgPSBuZXcgTC5MYXllckdyb3VwKFttaW5pTWFwVGlsZSwgcHViczJdKTtcbiAgICAgIG1pbmlNYXAuY2hhbmdlTGF5ZXIobGF5ZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2xlYXIgdXAgbWluaW1hcCBpZiBubyBmZWF0dXJlcyBhcmUgcHJvdmlkZWRcbiAgICAgIGxldCBsYXllcnMgPSBuZXcgTC5MYXllckdyb3VwKFttaW5pTWFwVGlsZSwgTC5nZW9Kc29uKFtdKV0pO1xuICAgICAgbWluaU1hcC5jaGFuZ2VMYXllcihsYXllcnMpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZGlzcGxheVNob3J0bGlzdGVkRmVhdHVyZXMgPSAoKSA9PiB7XG4gICAgaWYgKHNob3J0bGlzdGVkRmVhdHVyZXNMYXllcikgc2hvcnRsaXN0ZWRGZWF0dXJlc0xheWVyLmNsZWFyTGF5ZXJzKCk7XG4gICAgaWYgKHNob3J0bGlzdGVkRmVhdHVyZXMubGVuZ3RoID4gMCkge1xuICAgICAgc2hvcnRsaXN0ZWRGZWF0dXJlc0xheWVyID0gTC5nZW9KU09OKHNob3J0bGlzdGVkRmVhdHVyZXMsIHtcbiAgICAgICAgLy8gZmlsdGVyIG91dCBpdGVtcyB3aXRoIG5vIGdlb2xvY2F0aW9uIGRhdGEsIGxlc3QgdGhleSB3b3VsZCBicmVhayBtYXAgcmVuZGVyXG4gICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGZlYXR1cmUpIHtcbiAgICAgICAgICBpZiAoIWZlYXR1cmUuZ2VvbWV0cnkuY29vcmRpbmF0ZXNbMF0pIHJldHVybiBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9pbnRUb0xheWVyOiBzaG9ydGxpc3RlZEZlYXR1cmVUb0xheWVyLFxuICAgICAgfSk7XG4gICAgICBzaG9ydGxpc3RlZEZlYXR1cmVzTGF5ZXIuYWRkVG8obWFwKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGRpc3BsYXlIaWdobGlnaHRlZEZlYXR1cmUgPSAoKSA9PiB7XG4gICAgaWYgKGhpZ2hsaWdodGVkRmVhdHVyZUxheWVyKSBoaWdobGlnaHRlZEZlYXR1cmVMYXllci5jbGVhckxheWVycygpO1xuICAgIGlmIChoaWdobGlnaHRlZEZlYXR1cmUpIHtcbiAgICAgIGhpZ2hsaWdodGVkRmVhdHVyZUxheWVyID0gTC5nZW9KU09OKGhpZ2hsaWdodGVkRmVhdHVyZSwge1xuICAgICAgICAvLyBmaWx0ZXIgb3V0IGl0ZW1zIHdpdGggbm8gZ2VvbG9jYXRpb24gZGF0YSwgbGVzdCB0aGV5IHdvdWxkIGJyZWFrIG1hcCByZW5kZXJcbiAgICAgICAgZmlsdGVyOiBmdW5jdGlvbiAoZmVhdHVyZSkge1xuICAgICAgICAgIGlmICghZmVhdHVyZS5nZW9tZXRyeSB8fCAhZmVhdHVyZS5nZW9tZXRyeS5jb29yZGluYXRlc1swXSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgcG9pbnRUb0xheWVyOiBoaWdobGlnaHRlZEZlYXR1cmVUb0xheWVyLFxuICAgICAgfSk7XG4gICAgICBoaWdobGlnaHRlZEZlYXR1cmVMYXllci5hZGRUbyhtYXApO1xuICAgIH1cbiAgfTtcblxuICBvbk1vdW50KGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBpbXBvcnQoXCJsZWFmbGV0XCIpO1xuICAgIGF3YWl0IGltcG9ydChcImxlYWZsZXQvZGlzdC9sZWFmbGV0LmNzc1wiKTtcbiAgICBhd2FpdCBpbXBvcnQoXCJsZWFmbGV0LW1pbmltYXBcIik7XG4gICAgYXdhaXQgaW1wb3J0KFwibGVhZmxldC1taW5pbWFwL2Rpc3QvQ29udHJvbC5NaW5pTWFwLm1pbi5jc3NcIik7XG4gICAgYXdhaXQgaW1wb3J0KFwibGVhZmxldC1nZXN0dXJlLWhhbmRsaW5nXCIpO1xuICAgIGF3YWl0IGltcG9ydChcImxlYWZsZXQtZ2VzdHVyZS1oYW5kbGluZy9kaXN0L2xlYWZsZXQtZ2VzdHVyZS1oYW5kbGluZy5jc3NcIik7XG4gICAgLy8gYXdhaXQgaW1wb3J0KFwibGVhZmxldC5tYXJrZXJjbHVzdGVyXCIpO1xuICAgIGluaXRpYWxpemVNYXAoKTtcbiAgICBtb3VudGVkID0gdHJ1ZTtcbiAgfSk7XG5cbiAgJDogbWluaW1hcFcgPSBNYXRoLm1pbih2aWV3cG9ydFdILncgLyAzLCAyMDApO1xuXG4gICQ6IHtcbiAgICBmZWF0dXJlcztcbiAgICBpZiAobW91bnRlZCkgZGlzcGxheUZlYXR1cmVzKCk7XG4gIH1cbiAgJDoge1xuICAgIHNob3J0bGlzdGVkRmVhdHVyZXM7XG4gICAgaWYgKG1vdW50ZWQpIGRpc3BsYXlTaG9ydGxpc3RlZEZlYXR1cmVzKCk7XG4gIH1cbiAgJDoge1xuICAgIGhpZ2hsaWdodGVkRmVhdHVyZTtcbiAgICBpZiAobW91bnRlZCAmJiBleHRlcm5hbEhpZ2hsaWdodCkgZGlzcGxheUhpZ2hsaWdodGVkRmVhdHVyZSgpO1xuICB9XG48L3NjcmlwdD5cblxuPG1hcCBjbGFzcz1cIm1hcGRpdlwiIGlkPVwibWFwZGl2XCIgLz5cblxuPHN0eWxlPlxuICAubWFwZGl2IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdG9wOiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuICA6Z2xvYmFsKC5tYXJrZXJJY29uKSB7XG4gICAgLyogaGVpZ2h0OiAyNnB4O1xuICAgIHdpZHRoOiAyNnB4OyAqL1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgva2F0ZWdvcmlqZS8xNngxNnB4L29yYW5nZS9waW4uc3ZnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgICBwYWRkaW5nLXRvcDogMnB4O1xuICB9XG4gIDpnbG9iYWwoLmhpZ2hsaWdodGVkTWFya2VySWNvbikge1xuICAgIC8qIGhlaWdodDogMjZweDtcbiAgICB3aWR0aDogMjZweDsgKi9cbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoL2thdGVnb3JpamUvMTZ4MTZweC9yZWQvcGluLnN2Zyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgcGFkZGluZy10b3A6IDJweDtcbiAgfVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQ+XG4gIGltcG9ydCB7IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlciB9IGZyb20gXCJzdmVsdGVcIjtcbiAgaW1wb3J0IHsgdHJpbUxvbmdUaXRsZSB9IGZyb20gXCIuL0V2ZW50Q2FyZFwiO1xuICBpbXBvcnQgeyBnZXRFdmVudENhdGVnb3JpZXNGcm9tREIgfSBmcm9tIFwiLi4vRXZlbnRFZGl0b3IvaW5kZXhcIjtcblxuICBjb25zdCBkaXNwYXRjaCA9IGNyZWF0ZUV2ZW50RGlzcGF0Y2hlcigpO1xuXG4gIGltcG9ydCB7IHVzZXIgfSBmcm9tIFwiLi4vLi4vc3RvcmVzXCI7XG4gIGV4cG9ydCBsZXQgZXZlbnQgPSB7fTtcbiAgZXhwb3J0IGxldCBpc0hpZ2hsaWdodGVkID0gZmFsc2U7XG4gIC8vIGxldCBpc1VucHVibGlzaGVkID0gIWV2ZW50LnByb3BlcnRpZXMuaXNQdWJsaXNoZWQ7XG4gIC8vIGxldCBpc0ZvbGxvd2VkID0gZXZlbnQucHJvcGVydGllcy5pc0ZvbGxvd2VkO1xuICBsZXQgY2F0ZWdvcmllc0xpc3QgPSBnZXRFdmVudENhdGVnb3JpZXNGcm9tREIoKS5yZXZlcnNlKCk7XG4gIGxldCBpc0JyYW5kSGlnaGxpZ2h0ZWQgPSBmYWxzZTtcblxuICBjb25zdCByZXF1ZXN0SGlnaGxpZ2h0RXZlbnQgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goXCJoaWdobGlnaHRFdmVudFJlcXVlc3RlZFwiLCBldmVudCk7XG4gIH07XG4gIGNvbnN0IHJlcXVlc3RVbmhpZ2hsaWdodEV2ZW50ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKFwiaGlnaGxpZ2h0RXZlbnRSZXF1ZXN0ZWRcIik7XG4gIH07XG4gIGNvbnN0IHJlcXVlc3RIaWdobGlnaHRCcmFuZCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChcImhpZ2hsaWdodEJyYW5kUmVxdWVzdGVkXCIsIGV2ZW50LnByb3BlcnRpZXMuYnJhbmQpO1xuICAgIGlzQnJhbmRIaWdobGlnaHRlZCA9IHRydWU7XG4gIH07XG4gIGNvbnN0IHJlcXVlc3RVbmhpZ2hsaWdodEJyYW5kID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKFwiaGlnaGxpZ2h0QnJhbmRSZXF1ZXN0ZWRcIik7XG4gICAgaXNCcmFuZEhpZ2hsaWdodGVkID0gZmFsc2U7XG4gIH07XG4gIGNvbnN0IHJlcXVlc3RTZWxlY3RFdmVudCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChcInNlbGVjdEV2ZW50UmVxdWVzdGVkXCIsIGV2ZW50KTtcbiAgfTtcbiAgY29uc3QgdG9nZ2xlUmVxdWVzdEZvbGxvd0V2ZW50ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKFwidG9nZ2xlRm9sbG93RXZlbnRSZXF1ZXN0ZWRcIiwgZXZlbnQpO1xuICB9O1xuXG4gICQ6IGlzVW5wdWJsaXNoZWQgPSAhZXZlbnQucHJvcGVydGllcy5pc1B1Ymxpc2hlZDtcbiAgJDogaXNGb2xsb3dlZCA9IGV2ZW50LnByb3BlcnRpZXMuaXNGb2xsb3dlZDtcbjwvc2NyaXB0PlxuXG48ZGl2XG4gIGNsYXNzPVwiZXZlbnQtY2FyZFwiXG4gIGNsYXNzOmlzSGlnaGxpZ2h0ZWRcbiAgb246bW91c2VlbnRlcj17cmVxdWVzdEhpZ2hsaWdodEV2ZW50fVxuICBvbjptb3VzZWxlYXZlPXtyZXF1ZXN0VW5oaWdobGlnaHRFdmVudH1cbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYm9keVwiXG4gICAgY2xhc3M6aXNVbnB1Ymxpc2hlZFxuICAgIG9uOmNsaWNrfHN0b3BQcm9wYWdhdGlvbj17cmVxdWVzdFNlbGVjdEV2ZW50fVxuICA+XG4gICAgeyNpZiBldmVudC5wcm9wZXJ0aWVzLmJyYW5kID09PSBcImVhcGNpcmN1aXRcIn1cbiAgICAgIDxpbWcgY2xhc3M9XCJicmFuZC1iZ1wiIHNyYz1cImJyYW5kcy9lYXBjaXJjdWl0LnBuZ1wiIC8+XG4gICAgey9pZn1cbiAgICB7I2lmIGV2ZW50LnByb3BlcnRpZXMuYnJhbmQgPT09IFwiZ29sZGVuZnlcIn1cbiAgICAgIDxpbWcgY2xhc3M9XCJicmFuZC1iZ1wiIHNyYz1cImJyYW5kcy9nb2xkZW5mbHktaW5hY3RpdmUucG5nXCIgLz5cbiAgICB7L2lmfVxuICAgIDxkaXYgY2xhc3M9XCJldmVudC1pbmZvXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxhZy1wbGFjZS1kYXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGFnXCI+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgc3JjPVwiZmxhZ3Mvc3ZnL3tldmVudC5wcm9wZXJ0aWVzLnZlbnVlLmNvdW50cnl9LnN2Z1wiXG4gICAgICAgICAgICBhbHQ9e2V2ZW50LnByb3BlcnRpZXMudmVudWUuY291bnRyeX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZS1kYXRlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBsYWNlXCI+XG4gICAgICAgICAgICB7dHJpbUxvbmdUaXRsZShcbiAgICAgICAgICAgICAgZXZlbnQucHJvcGVydGllcy52ZW51ZS5wbGFjZVtldmVudC5wcm9wZXJ0aWVzLnZlbnVlLnBsYWNlLnBwXSxcbiAgICAgICAgICAgICAgMjRcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVcIj57ZXZlbnQucHJvcGVydGllcy5kYXRlRm9yRGlzcGxheX08L2Rpdj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtdGl0bGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHRcIj5cbiAgICAgICAgICB7dHJpbUxvbmdUaXRsZShldmVudC5wcm9wZXJ0aWVzLnRpdGxlW2V2ZW50LnByb3BlcnRpZXMudGl0bGUucHBdLCA1Nyl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNhdGVnb3JpZXNcIj5cbiAgICAgIHsjZWFjaCBldmVudC5wcm9wZXJ0aWVzLnByb2dyYW0uY2F0ZWdvcmllcyBhcyBjYXRlZ29yeX1cbiAgICAgICAgPGRpdiBjbGFzcz1cIkV2ZW50Q2FyZF9fY2F0ZWdvcnlcIj57Y2F0ZWdvcnkudG9VcHBlckNhc2UoKX08L2Rpdj5cbiAgICAgIHsvZWFjaH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmb290ZXJcIiBjbGFzczppc1VucHVibGlzaGVkPlxuICAgIDxkaXYgY2xhc3M9XCJicmFuZHNcIj5cbiAgICAgIHsjaWYgZXZlbnQucHJvcGVydGllcy5wcm9ncmFtLnZhY2FuY3lBbGVydHN9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YXJyYW50b3ItaWNvblwiPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgc3JjPVwiaWNvbnMvaGlyaW5nLS1hY3RpdmUucG5nXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJWYWNhbmN5IEFsZXJ0XCJcbiAgICAgICAgICAgICAgYWx0PVwiVmFjYW5jeSBBbGVydFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHsvaWZ9XG4gICAgICB7I2lmIGV2ZW50LnByb3BlcnRpZXMuZXZlbnRXYXJyYW50b3IgJiYgZXZlbnQucHJvcGVydGllcy5ldmVudFdhcnJhbnRvci5pZCAhPT0gXCItXCJ9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YXJyYW50b3ItaWNvblwiPlxuICAgICAgICAgIDxhIGhyZWY9e2V2ZW50LnByb3BlcnRpZXMuZXZlbnRXYXJyYW50b3Iud3d3fSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgc3JjPVwid2FycmFudG9ycy97ZXZlbnQucHJvcGVydGllcy5ldmVudFdhcnJhbnRvci5pZH0ucG5nXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJFdmVudCBpbmZvIG1haW50YWluZWQgYnkge2V2ZW50LnByb3BlcnRpZXMuZXZlbnRXYXJyYW50b3JcbiAgICAgICAgICAgICAgICAuZW5nfVwiXG4gICAgICAgICAgICAgIGFsdD17ZXZlbnQucHJvcGVydGllcy5ldmVudFdhcnJhbnRvci5lbmd9XG4gICAgICAgICAgICAvPjwvYVxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7L2lmfVxuICAgICAgeyNlYWNoIGV2ZW50LnByb3BlcnRpZXMuZXZlbnRCcmFuZHMgYXMgYnJhbmR9XG4gICAgICAgIHsjaWYgZXZlbnQucHJvcGVydGllcy5icmFuZCA9PT0gXCJlYXBjaXJjdWl0XCJ9XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJicmFuZC1pY29uXCJcbiAgICAgICAgICAgIG9uOm1vdXNlZW50ZXI9e3JlcXVlc3RIaWdobGlnaHRCcmFuZH1cbiAgICAgICAgICAgIG9uOm1vdXNlbGVhdmU9e3JlcXVlc3RVbmhpZ2hsaWdodEJyYW5kfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwOi8vZWFwLWNpcmN1aXQub3JnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBzcmM9XCJicmFuZHMve2lzQnJhbmRIaWdobGlnaHRlZFxuICAgICAgICAgICAgICAgICAgPyAnZWFwLWFjdGl2ZSdcbiAgICAgICAgICAgICAgICAgIDogJ2VhcC1pbmFjdGl2ZSd9LnN2Z1wiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJFQVAgQ2lyY3VpdFwiXG4gICAgICAgICAgICAgICAgYWx0PVwiRUFQIENpcmN1aXRcIlxuICAgICAgICAgICAgICAvPjwvYVxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB7L2lmfVxuICAgICAgICB7I2lmIGV2ZW50LnByb3BlcnRpZXMuYnJhbmQgPT09IFwiZ29sZGVuZmx5XCJ9XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJicmFuZC1pY29uXCJcbiAgICAgICAgICAgIG9uOm1vdXNlZW50ZXI9e3JlcXVlc3RIaWdobGlnaHRCcmFuZH1cbiAgICAgICAgICAgIG9uOm1vdXNlbGVhdmU9e3JlcXVlc3RVbmhpZ2hsaWdodEJyYW5kfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5nb2xkZW5mbHlzZXJpZXMuY29tL1wiIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgc3JjPVwiYnJhbmRzL3tpc0JyYW5kSGlnaGxpZ2h0ZWRcbiAgICAgICAgICAgICAgICAgID8gJ2dvbGRlbmZseS1hY3RpdmUnXG4gICAgICAgICAgICAgICAgICA6ICdnb2xkZW5mbHktaW5hY3RpdmUnfS5wbmdcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiR29sZGVuIEZseSBTZXJpZXNcIlxuICAgICAgICAgICAgICAgIGFsdD1cIkdvbGRlbiBGbHkgU2VyaWVzXCJcbiAgICAgICAgICAgICAgLz48L2FcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgey9pZn1cbiAgICAgIHsvZWFjaH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgICAgPCEtLSBpbnZpdGF0aW9uIC8gc3RhcnQgbGlzdHMgLyByZXN1bHRzIC0tPlxuICAgICAgeyNpZiBldmVudC5wcm9wZXJ0aWVzLmxpbmtzLnJlc3VsdHN9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCI+XG4gICAgICAgICAgPGEgaHJlZj17ZXZlbnQucHJvcGVydGllcy5saW5rcy5yZXN1bHRzfSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaWNvbnMvcmVzdWx0cy5zdmdcIiBhbHQ9XCJSZXN1bHRzXCIgLz5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgezplbHNlIGlmIGV2ZW50LnByb3BlcnRpZXMubGlua3Muc3RhcnRsaXN0ICYmIGV2ZW50LnByb3BlcnRpZXMuZGF0ZVJhbmdlLmRheXNUb1N0YXJ0ID49IDB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCI+XG4gICAgICAgICAgPGEgaHJlZj17ZXZlbnQucHJvcGVydGllcy5saW5rcy5zdGFydGxpc3R9IHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJpY29ucy9saXN0LnBuZ1wiIGFsdD1cIlN0YXJ0IGxpc3RzXCIgLz5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgezplbHNlIGlmIGV2ZW50LnByb3BlcnRpZXMubGlua3MuaW52aXRhdGlvbiAmJiBldmVudC5wcm9wZXJ0aWVzLmRhdGVSYW5nZS5kYXlzVG9TdGFydCA+PSAwfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiPlxuICAgICAgICAgIDxhIGhyZWY9e2V2ZW50LnByb3BlcnRpZXMubGlua3MuaW52aXRhdGlvbn0gdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImljb25zL2luZm8ucG5nXCIgYWx0PVwiSW52aXRhdGlvbi9Qcm9ncmFtXCIgLz5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgey9pZn1cblxuICAgICAgPCEtLSByZWFsIHRpbWUgdmlkZW8gc3RyZWFtaW5nIC0tPlxuICAgICAgeyNpZiBldmVudC5wcm9wZXJ0aWVzLmxpbmtzLnZpZGVvY2hhbm5lbCAmJiBldmVudC5wcm9wZXJ0aWVzLmRhdGVSYW5nZS5kYXlzVG9TdGFydCA8IDIgJiYgZXZlbnQucHJvcGVydGllcy5kYXRlUmFuZ2UuZGF5c1RvRW5kID4gLTJ9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCI+XG4gICAgICAgICAgPGEgaHJlZj17ZXZlbnQucHJvcGVydGllcy5saW5rcy5zdHJlYW19IHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJpY29ucy9saXZlc3RyZWFtLnBuZ1wiIGFsdD1cIkxpdmUgU3RyZWFtXCIgLz5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgey9pZn1cbiAgICAgIDwhLS0gcG9zdC1jb21wZXRpdGlvbiByZWNvcmRpbmdzIC0gdmlkZW9zL3Bob3RvcyAtLT5cbiAgICAgIHsjaWYgZXZlbnQucHJvcGVydGllcy5saW5rcy52aWRlb31cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25cIj5cbiAgICAgICAgICA8YSBocmVmPXtldmVudC5wcm9wZXJ0aWVzLmxpbmtzLnZpZGVvfSB0YXJnZXQ9XCJfYmxhbmtcIj5cbiAgICAgICAgICAgIDxpbWcgc3JjPVwiaWNvbnMvdmlkZW8ucG5nXCIgYWx0PVwiVmlkZW8gQ2hhbm5lbFwiIC8+XG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIHsvaWZ9XG4gICAgICB7I2lmIGV2ZW50LnByb3BlcnRpZXMubGlua3MuZ2FsbGVyeX1cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25cIj5cbiAgICAgICAgICA8YSBocmVmPXtldmVudC5wcm9wZXJ0aWVzLmxpbmtzLmdhbGxlcnl9IHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgPGltZyBzcmM9XCJpY29ucy9nYWxsZXJ5LnBuZ1wiIGFsdD1cIkdhbGxlcnlcIiAvPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICB7L2lmfVxuICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvblwiIG9uOmNsaWNrfHN0b3BQcm9wYWdhdGlvbj17cmVxdWVzdFNlbGVjdEV2ZW50fT5cbiAgICAgICAgPGltZyBzcmM9XCJpY29ucy9zZWUtbW9yZS5zdmdcIiAvPlxuICAgICAgPC9kaXY+IC0tPlxuICAgICAgeyNpZiAkdXNlci5yb2xlICE9PSBcImd1ZXN0XCJ9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tYnV0dG9uXCIgb246Y2xpY2s9e3RvZ2dsZVJlcXVlc3RGb2xsb3dFdmVudH0+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgc3JjPXtpc0ZvbGxvd2VkID8gXCJpY29ucy9mb2xsb3dpbmcucG5nXCIgOiBcImljb25zL2ZvbGxvdy5wbmdcIn1cbiAgICAgICAgICAgIGhlaWdodD1cIjIycHhcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgey9pZn1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPHN0eWxlPlxuICA6cm9vdCB7XG4gICAgLS1mbGFnLXdpZHRoOiA0NXB4O1xuICAgIC0tZmxhZy1oZWlnaHQ6IDMycHg7XG4gIH1cbiAgLmV2ZW50LWNhcmQge1xuICAgIG1hcmdpbjogMTBweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZXNtb2tlO1xuICAgIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgICBib3gtc2hhZG93OiAwIDAgNXB4IDVweCB2YXIoLS1jb2xvci1iYWNrZy1taWQpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxuICAuaXNIaWdobGlnaHRlZCB7XG4gICAgYm94LXNoYWRvdzogMCAwIDVweCA1cHggcmdiYSgyMjEsIDExLCAxMSwgMC41KTtcbiAgfVxuICAuZXZlbnQtY2FyZCAuaXNEcmFmdCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRnb2xkZW5yb2R5ZWxsb3c7XG4gICAgY29sb3I6IG5hdnk7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmlzQ2FuY2VsZWQge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGRhcmtzbGF0ZWdyZXk7XG4gICAgY29sb3I6IHdoaXRlO1xuICB9XG4gIC5ldmVudC1jYXJkIC5pc1VucHVibGlzaGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrc2xhdGVncmV5O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuICAuZXZlbnQtY2FyZCAuYm9keSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDEwcHggMTBweCA1cHggMTBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuICAuZXZlbnQtY2FyZCAuYm9keSAuYnJhbmQtYmcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICB3aWR0aDogMTAwJTsgLypcbiAgICBoZWlnaHQ6IGF1dG87ICovXG4gICAgb3BhY2l0eTogMC4xNTtcbiAgfVxuICAuZXZlbnQtY2FyZCAuYm9keSAuZXZlbnQtaW5mbyB7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDI4cHgpO1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHotaW5kZXg6IDI7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmJvZHkgLmV2ZW50LWluZm8gLmZsYWctcGxhY2UtZGF0ZSB7XG4gICAgaGVpZ2h0OiB2YXIoLS1mbGFnLWhlaWdodCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuICAuZXZlbnQtY2FyZCAuYm9keSAuZXZlbnQtaW5mbyAuZmxhZy1wbGFjZS1kYXRlIC5mbGFnIHtcbiAgICBoZWlnaHQ6IHZhcigtLWZsYWctaGVpZ2h0KTtcbiAgICB3aWR0aDogdmFyKC0tZmxhZy13aWR0aCk7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3gtc2hhZG93OiAwIDAgNXB4IDVweCB2YXIoLS1jb2xvci1iYWNrZy1taWQpO1xuICB9XG4gIC5ldmVudC1jYXJkIC5ib2R5IC5ldmVudC1pbmZvIC5mbGFnLXBsYWNlLWRhdGUgLmZsYWcgaW1nIHtcbiAgICBoZWlnaHQ6IHZhcigtLWZsYWctaGVpZ2h0KTtcbiAgICB3aWR0aDogdmFyKC0tZmxhZy13aWR0aCk7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmJvZHkgLmV2ZW50LWluZm8gLnBsYWNlLWRhdGUge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgfVxuICAuZXZlbnQtY2FyZCAuYm9keSAuZXZlbnQtaW5mbyAucGxhY2UtZGF0ZSAucGxhY2Uge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBmb250LXdlaWdodDogYm9sZGVyO1xuICB9XG4gIC5ldmVudC1jYXJkIC5ib2R5IC5ldmVudC1pbmZvIC5wbGFjZS1kYXRlIC5kYXRlIHtcbiAgfVxuICAuZXZlbnQtY2FyZCAuYm9keSAuZXZlbnQtaW5mbyAuZXZlbnQtdGl0bGUge1xuICAgIGhlaWdodDogNTVweDtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmJvZHkgLmV2ZW50LWluZm8gLmV2ZW50LXRpdGxlIC50ZXh0IHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIC8qIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgaGVpZ2h0OiAyZW07XG4gICAgbGluZS1oZWlnaHQ6IDFlbTsgKi9cbiAgfVxuICAuZXZlbnQtY2FyZCAuYm9keSAuY2F0ZWdvcmllcyB7XG4gICAgLyogYm9yZGVyOiAxcHggc29saWQgYmxhY2s7ICovXG4gICAgd2lkdGg6IDI4cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgZm9udC1zaXplOiA4cHg7XG4gICAgei1pbmRleDogMjtcbiAgfVxuICAuRXZlbnRDYXJkX19jYXRlZ29yeSB7XG4gICAgaGVpZ2h0OiAyNnB4O1xuICAgIHdpZHRoOiAyNnB4O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgva2F0ZWdvcmlqZS8xNngxNnB4L29yYW5nZS9waW4uc3ZnKTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgIC8qIGJveC1zaGFkb3c6IDAgMCA1cHggNXB4IHZhcigtLWNvbG9yLWJhY2tnLW1pZCk7ICovXG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgcGFkZGluZy10b3A6IDRweDtcbiAgfVxuICAvKiAuZXZlbnQtY2FyZCAuYm9keSAuY2F0ZWdvcmllcyAuY2F0ZWdvcnktaWNvbiB7XG4gICAgaGVpZ2h0OiAyOHB4O1xuICAgIHdpZHRoOiAyNnB4O1xuICB9XG4gIC5ldmVudC1jYXJkIC5ib2R5IC5jYXRlZ29yaWVzIC5jYXRlZ29yeSBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICB9ICovXG4gIC5ldmVudC1jYXJkIC5mb290ZXIge1xuICAgIGhlaWdodDogNDBweDtcbiAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZm9yZWctc2hhZG93KTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuICAuZXZlbnQtY2FyZCAuZm9vdGVyIC5icmFuZHMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleDogMSAwIGF1dG87XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmZvb3RlciAuYnJhbmRzIC53YXJyYW50b3ItaWNvbiB7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIG1hcmdpbjogMCAzcHggMCAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICAuZXZlbnQtY2FyZCAuZm9vdGVyIC5icmFuZHMgLndhcnJhbnRvci1pY29uIGltZyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb2JqZWN0LWZpdDogY29udGFpbjtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmZvb3RlciAuYnJhbmRzIC5icmFuZC1pY29uIHtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgd2lkdGg6IDMwcHg7XG4gICAgbWFyZ2luOiAwIDNweCAwIDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIC8qIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOyAqL1xuICB9XG4gIC5ldmVudC1jYXJkIC5mb290ZXIgLmJyYW5kcyAuYnJhbmQtaWNvbiBpbWcge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmZvb3RlciAuYWN0aW9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgLmV2ZW50LWNhcmQgLmZvb3RlciAuYWN0aW9ucyAuYWN0aW9uLWJ1dHRvbiB7XG4gICAgaGVpZ2h0OiAzMHB4O1xuICAgIHdpZHRoOiAzMHB4O1xuICAgIHBhZGRpbmc6IDNweDtcbiAgICBtYXJnaW46IDAgMCAwIDVweDtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYWN0aW9uLW1haW4pO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICAuZXZlbnQtY2FyZCAuZm9vdGVyIC5hY3Rpb25zIC5hY3Rpb24tYnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hY3Rpb24taG92ZXIpO1xuICB9XG4gIC5ldmVudC1jYXJkIC5mb290ZXIgLmFjdGlvbnMgLmFjdGlvbi1idXR0b24gaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb250YWluO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IEV2ZW50Q2FyZCBmcm9tIFwiLi9FdmVudENhcmQuc3ZlbHRlXCI7XG5cbiAgaW1wb3J0IHsgZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzLCBhZGQgfSBmcm9tIFwiZGF0ZS1mbnNcIjtcblxuICBpbXBvcnQge1xuICAgIGNoZWNrSWZFdmVudElzSGlnaGxpZ2h0ZWQsXG4gICAgY2hlY2tJZkV2ZW50SXNTaG9ydGxpc3RlZCxcbiAgfSBmcm9tIFwiLi9FdmVudHNMaXN0XCI7XG5cbiAgZXhwb3J0IGxldCB0b3RhbEV2ZW50c0xpc3RDb2x1bW5zO1xuICBleHBvcnQgbGV0IGV2ZW50cyA9IFtdO1xuICBleHBvcnQgbGV0IHNob3J0bGlzdGVkRXZlbnRzO1xuICBleHBvcnQgbGV0IGhpZ2hsaWdodGVkRXZlbnQ7XG4gIC8vIGxldCBmcmFtZVN0eWxlO1xuXG4gIGNvbnN0IGhpZ2hsaWdodEV2ZW50ID0gKGUpID0+IHtcbiAgICBoaWdobGlnaHRlZEV2ZW50ID0gZS5kZXRhaWw7XG4gIH07XG5cbiAgJDogZ3JpZENvbHVtbnMgPSBgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoJHt0b3RhbEV2ZW50c0xpc3RDb2x1bW5zfSwgMWZyKTtgO1xuPC9zY3JpcHQ+XG5cbjxkaXY+XG4gIHsjaWYgZXZlbnRzICYmIGV2ZW50cy5sZW5ndGggPiAwfVxuICAgIDxkaXYgY2xhc3M9XCJncmlkXCIgc3R5bGU9e2dyaWRDb2x1bW5zfT5cbiAgICAgIHsjZWFjaCBldmVudHMgYXMgZXZlbnR9XG4gICAgICAgIDxFdmVudENhcmRcbiAgICAgICAgICB7ZXZlbnR9XG4gICAgICAgICAgaXNIaWdobGlnaHRlZD17Y2hlY2tJZkV2ZW50SXNIaWdobGlnaHRlZChldmVudCwgaGlnaGxpZ2h0ZWRFdmVudCkgfHxcbiAgICAgICAgICAgIGNoZWNrSWZFdmVudElzU2hvcnRsaXN0ZWQoZXZlbnQsIHNob3J0bGlzdGVkRXZlbnRzKX1cbiAgICAgICAgICBvbjpoaWdobGlnaHRFdmVudFJlcXVlc3RlZD17aGlnaGxpZ2h0RXZlbnR9XG4gICAgICAgICAgb246aGlnaGxpZ2h0QnJhbmRSZXF1ZXN0ZWRcbiAgICAgICAgICBvbjpzZWxlY3RFdmVudFJlcXVlc3RlZFxuICAgICAgICAgIG9uOnRvZ2dsZUZvbGxvd0V2ZW50UmVxdWVzdGVkXG4gICAgICAgIC8+XG4gICAgICB7L2VhY2h9XG4gICAgPC9kaXY+XG4gIHs6ZWxzZX1cbiAgICA8cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogMTBweDsgZm9udC13ZWlnaHQ6IGJvbGRlcjtcIj5cbiAgICAgIE5vIGV2ZW50IG1hdGNoZXMgdGhlIHNldCBjcml0ZXJpYVxuICAgIDwvcD5cbiAgey9pZn1cblxuICA8ZGl2IGNsYXNzPVwiYm90dG9tLWxpbmVcIj5cbiAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCVcIj5cbiAgICAgIDxwIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDEycHhcIj5cbiAgICAgICAgPGIgc3R5bGU9XCJmb250LXNpemU6IDEycHhcIj5jcmVkaXRzOjwvYj5cbiAgICAgICAgRmxhZyBpY29ucyBtYWRlIGJ5XG4gICAgICAgIDxhXG4gICAgICAgICAgaHJlZj1cImh0dHBzOi8vd3d3LmZsYXRpY29uLmNvbS9hdXRob3JzL2ZyZWVwaWtcIlxuICAgICAgICAgIHRpdGxlPVwiRnJlZXBpa1wiXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDEycHhcIlxuICAgICAgICA+XG4gICAgICAgICAgRnJlZXBpa1xuICAgICAgICA8L2E+XG4gICAgICAgIGZyb21cbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cuZmxhdGljb24uY29tL1wiXG4gICAgICAgICAgdGl0bGU9XCJGbGF0aWNvblwiXG4gICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDEycHhcIlxuICAgICAgICA+XG4gICAgICAgICAgd3d3LmZsYXRpY29uLmNvbVxuICAgICAgICA8L2E+XG4gICAgICAgIHtcIiAvIFwifVxuICAgICAgICBPdGhlciBpY29ucyBieVxuICAgICAgICA8YVxuICAgICAgICAgIGhyZWY9XCJodHRwczovL3RoZW5vdW5wcm9qZWN0LmNvbS9cIlxuICAgICAgICAgIHRpdGxlPVwiTm91biBwcm9qZWN0XCJcbiAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMTJweFwiXG4gICAgICAgID5cbiAgICAgICAgICBUaGUgTm91biBQcm9qZWN0XG4gICAgICAgIDwvYT5cbiAgICAgICAgY29sbGFib3JhdG9yc1xuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48c3R5bGU+XG4gIC5ncmlkIHtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gIH1cbiAgLmJvdHRvbS1saW5lIHtcbiAgICBtaW4taGVpZ2h0OiAyMHB4O1xuICAgIHBhZGRpbmc6IDVweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1mb3JlZy1zaGFkb3cpO1xuICB9XG48L3N0eWxlPlxuIiwiPHNjcmlwdD5cbiAgaW1wb3J0IHsgb25Nb3VudCB9IGZyb20gXCJzdmVsdGVcIjtcblxuICBpbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL3VpL01vZGFsLnN2ZWx0ZVwiO1xuICBpbXBvcnQgRXZlbnREZXRhaWxzIGZyb20gXCIuLi9FdmVudERldGFpbHMvaW5kZXguc3ZlbHRlXCI7XG4gIC8vIGltcG9ydCBFdmVudEVkaXRvciBmcm9tIFwiLi4vRXZlbnRFZGl0b3IvaW5kZXguc3ZlbHRlXCI7XG4gIGltcG9ydCBEc2FGaWx0ZXIgZnJvbSBcIi4vRHNhRmlsdGVyLnN2ZWx0ZVwiO1xuICBpbXBvcnQgS2V5d29yZEFuZFByb2dyYW1GaWx0ZXIgZnJvbSBcIi4vS2V5d29yZEFuZFByb2dyYW1GaWx0ZXIuc3ZlbHRlXCI7XG4gIGltcG9ydCBEYXRlUmFuZ2VGaWx0ZXIgZnJvbSBcIi4vRGF0ZVJhbmdlRmlsdGVyLnN2ZWx0ZVwiO1xuICBpbXBvcnQgR2VvbWFwRmlsdGVyIGZyb20gXCIuL0dlb21hcEZpbHRlci5zdmVsdGVcIjtcbiAgaW1wb3J0IEV2ZW50c0xpc3QgZnJvbSBcIi4vRXZlbnRzTGlzdC5zdmVsdGVcIjtcblxuICBpbXBvcnQge1xuICAgIGZldGNoRXZlbnRzRnJvbURCLFxuICAgIHRvZ2dsZUZvbGxvd0V2ZW50SW5EQixcbiAgICByZWdpc3RlckFjdGl2aXR5LFxuICAgIGV4dHJhY3RQcm9ncmFtRmlsdGVyc0Zyb21FdmVudHMsXG4gICAgZmlsdGVyRXZlbnRzQnlJc0ZvbGxvd2VkRmlsdGVyLFxuICAgIGZpbHRlckV2ZW50c0J5S2V5d29yZEZpbHRlcixcbiAgICBmaWx0ZXJFdmVudHNCeURTQUZpbHRlcixcbiAgICBmaWx0ZXJFdmVudHNCeURTQUhvdmVyZWQsXG4gICAgZmlsdGVyRXZlbnRzQnlEU0FTZWxlY3RlZCxcbiAgICBmaWx0ZXJFdmVudHNCeUhpZ2hsaWdodGVkQnJhbmQsXG4gICAgZmlsdGVyRXZlbnRzQnlDYXRlZ29yaWVzRmlsdGVyLFxuICAgIGNvdW50RXZlbnRzQnlEYXRlLFxuICAgIGZpbHRlckV2ZW50c0J5RGF0ZVJhbmdlRmlsdGVyLFxuICAgIGZpbHRlckV2ZW50c0J5SG92ZXJlZERhdGUsXG4gICAgZmlsdGVyRXZlbnRzQnlHZW9GaWx0ZXIsXG4gICAgZ2V0SGlnaGxpZ2h0ZWREYXRlUmFuZ2UsXG4gICAgYWRhcHREaXNwbGF5LFxuICB9IGZyb20gXCIuL2luZGV4XCI7XG5cbiAgaW1wb3J0IHsgdXNlciwgdmlld3BvcnRXSCB9IGZyb20gXCIuLi8uLi9zdG9yZXNcIjtcblxuICBsZXQgc2VsZWN0ZWRTZWFzb247XG4gIGxldCBob3ZlcmVkRGF0ZTtcblxuICBsZXQgbWFwV2lkdGg7XG4gIGxldCB1c2VySG9tZUxvY2F0aW9uID0ge307XG4gIGxldCB1c2VyQ3VycmVudExvY2F0aW9uID0ge307XG5cbiAgbGV0IGtleXdvcmRGaWx0ZXIgPSBcIlwiO1xuICBsZXQgYnJhbmRzRmlsdGVyID0gW107XG4gIGxldCBpc1ZhY2FuY3lGaWx0ZXIgPSBmYWxzZTtcbiAgbGV0IGlzTmV3c0ZpbHRlciA9IGZhbHNlO1xuICBsZXQgaXNGb2xsb3dlZEZpbHRlciA9IGZhbHNlO1xuICBsZXQgaXNHcmFudGVkRmlsdGVyID0gZmFsc2U7XG4gIGxldCBkc2FGaWx0ZXIgPSBbXTtcbiAgbGV0IGNhdGVnb3JpZXNGaWx0ZXIgPSBbXTtcbiAgbGV0IGRhdGVSYW5nZUZpbHRlciA9IHt9O1xuICBsZXQgZ2VvRmlsdGVyID0ge307XG4gIGxldCBoaWdobGlnaHRlZERhdGVSYW5nZSA9IHt9O1xuXG4gIGxldCB1bmZpbHRlcmVkRXZlbnRzO1xuICBsZXQgZXZlbnRzQnlEYXRlID0ge307XG4gIC8vIGxldCBkc2FGaWx0ZXJlZEV2ZW50cyA9IFtdO1xuICAvLyBsZXQgY2F0ZWdvcmllc0ZpbHRlcmVkRXZlbnRzID0gW107XG4gIGxldCBrZXl3b3JkRmlsdGVyZWRFdmVudHMgPSBbXTtcbiAgLy8gbGV0IGlzRm9sbG93ZWRGaWx0ZXJlZEV2ZW50cyA9IFtdO1xuICBsZXQgZGF0ZVJhbmdlRmlsdGVyZWRFdmVudHMgPSBbXTtcbiAgLy8gbGV0IGdlb0ZpbHRlcmVkRXZlbnRzID0gW107XG4gIGxldCBzaG9ydGxpc3RlZEV2ZW50cyA9IFtdO1xuICAvLyBsZXQgZmlsdGVyZWRFdmVudHMgPSBbXTtcbiAgLy8gbGV0IGxpc3RlZEV2ZW50cyA9IFtdO1xuXG4gIGxldCBkc2FGaWx0ZXJTaG93biA9IGZhbHNlO1xuICBsZXQgZHNhRmlsdGVyQWN0aXZlID0gZmFsc2U7XG4gIGxldCBkc2FGaWx0ZXJNb2RhbFc7XG4gIGxldCBkc2FIb3ZlcmVkO1xuICBsZXQgZHNhU2VsZWN0ZWQ7XG5cbiAgbGV0IGhpZ2hsaWdodGVkQnJhbmQ7XG5cbiAgbGV0IGNhdGVnb3JpZXNJblVuZmlsdGVyZWRFdmVudHMgPSBbXTtcbiAgbGV0IGNvbXBldGl0aW9uc0luVW5maWx0ZXJlZEV2ZW50cyA9IFtdO1xuXG4gIGxldCBoaWdobGlnaHRlZEV2ZW50O1xuICBsZXQgc2VsZWN0ZWRFdmVudDtcblxuICBsZXQgZXZlbnREZXRhaWxzU2hvd24gPSBmYWxzZTtcbiAgbGV0IGV2ZW50RGV0YWlsc01vZGFsVyA9IDEwMDA7XG5cbiAgLy8gbGV0IGlkYjtcbiAgbGV0IG1vdW50ZWQgPSBmYWxzZTtcblxuICBsZXQgZXZlbnRzTGlzdFdpZHRoO1xuICBsZXQgdG90YWxFdmVudHNMaXN0Q29sdW1ucztcbiAgbGV0IGlzRXZlbnRzU2lkZXBhbmVPbjtcblxuICBjb25zdCBpbml0aWFsaXplVXNlckJyb3dzaW5nU2V0dGluZ3MgPSAoc2Vhc29uLCBpZFVzZXIpID0+IHtcbiAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oaWRVc2VyKSkge1xuICAgICAgbGV0IGJyb3dzaW5nID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShpZFVzZXIpKTtcbiAgICAgIGtleXdvcmRGaWx0ZXIgPSBicm93c2luZy5rZXl3b3JkRmlsdGVyIHx8IGtleXdvcmRGaWx0ZXI7XG4gICAgICBkc2FGaWx0ZXIgPSBicm93c2luZy5kc2FGaWx0ZXIgfHwgZHNhRmlsdGVyO1xuICAgICAgY2F0ZWdvcmllc0ZpbHRlciA9IGJyb3dzaW5nLmNhdGVnb3JpZXNGaWx0ZXIgfHwgY2F0ZWdvcmllc0ZpbHRlcjtcbiAgICAgIGlmIChzZWFzb24gJiYgYnJvd3NpbmcuZGF0ZVJhbmdlcyAmJiBicm93c2luZy5kYXRlUmFuZ2VzW3NlYXNvbl0pXG4gICAgICAgIGRhdGVSYW5nZUZpbHRlcltzZWFzb25dID0ge1xuICAgICAgICAgIHN0YXJ0OiBicm93c2luZy5kYXRlUmFuZ2VzW3NlYXNvbl0uc3RhcnQsXG4gICAgICAgICAgZW5kOiBicm93c2luZy5kYXRlUmFuZ2VzW3NlYXNvbl0uZW5kLFxuICAgICAgICB9O1xuICAgICAgZ2VvRmlsdGVyID0gYnJvd3NpbmcuZ2VvRmlsdGVyIHx8IHt9O1xuICAgICAgaXNHcmFudGVkRmlsdGVyID0gYnJvd3NpbmcuaXNHcmFudGVkRmlsdGVyIHx8IGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVmcmVzaFVuZmlsdGVyZWRFdmVudHMgPSBhc3luYyAoXG4gICAgc2Vhc29uLFxuICAgIGlzR3JhbnRlZEZpbHRlcixcbiAgICBkYXRhc2V0UmVmcmVzaFxuICApID0+IHtcbiAgICBpZiAoIXNlYXNvbikgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50c1R5cGUgPSBpc0dyYW50ZWRGaWx0ZXIgPyBcImdyYW50ZWRcIiA6IFwicHVibGljXCI7XG4gICAgY2F0ZWdvcmllc0luVW5maWx0ZXJlZEV2ZW50cyA9IFtdO1xuICAgIHVuZmlsdGVyZWRFdmVudHMgPSBbXTtcbiAgICBsZXQgYWNjZXNzRnJvbTtcbiAgICBsZXQge1xuICAgICAgd2hlbkxhc3RVcGRhdGUsXG4gICAgICBsaXN0OiBmZXRjaGVkRXZlbnRzLFxuICAgICAgY2F0ZWdvcmllc0luRGF0YXNldCxcbiAgICAgIC4uLmxvZ2luXG4gICAgfSA9IGF3YWl0IGZldGNoRXZlbnRzRnJvbURCKHtcbiAgICAgIHVzZXI6ICR1c2VyLFxuICAgICAgZXZlbnRzVHlwZSxcbiAgICAgIHNlYXNvbixcbiAgICAgIGFjY2Vzc0Zyb20sXG4gICAgfSk7XG4gICAgaWYgKCFmZXRjaGVkRXZlbnRzKSB7XG4gICAgICAvLyBpZiBsb2dpbiBkYXRhIGZldGNoZWRcbiAgICAgIHJlZ2lzdGVyQWN0aXZpdHkoXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcInVzZXIgbG9naW4gdXNpbmcgY29va2llXCIsXG4gICAgICAgIH0sXG4gICAgICAgICR1c2VyLnRva2VuXG4gICAgICApO1xuICAgICAgJHVzZXIgPSBsb2dpbjtcbiAgICAgIGF3YWl0IHJlZnJlc2hVbmZpbHRlcmVkRXZlbnRzKHNlYXNvbiwgaXNHcmFudGVkRmlsdGVyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gaWYgZXZlbnQgZGF0YSBmZXRjaGVkXG4gICAgdW5maWx0ZXJlZEV2ZW50cyA9IGZldGNoZWRFdmVudHM7XG4gICAgY2F0ZWdvcmllc0luVW5maWx0ZXJlZEV2ZW50cyA9IGNhdGVnb3JpZXNJbkRhdGFzZXQ7XG4gICAgcmVnaXN0ZXJBY3Rpdml0eShcbiAgICAgIHtcbiAgICAgICAgdHlwZTogXCJldmVudHMgZGF0YXNldCBkZWxpdmVyZWRcIixcbiAgICAgICAgZGF0YXNldDpcbiAgICAgICAgICAkdXNlci5ldmVudHNbc2Vhc29uXSAmJiAkdXNlci5ldmVudHNbc2Vhc29uXVtldmVudHNUeXBlXVxuICAgICAgICAgICAgPyBcInVwZGF0ZVwiXG4gICAgICAgICAgICA6IFwiZnVsbFwiLFxuICAgICAgICBldmVudHNEZWxpdmVyZWQ6IGZldGNoZWRFdmVudHMubGVuZ3RoLFxuICAgICAgfSxcbiAgICAgICR1c2VyLnRva2VuXG4gICAgKTtcbiAgfTtcblxuICAvLyBjb25zdCBoYW5kbGVFdmVudFNhdmVkID0gYXN5bmMgZSA9PiB7XG4gIC8vICAgc2VsZWN0ZWRFdmVudCA9IGUuZGV0YWlsO1xuICAvLyAgIGF3YWl0IHJlZnJlc2hVbmZpbHRlcmVkRXZlbnRzKHRydWUpO1xuICAvLyB9O1xuICBjb25zdCBoYW5kbGVFdmVudERlbGV0ZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgcmVmcmVzaFVuZmlsdGVyZWRFdmVudHMoc2VsZWN0ZWRTZWFzb24sIHRydWUpO1xuICAgIGV2ZW50RGV0YWlsc1Nob3duID0gZmFsc2U7XG4gIH07XG4gIGNvbnN0IHRvZ2dsZUV2ZW50RGV0YWlsc1Nob3duID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHR5cGUgPSBldmVudERldGFpbHNTaG93biA/IFwiZXZlbnQgZGlzbWlzc2VkXCIgOiBcImV2ZW50IHNlbGVjdGVkXCI7XG4gICAgY29uc3QgZXZlbnRJZCA9IHNlbGVjdGVkRXZlbnQucHJvcGVydGllcy5pZDtcbiAgICByZWdpc3RlckFjdGl2aXR5KHsgdHlwZSwgZXZlbnRJZCB9LCAkdXNlci50b2tlbik7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiZXZlbnQgc2VsZWN0ZWRcIjpcbiAgICAgICAgLy8gVE9ETyBwcm9iYWogdcSNaXRhdGkgZnJpxaFrZSBwb2RhdGtlIG8gcHJpcmVkYmkgcHJpamUgbmVnbyBqdSBwcmlrYcW+ZcWhXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImV2ZW50IGRpc21pc3NlZFwiOlxuICAgICAgICAvLyBwcm9iYWogdcSNaXRhdGkgcG9kYXRrZSBvIHN2aW0gcHJpcmVkYmFtYSBpem1pamVuamVuaW0gdSBtZcSRdXZyZW1lbnVcbiAgICAgICAgLy8gLSB6YSBzYWRhIG92byByYWRpIHNhbW8gemEgc2x1xI1haiBhZG1pbiBpem1qZW5lIHBvZGF0YWthLFxuICAgICAgICAvLyBvc3ZqZcW+YXZhbmplIHphIG9iacSNbmUga29yaXNuaWtlIMSHZcWhIHJpamXFoWl0aSBrcm96IHdlYnNvY2tldFxuICAgICAgICBpZiAoaXNHcmFudGVkRmlsdGVyKVxuICAgICAgICAgIGF3YWl0IHJlZnJlc2hVbmZpbHRlcmVkRXZlbnRzKHNlbGVjdGVkU2Vhc29uLCBpc0dyYW50ZWRGaWx0ZXIsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZXZlbnREZXRhaWxzU2hvd24gPSAhZXZlbnREZXRhaWxzU2hvd247XG4gIH07XG4gIGNvbnN0IHRvZ2dsZUV2ZW50RWRpdG9yU2hvd24gPSAoKSA9PiB7XG4gICAgZXZlbnRFZGl0b3JTaG93biA9ICFldmVudEVkaXRvclNob3duO1xuICB9O1xuICBjb25zdCB0b2dnbGVEc2FGaWx0ZXJTaG93biA9ICgpID0+IHtcbiAgICBkc2FGaWx0ZXJTaG93biA9ICFkc2FGaWx0ZXJTaG93bjtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0RXZlbnQgPSAoZSkgPT4ge1xuICAgIHNlbGVjdGVkRXZlbnQgPSBlLmRldGFpbDtcbiAgICB0b2dnbGVFdmVudERldGFpbHNTaG93bigpO1xuICB9O1xuICBjb25zdCB0b2dnbGVGb2xsb3dFdmVudCA9IChlKSA9PiB7XG4gICAgY29uc3QgZXZlbnRUb1RvZ2dsZSA9IGUuZGV0YWlsO1xuICAgIHVuZmlsdGVyZWRFdmVudHMgPSB1bmZpbHRlcmVkRXZlbnRzLm1hcCgoZXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5wcm9wZXJ0aWVzLmlkID09PSBldmVudFRvVG9nZ2xlLnByb3BlcnRpZXMuaWQpXG4gICAgICAgIGV2ZW50LnByb3BlcnRpZXMuaXNGb2xsb3dlZCA9ICFldmVudC5wcm9wZXJ0aWVzLmlzRm9sbG93ZWQ7XG4gICAgICBpZiAoIWV2ZW50LnByb3BlcnRpZXMuaXNGb2xsb3dlZCkge1xuICAgICAgICBoaWdobGlnaHRlZEV2ZW50ID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBldmVudDtcbiAgICB9KTtcbiAgICB0b2dnbGVGb2xsb3dFdmVudEluREIoJHVzZXIsIGV2ZW50VG9Ub2dnbGUpO1xuICB9O1xuICBjb25zdCBoaWdobGlnaHRCcmFuZCA9IChlKSA9PiB7XG4gICAgaGlnaGxpZ2h0ZWRCcmFuZCA9IGUuZGV0YWlsO1xuICB9O1xuXG4gICQ6IGlmIChzZWxlY3RlZFNlYXNvbikge1xuICAgIC8vIGV2ZW50c0J5RGF0ZSA9IGxpc3RlZEV2ZW50c0J5RGF0ZSA9IHt9O1xuICAgIGtleXdvcmRGaWx0ZXJlZEV2ZW50cyA9IFtdO1xuICB9XG4gICQ6IGlmIChzZWxlY3RlZFNlYXNvbikge1xuICAgIHJlZnJlc2hVbmZpbHRlcmVkRXZlbnRzKHNlbGVjdGVkU2Vhc29uLCBpc0dyYW50ZWRGaWx0ZXIpO1xuICB9XG4gICQ6IGlzRm9sbG93ZWRGaWx0ZXJlZEV2ZW50cyA9IGlzRm9sbG93ZWRGaWx0ZXJcbiAgICA/IGZpbHRlckV2ZW50c0J5SXNGb2xsb3dlZEZpbHRlcih1bmZpbHRlcmVkRXZlbnRzKVxuICAgIDogdW5maWx0ZXJlZEV2ZW50cztcbiAgY29uc3QgZmlsdGVyRXZlbnRzQnlWYWNhbmN5RmlsdGVyID0gKGV2ZW50cykgPT4ge1xuICAgIGNvbnN0IG9yaWdFdmVudHMgPSBldmVudHNcbiAgICBjb25zdCBvdXRFdmVudHMgPSBldmVudHMuZmlsdGVyKGV2ZW50ID0+IGV2ZW50LnByb3BlcnRpZXMucHJvZ3JhbS52YWNhbmN5QWxlcnRzKVxuICAgIHJldHVybiBvdXRFdmVudHNcbiAgICB9XG4gICQ6IGlzVmFjYW5jeUZpbHRlcmVkRXZlbnRzID0gaXNWYWNhbmN5RmlsdGVyIFxuICAgID8gZmlsdGVyRXZlbnRzQnlWYWNhbmN5RmlsdGVyKHVuZmlsdGVyZWRFdmVudHMpIFxuICAgIDogdW5maWx0ZXJlZEV2ZW50c1xuICAkOiBkc2FGaWx0ZXJlZEV2ZW50cyA9IGRzYUZpbHRlckFjdGl2ZVxuICAgID8gZmlsdGVyRXZlbnRzQnlEU0FGaWx0ZXIoaXNWYWNhbmN5RmlsdGVyZWRFdmVudHMsIGRzYUZpbHRlcilcbiAgICA6IGlzVmFjYW5jeUZpbHRlcmVkRXZlbnRzO1xuICAkOiBkc2FTZWxlY3RlZEV2ZW50cyA9IGRzYUZpbHRlckFjdGl2ZVxuICAgID8gZmlsdGVyRXZlbnRzQnlEU0FTZWxlY3RlZChkc2FGaWx0ZXJlZEV2ZW50cywgZHNhU2VsZWN0ZWQpXG4gICAgOiBkc2FGaWx0ZXJlZEV2ZW50cztcbiAgJDogZHNhSG92ZXJlZEV2ZW50cyA9IGZpbHRlckV2ZW50c0J5RFNBSG92ZXJlZChkc2FTZWxlY3RlZEV2ZW50cywgZHNhSG92ZXJlZCk7XG4gIC8vICoqKipcbiAgJDogZHNhSG92ZXJlZEV2ZW50c0J5RGF0ZSA9IHt9O1xuICAvLyAkOiBkc2FIb3ZlcmVkRXZlbnRzQnlEYXRlID0gaXNFdmVudHNTaWRlcGFuZU9uXG4gIC8vICAgPyBjb3VudEV2ZW50c0J5RGF0ZShkc2FIb3ZlcmVkRXZlbnRzKVxuICAvLyAgIDoge307XG4gIC8vICoqKipcblxuICAkOiBjYXRlZ29yaWVzRmlsdGVyZWRFdmVudHMgPSBmaWx0ZXJFdmVudHNCeUNhdGVnb3JpZXNGaWx0ZXIoXG4gICAgZHNhU2VsZWN0ZWRFdmVudHMsXG4gICAgY2F0ZWdvcmllc0ZpbHRlclxuICApO1xuICAkOiBrZXl3b3JkRmlsdGVyZWRFdmVudHMgPVxuICAgIGZpbHRlckV2ZW50c0J5S2V5d29yZEZpbHRlcihjYXRlZ29yaWVzRmlsdGVyZWRFdmVudHMsIGtleXdvcmRGaWx0ZXIpIHx8XG4gICAgY2F0ZWdvcmllc0ZpbHRlcmVkRXZlbnRzO1xuXG4gICQ6IGV2ZW50c0J5RGF0ZSA9IGlzRXZlbnRzU2lkZXBhbmVPblxuICAgID8gY291bnRFdmVudHNCeURhdGUoa2V5d29yZEZpbHRlcmVkRXZlbnRzKVxuICAgIDoge307XG4gICQ6IGdlb0ZpbHRlcmVkRXZlbnRzID0gZmlsdGVyRXZlbnRzQnlHZW9GaWx0ZXIoXG4gICAga2V5d29yZEZpbHRlcmVkRXZlbnRzLFxuICAgIGdlb0ZpbHRlclxuICApO1xuICAkOiBsaXN0ZWRFdmVudHNCeURhdGUgPSBpc0V2ZW50c1NpZGVwYW5lT25cbiAgICA/IGNvdW50RXZlbnRzQnlEYXRlKGdlb0ZpbHRlcmVkRXZlbnRzKVxuICAgIDoge307XG4gICQ6IGlmIChzZWxlY3RlZFNlYXNvbilcbiAgICBkYXRlUmFuZ2VGaWx0ZXJlZEV2ZW50cyA9XG4gICAgICAhaXNFdmVudHNTaWRlcGFuZU9uICYmIGtleXdvcmRGaWx0ZXIgIT0gXCJcIlxuICAgICAgICA/IGtleXdvcmRGaWx0ZXJlZEV2ZW50c1xuICAgICAgICA6IHNlbGVjdGVkU2Vhc29uICYmIGRhdGVSYW5nZUZpbHRlclxuICAgICAgICA/IGZpbHRlckV2ZW50c0J5RGF0ZVJhbmdlRmlsdGVyKFxuICAgICAgICAgICAga2V5d29yZEZpbHRlcmVkRXZlbnRzLFxuICAgICAgICAgICAgZGF0ZVJhbmdlRmlsdGVyW3NlbGVjdGVkU2Vhc29uXVxuICAgICAgICAgIClcbiAgICAgICAgOiBbXTtcbiAgJDogbGlzdGVkRXZlbnRzID1cbiAgICAhaXNFdmVudHNTaWRlcGFuZU9uICYmIGtleXdvcmRGaWx0ZXIgIT0gXCJcIlxuICAgICAgPyBrZXl3b3JkRmlsdGVyZWRFdmVudHNcbiAgICAgIDogZmlsdGVyRXZlbnRzQnlHZW9GaWx0ZXIoZGF0ZVJhbmdlRmlsdGVyZWRFdmVudHMsIGdlb0ZpbHRlcik7XG4gICQ6IHNob3J0bGlzdGVkRXZlbnRzID0gZmlsdGVyRXZlbnRzQnlIb3ZlcmVkRGF0ZShsaXN0ZWRFdmVudHMsIGhvdmVyZWREYXRlKTtcbiAgJDogc2hvcnRsaXN0ZWRFdmVudHMgPSBmaWx0ZXJFdmVudHNCeURTQUhvdmVyZWQobGlzdGVkRXZlbnRzLCBkc2FIb3ZlcmVkKTtcbiAgJDogc2hvcnRsaXN0ZWRFdmVudHMgPSBmaWx0ZXJFdmVudHNCeUhpZ2hsaWdodGVkQnJhbmQoXG4gICAgbGlzdGVkRXZlbnRzLFxuICAgIGhpZ2hsaWdodGVkQnJhbmRcbiAgKTtcbiAgJDogc2hvcnRsaXN0ZWRFdmVudHNCeURhdGUgPSBpc0V2ZW50c1NpZGVwYW5lT25cbiAgICA/IGNvdW50RXZlbnRzQnlEYXRlKHNob3J0bGlzdGVkRXZlbnRzKVxuICAgIDoge307XG5cbiAgJDogaGlnaGxpZ2h0ZWREYXRlUmFuZ2UgPSBnZXRIaWdobGlnaHRlZERhdGVSYW5nZShoaWdobGlnaHRlZEV2ZW50KTtcblxuICBvbk1vdW50KCgpID0+IHtcbiAgICBtb3VudGVkID0gdHJ1ZTtcbiAgfSk7XG5cbiAgJDogaWYgKG1vdW50ZWQpIHtcbiAgICAoeyB0b3RhbEV2ZW50c0xpc3RDb2x1bW5zLCBpc0V2ZW50c1NpZGVwYW5lT24sIG1hcFdpZHRoLCBldmVudHNMaXN0V2lkdGggfSA9XG4gICAgICBhZGFwdERpc3BsYXkoJHZpZXdwb3J0V0gudykpO1xuICB9XG5cbiAgJDogaWYgKG1vdW50ZWQgJiYgc2VsZWN0ZWRTZWFzb24pXG4gICAgaW5pdGlhbGl6ZVVzZXJCcm93c2luZ1NldHRpbmdzKHNlbGVjdGVkU2Vhc29uLCAkdXNlci5pZCk7XG4gICQ6IGlmIChtb3VudGVkICYmIHNlbGVjdGVkU2Vhc29uKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAkdXNlci5pZCxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgc2VsZWN0ZWRTZWFzb24sXG4gICAgICAgIGtleXdvcmRGaWx0ZXIsXG4gICAgICAgIGRzYUZpbHRlcixcbiAgICAgICAgY2F0ZWdvcmllc0ZpbHRlcixcbiAgICAgICAgZGF0ZVJhbmdlczoge1xuICAgICAgICAgIC4uLihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgkdXNlci5pZClcbiAgICAgICAgICAgID8gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgkdXNlci5pZCkpLmRhdGVSYW5nZXNcbiAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgIFtzZWxlY3RlZFNlYXNvbl06IHtcbiAgICAgICAgICAgIHN0YXJ0OlxuICAgICAgICAgICAgICBkYXRlUmFuZ2VGaWx0ZXJbc2VsZWN0ZWRTZWFzb25dICYmXG4gICAgICAgICAgICAgIGRhdGVSYW5nZUZpbHRlcltzZWxlY3RlZFNlYXNvbl0uc3RhcnQsXG4gICAgICAgICAgICBlbmQ6XG4gICAgICAgICAgICAgIGRhdGVSYW5nZUZpbHRlcltzZWxlY3RlZFNlYXNvbl0gJiZcbiAgICAgICAgICAgICAgZGF0ZVJhbmdlRmlsdGVyW3NlbGVjdGVkU2Vhc29uXS5lbmQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZ2VvRmlsdGVyLFxuICAgICAgICBpc0dyYW50ZWRGaWx0ZXIsXG4gICAgICB9KVxuICAgICk7XG4gIH1cbjwvc2NyaXB0PlxuXG57I2lmIGV2ZW50RGV0YWlsc1Nob3dufVxuICA8ZGl2IGNsYXNzPVwiZXZlbnQtZGV0YWlsc1wiPlxuICAgIDxNb2RhbFxuICAgICAgb246aGlkZU1vZGFsUmVxdWVzdGVkPXt0b2dnbGVFdmVudERldGFpbHNTaG93bn1cbiAgICAgIG1vZGFsV2lkdGg9e2V2ZW50RGV0YWlsc01vZGFsV31cbiAgICA+XG4gICAgICA8RXZlbnREZXRhaWxzXG4gICAgICAgIGV2ZW50PXtzZWxlY3RlZEV2ZW50fVxuICAgICAgICB1c2VyTG9jYXRpb249e3VzZXJDdXJyZW50TG9jYXRpb259XG4gICAgICAgIHtpc0dyYW50ZWRGaWx0ZXJ9XG4gICAgICAgIGJpbmQ6ZHNhRmlsdGVyXG4gICAgICAgIG9uOmVkaXRFdmVudD17dG9nZ2xlRXZlbnRFZGl0b3JTaG93bn1cbiAgICAgICAgb246ZXZlbnREZWxldGVkPXtoYW5kbGVFdmVudERlbGV0ZWR9XG4gICAgICAvPlxuICAgIDwvTW9kYWw+XG4gIDwvZGl2Plxuey9pZn1cblxueyNpZiBkc2FGaWx0ZXJTaG93bn1cbiAgPGRpdiBjbGFzcz1cImRzYS1maWx0ZXJcIj5cbiAgICA8TW9kYWxcbiAgICAgIG1vZGFsV2lkdGg9e2RzYUZpbHRlck1vZGFsV31cbiAgICAgIG9uOmhpZGVNb2RhbFJlcXVlc3RlZD17dG9nZ2xlRHNhRmlsdGVyU2hvd259XG4gICAgPlxuICAgICAgPERzYUZpbHRlciBiaW5kOmRzYUZpbHRlciBiaW5kOmRzYUZpbHRlck1vZGFsVyAvPlxuICAgIDwvTW9kYWw+XG4gIDwvZGl2Plxuey9pZn1cblxueyNpZiBtb3VudGVkfVxuICA8ZGl2IGNsYXNzPVwiZnJhbWVcIiBzdHlsZT1cIndpZHRoOiB7bWFwV2lkdGh9cHhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZ2VvbWFwe2lzRXZlbnRzU2lkZXBhbmVPbiA/ICcnIDogJy1vbi1uYXJyb3ctc2NyZWVuJ31cIj5cbiAgICAgIDxHZW9tYXBGaWx0ZXJcbiAgICAgICAgb246c2VsZWN0RXZlbnRSZXF1ZXN0ZWQ9e3NlbGVjdEV2ZW50fVxuICAgICAgICB2aWV3cG9ydFdIPXskdmlld3BvcnRXSH1cbiAgICAgICAge3VzZXJIb21lTG9jYXRpb259XG4gICAgICAgIHt1c2VyQ3VycmVudExvY2F0aW9ufVxuICAgICAgICBldmVudHM9e2RhdGVSYW5nZUZpbHRlcmVkRXZlbnRzfVxuICAgICAgICB7c2hvcnRsaXN0ZWRFdmVudHN9XG4gICAgICAgIGJpbmQ6aGlnaGxpZ2h0ZWRFdmVudFxuICAgICAgICBiaW5kOmdlb0ZpbHRlclxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibG93ZXItc2VjdGlvbntpc0V2ZW50c1NpZGVwYW5lT24gPyAnJyA6ICctb24tbmFycm93LXNjcmVlbid9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVycy1hbmQtZXZlbnRzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJzLWZyYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyYW0tZmlsdGVyc1wiPlxuICAgICAgICAgICAgPEtleXdvcmRBbmRQcm9ncmFtRmlsdGVyXG4gICAgICAgICAgICAgIHtpc0V2ZW50c1NpZGVwYW5lT259XG4gICAgICAgICAgICAgIGNhdGVnb3JpZXNJbkRhdGFzZXQ9e2NhdGVnb3JpZXNJblVuZmlsdGVyZWRFdmVudHN9XG4gICAgICAgICAgICAgIHtkc2FGaWx0ZXJ9XG4gICAgICAgICAgICAgIGJpbmQ6Y2F0ZWdvcmllc0ZpbHRlclxuICAgICAgICAgICAgICBiaW5kOmJyYW5kc0ZpbHRlclxuICAgICAgICAgICAgICBiaW5kOmhpZ2hsaWdodGVkQnJhbmRcbiAgICAgICAgICAgICAgYmluZDprZXl3b3JkRmlsdGVyXG4gICAgICAgICAgICAgIGJpbmQ6aXNWYWNhbmN5RmlsdGVyXG4gICAgICAgICAgICAgIGJpbmQ6aXNOZXdzRmlsdGVyXG4gICAgICAgICAgICAgIGJpbmQ6aXNGb2xsb3dlZEZpbHRlclxuICAgICAgICAgICAgICBiaW5kOmlzR3JhbnRlZEZpbHRlclxuICAgICAgICAgICAgICBiaW5kOmRzYUZpbHRlckFjdGl2ZVxuICAgICAgICAgICAgICBiaW5kOmRzYUhvdmVyZWRcbiAgICAgICAgICAgICAgYmluZDpkc2FTZWxlY3RlZFxuICAgICAgICAgICAgICBvbjp0b2dnbGVEc2FGaWx0ZXJTaG93blJlcXVlc3RlZD17dG9nZ2xlRHNhRmlsdGVyU2hvd259XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXJhbmdlLWZpbHRlclwiPlxuICAgICAgICAgICAgPERhdGVSYW5nZUZpbHRlclxuICAgICAgICAgICAgICB7aXNFdmVudHNTaWRlcGFuZU9ufVxuICAgICAgICAgICAgICB7ZXZlbnRzQnlEYXRlfVxuICAgICAgICAgICAgICB7ZHNhSG92ZXJlZEV2ZW50c0J5RGF0ZX1cbiAgICAgICAgICAgICAge2xpc3RlZEV2ZW50c0J5RGF0ZX1cbiAgICAgICAgICAgICAge3Nob3J0bGlzdGVkRXZlbnRzQnlEYXRlfVxuICAgICAgICAgICAgICB7aGlnaGxpZ2h0ZWREYXRlUmFuZ2V9XG4gICAgICAgICAgICAgIGJpbmQ6c2VsZWN0ZWRTZWFzb25cbiAgICAgICAgICAgICAgYmluZDpkYXRlUmFuZ2VGaWx0ZXJcbiAgICAgICAgICAgICAgYmluZDpob3ZlcmVkRGF0ZVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzczpldmVudHMtbGlzdC1zaWRlcGFuZT17aXNFdmVudHNTaWRlcGFuZU9ufVxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IHtldmVudHNMaXN0V2lkdGh9cHhcIlxuICAgICAgICA+XG4gICAgICAgICAgPEV2ZW50c0xpc3RcbiAgICAgICAgICAgIG9uOnNlbGVjdEV2ZW50UmVxdWVzdGVkPXtzZWxlY3RFdmVudH1cbiAgICAgICAgICAgIG9uOnRvZ2dsZUZvbGxvd0V2ZW50UmVxdWVzdGVkPXt0b2dnbGVGb2xsb3dFdmVudH1cbiAgICAgICAgICAgIG9uOmhpZ2hsaWdodEJyYW5kUmVxdWVzdGVkPXtoaWdobGlnaHRCcmFuZH1cbiAgICAgICAgICAgIHtpc0V2ZW50c1NpZGVwYW5lT259XG4gICAgICAgICAgICB7dG90YWxFdmVudHNMaXN0Q29sdW1uc31cbiAgICAgICAgICAgIGV2ZW50cz17bGlzdGVkRXZlbnRzfVxuICAgICAgICAgICAge3Nob3J0bGlzdGVkRXZlbnRzfVxuICAgICAgICAgICAgYmluZDpoaWdobGlnaHRlZEV2ZW50XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG57L2lmfVxuXG48c3R5bGU+XG4gIC5ldmVudC1kZXRhaWxzIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMztcbiAgfVxuICAuZHNhLWZpbHRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDM7XG4gIH1cbiAgLmZyYW1lIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTsgLyoqL1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLW5hdmJhci1odCkpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbiAgLmZyYW1lIC5nZW9tYXAge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAxO1xuICAgIGhlaWdodDogY2FsYygxMDB2aCAtIHZhcigtLW5hdmJhci1odCkgLSAzOTBweCk7XG4gICAgbWluLWhlaWdodDogMzAwcHg7XG4gICAgYm94LXNoYWRvdzogMCAwIDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICB9XG4gIC5mcmFtZSAuZ2VvbWFwLW9uLW5hcnJvdy1zY3JlZW4ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIGhlaWdodDogMzV2aDtcbiAgICBtaW4taGVpZ2h0OiAwO1xuICAgIGJveC1zaGFkb3c6IDAgMCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgfVxuICAuZnJhbWUgLmxvd2VyLXNlY3Rpb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB6LWluZGV4OiAyO1xuICAgIGJvdHRvbTogMTBweDtcbiAgfVxuICAuZnJhbWUgLmxvd2VyLXNlY3Rpb24tb24tbmFycm93LXNjcmVlbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICB6LWluZGV4OiAxO1xuICAgIHRvcDogY2FsYygzNXZoICsgMTBweCk7XG4gICAgYm90dG9tOiAwO1xuXG4gICAgLyogei1pbmRleDogMztcbiAgICBib3JkZXI6IDNweCBzb2xpZCByZWQ7ICovXG4gIH1cbiAgLmV2ZW50cy1saXN0LXNpZGVwYW5lIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiB2YXIoLS1uYXZiYXItaHQpO1xuICAgIGJvdHRvbTogMDtcbiAgICByaWdodDogMDtcbiAgICBib3gtc2hhZG93OiAwIDAgMTVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxuICAuZnJhbWUgLmZpbHRlcnMtYW5kLWV2ZW50cyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIG1hcmdpbjogMCBhdXRvOyAvKiBvdmEgdGkgb3NpZ3VyYXZhIGRhIGltYcWhIHNrcm9sYW5qZSBhbGkgZGEgbmVtYcWhIHNjcm9sbGJhciAqL1xuICAgIC8qIHdpZHRoOiAxMDAlOyAqLyAvKiBvdm9nYSBORSBTTUlKRcWgIGltYXRpLCBqZXIgdGkgcmF6YmlqYSBza3JvbGFuamUgYmV6IHNjcm9sbGJhcmEqL1xuICAgIHRvcDogMDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICB9XG4gIC5mcmFtZSAuZmlsdGVycy1hbmQtZXZlbnRzIC5maWx0ZXJzLWZyYW1lIHtcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgIHotaW5kZXg6IDM7XG4gICAgdG9wOiAtMTYwcHg7XG4gICAgbWFyZ2luOiAxMHB4O1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgbWF4LXdpZHRoOiBjYWxjKHZhcigtLWNhbGVuZGFyLXdpZHRoKSArIDQwcHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgYm94LXNoYWRvdzogMCAwIDE1cHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICB9XG48L3N0eWxlPlxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFFLE1BQU0sZUFBQyxDQUFDLEFBQ04sZ0JBQWdCLENBQUUsS0FBSyxBQUN6QixDQUFDO0FDNkJELE1BQU0sNEJBQUMsQ0FBQyxBQUNOLE9BQU8sQ0FBRSxJQUFJLENBQ2IsU0FBUyxDQUFFLE1BQU0sQ0FDakIsZUFBZSxDQUFFLGFBQWEsQ0FDOUIsZ0JBQWdCLENBQUUsT0FBTyxDQUN6QixPQUFPLENBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEFBQ3BCLENBQUMsQUFDRCxvQkFBTSxDQUFDLFNBQVMsY0FBQyxDQUFDLEFBQ2hCLE1BQU0sQ0FBRSxJQUFJLENBQ1osS0FBSyxDQUFFLElBQUksQ0FDWCxnQkFBZ0IsQ0FBRSxJQUFJLGtDQUFrQyxDQUFDLENBQ3pELGlCQUFpQixDQUFFLFNBQVMsQ0FDNUIsZUFBZSxDQUFFLE9BQU8sQ0FDeEIsbUJBQW1CLENBQUUsTUFBTSxDQUFDLE1BQU0sQ0FFbEMsVUFBVSxDQUFFLE1BQU0sQ0FDbEIsS0FBSyxDQUFFLEtBQUssQ0FDWixXQUFXLENBQUUsSUFBSSxD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 */