@sbb-esta/lyne-elements-experimental 5.0.0-next.3 → 5.0.0

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 (167) hide show
  1. package/_index.scss +2 -0
  2. package/{core.css → autocomplete-grid/_autocomplete-grid.global.scss} +4 -3
  3. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +4 -4
  4. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +42 -66
  5. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +1 -1
  6. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +1 -1
  7. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +1 -1
  8. package/{autocomplete-grid-option.component-kcihiOWt.js → autocomplete-grid-option.component-DUFBhQwI.js} +1 -1
  9. package/autocomplete-grid.js +3 -3
  10. package/autocomplete-grid.pure.js +3 -3
  11. package/core/datetime/date-helper.js +1 -1
  12. package/core/styles/_theme.scss +19 -0
  13. package/core.js +1 -1
  14. package/custom-elements.json +165 -27
  15. package/{date-helper-CuMnZCsr.js → date-helper-DNzMLcyb.js} +3 -3
  16. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.d.ts.map +1 -1
  17. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +5 -5
  18. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.d.ts.map +1 -1
  19. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.component.js +54 -83
  20. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.component.js +1 -1
  21. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.component.js +1 -1
  22. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts +0 -1
  23. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.d.ts.map +1 -1
  24. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.component.js +1 -1
  25. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.component.js +1 -1
  26. package/development/{autocomplete-grid-cell.component-BF8i4388.js → autocomplete-grid-cell.component-BbdELDro.js} +1 -1
  27. package/development/{autocomplete-grid-option.component-D9pTXPlu.js → autocomplete-grid-option.component-C7WuqRit.js} +1 -2
  28. package/development/{autocomplete-grid-row.component-CBHh50jC.js → autocomplete-grid-row.component-DoXbOsQM.js} +1 -1
  29. package/development/autocomplete-grid.js +4 -4
  30. package/development/autocomplete-grid.pure.js +3 -3
  31. package/development/core/datetime/date-helper.js +1 -1
  32. package/development/core/timetable/access-leg-helper.js +1 -1
  33. package/development/core/timetable/timetable-helper.js +1 -1
  34. package/development/core.js +1 -1
  35. package/development/date-helper-BcTDWVeP.js +539 -0
  36. package/development/{differenceInMinutes-B7_GTDq7.js → differenceInMinutes-CxAbGYQ3.js} +2 -2
  37. package/development/{format-DFx4997p.js → format-Cx3zmmaF.js} +3 -3
  38. package/development/{isValid-JpZ7FphI.js → isValid-40Olgzo1.js} +2 -2
  39. package/development/journey-summary/journey-summary.component.js +1 -1
  40. package/development/journey-summary.component-BsC7wBIn.js +341 -0
  41. package/development/journey-summary.js +2 -2
  42. package/development/journey-summary.pure.js +1 -1
  43. package/development/{mapper-hWWm7Uke.js → mapper-BrZOqqfe.js} +1 -1
  44. package/development/pearl-chain/pearl-chain.component.js +1 -1
  45. package/development/pearl-chain-time/pearl-chain-time.component.js +1 -1
  46. package/development/{pearl-chain-time.component-BxVQ1z-Z.js → pearl-chain-time.component-C-CuC1ke.js} +3 -3
  47. package/development/pearl-chain-time.js +2 -2
  48. package/development/pearl-chain-time.pure.js +1 -1
  49. package/development/pearl-chain-vertical/pearl-chain-vertical.component.js +1 -1
  50. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +1 -1
  51. package/development/{pearl-chain-vertical-item.component-DJioJtxP.js → pearl-chain-vertical-item.component-CLu9QrqJ.js} +2 -2
  52. package/development/pearl-chain-vertical-item.js +2 -2
  53. package/development/pearl-chain-vertical-item.pure.js +1 -1
  54. package/development/{pearl-chain-vertical.component-zSOeIkhh.js → pearl-chain-vertical.component-DbPz5k_R.js} +1 -1
  55. package/development/pearl-chain-vertical.js +2 -2
  56. package/development/pearl-chain-vertical.pure.js +1 -1
  57. package/development/pearl-chain.component-10OsJZIX.js +318 -0
  58. package/development/pearl-chain.js +2 -2
  59. package/development/pearl-chain.pure.js +1 -1
  60. package/development/seat-reservation/common/mapper/icon-mapper.js +1 -1
  61. package/development/seat-reservation/common/mapper/mapper.js +1 -1
  62. package/development/seat-reservation/common/mapper.js +1 -1
  63. package/development/seat-reservation/common/svgs.js +1 -1
  64. package/development/seat-reservation/common/translations/i18n.js +1 -1
  65. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts +11 -1
  66. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.d.ts.map +1 -1
  67. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +41 -24
  68. package/development/seat-reservation/seat-reservation/seat-reservation.component.d.ts.map +1 -1
  69. package/development/seat-reservation/seat-reservation/seat-reservation.component.js +1 -1
  70. package/development/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +1 -1
  71. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +1 -1
  72. package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts +6 -2
  73. package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.d.ts.map +1 -1
  74. package/development/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +2 -2
  75. package/development/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +1 -1
  76. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.d.ts +6 -2
  77. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.d.ts.map +1 -1
  78. package/development/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +2 -2
  79. package/development/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +1 -1
  80. package/development/{seat-reservation-area.component-CMqjbUtV.js → seat-reservation-area.component-DPhQJFid.js} +2 -2
  81. package/development/{seat-reservation-graphic.component-C2r57590.js → seat-reservation-graphic.component-0LYsmerm.js} +2 -2
  82. package/development/seat-reservation-navigation-coach.component-B97jKD7Y.js +438 -0
  83. package/development/{seat-reservation-navigation-services.component-Do8JLJh3.js → seat-reservation-navigation-services.component-Cx0Is97w.js} +2 -2
  84. package/development/{seat-reservation-place-control.component-BfuOGZYq.js → seat-reservation-place-control.component-DaL1g8WH.js} +40 -37
  85. package/development/{seat-reservation-scoped.component-D-Mvw-Q3.js → seat-reservation-scoped.component-BHbORVsR.js} +1 -1
  86. package/development/seat-reservation.component-DI9pSlzt.js +473 -0
  87. package/development/seat-reservation.js +12 -12
  88. package/development/seat-reservation.pure.js +11 -11
  89. package/development/{svgs-kDpBCto5.js → svgs-Dj-RKmRs.js} +1 -1
  90. package/development/timetable-duration/timetable-duration.component.js +1 -1
  91. package/development/timetable-duration.component-Chk5D4Is.js +96 -0
  92. package/development/timetable-duration.js +2 -2
  93. package/development/timetable-duration.pure.js +1 -1
  94. package/development/timetable-row/timetable-row.component.d.ts.map +1 -1
  95. package/development/timetable-row/timetable-row.component.js +1 -1
  96. package/development/timetable-row.component-nzrQzxL6.js +736 -0
  97. package/development/timetable-row.js +2 -2
  98. package/development/timetable-row.pure.js +1 -1
  99. package/development/{toDate-DOFAOjP-.js → toDate-CDWut5fS.js} +1 -1
  100. package/{differenceInMinutes-Dr9gRqtu.js → differenceInMinutes-BAZ-Fham.js} +1 -1
  101. package/{format-DbUuNYFU.js → format-DjgG1QPc.js} +2 -2
  102. package/{isValid-B9oVW3lA.js → isValid-CXnsFZVu.js} +1 -1
  103. package/journey-summary/journey-summary.component.js +1 -1
  104. package/{journey-summary.component-CkDRawn9.js → journey-summary.component-DNoO3OCf.js} +41 -41
  105. package/journey-summary.js +1 -1
  106. package/journey-summary.pure.js +1 -1
  107. package/package.json +6 -6
  108. package/pearl-chain/pearl-chain.component.js +1 -1
  109. package/pearl-chain-time/pearl-chain-time.component.js +1 -1
  110. package/{pearl-chain-time.component-D5OCEBJ_.js → pearl-chain-time.component-BuvA6IE1.js} +33 -33
  111. package/pearl-chain-time.js +1 -1
  112. package/pearl-chain-time.pure.js +1 -1
  113. package/pearl-chain-vertical/pearl-chain-vertical.component.js +1 -1
  114. package/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +1 -1
  115. package/{pearl-chain-vertical-item.component-IdquCJMy.js → pearl-chain-vertical-item.component-QZ4s8Jbv.js} +24 -24
  116. package/pearl-chain-vertical-item.js +1 -1
  117. package/pearl-chain-vertical-item.pure.js +1 -1
  118. package/pearl-chain-vertical.js +1 -1
  119. package/pearl-chain-vertical.pure.js +1 -1
  120. package/{pearl-chain.component-C6lcD7Xl.js → pearl-chain.component-DtGXXkY6.js} +26 -26
  121. package/pearl-chain.js +1 -1
  122. package/pearl-chain.pure.js +1 -1
  123. package/seat-reservation/common/mapper/mapper.js +1 -1
  124. package/seat-reservation/common/mapper.js +1 -1
  125. package/seat-reservation/common/svgs.js +1 -1
  126. package/seat-reservation/seat-reservation/seat-reservation-base-element.js +91 -77
  127. package/seat-reservation/seat-reservation/seat-reservation.component.js +1 -1
  128. package/seat-reservation/seat-reservation-area/seat-reservation-area.component.js +1 -1
  129. package/seat-reservation/seat-reservation-graphic/seat-reservation-graphic.component.js +1 -1
  130. package/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.js +2 -2
  131. package/seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js +1 -1
  132. package/seat-reservation/seat-reservation-place-control/seat-reservation-place-control.component.js +2 -2
  133. package/seat-reservation/seat-reservation-scoped/seat-reservation-scoped.component.js +1 -1
  134. package/{seat-reservation-area.component-BcmwKJSK.js → seat-reservation-area.component-G9lHb7S8.js} +16 -16
  135. package/{seat-reservation-graphic.component-C3wc4DKr.js → seat-reservation-graphic.component-BXFcQDxY.js} +20 -20
  136. package/seat-reservation-navigation-coach.component-BXy8EkJe.js +338 -0
  137. package/{seat-reservation-navigation-services.component-CfAQa7pa.js → seat-reservation-navigation-services.component-49XmV9rv.js} +21 -21
  138. package/{seat-reservation-place-control.component-DrzEDW8Z.js → seat-reservation-place-control.component-DToIW328.js} +70 -71
  139. package/{seat-reservation.component-RNI6_X71.js → seat-reservation.component--0XnrCkk.js} +78 -77
  140. package/seat-reservation.js +12 -12
  141. package/seat-reservation.pure.js +11 -11
  142. package/timetable-duration/timetable-duration.component.js +1 -1
  143. package/timetable-duration.component-iMCvh1zr.js +61 -0
  144. package/timetable-duration.js +1 -1
  145. package/timetable-duration.pure.js +1 -1
  146. package/timetable-row/timetable-row.component.js +1 -1
  147. package/{timetable-row.component-Din-TQ9u.js → timetable-row.component-mNKmhRmP.js} +89 -85
  148. package/timetable-row.js +1 -1
  149. package/timetable-row.pure.js +1 -1
  150. package/core/styles/core.scss +0 -13
  151. package/core/styles/theme.scss +0 -5
  152. package/development/date-helper-DGz-ztQM.js +0 -520
  153. package/development/journey-summary.component-De1ioDRq.js +0 -341
  154. package/development/pearl-chain.component-B83OsEx8.js +0 -312
  155. package/development/seat-reservation-navigation-coach.component-BwLbiHCG.js +0 -426
  156. package/development/seat-reservation.component-B-n0sIL5.js +0 -472
  157. package/development/timetable-duration.component-fBla8Kue.js +0 -96
  158. package/development/timetable-row.component-DSTGtQAC.js +0 -732
  159. package/seat-reservation-navigation-coach.component-D1SgS8BU.js +0 -328
  160. package/timetable-duration.component-DPRcG1LP.js +0 -61
  161. /package/{autocomplete-grid-cell.component-DAsWZlTn.js → autocomplete-grid-cell.component-79IjA__I.js} +0 -0
  162. /package/{autocomplete-grid-row.component-VbyYP0U-.js → autocomplete-grid-row.component-B3U15Rwa.js} +0 -0
  163. /package/{mapper-Cqie5ivY.js → mapper-Dcou8VEf.js} +0 -0
  164. /package/{pearl-chain-vertical.component-CDOWaup3.js → pearl-chain-vertical.component-Dc3vaHsQ.js} +0 -0
  165. /package/{seat-reservation-scoped.component-BohQUGVW.js → seat-reservation-scoped.component-D8dAmrP7.js} +0 -0
  166. /package/{svgs-D5DhLHxC.js → svgs-D4fuYTHV.js} +0 -0
  167. /package/{toDate-p-Tpkb7t.js → toDate-BhNUyM4s.js} +0 -0
