@sbb-esta/lyne-elements-experimental 2.11.1 → 2.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/core/datetime/date-helper.js +142 -142
  2. package/core/timetable/access-leg-helper.js +49 -52
  3. package/core/timetable/timetable-helper.js +7 -8
  4. package/development/core/datetime/date-helper.js +10 -10
  5. package/development/core/timetable/access-leg-helper.js +12 -15
  6. package/development/core/timetable/timetable-helper.js +6 -7
  7. package/development/{differenceInMinutes-CHSyWiQs.js → differenceInMinutes-D5Nj8Stc.js} +3 -3
  8. package/development/{format-D0-yhzi4.js → format-BQfaa1ZT.js} +22 -26
  9. package/development/{isValid-Bo4R7iA7.js → isValid-DvieCZVi.js} +3 -3
  10. package/development/journey-summary/journey-summary.component.js +4 -5
  11. package/development/pearl-chain/pearl-chain.component.d.ts.map +1 -1
  12. package/development/pearl-chain/pearl-chain.component.js +28 -39
  13. package/development/pearl-chain-time/pearl-chain-time.component.js +5 -6
  14. package/development/pearl-chain-vertical/pearl-chain-vertical.component.js +1 -1
  15. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +1 -1
  16. package/development/seat-reservation/common/mapper/icon-mapper.js +1 -1
  17. package/development/seat-reservation/common/mapper/mapper.js +14 -16
  18. package/development/seat-reservation/common/mapper/seat-reservation-sample-data.js +1 -1
  19. package/development/seat-reservation/common/svgs.js +1 -1
  20. package/development/seat-reservation/common/translations/i18n.js +2 -3
  21. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +22 -33
  22. package/development/seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +6 -7
  23. package/development/seat-reservation/seat-reservation/seat-reservation.component.js +16 -23
  24. package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +1 -1
  25. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +2 -3
  26. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +7 -8
  27. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +7 -11
  28. package/development/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +2 -3
  29. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +4 -5
  30. package/development/timetable-duration/timetable-duration.component.js +1 -1
  31. package/development/timetable-row/timetable-row.component.js +58 -89
  32. package/differenceInMinutes-CP_C5onR.js +23 -0
  33. package/{format-Dg8rkk7h.js → format-lqeCzmzS.js} +438 -442
  34. package/isValid-Ceq2O0NQ.js +45 -0
  35. package/journey-summary/journey-summary.component.js +3 -4
  36. package/package.json +2 -2
  37. package/pearl-chain/pearl-chain.component.d.ts.map +1 -1
  38. package/pearl-chain/pearl-chain.component.js +78 -95
  39. package/pearl-chain-time/pearl-chain-time.component.js +44 -45
  40. package/seat-reservation/common/mapper/mapper.js +50 -54
  41. package/seat-reservation/common/translations/i18n.js +5 -6
  42. package/seat-reservation/seat-reservation/seat-reservation-base-element.js +104 -115
  43. package/seat-reservation/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +40 -41
  44. package/seat-reservation/seat-reservation/seat-reservation.component.js +78 -87
  45. package/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +15 -18
  46. package/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +58 -59
  47. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +71 -75
  48. package/seat-reservation/seat-reservation-navigation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +12 -13
  49. package/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +23 -24
  50. package/timetable-row/timetable-row.component.js +207 -247
  51. package/differenceInMinutes-BMqUZdhj.js +0 -23
  52. package/isValid-DJ69OMZJ.js +0 -45