@@ -1,426 +0,0 @@
1
- import { __esDecorate, __runInitializers } from "tslib";
2
- import { SbbElement, SbbLanguageController, forceType, screenReaderOnlyStyles } from "@sbb-esta/lyne-elements/core.js";
3
- import { html, nothing, unsafeCSS } from "lit";
4
- import { property } from "lit/decorators.js";
5
- import { classMap } from "lit/directives/class-map.js";
6
- import { getI18nSeatReservation } from "./seat-reservation/common/translations.js";
7
- import { SbbSeatReservationNavigationServicesElement } from "./seat-reservation/seat-reservation-navigation-services/seat-reservation-navigation-services.component.js";
8
- //#region src/elements-experimental/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.scss?inline
9
- var seat_reservation_navigation_coach_default = ":host {\n display: inline-block;\n min-height: calc(44 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n --sbb-seat-reservation-navigation-travelclass-spacing: 10;\n --sbb-seat-reservation-navigation-btn-border-width-default: 1;\n --sbb-seat-reservation-navigation-btn-border-width: var(\n --sbb-seat-reservation-navigation-btn-border-width-default\n );\n --sbb-seat-reservation-navigation-btn-border-color: var(--sbb-color-granite);\n --sbb-seat-reservation-navigation-btn-border-color: light-dark(\n var(--sbb-color-granite),\n var(--sbb-color-graphite)\n );\n --sbb-seat-reservation-navigation-btn-background-color: var(--sbb-color-white);\n --sbb-seat-reservation-navigation-btn-background-color: light-dark(\n var(--sbb-color-white),\n var(--sbb-color-black)\n );\n --sbb-seat-reservation-navigation-btn-border-width-selected: 2;\n --sbb-seat-reservation-navigation-btn-background-color-selected: var(--sbb-color-milk);\n --sbb-seat-reservation-navigation-btn-background-color-selected: light-dark(\n var(--sbb-color-milk),\n var(--sbb-color-iron)\n );\n --sbb-seat-reservation-navigation-btn-border-color-selected: var(--sbb-color-black);\n --sbb-seat-reservation-navigation-btn-border-color-selected: light-dark(\n var(--sbb-color-black),\n var(--sbb-color-white)\n );\n --sbb-seat-reservation-navigation-btn-outline-width-focused: 1;\n --sbb-seat-reservation-navigation-btn-outline-color-focused: var(--sbb-color-black);\n --sbb-seat-reservation-navigation-btn-outline-color-focused: light-dark(\n var(--sbb-color-black),\n var(--sbb-color-white)\n );\n --sbb-seat-reservation-navigation-btn-outline-offset-focused: 4;\n --sbb-seat-reservation-navigation-btn-background-color-focused: var(--sbb-color-white);\n --sbb-seat-reservation-navigation-btn-background-color-focused: light-dark(\n var(--sbb-color-white),\n var(--sbb-color-black)\n );\n --sbb-seat-reservation-navigation-btn-border-width-focused: var(\n --sbb-seat-reservation-navigation-btn-border-width\n );\n --sbb-seat-reservation-navigation-btn-border-color-focused: var(--sbb-color-black);\n --sbb-seat-reservation-navigation-btn-border-color-focused: light-dark(\n var(--sbb-color-black),\n var(--sbb-color-white)\n );\n --sbb-seat-reservation-navigation-btn-border-width-hovered: 2;\n --sbb-seat-reservation-navigation-btn-background-color-hovered: var(--sbb-color-cloud);\n --sbb-seat-reservation-navigation-btn-background-color-hovered: light-dark(\n var(--sbb-color-cloud),\n var(--sbb-color-midnight)\n );\n --sbb-seat-reservation-navigation-btn-border-color-hovered: var(--sbb-color-black);\n --sbb-seat-reservation-navigation-btn-border-color-hovered: light-dark(\n var(--sbb-color-black),\n var(--sbb-color-white)\n );\n --sbb-seat-reservation-navigation-btn-background-color-disabled: var(--sbb-background-color-2);\n --sbb-seat-reservation-navigation-btn-border-color-disabled: var(--sbb-color-platinum);\n --sbb-seat-reservation-navigation-btn-border-color-disabled: light-dark(\n var(--sbb-color-platinum),\n var(--sbb-color-iron)\n );\n}\n\n.sbb-sr-navigation__item-coach {\n display: flex;\n flex-direction: column;\n gap: calc(8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n width: calc(80 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n list-style-type: none;\n}\n.sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation--first-class, .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation--first-class {\n width: calc(100% - 18 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n}\n.sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation__ctrl-button:not(.sbb-seat-reservation-navigation-driver-area) {\n border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x);\n}\n.sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation__ctrl-button:not(.sbb-seat-reservation-navigation-driver-area)::before {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);\n border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x);\n}\n.sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation--first-class {\n margin-inline-start: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n}\n.sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area) {\n border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x);\n}\n.sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area)::before {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);\n border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x);\n}\n.sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation__additional-information {\n padding-inline-end: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n}\n.sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation--first-class {\n margin-inline-end: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n}\n\n.sbb-sr-navigation__ctrl-button {\n appearance: none;\n box-sizing: border-box;\n margin: 0;\n outline: none;\n border: none;\n border-radius: 0;\n padding: 0;\n background: none;\n -webkit-tap-highlight-color: transparent;\n color: inherit;\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: calc(36 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n position: relative;\n background-color: var(--sbb-seat-reservation-navigation-btn-background-color);\n cursor: var(--sbb-cursor-pointer);\n}\n.sbb-sr-navigation__ctrl-button.sbb-sr-navigation-driver-area {\n border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);\n}\n.sbb-sr-navigation__ctrl-button.sbb-sr-navigation-driver-area::before {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);\n border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);\n}\n.sbb-sr-navigation__ctrl-button {\n border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);\n}\n.sbb-sr-navigation__ctrl-button::before {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);\n border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);\n}\n\n.sbb-sr-navigation__item-coach--focused .sbb-sr-navigation__ctrl-button {\n --sbb-seat-reservation-navigation-btn-background-color: var(\n --sbb-seat-reservation-navigation-btn-background-color-focused\n );\n --sbb-seat-reservation-navigation-btn-border-color: var(\n --sbb-seat-reservation-navigation-btn-border-color-focused\n );\n --sbb-seat-reservation-navigation-btn-border-width: var(\n --sbb-seat-reservation-navigation-btn-border-width-focused\n );\n outline: calc(var(--sbb-seat-reservation-navigation-btn-outline-width-focused) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-outline-color-focused);\n outline-offset: calc(var(--sbb-seat-reservation-navigation-btn-outline-offset-focused) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n}\n.sbb-sr-navigation__item-coach--focused .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-travelclass {\n background-color: var(--sbb-color-metal);\n background-color: light-dark(var(--sbb-color-metal), var(--sbb-color-storm));\n}\n.sbb-sr-navigation__item-coach--focused .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-number {\n color: var(--sbb-color-anthracite);\n color: light-dark(var(--sbb-color-anthracite), var(--sbb-color-graphite));\n}\n\n.sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button {\n --sbb-seat-reservation-navigation-btn-background-color: var(\n --sbb-seat-reservation-navigation-btn-background-color-selected\n );\n --sbb-seat-reservation-navigation-btn-border-color: var(\n --sbb-seat-reservation-navigation-btn-border-color-selected\n );\n --sbb-seat-reservation-navigation-btn-border-width: var(\n --sbb-seat-reservation-navigation-btn-border-width-selected\n );\n}\n.sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-travelclass {\n background-color: var(--sbb-color-black);\n background-color: light-dark(var(--sbb-color-black), var(--sbb-color-white));\n}\n.sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button .sbb-sr-navigation__item-coach-number {\n color: var(--sbb-color-black);\n color: light-dark(var(--sbb-color-black), var(--sbb-color-white));\n}\n\n.sbb-sr-navigation__item-coach--hovered .sbb-sr-navigation__ctrl-button {\n --sbb-seat-reservation-navigation-btn-background-color: var(\n --sbb-seat-reservation-navigation-btn-background-color-hovered\n );\n --sbb-seat-reservation-navigation-btn-border-color: var(\n --sbb-seat-reservation-navigation-btn-border-color-hovered\n );\n --sbb-seat-reservation-navigation-btn-border-width: var(\n --sbb-seat-reservation-navigation-btn-border-width-hovered\n );\n}\n\n.sbb-sr-navigation__item-coach--selected.sbb-sr-navigation__item-coach--hovered .sbb-sr-navigation__ctrl-button {\n --sbb-seat-reservation-navigation-btn-background-color: var(\n --sbb-seat-reservation-navigation-btn-background-color-selected\n );\n --sbb-seat-reservation-navigation-btn-border-color: var(\n --sbb-seat-reservation-navigation-btn-border-color-selected\n );\n --sbb-seat-reservation-navigation-btn-border-width: var(\n --sbb-seat-reservation-navigation-btn-border-width-selected\n );\n background-color: var(--sbb-seat-reservation-navigation-btn-background-color-hovered) !important;\n}\n\n.sbb-sr-navigation__item-coach--selected .sbb-sr-navigation__ctrl-button:focus-visible:not([disabled], :disabled) {\n --sbb-seat-reservation-navigation-btn-background-color: var(\n --sbb-seat-reservation-navigation-btn-background-color-selected\n );\n --sbb-seat-reservation-navigation-btn-border-color: var(\n --sbb-seat-reservation-navigation-btn-border-color-selected\n );\n --sbb-seat-reservation-navigation-btn-border-width: var(\n --sbb-seat-reservation-navigation-btn-border-width-selected\n );\n}\n\n.sbb-sr-navigation__item-coach--hovered .sbb-sr-navigation__ctrl-button {\n --sbb-seat-reservation-navigation-btn-background-color: var(\n --sbb-seat-reservation-navigation-btn-background-color-hovered\n );\n --sbb-seat-reservation-navigation-btn-border-color: var(\n --sbb-seat-reservation-navigation-btn-border-color-hovered\n );\n --sbb-seat-reservation-navigation-btn-border-width: var(\n --sbb-seat-reservation-navigation-btn-border-width-hovered\n );\n}\n\n.sbb-sr-navigation__ctrl-button:hover:not([disabled], :disabled) {\n --sbb-seat-reservation-navigation-btn-background-color: var(\n --sbb-seat-reservation-navigation-btn-background-color-hovered\n );\n --sbb-seat-reservation-navigation-btn-border-color: var(\n --sbb-seat-reservation-navigation-btn-border-color-hovered\n );\n --sbb-seat-reservation-navigation-btn-border-width: var(\n --sbb-seat-reservation-navigation-btn-border-width-hovered\n );\n}\n.sbb-sr-navigation__ctrl-button:hover:not([disabled], :disabled) .sbb-sr-navigation__item-coach-travelclass {\n background-color: var(--sbb-color-smoke);\n}\n.sbb-sr-navigation__ctrl-button:hover:not([disabled], :disabled) .sbb-sr-navigation__item-coach-number {\n color: var(--sbb-color-iron);\n color: light-dark(var(--sbb-color-iron), var(--sbb-color-silver));\n}\n\n.sbb-sr-navigation__ctrl-button:is([disabled], :disabled) {\n --sbb-seat-reservation-navigation-btn-background-color: var(\n --sbb-seat-reservation-navigation-btn-background-color-disabled\n );\n --sbb-seat-reservation-navigation-btn-border-color: var(\n --sbb-seat-reservation-navigation-btn-border-color-disabled\n );\n cursor: unset;\n pointer-events: unset;\n}\n.sbb-sr-navigation__ctrl-button:is([disabled], :disabled) .sbb-sr-navigation__item-coach-travelclass {\n background-color: var(--sbb-color-graphite);\n background-color: light-dark(var(--sbb-color-graphite), var(--sbb-color-granite));\n}\n.sbb-sr-navigation__ctrl-button:is([disabled], :disabled) .sbb-sr-navigation__item-coach-number {\n color: var(--sbb-color-graphite);\n color: light-dark(var(--sbb-color-graphite), var(--sbb-color-granite));\n}\n\n.sbb-sr-navigation__additional-information {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex: 1;\n column-gap: calc(8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n padding-inline: calc(16 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n font-family: var(--sbb-typo-font-family);\n font-weight: 700;\n color: var(--sbb-color-granite);\n color: light-dark(var(--sbb-color-granite), var(--sbb-color-granite));\n}\n@media (forced-colors: active) {\n .sbb-sr-navigation__additional-information {\n color: var(--sbb-color-milk);\n }\n}\n\n.sbb-sr-navigation__item-coach-number {\n color: var(--sbb-color-granite);\n color: light-dark(var(--sbb-color-granite), var(--sbb-color-graphite));\n}\n@media (forced-colors: active) {\n .sbb-sr-navigation__item-coach-number {\n color: var(--sbb-color-granite);\n color: light-dark(var(--sbb-color-granite), var(--sbb-color-graphite));\n }\n}\n.sbb-sr-navigation__item-coach-number .sbb-sr-navigation__item-coach-travelclass {\n background-color: var(--sbb-background-color-2-inverted);\n}\n\n.sbb-sr-navigation--first-class {\n width: calc(100% - 8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n position: absolute;\n inset-block-start: calc(3 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n inset-inline-start: calc(4 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n border: calc(1 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid transparent;\n border-radius: var(--sbb-border-radius-1x);\n margin: auto;\n background-color: var(--sbb-color-lemon);\n}\n\n.sbb-sr-navigation__item-coach-travelclass {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: calc(20 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n min-width: calc(20 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n border-radius: var(--sbb-border-radius-1x);\n text-align: center;\n background-color: var(--sbb-color-granite);\n background-color: light-dark(var(--sbb-color-granite), var(--sbb-color-graphite));\n color: var(--sbb-color-white);\n color: light-dark(var(--sbb-color-white), var(--sbb-color-black));\n}\n@media (forced-colors: active) {\n .sbb-sr-navigation__item-coach-travelclass {\n border: var(--sbb-border-width-1x) solid;\n }\n}\n\n:host([vertical]) .sbb-sr-navigation__item-coach {\n flex-direction: row;\n}\n:host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation__ctrl-button {\n flex-direction: row-reverse;\n height: calc(80 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n min-width: calc(36 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n}\n:host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation__additional-information {\n flex-direction: column-reverse;\n padding-block: calc(16 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n padding-inline-start: unset;\n padding-inline-end: unset;\n}\n:host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation--first-class {\n height: calc(100% - 8 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n width: initial;\n inset-inline-end: calc(3 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n inset-block-start: calc(4 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n inset-inline-start: initial;\n}\n:host([vertical]) .sbb-sr-navigation__item-coach.first-coach .sbb-sr-navigation--first-class, :host([vertical]) .sbb-sr-navigation__item-coach.last-coach .sbb-sr-navigation--first-class {\n height: calc(100% - 18 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n}\n:host([vertical]) .sbb-sr-navigation__item-coach.first-coach:not(.last-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area) {\n border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);\n}\n:host([vertical]) .sbb-sr-navigation__item-coach.first-coach:not(.last-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area)::before {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);\n border-radius: var(--sbb-border-radius-8x) var(--sbb-border-radius-8x) var(--sbb-border-radius-2x) var(--sbb-border-radius-2x);\n}\n:host([vertical]) .sbb-sr-navigation__item-coach.first-coach:not(.last-coach) .sbb-sr-navigation--first-class {\n margin-block-start: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n margin-inline-start: initial;\n}\n:host([vertical]) .sbb-sr-navigation__item-coach.last-coach:not(.first-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area) {\n border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);\n}\n:host([vertical]) .sbb-sr-navigation__item-coach.last-coach:not(.first-coach) .sbb-sr-navigation__ctrl-button:not(.sbb-sr-navigation-driver-area)::before {\n content: \"\";\n position: absolute;\n width: 100%;\n height: 100%;\n border: calc(var(--sbb-seat-reservation-navigation-btn-border-width) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem)) solid var(--sbb-seat-reservation-navigation-btn-border-color);\n border-radius: var(--sbb-border-radius-2x) var(--sbb-border-radius-2x) var(--sbb-border-radius-8x) var(--sbb-border-radius-8x);\n}\n:host([vertical]) .sbb-sr-navigation__item-coach.last-coach:not(.first-coach) .sbb-sr-navigation--first-class {\n margin-block-end: calc(var(--sbb-seat-reservation-navigation-travelclass-spacing) * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n margin-inline-end: initial;\n}\n:host([vertical]) .sbb-sr-navigation__item-coach .sbb-sr-navigation-driver-area {\n height: calc(80 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n min-width: calc(36 * var(--sbb-seat-reservation-one-px-rem, 0.0625rem));\n}";
10
- //#endregion
11
- //#region src/elements-experimental/seat-reservation/seat-reservation-navigation-coach/seat-reservation-navigation-coach.component.ts
12
- /**
13
- * This component will display the navigation coach item for Seat reservation.
14
- */
15
- var SbbSeatReservationNavigationCoachElement = (() => {
16
- let _classSuper = SbbElement;
17
- let _selected_decorators;
18
- let _selected_initializers = [];
19
- let _selected_extraInitializers = [];
20
- let _focused_decorators;
21
- let _focused_initializers = [];
22
- let _focused_extraInitializers = [];
23
- let _hovered_decorators;
24
- let _hovered_initializers = [];
25
- let _hovered_extraInitializers = [];
26
- let _nativeFocusActive_decorators;
27
- let _nativeFocusActive_initializers = [];
28
- let _nativeFocusActive_extraInitializers = [];
29
- let _index_decorators;
30
- let _index_initializers = [];
31
- let _index_extraInitializers = [];
32
- let _coachItemDetails_decorators;
33
- let _coachItemDetails_initializers = [];
34
- let _coachItemDetails_extraInitializers = [];
35
- let _disable_decorators;
36
- let _disable_initializers = [];
37
- let _disable_extraInitializers = [];
38
- let _vertical_decorators;
39
- let _vertical_initializers = [];
40
- let _vertical_extraInitializers = [];
41
- let _showTitleInfo_decorators;
42
- let _showTitleInfo_initializers = [];
43
- let _showTitleInfo_extraInitializers = [];
44
- return class SbbSeatReservationNavigationCoachElement extends _classSuper {
45
- constructor() {
46
- super(...arguments);
47
- this.#selected_accessor_storage = __runInitializers(this, _selected_initializers, false);
48
- this.#focused_accessor_storage = (__runInitializers(this, _selected_extraInitializers), __runInitializers(this, _focused_initializers, false));
49
- this.#hovered_accessor_storage = (__runInitializers(this, _focused_extraInitializers), __runInitializers(this, _hovered_initializers, false));
50
- this.#nativeFocusActive_accessor_storage = (__runInitializers(this, _hovered_extraInitializers), __runInitializers(this, _nativeFocusActive_initializers, true));
51
- this.#index_accessor_storage = (__runInitializers(this, _nativeFocusActive_extraInitializers), __runInitializers(this, _index_initializers, 0));
52
- this.#coachItemDetails_accessor_storage = (__runInitializers(this, _index_extraInitializers), __runInitializers(this, _coachItemDetails_initializers, {}));
53
- this.#disable_accessor_storage = (__runInitializers(this, _coachItemDetails_extraInitializers), __runInitializers(this, _disable_initializers, false));
54
- this.#vertical_accessor_storage = (__runInitializers(this, _disable_extraInitializers), __runInitializers(this, _vertical_initializers, false));
55
- this.#showTitleInfo_accessor_storage = (__runInitializers(this, _vertical_extraInitializers), __runInitializers(this, _showTitleInfo_initializers, false));
56
- this._language = (__runInitializers(this, _showTitleInfo_extraInitializers), new SbbLanguageController(this));
57
- }
58
- static {
59
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
60
- _selected_decorators = [forceType(), property({ type: Boolean })];
61
- _focused_decorators = [forceType(), property({ type: Boolean })];
62
- _hovered_decorators = [forceType(), property({ type: Boolean })];
63
- _nativeFocusActive_decorators = [forceType(), property({ type: Boolean })];
64
- _index_decorators = [forceType(), property({ type: Number })];
65
- _coachItemDetails_decorators = [property({
66
- attribute: "coach-item-details",
67
- type: Object
68
- })];
69
- _disable_decorators = [forceType(), property({
70
- attribute: "disable",
71
- type: Boolean
72
- })];
73
- _vertical_decorators = [forceType(), property({
74
- type: Boolean,
75
- reflect: true,
76
- useDefault: true
77
- })];
78
- _showTitleInfo_decorators = [forceType(), property({ type: Boolean })];
79
- __esDecorate(this, null, _selected_decorators, {
80
- kind: "accessor",
81
- name: "selected",
82
- static: false,
83
- private: false,
84
- access: {
85
- has: (obj) => "selected" in obj,
86
- get: (obj) => obj.selected,
87
- set: (obj, value) => {
88
- obj.selected = value;
89
- }
90
- },
91
- metadata: _metadata
92
- }, _selected_initializers, _selected_extraInitializers);
93
- __esDecorate(this, null, _focused_decorators, {
94
- kind: "accessor",
95
- name: "focused",
96
- static: false,
97
- private: false,
98
- access: {
99
- has: (obj) => "focused" in obj,
100
- get: (obj) => obj.focused,
101
- set: (obj, value) => {
102
- obj.focused = value;
103
- }
104
- },
105
- metadata: _metadata
106
- }, _focused_initializers, _focused_extraInitializers);
107
- __esDecorate(this, null, _hovered_decorators, {
108
- kind: "accessor",
109
- name: "hovered",
110
- static: false,
111
- private: false,
112
- access: {
113
- has: (obj) => "hovered" in obj,
114
- get: (obj) => obj.hovered,
115
- set: (obj, value) => {
116
- obj.hovered = value;
117
- }
118
- },
119
- metadata: _metadata
120
- }, _hovered_initializers, _hovered_extraInitializers);
121
- __esDecorate(this, null, _nativeFocusActive_decorators, {
122
- kind: "accessor",
123
- name: "nativeFocusActive",
124
- static: false,
125
- private: false,
126
- access: {
127
- has: (obj) => "nativeFocusActive" in obj,
128
- get: (obj) => obj.nativeFocusActive,
129
- set: (obj, value) => {
130
- obj.nativeFocusActive = value;
131
- }
132
- },
133
- metadata: _metadata
134
- }, _nativeFocusActive_initializers, _nativeFocusActive_extraInitializers);
135
- __esDecorate(this, null, _index_decorators, {
136
- kind: "accessor",
137
- name: "index",
138
- static: false,
139
- private: false,
140
- access: {
141
- has: (obj) => "index" in obj,
142
- get: (obj) => obj.index,
143
- set: (obj, value) => {
144
- obj.index = value;
145
- }
146
- },
147
- metadata: _metadata
148
- }, _index_initializers, _index_extraInitializers);
149
- __esDecorate(this, null, _coachItemDetails_decorators, {
150
- kind: "accessor",
151
- name: "coachItemDetails",
152
- static: false,
153
- private: false,
154
- access: {
155
- has: (obj) => "coachItemDetails" in obj,
156
- get: (obj) => obj.coachItemDetails,
157
- set: (obj, value) => {
158
- obj.coachItemDetails = value;
159
- }
160
- },
161
- metadata: _metadata
162
- }, _coachItemDetails_initializers, _coachItemDetails_extraInitializers);
163
- __esDecorate(this, null, _disable_decorators, {
164
- kind: "accessor",
165
- name: "disable",
166
- static: false,
167
- private: false,
168
- access: {
169
- has: (obj) => "disable" in obj,
170
- get: (obj) => obj.disable,
171
- set: (obj, value) => {
172
- obj.disable = value;
173
- }
174
- },
175
- metadata: _metadata
176
- }, _disable_initializers, _disable_extraInitializers);
177
- __esDecorate(this, null, _vertical_decorators, {
178
- kind: "accessor",
179
- name: "vertical",
180
- static: false,
181
- private: false,
182
- access: {
183
- has: (obj) => "vertical" in obj,
184
- get: (obj) => obj.vertical,
185
- set: (obj, value) => {
186
- obj.vertical = value;
187
- }
188
- },
189
- metadata: _metadata
190
- }, _vertical_initializers, _vertical_extraInitializers);
191
- __esDecorate(this, null, _showTitleInfo_decorators, {
192
- kind: "accessor",
193
- name: "showTitleInfo",
194
- static: false,
195
- private: false,
196
- access: {
197
- has: (obj) => "showTitleInfo" in obj,
198
- get: (obj) => obj.showTitleInfo,
199
- set: (obj, value) => {
200
- obj.showTitleInfo = value;
201
- }
202
- },
203
- metadata: _metadata
204
- }, _showTitleInfo_initializers, _showTitleInfo_extraInitializers);
205
- if (_metadata) Object.defineProperty(this, Symbol.metadata, {
206
- enumerable: true,
207
- configurable: true,
208
- writable: true,
209
- value: _metadata
210
- });
211
- }
212
- static {
213
- this.elementName = "sbb-seat-reservation-navigation-coach";
214
- }
215
- static {
216
- this.elementDependencies = [SbbSeatReservationNavigationServicesElement];
217
- }
218
- static {
219
- this.styles = [screenReaderOnlyStyles, unsafeCSS(seat_reservation_navigation_coach_default)];
220
- }
221
- static {
222
- this.events = {
223
- selectcoach: "selectcoach",
224
- focuscoach: "focuscoach"
225
- };
226
- }
227
- #selected_accessor_storage;
228
- /** Select coach property */
229
- get selected() {
230
- return this.#selected_accessor_storage;
231
- }
232
- set selected(value) {
233
- this.#selected_accessor_storage = value;
234
- }
235
- #focused_accessor_storage;
236
- /** Focus coach property */
237
- get focused() {
238
- return this.#focused_accessor_storage;
239
- }
240
- set focused(value) {
241
- this.#focused_accessor_storage = value;
242
- }
243
- #hovered_accessor_storage;
244
- /** Hover coach property */
245
- get hovered() {
246
- return this.#hovered_accessor_storage;
247
- }
248
- set hovered(value) {
249
- this.#hovered_accessor_storage = value;
250
- }
251
- #nativeFocusActive_accessor_storage;
252
- /** Native focus for this navigation coach is also set when the focused property is changed */
253
- get nativeFocusActive() {
254
- return this.#nativeFocusActive_accessor_storage;
255
- }
256
- set nativeFocusActive(value) {
257
- this.#nativeFocusActive_accessor_storage = value;
258
- }
259
- #index_accessor_storage;
260
- get index() {
261
- return this.#index_accessor_storage;
262
- }
263
- set index(value) {
264
- this.#index_accessor_storage = value;
265
- }
266
- #coachItemDetails_accessor_storage;
267
- get coachItemDetails() {
268
- return this.#coachItemDetails_accessor_storage;
269
- }
270
- set coachItemDetails(value) {
271
- this.#coachItemDetails_accessor_storage = value;
272
- }
273
- #disable_accessor_storage;
274
- /** Disable the coach navigation */
275
- get disable() {
276
- return this.#disable_accessor_storage;
277
- }
278
- set disable(value) {
279
- this.#disable_accessor_storage = value;
280
- }
281
- #vertical_accessor_storage;
282
- /** If the coach navigation should be displayed vertically */
283
- get vertical() {
284
- return this.#vertical_accessor_storage;
285
- }
286
- set vertical(value) {
287
- this.#vertical_accessor_storage = value;
288
- }
289
- #showTitleInfo_accessor_storage;
290
- /** Disable the mouse over title information */
291
- get showTitleInfo() {
292
- return this.#showTitleInfo_accessor_storage;
293
- }
294
- set showTitleInfo(value) {
295
- this.#showTitleInfo_accessor_storage = value;
296
- }
297
- willUpdate(changedProperties) {
298
- super.willUpdate(changedProperties);
299
- if (changedProperties.has("selected")) {
300
- const selectedNavButtonElement = this.shadowRoot?.querySelector(".sbb-sr-navigation__ctrl-button");
301
- if (this.selected && selectedNavButtonElement) {
302
- if (this.nativeFocusActive) selectedNavButtonElement.focus();
303
- /** Emits when a nav coach has the focus */
304
- this.dispatchEvent(new Event("focuscoach", {
305
- bubbles: true,
306
- composed: true
307
- }));
308
- }
309
- }
310
- if (changedProperties.has("focused") && this.focused) {
311
- const focusedNavButtonElement = this.shadowRoot?.querySelector(".sbb-sr-navigation__ctrl-button");
312
- if (focusedNavButtonElement && this.nativeFocusActive) focusedNavButtonElement.focus();
313
- }
314
- }
315
- /**
316
- * Render a list of service icons provided by a caller
317
- *
318
- * @protected
319
- */
320
- render() {
321
- return html`
322
- <div
323
- class="${classMap({
324
- "sbb-sr-navigation__item-coach": true,
325
- "last-coach": this.coachItemDetails.driverAreaSide?.right || false,
326
- "first-coach": this.coachItemDetails.driverAreaSide?.left || false,
327
- "sbb-sr-navigation__item-coach--selected": this.selected,
328
- "sbb-sr-navigation__item-coach--focused": this.focused,
329
- "sbb-sr-navigation__item-coach--hovered": this.hovered
330
- })}"
331
- >
332
- ${this._getNavigationButton()}
333
- ${this.coachItemDetails.propertyIds?.length ? html`<sbb-seat-reservation-navigation-services
334
- ?vertical="${this.vertical}"
335
- .propertyIds="${this.coachItemDetails.propertyIds}"
336
- ?showTitleInfo="${this.showTitleInfo}"
337
- ></sbb-seat-reservation-navigation-services>` : nothing}
338
- </div>
339
- `;
340
- }
341
- _getNavigationButton() {
342
- const currServiceClassNumber = this._getCoachServiceClassNumber();
343
- const titleDescriptionNavCoachButton = this._getTitleDescriptionNavCoachButton(currServiceClassNumber);
344
- const ariaDescriptionCoachServices = this._getAriaDescriptionCoachServices();
345
- return html` <button
346
- @click=${() => this._selectNavCoach(this.index)}
347
- class="${classMap({
348
- "sbb-sr-navigation__ctrl-button": true,
349
- "sbb-sr-navigation-driver-area": this.coachItemDetails.isDriverArea
350
- })}"
351
- ?disabled="${this.disable}"
352
- title="${this.showTitleInfo ? titleDescriptionNavCoachButton : nothing}"
353
- type="button"
354
- aria-describedby="nav-coach-service-descriptions-${this.index}"
355
- >
356
- ${this._getBtnInformation(currServiceClassNumber)}
357
- <span class="sbb-screen-reader-only" id="nav-coach-service-descriptions-${this.index}">
358
- ${!this.showTitleInfo ? html`<div>${titleDescriptionNavCoachButton}</div>` : nothing}
359
- ${ariaDescriptionCoachServices ? html`<div>${ariaDescriptionCoachServices}</div>` : nothing}
360
- </span>
361
- </button>`;
362
- }
363
- _getBtnInformation(serviceClassNumber) {
364
- if (this.coachItemDetails.isDriverArea) return null;
365
- return html`
366
- ${serviceClassNumber === 1 ? html`<span class="sbb-sr-navigation--first-class"></span>` : nothing}
367
- ${this.coachItemDetails.travelClass?.length > 0 || this.coachItemDetails.id ? html`<div class="sbb-sr-navigation__additional-information">
368
- ${this.coachItemDetails.id ? html`<div class="sbb-sr-navigation__item-coach-number" aria-hidden="true">
369
- ${this.coachItemDetails.id}
370
- </div>` : nothing}
371
- <div
372
- ${serviceClassNumber ?? nothing}
373
- class="sbb-sr-navigation__item-coach-travelclass"
374
- aria-hidden="true"
375
- >
376
- ${serviceClassNumber}
377
- </div>
378
- </div>` : nothing}
379
- `;
380
- }
381
- _getTitleDescriptionNavCoachButton(serviceClassNumber) {
382
- if (this.coachItemDetails.isDriverArea && !this.coachItemDetails.isLocomotive) return getI18nSeatReservation("NAVIGATE_COACH_BLOCKED", this._language.current, [this.coachItemDetails.id]);
383
- if (this.coachItemDetails.isLocomotive) return getI18nSeatReservation("COACH_LOCOMOTIVE", this._language.current);
384
- let label = getI18nSeatReservation("NAVIGATE_TO_COACH", this._language.current, [this.coachItemDetails.id]);
385
- if (serviceClassNumber) {
386
- const serviceClassTranslation = getI18nSeatReservation(serviceClassNumber === 1 ? "SERVICE_CLASS_FIRST" : "SERVICE_CLASS_SECOND", this._language.current);
387
- const serviceClassLabel = getI18nSeatReservation("NAVIGATE_TO_COACH_SERVICE_CLASS_SUB", this._language.current, [serviceClassTranslation]);
388
- label = label.concat(serviceClassLabel);
389
- }
390
- const freePlacesTxt = getI18nSeatReservation("COACH_AVAILABLE_NUMBER_OF_PLACES", this._language.current, [this.coachItemDetails.freePlaces?.seats, this.coachItemDetails.freePlaces?.bicycles]);
391
- label = label.concat(". ").concat(freePlacesTxt);
392
- return label;
393
- }
394
- _getAriaDescriptionCoachServices() {
395
- let ariaDescription = null;
396
- if (this.coachItemDetails.propertyIds?.length) {
397
- ariaDescription = getI18nSeatReservation("COACH_AVAILABLE_SERVICES", this._language.current) + ": ";
398
- ariaDescription += this.coachItemDetails.propertyIds.map((propertyId) => getI18nSeatReservation(propertyId, this._language.current)).join() + ".";
399
- }
400
- return ariaDescription;
401
- }
402
- /**
403
- * emits the index of the coach array for the main navigation.
404
- * @param coachIndex
405
- * @private
406
- */
407
- _selectNavCoach(coachIndex) {
408
- /**
409
- * @type {CustomEvent<SelectCoachEventDetails>}
410
- * Emits when a coach within the navigation was selected and returns the clicked coach nav index.
411
- */
412
- this.dispatchEvent(new CustomEvent("selectcoach", {
413
- bubbles: true,
414
- composed: true,
415
- detail: coachIndex
416
- }));
417
- }
418
- _getCoachServiceClassNumber() {
419
- return this.coachItemDetails.travelClass?.includes("FIRST") ? 1 : this.coachItemDetails.travelClass?.includes("SECOND") ? 2 : null;
420
- }
421
- };
422
- })();
423
- //#endregion
424
- export { SbbSeatReservationNavigationCoachElement as t };
425
-
426
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoLmNvbXBvbmVudC1Cd0xiaUhDRy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL3NlYXQtcmVzZXJ2YXRpb24vc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1jb2FjaC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2gvc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL3N0eWxlcycgYXMgc2JiO1xuQHVzZSAnLi4vY29tbW9uL3N0eWxlcy9zZWF0LXJlc2VydmF0aW9uLW1peGlucy5zY3NzJyBhcyBzYmItc3ItbWl4aW5zO1xuQHVzZSAnLi4vY29tbW9uL3N0eWxlcy9zZWF0LXJlc2VydmF0aW9uLWZ1bmN0aW9ucycgYXMgc2JiLXNyLWZ1bmN0aW9ucztcblxuJGRpc2FibGVkOiAnW2Rpc2FibGVkXSwgOmRpc2FibGVkJztcblxuOmhvc3Qge1xuICAvLyBmaXhlcyB0aGUga2V5Ym9hcmQgZm9jdXMgYm9yZGVyIHdoaWNoIHdhcyBjdXQgb2ZmIGR1ZSB0byBtaXNzaW5nIG5hdmlnYXRpb24gc2VydmljZSBpY29uc1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1pbi1oZWlnaHQ6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKFxuICAgIDQ0XG4gICk7IC8vIGRlZmF1bHQgYnV0dG9uIGhlaWdodCAoMzZweCkgKyAyICogNHB4IGZvY3VzIG91dGxpbmUgb2Zmc2V0XG5cbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLXRyYXZlbGNsYXNzLXNwYWNpbmc6IDEwO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tYnRuLWJvcmRlci13aWR0aC1kZWZhdWx0OiAxO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tYnRuLWJvcmRlci13aWR0aDogdmFyKFxuICAgIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1idG4tYm9yZGVyLXdpZHRoLWRlZmF1bHRcbiAgKTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWJ0bi1ib3JkZXItY29sb3I6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWdyYW5pdGUpLFxuICAgIHZhcigtLXNiYi1jb2xvci1ncmFwaGl0ZSlcbiAgKTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWJ0bi1iYWNrZ3JvdW5kLWNvbG9yOiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci13aGl0ZSksXG4gICAgdmFyKC0tc2JiLWNvbG9yLWJsYWNrKVxuICApO1xuXG4gIC8vIHNlbGVjdGVkIHN0YXRlIHZhcmlhYmxlc1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tYnRuLWJvcmRlci13aWR0aC1zZWxlY3RlZDogMjtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWJ0bi1iYWNrZ3JvdW5kLWNvbG9yLXNlbGVjdGVkOiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci1taWxrKSxcbiAgICB2YXIoLS1zYmItY29sb3ItaXJvbilcbiAgKTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWJ0bi1ib3JkZXItY29sb3Itc2VsZWN0ZWQ6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWJsYWNrKSxcbiAgICB2YXIoLS1zYmItY29sb3Itd2hpdGUpXG4gICk7XG5cbiAgLy8gZm9jdXMgc3RhdGUgdmFyaWFibGVzXG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1idG4tb3V0bGluZS13aWR0aC1mb2N1c2VkOiAxO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tYnRuLW91dGxpbmUtY29sb3ItZm9jdXNlZDogbGlnaHQtZGFyayhcbiAgICB2YXIoLS1zYmItY29sb3ItYmxhY2spLFxuICAgIHZhcigtLXNiYi1jb2xvci13aGl0ZSlcbiAgKTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWJ0bi1vdXRsaW5lLW9mZnNldC1mb2N1c2VkOiA0O1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tYnRuLWJhY2tncm91bmQtY29sb3ItZm9jdXNlZDogbGlnaHQtZGFyayhcbiAgICB2YXIoLS1zYmItY29sb3Itd2hpdGUpLFxuICAgIHZhcigtLXNiYi1jb2xvci1ibGFjaylcbiAgKTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWJ0bi1ib3JkZXItd2lkdGgtZm9jdXNlZDogdmFyKFxuICAgIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1idG4tYm9yZGVyLXdpZHRoXG4gICk7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1idG4tYm9yZGVyLWNvbG9yLWZvY3VzZWQ6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWJsYWNrKSxcbiAgICB2YXIoLS1zYmItY29sb3Itd2hpdGUpXG4gICk7XG5cbiAgLy8gaG92ZXIgc3RhdGUgdmFyaWFibGVzXG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1idG4tYm9yZGVyLXdpZHRoLWhvdmVyZWQ6IDI7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1idG4tYmFja2dyb3VuZC1jb2xvci1ob3ZlcmVkOiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci1jbG91ZCksXG4gICAgdmFyKC0tc2JiLWNvbG9yLW1pZG5pZ2h0KVxuICApO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tYnRuLWJvcmRlci1jb2xvci1ob3ZlcmVkOiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci1ibGFjayksXG4gICAgdmFyKC0tc2JiLWNvbG9yLXdoaXRlKVxuICApO1xuXG4gIC8vIGRpc2FibGUgc3RhdGUgdmFyaWFibGVzXG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1idG4tYmFja2dyb3VuZC1jb2xvci1kaXNhYmxlZDogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMik7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1idG4tYm9yZGVyLWNvbG9yLWRpc2FibGVkOiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci1wbGF0aW51bSksXG4gICAgdmFyKC0tc2JiLWNvbG9yLWlyb24pXG4gICk7XG59XG5cbi5zYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oOCk7XG4gIHdpZHRoOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg4MCk7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICAmLmZpcnN0LWNvYWNoLFxuICAmLmxhc3QtY29hY2gge1xuICAgIC5zYmItc3ItbmF2aWdhdGlvbi0tZmlyc3QtY2xhc3Mge1xuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDE4KSk7XG4gICAgfVxuICB9XG5cbiAgJi5maXJzdC1jb2FjaCB7XG4gICAgLnNiYi1zci1uYXZpZ2F0aW9uX19jdHJsLWJ1dHRvbjpub3QoLnNiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tZHJpdmVyLWFyZWEpIHtcbiAgICAgIEBpbmNsdWRlIHNiYi1zci1taXhpbnMudmlzdWFsaXplLWNvYWNoLWJvcmRlcig4LCAyLCAyLCA4KTtcbiAgICB9XG5cbiAgICAuc2JiLXNyLW5hdmlnYXRpb24tLWZpcnN0LWNsYXNzIHtcbiAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKFxuICAgICAgICB2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLXRyYXZlbGNsYXNzLXNwYWNpbmcpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICYubGFzdC1jb2FjaCB7XG4gICAgLnNiYi1zci1uYXZpZ2F0aW9uX19jdHJsLWJ1dHRvbjpub3QoLnNiYi1zci1uYXZpZ2F0aW9uLWRyaXZlci1hcmVhKSB7XG4gICAgICBAaW5jbHVkZSBzYmItc3ItbWl4aW5zLnZpc3VhbGl6ZS1jb2FjaC1ib3JkZXIoMiwgOCwgOCwgMik7XG4gICAgfVxuXG4gICAgLnNiYi1zci1uYXZpZ2F0aW9uX19hZGRpdGlvbmFsLWluZm9ybWF0aW9uIHtcbiAgICAgIHBhZGRpbmctaW5saW5lLWVuZDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oXG4gICAgICAgIHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tdHJhdmVsY2xhc3Mtc3BhY2luZylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLnNiYi1zci1uYXZpZ2F0aW9uLS1maXJzdC1jbGFzcyB7XG4gICAgICBtYXJnaW4taW5saW5lLWVuZDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oXG4gICAgICAgIHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tdHJhdmVsY2xhc3Mtc3BhY2luZylcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8vIHNhbWUgZm9yIGFsbCBzdGF0ZXNcbi5zYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b24ge1xuICBAaW5jbHVkZSBzYmIuYnV0dG9uLXJlc2V0O1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBoZWlnaHQ6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDM2KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWJ0bi1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgY3Vyc29yOiB2YXIoLS1zYmItY3Vyc29yLXBvaW50ZXIpO1xuXG4gICYuc2JiLXNyLW5hdmlnYXRpb24tZHJpdmVyLWFyZWEge1xuICAgIEBpbmNsdWRlIHNiYi1zci1taXhpbnMudmlzdWFsaXplLWNvYWNoLWJvcmRlcig4LCA4LCA4LCA4KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHNiYi1zci1taXhpbnMudmlzdWFsaXplLWNvYWNoLWJvcmRlcigyLCAyLCAyLCAyKTtcbn1cblxuLnNiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLS1mb2N1c2VkIC5zYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b24ge1xuICBAaW5jbHVkZSBzYmItc3ItbWl4aW5zLnN0eWxlLWNvYWNoLWJ5LXN0YXRlKCdmb2N1c2VkJyk7XG5cbiAgLnNiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLXRyYXZlbGNsYXNzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1tZXRhbCksIHZhcigtLXNiYi1jb2xvci1zdG9ybSkpO1xuICB9XG5cbiAgLnNiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLW51bWJlciB7XG4gICAgY29sb3I6IGxpZ2h0LWRhcmsodmFyKC0tc2JiLWNvbG9yLWFudGhyYWNpdGUpLCB2YXIoLS1zYmItY29sb3ItZ3JhcGhpdGUpKTtcbiAgfVxufVxuXG4vLyBzZWxlY3RlZCwgaS5lLiB0aGUgY29hY2ggd2l0aGluIHRoZSB0cmFpbiBpcyBzZWxlY3RlZCAoRklHTUEgU3RhdGU6U2VsZWN0ZWQpXG4uc2JiLXNyLW5hdmlnYXRpb25fX2l0ZW0tY29hY2gtLXNlbGVjdGVkIC5zYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b24ge1xuICBAaW5jbHVkZSBzYmItc3ItbWl4aW5zLnN0eWxlLWNvYWNoLWJ5LXN0YXRlKCdzZWxlY3RlZCcpO1xuXG4gIC5zYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC10cmF2ZWxjbGFzcyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItYmxhY2spLCB2YXIoLS1zYmItY29sb3Itd2hpdGUpKTtcbiAgfVxuXG4gIC5zYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC1udW1iZXIge1xuICAgIGNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ibGFjayksIHZhcigtLXNiYi1jb2xvci13aGl0ZSkpO1xuICB9XG59XG5cbi5zYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC0taG92ZXJlZCAuc2JiLXNyLW5hdmlnYXRpb25fX2N0cmwtYnV0dG9uIHtcbiAgQGluY2x1ZGUgc2JiLXNyLW1peGlucy5zdHlsZS1jb2FjaC1ieS1zdGF0ZSgnaG92ZXJlZCcpO1xufVxuXG4uc2JiLXNyLW5hdmlnYXRpb25fX2l0ZW0tY29hY2gtLXNlbGVjdGVkLnNiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLS1ob3ZlcmVkXG4gIC5zYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b24ge1xuICBAaW5jbHVkZSBzYmItc3ItbWl4aW5zLnN0eWxlLWNvYWNoLWJ5LXN0YXRlKCdzZWxlY3RlZCcpO1xuXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tYnRuLWJhY2tncm91bmQtY29sb3ItaG92ZXJlZCkgIWltcG9ydGFudDtcbn1cblxuLy8gc2VsZWN0ZWQgQU5EIGZvY3VzIChGSUdNQSBTdGF0ZTpTZWxlY3RlZCArIEZvY3VzZWQpXG4vLyBiYWNrZ3JvdW5kLWNvbG9yIGZyb20gc2VsZWN0ZWQgU3RhdGUgaGFzIG1vcmUgc3BlY2lmaWNpdHksIHNvIHdlIG5lZWQgdG8gb3ZlcnJpZGUgaXQgaGVyZSAoYWdhaW4pXG4uc2JiLXNyLW5hdmlnYXRpb25fX2l0ZW0tY29hY2gtLXNlbGVjdGVkXG4gIC5zYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b246Zm9jdXMtdmlzaWJsZTpub3QoI3skZGlzYWJsZWR9KSB7XG4gIEBpbmNsdWRlIHNiYi1zci1taXhpbnMuc3R5bGUtY29hY2gtYnktc3RhdGUoJ3NlbGVjdGVkJyk7XG59XG5cbi5zYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC0taG92ZXJlZCAuc2JiLXNyLW5hdmlnYXRpb25fX2N0cmwtYnV0dG9uIHtcbiAgQGluY2x1ZGUgc2JiLXNyLW1peGlucy5zdHlsZS1jb2FjaC1ieS1zdGF0ZSgnaG92ZXJlZCcpO1xufVxuXG4vLyBob3ZlciAoRklHTUEgU3RhdGU6aG92ZXIpXG4uc2JiLXNyLW5hdmlnYXRpb25fX2N0cmwtYnV0dG9uOmhvdmVyOm5vdCgjeyRkaXNhYmxlZH0pIHtcbiAgQGluY2x1ZGUgc2JiLXNyLW1peGlucy5zdHlsZS1jb2FjaC1ieS1zdGF0ZSgnaG92ZXJlZCcpO1xuXG4gIC5zYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC10cmF2ZWxjbGFzcyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLXNtb2tlKTtcbiAgfVxuXG4gIC5zYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC1udW1iZXIge1xuICAgIGNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1pcm9uKSwgdmFyKC0tc2JiLWNvbG9yLXNpbHZlcikpO1xuICB9XG59XG5cbi8vIGRpc2FibGVkIChGSUdNQSBTdGF0ZTpkaXNhYmxlZClcbi5zYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b246aXMoI3skZGlzYWJsZWR9KSB7XG4gIEBpbmNsdWRlIHNiYi1zci1taXhpbnMuc3R5bGUtY29hY2gtYnktc3RhdGUoJ2Rpc2FibGVkJyk7XG5cbiAgY3Vyc29yOiB1bnNldDtcbiAgcG9pbnRlci1ldmVudHM6IHVuc2V0O1xuXG4gIC5zYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC10cmF2ZWxjbGFzcyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3JhcGhpdGUpLCB2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSkpO1xuICB9XG5cbiAgLnNiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLW51bWJlciB7XG4gICAgY29sb3I6IGxpZ2h0LWRhcmsodmFyKC0tc2JiLWNvbG9yLWdyYXBoaXRlKSwgdmFyKC0tc2JiLWNvbG9yLWdyYW5pdGUpKTtcbiAgfVxufVxuXG4uc2JiLXNyLW5hdmlnYXRpb25fX2FkZGl0aW9uYWwtaW5mb3JtYXRpb24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXg6IDE7XG4gIGNvbHVtbi1nYXA6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDgpO1xuICBwYWRkaW5nLWlubGluZTogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMTYpO1xuICBmb250LWZhbWlseTogdmFyKC0tc2JiLXR5cG8tZm9udC1mYW1pbHkpO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSk7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIGNvbG9yOiB2YXIoLS1zYmItY29sb3ItbWlsayk7XG4gIH1cbn1cblxuLnNiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLW51bWJlciB7XG4gIGNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSwgdmFyKC0tc2JiLWNvbG9yLWdyYXBoaXRlKSk7XG5cbiAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgIGNvbG9yOiBsaWdodC1kYXJrKHZhcigtLXNiYi1jb2xvci1ncmFuaXRlKSwgdmFyKC0tc2JiLWNvbG9yLWdyYXBoaXRlKSk7XG4gIH1cblxuICAuc2JiLXNyLW5hdmlnYXRpb25fX2l0ZW0tY29hY2gtdHJhdmVsY2xhc3Mge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTItaW52ZXJ0ZWQpO1xuICB9XG59XG5cbi8vIGdyYXBoaWNhbCBvcmllbnRhdGlvbiBvZiBGSVJTVCBjbGFzc1xuLnNiYi1zci1uYXZpZ2F0aW9uLS1maXJzdC1jbGFzcyB7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg4KSk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgaW5zZXQtYmxvY2stc3RhcnQ6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDMpO1xuICBpbnNldC1pbmxpbmUtc3RhcnQ6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDQpO1xuXG4gIC8vIHVzZSBib3JkZXIgaW5zdGVhZCBvZiBoZWlnaHQgdG8gc3VwcG9ydCBmb3JjZS1jb2xvciBtb2Rlc1xuICBib3JkZXI6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDEpIHNvbGlkIHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItYm9yZGVyLXJhZGl1cy0xeCk7XG4gIG1hcmdpbjogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLWNvbG9yLWxlbW9uKTtcbn1cblxuLy8gdGV4dHVhbCBvcmllbnRhdGlvbiBvZiB0cmF2ZWwgY2xhc3Ncbi5zYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC10cmF2ZWxjbGFzcyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtaW4taGVpZ2h0OiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgyMCk7XG4gIG1pbi13aWR0aDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMjApO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zYmItYm9yZGVyLXJhZGl1cy0xeCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3ItZ3Jhbml0ZSksIHZhcigtLXNiYi1jb2xvci1ncmFwaGl0ZSkpO1xuICBjb2xvcjogbGlnaHQtZGFyayh2YXIoLS1zYmItY29sb3Itd2hpdGUpLCB2YXIoLS1zYmItY29sb3ItYmxhY2spKTtcblxuICBAaW5jbHVkZSBzYmIuaWYtZm9yY2VkLWNvbG9ycyB7XG4gICAgYm9yZGVyOiB2YXIoLS1zYmItYm9yZGVyLXdpZHRoLTF4KSBzb2xpZDtcbiAgfVxufVxuXG4vLyAjIyMjIyMjIyMjIyMjIyMjIFZFUlRJQ0FMIE1PREUgc2V0dGluZ3MgIyMjIyMjIyMjIyMjIyMjI1xuOmhvc3QoW3ZlcnRpY2FsXSkgLnNiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoIHtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcblxuICAuc2JiLXNyLW5hdmlnYXRpb25fX2N0cmwtYnV0dG9uIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XG4gICAgaGVpZ2h0OiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg4MCk7XG4gICAgbWluLXdpZHRoOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgzNik7XG4gIH1cblxuICAuc2JiLXNyLW5hdmlnYXRpb25fX2FkZGl0aW9uYWwtaW5mb3JtYXRpb24ge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgICBwYWRkaW5nLWJsb2NrOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgxNik7XG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IHVuc2V0O1xuICAgIHBhZGRpbmctaW5saW5lLWVuZDogdW5zZXQ7XG4gIH1cblxuICAuc2JiLXNyLW5hdmlnYXRpb24tLWZpcnN0LWNsYXNzIHtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDgpKTtcbiAgICB3aWR0aDogaW5pdGlhbDtcbiAgICBpbnNldC1pbmxpbmUtZW5kOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgzKTtcbiAgICBpbnNldC1ibG9jay1zdGFydDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNCk7XG4gICAgaW5zZXQtaW5saW5lLXN0YXJ0OiBpbml0aWFsO1xuICB9XG5cbiAgJi5maXJzdC1jb2FjaCxcbiAgJi5sYXN0LWNvYWNoIHtcbiAgICAuc2JiLXNyLW5hdmlnYXRpb24tLWZpcnN0LWNsYXNzIHtcbiAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMTgpKTtcbiAgICB9XG4gIH1cblxuICAvLyBoYW5kbGUgYm9yZGVyLXJhZGl1c1xuICAmLmZpcnN0LWNvYWNoOm5vdCgubGFzdC1jb2FjaCkge1xuICAgIC5zYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b246bm90KC5zYmItc3ItbmF2aWdhdGlvbi1kcml2ZXItYXJlYSkge1xuICAgICAgQGluY2x1ZGUgc2JiLXNyLW1peGlucy52aXN1YWxpemUtY29hY2gtYm9yZGVyKDgsIDgsIDIsIDIpO1xuICAgIH1cblxuICAgIC5zYmItc3ItbmF2aWdhdGlvbi0tZmlyc3QtY2xhc3Mge1xuICAgICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbShcbiAgICAgICAgdmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi10cmF2ZWxjbGFzcy1zcGFjaW5nKVxuICAgICAgKTtcbiAgICAgIG1hcmdpbi1pbmxpbmUtc3RhcnQ6IGluaXRpYWw7XG4gICAgfVxuICB9XG5cbiAgJi5sYXN0LWNvYWNoOm5vdCguZmlyc3QtY29hY2gpIHtcbiAgICAuc2JiLXNyLW5hdmlnYXRpb25fX2N0cmwtYnV0dG9uOm5vdCguc2JiLXNyLW5hdmlnYXRpb24tZHJpdmVyLWFyZWEpIHtcbiAgICAgIEBpbmNsdWRlIHNiYi1zci1taXhpbnMudmlzdWFsaXplLWNvYWNoLWJvcmRlcigyLCAyLCA4LCA4KTtcbiAgICB9XG5cbiAgICAuc2JiLXNyLW5hdmlnYXRpb24tLWZpcnN0LWNsYXNzIHtcbiAgICAgIG1hcmdpbi1ibG9jay1lbmQ6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKFxuICAgICAgICB2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLXRyYXZlbGNsYXNzLXNwYWNpbmcpXG4gICAgICApO1xuICAgICAgbWFyZ2luLWlubGluZS1lbmQ6IGluaXRpYWw7XG4gICAgfVxuICB9XG5cbiAgLy8gRHJpdmVyIGFyZWFcbiAgLnNiYi1zci1uYXZpZ2F0aW9uLWRyaXZlci1hcmVhIHtcbiAgICBoZWlnaHQ6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDgwKTtcbiAgICBtaW4td2lkdGg6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDM2KTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgZm9yY2VUeXBlLFxuICBTYmJFbGVtZW50LFxuICB0eXBlIFNiYkVsZW1lbnRUeXBlLFxuICBTYmJMYW5ndWFnZUNvbnRyb2xsZXIsXG4gIHNjcmVlblJlYWRlck9ubHlTdHlsZXMsXG59IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUuanMnO1xuaW1wb3J0IHtcbiAgdHlwZSBDU1NSZXN1bHRHcm91cCxcbiAgaHRtbCxcbiAgbm90aGluZyxcbiAgdHlwZSBQcm9wZXJ0eVZhbHVlcyxcbiAgdHlwZSBUZW1wbGF0ZVJlc3VsdCxcbiAgdW5zYWZlQ1NTLFxufSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcC5qcyc7XG5cbmltcG9ydCB7IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24gfSBmcm9tICcuLi9jb21tb24vdHJhbnNsYXRpb25zLnRzJztcbmltcG9ydCB0eXBlIHsgQ29hY2hJdGVtRGV0YWlscyB9IGZyb20gJy4uL2NvbW1vbi90eXBlcy50cyc7XG5pbXBvcnQgeyBTYmJTZWF0UmVzZXJ2YXRpb25OYXZpZ2F0aW9uU2VydmljZXNFbGVtZW50IH0gZnJvbSAnLi4vc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLXNlcnZpY2VzL3NlYXQtcmVzZXJ2YXRpb24tbmF2aWdhdGlvbi1zZXJ2aWNlcy5jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2guc2Nzcz9pbmxpbmUnO1xuXG5leHBvcnQgdHlwZSBTZWxlY3RDb2FjaEV2ZW50RGV0YWlscyA9IG51bWJlcjtcblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCB3aWxsIGRpc3BsYXkgdGhlIG5hdmlnYXRpb24gY29hY2ggaXRlbSBmb3IgU2VhdCByZXNlcnZhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvbk5hdmlnYXRpb25Db2FjaEVsZW1lbnQgZXh0ZW5kcyBTYmJFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2gnO1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGVsZW1lbnREZXBlbmRlbmNpZXM6IFNiYkVsZW1lbnRUeXBlW10gPSBbXG4gICAgU2JiU2VhdFJlc2VydmF0aW9uTmF2aWdhdGlvblNlcnZpY2VzRWxlbWVudCxcbiAgXTtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW3NjcmVlblJlYWRlck9ubHlTdHlsZXMsIHVuc2FmZUNTUyhzdHlsZSldO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IGV2ZW50cyA9IHtcbiAgICBzZWxlY3Rjb2FjaDogJ3NlbGVjdGNvYWNoJyxcbiAgICBmb2N1c2NvYWNoOiAnZm9jdXNjb2FjaCcsXG4gIH0gYXMgY29uc3Q7XG5cbiAgLyoqIFNlbGVjdCBjb2FjaCBwcm9wZXJ0eSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRm9jdXMgY29hY2ggcHJvcGVydHkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogSG92ZXIgY29hY2ggcHJvcGVydHkgKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IEJvb2xlYW4gfSlcbiAgcHVibGljIGFjY2Vzc29yIGhvdmVyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogTmF0aXZlIGZvY3VzIGZvciB0aGlzIG5hdmlnYXRpb24gY29hY2ggaXMgYWxzbyBzZXQgd2hlbiB0aGUgZm9jdXNlZCBwcm9wZXJ0eSBpcyBjaGFuZ2VkICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBuYXRpdmVGb2N1c0FjdGl2ZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgYWNjZXNzb3IgaW5kZXg6IG51bWJlciA9IDA7XG5cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY29hY2gtaXRlbS1kZXRhaWxzJywgdHlwZTogT2JqZWN0IH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBjb2FjaEl0ZW1EZXRhaWxzOiBDb2FjaEl0ZW1EZXRhaWxzID0gPENvYWNoSXRlbURldGFpbHM+e307XG5cbiAgLyoqIERpc2FibGUgdGhlIGNvYWNoIG5hdmlnYXRpb24gKi9cbiAgQGZvcmNlVHlwZSgpXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Rpc2FibGUnLCB0eXBlOiBCb29sZWFuIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBkaXNhYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIElmIHRoZSBjb2FjaCBuYXZpZ2F0aW9uIHNob3VsZCBiZSBkaXNwbGF5ZWQgdmVydGljYWxseSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiwgcmVmbGVjdDogdHJ1ZSwgdXNlRGVmYXVsdDogdHJ1ZSB9KVxuICBwdWJsaWMgYWNjZXNzb3IgdmVydGljYWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRGlzYWJsZSB0aGUgbW91c2Ugb3ZlciB0aXRsZSBpbmZvcm1hdGlvbiAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3Igc2hvd1RpdGxlSW5mbzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ3NlbGVjdGVkJykpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkTmF2QnV0dG9uRWxlbWVudCA9IHRoaXMuc2hhZG93Um9vdD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJy5zYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b24nLFxuICAgICAgKSBhcyBIVE1MQnV0dG9uRWxlbWVudDtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkICYmIHNlbGVjdGVkTmF2QnV0dG9uRWxlbWVudCkge1xuICAgICAgICBpZiAodGhpcy5uYXRpdmVGb2N1c0FjdGl2ZSkge1xuICAgICAgICAgIHNlbGVjdGVkTmF2QnV0dG9uRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIC8qKiBFbWl0cyB3aGVuIGEgbmF2IGNvYWNoIGhhcyB0aGUgZm9jdXMgKi9cbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnZm9jdXNjb2FjaCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ2ZvY3VzZWQnKSAmJiB0aGlzLmZvY3VzZWQpIHtcbiAgICAgIGNvbnN0IGZvY3VzZWROYXZCdXR0b25FbGVtZW50ID0gdGhpcy5zaGFkb3dSb290Py5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnLnNiYi1zci1uYXZpZ2F0aW9uX19jdHJsLWJ1dHRvbicsXG4gICAgICApIGFzIEhUTUxCdXR0b25FbGVtZW50O1xuXG4gICAgICBpZiAoZm9jdXNlZE5hdkJ1dHRvbkVsZW1lbnQgJiYgdGhpcy5uYXRpdmVGb2N1c0FjdGl2ZSkge1xuICAgICAgICBmb2N1c2VkTmF2QnV0dG9uRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgYSBsaXN0IG9mIHNlcnZpY2UgaWNvbnMgcHJvdmlkZWQgYnkgYSBjYWxsZXJcbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7XG4gICAgICAgICAgJ3NiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoJzogdHJ1ZSxcbiAgICAgICAgICAnbGFzdC1jb2FjaCc6IHRoaXMuY29hY2hJdGVtRGV0YWlscy5kcml2ZXJBcmVhU2lkZT8ucmlnaHQgfHwgZmFsc2UsXG4gICAgICAgICAgJ2ZpcnN0LWNvYWNoJzogdGhpcy5jb2FjaEl0ZW1EZXRhaWxzLmRyaXZlckFyZWFTaWRlPy5sZWZ0IHx8IGZhbHNlLFxuICAgICAgICAgICdzYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC0tc2VsZWN0ZWQnOiB0aGlzLnNlbGVjdGVkLFxuICAgICAgICAgICdzYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC0tZm9jdXNlZCc6IHRoaXMuZm9jdXNlZCxcbiAgICAgICAgICAnc2JiLXNyLW5hdmlnYXRpb25fX2l0ZW0tY29hY2gtLWhvdmVyZWQnOiB0aGlzLmhvdmVyZWQsXG4gICAgICAgIH0pfVwiXG4gICAgICA+XG4gICAgICAgICR7dGhpcy5fZ2V0TmF2aWdhdGlvbkJ1dHRvbigpfVxuICAgICAgICAke3RoaXMuY29hY2hJdGVtRGV0YWlscy5wcm9wZXJ0eUlkcz8ubGVuZ3RoXG4gICAgICAgICAgPyBodG1sYDxzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLXNlcnZpY2VzXG4gICAgICAgICAgICAgID92ZXJ0aWNhbD1cIiR7dGhpcy52ZXJ0aWNhbH1cIlxuICAgICAgICAgICAgICAucHJvcGVydHlJZHM9XCIke3RoaXMuY29hY2hJdGVtRGV0YWlscy5wcm9wZXJ0eUlkc31cIlxuICAgICAgICAgICAgICA/c2hvd1RpdGxlSW5mbz1cIiR7dGhpcy5zaG93VGl0bGVJbmZvfVwiXG4gICAgICAgICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLXNlcnZpY2VzPmBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0TmF2aWdhdGlvbkJ1dHRvbigpOiBUZW1wbGF0ZVJlc3VsdCB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJTZXJ2aWNlQ2xhc3NOdW1iZXIgPSB0aGlzLl9nZXRDb2FjaFNlcnZpY2VDbGFzc051bWJlcigpO1xuICAgIGNvbnN0IHRpdGxlRGVzY3JpcHRpb25OYXZDb2FjaEJ1dHRvbiA9XG4gICAgICB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTmF2Q29hY2hCdXR0b24oY3VyclNlcnZpY2VDbGFzc051bWJlcik7XG4gICAgY29uc3QgYXJpYURlc2NyaXB0aW9uQ29hY2hTZXJ2aWNlcyA9IHRoaXMuX2dldEFyaWFEZXNjcmlwdGlvbkNvYWNoU2VydmljZXMoKTtcblxuICAgIHJldHVybiBodG1sYCA8YnV0dG9uXG4gICAgICBAY2xpY2s9JHsoKSA9PiB0aGlzLl9zZWxlY3ROYXZDb2FjaCh0aGlzLmluZGV4KX1cbiAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7XG4gICAgICAgICdzYmItc3ItbmF2aWdhdGlvbl9fY3RybC1idXR0b24nOiB0cnVlLFxuICAgICAgICAnc2JiLXNyLW5hdmlnYXRpb24tZHJpdmVyLWFyZWEnOiB0aGlzLmNvYWNoSXRlbURldGFpbHMuaXNEcml2ZXJBcmVhLFxuICAgICAgfSl9XCJcbiAgICAgID9kaXNhYmxlZD1cIiR7dGhpcy5kaXNhYmxlfVwiXG4gICAgICB0aXRsZT1cIiR7dGhpcy5zaG93VGl0bGVJbmZvID8gdGl0bGVEZXNjcmlwdGlvbk5hdkNvYWNoQnV0dG9uIDogbm90aGluZ31cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwibmF2LWNvYWNoLXNlcnZpY2UtZGVzY3JpcHRpb25zLSR7dGhpcy5pbmRleH1cIlxuICAgID5cbiAgICAgICR7dGhpcy5fZ2V0QnRuSW5mb3JtYXRpb24oY3VyclNlcnZpY2VDbGFzc051bWJlcil9XG4gICAgICA8c3BhbiBjbGFzcz1cInNiYi1zY3JlZW4tcmVhZGVyLW9ubHlcIiBpZD1cIm5hdi1jb2FjaC1zZXJ2aWNlLWRlc2NyaXB0aW9ucy0ke3RoaXMuaW5kZXh9XCI+XG4gICAgICAgICR7IXRoaXMuc2hvd1RpdGxlSW5mbyA/IGh0bWxgPGRpdj4ke3RpdGxlRGVzY3JpcHRpb25OYXZDb2FjaEJ1dHRvbn08L2Rpdj5gIDogbm90aGluZ31cbiAgICAgICAgJHthcmlhRGVzY3JpcHRpb25Db2FjaFNlcnZpY2VzID8gaHRtbGA8ZGl2PiR7YXJpYURlc2NyaXB0aW9uQ29hY2hTZXJ2aWNlc308L2Rpdj5gIDogbm90aGluZ31cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2J1dHRvbj5gO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0QnRuSW5mb3JtYXRpb24oc2VydmljZUNsYXNzTnVtYmVyOiBudW1iZXIgfCBudWxsKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICBpZiAodGhpcy5jb2FjaEl0ZW1EZXRhaWxzLmlzRHJpdmVyQXJlYSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICAke3NlcnZpY2VDbGFzc051bWJlciA9PT0gMVxuICAgICAgICA/IGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbi0tZmlyc3QtY2xhc3NcIj48L3NwYW4+YFxuICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAke3RoaXMuY29hY2hJdGVtRGV0YWlscy50cmF2ZWxDbGFzcz8ubGVuZ3RoID4gMCB8fCB0aGlzLmNvYWNoSXRlbURldGFpbHMuaWRcbiAgICAgICAgPyBodG1sYDxkaXYgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbl9fYWRkaXRpb25hbC1pbmZvcm1hdGlvblwiPlxuICAgICAgICAgICAgJHt0aGlzLmNvYWNoSXRlbURldGFpbHMuaWRcbiAgICAgICAgICAgICAgPyBodG1sYDxkaXYgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbl9faXRlbS1jb2FjaC1udW1iZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICR7dGhpcy5jb2FjaEl0ZW1EZXRhaWxzLmlkfVxuICAgICAgICAgICAgICAgIDwvZGl2PmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAke3NlcnZpY2VDbGFzc051bWJlciA/PyBub3RoaW5nfVxuICAgICAgICAgICAgICBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uX19pdGVtLWNvYWNoLXRyYXZlbGNsYXNzXCJcbiAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgJHtzZXJ2aWNlQ2xhc3NOdW1iZXJ9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5gXG4gICAgICAgIDogbm90aGluZ31cbiAgICBgO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VGl0bGVEZXNjcmlwdGlvbk5hdkNvYWNoQnV0dG9uKHNlcnZpY2VDbGFzc051bWJlcjogbnVtYmVyIHwgbnVsbCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY29hY2hJdGVtRGV0YWlscy5pc0RyaXZlckFyZWEgJiYgIXRoaXMuY29hY2hJdGVtRGV0YWlscy5pc0xvY29tb3RpdmUpIHtcbiAgICAgIHJldHVybiBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdOQVZJR0FURV9DT0FDSF9CTE9DS0VEJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW1xuICAgICAgICB0aGlzLmNvYWNoSXRlbURldGFpbHMuaWQsXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb2FjaEl0ZW1EZXRhaWxzLmlzTG9jb21vdGl2ZSkge1xuICAgICAgcmV0dXJuIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0xPQ09NT1RJVkUnLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBsZXQgbGFiZWwgPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdOQVZJR0FURV9UT19DT0FDSCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsIFtcbiAgICAgIHRoaXMuY29hY2hJdGVtRGV0YWlscy5pZCxcbiAgICBdKTtcblxuICAgIC8vSWYgc2VydmljZSBjbGFzcyBleGlzdCwgdGhlbiBleHBhbmQgbGFiZWwgd2l0aCBzZXJ2aWNlIGNsYXNzIHRyYW5zbGF0aW9uXG4gICAgaWYgKHNlcnZpY2VDbGFzc051bWJlcikge1xuICAgICAgY29uc3Qgc2VydmljZUNsYXNzVHJhbnNsYXRpb25LZXkgPVxuICAgICAgICBzZXJ2aWNlQ2xhc3NOdW1iZXIgPT09IDEgPyAnU0VSVklDRV9DTEFTU19GSVJTVCcgOiAnU0VSVklDRV9DTEFTU19TRUNPTkQnO1xuICAgICAgY29uc3Qgc2VydmljZUNsYXNzVHJhbnNsYXRpb24gPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICBzZXJ2aWNlQ2xhc3NUcmFuc2xhdGlvbktleSxcbiAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgICk7XG4gICAgICBjb25zdCBzZXJ2aWNlQ2xhc3NMYWJlbCA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgICdOQVZJR0FURV9UT19DT0FDSF9TRVJWSUNFX0NMQVNTX1NVQicsXG4gICAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgICAgIFtzZXJ2aWNlQ2xhc3NUcmFuc2xhdGlvbl0sXG4gICAgICApO1xuICAgICAgbGFiZWwgPSBsYWJlbC5jb25jYXQoc2VydmljZUNsYXNzTGFiZWwpO1xuICAgIH1cblxuICAgIC8vIEV4cGFuZHMgdGhlIG51bWJlciBvZiBhdmFpbGFibGUgc2VhdHMgYW5kIGJpY3ljbGUgc3BhY2VzIGFzIGluZm9cbiAgICBjb25zdCBmcmVlUGxhY2VzVHh0ID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihcbiAgICAgICdDT0FDSF9BVkFJTEFCTEVfTlVNQkVSX09GX1BMQUNFUycsXG4gICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgW3RoaXMuY29hY2hJdGVtRGV0YWlscy5mcmVlUGxhY2VzPy5zZWF0cywgdGhpcy5jb2FjaEl0ZW1EZXRhaWxzLmZyZWVQbGFjZXM/LmJpY3ljbGVzXSxcbiAgICApO1xuICAgIGxhYmVsID0gbGFiZWwuY29uY2F0KCcuICcpLmNvbmNhdChmcmVlUGxhY2VzVHh0KTtcbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICBwcml2YXRlIF9nZXRBcmlhRGVzY3JpcHRpb25Db2FjaFNlcnZpY2VzKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGxldCBhcmlhRGVzY3JpcHRpb24gPSBudWxsO1xuICAgIGlmICh0aGlzLmNvYWNoSXRlbURldGFpbHMucHJvcGVydHlJZHM/Lmxlbmd0aCkge1xuICAgICAgYXJpYURlc2NyaXB0aW9uID1cbiAgICAgICAgZ2V0STE4blNlYXRSZXNlcnZhdGlvbignQ09BQ0hfQVZBSUxBQkxFX1NFUlZJQ0VTJywgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkgKyAnOiAnO1xuICAgICAgYXJpYURlc2NyaXB0aW9uICs9XG4gICAgICAgIHRoaXMuY29hY2hJdGVtRGV0YWlscy5wcm9wZXJ0eUlkc1xuICAgICAgICAgIC5tYXAoKHByb3BlcnR5SWQpID0+IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24ocHJvcGVydHlJZCwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCkpXG4gICAgICAgICAgLmpvaW4oKSArICcuJztcbiAgICB9XG4gICAgcmV0dXJuIGFyaWFEZXNjcmlwdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBlbWl0cyB0aGUgaW5kZXggb2YgdGhlIGNvYWNoIGFycmF5IGZvciB0aGUgbWFpbiBuYXZpZ2F0aW9uLlxuICAgKiBAcGFyYW0gY29hY2hJbmRleFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfc2VsZWN0TmF2Q29hY2goY29hY2hJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgLyoqXG4gICAgICogQHR5cGUge0N1c3RvbUV2ZW50PFNlbGVjdENvYWNoRXZlbnREZXRhaWxzPn1cbiAgICAgKiBFbWl0cyB3aGVuIGEgY29hY2ggd2l0aGluIHRoZSBuYXZpZ2F0aW9uIHdhcyBzZWxlY3RlZCBhbmQgcmV0dXJucyB0aGUgY2xpY2tlZCBjb2FjaCBuYXYgaW5kZXguXG4gICAgICovXG4gICAgdGhpcy5kaXNwYXRjaEV2ZW50KFxuICAgICAgbmV3IEN1c3RvbUV2ZW50PFNlbGVjdENvYWNoRXZlbnREZXRhaWxzPignc2VsZWN0Y29hY2gnLCB7XG4gICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgICBkZXRhaWw6IGNvYWNoSW5kZXgsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29hY2hTZXJ2aWNlQ2xhc3NOdW1iZXIoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuY29hY2hJdGVtRGV0YWlscy50cmF2ZWxDbGFzcz8uaW5jbHVkZXMoJ0ZJUlNUJylcbiAgICAgID8gMVxuICAgICAgOiB0aGlzLmNvYWNoSXRlbURldGFpbHMudHJhdmVsQ2xhc3M/LmluY2x1ZGVzKCdTRUNPTkQnKVxuICAgICAgICA/IDJcbiAgICAgICAgOiBudWxsO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoJzogU2JiU2VhdFJlc2VydmF0aW9uTmF2aWdhdGlvbkNvYWNoRWxlbWVudDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztJQzZC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