@@ -182,13 +182,12 @@ let SbbSeatReservationElement = (() => {
182
182
  __privateSet(this, _preventPlaceClick_accessor_storage, value);
183
183
  }
184
184
  willUpdate(changedProperties) {
185
- var _a2, _b;
186
185
  super.willUpdate(changedProperties);
187
186
  if (changedProperties.has("hasNavigation")) {
188
187
  if (this.hasNavigation) {
189
- (_a2 = this.shadowRoot) == null ? void 0 : _a2.querySelectorAll("table").forEach((table) => table.removeAttribute("tabindex"));
188
+ this.shadowRoot?.querySelectorAll("table").forEach((table) => table.removeAttribute("tabindex"));
190
189
  } else {
191
- (_b = this.shadowRoot) == null ? void 0 : _b.querySelectorAll("table").forEach((table) => table.setAttribute("tabindex", "0"));
190
+ this.shadowRoot?.querySelectorAll("table").forEach((table) => table.setAttribute("tabindex", "0"));
192
191
  }
193
192
  }
194
193
  }
@@ -204,8 +203,7 @@ let SbbSeatReservationElement = (() => {
204
203
  this.initNavigationSelectionByScrollEvent();
205
204
  }
206
205
  _initVehicleSeatReservationConstruction() {
207
- var _a2;
208
- const coachItems = JSON.parse(JSON.stringify((_a2 = this.seatReservation) == null ? void 0 : _a2.coachItems));
206
+ const coachItems = JSON.parse(JSON.stringify(this.seatReservation?.coachItems));
209
207
  const classAlignVertical = this.alignVertical ? "sbb-sr__wrapper--vertical" : "";
210
208
  this._coachesHtmlTemplate = html`
211
209
  <div>
@@ -243,7 +241,6 @@ let SbbSeatReservationElement = (() => {
243
241
  `;
244
242
  }
245
243
  _renderNavigation() {
246
- var _a2;
247
244
  if (!this.hasNavigation) {
248
245
  return null;
249
246
  }
@@ -253,8 +250,7 @@ let SbbSeatReservationElement = (() => {
253
250
  class="sbb-sr-navigation__list-coaches"
254
251
  aria-label="${getI18nSeatReservation("SEAT_RESERVATION_NAVIGATION", this._language.current)}"
255
252
  >
256
- ${(_a2 = this.seatReservation) == null ? void 0 : _a2.coachItems.map((coachItem, index) => {
257
- var _a3, _b;
253
+ ${this.seatReservation?.coachItems.map((coachItem, index) => {
258
254
  return html`<li>
259
255
  <sbb-seat-reservation-navigation-coach
260
256
  @selectCoach=${(event) => this._onSelectNavCoach(event)}
@@ -265,9 +261,9 @@ let SbbSeatReservationElement = (() => {
265
261
  .focused=${this.focusedCoachIndex === index}
266
262
  .propertyIds="${coachItem.propertyIds}"
267
263
  .travelClass="${coachItem.travelClass}"
268
- ?driver-area="${!((_a3 = coachItem.places) == null ? void 0 : _a3.length)}"
264
+ ?driver-area="${!coachItem.places?.length}"
269
265
  ?first="${index === 0}"
270
- ?last="${index === ((_b = this.seatReservation) == null ? void 0 : _b.coachItems.length) - 1}"
266
+ ?last="${index === this.seatReservation?.coachItems.length - 1}"
271
267
  ?vertical="${this.alignVertical}"
272
268
  >
273
269
  </sbb-seat-reservation-navigation-coach>
@@ -319,9 +315,9 @@ let SbbSeatReservationElement = (() => {
319
315
  _getRenderedCoachBorders(coachItem, coachIndex) {
320
316
  const allElements = coachItem.graphicElements;
321
317
  const COACH_PASSAGE_WIDTH = 1;
322
- const driverArea = allElements == null ? void 0 : allElements.find((element) => element.icon === "DRIVER_AREA_FULL");
318
+ const driverArea = allElements?.find((element) => element.icon === "DRIVER_AREA_FULL");
323
319
  const borderWidth = driverArea ? coachItem.dimension.w - driverArea.dimension.w - COACH_PASSAGE_WIDTH : coachItem.dimension.w - COACH_PASSAGE_WIDTH * 2;
324
- const borderOffsetX = coachIndex === 0 && driverArea ? (driverArea == null ? void 0 : driverArea.dimension.w) * this.baseGridSize : this.baseGridSize;
320
+ const borderOffsetX = coachIndex === 0 && driverArea ? driverArea?.dimension.w * this.baseGridSize : this.baseGridSize;
325
321
  return html`
326
322
  <sbb-seat-reservation-scoped
327
323
  scoped-classes="coach-border"
@@ -360,7 +356,7 @@ let SbbSeatReservationElement = (() => {
360
356
  }
361
357
  _getRenderedColumnPlaces(places, coachIndex) {
362
358
  places.sort((placeA, placeB) => Number(placeA.position.x) - Number(placeB.position.x));
363
- return places == null ? void 0 : places.map((place, index) => {
359
+ return places?.map((place, index) => {
364
360
  const calculatedInternalDimension = this.getCalculatedDimension(place.dimension);
365
361
  const calculatedInternalPosition = this.getCalculatedPosition(place.position);
366
362
  const textRotation = this.alignVertical ? -90 : 0;
@@ -399,7 +395,7 @@ let SbbSeatReservationElement = (() => {
399
395
  if (!graphicalElements) {
400
396
  return null;
401
397
  }
402
- return graphicalElements == null ? void 0 : graphicalElements.map((graphicalElement) => {
398
+ return graphicalElements?.map((graphicalElement) => {
403
399
  const icon = graphicalElement.icon ?? "";
404
400
  const elementRotation = graphicalElement.rotation || 0;
405
401
  const isNotFixedRotationGraphicalElement = this._notFixedRotatableAreaIcons.indexOf(graphicalElement.icon) === -1;
@@ -411,8 +407,7 @@ let SbbSeatReservationElement = (() => {
411
407
  });
412
408
  }
413
409
  _getRenderElementWithArea(graphicalElement, rotation, coachDimension) {
414
- var _a2;
415
- const isNotTableGraphicTempFix = ((_a2 = graphicalElement.icon) == null ? void 0 : _a2.indexOf("TABLE")) === -1;
410
+ const isNotTableGraphicTempFix = graphicalElement.icon?.indexOf("TABLE") === -1;
416
411
  const areaProperty = graphicalElement.icon && isNotTableGraphicTempFix ? graphicalElement.icon : null;
417
412
  const stretchHeight = areaProperty !== "ENTRY_EXIT";
418
413
  const ariaLabelForArea = graphicalElement.icon ? getI18nSeatReservation(graphicalElement.icon, this._language.current) : nothing;
@@ -458,10 +453,9 @@ let SbbSeatReservationElement = (() => {
458
453
  `;
459
454
  }
460
455
  _getRenderElementWithoutArea(graphicalElement, rotation, coachDimension) {
461
- var _a2;
462
456
  const calculatedDimension = this.getCalculatedDimension(graphicalElement.dimension, coachDimension);
463
457
  const calculatedPosition = this.getCalculatedPosition(graphicalElement.position, graphicalElement.dimension, coachDimension);
464
- const icon = graphicalElement.icon && graphicalElement.icon.indexOf("DRIVER_AREA") === -1 ? graphicalElement.icon : (_a2 = graphicalElement.icon) == null ? void 0 : _a2.concat("_", this.seatReservation.vehicleType);
458
+ const icon = graphicalElement.icon && graphicalElement.icon.indexOf("DRIVER_AREA") === -1 ? graphicalElement.icon : graphicalElement.icon?.concat("_", this.seatReservation.vehicleType);
465
459
  return html`
466
460
  <sbb-seat-reservation-scoped
467
461
  scoped-classes="graphical-element"
@@ -486,7 +480,7 @@ let SbbSeatReservationElement = (() => {
486
480
  if (!serviceElements) {
487
481
  return null;
488
482
  }
489
- return serviceElements == null ? void 0 : serviceElements.map((serviceElement) => {
483
+ return serviceElements?.map((serviceElement) => {
490
484
  const titleDescription = serviceElement.icon ? getI18nSeatReservation(serviceElement.icon, this._language.current) : null;
491
485
  const calculatedcCmpartmentNumberDimension = this.getCalculatedDimension(serviceElement.dimension);
492
486
  const calculatedcCmpartmentNumberPosition = this.getCalculatedPosition(serviceElement.position);
@@ -548,8 +542,7 @@ let SbbSeatReservationElement = (() => {
548
542
  this.isAutoScrolling = false;
549
543
  }
550
544
  _getDescriptionTableCoach(coachItem) {
551
- var _a2;
552
- if (!((_a2 = coachItem.places) == null ? void 0 : _a2.length)) {
545
+ if (!coachItem.places?.length) {
553
546
  return getI18nSeatReservation("COACH_BLOCKED_TABLE_CAPTION", this._language.current, [
554
547
  coachItem.id
555
548
  ]);
@@ -568,7 +561,7 @@ let SbbSeatReservationElement = (() => {
568
561
  }
569
562
  _getTitleDescriptionListString(descriptionsElements) {
570
563
  const uniqueDescriptions = [];
571
- return descriptionsElements == null ? void 0 : descriptionsElements.map((descriptionElement) => {
564
+ return descriptionsElements?.map((descriptionElement) => {
572
565
  const icon = descriptionElement.icon;
573
566
  if (!icon)
574
567
  return null;
@@ -612,4 +605,4 @@ let SbbSeatReservationElement = (() => {
612
605
  export {
613
606
  SbbSeatReservationElement
614
607
  };
615
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jbGFzcy1tYXAuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBnZXRJMThuU2VhdFJlc2VydmF0aW9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29hY2hJdGVtLFxuICBQbGFjZSxcbiAgRWxlbWVudERpbWVuc2lvbixcbiAgQmFzZUVsZW1lbnQsXG4gIFBsYWNlU2VsZWN0aW9uLFxuICBTZWF0UmVzZXJ2YXRpb24sXG59IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCB7IFNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWJhc2UtZWxlbWVudC5qcyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1hcmVhLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC5qcyc7XG5pbXBvcnQgJy4vc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQuanMnO1xuXG4vKipcbiAqIERlc2NyaWJlIHRoZSBwdXJwb3NlIG9mIHRoZSBjb21wb25lbnQgd2l0aCBhIHNpbmdsZSBzaG9ydCBzZW50ZW5jZS5cbiAqXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNlYXRSZXNlcnZhdGlvblNlbGVjdGVkUGxhY2VzRXZlbnREZXRhaWxzPn0gc2VsZWN0ZWRQbGFjZXMgLSBFbWl0cyB3aGVuIGEgcGxhY2Ugd2FzIHNlbGVjdGVkIGFuZCByZXR1cm5zIGEgUGxhY2UgYXJyYXkgd2l0aCBhbGwgc2VsZWN0ZWQgcGxhY2VzXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNlYXRSZXNlcnZhdGlvbkNvYWNoU2VsZWN0aW9uPn0gc2VsZWN0ZWRDb2FjaCAtIEVtaXRzIHdoZW4gYSBjb2FjaCB3YXMgc2VsZWN0ZWQgYW5kIHJldHVybnMgYSBDb2FjaFNlbGVjdGlvblxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbicpXG5jbGFzcyBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50IGV4dGVuZHMgU2VhdFJlc2VydmF0aW9uQmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIGFsbCBjb2FjaGVzIGFuZCBwbGFjZXMgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2VhdC1yZXNlcnZhdGlvbicsIHR5cGU6IE9iamVjdCB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzb3Igc2VhdFJlc2VydmF0aW9uOiBTZWF0UmVzZXJ2YXRpb24gPSBudWxsITtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gbmF2aWdhdGlvbiBjYW4gYmUgdG9nZ2xlZCBieSB0aGlzIHByb3BlcnR5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoYXMtbmF2aWdhdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGhhc05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBDb250cm9scyB0aGUgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIHNlYXQgcmVzZXJ2YXRpb24gaW4gYSBob3Jpem9uYWwgb3IgdmVydGljYWwgYWxpZ25tZW50ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhbGlnbi12ZXJ0aWNhbCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGFsaWduVmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTWF4aW1hbCBudW1iZXIgb2YgcG9zc2libGUgY2xpY2thYmxlIHNlYXRzICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdtYXgtcmVzZXJ2YXRpb25zJywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBtYXhSZXNlcnZhdGlvbnM6IG51bWJlciA9IG51bGwhO1xuXG4gIC8qKiBBbnkgY2xpY2sgZnVuY3Rpb25hbGl0eSBpcyBwcmV2ZW50ZWQgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3ByZXZlbnQtcGxhY2UtY2xpY2snLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBwcmV2ZW50UGxhY2VDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfY29hY2hlc0h0bWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVzdWx0O1xuICAvLyBHcmFwaGljcyB0aGF0IHNob3VsZCBub3QgYmUgcmVuZGVyZWQgd2l0aCBhbiBhcmVhXG4gIHByaXZhdGUgX25vdEFyZWFFbGVtZW50cyA9IFtcbiAgICAnRFJJVkVSX0FSRUFfRlVMTCcsXG4gICAgJ0NPQUNIX1BBU1NBR0UnLFxuICAgICdDT0FDSF9XQUxMX05PX1BBU1NBR0UnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9NSURETEUnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFX0xPVycsXG4gIF07XG4gIC8vIEFyZWEgaWNvbnMgdGhhdCBzaG91bGQgbm90IGJlIGZpeGVkIGR1cmluZyByb3RhdGlvbiB3aGVuIHZlcnRpY2FsIG1vZGUgaXMgc2VsZWN0ZWRcbiAgcHJpdmF0ZSBfbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMgPSBbJ0VOVFJZX0VYSVQnXTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2hhc05hdmlnYXRpb24nKSkge1xuICAgICAgaWYgKHRoaXMuaGFzTmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJylcbiAgICAgICAgICAuZm9yRWFjaCgodGFibGUpID0+IHRhYmxlLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJylcbiAgICAgICAgICAuZm9yRWFjaCgodGFibGUpID0+IHRhYmxlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fY29tcG9uZW50U2V0dXAoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICB0aGlzLl9pbml0VmVoaWNsZVNlYXRSZXNlcnZhdGlvbkNvbnN0cnVjdGlvbigpO1xuICAgIHJldHVybiB0aGlzLl9jb2FjaGVzSHRtbFRlbXBsYXRlIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jb21wb25lbnRTZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXROYXZpZ2F0aW9uU2VsZWN0aW9uQnlTY3JvbGxFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFZlaGljbGVTZWF0UmVzZXJ2YXRpb25Db25zdHJ1Y3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgY29hY2hJdGVtcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWF0UmVzZXJ2YXRpb24/LmNvYWNoSXRlbXMpKTtcbiAgICBjb25zdCBjbGFzc0FsaWduVmVydGljYWwgPSB0aGlzLmFsaWduVmVydGljYWwgPyAnc2JiLXNyX193cmFwcGVyLS12ZXJ0aWNhbCcgOiAnJztcblxuICAgIHRoaXMuX2NvYWNoZXNIdG1sVGVtcGxhdGUgPSBodG1sYFxuICAgICAgPGRpdj5cbiAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImZpcnN0LXRhYi1lbGVtZW50XCJcbiAgICAgICAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0JFR0lOJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCl9XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuXG4gICAgICAgIDxkaXYgQGtleWRvd249JHsoZXZ0OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZ0KX0+XG4gICAgICAgICAgJHt0aGlzLl9yZW5kZXJOYXZpZ2F0aW9uKCl9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zcl9fd3JhcHBlciAke2NsYXNzQWxpZ25WZXJ0aWNhbH1cIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJzYmItc3JfX3BhcmVudC1hcmVhXCIgY2xhc3M9XCJzYmItc3JfX3BhcmVudFwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2JiLXNyX19saXN0LWNvYWNoZXNcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJDb2FjaGVzKGNvYWNoSXRlbXMpfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJsYXN0LXRhYi1lbGVtZW50XCJcbiAgICAgICAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0VORCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpfVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJOYXZpZ2F0aW9uKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmhhc05hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPG5hdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyAnc2JiLXNyLW5hdmlnYXRpb24tLXZlcnRpY2FsJzogdGhpcy5hbGlnblZlcnRpY2FsIH0pfVwiPlxuICAgICAgICA8dWxcbiAgICAgICAgICBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uX19saXN0LWNvYWNoZXNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCIke2dldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgICAnU0VBVF9SRVNFUlZBVElPTl9OQVZJR0FUSU9OJyxcbiAgICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICAgKX1cIlxuICAgICAgICA+XG4gICAgICAgICAgJHt0aGlzLnNlYXRSZXNlcnZhdGlvbj8uY29hY2hJdGVtcy5tYXAoKGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaHRtbGA8bGk+XG4gICAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoXG4gICAgICAgICAgICAgICAgQHNlbGVjdENvYWNoPSR7KGV2ZW50OiBDdXN0b21FdmVudCkgPT4gdGhpcy5fb25TZWxlY3ROYXZDb2FjaChldmVudCl9XG4gICAgICAgICAgICAgICAgQGZvY3VzQ29hY2g9JHsoKSA9PiB0aGlzLl9vbkZvY3VzTmF2Q29hY2goKX1cbiAgICAgICAgICAgICAgICBpbmRleD1cIiR7aW5kZXh9XCJcbiAgICAgICAgICAgICAgICBjb2FjaC1pZD1cIiR7Y29hY2hJdGVtLmlkfVwiXG4gICAgICAgICAgICAgICAgLnNlbGVjdGVkPSR7dGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPT09IGluZGV4fVxuICAgICAgICAgICAgICAgIC5mb2N1c2VkPSR7dGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgICAgLnByb3BlcnR5SWRzPVwiJHtjb2FjaEl0ZW0ucHJvcGVydHlJZHN9XCJcbiAgICAgICAgICAgICAgICAudHJhdmVsQ2xhc3M9XCIke2NvYWNoSXRlbS50cmF2ZWxDbGFzc31cIlxuICAgICAgICAgICAgICAgID9kcml2ZXItYXJlYT1cIiR7IWNvYWNoSXRlbS5wbGFjZXM/Lmxlbmd0aH1cIlxuICAgICAgICAgICAgICAgID9maXJzdD1cIiR7aW5kZXggPT09IDB9XCJcbiAgICAgICAgICAgICAgICA/bGFzdD1cIiR7aW5kZXggPT09IHRoaXMuc2VhdFJlc2VydmF0aW9uPy5jb2FjaEl0ZW1zLmxlbmd0aCAtIDF9XCJcbiAgICAgICAgICAgICAgICA/dmVydGljYWw9XCIke3RoaXMuYWxpZ25WZXJ0aWNhbH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaD5cbiAgICAgICAgICAgIDwvbGk+YDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC91bD5cbiAgICAgIDwvbmF2PlxuICAgIGA7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjb2FjaGVzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJDb2FjaGVzKGNvYWNoZXM/OiBDb2FjaEl0ZW1bXSk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIWNvYWNoZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY29hY2hlcy5tYXAoKGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPGxpIGNsYXNzPVwic2JiLXNyX19pdGVtLWNvYWNoXCI+JHt0aGlzLl9yZW5kZXJDb2FjaEVsZW1lbnQoY29hY2hJdGVtLCBpbmRleCl9PC9saT5cbiAgICAgIGA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJDb2FjaEVsZW1lbnQoY29hY2hJdGVtOiBDb2FjaEl0ZW0sIGluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZENvYWNoRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKGNvYWNoSXRlbS5kaW1lbnNpb24pO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uVGFibGVDb2FjaFdpdGhTZXJ2aWNlcyA9IHRoaXMuX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW0pO1xuXG4gICAgcmV0dXJuIGh0bWxgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgIHNjb3BlZC1jbGFzc2VzPVwiY29hY2gtd3JhcHBlclwiXG4gICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbi5ofXB4XCJcbiAgICAgIHdpZHRoPVwiJHtjYWxjdWxhdGVkQ29hY2hEaW1lbnNpb24ud31weFwiXG4gICAgPlxuICAgICAgJHt0aGlzLl9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW0sIGluZGV4KX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRHcmFwaGljYWxFbGVtZW50cyhjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzIHx8IFtdLCBjb2FjaEl0ZW0uZGltZW5zaW9uKX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRTZXJ2aWNlRWxlbWVudHMoY29hY2hJdGVtLnNlcnZpY2VFbGVtZW50cyl9XG4gICAgICA8dGFibGVcbiAgICAgICAgQGZvY3VzPSR7KCkgPT4gdGhpcy5vbkZvY3VzVGFibGVDb2FjaEFuZFByZXNlbGVjdFBsYWNlKGluZGV4KX1cbiAgICAgICAgaWQ9XCJzYmItc3ItY29hY2gtJHtpbmRleH1cIlxuICAgICAgICBjbGFzcz1cInNiYi1zci1jb2FjaC13cmFwcGVyX190YWJsZVwiXG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJzYmItc3ItY29hY2gtY2FwdGlvbi0ke2luZGV4fVwiXG4gICAgICA+XG4gICAgICAgIDxjYXB0aW9uIGlkPVwic2JiLXNyLWNvYWNoLWNhcHRpb24tJHtpbmRleH1cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHtkZXNjcmlwdGlvblRhYmxlQ29hY2hXaXRoU2VydmljZXN9PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICA8L2NhcHRpb24+XG4gICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRSb3dQbGFjZXMoY29hY2hJdGVtLCBpbmRleCl9XG4gICAgICA8L3RhYmxlPlxuICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPmA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW06IENvYWNoSXRlbSwgY29hY2hJbmRleDogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGFsbEVsZW1lbnRzID0gY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cztcbiAgICBjb25zdCBDT0FDSF9QQVNTQUdFX1dJRFRIID0gMTtcbiAgICBjb25zdCBkcml2ZXJBcmVhID0gYWxsRWxlbWVudHM/LmZpbmQoXG4gICAgICAoZWxlbWVudDogQmFzZUVsZW1lbnQpID0+IGVsZW1lbnQuaWNvbiA9PT0gJ0RSSVZFUl9BUkVBX0ZVTEwnLFxuICAgICk7XG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBkcml2ZXJBcmVhXG4gICAgICA/IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIGRyaXZlckFyZWEuZGltZW5zaW9uLncgLSBDT0FDSF9QQVNTQUdFX1dJRFRIXG4gICAgICA6IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIENPQUNIX1BBU1NBR0VfV0lEVEggKiAyO1xuICAgIGNvbnN0IGJvcmRlck9mZnNldFggPVxuICAgICAgY29hY2hJbmRleCA9PT0gMCAmJiBkcml2ZXJBcmVhXG4gICAgICAgID8gZHJpdmVyQXJlYT8uZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZVxuICAgICAgICA6IHRoaXMuYmFzZUdyaWRTaXplO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgIHNjb3BlZC1jbGFzc2VzPVwiY29hY2gtYm9yZGVyXCJcbiAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke3RoaXMuY29hY2hCb3JkZXJQYWRkaW5nICogLTF9cHhcIlxuICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ9XCIke2JvcmRlck9mZnNldFh9cHhcIlxuICAgICAgPlxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgIG5hbWU9XCJDT0FDSF9CT1JERVJfTUlERExFXCJcbiAgICAgICAgICB3aWR0aD0ke2JvcmRlcldpZHRoICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgaGVpZ2h0PSR7KGNvYWNoSXRlbS5kaW1lbnNpb24uaCArIHRoaXMuY29hY2hCb3JkZXJPZmZzZXQgKiAyKSAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgID9zdHJldGNoPSR7dHJ1ZX1cbiAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZFJvd1BsYWNlcyhjb2FjaDogQ29hY2hJdGVtLCBjb2FjaEluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFjb2FjaC5wbGFjZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIFByZXBhaXIgcm93cyB3aXRoIHRoZSBwbGFjZXMgdG8gcmVuZGVyIGEgdGFibGVcbiAgICBjb25zdCB0YWJsZVJvd1BsYWNlczogUmVjb3JkPG51bWJlciwgUGxhY2VbXT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHBsYWNlIG9mIGNvYWNoLnBsYWNlcykge1xuICAgICAgaWYgKCF0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XSkge1xuICAgICAgICB0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XSA9IFtwbGFjZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XS5wdXNoKHBsYWNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0YWJsZVJvd1BsYWNlcylcbiAgICAgIC5tYXAoKHJvd1BsYWNlczogUGxhY2VbXSwgaW5kZXgpID0+IHtcbiAgICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgICAgPHRyIGlkPVwicm93LSR7Y29hY2hJbmRleH0tJHtyb3dQbGFjZXNbMF0ucG9zaXRpb24ueX1cIiBkYXRhLXJvdy1pbmRleD0ke2luZGV4fT5cbiAgICAgICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMocm93UGxhY2VzLCBjb2FjaEluZGV4KX1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICBgO1xuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKChyb3dUZW1wbGF0ZSkgPT4gcm93VGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMocGxhY2VzOiBQbGFjZVtdLCBjb2FjaEluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgLy9Tb3J0cyBlYWNoIHBsYWNlIGJ5IGl0cyBhc2NlbmRpbmcgeCBjb29yZGluYXRlXG4gICAgcGxhY2VzLnNvcnQoXG4gICAgICAocGxhY2VBOiBQbGFjZSwgcGxhY2VCOiBQbGFjZSkgPT4gTnVtYmVyKHBsYWNlQS5wb3NpdGlvbi54KSAtIE51bWJlcihwbGFjZUIucG9zaXRpb24ueCksXG4gICAgKTtcblxuICAgIHJldHVybiBwbGFjZXM/Lm1hcCgocGxhY2U6IFBsYWNlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkSW50ZXJuYWxEaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24ocGxhY2UuZGltZW5zaW9uKTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRJbnRlcm5hbFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24ocGxhY2UucG9zaXRpb24pO1xuICAgICAgY29uc3QgdGV4dFJvdGF0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsID8gLTkwIDogMDtcblxuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgICBzY29wZWQtY2xhc3Nlcz1cImdyYXBoaWNhbC1lbGVtZW50XCJcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydD1cIiR7Y2FsY3VsYXRlZEludGVybmFsUG9zaXRpb24ueX1weFwiXG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0PVwiJHtjYWxjdWxhdGVkSW50ZXJuYWxQb3NpdGlvbi54fXB4XCJcbiAgICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uLnd9cHhcIlxuICAgICAgICAgIGhlaWdodD1cIiR7Y2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICAgIHotaW5kZXg9XCIke3BsYWNlLnBvc2l0aW9uLnp9XCJcbiAgICAgICAgICBjZWxsLWlkPVwiY2VsbC0ke2NvYWNoSW5kZXh9LSR7cGxhY2UucG9zaXRpb24ueX0tJHtpbmRleH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcbiAgICAgICAgICAgIEBzZWxlY3RQbGFjZT0keyhzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudCkgPT4gdGhpcy5fb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50KX1cbiAgICAgICAgICAgIGV4cG9ydHBhcnRzPVwic2JiLXNyLXBsYWNlLXBhcnRcIlxuICAgICAgICAgICAgaWQ9XCJzZWF0LXJlc2VydmF0aW9uX19wbGFjZS1idXR0b24tJHtjb2FjaEluZGV4fS0ke3BsYWNlLm51bWJlcn1cIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcIlxuICAgICAgICAgICAgZGF0YS1jZWxsLWlkPVwiJHtjb2FjaEluZGV4fS0ke3BsYWNlLnBvc2l0aW9uLnl9LSR7aW5kZXh9XCJcbiAgICAgICAgICAgIHRleHQ9JHtwbGFjZS5udW1iZXJ9XG4gICAgICAgICAgICB0eXBlPSR7cGxhY2UudHlwZX1cbiAgICAgICAgICAgIHN0YXRlPSR7cGxhY2Uuc3RhdGV9XG4gICAgICAgICAgICB3aWR0aD0ke3BsYWNlLmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICBoZWlnaHQ9JHtwbGFjZS5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgcm90YXRpb249JHtwbGFjZS5yb3RhdGlvbiA/PyBub3RoaW5nfVxuICAgICAgICAgICAgdGV4dC1yb3RhdGlvbj0ke3RleHRSb3RhdGlvbn1cbiAgICAgICAgICAgIGNvYWNoLWluZGV4PSR7Y29hY2hJbmRleH1cbiAgICAgICAgICAgIC5wcm9wZXJ0eUlkcz0ke3BsYWNlLnByb3BlcnR5SWRzfVxuICAgICAgICAgICAgLnByZXZlbnRDbGljaz0ke3RoaXMucHJldmVudFBsYWNlQ2xpY2t9XG4gICAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbD5cbiAgICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRHcmFwaGljYWxFbGVtZW50cyhcbiAgICBncmFwaGljYWxFbGVtZW50czogQmFzZUVsZW1lbnRbXSxcbiAgICBjb2FjaERpbWVuc2lvbjogRWxlbWVudERpbWVuc2lvbixcbiAgKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghZ3JhcGhpY2FsRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBncmFwaGljYWxFbGVtZW50cz8ubWFwKChncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgaWNvbiA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvbiA/PyAnJztcbiAgICAgIGNvbnN0IGVsZW1lbnRSb3RhdGlvbiA9IGdyYXBoaWNhbEVsZW1lbnQucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnQgPVxuICAgICAgICB0aGlzLl9ub3RGaXhlZFJvdGF0YWJsZUFyZWFJY29ucy5pbmRleE9mKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiEpID09PSAtMTtcbiAgICAgIGNvbnN0IGVsZW1lbnRGaXhlZFJvdGF0aW9uID1cbiAgICAgICAgdGhpcy5hbGlnblZlcnRpY2FsICYmIGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnRcbiAgICAgICAgICA/IGVsZW1lbnRSb3RhdGlvbiAtIDkwXG4gICAgICAgICAgOiBlbGVtZW50Um90YXRpb247XG5cbiAgICAgIC8vY2hlY2sgaWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBub3QgYW4gYXJlYSBlbGVtZW50LCBzaW5jZSB0aGlzIGVsZW1lbnQgaXMgZHJhd24gd2l0aG91dCBhbiBhcmVhIGNvbXBvbmVudFxuICAgICAgaWYgKHRoaXMuX25vdEFyZWFFbGVtZW50cy5maW5kSW5kZXgoKG5vdEFyZWFFbGVtZW50KSA9PiBub3RBcmVhRWxlbWVudCA9PT0gaWNvbikgPiAtMSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UmVuZGVyRWxlbWVudFdpdGhvdXRBcmVhKGdyYXBoaWNhbEVsZW1lbnQsIGVsZW1lbnRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShncmFwaGljYWxFbGVtZW50LCBlbGVtZW50Rml4ZWRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyRWxlbWVudFdpdGhBcmVhKFxuICAgIGdyYXBoaWNhbEVsZW1lbnQ6IEJhc2VFbGVtZW50LFxuICAgIHJvdGF0aW9uOiBudW1iZXIsXG4gICAgY29hY2hEaW1lbnNpb246IEVsZW1lbnREaW1lbnNpb24sXG4gICk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAvLyBUT0RPIC0+IGlzTm90VGFibGVHcmFwaGljVGVtcEZpeCBpcyB0ZW1wIGZpeCB0byBzaG93IGNvYWNoIHRhYmxlcyBhcyBhcmVhIGFuZCBub3QgYXMgc3ZnIGdyYXBoaWMuXG4gICAgLy8gVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IHdoZW4gdXNpbmcgVEFCTEUgc3ZnIGdyYXBoaWNzLFxuICAgIC8vIHRoZXkgYXJlIGRpc3BsYXllZCBkaXN0b3J0ZWQgZHVlIHRvIGRpZmZlcmVudCBoZWlnaHRzIGFuZCB3aWR0aHMgYW5kIHRoaXMgaXMgbm90IHZpc3VhbGx5IGdvb2QuXG4gICAgY29uc3QgaXNOb3RUYWJsZUdyYXBoaWNUZW1wRml4ID0gZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5pbmRleE9mKCdUQUJMRScpID09PSAtMTtcblxuICAgIGNvbnN0IGFyZWFQcm9wZXJ0eSA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgaXNOb3RUYWJsZUdyYXBoaWNUZW1wRml4ID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uIDogbnVsbDtcbiAgICBjb25zdCBzdHJldGNoSGVpZ2h0ID0gYXJlYVByb3BlcnR5ICE9PSAnRU5UUllfRVhJVCc7XG4gICAgY29uc3QgYXJpYUxhYmVsRm9yQXJlYSA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvblxuICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgIDogbm90aGluZztcbiAgICBjb25zdCBjYWxjdWxhdGVkRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICAgIHRydWUsXG4gICAgICBzdHJldGNoSGVpZ2h0LFxuICAgICk7XG4gICAgY29uc3QgY2FsY3VsYXRlZFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50TW91bnRpbmcgPSAnZnJlZSc7XG4gICAgaWYgKGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24ueSA9PT0gdGhpcy5jb2FjaEJvcmRlck9mZnNldCAqIC0xKSB7XG4gICAgICBlbGVtZW50TW91bnRpbmcgPSAndXBwZXItYm9yZGVyJztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi55ICsgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24uaCA9PT1cbiAgICAgIGNvYWNoRGltZW5zaW9uLmggKyB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0XG4gICAgKSB7XG4gICAgICBlbGVtZW50TW91bnRpbmcgPSAnbG93ZXItYm9yZGVyJztcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1weFwiXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnh9cHhcIlxuICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICB6LWluZGV4PVwiJHtncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnp9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWFcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICctLXNiYi1yZXNlcnZhdGlvbi1hcmVhLXdpZHRoJzogZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplLFxuICAgICAgICAgICAgJy0tc2JiLXJlc2VydmF0aW9uLWFyZWEtaGVpZ2h0JzogZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG1vdW50aW5nPSR7ZWxlbWVudE1vdW50aW5nfVxuICAgICAgICAgIGJhY2tncm91bmQ9XCJkYXJrXCJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgIHRpdGxlPSR7YXJpYUxhYmVsRm9yQXJlYX1cbiAgICAgICAgPlxuICAgICAgICAgICR7YXJlYVByb3BlcnR5XG4gICAgICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICAgICAgICAgIG5hbWU9JHthcmVhUHJvcGVydHl9XG4gICAgICAgICAgICAgICAgICByb3RhdGlvbj0ke3JvdGF0aW9ufVxuICAgICAgICAgICAgICAgICAgd2lkdGg9JHt0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgICAgICAgIGhlaWdodD0ke3RoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgICAgICAgIGBcbiAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhPlxuICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRob3V0QXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgKTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24sXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgaWNvbiBpcyB0aGUgZHJpdmVyIGFyZWEsIHRoZW4gaGVyZSBjb25jYXQgdGhlIHZlaGljbGUgdHlwZSB0byBnZXQgdGhlIHJpZ2h0IHZlaGljbGUgY2hhc3NpZSBpY29uXG4gICAgY29uc3QgaWNvbiA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgZ3JhcGhpY2FsRWxlbWVudC5pY29uLmluZGV4T2YoJ0RSSVZFUl9BUkVBJykgPT09IC0xXG4gICAgICAgID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uXG4gICAgICAgIDogZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5jb25jYXQoJ18nLCB0aGlzLnNlYXRSZXNlcnZhdGlvbi52ZWhpY2xlVHlwZSk7XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1weFwiXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnh9cHhcIlxuICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICB6LWluZGV4PVwiJHtncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnp9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICBuYW1lPSR7aWNvbiA/PyBub3RoaW5nfVxuICAgICAgICAgIHdpZHRoPSR7Z3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgIGhlaWdodD0ke2dyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLmggKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICByb3RhdGlvbj0ke3JvdGF0aW9ufVxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgP3N0cmV0Y2g9JHt0cnVlfVxuICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkU2VydmljZUVsZW1lbnRzKHNlcnZpY2VFbGVtZW50cz86IEJhc2VFbGVtZW50W10pOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFzZXJ2aWNlRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJ2aWNlRWxlbWVudHM/Lm1hcCgoc2VydmljZUVsZW1lbnQ6IEJhc2VFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCB0aXRsZURlc2NyaXB0aW9uID0gc2VydmljZUVsZW1lbnQuaWNvblxuICAgICAgICA/IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oc2VydmljZUVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgICAgOiBudWxsO1xuICAgICAgY29uc3QgY2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKFxuICAgICAgICBzZXJ2aWNlRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICApO1xuICAgICAgY29uc3QgY2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgICAgc2VydmljZUVsZW1lbnQucG9zaXRpb24sXG4gICAgICApO1xuICAgICAgY29uc3QgZWxlbWVudFJvdGF0aW9uID0gc2VydmljZUVsZW1lbnQucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IGVsZW1lbnRGaXhlZFJvdGF0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsID8gZWxlbWVudFJvdGF0aW9uIC0gOTAgOiBlbGVtZW50Um90YXRpb247XG5cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlclBvc2l0aW9uLnl9cHhcIlxuICAgICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyUG9zaXRpb24ueH1weFwiXG4gICAgICAgICAgd2lkdGg9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbi5ofXB4XCJcbiAgICAgICAgICB6LWluZGV4PVwiJHtzZXJ2aWNlRWxlbWVudC5wb3NpdGlvbi56fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgICAgbmFtZT0ke3NlcnZpY2VFbGVtZW50Lmljb24gPz8gbm90aGluZ31cbiAgICAgICAgICAgIHdpZHRoPSR7c2VydmljZUVsZW1lbnQuZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgIGhlaWdodD0ke3NlcnZpY2VFbGVtZW50LmRpbWVuc2lvbi5oICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICAucm90YXRpb249JHtlbGVtZW50Rml4ZWRSb3RhdGlvbn1cbiAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIHRpdGxlPSR7dGl0bGVEZXNjcmlwdGlvbiA/PyBub3RoaW5nfVxuICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgICAgYDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW5hZ2VzIHRoZSBzZWxlY3RlZCBwbGFjZSBldmVudCB0cmlnZ2VyZWQgZnJvbSB0aGUgcGxhY2VcbiAgICogRWFjaCBzZWxlY3Rpb24gZW1pdHMgYW4gYXJyYXkgb2YgYWxsIHNlbGVjdGVkIHBsYWNlc1xuICAgKiBAcGFyYW0gc2VsZWN0UGxhY2VFdmVudFxuICAgKi9cbiAgcHJpdmF0ZSBfb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2UgPSBzZWxlY3RQbGFjZUV2ZW50LmRldGFpbCBhcyBQbGFjZVNlbGVjdGlvbjtcbiAgICAvLyBXZSBoYXZlIHRvIHNldCBwcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2sgdG8gdHJ1ZSwgdG8gcHJldmVudCBhdXRvbWF0aWMgc2Nyb2xsaW5nIHRvIHRoZSBuZXcgZm9jdXNlZCBwbGFjZVxuICAgIHRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ29hY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRQbGFjZUNsaWNrKSB7XG4gICAgICAvLyBBZGQgcGxhY2UgdG8gcGxhY2UgY29sbGVjdGlvblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyhzZWxlY3RlZFBsYWNlKTtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkUGxhY2VJbkNvYWNoKHNlbGVjdGVkUGxhY2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0TmF2Q29hY2goZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWROYXZDb2FjaEluZGV4ID0gZXZlbnQuZGV0YWlsIGFzIG51bWJlcjtcbiAgICB0aGlzLmlzS2V5Ym9hcmROYXZpZ2F0aW9uID0gZmFsc2U7XG5cbiAgICBpZiAoc2VsZWN0ZWROYXZDb2FjaEluZGV4ICE9PSBudWxsICYmIHNlbGVjdGVkTmF2Q29hY2hJbmRleCAhPT0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICB0aGlzLnVuZm9jdXNQbGFjZUVsZW1lbnQoKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZE5hdkNvYWNoKHNlbGVjdGVkTmF2Q29hY2hJbmRleCk7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5hdkNvYWNoSW5kZXggPT09IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRDb2FjaCgpO1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkZvY3VzTmF2Q29hY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljaykge1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1BsYWNlRWxlbWVudCh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKTtcbiAgICB9XG4gICAgdGhpcy5pc0F1dG9TY3JvbGxpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW06IENvYWNoSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFjb2FjaEl0ZW0ucGxhY2VzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9CTE9DS0VEX1RBQkxFX0NBUFRJT04nLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICAgIGNvYWNoSXRlbS5pZCxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGxldCB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSAnJztcbiAgICBjb25zdCBhcmVhRGVzY3JpcHRpb25zID0gdGhpcy5fZ2V0VGl0bGVEZXNjcmlwdGlvbkxpc3RTdHJpbmcoY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cyEpO1xuICAgIGNvbnN0IHNlcnZpY2VEZXNjcmlwdGlvbnMgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhjb2FjaEl0ZW0uc2VydmljZUVsZW1lbnRzISk7XG5cbiAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9UQUJMRV9DQVBUSU9OJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW1xuICAgICAgY29hY2hJdGVtLmlkLFxuICAgIF0pO1xuXG4gICAgaWYgKCEhYXJlYURlc2NyaXB0aW9ucyB8fCAhIXNlcnZpY2VEZXNjcmlwdGlvbnMpIHtcbiAgICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiArPVxuICAgICAgICAnLiAnICsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfQVZBSUxBQkxFX1NFUlZJQ0VTJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkgKyAnOiAnO1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uICs9IHNlcnZpY2VEZXNjcmlwdGlvbnMgKyAnLCAnICsgYXJlYURlc2NyaXB0aW9ucyArICcuJztcbiAgICB9XG4gICAgcmV0dXJuIHRhYmxlQ29hY2hEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGRlc2NyaXB0aW9uc0VsZW1lbnRzOiBCYXNlRWxlbWVudFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCB1bmlxdWVEZXNjcmlwdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICByZXR1cm4gZGVzY3JpcHRpb25zRWxlbWVudHNcbiAgICAgID8ubWFwKChkZXNjcmlwdGlvbkVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgaWNvbiA9IGRlc2NyaXB0aW9uRWxlbWVudC5pY29uO1xuICAgICAgICBpZiAoIWljb24pIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uQWxyZWF5RXhpc3QgPSB1bmlxdWVEZXNjcmlwdGlvbnMuaW5kZXhPZihpY29uKSA+IC0xO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgZGVzY3JpcHRpb25FbGVtZW50Lmljb24hLFxuICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWREZXNjcmlwdGlvbiA9XG4gICAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihpY29uKSA9PT0gLTEgJiZcbiAgICAgICAgICB0aGlzLl9ub3RBcmVhRWxlbWVudHMuaW5kZXhPZihpY29uKSA9PT0gLTE7XG5cbiAgICAgICAgaWYgKCFkZXNjcmlwdGlvbkFscmVheUV4aXN0KSB7XG4gICAgICAgICAgdW5pcXVlRGVzY3JpcHRpb25zLnB1c2goZGVzY3JpcHRpb25FbGVtZW50Lmljb24hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0cmFuc2xhdGlvbiAmJiAhZGVzY3JpcHRpb25BbHJlYXlFeGlzdCAmJiBpc1ZhbGlkRGVzY3JpcHRpb24gPyB0cmFuc2xhdGlvbiA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZGVzY3JpcHRpb24pID0+ICEhZGVzY3JpcHRpb24pXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24nOiBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBb0NNLDZCQUF5QixNQUFBOzswQkFEOUIsY0FBYyxzQkFBc0IsQ0FBQzs7OztvQkFDRTs7Ozs7Ozs7Ozs7Ozs7OztBQUFSLEVBQUEsbUJBQVEsWUFBMEI7QUFBQTs7QUFLaEU7QUFLQTtBQUtBO0FBS0E7QUFLQTtBQXBCeUIseUJBQUEsbUNBQUEsa0JBQUEsTUFBQSwrQkFBbUMsSUFBSztBQUt4Qyx5QkFBQSxrQ0FBQSxrQkFBQSxNQUFBLGtDQUFBLEdBQUEsa0JBQUEsTUFBQSw2QkFBeUIsSUFBSTtBQUs3Qix5QkFBQSxrQ0FBQSxrQkFBQSxNQUFBLGdDQUFBLEdBQUEsa0JBQUEsTUFB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
608
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGh0bWwsIG5vdGhpbmcgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHsgY2xhc3NNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9jbGFzcy1tYXAuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBnZXRJMThuU2VhdFJlc2VydmF0aW9uIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29hY2hJdGVtLFxuICBQbGFjZSxcbiAgRWxlbWVudERpbWVuc2lvbixcbiAgQmFzZUVsZW1lbnQsXG4gIFBsYWNlU2VsZWN0aW9uLFxuICBTZWF0UmVzZXJ2YXRpb24sXG59IGZyb20gJy4uL2NvbW1vbi5qcyc7XG5cbmltcG9ydCB7IFNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWJhc2UtZWxlbWVudC5qcyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvc2NyZWVuLXJlYWRlci1vbmx5LmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1hcmVhLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC5qcyc7XG5pbXBvcnQgJy4vc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQuanMnO1xuXG4vKipcbiAqIERlc2NyaWJlIHRoZSBwdXJwb3NlIG9mIHRoZSBjb21wb25lbnQgd2l0aCBhIHNpbmdsZSBzaG9ydCBzZW50ZW5jZS5cbiAqXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNlYXRSZXNlcnZhdGlvblNlbGVjdGVkUGxhY2VzRXZlbnREZXRhaWxzPn0gc2VsZWN0ZWRQbGFjZXMgLSBFbWl0cyB3aGVuIGEgcGxhY2Ugd2FzIHNlbGVjdGVkIGFuZCByZXR1cm5zIGEgUGxhY2UgYXJyYXkgd2l0aCBhbGwgc2VsZWN0ZWQgcGxhY2VzXG4gKiBAZXZlbnQge0N1c3RvbUV2ZW50PFNlYXRSZXNlcnZhdGlvbkNvYWNoU2VsZWN0aW9uPn0gc2VsZWN0ZWRDb2FjaCAtIEVtaXRzIHdoZW4gYSBjb2FjaCB3YXMgc2VsZWN0ZWQgYW5kIHJldHVybnMgYSBDb2FjaFNlbGVjdGlvblxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbicpXG5jbGFzcyBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50IGV4dGVuZHMgU2VhdFJlc2VydmF0aW9uQmFzZUVsZW1lbnQge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIGFsbCBjb2FjaGVzIGFuZCBwbGFjZXMgKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc2VhdC1yZXNlcnZhdGlvbicsIHR5cGU6IE9iamVjdCB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzb3Igc2VhdFJlc2VydmF0aW9uOiBTZWF0UmVzZXJ2YXRpb24gPSBudWxsITtcblxuICAvKiogVGhlIHNlYXQgcmVzZXJ2YXRpb24gbmF2aWdhdGlvbiBjYW4gYmUgdG9nZ2xlZCBieSB0aGlzIHByb3BlcnR5ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdoYXMtbmF2aWdhdGlvbicsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGhhc05hdmlnYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKiBDb250cm9scyB0aGUgdmlzdWFsIHJlcHJlc2VudGF0aW9uIG9mIHNlYXQgcmVzZXJ2YXRpb24gaW4gYSBob3Jpem9uYWwgb3IgdmVydGljYWwgYWxpZ25tZW50ICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdhbGlnbi12ZXJ0aWNhbCcsIHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc29yIGFsaWduVmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTWF4aW1hbCBudW1iZXIgb2YgcG9zc2libGUgY2xpY2thYmxlIHNlYXRzICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdtYXgtcmVzZXJ2YXRpb25zJywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBtYXhSZXNlcnZhdGlvbnM6IG51bWJlciA9IG51bGwhO1xuXG4gIC8qKiBBbnkgY2xpY2sgZnVuY3Rpb25hbGl0eSBpcyBwcmV2ZW50ZWQgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3ByZXZlbnQtcGxhY2UtY2xpY2snLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NvciBwcmV2ZW50UGxhY2VDbGljazogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcbiAgcHJpdmF0ZSBfY29hY2hlc0h0bWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVzdWx0O1xuICAvLyBHcmFwaGljcyB0aGF0IHNob3VsZCBub3QgYmUgcmVuZGVyZWQgd2l0aCBhbiBhcmVhXG4gIHByaXZhdGUgX25vdEFyZWFFbGVtZW50cyA9IFtcbiAgICAnRFJJVkVSX0FSRUFfRlVMTCcsXG4gICAgJ0NPQUNIX1BBU1NBR0UnLFxuICAgICdDT0FDSF9XQUxMX05PX1BBU1NBR0UnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyxcbiAgICAnQ09NUEFSVE1FTlRfUEFTU0FHRV9NSURETEUnLFxuICAgICdDT01QQVJUTUVOVF9QQVNTQUdFX0xPVycsXG4gIF07XG4gIC8vIEFyZWEgaWNvbnMgdGhhdCBzaG91bGQgbm90IGJlIGZpeGVkIGR1cmluZyByb3RhdGlvbiB3aGVuIHZlcnRpY2FsIG1vZGUgaXMgc2VsZWN0ZWRcbiAgcHJpdmF0ZSBfbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMgPSBbJ0VOVFJZX0VYSVQnXTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2hhc05hdmlnYXRpb24nKSkge1xuICAgICAgaWYgKHRoaXMuaGFzTmF2aWdhdGlvbikge1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJylcbiAgICAgICAgICAuZm9yRWFjaCgodGFibGUpID0+IHRhYmxlLnJlbW92ZUF0dHJpYnV0ZSgndGFiaW5kZXgnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3RcbiAgICAgICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RhYmxlJylcbiAgICAgICAgICAuZm9yRWFjaCgodGFibGUpID0+IHRhYmxlLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5fY29tcG9uZW50U2V0dXAoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICB0aGlzLl9pbml0VmVoaWNsZVNlYXRSZXNlcnZhdGlvbkNvbnN0cnVjdGlvbigpO1xuICAgIHJldHVybiB0aGlzLl9jb2FjaGVzSHRtbFRlbXBsYXRlIHx8IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jb21wb25lbnRTZXR1cCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXROYXZpZ2F0aW9uU2VsZWN0aW9uQnlTY3JvbGxFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFZlaGljbGVTZWF0UmVzZXJ2YXRpb25Db25zdHJ1Y3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgY29hY2hJdGVtcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zZWF0UmVzZXJ2YXRpb24/LmNvYWNoSXRlbXMpKTtcbiAgICBjb25zdCBjbGFzc0FsaWduVmVydGljYWwgPSB0aGlzLmFsaWduVmVydGljYWwgPyAnc2JiLXNyX193cmFwcGVyLS12ZXJ0aWNhbCcgOiAnJztcblxuICAgIHRoaXMuX2NvYWNoZXNIdG1sVGVtcGxhdGUgPSBodG1sYFxuICAgICAgPGRpdj5cbiAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cImZpcnN0LXRhYi1lbGVtZW50XCJcbiAgICAgICAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0JFR0lOJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCl9XCJcbiAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuXG4gICAgICAgIDxkaXYgQGtleWRvd249JHsoZXZ0OiBLZXlib2FyZEV2ZW50KSA9PiB0aGlzLmhhbmRsZUtleWJvYXJkRXZlbnQoZXZ0KX0+XG4gICAgICAgICAgJHt0aGlzLl9yZW5kZXJOYXZpZ2F0aW9uKCl9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1zcl9fd3JhcHBlciAke2NsYXNzQWxpZ25WZXJ0aWNhbH1cIj5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJzYmItc3JfX3BhcmVudC1hcmVhXCIgY2xhc3M9XCJzYmItc3JfX3BhcmVudFwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2JiLXNyX19saXN0LWNvYWNoZXNcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgJHt0aGlzLl9yZW5kZXJDb2FjaGVzKGNvYWNoSXRlbXMpfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxzYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgaWQ9XCJsYXN0LXRhYi1lbGVtZW50XCJcbiAgICAgICAgICAgIHJvbGU9XCJjb250ZW50aW5mb1wiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0VORCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpfVwiXG4gICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc2JiLXNjcmVlbi1yZWFkZXItb25seT5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJOYXZpZ2F0aW9uKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmhhc05hdmlnYXRpb24pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPG5hdiBjbGFzcz1cIiR7Y2xhc3NNYXAoeyAnc2JiLXNyLW5hdmlnYXRpb24tLXZlcnRpY2FsJzogdGhpcy5hbGlnblZlcnRpY2FsIH0pfVwiPlxuICAgICAgICA8dWxcbiAgICAgICAgICBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uX19saXN0LWNvYWNoZXNcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCIke2dldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgICAnU0VBVF9SRVNFUlZBVElPTl9OQVZJR0FUSU9OJyxcbiAgICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICAgKX1cIlxuICAgICAgICA+XG4gICAgICAgICAgJHt0aGlzLnNlYXRSZXNlcnZhdGlvbj8uY29hY2hJdGVtcy5tYXAoKGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaHRtbGA8bGk+XG4gICAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoXG4gICAgICAgICAgICAgICAgQHNlbGVjdENvYWNoPSR7KGV2ZW50OiBDdXN0b21FdmVudCkgPT4gdGhpcy5fb25TZWxlY3ROYXZDb2FjaChldmVudCl9XG4gICAgICAgICAgICAgICAgQGZvY3VzQ29hY2g9JHsoKSA9PiB0aGlzLl9vbkZvY3VzTmF2Q29hY2goKX1cbiAgICAgICAgICAgICAgICBpbmRleD1cIiR7aW5kZXh9XCJcbiAgICAgICAgICAgICAgICBjb2FjaC1pZD1cIiR7Y29hY2hJdGVtLmlkfVwiXG4gICAgICAgICAgICAgICAgLnNlbGVjdGVkPSR7dGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPT09IGluZGV4fVxuICAgICAgICAgICAgICAgIC5mb2N1c2VkPSR7dGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgICAgLnByb3BlcnR5SWRzPVwiJHtjb2FjaEl0ZW0ucHJvcGVydHlJZHN9XCJcbiAgICAgICAgICAgICAgICAudHJhdmVsQ2xhc3M9XCIke2NvYWNoSXRlbS50cmF2ZWxDbGFzc31cIlxuICAgICAgICAgICAgICAgID9kcml2ZXItYXJlYT1cIiR7IWNvYWNoSXRlbS5wbGFjZXM/Lmxlbmd0aH1cIlxuICAgICAgICAgICAgICAgID9maXJzdD1cIiR7aW5kZXggPT09IDB9XCJcbiAgICAgICAgICAgICAgICA/bGFzdD1cIiR7aW5kZXggPT09IHRoaXMuc2VhdFJlc2VydmF0aW9uPy5jb2FjaEl0ZW1zLmxlbmd0aCAtIDF9XCJcbiAgICAgICAgICAgICAgICA/dmVydGljYWw9XCIke3RoaXMuYWxpZ25WZXJ0aWNhbH1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaD5cbiAgICAgICAgICAgIDwvbGk+YDtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC91bD5cbiAgICAgIDwvbmF2PlxuICAgIGA7XG4gIH1cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBjb2FjaGVzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJDb2FjaGVzKGNvYWNoZXM/OiBDb2FjaEl0ZW1bXSk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIWNvYWNoZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY29hY2hlcy5tYXAoKGNvYWNoSXRlbTogQ29hY2hJdGVtLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPGxpIGNsYXNzPVwic2JiLXNyX19pdGVtLWNvYWNoXCI+JHt0aGlzLl9yZW5kZXJDb2FjaEVsZW1lbnQoY29hY2hJdGVtLCBpbmRleCl9PC9saT5cbiAgICAgIGA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJDb2FjaEVsZW1lbnQoY29hY2hJdGVtOiBDb2FjaEl0ZW0sIGluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZENvYWNoRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKGNvYWNoSXRlbS5kaW1lbnNpb24pO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uVGFibGVDb2FjaFdpdGhTZXJ2aWNlcyA9IHRoaXMuX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW0pO1xuXG4gICAgcmV0dXJuIGh0bWxgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgIHNjb3BlZC1jbGFzc2VzPVwiY29hY2gtd3JhcHBlclwiXG4gICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbi5ofXB4XCJcbiAgICAgIHdpZHRoPVwiJHtjYWxjdWxhdGVkQ29hY2hEaW1lbnNpb24ud31weFwiXG4gICAgPlxuICAgICAgJHt0aGlzLl9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW0sIGluZGV4KX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRHcmFwaGljYWxFbGVtZW50cyhjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzIHx8IFtdLCBjb2FjaEl0ZW0uZGltZW5zaW9uKX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRTZXJ2aWNlRWxlbWVudHMoY29hY2hJdGVtLnNlcnZpY2VFbGVtZW50cyl9XG4gICAgICA8dGFibGVcbiAgICAgICAgQGZvY3VzPSR7KCkgPT4gdGhpcy5vbkZvY3VzVGFibGVDb2FjaEFuZFByZXNlbGVjdFBsYWNlKGluZGV4KX1cbiAgICAgICAgaWQ9XCJzYmItc3ItY29hY2gtJHtpbmRleH1cIlxuICAgICAgICBjbGFzcz1cInNiYi1zci1jb2FjaC13cmFwcGVyX190YWJsZVwiXG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJzYmItc3ItY29hY2gtY2FwdGlvbi0ke2luZGV4fVwiXG4gICAgICA+XG4gICAgICAgIDxjYXB0aW9uIGlkPVwic2JiLXNyLWNvYWNoLWNhcHRpb24tJHtpbmRleH1cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHtkZXNjcmlwdGlvblRhYmxlQ29hY2hXaXRoU2VydmljZXN9PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICA8L2NhcHRpb24+XG4gICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRSb3dQbGFjZXMoY29hY2hJdGVtLCBpbmRleCl9XG4gICAgICA8L3RhYmxlPlxuICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPmA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhjb2FjaEl0ZW06IENvYWNoSXRlbSwgY29hY2hJbmRleDogbnVtYmVyKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIGNvbnN0IGFsbEVsZW1lbnRzID0gY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cztcbiAgICBjb25zdCBDT0FDSF9QQVNTQUdFX1dJRFRIID0gMTtcbiAgICBjb25zdCBkcml2ZXJBcmVhID0gYWxsRWxlbWVudHM/LmZpbmQoXG4gICAgICAoZWxlbWVudDogQmFzZUVsZW1lbnQpID0+IGVsZW1lbnQuaWNvbiA9PT0gJ0RSSVZFUl9BUkVBX0ZVTEwnLFxuICAgICk7XG4gICAgY29uc3QgYm9yZGVyV2lkdGggPSBkcml2ZXJBcmVhXG4gICAgICA/IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIGRyaXZlckFyZWEuZGltZW5zaW9uLncgLSBDT0FDSF9QQVNTQUdFX1dJRFRIXG4gICAgICA6IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIENPQUNIX1BBU1NBR0VfV0lEVEggKiAyO1xuICAgIGNvbnN0IGJvcmRlck9mZnNldFggPVxuICAgICAgY29hY2hJbmRleCA9PT0gMCAmJiBkcml2ZXJBcmVhXG4gICAgICAgID8gZHJpdmVyQXJlYT8uZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZVxuICAgICAgICA6IHRoaXMuYmFzZUdyaWRTaXplO1xuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgIHNjb3BlZC1jbGFzc2VzPVwiY29hY2gtYm9yZGVyXCJcbiAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke3RoaXMuY29hY2hCb3JkZXJQYWRkaW5nICogLTF9cHhcIlxuICAgICAgICBpbnNldC1pbmxpbmUtc3RhcnQ9XCIke2JvcmRlck9mZnNldFh9cHhcIlxuICAgICAgPlxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgIG5hbWU9XCJDT0FDSF9CT1JERVJfTUlERExFXCJcbiAgICAgICAgICB3aWR0aD0ke2JvcmRlcldpZHRoICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgaGVpZ2h0PSR7KGNvYWNoSXRlbS5kaW1lbnNpb24uaCArIHRoaXMuY29hY2hCb3JkZXJPZmZzZXQgKiAyKSAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgID9zdHJldGNoPSR7dHJ1ZX1cbiAgICAgICAgICByb2xlPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZFJvd1BsYWNlcyhjb2FjaDogQ29hY2hJdGVtLCBjb2FjaEluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFjb2FjaC5wbGFjZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIFByZXBhaXIgcm93cyB3aXRoIHRoZSBwbGFjZXMgdG8gcmVuZGVyIGEgdGFibGVcbiAgICBjb25zdCB0YWJsZVJvd1BsYWNlczogUmVjb3JkPG51bWJlciwgUGxhY2VbXT4gPSB7fTtcbiAgICBmb3IgKGNvbnN0IHBsYWNlIG9mIGNvYWNoLnBsYWNlcykge1xuICAgICAgaWYgKCF0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XSkge1xuICAgICAgICB0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XSA9IFtwbGFjZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YWJsZVJvd1BsYWNlc1twbGFjZS5wb3NpdGlvbi55XS5wdXNoKHBsYWNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0YWJsZVJvd1BsYWNlcylcbiAgICAgIC5tYXAoKHJvd1BsYWNlczogUGxhY2VbXSwgaW5kZXgpID0+IHtcbiAgICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgICAgPHRyIGlkPVwicm93LSR7Y29hY2hJbmRleH0tJHtyb3dQbGFjZXNbMF0ucG9zaXRpb24ueX1cIiBkYXRhLXJvdy1pbmRleD0ke2luZGV4fT5cbiAgICAgICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMocm93UGxhY2VzLCBjb2FjaEluZGV4KX1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICBgO1xuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKChyb3dUZW1wbGF0ZSkgPT4gcm93VGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMocGxhY2VzOiBQbGFjZVtdLCBjb2FjaEluZGV4OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgLy9Tb3J0cyBlYWNoIHBsYWNlIGJ5IGl0cyBhc2NlbmRpbmcgeCBjb29yZGluYXRlXG4gICAgcGxhY2VzLnNvcnQoXG4gICAgICAocGxhY2VBOiBQbGFjZSwgcGxhY2VCOiBQbGFjZSkgPT4gTnVtYmVyKHBsYWNlQS5wb3NpdGlvbi54KSAtIE51bWJlcihwbGFjZUIucG9zaXRpb24ueCksXG4gICAgKTtcblxuICAgIHJldHVybiBwbGFjZXM/Lm1hcCgocGxhY2U6IFBsYWNlLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBjYWxjdWxhdGVkSW50ZXJuYWxEaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24ocGxhY2UuZGltZW5zaW9uKTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRJbnRlcm5hbFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24ocGxhY2UucG9zaXRpb24pO1xuICAgICAgY29uc3QgdGV4dFJvdGF0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsID8gLTkwIDogMDtcblxuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgICBzY29wZWQtY2xhc3Nlcz1cImdyYXBoaWNhbC1lbGVtZW50XCJcbiAgICAgICAgICBpbnNldC1ibG9jay1zdGFydD1cIiR7Y2FsY3VsYXRlZEludGVybmFsUG9zaXRpb24ueX1weFwiXG4gICAgICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0PVwiJHtjYWxjdWxhdGVkSW50ZXJuYWxQb3NpdGlvbi54fXB4XCJcbiAgICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uLnd9cHhcIlxuICAgICAgICAgIGhlaWdodD1cIiR7Y2FsY3VsYXRlZEludGVybmFsRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICAgIHotaW5kZXg9XCIke3BsYWNlLnBvc2l0aW9uLnp9XCJcbiAgICAgICAgICBjZWxsLWlkPVwiY2VsbC0ke2NvYWNoSW5kZXh9LSR7cGxhY2UucG9zaXRpb24ueX0tJHtpbmRleH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcbiAgICAgICAgICAgIEBzZWxlY3RQbGFjZT0keyhzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudCkgPT4gdGhpcy5fb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50KX1cbiAgICAgICAgICAgIGV4cG9ydHBhcnRzPVwic2JiLXNyLXBsYWNlLXBhcnRcIlxuICAgICAgICAgICAgaWQ9XCJzZWF0LXJlc2VydmF0aW9uX19wbGFjZS1idXR0b24tJHtjb2FjaEluZGV4fS0ke3BsYWNlLm51bWJlcn1cIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcIlxuICAgICAgICAgICAgZGF0YS1jZWxsLWlkPVwiJHtjb2FjaEluZGV4fS0ke3BsYWNlLnBvc2l0aW9uLnl9LSR7aW5kZXh9XCJcbiAgICAgICAgICAgIHRleHQ9JHtwbGFjZS5udW1iZXJ9XG4gICAgICAgICAgICB0eXBlPSR7cGxhY2UudHlwZX1cbiAgICAgICAgICAgIHN0YXRlPSR7cGxhY2Uuc3RhdGV9XG4gICAgICAgICAgICB3aWR0aD0ke3BsYWNlLmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICBoZWlnaHQ9JHtwbGFjZS5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgcm90YXRpb249JHtwbGFjZS5yb3RhdGlvbiA/PyBub3RoaW5nfVxuICAgICAgICAgICAgdGV4dC1yb3RhdGlvbj0ke3RleHRSb3RhdGlvbn1cbiAgICAgICAgICAgIGNvYWNoLWluZGV4PSR7Y29hY2hJbmRleH1cbiAgICAgICAgICAgIC5wcm9wZXJ0eUlkcz0ke3BsYWNlLnByb3BlcnR5SWRzfVxuICAgICAgICAgICAgLnByZXZlbnRDbGljaz0ke3RoaXMucHJldmVudFBsYWNlQ2xpY2t9XG4gICAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbD5cbiAgICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRHcmFwaGljYWxFbGVtZW50cyhcbiAgICBncmFwaGljYWxFbGVtZW50czogQmFzZUVsZW1lbnRbXSxcbiAgICBjb2FjaERpbWVuc2lvbjogRWxlbWVudERpbWVuc2lvbixcbiAgKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghZ3JhcGhpY2FsRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBncmFwaGljYWxFbGVtZW50cz8ubWFwKChncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgaWNvbiA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvbiA/PyAnJztcbiAgICAgIGNvbnN0IGVsZW1lbnRSb3RhdGlvbiA9IGdyYXBoaWNhbEVsZW1lbnQucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnQgPVxuICAgICAgICB0aGlzLl9ub3RGaXhlZFJvdGF0YWJsZUFyZWFJY29ucy5pbmRleE9mKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiEpID09PSAtMTtcbiAgICAgIGNvbnN0IGVsZW1lbnRGaXhlZFJvdGF0aW9uID1cbiAgICAgICAgdGhpcy5hbGlnblZlcnRpY2FsICYmIGlzTm90Rml4ZWRSb3RhdGlvbkdyYXBoaWNhbEVsZW1lbnRcbiAgICAgICAgICA/IGVsZW1lbnRSb3RhdGlvbiAtIDkwXG4gICAgICAgICAgOiBlbGVtZW50Um90YXRpb247XG5cbiAgICAgIC8vY2hlY2sgaWYgdGhlIGN1cnJlbnQgZWxlbWVudCBpcyBub3QgYW4gYXJlYSBlbGVtZW50LCBzaW5jZSB0aGlzIGVsZW1lbnQgaXMgZHJhd24gd2l0aG91dCBhbiBhcmVhIGNvbXBvbmVudFxuICAgICAgaWYgKHRoaXMuX25vdEFyZWFFbGVtZW50cy5maW5kSW5kZXgoKG5vdEFyZWFFbGVtZW50KSA9PiBub3RBcmVhRWxlbWVudCA9PT0gaWNvbikgPiAtMSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UmVuZGVyRWxlbWVudFdpdGhvdXRBcmVhKGdyYXBoaWNhbEVsZW1lbnQsIGVsZW1lbnRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShncmFwaGljYWxFbGVtZW50LCBlbGVtZW50Rml4ZWRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyRWxlbWVudFdpdGhBcmVhKFxuICAgIGdyYXBoaWNhbEVsZW1lbnQ6IEJhc2VFbGVtZW50LFxuICAgIHJvdGF0aW9uOiBudW1iZXIsXG4gICAgY29hY2hEaW1lbnNpb246IEVsZW1lbnREaW1lbnNpb24sXG4gICk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAvLyBUT0RPIC0+IGlzTm90VGFibGVHcmFwaGljVGVtcEZpeCBpcyB0ZW1wIGZpeCB0byBzaG93IGNvYWNoIHRhYmxlcyBhcyBhcmVhIGFuZCBub3QgYXMgc3ZnIGdyYXBoaWMuXG4gICAgLy8gVGhlIHByb2JsZW0gaGVyZSBpcyB0aGF0IHdoZW4gdXNpbmcgVEFCTEUgc3ZnIGdyYXBoaWNzLFxuICAgIC8vIHRoZXkgYXJlIGRpc3BsYXllZCBkaXN0b3J0ZWQgZHVlIHRvIGRpZmZlcmVudCBoZWlnaHRzIGFuZCB3aWR0aHMgYW5kIHRoaXMgaXMgbm90IHZpc3VhbGx5IGdvb2QuXG4gICAgY29uc3QgaXNOb3RUYWJsZUdyYXBoaWNUZW1wRml4ID0gZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5pbmRleE9mKCdUQUJMRScpID09PSAtMTtcblxuICAgIGNvbnN0IGFyZWFQcm9wZXJ0eSA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgaXNOb3RUYWJsZUdyYXBoaWNUZW1wRml4ID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uIDogbnVsbDtcbiAgICBjb25zdCBzdHJldGNoSGVpZ2h0ID0gYXJlYVByb3BlcnR5ICE9PSAnRU5UUllfRVhJVCc7XG4gICAgY29uc3QgYXJpYUxhYmVsRm9yQXJlYSA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvblxuICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgIDogbm90aGluZztcbiAgICBjb25zdCBjYWxjdWxhdGVkRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICAgIHRydWUsXG4gICAgICBzdHJldGNoSGVpZ2h0LFxuICAgICk7XG4gICAgY29uc3QgY2FsY3VsYXRlZFBvc2l0aW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkUG9zaXRpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICBjb2FjaERpbWVuc2lvbixcbiAgICAgIHRydWUsXG4gICAgKTtcblxuICAgIGxldCBlbGVtZW50TW91bnRpbmcgPSAnZnJlZSc7XG4gICAgaWYgKGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24ueSA9PT0gdGhpcy5jb2FjaEJvcmRlck9mZnNldCAqIC0xKSB7XG4gICAgICBlbGVtZW50TW91bnRpbmcgPSAndXBwZXItYm9yZGVyJztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi55ICsgZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24uaCA9PT1cbiAgICAgIGNvYWNoRGltZW5zaW9uLmggKyB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0XG4gICAgKSB7XG4gICAgICBlbGVtZW50TW91bnRpbmcgPSAnbG93ZXItYm9yZGVyJztcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1weFwiXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnh9cHhcIlxuICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICB6LWluZGV4PVwiJHtncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnp9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWFcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICctLXNiYi1yZXNlcnZhdGlvbi1hcmVhLXdpZHRoJzogZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplLFxuICAgICAgICAgICAgJy0tc2JiLXJlc2VydmF0aW9uLWFyZWEtaGVpZ2h0JzogZ3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24uaCAqIHRoaXMuYmFzZUdyaWRTaXplLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIG1vdW50aW5nPSR7ZWxlbWVudE1vdW50aW5nfVxuICAgICAgICAgIGJhY2tncm91bmQ9XCJkYXJrXCJcbiAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgIHRpdGxlPSR7YXJpYUxhYmVsRm9yQXJlYX1cbiAgICAgICAgPlxuICAgICAgICAgICR7YXJlYVByb3BlcnR5XG4gICAgICAgICAgICA/IGh0bWxgXG4gICAgICAgICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICAgICAgICAgIG5hbWU9JHthcmVhUHJvcGVydHl9XG4gICAgICAgICAgICAgICAgICByb3RhdGlvbj0ke3JvdGF0aW9ufVxuICAgICAgICAgICAgICAgICAgd2lkdGg9JHt0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgICAgICAgIGhlaWdodD0ke3RoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgICAgICAgIGBcbiAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhPlxuICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRob3V0QXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgKTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24sXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgaWNvbiBpcyB0aGUgZHJpdmVyIGFyZWEsIHRoZW4gaGVyZSBjb25jYXQgdGhlIHZlaGljbGUgdHlwZSB0byBnZXQgdGhlIHJpZ2h0IHZlaGljbGUgY2hhc3NpZSBpY29uXG4gICAgY29uc3QgaWNvbiA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgZ3JhcGhpY2FsRWxlbWVudC5pY29uLmluZGV4T2YoJ0RSSVZFUl9BUkVBJykgPT09IC0xXG4gICAgICAgID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uXG4gICAgICAgIDogZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5jb25jYXQoJ18nLCB0aGlzLnNlYXRSZXNlcnZhdGlvbi52ZWhpY2xlVHlwZSk7XG5cbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWRcbiAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgIGluc2V0LWJsb2NrLXN0YXJ0PVwiJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1weFwiXG4gICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZFBvc2l0aW9uLnh9cHhcIlxuICAgICAgICB3aWR0aD1cIiR7Y2FsY3VsYXRlZERpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgaGVpZ2h0PVwiJHtjYWxjdWxhdGVkRGltZW5zaW9uLmh9cHhcIlxuICAgICAgICB6LWluZGV4PVwiJHtncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnp9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICBuYW1lPSR7aWNvbiA/PyBub3RoaW5nfVxuICAgICAgICAgIHdpZHRoPSR7Z3JhcGhpY2FsRWxlbWVudC5kaW1lbnNpb24udyAqIHRoaXMuYmFzZUdyaWRTaXplfVxuICAgICAgICAgIGhlaWdodD0ke2dyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLmggKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICByb3RhdGlvbj0ke3JvdGF0aW9ufVxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgP3N0cmV0Y2g9JHt0cnVlfVxuICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgICAgPC9zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQ+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkU2VydmljZUVsZW1lbnRzKHNlcnZpY2VFbGVtZW50cz86IEJhc2VFbGVtZW50W10pOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFzZXJ2aWNlRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJ2aWNlRWxlbWVudHM/Lm1hcCgoc2VydmljZUVsZW1lbnQ6IEJhc2VFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCB0aXRsZURlc2NyaXB0aW9uID0gc2VydmljZUVsZW1lbnQuaWNvblxuICAgICAgICA/IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oc2VydmljZUVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgICAgOiBudWxsO1xuICAgICAgY29uc3QgY2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKFxuICAgICAgICBzZXJ2aWNlRWxlbWVudC5kaW1lbnNpb24sXG4gICAgICApO1xuICAgICAgY29uc3QgY2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgICAgc2VydmljZUVsZW1lbnQucG9zaXRpb24sXG4gICAgICApO1xuICAgICAgY29uc3QgZWxlbWVudFJvdGF0aW9uID0gc2VydmljZUVsZW1lbnQucm90YXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IGVsZW1lbnRGaXhlZFJvdGF0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsID8gZWxlbWVudFJvdGF0aW9uIC0gOTAgOiBlbGVtZW50Um90YXRpb247XG5cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkXG4gICAgICAgICAgc2NvcGVkLWNsYXNzZXM9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgICAgaW5zZXQtYmxvY2stc3RhcnQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlclBvc2l0aW9uLnl9cHhcIlxuICAgICAgICAgIGluc2V0LWlubGluZS1zdGFydD1cIiR7Y2FsY3VsYXRlZGNDbXBhcnRtZW50TnVtYmVyUG9zaXRpb24ueH1weFwiXG4gICAgICAgICAgd2lkdGg9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbi53fXB4XCJcbiAgICAgICAgICBoZWlnaHQ9XCIke2NhbGN1bGF0ZWRjQ21wYXJ0bWVudE51bWJlckRpbWVuc2lvbi5ofXB4XCJcbiAgICAgICAgICB6LWluZGV4PVwiJHtzZXJ2aWNlRWxlbWVudC5wb3NpdGlvbi56fVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgICAgbmFtZT0ke3NlcnZpY2VFbGVtZW50Lmljb24gPz8gbm90aGluZ31cbiAgICAgICAgICAgIHdpZHRoPSR7c2VydmljZUVsZW1lbnQuZGltZW5zaW9uLncgKiB0aGlzLmJhc2VHcmlkU2l6ZX1cbiAgICAgICAgICAgIGhlaWdodD0ke3NlcnZpY2VFbGVtZW50LmRpbWVuc2lvbi5oICogdGhpcy5iYXNlR3JpZFNpemV9XG4gICAgICAgICAgICAucm90YXRpb249JHtlbGVtZW50Rml4ZWRSb3RhdGlvbn1cbiAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgIHRpdGxlPSR7dGl0bGVEZXNjcmlwdGlvbiA/PyBub3RoaW5nfVxuICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPlxuICAgICAgYDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW5hZ2VzIHRoZSBzZWxlY3RlZCBwbGFjZSBldmVudCB0cmlnZ2VyZWQgZnJvbSB0aGUgcGxhY2VcbiAgICogRWFjaCBzZWxlY3Rpb24gZW1pdHMgYW4gYXJyYXkgb2YgYWxsIHNlbGVjdGVkIHBsYWNlc1xuICAgKiBAcGFyYW0gc2VsZWN0UGxhY2VFdmVudFxuICAgKi9cbiAgcHJpdmF0ZSBfb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2UgPSBzZWxlY3RQbGFjZUV2ZW50LmRldGFpbCBhcyBQbGFjZVNlbGVjdGlvbjtcbiAgICAvLyBXZSBoYXZlIHRvIHNldCBwcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2sgdG8gdHJ1ZSwgdG8gcHJldmVudCBhdXRvbWF0aWMgc2Nyb2xsaW5nIHRvIHRoZSBuZXcgZm9jdXNlZCBwbGFjZVxuICAgIHRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ29hY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRQbGFjZUNsaWNrKSB7XG4gICAgICAvLyBBZGQgcGxhY2UgdG8gcGxhY2UgY29sbGVjdGlvblxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFNlYXRSZXNlcnZhdGlvblBsYWNlcyhzZWxlY3RlZFBsYWNlKTtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkUGxhY2VJbkNvYWNoKHNlbGVjdGVkUGxhY2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0TmF2Q29hY2goZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0ZWROYXZDb2FjaEluZGV4ID0gZXZlbnQuZGV0YWlsIGFzIG51bWJlcjtcbiAgICB0aGlzLmlzS2V5Ym9hcmROYXZpZ2F0aW9uID0gZmFsc2U7XG5cbiAgICBpZiAoc2VsZWN0ZWROYXZDb2FjaEluZGV4ICE9PSBudWxsICYmIHNlbGVjdGVkTmF2Q29hY2hJbmRleCAhPT0gdGhpcy5jdXJyU2VsZWN0ZWRDb2FjaEluZGV4KSB7XG4gICAgICB0aGlzLnVuZm9jdXNQbGFjZUVsZW1lbnQoKTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9TZWxlY3RlZE5hdkNvYWNoKHNlbGVjdGVkTmF2Q29hY2hJbmRleCk7XG4gICAgfSBlbHNlIGlmIChzZWxlY3RlZE5hdkNvYWNoSW5kZXggPT09IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRDb2FjaCgpO1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vbkZvY3VzTmF2Q29hY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljaykge1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1BsYWNlRWxlbWVudCh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKTtcbiAgICB9XG4gICAgdGhpcy5pc0F1dG9TY3JvbGxpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW06IENvYWNoSXRlbSk6IHN0cmluZyB7XG4gICAgaWYgKCFjb2FjaEl0ZW0ucGxhY2VzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9CTE9DS0VEX1RBQkxFX0NBUFRJT04nLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICAgIGNvYWNoSXRlbS5pZCxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIGxldCB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSAnJztcbiAgICBjb25zdCBhcmVhRGVzY3JpcHRpb25zID0gdGhpcy5fZ2V0VGl0bGVEZXNjcmlwdGlvbkxpc3RTdHJpbmcoY29hY2hJdGVtLmdyYXBoaWNFbGVtZW50cyEpO1xuICAgIGNvbnN0IHNlcnZpY2VEZXNjcmlwdGlvbnMgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhjb2FjaEl0ZW0uc2VydmljZUVsZW1lbnRzISk7XG5cbiAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdDT0FDSF9UQUJMRV9DQVBUSU9OJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW1xuICAgICAgY29hY2hJdGVtLmlkLFxuICAgIF0pO1xuXG4gICAgaWYgKCEhYXJlYURlc2NyaXB0aW9ucyB8fCAhIXNlcnZpY2VEZXNjcmlwdGlvbnMpIHtcbiAgICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiArPVxuICAgICAgICAnLiAnICsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfQVZBSUxBQkxFX1NFUlZJQ0VTJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkgKyAnOiAnO1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uICs9IHNlcnZpY2VEZXNjcmlwdGlvbnMgKyAnLCAnICsgYXJlYURlc2NyaXB0aW9ucyArICcuJztcbiAgICB9XG4gICAgcmV0dXJuIHRhYmxlQ29hY2hEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGRlc2NyaXB0aW9uc0VsZW1lbnRzOiBCYXNlRWxlbWVudFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCB1bmlxdWVEZXNjcmlwdGlvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICByZXR1cm4gZGVzY3JpcHRpb25zRWxlbWVudHNcbiAgICAgID8ubWFwKChkZXNjcmlwdGlvbkVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgaWNvbiA9IGRlc2NyaXB0aW9uRWxlbWVudC5pY29uO1xuICAgICAgICBpZiAoIWljb24pIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uQWxyZWF5RXhpc3QgPSB1bmlxdWVEZXNjcmlwdGlvbnMuaW5kZXhPZihpY29uKSA+IC0xO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICAgZGVzY3JpcHRpb25FbGVtZW50Lmljb24hLFxuICAgICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWREZXNjcmlwdGlvbiA9XG4gICAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihpY29uKSA9PT0gLTEgJiZcbiAgICAgICAgICB0aGlzLl9ub3RBcmVhRWxlbWVudHMuaW5kZXhPZihpY29uKSA9PT0gLTE7XG5cbiAgICAgICAgaWYgKCFkZXNjcmlwdGlvbkFscmVheUV4aXN0KSB7XG4gICAgICAgICAgdW5pcXVlRGVzY3JpcHRpb25zLnB1c2goZGVzY3JpcHRpb25FbGVtZW50Lmljb24hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gISF0cmFuc2xhdGlvbiAmJiAhZGVzY3JpcHRpb25BbHJlYXlFeGlzdCAmJiBpc1ZhbGlkRGVzY3JpcHRpb24gPyB0cmFuc2xhdGlvbiA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZGVzY3JpcHRpb24pID0+ICEhZGVzY3JpcHRpb24pXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24nOiBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFvQ00sNkJBQXlCLE1BQUE7OzBCQUQ5QixjQUFjLHNCQUFzQixDQUFDOzs7O29CQUNFOzs7Ozs7Ozs7Ozs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUEwQjtBQUFBOztBQUtoRTtBQUtBO0FBS0E7QUFLQTtBQUtBO0FBcEJ5Qix5QkFBQSxtQ0FBQSxrQkFBQSxNQUFBLCtCQUFtQyxJQUFLO0FBS3hDLHlCQUFBLGtDQUFBLGtCQUFBLE1BQUEsa0NBQUEsR0FBQSxrQkFBQSxNQUFBLDZCQUF5QixJQUFJO0FBSzdCLHlCQUFBLGtDQUFBLGtCQUFBLE1BQUEsZ0NBQUEsR0FBQSxrQkFBQSxNQUFBLDZC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
@@ -105,4 +105,4 @@ let SbbSeatReservationAreaElement = (() => {
105
105
  export {
106
106
  SbbSeatReservationAreaElement
107
107
  };
108
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tYXJlYS9zZWF0LXJlc2VydmF0aW9uLWFyZWEuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWFyZWEuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBWaXN1YWxpemUgYW4gYXJlYSB3aXRoIGEgc3BlY2lhbCBtZWFuaW5nIHdpdGhpbiBhIHdhZ29uLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhJylcbmNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbkFyZWFFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBNb3VudGluZyBQcm9wICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBtb3VudGluZzogJ2ZyZWUnIHwgJ3VwcGVyLWJvcmRlcicgfCAnbG93ZXItYm9yZGVyJyB8ICd1cHBlci10by1sb3dlci1ib3JkZXInID1cbiAgICAnZnJlZSc7XG5cbiAgLyoqIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBhcmVhICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBiYWNrZ3JvdW5kOiAnbGlnaHQnIHwgJ2RhcmsnID0gJ2xpZ2h0JztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8c2xvdD48L3Nsb3Q+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYSc6IFNiYlNlYXRSZXNlcnZhdGlvbkFyZWFFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBWU0saUNBQTZCLE1BQUE7OzBCQURsQyxjQUFjLDJCQUEyQixDQUFDOzs7O29CQUNDOzs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUFVO0FBQUE7O0FBTXBELHFEQUFBLGtCQUFBLE1BQUEsd0JBQ0UsTUFBTTtBQUtSLHdEQUFBLGtCQUFBLE1BQUEsMkJBQUEsR0FBQSxrQkFBQSxNQUFBLDBCQUErQyxPQUFPOzs7O0lBTnRELElBQWdCLFdBQ1A7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBRFQsSUFBZ0IsU0FDUCxPQUFBO0FBQUEseUJBQUEsNEJBQUE7QUFBQSxJQUFBO0FBQUE7QUFBQSxJQUtULElBQWdCLGFBQXVDO0FBQUEsYUFBQSxtQkFBQTtBQUFBLElBQUE7QUFBQSxJQUF2RCxJQUFnQixXQUF1QyxPQUFBO0FBQUEseUJBQUEsOEJBQUE7QUFBQSxJQUFBO0FBQUEsSUFFcEMsU0FBTTtBQUNoQixhQUFBO0FBQUEsSUFBQTtBQUFBLEtBVFQsNENBTUE7OzRCQVJDLGFBQ0EsU0FBUyxFQUFFLFNBQVMsS0FBQSxDQUFNLENBQUM7OEJBSzNCLGFBQ0EsU0FBUyxFQUFFLFNBQVMsS0FBQSxDQUFNLENBQUM7QUFMWixpQkFBQSxJQUFBLE1BQUEsc0JBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxZQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGNBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFBLFVBQUEsS0FBQSxDQUFBLEtBQUEsVUFBQTtBQUFBLFVBQUEsV0FDUDtBQUFBLFNBQUEsVUFBQSxhQUFBLHdCQUFBLDJCQUFBO0FBS08saUJBQUEsSUFBQSxNQUFBLHdCQUFBLEVBQUEsTUFBQSxZQUFBLE1BQUEsY0FBQSxRQUFBLE9BQUEsU0FBQSxPQUFBLFFBQUEsRUFBQSxLQUFBLENBQUEsUUFBQSxnQkFBQSxLQUFBLEtBQUEsQ0FBQSxRQUFBLElBQUEsWUFBQSxLQUFBLENBQUEsS0FBQSxVQUFBO0FBQUEsVUFBQSxhQUF1QztBQUFBLFNBQUEsVUFBQSxhQUFBLDBCQUFBLDZCQUFBO0FBWnpELGlCQWlCQyxNQUFBLG1CQUFBLEVBQUEsT0FBQSxXQUFBLEdBQUEsa0JBQUEsRUFBQSxNQUFBLFNBQUEsTUFBQSxXQUFBLE1BQUEsVUFBQSxVQUFBLEdBQUEsTUFBQSx1QkFBQTs7O1FBaEJ3QixHQUFNLFNBQW1CLE9BRDVDLGtCQUE2QixZQUFBLHVCQUFBLEdBQUM7OzsifQ==
108
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tYXJlYS9zZWF0LXJlc2VydmF0aW9uLWFyZWEuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgdHlwZSB7IENTU1Jlc3VsdEdyb3VwLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWFyZWEuc2Nzcz9saXQmaW5saW5lJztcblxuLyoqXG4gKiBWaXN1YWxpemUgYW4gYXJlYSB3aXRoIGEgc3BlY2lhbCBtZWFuaW5nIHdpdGhpbiBhIHdhZ29uLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhJylcbmNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbkFyZWFFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBNb3VudGluZyBQcm9wICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBtb3VudGluZzogJ2ZyZWUnIHwgJ3VwcGVyLWJvcmRlcicgfCAnbG93ZXItYm9yZGVyJyB8ICd1cHBlci10by1sb3dlci1ib3JkZXInID1cbiAgICAnZnJlZSc7XG5cbiAgLyoqIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSBhcmVhICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBiYWNrZ3JvdW5kOiAnbGlnaHQnIHwgJ2RhcmsnID0gJ2xpZ2h0JztcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGA8c2xvdD48L3Nsb3Q+YDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYSc6IFNiYlNlYXRSZXNlcnZhdGlvbkFyZWFFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBWU0saUNBQTZCLE1BQUE7OzBCQURsQyxjQUFjLDJCQUEyQixDQUFDOzs7O29CQUNDOzs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUFVO0FBQUE7O0FBTXBELHFEQUFBLGtCQUFBLE1BQUEsd0JBQ0UsTUFBTTtBQUtSLHdEQUFBLGtCQUFBLE1BQUEsMkJBQUEsR0FBQSxrQkFBQSxNQUFBLDBCQUErQyxPQUFPOzs7O0lBTnRELElBQWdCLFdBQVE7QUFBQSxhQUFBLG1CQUFBO0FBQUEsSUFBQTtBQUFBLElBQXhCLElBQWdCLFNBQVEsT0FBQTtBQUFBLHlCQUFBLDRCQUFBO0FBQUEsSUFBQTtBQUFBO0FBQUEsSUFNeEIsSUFBZ0IsYUFBVTtBQUFBLGFBQUEsbUJBQUE7QUFBQSxJQUFBO0FBQUEsSUFBMUIsSUFBZ0IsV0FBVSxPQUFBO0FBQUEseUJBQUEsOEJBQUE7QUFBQSxJQUFBO0FBQUEsSUFFUCxTQUFNO0FBQ3ZCLGFBQU87QUFBQSxJQUFBO0FBQUEsS0FUVCw0Q0FNQTs7NEJBUkMsYUFDQSxTQUFTLEVBQUUsU0FBUyxLQUFBLENBQU0sQ0FBQzs4QkFLM0IsYUFDQSxTQUFTLEVBQUUsU0FBUyxLQUFBLENBQU0sQ0FBQztBQUw1QixpQkFBQSxJQUFBLE1BQUEsc0JBQUEsRUFBQSxNQUFBLFlBQUEsTUFBQSxZQUFBLFFBQUEsT0FBQSxTQUFBLE9BQUEsUUFBQSxFQUFBLEtBQUEsQ0FBQSxRQUFBLGNBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFnQixVQUFRLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFSLFdBQVE7QUFBQSxJQUFBLEtBQUEsVUFBQSxhQUFBLHdCQUFBLDJCQUFBO0FBTXhCLGlCQUFBLElBQUEsTUFBQSx3QkFBQSxFQUFBLE1BQUEsWUFBQSxNQUFBLGNBQUEsUUFBQSxPQUFBLFNBQUEsT0FBQSxRQUFBLEVBQUEsS0FBQSxDQUFBLFFBQUEsZ0JBQUEsS0FBQSxLQUFBLENBQUEsUUFBQSxJQUFnQixZQUFVLEtBQUEsQ0FBQSxLQUFBLFVBQUE7QUFBQSxVQUFWLGFBQVU7QUFBQSxJQUFBLEtBQUEsVUFBQSxhQUFBLDBCQUFBLDZCQUFBO0FBWjVCLGlCQUFBLE1BQUEsbUJBQUEsRUFBQSxPQUFBLFdBQUEsR0FBQSxrQkFBQSxFQUFBLE1BQUEsU0FBQSxNQUFBLFdBQUEsTUFBQSxVQUFBLFVBQUEsR0FBQSxNQUFBLHVCQUFBOzs7UUFDeUIsR0FBQSxTQUF5QixPQUQ1QyxrQkFBQSxZQUFBLHVCQUFBLEdBQThCOzs7In0=
@@ -11,8 +11,7 @@ const svgImage = (src) => {
11
11
  `;
12
12
  };
13
13
  const svgImageByOSDMCode = (osdmCode) => {
14
- var _a, _b;
15
- return ((_a = mapIconToSvg[osdmCode]) == null ? void 0 : _a.svg) ? svgImage(mapIconToSvg[osdmCode].svg) : ((_b = mapIconToSvg[osdmCode]) == null ? void 0 : _b.svgName) ? html`<sbb-icon name="${mapIconToSvg[osdmCode].svgName}"></sbb-icon>` : null;
14
+ return mapIconToSvg[osdmCode]?.svg ? svgImage(mapIconToSvg[osdmCode].svg) : mapIconToSvg[osdmCode]?.svgName ? html`<sbb-icon name="${mapIconToSvg[osdmCode].svgName}"></sbb-icon>` : null;
16
15
  };
17
16
  const interiorTable = html`
18
17
  <sbb-table-wrapper>
@@ -323,4 +322,4 @@ export {
323
322
  assetsTemplate,
324
323
  svgImageByOSDMCode
325
324
  };
326
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1hc3NldHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMvc2VhdC1yZXNlcnZhdGlvbi1hc3NldHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHRtbCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyB1bnNhZmVIVE1MIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvdW5zYWZlLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBzdmdzLCBtYXBJY29uVG9TdmcgfSBmcm9tICcuLi9jb21tb24uanMnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3RhYmxlLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmpzJztcblxuY29uc3Qgc3ZnSW1hZ2UgPSAoc3JjOiBzdHJpbmcpOiBUZW1wbGF0ZVJlc3VsdCA9PiB7XG4gIHJldHVybiBodG1sYFxuICAgIDxkaXYgY2xhc3M9XCJzdG9yeS1hc3NldFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzdG9yeS1hc3NldF9fcHJldmlld1wiPiR7dW5zYWZlSFRNTChzcmMpfTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgYDtcbn07XG5cbi8qKlxuICogc3ZnSW1hZ2VCeU9TRE1Db2RlIEZ1bmN0aW9uIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgc3ZnIGltYWdlIGJ5IE9TRE0gQ29kZVxuICogQHBhcmFtIG9zZG1Db2RlXG4gKiBAcmV0dXJucyBUaGUgU1ZHIEltYWdlIGFzIFRlbXBsYXRlUmVzdWx0IGlmIGl0IG1hdGNoZXMgdGhlIE9TRE0gY29kZSwgb3IgbnVsbCBpZiBpdCdzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHN2Z0ltYWdlQnlPU0RNQ29kZSA9IChvc2RtQ29kZTogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsID0+IHtcbiAgcmV0dXJuIG1hcEljb25Ub1N2Z1tvc2RtQ29kZV0/LnN2Z1xuICAgID8gc3ZnSW1hZ2UobWFwSWNvblRvU3ZnW29zZG1Db2RlXS5zdmcpXG4gICAgOiBtYXBJY29uVG9Tdmdbb3NkbUNvZGVdPy5zdmdOYW1lXG4gICAgICA/IGh0bWxgPHNiYi1pY29uIG5hbWU9XCIke21hcEljb25Ub1N2Z1tvc2RtQ29kZV0uc3ZnTmFtZX1cIj48L3NiYi1pY29uPmBcbiAgICAgIDogbnVsbDtcbn07XG5cbmNvbnN0IGludGVyaW9yVGFibGUgPSBodG1sYFxuICA8c2JiLXRhYmxlLXdyYXBwZXI+XG4gICAgPHRhYmxlIGNsYXNzPVwic2JiLXRhYmxlXCI+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5TVkc8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkZpZ21hPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Db2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX0JJQ1lDTEVfRlJFRScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLUJpa2U6IEF2YWlsYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX0JJQ1lDTEVfRlJFRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX0JJQ1lDTEVfU0VMRUNURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBTZWxlY3RlZDwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX0JJQ1lDTEVfU0VMRUNURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX0FMTE9DQVRFRCcpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLUJpa2U6IFVuYXZhaWxhYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfQklDWUNMRV9BTExPQ0FURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX1JFU1RSSUNURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBOb3QgYm9va2FibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9CSUNZQ0xFX1JFU1RSSUNURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9TRUFUX0ZSRUUnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1TZWF0OiBBdmFpbGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9TRUFUX0ZSRUU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9TRUFUX1NFTEVDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogU2VsZWN0ZWQ8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9TRUFUX1NFTEVDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9BTExPQ0FURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1TZWF0OiBVbmF2YWlsYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX1NFQVRfQUxMT0NBVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9SRVNUUklDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogTm90IGJvb2thYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfU0VBVF9SRVNUUklDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9zYmItdGFibGUtd3JhcHBlcj5cbmA7XG5jb25zdCBsYXlvdXRJdGVtc1RhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T1NETSBDb2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0VBU1lfQUNDRVNTX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5FYXN5IEFjY2VzcyBBcmVhPC90ZD5cbiAgICAgICAgICA8dGQ+RUFTWV9BQ0NFU1NfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0VOVFJZX0VYSVQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5FbnRyYW5jZTwvdGQ+XG4gICAgICAgICAgPHRkPkVOVFJZX0VYSVQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdMVUdHQUdFX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5MdWdnYWdlPC90ZD5cbiAgICAgICAgICA8dGQ+TFVHR0FHRV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnTVVMVElfRlVOQ1RJT05fQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPk11bHRpIEZ1bmN0aW9uIEFyZWE8L3RkPlxuICAgICAgICAgIDx0ZD5NVUxUSV9GVU5DVElPTl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBWUdST1VORF9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxheWdyb3VuZDwvdGQ+XG4gICAgICAgICAgPHRkPlBMQVlHUk9VTkRfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BSQU1fQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlByYW08L3RkPlxuICAgICAgICAgIDx0ZD5QUkFNX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdTS0lfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlNraTwvdGQ+XG4gICAgICAgICAgPHRkPlNLSV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnU1RBSVJfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlN0YWlyPC90ZD5cbiAgICAgICAgICA8dGQ+U1RBSVJfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1RPSUxFVF9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VG9pbGV0PC90ZD5cbiAgICAgICAgICA8dGQ+VE9JTEVUX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdUT0lMRVRfV0hFRUxDSEFJUl9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VG9pbGV0LUhhbmRpY2FwPC90ZD5cbiAgICAgICAgICA8dGQ+VE9JTEVUX1dIRUVMQ0hBSVJfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1dBUkRST0JFX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5XYXJkcm9iZTwvdGQ+XG4gICAgICAgICAgPHRkPldBUkRST0JFX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L3NiYi10YWJsZS13cmFwcGVyPlxuYDtcbmNvbnN0IHNlcnZpY2VJY29uVGFibGUgPSBodG1sYFxuICA8c2JiLXRhYmxlLXdyYXBwZXI+XG4gICAgPHRhYmxlIGFyaWEtbGFiZWw9XCJBdmFpbGFibGUgU2VydmljZSBJY29uc1wiIGNsYXNzPVwic2JiLXRhYmxlXCI+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5TVkc8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkZpZ21hPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5PU0RNIENvZGU8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQklTVFJPJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+QmlzdHJvPC90ZD5cbiAgICAgICAgICA8dGQ+QklTVFJPPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQlVTSU5FU1MnKX08L3RkPlxuICAgICAgICAgIDx0ZD5CdXNpbmVzczwvdGQ+XG4gICAgICAgICAgPHRkPkJVU0lORVNTPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBWUdST1VORF9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RmFtaWx5PC90ZD5cbiAgICAgICAgICA8dGQ+UExBWUdST1VORF9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnTFVHR0FHRV9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+THVnZ2FnZTwvdGQ+XG4gICAgICAgICAgPHRkPkxVR0dBR0VfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ01VTFRJX0ZVTkNUSU9OX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5NdWx0aWZ1bmN0aW9uPC90ZD5cbiAgICAgICAgICA8dGQ+TVVMVElfRlVOQ1RJT05fQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BSQU1fSUNPTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPlByYW08L3RkPlxuICAgICAgICAgIDx0ZD5QUkFNX0lDT048L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdFQVNZX0FDQ0VTU19BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RWFzeSBBY2Nlc3MgQXJlYTwvdGQ+XG4gICAgICAgICAgPHRkPkVBU1lfQUNDRVNTX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdSRVNUQVVSQU5UX0lDT04nKX08L3RkPlxuICAgICAgICAgIDx0ZD5SZXN0YXVyYW50PC90ZD5cbiAgICAgICAgICA8dGQ+UkVTVEFVUkFOVF9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnU0lMRU5DRV9BUkVBX0lDT04nKX08L3RkPlxuICAgICAgICAgIDx0ZD5TaWxlbmNlPC90ZD5cbiAgICAgICAgICA8dGQ+U0lMRU5DRV9BUkVBX0lDT048L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdUT0lMRVRfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldDwvdGQ+XG4gICAgICAgICAgPHRkPlRPSUxFVF9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnVE9JTEVUX1dIRUVMQ0hBSVJfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldC1QUk08L3RkPlxuICAgICAgICAgIDx0ZD5UT0lMRVRfV0hFRUxDSEFJUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnV0hFRUxDSEFJUl9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+V2hlZWxjaGFpcjwvdGQ+XG4gICAgICAgICAgPHRkPldIRUVMQ0hBSVJfSUNPTjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1dJRkknKX08L3RkPlxuICAgICAgICAgIDx0ZD5XaWZpPC90ZD5cbiAgICAgICAgICA8dGQ+V0lGSTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvc2JiLXRhYmxlLXdyYXBwZXI+XG5gO1xuY29uc3QgY2hhc3Npc1RhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T1NETSBDb2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0RSSVZFUl9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RHJpdmVyOiBUcmFpbjwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRFJJVkVSX0FSRUFfRlVMTF9UUkFJTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPkRyaXZlcjogVHJhaW48L3RkPlxuICAgICAgICAgIDx0ZD5EUklWRVJfQVJFQV9GVUxMX1RSQUlOPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRFJJVkVSX0FSRUFfRlVMTF9CVVMnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Ecml2ZXI6IEJ1czwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBX0ZVTExfQlVTPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGFzc2FnZS1Db21wYXJ0bWVudDogVG9wPC90ZD5cbiAgICAgICAgICA8dGQ+Q09NUEFSVE1FTlRfUEFTU0FHRTxiciAvPkNPTVBBUlRNRU5UX1BBU1NBR0VfSElHSDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPTVBBUlRNRU5UX1BBU1NBR0UnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QYXNzYWdlLUNvbXBhcnRtZW50OiBNaWRkbGU8L3RkPlxuICAgICAgICAgIDx0ZD5DT01QQVJUTUVOVF9QQVNTQUdFPGJyIC8+Q09NUEFSVE1FTlRfUEFTU0FHRV9NSURETEU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdDT01QQVJUTUVOVF9QQVNTQUdFX0xPVycpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBhc3NhZ2UtQ29tcGFydG1lbnQ6IEJvdHRvbTwvdGQ+XG4gICAgICAgICAgPHRkPkNPTVBBUlRNRU5UX1BBU1NBR0U8YnIgLz5DT01QQVJUTUVOVF9QQVNTQUdFX0xPVzwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPQUNIX1BBU1NBR0UnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QYXNzYWdlLVdhZ2dvbiBUeXBlOiBMZWZ0PC90ZD5cbiAgICAgICAgICA8dGQ+Q09BQ0hfUEFTU0FHRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZShzdmdzLmNoYXNzaXNQYXNzYWdlV2FnZ29uQm90dG9tUmlnaHQpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBhc3NhZ2UtV2FnZ29uIFR5cGU6IFJpZ2h0PC90ZD5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1zYmItY29sb3Itd2hpdGUpIDUlLCB2YXIoLS1zYmItY29sb3ItcmVkKSk7XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBUT0RPOiBjaGVjayBpZiBzdGlsbCBpbiB1c2UsIG1heSBiZSBkZWxldGVkXG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09BQ0hfV0FMTF9OT19QQVNTQUdFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+Um93LUVtcHR5OiBUb3AvTGVmdDwvdGQ+XG4gICAgICAgICAgPHRkPkNPQUNIX1dBTExfTk9fUEFTU0FHRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPQUNIX0JPUkRFUl9NSURETEUnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Sb3ctRW1wdHk6IE1pZGRsZTwvdGQ+XG4gICAgICAgICAgPHRkPkNPQUNIX0JPUkRFUl9NSURETEU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2Uoc3Zncy5jaGFzc2lzU2VwYXJhdG9yKX08L3RkPlxuICAgICAgICAgIDx0ZD5TZXBhcmF0b3I8L3RkPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLXNiYi1jb2xvci13aGl0ZSkgNSUsIHZhcigtLXNiYi1jb2xvci1yZWQpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgVE9ETzogY2hlY2sgaWYgc3RpbGwgaW4gdXNlLCBtYXkgYmUgZGVsZXRlZFxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1RBQkxFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5UQUJMRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvc2JiLXRhYmxlLXdyYXBwZXI+XG5gO1xuXG5leHBvcnQgY29uc3QgYXNzZXRzVGVtcGxhdGU6IFRlbXBsYXRlUmVzdWx0ID0gaHRtbGBcbiAgPHN0eWxlPlxuICAgIC5zdG9yeS1hc3NldCB7XG4gICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItY29sb3Itd2hpdGUpO1xuICAgIH1cbiAgPC9zdHlsZT5cbiAgPGgxPkxpc3Qgb2YgYWxsIGN1cnJlbnRseSBhdmFpbGFibGUgYXNzZXRzLjwvaDE+XG4gIDxoMj5JbnRlcmlvcjwvaDI+XG4gICR7aW50ZXJpb3JUYWJsZX1cbiAgPGgyPkxheW91dDwvaDI+XG4gICR7bGF5b3V0SXRlbXNUYWJsZX1cbiAgPGgyPlNlcnZpY2UgSWNvbnM8L2gyPlxuICAke3NlcnZpY2VJY29uVGFibGV9XG4gIDxoMj5DaGFzc2lzPC9oMj5cbiAgJHtjaGFzc2lzVGFibGV9XG5gO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBUUEsTUFBTSxXQUFXLENBQUMsUUFBK0I7QUFDeEMsU0FBQTtBQUFBO0FBQUEsMkNBRWtDLFdBQVcsR0FBRyxDQUFDO0FBQUE7QUFBQTtBQUcxRDtBQU9hLE1BQUEscUJBQXFCLENBQUMsYUFBMkM7O0FBQzVFLFdBQU8sa0JBQWEsUUFBUSxNQUFyQixtQkFBd0IsT0FDM0IsU0FBUyxhQUFhLFFBQVEsRUFBRSxHQUFHLE1BQ25DLGtCQUFhLFFBQVEsTUFBckIsbUJBQXdCLFdBQ3RCLHVCQUF1QixhQUFhLFFBQVEsRUFBRSxPQUFPLGtCQUNyRDtBQUNSO0FB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
325
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1hc3NldHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMvc2VhdC1yZXNlcnZhdGlvbi1hc3NldHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHRtbCwgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyB1bnNhZmVIVE1MIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvdW5zYWZlLWh0bWwuanMnO1xuXG5pbXBvcnQgeyBzdmdzLCBtYXBJY29uVG9TdmcgfSBmcm9tICcuLi9jb21tb24uanMnO1xuXG5pbXBvcnQgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL3RhYmxlLmpzJztcbmltcG9ydCAnLi4vc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmpzJztcblxuY29uc3Qgc3ZnSW1hZ2UgPSAoc3JjOiBzdHJpbmcpOiBUZW1wbGF0ZVJlc3VsdCA9PiB7XG4gIHJldHVybiBodG1sYFxuICAgIDxkaXYgY2xhc3M9XCJzdG9yeS1hc3NldFwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzdG9yeS1hc3NldF9fcHJldmlld1wiPiR7dW5zYWZlSFRNTChzcmMpfTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgYDtcbn07XG5cbi8qKlxuICogc3ZnSW1hZ2VCeU9TRE1Db2RlIEZ1bmN0aW9uIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgc3ZnIGltYWdlIGJ5IE9TRE0gQ29kZVxuICogQHBhcmFtIG9zZG1Db2RlXG4gKiBAcmV0dXJucyBUaGUgU1ZHIEltYWdlIGFzIFRlbXBsYXRlUmVzdWx0IGlmIGl0IG1hdGNoZXMgdGhlIE9TRE0gY29kZSwgb3IgbnVsbCBpZiBpdCdzIG5vdCBmb3VuZC5cbiAqL1xuZXhwb3J0IGNvbnN0IHN2Z0ltYWdlQnlPU0RNQ29kZSA9IChvc2RtQ29kZTogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsID0+IHtcbiAgcmV0dXJuIG1hcEljb25Ub1N2Z1tvc2RtQ29kZV0/LnN2Z1xuICAgID8gc3ZnSW1hZ2UobWFwSWNvblRvU3ZnW29zZG1Db2RlXS5zdmcpXG4gICAgOiBtYXBJY29uVG9Tdmdbb3NkbUNvZGVdPy5zdmdOYW1lXG4gICAgICA/IGh0bWxgPHNiYi1pY29uIG5hbWU9XCIke21hcEljb25Ub1N2Z1tvc2RtQ29kZV0uc3ZnTmFtZX1cIj48L3NiYi1pY29uPmBcbiAgICAgIDogbnVsbDtcbn07XG5cbmNvbnN0IGludGVyaW9yVGFibGUgPSBodG1sYFxuICA8c2JiLXRhYmxlLXdyYXBwZXI+XG4gICAgPHRhYmxlIGNsYXNzPVwic2JiLXRhYmxlXCI+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5TVkc8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkZpZ21hPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5Db2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX0JJQ1lDTEVfRlJFRScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLUJpa2U6IEF2YWlsYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX0JJQ1lDTEVfRlJFRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX0JJQ1lDTEVfU0VMRUNURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBTZWxlY3RlZDwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX0JJQ1lDTEVfU0VMRUNURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX0FMTE9DQVRFRCcpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLUJpa2U6IFVuYXZhaWxhYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfQklDWUNMRV9BTExPQ0FURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX1JFU1RSSUNURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBOb3QgYm9va2FibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9CSUNZQ0xFX1JFU1RSSUNURUQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9TRUFUX0ZSRUUnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1TZWF0OiBBdmFpbGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9TRUFUX0ZSRUU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9TRUFUX1NFTEVDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogU2VsZWN0ZWQ8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9TRUFUX1NFTEVDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9BTExPQ0FURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1TZWF0OiBVbmF2YWlsYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX1NFQVRfQUxMT0NBVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9SRVNUUklDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogTm90IGJvb2thYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfU0VBVF9SRVNUUklDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9zYmItdGFibGUtd3JhcHBlcj5cbmA7XG5jb25zdCBsYXlvdXRJdGVtc1RhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T1NETSBDb2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0VBU1lfQUNDRVNTX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5FYXN5IEFjY2VzcyBBcmVhPC90ZD5cbiAgICAgICAgICA8dGQ+RUFTWV9BQ0NFU1NfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0VOVFJZX0VYSVQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5FbnRyYW5jZTwvdGQ+XG4gICAgICAgICAgPHRkPkVOVFJZX0VYSVQ8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdMVUdHQUdFX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5MdWdnYWdlPC90ZD5cbiAgICAgICAgICA8dGQ+TFVHR0FHRV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnTVVMVElfRlVOQ1RJT05fQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPk11bHRpIEZ1bmN0aW9uIEFyZWE8L3RkPlxuICAgICAgICAgIDx0ZD5NVUxUSV9GVU5DVElPTl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBWUdST1VORF9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxheWdyb3VuZDwvdGQ+XG4gICAgICAgICAgPHRkPlBMQVlHUk9VTkRfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BSQU1fQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlByYW08L3RkPlxuICAgICAgICAgIDx0ZD5QUkFNX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdTS0lfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlNraTwvdGQ+XG4gICAgICAgICAgPHRkPlNLSV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnU1RBSVJfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlN0YWlyPC90ZD5cbiAgICAgICAgICA8dGQ+U1RBSVJfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1RPSUxFVF9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VG9pbGV0PC90ZD5cbiAgICAgICAgICA8dGQ+VE9JTEVUX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdUT0lMRVRfV0hFRUxDSEFJUl9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VG9pbGV0LUhhbmRpY2FwPC90ZD5cbiAgICAgICAgICA8dGQ+VE9JTEVUX1dIRUVMQ0hBSVJfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1dBUkRST0JFX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5XYXJkcm9iZTwvdGQ+XG4gICAgICAgICAgPHRkPldBUkRST0JFX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L3NiYi10YWJsZS13cmFwcGVyPlxuYDtcbmNvbnN0IHNlcnZpY2VJY29uVGFibGUgPSBodG1sYFxuICA8c2JiLXRhYmxlLXdyYXBwZXI+XG4gICAgPHRhYmxlIGFyaWEtbGFiZWw9XCJBdmFpbGFibGUgU2VydmljZSBJY29uc1wiIGNsYXNzPVwic2JiLXRhYmxlXCI+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5TVkc8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPkZpZ21hPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5PU0RNIENvZGU8L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQklTVFJPJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+QmlzdHJvPC90ZD5cbiAgICAgICAgICA8dGQ+QklTVFJPPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQlVTSU5FU1MnKX08L3RkPlxuICAgICAgICAgIDx0ZD5CdXNpbmVzczwvdGQ+XG4gICAgICAgICAgPHRkPkJVU0lORVNTPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBWUdST1VORF9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RmFtaWx5PC90ZD5cbiAgICAgICAgICA8dGQ+UExBWUdST1VORF9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnTFVHR0FHRV9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+THVnZ2FnZTwvdGQ+XG4gICAgICAgICAgPHRkPkxVR0dBR0VfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ01VTFRJX0ZVTkNUSU9OX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5NdWx0aWZ1bmN0aW9uPC90ZD5cbiAgICAgICAgICA8dGQ+TVVMVElfRlVOQ1RJT05fQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BSQU1fSUNPTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPlByYW08L3RkPlxuICAgICAgICAgIDx0ZD5QUkFNX0lDT048L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdFQVNZX0FDQ0VTU19BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RWFzeSBBY2Nlc3MgQXJlYTwvdGQ+XG4gICAgICAgICAgPHRkPkVBU1lfQUNDRVNTX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdSRVNUQVVSQU5UX0lDT04nKX08L3RkPlxuICAgICAgICAgIDx0ZD5SZXN0YXVyYW50PC90ZD5cbiAgICAgICAgICA8dGQ+UkVTVEFVUkFOVF9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnU0lMRU5DRV9BUkVBX0lDT04nKX08L3RkPlxuICAgICAgICAgIDx0ZD5TaWxlbmNlPC90ZD5cbiAgICAgICAgICA8dGQ+U0lMRU5DRV9BUkVBX0lDT048L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdUT0lMRVRfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldDwvdGQ+XG4gICAgICAgICAgPHRkPlRPSUxFVF9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnVE9JTEVUX1dIRUVMQ0hBSVJfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldC1QUk08L3RkPlxuICAgICAgICAgIDx0ZD5UT0lMRVRfV0hFRUxDSEFJUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnV0hFRUxDSEFJUl9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+V2hlZWxjaGFpcjwvdGQ+XG4gICAgICAgICAgPHRkPldIRUVMQ0hBSVJfSUNPTjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1dJRkknKX08L3RkPlxuICAgICAgICAgIDx0ZD5XaWZpPC90ZD5cbiAgICAgICAgICA8dGQ+V0lGSTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvc2JiLXRhYmxlLXdyYXBwZXI+XG5gO1xuY29uc3QgY2hhc3Npc1RhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T1NETSBDb2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0RSSVZFUl9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RHJpdmVyOiBUcmFpbjwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRFJJVkVSX0FSRUFfRlVMTF9UUkFJTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPkRyaXZlcjogVHJhaW48L3RkPlxuICAgICAgICAgIDx0ZD5EUklWRVJfQVJFQV9GVUxMX1RSQUlOPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRFJJVkVSX0FSRUFfRlVMTF9CVVMnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Ecml2ZXI6IEJ1czwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBX0ZVTExfQlVTPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGFzc2FnZS1Db21wYXJ0bWVudDogVG9wPC90ZD5cbiAgICAgICAgICA8dGQ+Q09NUEFSVE1FTlRfUEFTU0FHRTxiciAvPkNPTVBBUlRNRU5UX1BBU1NBR0VfSElHSDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPTVBBUlRNRU5UX1BBU1NBR0UnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QYXNzYWdlLUNvbXBhcnRtZW50OiBNaWRkbGU8L3RkPlxuICAgICAgICAgIDx0ZD5DT01QQVJUTUVOVF9QQVNTQUdFPGJyIC8+Q09NUEFSVE1FTlRfUEFTU0FHRV9NSURETEU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdDT01QQVJUTUVOVF9QQVNTQUdFX0xPVycpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBhc3NhZ2UtQ29tcGFydG1lbnQ6IEJvdHRvbTwvdGQ+XG4gICAgICAgICAgPHRkPkNPTVBBUlRNRU5UX1BBU1NBR0U8YnIgLz5DT01QQVJUTUVOVF9QQVNTQUdFX0xPVzwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPQUNIX1BBU1NBR0UnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QYXNzYWdlLVdhZ2dvbiBUeXBlOiBMZWZ0PC90ZD5cbiAgICAgICAgICA8dGQ+Q09BQ0hfUEFTU0FHRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZShzdmdzLmNoYXNzaXNQYXNzYWdlV2FnZ29uQm90dG9tUmlnaHQpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBhc3NhZ2UtV2FnZ29uIFR5cGU6IFJpZ2h0PC90ZD5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgIHN0eWxlPVwiYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB2YXIoLS1zYmItY29sb3Itd2hpdGUpIDUlLCB2YXIoLS1zYmItY29sb3ItcmVkKSk7XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBUT0RPOiBjaGVjayBpZiBzdGlsbCBpbiB1c2UsIG1heSBiZSBkZWxldGVkXG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09BQ0hfV0FMTF9OT19QQVNTQUdFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+Um93LUVtcHR5OiBUb3AvTGVmdDwvdGQ+XG4gICAgICAgICAgPHRkPkNPQUNIX1dBTExfTk9fUEFTU0FHRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0NPQUNIX0JPUkRFUl9NSURETEUnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Sb3ctRW1wdHk6IE1pZGRsZTwvdGQ+XG4gICAgICAgICAgPHRkPkNPQUNIX0JPUkRFUl9NSURETEU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2Uoc3Zncy5jaGFzc2lzU2VwYXJhdG9yKX08L3RkPlxuICAgICAgICAgIDx0ZD5TZXBhcmF0b3I8L3RkPlxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLXNiYi1jb2xvci13aGl0ZSkgNSUsIHZhcigtLXNiYi1jb2xvci1yZWQpKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgVE9ETzogY2hlY2sgaWYgc3RpbGwgaW4gdXNlLCBtYXkgYmUgZGVsZXRlZFxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1RBQkxFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+VGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5UQUJMRTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvc2JiLXRhYmxlLXdyYXBwZXI+XG5gO1xuXG5leHBvcnQgY29uc3QgYXNzZXRzVGVtcGxhdGU6IFRlbXBsYXRlUmVzdWx0ID0gaHRtbGBcbiAgPHN0eWxlPlxuICAgIC5zdG9yeS1hc3NldCB7XG4gICAgICB3aWR0aDogbWF4LWNvbnRlbnQ7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItY29sb3Itd2hpdGUpO1xuICAgIH1cbiAgPC9zdHlsZT5cbiAgPGgxPkxpc3Qgb2YgYWxsIGN1cnJlbnRseSBhdmFpbGFibGUgYXNzZXRzLjwvaDE+XG4gIDxoMj5JbnRlcmlvcjwvaDI+XG4gICR7aW50ZXJpb3JUYWJsZX1cbiAgPGgyPkxheW91dDwvaDI+XG4gICR7bGF5b3V0SXRlbXNUYWJsZX1cbiAgPGgyPlNlcnZpY2UgSWNvbnM8L2gyPlxuICAke3NlcnZpY2VJY29uVGFibGV9XG4gIDxoMj5DaGFzc2lzPC9oMj5cbiAgJHtjaGFzc2lzVGFibGV9XG5gO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBUUEsTUFBTSxXQUFXLENBQUMsUUFBK0I7QUFDL0MsU0FBTztBQUFBO0FBQUEsMkNBRWtDLFdBQVcsR0FBRyxDQUFDO0FBQUE7QUFBQTtBQUcxRDtBQU9PLE1BQU0scUJBQXFCLENBQUMsYUFBMkM7QUFDNUUsU0FBTyxhQUFhLFFBQVEsR0FBRyxNQUMzQixTQUFTLGFBQWEsUUFBUSxFQUFFLEdBQUcsSUFDbkMsYUFBYSxRQUFRLEdBQUcsVUFDdEIsdUJBQXVCLGFBQWEsUUFBUSxFQUFFLE9BQU8sa0JBQ3JEO0FBQ1I7QUFFQSxNQUFNLGdCQUFnQjtBQUFB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
@@ -144,24 +144,23 @@ let SbbSeatReservationGraphicElement = (() => {
144
144
  __privateSet(this, _height_accessor_storage, value);
145
145
  }
146
146
  willUpdate(_changedProperties) {
147
- var _a2, _b, _c, _d;
148
147
  super.willUpdate(_changedProperties);
149
148
  if (_changedProperties.has("width") && !!this.width) {
150
- (_a2 = this.style) == null ? void 0 : _a2.setProperty("--sbb-reservation-graphic-width", `${this.width}`);
149
+ this.style?.setProperty("--sbb-reservation-graphic-width", `${this.width}`);
151
150
  }
152
151
  if (_changedProperties.has("height") && !!this.height) {
153
- (_b = this.style) == null ? void 0 : _b.setProperty("--sbb-reservation-graphic-height", `${this.height}`);
152
+ this.style?.setProperty("--sbb-reservation-graphic-height", `${this.height}`);
154
153
  }
155
154
  if (_changedProperties.has("rotation")) {
156
- (_c = this.style) == null ? void 0 : _c.setProperty("--sbb-reservation-graphic-rotation", `${this.rotation}`);
155
+ this.style?.setProperty("--sbb-reservation-graphic-rotation", `${this.rotation}`);
157
156
  }
158
157
  if (_changedProperties.has("inverseRotation")) {
159
- (_d = this.style) == null ? void 0 : _d.setProperty("--sbb-reservation-graphic-inverse-rotation", `${this.inverseRotation}`);
158
+ this.style?.setProperty("--sbb-reservation-graphic-inverse-rotation", `${this.inverseRotation}`);
160
159
  }
161
160
  }
162
161
  render() {
163
162
  const svgObj = mapIconToSvg[this.name];
164
- if (!(svgObj == null ? void 0 : svgObj.svg) && !(svgObj == null ? void 0 : svgObj.svgName)) {
163
+ if (!svgObj?.svg && !svgObj?.svgName) {
165
164
  return null;
166
165
  }
167
166
  return html`<span
@@ -181,7 +180,7 @@ let SbbSeatReservationGraphicElement = (() => {
181
180
  const parser = new DOMParser();
182
181
  const svgString = svg || "<svg></svg>";
183
182
  const svgElm = parser.parseFromString(svgString, "image/svg+xml").firstElementChild;
184
- if (this.stretch && (svgElm == null ? void 0 : svgElm.nodeName.toLowerCase()) === "svg") {
183
+ if (this.stretch && svgElm?.nodeName.toLowerCase() === "svg") {
185
184
  svgElm.setAttribute("preserveAspectRatio", "none");
186
185
  }
187
186
  return svgElm;
@@ -221,4 +220,4 @@ let SbbSeatReservationGraphicElement = (() => {
221
220
  export {
222
221
  SbbSeatReservationGraphicElement
223
222
  };
224
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIHR5cGUgUHJvcGVydHlWYWx1ZXMsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwLmpzJztcblxuaW1wb3J0IHsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbiwgbWFwSWNvblRvU3ZnIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvaWNvbi5qcyc7XG5cbi8qKlxuICogT3V0cHV0IG9uZSBvZiB0aGUgU1ZHIGdyYXBoaWNzIGJhc2VkIG9uIGl0cyBjb2RlLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljJylcbmNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbkdyYXBoaWNFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBTVkcgZ3JhcGhpYyB0byBiZSBkaXNwbGF5ZWQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICduYW1lJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbmFtZTogc3RyaW5nID0gJyc7XG5cbiAgLyoqIGlmIHRydWUsIHNjYWxlIHRoZSBncmFwaGljIGNvbnRlbnQgb2YgdGhlIGdpdmVuIGVsZW1lbnQgbm9uLXVuaWZvcm1seSBpZiBuZWNlc3NhcnkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3N0cmV0Y2gnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzdHJldGNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIGhhbmRsZXMgdGhlIHJvdGF0aW9uIG9mIHRoZSBTVkcgZ3JhcGhpYyAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncm90YXRpb24nLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIHJvdGF0aW9uOiBudW1iZXIgPSAwO1xuXG4gIC8qKiBJbnZlcnNlIHJvdGF0aW9uIGZvciBwYXJ0IG9mIGFuIFNWRyB0aGF0IGNhbiBiZSByb3RhdGVkIG9wcG9zaXRlIHRvIHRoZSBub3JtYWwgcm90YXRpb24gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ludmVyc2Utcm9yYXRpb24nLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGludmVyc2VSb3RhdGlvbjogbnVtYmVyID0gMDtcblxuICAvKiogd2lkdGggb2YgdGhlIHN2ZyBpbiBwaXhlbHMgKHdpdGhvdXQgdW5pdCkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3dpZHRoJywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciB3aWR0aDogbnVtYmVyID0gbnVsbCE7XG5cbiAgLyoqIGhlaWdodCBvZiB0aGUgc3ZnIGluIHBpeGVscyAod2l0aG91dCB1bml0KSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaGVpZ2h0JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBoZWlnaHQ6IG51bWJlciA9IG51bGwhO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShfY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzKTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShfY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGlmIChfY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd3aWR0aCcpICYmICEhdGhpcy53aWR0aCkge1xuICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLXJlc2VydmF0aW9uLWdyYXBoaWMtd2lkdGgnLCBgJHt0aGlzLndpZHRofWApO1xuICAgIH1cblxuICAgIGlmIChfY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdoZWlnaHQnKSAmJiAhIXRoaXMuaGVpZ2h0KSB7XG4gICAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItcmVzZXJ2YXRpb24tZ3JhcGhpYy1oZWlnaHQnLCBgJHt0aGlzLmhlaWdodH1gKTtcbiAgICB9XG5cbiAgICBpZiAoX2NoYW5nZWRQcm9wZXJ0aWVzLmhhcygncm90YXRpb24nKSkge1xuICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLXJlc2VydmF0aW9uLWdyYXBoaWMtcm90YXRpb24nLCBgJHt0aGlzLnJvdGF0aW9ufWApO1xuICAgIH1cblxuICAgIGlmIChfY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdpbnZlcnNlUm90YXRpb24nKSkge1xuICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAgICctLXNiYi1yZXNlcnZhdGlvbi1ncmFwaGljLWludmVyc2Utcm90YXRpb24nLFxuICAgICAgICBgJHt0aGlzLmludmVyc2VSb3RhdGlvbn1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgY29uc3Qgc3ZnT2JqID0gbWFwSWNvblRvU3ZnW3RoaXMubmFtZV07XG5cbiAgICBpZiAoIXN2Z09iaj8uc3ZnICYmICFzdmdPYmo/LnN2Z05hbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBodG1sYDxzcGFuXG4gICAgICBjbGFzcz1cIiR7Y2xhc3NNYXAoe1xuICAgICAgICAnc2JiLXNyLWljb24nOiAhIXN2Z09iai5zdmdOYW1lLFxuICAgICAgICAnc2JiLXNyLWdyYXBoaWMnOiAhIXN2Z09iai5zdmcsXG4gICAgICB9KX1cIlxuICAgID5cbiAgICAgICR7c3ZnT2JqLnN2Z05hbWVcbiAgICAgICAgPyBodG1sYCA8c2JiLWljb25cbiAgICAgICAgICAgIG5hbWU9XCIke3N2Z09iai5zdmdOYW1lIHx8ICcnfVwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCIke2dldEkxOG5TZWF0UmVzZXJ2YXRpb24oc3ZnT2JqLnN2Z05hbWUsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpfVwiXG4gICAgICAgICAgPjwvc2JiLWljb24+YFxuICAgICAgICA6IGh0bWxgJHt0aGlzLl9nZXRTdmdFbGVtZW50KHN2Z09iai5zdmchKX1gfVxuICAgIDwvc3Bhbj5gO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U3ZnRWxlbWVudChzdmc6IHN0cmluZyk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgY29uc3Qgc3ZnU3RyaW5nID0gc3ZnIHx8ICc8c3ZnPjwvc3ZnPic7XG4gICAgY29uc3Qgc3ZnRWxtID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhzdmdTdHJpbmcsICdpbWFnZS9zdmcreG1sJykuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgaWYgKHRoaXMuc3RyZXRjaCAmJiBzdmdFbG0/Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzdmcnKSB7XG4gICAgICBzdmdFbG0uc2V0QXR0cmlidXRlKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN2Z0VsbTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYyc6IFNiYlNlYXRSZXNlcnZhdGlvbkdyYXBoaWNFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFrQk0sb0NBQWdDLE1BQUE7OzBCQURyQyxjQUFjLDhCQUE4QixDQUFDOzs7O29CQUNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQVIsRUFBQSxtQkFBUSxZQUFVO0FBQUE7O0FBTXZEO0FBS0E7QUFLQTtBQUtBO0FBS0E7QUFLQTtBQXpCZ0IseUJBQUEsd0JBQUEsa0JBQUEsTUFBQSxvQkFBZSxFQUFFO0FBS2pCLHlCQUFBLDRCQUFBLGtCQUFBLE1BQUEsdUJB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
223
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmNvbXBvbmVudC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMuY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgZm9yY2VUeXBlIH0gZnJvbSAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHR5cGUgQ1NTUmVzdWx0R3JvdXAsIHR5cGUgUHJvcGVydHlWYWx1ZXMsIHR5cGUgVGVtcGxhdGVSZXN1bHQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgaHRtbCwgTGl0RWxlbWVudCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGNsYXNzTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvY2xhc3MtbWFwLmpzJztcblxuaW1wb3J0IHsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbiwgbWFwSWNvblRvU3ZnIH0gZnJvbSAnLi4vY29tbW9uLmpzJztcblxuaW1wb3J0IHN0eWxlIGZyb20gJy4vc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnQHNiYi1lc3RhL2x5bmUtZWxlbWVudHMvaWNvbi5qcyc7XG5cbi8qKlxuICogT3V0cHV0IG9uZSBvZiB0aGUgU1ZHIGdyYXBoaWNzIGJhc2VkIG9uIGl0cyBjb2RlLlxuICovXG5leHBvcnRcbkBjdXN0b21FbGVtZW50KCdzYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljJylcbmNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbkdyYXBoaWNFbGVtZW50IGV4dGVuZHMgTGl0RWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgc3R5bGVzOiBDU1NSZXN1bHRHcm91cCA9IHN0eWxlO1xuXG4gIC8qKiBOYW1lIG9mIHRoZSBTVkcgZ3JhcGhpYyB0byBiZSBkaXNwbGF5ZWQuICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICduYW1lJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgbmFtZTogc3RyaW5nID0gJyc7XG5cbiAgLyoqIGlmIHRydWUsIHNjYWxlIHRoZSBncmFwaGljIGNvbnRlbnQgb2YgdGhlIGdpdmVuIGVsZW1lbnQgbm9uLXVuaWZvcm1seSBpZiBuZWNlc3NhcnkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3N0cmV0Y2gnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzdHJldGNoOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIGhhbmRsZXMgdGhlIHJvdGF0aW9uIG9mIHRoZSBTVkcgZ3JhcGhpYyAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAncm90YXRpb24nLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIHJvdGF0aW9uOiBudW1iZXIgPSAwO1xuXG4gIC8qKiBJbnZlcnNlIHJvdGF0aW9uIGZvciBwYXJ0IG9mIGFuIFNWRyB0aGF0IGNhbiBiZSByb3RhdGVkIG9wcG9zaXRlIHRvIHRoZSBub3JtYWwgcm90YXRpb24gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ludmVyc2Utcm9yYXRpb24nLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGludmVyc2VSb3RhdGlvbjogbnVtYmVyID0gMDtcblxuICAvKiogd2lkdGggb2YgdGhlIHN2ZyBpbiBwaXhlbHMgKHdpdGhvdXQgdW5pdCkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3dpZHRoJywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciB3aWR0aDogbnVtYmVyID0gbnVsbCE7XG5cbiAgLyoqIGhlaWdodCBvZiB0aGUgc3ZnIGluIHBpeGVscyAod2l0aG91dCB1bml0KSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaGVpZ2h0JywgdHlwZTogTnVtYmVyIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBoZWlnaHQ6IG51bWJlciA9IG51bGwhO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShfY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzKTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShfY2hhbmdlZFByb3BlcnRpZXMpO1xuICAgIGlmIChfY2hhbmdlZFByb3BlcnRpZXMuaGFzKCd3aWR0aCcpICYmICEhdGhpcy53aWR0aCkge1xuICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLXJlc2VydmF0aW9uLWdyYXBoaWMtd2lkdGgnLCBgJHt0aGlzLndpZHRofWApO1xuICAgIH1cblxuICAgIGlmIChfY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdoZWlnaHQnKSAmJiAhIXRoaXMuaGVpZ2h0KSB7XG4gICAgICB0aGlzLnN0eWxlPy5zZXRQcm9wZXJ0eSgnLS1zYmItcmVzZXJ2YXRpb24tZ3JhcGhpYy1oZWlnaHQnLCBgJHt0aGlzLmhlaWdodH1gKTtcbiAgICB9XG5cbiAgICBpZiAoX2NoYW5nZWRQcm9wZXJ0aWVzLmhhcygncm90YXRpb24nKSkge1xuICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoJy0tc2JiLXJlc2VydmF0aW9uLWdyYXBoaWMtcm90YXRpb24nLCBgJHt0aGlzLnJvdGF0aW9ufWApO1xuICAgIH1cblxuICAgIGlmIChfY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdpbnZlcnNlUm90YXRpb24nKSkge1xuICAgICAgdGhpcy5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAgICctLXNiYi1yZXNlcnZhdGlvbi1ncmFwaGljLWludmVyc2Utcm90YXRpb24nLFxuICAgICAgICBgJHt0aGlzLmludmVyc2VSb3RhdGlvbn1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgY29uc3Qgc3ZnT2JqID0gbWFwSWNvblRvU3ZnW3RoaXMubmFtZV07XG5cbiAgICBpZiAoIXN2Z09iaj8uc3ZnICYmICFzdmdPYmo/LnN2Z05hbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBodG1sYDxzcGFuXG4gICAgICBjbGFzcz1cIiR7Y2xhc3NNYXAoe1xuICAgICAgICAnc2JiLXNyLWljb24nOiAhIXN2Z09iai5zdmdOYW1lLFxuICAgICAgICAnc2JiLXNyLWdyYXBoaWMnOiAhIXN2Z09iai5zdmcsXG4gICAgICB9KX1cIlxuICAgID5cbiAgICAgICR7c3ZnT2JqLnN2Z05hbWVcbiAgICAgICAgPyBodG1sYCA8c2JiLWljb25cbiAgICAgICAgICAgIG5hbWU9XCIke3N2Z09iai5zdmdOYW1lIHx8ICcnfVwiXG4gICAgICAgICAgICBhcmlhLWhpZGRlbj1cImZhbHNlXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCIke2dldEkxOG5TZWF0UmVzZXJ2YXRpb24oc3ZnT2JqLnN2Z05hbWUsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpfVwiXG4gICAgICAgICAgPjwvc2JiLWljb24+YFxuICAgICAgICA6IGh0bWxgJHt0aGlzLl9nZXRTdmdFbGVtZW50KHN2Z09iai5zdmchKX1gfVxuICAgIDwvc3Bhbj5gO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U3ZnRWxlbWVudChzdmc6IHN0cmluZyk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgY29uc3Qgc3ZnU3RyaW5nID0gc3ZnIHx8ICc8c3ZnPjwvc3ZnPic7XG4gICAgY29uc3Qgc3ZnRWxtID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhzdmdTdHJpbmcsICdpbWFnZS9zdmcreG1sJykuZmlyc3RFbGVtZW50Q2hpbGQ7XG4gICAgaWYgKHRoaXMuc3RyZXRjaCAmJiBzdmdFbG0/Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzdmcnKSB7XG4gICAgICBzdmdFbG0uc2V0QXR0cmlidXRlKCdwcmVzZXJ2ZUFzcGVjdFJhdGlvJywgJ25vbmUnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN2Z0VsbTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYyc6IFNiYlNlYXRSZXNlcnZhdGlvbkdyYXBoaWNFbGVtZW50O1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWtCTSxvQ0FBZ0MsTUFBQTs7MEJBRHJDLGNBQWMsOEJBQThCLENBQUM7Ozs7b0JBQ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBUixFQUFBLG1CQUFRLFlBQVU7QUFBQTs7QUFNdkQ7QUFLQTtBQUtBO0FBS0E7QUFLQTtBQUtBO0FBekJnQix5QkFBQSx3QkFBQSxrQkFBQSxNQUFBLG9CQUFlLEVBQUU7QUFLakIseUJBQUEsNEJBQUEsa0JBQUEsTUFBQSx1QkFBQSxH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