@sbb-esta/lyne-elements 1.3.0 → 1.4.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 (221) hide show
  1. package/autocomplete/autocomplete-base-element.d.ts +93 -0
  2. package/autocomplete/autocomplete-base-element.d.ts.map +1 -0
  3. package/autocomplete/autocomplete.d.ts +13 -86
  4. package/autocomplete/autocomplete.d.ts.map +1 -1
  5. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +45 -0
  6. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -0
  7. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +33 -0
  8. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -0
  9. package/autocomplete-grid/autocomplete-grid-button.d.ts +2 -0
  10. package/autocomplete-grid/autocomplete-grid-button.d.ts.map +1 -0
  11. package/autocomplete-grid/autocomplete-grid-button.js +66 -0
  12. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts +17 -0
  13. package/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts.map +1 -0
  14. package/autocomplete-grid/autocomplete-grid-cell.d.ts +2 -0
  15. package/autocomplete-grid/autocomplete-grid-cell.d.ts.map +1 -0
  16. package/autocomplete-grid/autocomplete-grid-cell.js +28 -0
  17. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +21 -0
  18. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -0
  19. package/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts +2 -0
  20. package/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts.map +1 -0
  21. package/autocomplete-grid/autocomplete-grid-optgroup.d.ts +2 -0
  22. package/autocomplete-grid/autocomplete-grid-optgroup.d.ts.map +1 -0
  23. package/autocomplete-grid/autocomplete-grid-optgroup.js +37 -0
  24. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +40 -0
  25. package/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -0
  26. package/autocomplete-grid/autocomplete-grid-option.d.ts +2 -0
  27. package/autocomplete-grid/autocomplete-grid-option.d.ts.map +1 -0
  28. package/autocomplete-grid/autocomplete-grid-option.js +67 -0
  29. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts +18 -0
  30. package/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts.map +1 -0
  31. package/autocomplete-grid/autocomplete-grid-row.d.ts +2 -0
  32. package/autocomplete-grid/autocomplete-grid-row.d.ts.map +1 -0
  33. package/autocomplete-grid/autocomplete-grid-row.js +31 -0
  34. package/autocomplete-grid/autocomplete-grid.d.ts +2 -0
  35. package/autocomplete-grid/autocomplete-grid.d.ts.map +1 -0
  36. package/autocomplete-grid/autocomplete-grid.js +139 -0
  37. package/autocomplete-grid.d.ts +7 -0
  38. package/autocomplete-grid.d.ts.map +1 -0
  39. package/autocomplete-grid.js +6 -0
  40. package/autocomplete.d.ts +1 -0
  41. package/autocomplete.d.ts.map +1 -1
  42. package/autocomplete.js +162 -145
  43. package/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  44. package/button/mini-button/mini-button-base-element.d.ts +9 -0
  45. package/button/mini-button/mini-button-base-element.d.ts.map +1 -0
  46. package/button/mini-button/mini-button.d.ts +3 -4
  47. package/button/mini-button/mini-button.d.ts.map +1 -1
  48. package/button/mini-button.d.ts +1 -0
  49. package/button/mini-button.d.ts.map +1 -1
  50. package/button/mini-button.js +23 -13
  51. package/checkbox/checkbox.js +18 -18
  52. package/checkbox/common.js +13 -13
  53. package/container/container.js +3 -3
  54. package/core/mixins/form-associated-mixin.d.ts.map +1 -1
  55. package/core/mixins.js +3 -1
  56. package/core/overlay/overlay-trigger-attributes.d.ts +1 -1
  57. package/core/overlay/overlay-trigger-attributes.d.ts.map +1 -1
  58. package/core/overlay.js +2 -2
  59. package/core/styles/core.scss +1 -0
  60. package/core/styles/mixins/buttons.scss +13 -8
  61. package/core/styles/mixins/helpers.scss +1 -0
  62. package/core/styles/mixins/pearl-chain-bullet.scss +1 -1
  63. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables.scss +1 -0
  64. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +2 -1
  65. package/core.css +3 -1
  66. package/custom-elements.json +13897 -9149
  67. package/datepicker/datepicker-next-day.js +12 -12
  68. package/datepicker/datepicker-previous-day.js +1 -1
  69. package/development/autocomplete/autocomplete-base-element.d.ts +93 -0
  70. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -0
  71. package/development/autocomplete/autocomplete.d.ts +13 -86
  72. package/development/autocomplete/autocomplete.d.ts.map +1 -1
  73. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts +45 -0
  74. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.d.ts.map +1 -0
  75. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts +33 -0
  76. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -0
  77. package/development/autocomplete-grid/autocomplete-grid-button.d.ts +2 -0
  78. package/development/autocomplete-grid/autocomplete-grid-button.d.ts.map +1 -0
  79. package/development/autocomplete-grid/autocomplete-grid-button.js +224 -0
  80. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts +17 -0
  81. package/development/autocomplete-grid/autocomplete-grid-cell/autocomplete-grid-cell.d.ts.map +1 -0
  82. package/development/autocomplete-grid/autocomplete-grid-cell.d.ts +2 -0
  83. package/development/autocomplete-grid/autocomplete-grid-cell.d.ts.map +1 -0
  84. package/development/autocomplete-grid/autocomplete-grid-cell.js +67 -0
  85. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +21 -0
  86. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -0
  87. package/development/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts +2 -0
  88. package/development/autocomplete-grid/autocomplete-grid-optgroup/index.d.ts.map +1 -0
  89. package/development/autocomplete-grid/autocomplete-grid-optgroup.d.ts +2 -0
  90. package/development/autocomplete-grid/autocomplete-grid-optgroup.d.ts.map +1 -0
  91. package/development/autocomplete-grid/autocomplete-grid-optgroup.js +45 -0
  92. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts +40 -0
  93. package/development/autocomplete-grid/autocomplete-grid-option/autocomplete-grid-option.d.ts.map +1 -0
  94. package/development/autocomplete-grid/autocomplete-grid-option.d.ts +2 -0
  95. package/development/autocomplete-grid/autocomplete-grid-option.d.ts.map +1 -0
  96. package/development/autocomplete-grid/autocomplete-grid-option.js +174 -0
  97. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts +18 -0
  98. package/development/autocomplete-grid/autocomplete-grid-row/autocomplete-grid-row.d.ts.map +1 -0
  99. package/development/autocomplete-grid/autocomplete-grid-row.d.ts +2 -0
  100. package/development/autocomplete-grid/autocomplete-grid-row.d.ts.map +1 -0
  101. package/development/autocomplete-grid/autocomplete-grid-row.js +143 -0
  102. package/development/autocomplete-grid/autocomplete-grid.d.ts +2 -0
  103. package/development/autocomplete-grid/autocomplete-grid.d.ts.map +1 -0
  104. package/development/autocomplete-grid/autocomplete-grid.js +185 -0
  105. package/development/autocomplete-grid.d.ts +7 -0
  106. package/development/autocomplete-grid.d.ts.map +1 -0
  107. package/development/autocomplete-grid.js +7 -0
  108. package/development/autocomplete.d.ts +1 -0
  109. package/development/autocomplete.d.ts.map +1 -1
  110. package/development/autocomplete.js +168 -143
  111. package/development/breadcrumb/breadcrumb-group/breadcrumb-group.d.ts.map +1 -1
  112. package/development/breadcrumb/breadcrumb-group.js +1 -1
  113. package/development/button/mini-button/mini-button-base-element.d.ts +9 -0
  114. package/development/button/mini-button/mini-button-base-element.d.ts.map +1 -0
  115. package/development/button/mini-button/mini-button.d.ts +3 -4
  116. package/development/button/mini-button/mini-button.d.ts.map +1 -1
  117. package/development/button/mini-button.d.ts +1 -0
  118. package/development/button/mini-button.d.ts.map +1 -1
  119. package/development/button/mini-button.js +32 -16
  120. package/development/checkbox/checkbox.js +7 -1
  121. package/development/checkbox/common.js +1 -3
  122. package/development/container/container.js +2 -1
  123. package/development/core/mixins/form-associated-mixin.d.ts.map +1 -1
  124. package/development/core/mixins.js +4 -2
  125. package/development/core/overlay/overlay-trigger-attributes.d.ts +1 -1
  126. package/development/core/overlay/overlay-trigger-attributes.d.ts.map +1 -1
  127. package/development/core/overlay.js +3 -3
  128. package/development/datepicker/datepicker-next-day.js +8 -7
  129. package/development/datepicker/datepicker-previous-day.js +8 -7
  130. package/development/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  131. package/development/form-field/form-field-clear.js +8 -7
  132. package/development/form-field/form-field.js +3 -3
  133. package/development/icon/icon-base.d.ts.map +1 -1
  134. package/development/icon/icon.d.ts.map +1 -1
  135. package/development/icon.js +1 -1
  136. package/development/image/image.d.ts +1 -0
  137. package/development/image/image.d.ts.map +1 -1
  138. package/development/image.js +10 -4
  139. package/development/map-container.js +12 -14
  140. package/development/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  141. package/development/navigation/navigation-marker.js +1 -1
  142. package/development/option/optgroup/optgroup-base-element.d.ts +28 -0
  143. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -0
  144. package/development/option/optgroup/optgroup.d.ts +7 -20
  145. package/development/option/optgroup/optgroup.d.ts.map +1 -1
  146. package/development/option/optgroup.d.ts +1 -0
  147. package/development/option/optgroup.d.ts.map +1 -1
  148. package/development/option/optgroup.js +74 -49
  149. package/development/option/option/option-base-element.d.ts +69 -0
  150. package/development/option/option/option-base-element.d.ts.map +1 -0
  151. package/development/option/option/option.d.ts +14 -57
  152. package/development/option/option/option.d.ts.map +1 -1
  153. package/development/option/option.d.ts +1 -0
  154. package/development/option/option.d.ts.map +1 -1
  155. package/development/option/option.js +267 -220
  156. package/development/radio-button/common/radio-button-common.d.ts +1 -1
  157. package/development/radio-button/common/radio-button-common.d.ts.map +1 -1
  158. package/development/radio-button/common.js +13 -12
  159. package/development/radio-button/radio-button/radio-button.d.ts +7 -0
  160. package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
  161. package/development/radio-button/radio-button-group/radio-button-group.d.ts +1 -1
  162. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  163. package/development/radio-button/radio-button-group.js +1 -1
  164. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +7 -0
  165. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  166. package/development/radio-button/radio-button-panel.js +16 -2
  167. package/development/radio-button/radio-button.js +16 -2
  168. package/development/skiplink-list/skiplink-list.d.ts +1 -0
  169. package/development/skiplink-list/skiplink-list.d.ts.map +1 -1
  170. package/development/skiplink-list.js +1 -1
  171. package/development/tabs/tab-group.js +2 -9
  172. package/development/tabs/tab.js +10 -2
  173. package/development/tag/tag-group.js +1 -1
  174. package/development/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  175. package/development/timetable-occupancy-icon.js +3 -6
  176. package/development/toggle/toggle.js +1 -1
  177. package/form-field/form-field-clear/form-field-clear.d.ts.map +1 -1
  178. package/form-field/form-field-clear.js +11 -11
  179. package/form-field/form-field.js +2 -2
  180. package/icon/icon-base.d.ts.map +1 -1
  181. package/icon/icon.d.ts.map +1 -1
  182. package/image/image.d.ts +1 -0
  183. package/image/image.d.ts.map +1 -1
  184. package/image.js +24 -24
  185. package/index.d.ts +12 -0
  186. package/index.js +12 -0
  187. package/map-container.js +8 -8
  188. package/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  189. package/option/optgroup/optgroup-base-element.d.ts +28 -0
  190. package/option/optgroup/optgroup-base-element.d.ts.map +1 -0
  191. package/option/optgroup/optgroup.d.ts +7 -20
  192. package/option/optgroup/optgroup.d.ts.map +1 -1
  193. package/option/optgroup.d.ts +1 -0
  194. package/option/optgroup.d.ts.map +1 -1
  195. package/option/optgroup.js +80 -60
  196. package/option/option/option-base-element.d.ts +69 -0
  197. package/option/option/option-base-element.d.ts.map +1 -0
  198. package/option/option/option.d.ts +14 -57
  199. package/option/option/option.d.ts.map +1 -1
  200. package/option/option.d.ts +1 -0
  201. package/option/option.d.ts.map +1 -1
  202. package/option/option.js +186 -145
  203. package/package.json +36 -1
  204. package/radio-button/common/radio-button-common.d.ts +1 -1
  205. package/radio-button/common/radio-button-common.d.ts.map +1 -1
  206. package/radio-button/common.js +6 -15
  207. package/radio-button/radio-button/radio-button.d.ts +7 -0
  208. package/radio-button/radio-button/radio-button.d.ts.map +1 -1
  209. package/radio-button/radio-button-group/radio-button-group.d.ts +1 -1
  210. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  211. package/radio-button/radio-button-panel/radio-button-panel.d.ts +7 -0
  212. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -1
  213. package/radio-button/radio-button-panel.js +35 -22
  214. package/radio-button/radio-button.js +32 -19
  215. package/skiplink-list/skiplink-list.d.ts +1 -0
  216. package/skiplink-list/skiplink-list.d.ts.map +1 -1
  217. package/standard-theme.css +3 -1
  218. package/tabs/tab-group.js +19 -19
  219. package/tabs/tab.js +10 -10
  220. package/timetable-occupancy-icon/timetable-occupancy-icon.d.ts.map +1 -1
  221. package/timetable-occupancy-icon.js +22 -24
@@ -106,33 +106,34 @@ sbb-icon {
106
106
  --sbb-button-color-disabled-text: var(--sbb-color-smoke);
107
107
  }
108
108
 
109
- :host(:is([disabled], [data-disabled])) .sbb-form-field-clear {
109
+ :host(:is([disabled], [data-disabled], [data-group-disabled])) .sbb-form-field-clear {
110
110
  color: var(--sbb-button-color-disabled-text);
111
111
  cursor: default;
112
112
  pointer-events: none;
113
113
  }
114
- :host(:is([disabled], [data-disabled])) .sbb-form-field-clear::before {
114
+ :host(:is([disabled], [data-disabled], [data-group-disabled])) .sbb-form-field-clear::before {
115
115
  background-color: var(--sbb-button-color-disabled-background);
116
116
  border: var(--sbb-button-border-disabled-width) var(--sbb-button-border-disabled-style) var(--sbb-button-color-disabled-border);
117
117
  }
118
118
 
119
- :host(:focus-visible:not([data-focus-origin=mouse], [data-focus-origin=touch])) .sbb-form-field-clear::before {
119
+ :host(:is([data-focus-visible],
120
+ :focus-visible:not([data-focus-origin=mouse], [data-focus-origin=touch]))) .sbb-form-field-clear::before {
120
121
  outline-offset: var(--sbb-focus-outline-offset);
121
122
  outline: var(--sbb-focus-outline-color) solid var(--sbb-focus-outline-width);
122
123
  }
123
124
 
124
125
  @media (any-hover: hover) {
125
- :host(:not([disabled], [data-disabled], :active, [data-active]):hover) {
126
+ :host(:not([disabled], [data-disabled], [data-group-disabled], :active, [data-active]):hover) {
126
127
  --sbb-button-translate-y-content-hover: -0.0625rem;
127
128
  }
128
129
  }
129
130
  @media (any-hover: hover) {
130
- :host(:not([disabled], [data-disabled], :active, [data-active]):hover) .sbb-form-field-clear::before {
131
+ :host(:not([disabled], [data-disabled], [data-group-disabled], :active, [data-active]):hover) .sbb-form-field-clear::before {
131
132
  background-color: var(--sbb-button-color-hover-background);
132
133
  }
133
134
  }
134
135
 
135
- :host(:not([disabled], [data-disabled]):is(:active, [data-active])) .sbb-form-field-clear::before {
136
+ :host(:not([disabled], [data-disabled], [data-group-disabled]):is(:active, [data-active])) .sbb-form-field-clear::before {
136
137
  background-color: var(--sbb-button-color-active-background);
137
138
  }`;
138
139
  var __defProp = Object.defineProperty;
@@ -189,4 +190,4 @@ SbbFormFieldClearElement = __decorateClass([
189
190
  export {
190
191
  SbbFormFieldClearElement
191
192
  };
192
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jbGVhci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC1jbGVhci9mb3JtLWZpZWxkLWNsZWFyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkJ1dHRvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpMThuQ2xlYXJJbnB1dCB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgeyBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJGb3JtRmllbGRFbGVtZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2Zvcm0tZmllbGQtY2xlYXIuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLmpzJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGBzYmItZm9ybS1maWVsZGAsIGl0IGRpc3BsYXlzIGEgYnV0dG9uIHdoaWNoIGNsZWFycyB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItZm9ybS1maWVsZC1jbGVhcicpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAnc3VmZml4Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiRm9ybUZpZWxkQ2xlYXJFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJCdXR0b25CYXNlRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIF9mb3JtRmllbGQ/OiBTYmJGb3JtRmllbGRFbGVtZW50IHwgbnVsbDtcbiAgcHJpdmF0ZSBfYWJvcnQgPSBuZXcgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLl9oYW5kbGVDbGljaygpLCB7IHNpZ25hbCB9KTtcbiAgICB0aGlzLl9mb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3Q8U2JiRm9ybUZpZWxkRWxlbWVudD4oJ3NiYi1mb3JtLWZpZWxkLCBbZGF0YS1mb3JtLWZpZWxkXScpO1xuXG4gICAgaWYgKHRoaXMuX2Zvcm1GaWVsZCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IHRoaXMuX2Zvcm1GaWVsZC5oYXNBdHRyaWJ1dGUoJ25lZ2F0aXZlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLl9mb3JtRmllbGQ/LmlucHV0RWxlbWVudDtcbiAgICBpZiAoIWlucHV0IHx8IGlucHV0LmxvY2FsTmFtZSAhPT0gJ2lucHV0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9mb3JtRmllbGQ/LmNsZWFyKCk7XG4gICAgaW5wdXQuZm9jdXMoKTtcbiAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBpMThuQ2xlYXJJbnB1dFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYCA8c2JiLWljb24gbmFtZT1cImNyb3NzLXNtYWxsXCI+PC9zYmItaWNvbj4gYDtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWZvcm0tZmllbGQtY2xlYXInOiBTYmJGb3JtRmllbGRDbGVhckVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQk8sSUFBTSwyQkFBTixjQUF1QyxpQkFBaUIsb0JBQW9CLEVBQUU7QUFBQSxFQUE5RSxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFJRyxTQUFBLFNBQVMsSUFBSSw0QkFBNEIsSUFBSTtBQUM3QyxTQUFBLFlBQVksSUFBSSxzQkFBc0IsSUFBSTtBQUFBLEVBQUE7QUFBQSxFQUVsQyxvQkFBMEI7QUFDeEMsVUFBTSxrQkFBa0I7QUFDbEIsVUFBQSxTQUFTLEtBQUssT0FBTztBQUN0QixTQUFBLGlCQUFpQixTQUFTLE1BQU0sS0FBSyxnQkFBZ0IsRUFBRSxRQUFRO0FBQy9ELFNBQUEsYUFBYSxLQUFLLFFBQTZCLG1DQUFtQztBQUV2RixRQUFJLEtBQUssWUFBWTtBQUNuQixXQUFLLFdBQVcsS0FBSyxXQUFXLGFBQWEsVUFBVTtBQUFBLElBQ3pEO0FBQUEsRUFDRjtBQUFBLEVBRUEsTUFBYyxlQUE4Qjs7QUFDcEMsVUFBQSxTQUFRLFVBQUssZUFBTCxtQkFBaUI7QUFDL0IsUUFBSSxDQUFDLFNBQVMsTUFBTSxjQUFjLFNBQVM7QUFDekM7QUFBQSxJQUNGO0FBQ0EsZUFBSyxlQUFMLG1CQUFpQjtBQUNqQixVQUFNLE1BQU07QUFDTixVQUFBLGNBQWMsSUFBSSxXQUFXLFNBQVMsRUFBRSxTQUFTLE1BQU0sVUFBVSxLQUFNLENBQUEsQ0FBQztBQUN4RSxVQUFBLGNBQWMsSUFBSSxNQUFNLFVBQVUsRUFBRSxTQUFTLEtBQU0sQ0FBQSxDQUFDO0FBQUEsRUFDNUQ7QUFBQSxFQUVtQixXQUFXLG1CQUErQztBQUMzRSxVQUFNLFdBQVcsaUJBQWlCO0FBQ2xDLFNBQUssYUFBYSxjQUFjLGVBQWUsS0FBSyxVQUFVLE9BQU8sQ0FBQztBQUFBLEVBQ3hFO0FBQUEsRUFFbUIsaUJBQWlDO0FBQzNDLFdBQUE7QUFBQSxFQUNUO0FBQ0Y7QUFyQ2EseUJBQ1ksU0FBeUI7QUFEckMsMkJBQU4sZ0JBQUE7QUFBQSxFQUpOLGNBQWMsc0JBQXNCO0FBQUEsRUFDcEMsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLEVBQUEsQ0FDUDtBQUFBLEdBQ1ksd0JBQUE7In0=
193
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC1jbGVhci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC1jbGVhci9mb3JtLWZpZWxkLWNsZWFyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQgfSBmcm9tICdsaXQvZGVjb3JhdG9ycy5qcyc7XG5cbmltcG9ydCB7IFNiYkJ1dHRvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlLWVsZW1lbnRzLmpzJztcbmltcG9ydCB7IFNiYkNvbm5lY3RlZEFib3J0Q29udHJvbGxlciwgU2JiTGFuZ3VhZ2VDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vY29yZS9jb250cm9sbGVycy5qcyc7XG5pbXBvcnQgeyBob3N0QXR0cmlidXRlcyB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBpMThuQ2xlYXJJbnB1dCB9IGZyb20gJy4uLy4uL2NvcmUvaTE4bi5qcyc7XG5pbXBvcnQgeyBTYmJOZWdhdGl2ZU1peGluIH0gZnJvbSAnLi4vLi4vY29yZS9taXhpbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBTYmJGb3JtRmllbGRFbGVtZW50IH0gZnJvbSAnLi4vZm9ybS1maWVsZC5qcyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL2Zvcm0tZmllbGQtY2xlYXIuc2Nzcz9saXQmaW5saW5lJztcblxuaW1wb3J0ICcuLi8uLi9pY29uLmpzJztcblxuLyoqXG4gKiBDb21iaW5lZCB3aXRoIGBzYmItZm9ybS1maWVsZGAsIGl0IGRpc3BsYXlzIGEgYnV0dG9uIHdoaWNoIGNsZWFycyB0aGUgaW5wdXQgdmFsdWUuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItZm9ybS1maWVsZC1jbGVhcicpXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICBzbG90OiAnc3VmZml4Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2JiRm9ybUZpZWxkQ2xlYXJFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJCdXR0b25CYXNlRWxlbWVudCkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIF9mb3JtRmllbGQ/OiBTYmJGb3JtRmllbGRFbGVtZW50IHwgbnVsbDtcbiAgcHJpdmF0ZSBfYWJvcnQgPSBuZXcgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB0aGlzLl9oYW5kbGVDbGljaygpLCB7IHNpZ25hbCB9KTtcbiAgICB0aGlzLl9mb3JtRmllbGQgPSB0aGlzLmNsb3Nlc3Q8U2JiRm9ybUZpZWxkRWxlbWVudD4oJ3NiYi1mb3JtLWZpZWxkLCBbZGF0YS1mb3JtLWZpZWxkXScpO1xuXG4gICAgaWYgKHRoaXMuX2Zvcm1GaWVsZCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IHRoaXMuX2Zvcm1GaWVsZC5oYXNBdHRyaWJ1dGUoJ25lZ2F0aXZlJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlQ2xpY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLl9mb3JtRmllbGQ/LmlucHV0RWxlbWVudDtcbiAgICBpZiAoIWlucHV0IHx8IGlucHV0LmxvY2FsTmFtZSAhPT0gJ2lucHV0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9mb3JtRmllbGQ/LmNsZWFyKCk7XG4gICAgaW5wdXQuZm9jdXMoKTtcbiAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KG5ldyBJbnB1dEV2ZW50KCdpbnB1dCcsIHsgYnViYmxlczogdHJ1ZSwgY29tcG9zZWQ6IHRydWUgfSkpO1xuICAgIGlucHV0LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdjaGFuZ2UnLCB7IGJ1YmJsZXM6IHRydWUgfSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIGkxOG5DbGVhcklucHV0W3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXJUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgIDxzYmItaWNvbiBuYW1lPVwiY3Jvc3Mtc21hbGxcIj48L3NiYi1pY29uPiBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZm9ybS1maWVsZC1jbGVhcic6IFNiYkZvcm1GaWVsZENsZWFyRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQk8sSUFBTSwyQkFBTixjQUF1QyxpQkFBaUIsb0JBQW9CLEVBQUU7QUFBQSxFQUE5RSxjQUFBO0FBQUEsVUFBQSxHQUFBLFNBQUE7QUFJRyxTQUFBLFNBQVMsSUFBSSw0QkFBNEIsSUFBSTtBQUM3QyxTQUFBLFlBQVksSUFBSSxzQkFBc0IsSUFBSTtBQUFBLEVBQUE7QUFBQSxFQUVsQyxvQkFBMEI7QUFDeEMsVUFBTSxrQkFBa0I7QUFDbEIsVUFBQSxTQUFTLEtBQUssT0FBTztBQUN0QixTQUFBLGlCQUFpQixTQUFTLE1BQU0sS0FBSyxnQkFBZ0IsRUFBRSxRQUFRO0FBQy9ELFNBQUEsYUFBYSxLQUFLLFFBQTZCLG1DQUFtQztBQUV2RixRQUFJLEtBQUssWUFBWTtBQUNuQixXQUFLLFdBQVcsS0FBSyxXQUFXLGFBQWEsVUFBVTtBQUFBLElBQ3pEO0FBQUEsRUFDRjtBQUFBLEVBRUEsTUFBYyxlQUE4Qjs7QUFDcEMsVUFBQSxTQUFRLFVBQUssZUFBTCxtQkFBaUI7QUFDL0IsUUFBSSxDQUFDLFNBQVMsTUFBTSxjQUFjLFNBQVM7QUFDekM7QUFBQSxJQUNGO0FBQ0EsZUFBSyxlQUFMLG1CQUFpQjtBQUNqQixVQUFNLE1BQU07QUFDTixVQUFBLGNBQWMsSUFBSSxXQUFXLFNBQVMsRUFBRSxTQUFTLE1BQU0sVUFBVSxLQUFNLENBQUEsQ0FBQztBQUN4RSxVQUFBLGNBQWMsSUFBSSxNQUFNLFVBQVUsRUFBRSxTQUFTLEtBQU0sQ0FBQSxDQUFDO0FBQUEsRUFDNUQ7QUFBQSxFQUVtQixXQUFXLG1CQUErQztBQUMzRSxVQUFNLFdBQVcsaUJBQWlCO0FBRWxDLFNBQUssYUFBYSxjQUFjLGVBQWUsS0FBSyxVQUFVLE9BQU8sQ0FBQztBQUFBLEVBQ3hFO0FBQUEsRUFFbUIsaUJBQWlDO0FBQzNDLFdBQUE7QUFBQSxFQUNUO0FBQ0Y7QUF0Q2EseUJBQ1ksU0FBeUI7QUFEckMsMkJBQU4sZ0JBQUE7QUFBQSxFQUpOLGNBQWMsc0JBQXNCO0FBQUEsRUFDcEMsZUFBZTtBQUFBLElBQ2QsTUFBTTtBQUFBLEVBQUEsQ0FDUDtBQUFBLEdBQ1ksd0JBQUE7In0=
@@ -518,7 +518,7 @@ var __decorateClass = (decorators, target, key, kind) => {
518
518
  };
519
519
  let nextId = 0;
520
520
  let nextFormFieldErrorId = 0;
521
- const supportedPopupTagNames = ["sbb-autocomplete", "sbb-select"];
521
+ const supportedPopupTagNames = ["sbb-autocomplete", "sbb-autocomplete-grid", "sbb-select"];
522
522
  let SbbFormFieldElement = class extends SbbNegativeMixin(SbbHydrationMixin(LitElement)) {
523
523
  constructor() {
524
524
  super(...arguments);
@@ -813,7 +813,7 @@ let SbbFormFieldElement = class extends SbbNegativeMixin(SbbHydrationMixin(LitEl
813
813
  var _a;
814
814
  (_a = this.querySelectorAll) == null ? void 0 : _a.call(
815
815
  this,
816
- "sbb-form-error,sbb-mini-button,sbb-popover-trigger,sbb-form-field-clear,sbb-datepicker-next-day,sbb-datepicker-previous-day,sbb-datepicker-toggle,sbb-select,sbb-autocomplete"
816
+ "sbb-form-error,sbb-mini-button,sbb-popover-trigger,sbb-form-field-clear,sbb-datepicker-next-day,sbb-datepicker-previous-day,sbb-datepicker-toggle,sbb-select,sbb-autocomplete,sbb-autocomplete-grid"
817
817
  ).forEach((element) => element.toggleAttribute("negative", this.negative));
818
818
  }
819
819
  render() {
@@ -888,4 +888,4 @@ SbbFormFieldElement = __decorateClass([
888
888
  export {
889
889
  SbbFormFieldElement
890
890
  };
891
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50LCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJJbnB1dE1vZGFsaXR5IH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIsIFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzRmlyZWZveCwgc2V0T3JSZW1vdmVBdHRyaWJ1dGUgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBpMThuT3B0aW9uYWwgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY011dGF0aW9uT2JzZXJ2ZXIgfSBmcm9tICcuLi8uLi9jb3JlL29ic2VydmVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNlbGVjdEVsZW1lbnQgfSBmcm9tICcuLi8uLi9zZWxlY3QuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9mb3JtLWZpZWxkLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vaWNvbi5qcyc7XG5cbmxldCBuZXh0SWQgPSAwO1xubGV0IG5leHRGb3JtRmllbGRFcnJvcklkID0gMDtcblxuY29uc3Qgc3VwcG9ydGVkUG9wdXBUYWdOYW1lcyA9IFsnc2JiLWF1dG9jb21wbGV0ZScsICdzYmItc2VsZWN0J107XG5cbi8qKlxuICogSXQgd3JhcHMgYW4gaW5wdXQgZWxlbWVudCBhZGRpbmcgbGFiZWwsIGVycm9ycywgaWNvbiwgZXRjLlxuICpcbiAqIEBzbG90IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaW5wdXQvc2VsZWN0IG9yIGEgc3VwcG9ydGVkIG5vbi1uYXRpdmUgZWxlbWVudC5cbiAqIEBzbG90IGxhYmVsIC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYSBsYWJlbC5cbiAqIEBzbG90IHByZWZpeCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGljb24gb24gdGhlIGxlZnQgc2lkZSBvZiB0aGUgaW5wdXQuXG4gKiBAc2xvdCBzdWZmaXggLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpY29uIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBpbnB1dC5cbiAqIEBzbG90IGVycm9yIC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gZXJyb3IuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItZm9ybS1maWVsZCcpXG5Ac2xvdFN0YXRlKClcbmV4cG9ydCBjbGFzcyBTYmJGb3JtRmllbGRFbGVtZW50IGV4dGVuZHMgU2JiTmVnYXRpdmVNaXhpbihTYmJIeWRyYXRpb25NaXhpbihMaXRFbGVtZW50KSkge1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIHN0eWxlczogQ1NTUmVzdWx0R3JvdXAgPSBzdHlsZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWROYXRpdmVJbnB1dEVsZW1lbnRzID0gWydpbnB1dCcsICdzZWxlY3QnLCAndGV4dGFyZWEnXTtcbiAgLy8gTGlzdCBvZiBzdXBwb3J0ZWQgZWxlbWVudCBzZWxlY3RvcnMgaW4gdW5uYW1lZCBzbG90XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHBvcnRlZElucHV0RWxlbWVudHMgPSBbXG4gICAgLi4udGhpcy5fc3VwcG9ydGVkTmF0aXZlSW5wdXRFbGVtZW50cyxcbiAgICAnc2JiLXNlbGVjdCcsXG4gICAgJ3NiYi1zbGlkZXInLFxuICBdO1xuICAvLyBMaXN0IG9mIGVsZW1lbnRzIHRoYXQgc2hvdWxkIG5vdCBmb2N1cyBpbnB1dCBvbiBjbGlja1xuICBwcml2YXRlIHJlYWRvbmx5IF9leGNsdWRlZEZvY3VzRWxlbWVudHMgPSBbJ2J1dHRvbicsICdzYmItcG9wb3ZlciddO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dEVsZW1lbnRzID0gW1xuICAgICdpbnB1dCcsXG4gICAgJ3NlbGVjdCcsXG4gICAgJ3NiYi1zZWxlY3QnLFxuICAgICd0ZXh0YXJlYScsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmxvYXRpbmdMYWJlbFN1cHBvcnRlZElucHV0VHlwZXMgPSBbXG4gICAgJ2VtYWlsJyxcbiAgICAnbnVtYmVyJyxcbiAgICAncGFzc3dvcmQnLFxuICAgICdzZWFyY2gnLFxuICAgICd0ZWwnLFxuICAgICd0ZXh0JyxcbiAgICAndXJsJyxcbiAgXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXNlcnZlIHNwYWNlIGZvciBhbiBlcnJvciBtZXNzYWdlLlxuICAgKiBgbm9uZWAgZG9lcyBub3QgcmVzZXJ2ZSBhbnkgc3BhY2UuXG4gICAqIGByZXNlcnZlYCBkb2VzIHJlc2VydmUgb25lIHJvdyBmb3IgYW4gZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2Vycm9yLXNwYWNlJywgcmVmbGVjdDogdHJ1ZSB9KVxuICBwdWJsaWMgZXJyb3JTcGFjZT86ICdub25lJyB8ICdyZXNlcnZlJyA9ICdub25lJztcblxuICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGlucHV0IGlzIG9wdGlvbmFsLiAqL1xuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBvcHRpb25hbD86IGJvb2xlYW47XG5cbiAgLyoqIFNpemUgdmFyaWFudCwgZWl0aGVyIGwgb3IgbS4gKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgc2l6ZT86ICdsJyB8ICdtJyA9ICdtJztcblxuICAvKiogV2hldGhlciB0byBkaXNwbGF5IHRoZSBmb3JtIGZpZWxkIHdpdGhvdXQgYSBib3JkZXIuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGJvcmRlcmxlc3MgPSBmYWxzZTtcblxuICAvKiogRGVmaW5lcyB0aGUgd2lkdGggb2YgdGhlIGNvbXBvbmVudDpcbiAgICogLSBgZGVmYXVsdGA6IHRoZSBjb21wb25lbnQgaGFzIGRlZmluZWQgd2lkdGggYW5kIG1pbi13aWR0aDtcbiAgICogLSBgY29sbGFwc2VgOiB0aGUgY29tcG9uZW50IGFkYXB0cyBpdHNlbGYgdG8gaXRzIGlubmVyIGlucHV0IGNvbnRlbnQuICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIHdpZHRoOiAnZGVmYXVsdCcgfCAnY29sbGFwc2UnID0gJ2RlZmF1bHQnO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHZpc3VhbGx5IGhpZGUgdGhlIGxhYmVsLiBJZiBoaWRkZW4sIHNjcmVlbiByZWFkZXJzIHdpbGwgc3RpbGwgcmVhZCBpdC4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaGlkZGVuLWxhYmVsJywgcmVmbGVjdDogdHJ1ZSwgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgaGlkZGVuTGFiZWwgPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgbGFiZWwgc2hvdWxkIGZsb2F0LiBJZiBhY3RpdmF0ZWQsIHRoZSBwbGFjZWhvbGRlciBvZiB0aGUgaW5wdXQgaXMgaGlkZGVuLiAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdmbG9hdGluZy1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGZsb2F0aW5nTGFiZWwgPVxuICAgIGZhbHNlO1xuXG4gIC8qKiBJdCBpcyB1c2VkIGludGVybmFsbHkgdG8gZ2V0IHRoZSBgZXJyb3JgIHNsb3QuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgX2Vycm9yRWxlbWVudHM6IEVsZW1lbnRbXSA9IFtdO1xuXG4gIC8qKiBPcmlnaW5hbCBhcmlhLWRlc2NyaWJlZGJ5IHZhbHVlIG9mIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQuICovXG4gIHByaXZhdGUgX29yaWdpbmFsSW5wdXRBcmlhRGVzY3JpYmVkYnk/OiBzdHJpbmcgfCBudWxsO1xuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIHNsb3R0ZWQgaW5wdXQgZWxlbWVudC4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfaW5wdXQ/OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGxhYmVsIGVsZW1lbnRzLiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIF9sYWJlbD86IEhUTUxMYWJlbEVsZW1lbnQ7XG5cbiAgLyoqIFJldHVybnMgdGhlIGlucHV0IGVsZW1lbnQuICovXG4gIHB1YmxpYyBnZXQgaW5wdXRFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MU2VsZWN0RWxlbWVudCB8IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXQ7XG4gIH1cblxuICBwcml2YXRlIF9hYm9ydCA9IG5ldyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIodGhpcyk7XG4gIHByaXZhdGUgX2xhbmd1YWdlID0gbmV3IFNiYkxhbmd1YWdlQ29udHJvbGxlcih0aGlzKTtcblxuICAvKipcbiAgICogTGlzdGVucyB0byB0aGUgY2hhbmdlcyBvbiBgcmVhZG9ubHlgIGFuZCBgZGlzYWJsZWRgIGF0dHJpYnV0ZXMgb2YgYDxpbnB1dD5gLlxuICAgKi9cbiAgcHJpdmF0ZSBfZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXIgPSBuZXcgQWdub3N0aWNNdXRhdGlvbk9ic2VydmVyKFxuICAgIChtdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10pID0+IHtcbiAgICAgIGlmIChtdXRhdGlvbnMuc29tZSgobSkgPT4gbS50eXBlID09PSAnYXR0cmlidXRlcycpKSB7XG4gICAgICAgIHRoaXMuX3JlYWRJbnB1dFN0YXRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgKTtcblxuICBwcml2YXRlIF9pbnB1dEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICBjb25zdCBzaWduYWwgPSB0aGlzLl9hYm9ydC5zaWduYWw7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCd3aWxsT3BlbicsIChlOiBDdXN0b21FdmVudDx2b2lkPikgPT4gdGhpcy5fb25Qb3B1cE9wZW4oZSksIHsgc2lnbmFsIH0pO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignZGlkQ2xvc2UnLCAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+IHRoaXMuX29uUG9wdXBDbG9zZShlKSwgeyBzaWduYWwgfSk7XG4gICAgdGhpcy5fcmVnaXN0ZXJJbnB1dExpc3RlbmVyKCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25lZ2F0aXZlJykpIHtcbiAgICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNjb25uZWN0ZWRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25Qb3B1cE9wZW4oeyB0YXJnZXQgfTogQ3VzdG9tRXZlbnQ8dm9pZD4pOiB2b2lkIHtcbiAgICBpZiAoc3VwcG9ydGVkUG9wdXBUYWdOYW1lcy5pbmNsdWRlcygodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5sb2NhbE5hbWUpKSB7XG4gICAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1oYXMtcG9wdXAtb3BlbicsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX29uUG9wdXBDbG9zZSh7IHRhcmdldCB9OiBDdXN0b21FdmVudDx2b2lkPik6IHZvaWQge1xuICAgIGlmIChzdXBwb3J0ZWRQb3B1cFRhZ05hbWVzLmluY2x1ZGVzKCh0YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSkpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCdkYXRhLWhhcy1wb3B1cC1vcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlV3JhcHBlckNsaWNrKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0J1dHRvbk9yUG9wdXAoZXZlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdzYmItc2VsZWN0Jykge1xuICAgICAgdGhpcy5faW5wdXQuY2xpY2soKTtcbiAgICAgIHRoaXMuX2lucHV0LmZvY3VzKCk7XG4gICAgfSBlbHNlIGlmICgoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmxvY2FsTmFtZSAhPT0gJ2xhYmVsJykge1xuICAgICAgdGhpcy5faW5wdXQ/LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNCdXR0b25PclBvcHVwKGV2ZW50OiBFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmVudFxuICAgICAgLmNvbXBvc2VkUGF0aCgpXG4gICAgICAuc29tZShcbiAgICAgICAgKGVsKSA9PlxuICAgICAgICAgIChlbCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MRWxlbWVudCAmJiBlbC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSA9PT0gJ2J1dHRvbicpIHx8XG4gICAgICAgICAgdGhpcy5fZXhjbHVkZWRGb2N1c0VsZW1lbnRzLmluY2x1ZGVzKChlbCBhcyBIVE1MRWxlbWVudCkubG9jYWxOYW1lKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9vblNsb3RMYWJlbENoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCBsYWJlbHMgPSBBcnJheS5mcm9tKHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWwnKSk7XG4gICAgaWYgKGltcG9ydC5tZXRhLmVudi5ERVYgJiYgbGFiZWxzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYERldGVjdGVkIG1vcmUgdGhhbiBvbmUgbGFiZWwgaW4gc2JiLWZvcm0tZmllbGQjJHt0aGlzLmlkfS4gT25seSBvbmUgbGFiZWwgaXMgc3VwcG9ydGVkLmAsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9sYWJlbCA9IGxhYmVsc1swXTtcbiAgICB0aGlzLl9zeW5jTGFiZWxJbnB1dFJlZmVyZW5jZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBpcyB1c2VkIGludGVybmFsbHkgdG8gYXNzaWduIHRoZSBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YCB0byBgX2lkYCBhbmQgYF9pbnB1dGAgYW5kIHRvIG9ic2VydmUgdGhlIG5hdGl2ZSByZWFkb25seSBhbmQgZGlzYWJsZWQgYXR0cmlidXRlcy5cbiAgICovXG4gIHByaXZhdGUgX29uU2xvdElucHV0Q2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0ID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpXG4gICAgICAuYXNzaWduZWRFbGVtZW50cygpXG4gICAgICAuZmluZCgoZSk6IGUgaXMgSFRNTEVsZW1lbnQgPT4gdGhpcy5fc3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyhlLmxvY2FsTmFtZSkpO1xuICAgIHRoaXMuX2Fzc2lnblNsb3RzKCk7XG5cbiAgICBpZiAoIXRoaXMuX2lucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fb3JpZ2luYWxJbnB1dEFyaWFEZXNjcmliZWRieSA9IHRoaXMuX2lucHV0LmdldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpO1xuICAgIHRoaXMuX2FwcGx5QXJpYURlc2NyaWJlZGJ5KCk7XG4gICAgdGhpcy5fcmVhZElucHV0U3RhdGUoKTtcbiAgICB0aGlzLl9yZWdpc3RlcklucHV0TGlzdGVuZXIoKTtcblxuICAgIGlmICh0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICd0ZXh0YXJlYScpIHtcbiAgICAgIHRoaXMuX2lucHV0LnNldEF0dHJpYnV0ZSgncm93cycsIHRoaXMuX2lucHV0LmdldEF0dHJpYnV0ZSgncm93cycpIHx8ICczJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZm9ybUZpZWxkQXR0cmlidXRlT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyLm9ic2VydmUodGhpcy5faW5wdXQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFsncmVhZG9ubHknLCAnZGlzYWJsZWQnLCAnY2xhc3MnLCAnZGF0YS1zYmItaW52YWxpZCddLFxuICAgIH0pO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLWlucHV0LXR5cGUnLCB0aGlzLl9pbnB1dC5sb2NhbE5hbWUpO1xuICAgIHRoaXMuX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQgfHwgIXRoaXMuX2xhYmVsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N1cHBvcnRlZE5hdGl2ZUlucHV0RWxlbWVudHMuaW5jbHVkZXModGhpcy5faW5wdXQubG9jYWxOYW1lKSkge1xuICAgICAgLy8gRm9yIG5hdGl2ZSBpbnB1dCBlbGVtZW50cyB3ZSB1c2UgdGhlIGBmb3JgIGF0dHJpYnV0ZSBvbiB0aGUgbGFiZWwgdG8gcmVmZXJlbmNlIHRoZSBpbnB1dFxuICAgICAgLy8gdmlhIGlkIHJlZmVyZW5jZS5cbiAgICAgIGlmICghdGhpcy5faW5wdXQuaWQpIHtcbiAgICAgICAgdGhpcy5faW5wdXQuaWQgPSBgc2JiLWZvcm0tZmllbGQtaW5wdXQtJHtuZXh0SWQrK31gO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sYWJlbC5odG1sRm9yID0gdGhpcy5faW5wdXQuaWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBub24tbmF0aXZlIGlucHV0IGVsZW1lbnRzLCB0aGF0IGRvIG5vdCBzdXBwb3J0IHJlZmVyZW5jZXMgdmlhIHRoZSBsYWJlbCBmb3IgYXR0cmlidXRlLFxuICAgICAgLy8gd2UgdXNlIGFyaWEtbGFiZWxsZWRieSBvbiB0aGUgaW5wdXQgZWxlbWVudCB0byByZWZlcmVuY2UgdGhlIGxhYmVsIGVsZW1lbnQgdmlhIGlkLlxuICAgICAgaWYgKCF0aGlzLl9sYWJlbC5pZCkge1xuICAgICAgICB0aGlzLl9sYWJlbC5pZCA9IGBzYmItZm9ybS1maWVsZC1sYWJlbC0ke25leHRJZCsrfWA7XG4gICAgICB9XG4gICAgICBjb25zdCBsYWJlbGxlZGJ5ID1cbiAgICAgICAgdGhpcy5faW5wdXRcbiAgICAgICAgICAuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKVxuICAgICAgICAgID8uc3BsaXQoJyAnKVxuICAgICAgICAgIC5maWx0ZXIoKGwpID0+ICEhbCAmJiBsICE9PSB0aGlzLl9sYWJlbCEuaWQpID8/IFtdO1xuICAgICAgdGhpcy5faW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCBbLi4ubGFiZWxsZWRieSwgdGhpcy5fbGFiZWwuaWRdLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVnaXN0ZXJJbnB1dExpc3RlbmVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcblxuICAgIC8vIFRpbWVvdXQgbmVlZGVkIHRvIGhhdmUgdmFsdWUgdXBkYXRlZFxuICAgIHRoaXMuX2dldElucHV0Rm9ybSgpPy5hZGRFdmVudExpc3RlbmVyKCdyZXNldCcsICgpID0+IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5yZXNldCgpKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpLCB7XG4gICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICBsZXQgaW5wdXRGb2N1c0VsZW1lbnQgPSB0aGlzLl9pbnB1dDtcblxuICAgIGlmICh0aGlzLl9pbnB1dC5sb2NhbE5hbWUgPT09ICdzYmItc2VsZWN0Jykge1xuICAgICAgdGhpcy5faW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVDaGFuZ2UnLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSwge1xuICAgICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0pO1xuXG4gICAgICBpbnB1dEZvY3VzRWxlbWVudCA9ICh0aGlzLl9pbnB1dCBhcyBTYmJTZWxlY3RFbGVtZW50KS5pbnB1dEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgaW5wdXRGb2N1c0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdmb2N1c2luJyxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaW5wdXQtZm9jdXNlZCcsIHRydWUpO1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAnZGF0YS1mb2N1cy1vcmlnaW4nLFxuICAgICAgICAgIChzYmJJbnB1dE1vZGFsaXR5RGV0ZWN0b3IubW9zdFJlY2VudE1vZGFsaXR5IGFzIFNiYklucHV0TW9kYWxpdHkpID8/ICcnLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpbnB1dEZvY3VzRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2ZvY3Vzb3V0JyxcbiAgICAgICgpID0+XG4gICAgICAgIFsnZGF0YS1mb2N1cy1vcmlnaW4nLCAnZGF0YS1pbnB1dC1mb2N1c2VkJ10uZm9yRWFjaCgobmFtZSkgPT4gdGhpcy5yZW1vdmVBdHRyaWJ1dGUobmFtZSkpLFxuICAgICAge1xuICAgICAgICBzaWduYWw6IHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldElucHV0Rm9ybSgpOiBIVE1MRm9ybUVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8IHRoaXMuX2lucHV0IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnB1dC5mb3JtO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faW5wdXQ/LmNsb3Nlc3QoJ2Zvcm0nKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLWlucHV0LWVtcHR5JyxcbiAgICAgIHRoaXMuX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dEVsZW1lbnRzLmluY2x1ZGVzKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgYXMgc3RyaW5nKSAmJlxuICAgICAgICB0aGlzLl9pc0lucHV0RW1wdHkoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNJbnB1dEVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dFR5cGVzLmluY2x1ZGVzKHRoaXMuX2lucHV0LnR5cGUpICYmXG4gICAgICAgIHRoaXMuX2lzSW5wdXRWYWx1ZUVtcHR5KClcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXQuc2VsZWN0ZWRPcHRpb25zPy5pdGVtKDApPy5sYWJlbD8udHJpbSgpID09PSAnJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgPT09ICdzYmItc2VsZWN0Jykge1xuICAgICAgcmV0dXJuICh0aGlzLl9pbnB1dCBhcyBTYmJTZWxlY3RFbGVtZW50KS5nZXREaXNwbGF5VmFsdWUoKT8udHJpbSgpID09PSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2lzSW5wdXRWYWx1ZUVtcHR5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNJbnB1dFZhbHVlRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdmFsdWUgPSAodGhpcy5faW5wdXQgYXMgeyB2YWx1ZTogc3RyaW5nIH0pLnZhbHVlO1xuICAgIHJldHVybiBbJycsIHVuZGVmaW5lZCwgbnVsbF0uaW5jbHVkZXModmFsdWUpIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYXNzaWduU2xvdHMoKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKCdsYWJlbDpub3QoW3Nsb3RdKScpLmZvckVhY2goKGUpID0+IGUuc2V0QXR0cmlidXRlKCdzbG90JywgJ2xhYmVsJykpO1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnc2JiLWZvcm0tZXJyb3I6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PlxuICAgICAgZS5zZXRBdHRyaWJ1dGUoJ3Nsb3QnLCAnZXJyb3InKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVhZElucHV0U3RhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9pbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1yZWFkb25seScsIHRoaXMuX2lucHV0Lmhhc0F0dHJpYnV0ZSgncmVhZG9ubHknKSk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZGlzYWJsZWQnLCB0aGlzLl9pbnB1dC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKFxuICAgICAgJ2RhdGEtaW52YWxpZCcsXG4gICAgICB0aGlzLl9pbnB1dC5oYXNBdHRyaWJ1dGUoJ2RhdGEtc2JiLWludmFsaWQnKSB8fFxuICAgICAgICB0aGlzLl9pbnB1dC5jbGFzc0xpc3QuY29udGFpbnMoJ3NiYi1pbnZhbGlkJykgfHxcbiAgICAgICAgKHRoaXMuX2lucHV0LmNsYXNzTGlzdC5jb250YWlucygnbmctdG91Y2hlZCcpICYmXG4gICAgICAgICAgdGhpcy5faW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJykpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIHNldCB0aGUgYXJpYS1kZXNjcmliZWRieSBhdHRyaWJ1dGUgZm9yIHRoZSBzbG90dGVkIGlucHV0IHJlZmVyZW5jaW5nIGF2YWlsYWJsZSA8c2JiLWZvcm0tZXJyb3I+IGluc3RhbmNlcy5cbiAgICovXG4gIHByaXZhdGUgX29uU2xvdEVycm9yQ2hhbmdlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2Vycm9yRWxlbWVudHMgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxTbG90RWxlbWVudCkuYXNzaWduZWRFbGVtZW50cygpO1xuXG4gICAgZm9yIChjb25zdCBlbCBvZiB0aGlzLl9lcnJvckVsZW1lbnRzKSB7XG4gICAgICAvLyBBbHRob3VnaCBhIGZvcm0gZXJyb3IgYXNzaWducyBhbiBpZCBpdHNlbGYsIHdlIG5lZWQgdG8gYmUgZWFybGllciBieSBjcmVhdGluZyBvbmUgaGVyZVxuICAgICAgaWYgKCFlbC5pZCkge1xuICAgICAgICBlbC5pZCA9IGBzYmItZm9ybS1maWVsZC1lcnJvci0keysrbmV4dEZvcm1GaWVsZEVycm9ySWR9YDtcbiAgICAgIH1cbiAgICAgIGlmICghZWwucm9sZSkge1xuICAgICAgICAvLyBJbnN0ZWFkIG9mIGRlZmluaW5nIGEgY29udGFpbmVyIHdpdGggYW4gYXJpYS1saXZlIHJlZ2lvbiBhcyBleHBlY3RlZCwgd2UgaGFkIHRvIGNoYW5nZVxuICAgICAgICAvLyBzZXR0aW5nIGl0IGZvciBldmVyeSBzbG90dGVkIGVsZW1lbnQgdG8gcHJvcGVybHkgd29yayBpbiBhbGwgYnJvd3NlcnMgYW5kIHNjcmVlbiByZWFkZXIgY29tYmluYXRpb25zLlxuICAgICAgICBlbC5yb2xlID0gJ3N0YXR1cyc7XG4gICAgICAgIGlmIChpc0ZpcmVmb3gpIHtcbiAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnc3RhdHVzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fYXBwbHlBcmlhRGVzY3JpYmVkYnkoKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgnZGF0YS1oYXMtZXJyb3InLCAhIXRoaXMuX2Vycm9yRWxlbWVudHMubGVuZ3RoKTtcbiAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FwcGx5QXJpYURlc2NyaWJlZGJ5KCk6IHZvaWQge1xuICAgIGNvbnN0IGlkcyA9IFtdO1xuXG4gICAgaWYgKHRoaXMuX29yaWdpbmFsSW5wdXRBcmlhRGVzY3JpYmVkYnkpIHtcbiAgICAgIGlkcy5wdXNoKHRoaXMuX29yaWdpbmFsSW5wdXRBcmlhRGVzY3JpYmVkYnkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgdGhpcy5fZXJyb3JFbGVtZW50cy5mb3JFYWNoKChlKSA9PiBpZHMucHVzaChlLmlkKSk7XG4gICAgfVxuXG4gICAgY29uc3QgYXJpYURlc2NyaWJlZGJ5ID0gaWRzLmpvaW4oJyAnKTtcbiAgICBpZiAodGhpcy5faW5wdXQpIHtcbiAgICAgIHNldE9yUmVtb3ZlQXR0cmlidXRlKHRoaXMuX2lucHV0LCAnYXJpYS1kZXNjcmliZWRieScsIGFyaWFEZXNjcmliZWRieSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIE1hbnVhbGx5IHJlc2V0IHRoZSBmb3JtIGZpZWxkLiBDdXJyZW50bHksIHRoaXMgb25seSByZXNldHMgdGhlIGZsb2F0aW5nIGxhYmVsLiAqL1xuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG4gIH1cblxuICAvKiogTWFudWFsbHkgY2xlYXJzIHRoZSBpbnB1dCB2YWx1ZS4gSXQgb25seSB3b3JrcyBmb3IgaW5wdXRzLCBzZWxlY3RzIGFyZSBub3Qgc3VwcG9ydGVkLiAqL1xuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgaWYgKCh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZykgIT09ICdpbnB1dCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgKHRoaXMuX2lucHV0IGFzIHsgdmFsdWU6IHN0cmluZyB9KS52YWx1ZSA9ICcnO1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqIEBkZXByZWNhdGVkIFVzZSB0aGUgJ2lucHV0RWxlbWVudCcgcHJvcGVydHkgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIGdldElucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBfc3luY05lZ2F0aXZlKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbD8uKFxuICAgICAgJ3NiYi1mb3JtLWVycm9yLHNiYi1taW5pLWJ1dHRvbixzYmItcG9wb3Zlci10cmlnZ2VyLHNiYi1mb3JtLWZpZWxkLWNsZWFyLHNiYi1kYXRlcGlja2VyLW5leHQtZGF5LHNiYi1kYXRlcGlja2VyLXByZXZpb3VzLWRheSxzYmItZGF0ZXBpY2tlci10b2dnbGUsc2JiLXNlbGVjdCxzYmItYXV0b2NvbXBsZXRlJyxcbiAgICApLmZvckVhY2goKGVsZW1lbnQpID0+IGVsZW1lbnQudG9nZ2xlQXR0cmlidXRlKCduZWdhdGl2ZScsIHRoaXMubmVnYXRpdmUpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19zcGFjZS13cmFwcGVyXCI+XG4gICAgICAgICR7LyogUXVlcmllZCBieSBpZCBmcm9tIHRoZSBhdXRvY29tcGxldGUvc2VsZWN0IHRvIGJlIHVzZWQgYXMgdGhlIGFuY2hvciBlbGVtZW50ICovICcnfVxuICAgICAgICA8ZGl2IEBjbGljaz0ke3RoaXMuX2hhbmRsZVdyYXBwZXJDbGlja30gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fd3JhcHBlclwiIGlkPVwib3ZlcmxheS1hbmNob3JcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwicHJlZml4XCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9zeW5jTmVnYXRpdmV9Pjwvc2xvdD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2lucHV0LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fbGFiZWwtc3BhY2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fbGFiZWwtZWxsaXBzaXNcIj5cbiAgICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwibGFiZWxcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX29uU2xvdExhYmVsQ2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICAgICAgJHt0aGlzLm9wdGlvbmFsXG4gICAgICAgICAgICAgICAgICA/IGh0bWxgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiAke2kxOG5PcHRpb25hbFt0aGlzLl9sYW5ndWFnZS5jdXJyZW50XX0gPC9zcGFuPmBcbiAgICAgICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19pbnB1dFwiPlxuICAgICAgICAgICAgICA8c2xvdCBAc2xvdGNoYW5nZT0ke3RoaXMuX29uU2xvdElucHV0Q2hhbmdlfT48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICR7WydzZWxlY3QnLCAnc2JiLXNlbGVjdCddLmluY2x1ZGVzKHRoaXMuX2lucHV0Py5sb2NhbE5hbWUgYXMgc3RyaW5nKVxuICAgICAgICAgICAgICA/IGh0bWxgPHNiYi1pY29uXG4gICAgICAgICAgICAgICAgICBuYW1lPVwiY2hldnJvbi1zbWFsbC1kb3duLXNtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX3NlbGVjdC1pbnB1dC1pY29uXCJcbiAgICAgICAgICAgICAgICA+PC9zYmItaWNvbj5gXG4gICAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwic3VmZml4XCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9zeW5jTmVnYXRpdmV9Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19lcnJvclwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJlcnJvclwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90RXJyb3JDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICBgO1xuICB9XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIEhUTUxFbGVtZW50VGFnTmFtZU1hcCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgICdzYmItZm9ybS1maWVsZCc6IFNiYkZvcm1GaWVsZEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
891
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Zvcm0tZmllbGQvZm9ybS1maWVsZC9mb3JtLWZpZWxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ1NTUmVzdWx0R3JvdXAsIFByb3BlcnR5VmFsdWVzLCBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBodG1sLCBMaXRFbGVtZW50LCBub3RoaW5nIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5LCBzdGF0ZSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBTYmJJbnB1dE1vZGFsaXR5IH0gZnJvbSAnLi4vLi4vY29yZS9hMTF5LmpzJztcbmltcG9ydCB7IHNiYklucHV0TW9kYWxpdHlEZXRlY3RvciB9IGZyb20gJy4uLy4uL2NvcmUvYTExeS5qcyc7XG5pbXBvcnQgeyBTYmJDb25uZWN0ZWRBYm9ydENvbnRyb2xsZXIsIFNiYkxhbmd1YWdlQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2NvcmUvY29udHJvbGxlcnMuanMnO1xuaW1wb3J0IHsgc2xvdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IGlzRmlyZWZveCwgc2V0T3JSZW1vdmVBdHRyaWJ1dGUgfSBmcm9tICcuLi8uLi9jb3JlL2RvbS5qcyc7XG5pbXBvcnQgeyBpMThuT3B0aW9uYWwgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4uanMnO1xuaW1wb3J0IHsgU2JiSHlkcmF0aW9uTWl4aW4sIFNiYk5lZ2F0aXZlTWl4aW4gfSBmcm9tICcuLi8uLi9jb3JlL21peGlucy5qcyc7XG5pbXBvcnQgeyBBZ25vc3RpY011dGF0aW9uT2JzZXJ2ZXIgfSBmcm9tICcuLi8uLi9jb3JlL29ic2VydmVycy5qcyc7XG5pbXBvcnQgdHlwZSB7IFNiYlNlbGVjdEVsZW1lbnQgfSBmcm9tICcuLi8uLi9zZWxlY3QuanMnO1xuXG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9mb3JtLWZpZWxkLnNjc3M/bGl0JmlubGluZSc7XG5cbmltcG9ydCAnLi4vLi4vaWNvbi5qcyc7XG5cbmxldCBuZXh0SWQgPSAwO1xubGV0IG5leHRGb3JtRmllbGRFcnJvcklkID0gMDtcblxuY29uc3Qgc3VwcG9ydGVkUG9wdXBUYWdOYW1lcyA9IFsnc2JiLWF1dG9jb21wbGV0ZScsICdzYmItYXV0b2NvbXBsZXRlLWdyaWQnLCAnc2JiLXNlbGVjdCddO1xuXG4vKipcbiAqIEl0IHdyYXBzIGFuIGlucHV0IGVsZW1lbnQgYWRkaW5nIGxhYmVsLCBlcnJvcnMsIGljb24sIGV0Yy5cbiAqXG4gKiBAc2xvdCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGlucHV0L3NlbGVjdCBvciBhIHN1cHBvcnRlZCBub24tbmF0aXZlIGVsZW1lbnQuXG4gKiBAc2xvdCBsYWJlbCAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGEgbGFiZWwuXG4gKiBAc2xvdCBwcmVmaXggLSBVc2UgdGhpcyBzbG90IHRvIHJlbmRlciBhbiBpY29uIG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGlucHV0LlxuICogQHNsb3Qgc3VmZml4IC0gVXNlIHRoaXMgc2xvdCB0byByZW5kZXIgYW4gaWNvbiBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgaW5wdXQuXG4gKiBAc2xvdCBlcnJvciAtIFVzZSB0aGlzIHNsb3QgdG8gcmVuZGVyIGFuIGVycm9yLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWZvcm0tZmllbGQnKVxuQHNsb3RTdGF0ZSgpXG5leHBvcnQgY2xhc3MgU2JiRm9ybUZpZWxkRWxlbWVudCBleHRlbmRzIFNiYk5lZ2F0aXZlTWl4aW4oU2JiSHlkcmF0aW9uTWl4aW4oTGl0RWxlbWVudCkpIHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3VwcG9ydGVkTmF0aXZlSW5wdXRFbGVtZW50cyA9IFsnaW5wdXQnLCAnc2VsZWN0JywgJ3RleHRhcmVhJ107XG4gIC8vIExpc3Qgb2Ygc3VwcG9ydGVkIGVsZW1lbnQgc2VsZWN0b3JzIGluIHVubmFtZWQgc2xvdFxuICBwcml2YXRlIHJlYWRvbmx5IF9zdXBwb3J0ZWRJbnB1dEVsZW1lbnRzID0gW1xuICAgIC4uLnRoaXMuX3N1cHBvcnRlZE5hdGl2ZUlucHV0RWxlbWVudHMsXG4gICAgJ3NiYi1zZWxlY3QnLFxuICAgICdzYmItc2xpZGVyJyxcbiAgXTtcbiAgLy8gTGlzdCBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBub3QgZm9jdXMgaW5wdXQgb24gY2xpY2tcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhjbHVkZWRGb2N1c0VsZW1lbnRzID0gWydidXR0b24nLCAnc2JiLXBvcG92ZXInXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cyA9IFtcbiAgICAnaW5wdXQnLFxuICAgICdzZWxlY3QnLFxuICAgICdzYmItc2VsZWN0JyxcbiAgICAndGV4dGFyZWEnLFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Zsb2F0aW5nTGFiZWxTdXBwb3J0ZWRJbnB1dFR5cGVzID0gW1xuICAgICdlbWFpbCcsXG4gICAgJ251bWJlcicsXG4gICAgJ3Bhc3N3b3JkJyxcbiAgICAnc2VhcmNoJyxcbiAgICAndGVsJyxcbiAgICAndGV4dCcsXG4gICAgJ3VybCcsXG4gIF07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgYW4gZXJyb3IgbWVzc2FnZS5cbiAgICogYG5vbmVgIGRvZXMgbm90IHJlc2VydmUgYW55IHNwYWNlLlxuICAgKiBgcmVzZXJ2ZWAgZG9lcyByZXNlcnZlIG9uZSByb3cgZm9yIGFuIGVycm9yIG1lc3NhZ2UuXG4gICAqL1xuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdlcnJvci1zcGFjZScsIHJlZmxlY3Q6IHRydWUgfSlcbiAgcHVibGljIGVycm9yU3BhY2U/OiAnbm9uZScgfCAncmVzZXJ2ZScgPSAnbm9uZSc7XG5cbiAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBpbnB1dCBpcyBvcHRpb25hbC4gKi9cbiAgQHByb3BlcnR5KHsgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgb3B0aW9uYWw/OiBib29sZWFuO1xuXG4gIC8qKiBTaXplIHZhcmlhbnQsIGVpdGhlciBsIG9yIG0uICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIHNpemU/OiAnbCcgfCAnbScgPSAnbSc7XG5cbiAgLyoqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZm9ybSBmaWVsZCB3aXRob3V0IGEgYm9yZGVyLiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBib3JkZXJsZXNzID0gZmFsc2U7XG5cbiAgLyoqIERlZmluZXMgdGhlIHdpZHRoIG9mIHRoZSBjb21wb25lbnQ6XG4gICAqIC0gYGRlZmF1bHRgOiB0aGUgY29tcG9uZW50IGhhcyBkZWZpbmVkIHdpZHRoIGFuZCBtaW4td2lkdGg7XG4gICAqIC0gYGNvbGxhcHNlYDogdGhlIGNvbXBvbmVudCBhZGFwdHMgaXRzZWxmIHRvIGl0cyBpbm5lciBpbnB1dCBjb250ZW50LiAqL1xuICBAcHJvcGVydHkoeyByZWZsZWN0OiB0cnVlIH0pIHB1YmxpYyB3aWR0aDogJ2RlZmF1bHQnIHwgJ2NvbGxhcHNlJyA9ICdkZWZhdWx0JztcblxuICAvKiogV2hldGhlciB0byB2aXN1YWxseSBoaWRlIHRoZSBsYWJlbC4gSWYgaGlkZGVuLCBzY3JlZW4gcmVhZGVycyB3aWxsIHN0aWxsIHJlYWQgaXQuICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2hpZGRlbi1sYWJlbCcsIHJlZmxlY3Q6IHRydWUsIHR5cGU6IEJvb2xlYW4gfSkgcHVibGljIGhpZGRlbkxhYmVsID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhYmVsIHNob3VsZCBmbG9hdC4gSWYgYWN0aXZhdGVkLCB0aGUgcGxhY2Vob2xkZXIgb2YgdGhlIGlucHV0IGlzIGhpZGRlbi4gKi9cbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZmxvYXRpbmctbGFiZWwnLCByZWZsZWN0OiB0cnVlLCB0eXBlOiBCb29sZWFuIH0pIHB1YmxpYyBmbG9hdGluZ0xhYmVsID1cbiAgICBmYWxzZTtcblxuICAvKiogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGdldCB0aGUgYGVycm9yYCBzbG90LiAqL1xuICBAc3RhdGUoKSBwcml2YXRlIF9lcnJvckVsZW1lbnRzOiBFbGVtZW50W10gPSBbXTtcblxuICAvKiogT3JpZ2luYWwgYXJpYS1kZXNjcmliZWRieSB2YWx1ZSBvZiB0aGUgc2xvdHRlZCBpbnB1dCBlbGVtZW50LiAqL1xuICBwcml2YXRlIF9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5Pzogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogUmVmZXJlbmNlIHRvIHRoZSBzbG90dGVkIGlucHV0IGVsZW1lbnQuICovXG4gIEBzdGF0ZSgpIHByaXZhdGUgX2lucHV0PzogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQ7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgc2xvdHRlZCBsYWJlbCBlbGVtZW50cy4gKi9cbiAgQHN0YXRlKCkgcHJpdmF0ZSBfbGFiZWw/OiBIVE1MTGFiZWxFbGVtZW50O1xuXG4gIC8qKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LiAqL1xuICBwdWJsaWMgZ2V0IGlucHV0RWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFNlbGVjdEVsZW1lbnQgfCBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBfYWJvcnQgPSBuZXcgU2JiQ29ubmVjdGVkQWJvcnRDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgLyoqXG4gICAqIExpc3RlbnMgdG8gdGhlIGNoYW5nZXMgb24gYHJlYWRvbmx5YCBhbmQgYGRpc2FibGVkYCBhdHRyaWJ1dGVzIG9mIGA8aW5wdXQ+YC5cbiAgICovXG4gIHByaXZhdGUgX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyID0gbmV3IEFnbm9zdGljTXV0YXRpb25PYnNlcnZlcihcbiAgICAobXV0YXRpb25zOiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICBpZiAobXV0YXRpb25zLnNvbWUoKG0pID0+IG0udHlwZSA9PT0gJ2F0dHJpYnV0ZXMnKSkge1xuICAgICAgICB0aGlzLl9yZWFkSW5wdXRTdGF0ZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICk7XG5cbiAgcHJpdmF0ZSBfaW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGNvbm5lY3RlZENhbGxiYWNrKCk6IHZvaWQge1xuICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7XG4gICAgY29uc3Qgc2lnbmFsID0gdGhpcy5fYWJvcnQuc2lnbmFsO1xuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcignd2lsbE9wZW4nLCAoZTogQ3VzdG9tRXZlbnQ8dm9pZD4pID0+IHRoaXMuX29uUG9wdXBPcGVuKGUpLCB7IHNpZ25hbCB9KTtcbiAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2RpZENsb3NlJywgKGU6IEN1c3RvbUV2ZW50PHZvaWQ+KSA9PiB0aGlzLl9vblBvcHVwQ2xvc2UoZSksIHsgc2lnbmFsIH0pO1xuICAgIHRoaXMuX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpO1xuICAgIHRoaXMuX3N5bmNOZWdhdGl2ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCduZWdhdGl2ZScpKSB7XG4gICAgICB0aGlzLl9zeW5jTmVnYXRpdmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzY29ubmVjdGVkQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX29uUG9wdXBPcGVuKHsgdGFyZ2V0IH06IEN1c3RvbUV2ZW50PHZvaWQ+KTogdm9pZCB7XG4gICAgaWYgKHN1cHBvcnRlZFBvcHVwVGFnTmFtZXMuaW5jbHVkZXMoKHRhcmdldCBhcyBIVE1MRWxlbWVudCkubG9jYWxOYW1lKSkge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaGFzLXBvcHVwLW9wZW4nLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9vblBvcHVwQ2xvc2UoeyB0YXJnZXQgfTogQ3VzdG9tRXZlbnQ8dm9pZD4pOiB2b2lkIHtcbiAgICBpZiAoc3VwcG9ydGVkUG9wdXBUYWdOYW1lcy5pbmNsdWRlcygodGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5sb2NhbE5hbWUpKSB7XG4gICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1oYXMtcG9wdXAtb3BlbicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVdyYXBwZXJDbGljayhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNCdXR0b25PclBvcHVwKGV2ZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHRoaXMuX2lucHV0LmNsaWNrKCk7XG4gICAgICB0aGlzLl9pbnB1dC5mb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5sb2NhbE5hbWUgIT09ICdsYWJlbCcpIHtcbiAgICAgIHRoaXMuX2lucHV0Py5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzQnV0dG9uT3JQb3B1cChldmVudDogRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZXZlbnRcbiAgICAgIC5jb21wb3NlZFBhdGgoKVxuICAgICAgLnNvbWUoXG4gICAgICAgIChlbCkgPT5cbiAgICAgICAgICAoZWwgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQgJiYgZWwuZ2V0QXR0cmlidXRlKCdyb2xlJykgPT09ICdidXR0b24nKSB8fFxuICAgICAgICAgIHRoaXMuX2V4Y2x1ZGVkRm9jdXNFbGVtZW50cy5pbmNsdWRlcygoZWwgYXMgSFRNTEVsZW1lbnQpLmxvY2FsTmFtZSksXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfb25TbG90TGFiZWxDaGFuZ2UoKTogdm9pZCB7XG4gICAgY29uc3QgbGFiZWxzID0gQXJyYXkuZnJvbSh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ2xhYmVsJykpO1xuICAgIGlmIChpbXBvcnQubWV0YS5lbnYuREVWICYmIGxhYmVscy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBEZXRlY3RlZCBtb3JlIHRoYW4gb25lIGxhYmVsIGluIHNiYi1mb3JtLWZpZWxkIyR7dGhpcy5pZH0uIE9ubHkgb25lIGxhYmVsIGlzIHN1cHBvcnRlZC5gLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fbGFiZWwgPSBsYWJlbHNbMF07XG4gICAgdGhpcy5fc3luY0xhYmVsSW5wdXRSZWZlcmVuY2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogSXQgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGFzc2lnbiB0aGUgYXR0cmlidXRlcyBvZiBgPGlucHV0PmAgdG8gYF9pZGAgYW5kIGBfaW5wdXRgIGFuZCB0byBvYnNlcnZlIHRoZSBuYXRpdmUgcmVhZG9ubHkgYW5kIGRpc2FibGVkIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RJbnB1dENoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9pbnB1dCA9IChldmVudC50YXJnZXQgYXMgSFRNTFNsb3RFbGVtZW50KVxuICAgICAgLmFzc2lnbmVkRWxlbWVudHMoKVxuICAgICAgLmZpbmQoKGUpOiBlIGlzIEhUTUxFbGVtZW50ID0+IHRoaXMuX3N1cHBvcnRlZElucHV0RWxlbWVudHMuaW5jbHVkZXMoZS5sb2NhbE5hbWUpKTtcbiAgICB0aGlzLl9hc3NpZ25TbG90cygpO1xuXG4gICAgaWYgKCF0aGlzLl9pbnB1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX29yaWdpbmFsSW5wdXRBcmlhRGVzY3JpYmVkYnkgPSB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICB0aGlzLl9hcHBseUFyaWFEZXNjcmliZWRieSgpO1xuICAgIHRoaXMuX3JlYWRJbnB1dFN0YXRlKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJJbnB1dExpc3RlbmVyKCk7XG5cbiAgICBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAndGV4dGFyZWEnKSB7XG4gICAgICB0aGlzLl9pbnB1dC5zZXRBdHRyaWJ1dGUoJ3Jvd3MnLCB0aGlzLl9pbnB1dC5nZXRBdHRyaWJ1dGUoJ3Jvd3MnKSB8fCAnMycpO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1GaWVsZEF0dHJpYnV0ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9mb3JtRmllbGRBdHRyaWJ1dGVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2lucHV0LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ3JlYWRvbmx5JywgJ2Rpc2FibGVkJywgJ2NsYXNzJywgJ2RhdGEtc2JiLWludmFsaWQnXSxcbiAgICB9KTtcbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZGF0YS1pbnB1dC10eXBlJywgdGhpcy5faW5wdXQubG9jYWxOYW1lKTtcbiAgICB0aGlzLl9zeW5jTGFiZWxJbnB1dFJlZmVyZW5jZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNMYWJlbElucHV0UmVmZXJlbmNlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0IHx8ICF0aGlzLl9sYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdXBwb3J0ZWROYXRpdmVJbnB1dEVsZW1lbnRzLmluY2x1ZGVzKHRoaXMuX2lucHV0LmxvY2FsTmFtZSkpIHtcbiAgICAgIC8vIEZvciBuYXRpdmUgaW5wdXQgZWxlbWVudHMgd2UgdXNlIHRoZSBgZm9yYCBhdHRyaWJ1dGUgb24gdGhlIGxhYmVsIHRvIHJlZmVyZW5jZSB0aGUgaW5wdXRcbiAgICAgIC8vIHZpYSBpZCByZWZlcmVuY2UuXG4gICAgICBpZiAoIXRoaXMuX2lucHV0LmlkKSB7XG4gICAgICAgIHRoaXMuX2lucHV0LmlkID0gYHNiYi1mb3JtLWZpZWxkLWlucHV0LSR7bmV4dElkKyt9YDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbGFiZWwuaHRtbEZvciA9IHRoaXMuX2lucHV0LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3Igbm9uLW5hdGl2ZSBpbnB1dCBlbGVtZW50cywgdGhhdCBkbyBub3Qgc3VwcG9ydCByZWZlcmVuY2VzIHZpYSB0aGUgbGFiZWwgZm9yIGF0dHJpYnV0ZSxcbiAgICAgIC8vIHdlIHVzZSBhcmlhLWxhYmVsbGVkYnkgb24gdGhlIGlucHV0IGVsZW1lbnQgdG8gcmVmZXJlbmNlIHRoZSBsYWJlbCBlbGVtZW50IHZpYSBpZC5cbiAgICAgIGlmICghdGhpcy5fbGFiZWwuaWQpIHtcbiAgICAgICAgdGhpcy5fbGFiZWwuaWQgPSBgc2JiLWZvcm0tZmllbGQtbGFiZWwtJHtuZXh0SWQrK31gO1xuICAgICAgfVxuICAgICAgY29uc3QgbGFiZWxsZWRieSA9XG4gICAgICAgIHRoaXMuX2lucHV0XG4gICAgICAgICAgLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JylcbiAgICAgICAgICA/LnNwbGl0KCcgJylcbiAgICAgICAgICAuZmlsdGVyKChsKSA9PiAhIWwgJiYgbCAhPT0gdGhpcy5fbGFiZWwhLmlkKSA/PyBbXTtcbiAgICAgIHRoaXMuX2lucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5JywgWy4uLmxhYmVsbGVkYnksIHRoaXMuX2xhYmVsLmlkXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3JlZ2lzdGVySW5wdXRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2lucHV0QWJvcnRDb250cm9sbGVyLmFib3J0KCk7XG4gICAgdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCk7XG5cbiAgICAvLyBUaW1lb3V0IG5lZWRlZCB0byBoYXZlIHZhbHVlIHVwZGF0ZWRcbiAgICB0aGlzLl9nZXRJbnB1dEZvcm0oKT8uYWRkRXZlbnRMaXN0ZW5lcigncmVzZXQnLCAoKSA9PiBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVzZXQoKSksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgdGhpcy5faW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKSwge1xuICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCksIHtcbiAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgbGV0IGlucHV0Rm9jdXNFbGVtZW50ID0gdGhpcy5faW5wdXQ7XG5cbiAgICBpZiAodGhpcy5faW5wdXQubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlQ2hhbmdlJywgKCkgPT4gdGhpcy5fY2hlY2tBbmRVcGRhdGVJbnB1dEVtcHR5KCksIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9KTtcblxuICAgICAgaW5wdXRGb2N1c0VsZW1lbnQgPSAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuaW5wdXRFbGVtZW50O1xuICAgIH1cblxuICAgIGlucHV0Rm9jdXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnZm9jdXNpbicsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWlucHV0LWZvY3VzZWQnLCB0cnVlKTtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgJ2RhdGEtZm9jdXMtb3JpZ2luJyxcbiAgICAgICAgICAoc2JiSW5wdXRNb2RhbGl0eURldGVjdG9yLm1vc3RSZWNlbnRNb2RhbGl0eSBhcyBTYmJJbnB1dE1vZGFsaXR5KSA/PyAnJyxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNpZ25hbDogdGhpcy5faW5wdXRBYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaW5wdXRGb2N1c0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdmb2N1c291dCcsXG4gICAgICAoKSA9PlxuICAgICAgICBbJ2RhdGEtZm9jdXMtb3JpZ2luJywgJ2RhdGEtaW5wdXQtZm9jdXNlZCddLmZvckVhY2goKG5hbWUpID0+IHRoaXMucmVtb3ZlQXR0cmlidXRlKG5hbWUpKSxcbiAgICAgIHtcbiAgICAgICAgc2lnbmFsOiB0aGlzLl9pbnB1dEFib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnB1dEZvcm0oKTogSFRNTEZvcm1FbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX2lucHV0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCB0aGlzLl9pbnB1dCBpbnN0YW5jZW9mIEhUTUxTZWxlY3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5wdXQuZm9ybTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0Py5jbG9zZXN0KCdmb3JtJyk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTogdm9pZCB7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoXG4gICAgICAnZGF0YS1pbnB1dC1lbXB0eScsXG4gICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRFbGVtZW50cy5pbmNsdWRlcyh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lIGFzIHN0cmluZykgJiZcbiAgICAgICAgdGhpcy5faXNJbnB1dEVtcHR5KCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRFbXB0eSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLl9mbG9hdGluZ0xhYmVsU3VwcG9ydGVkSW5wdXRUeXBlcy5pbmNsdWRlcyh0aGlzLl9pbnB1dC50eXBlKSAmJlxuICAgICAgICB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5faW5wdXQgaW5zdGFuY2VvZiBIVE1MU2VsZWN0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lucHV0LnNlbGVjdGVkT3B0aW9ucz8uaXRlbSgwKT8ubGFiZWw/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9pbnB1dD8ubG9jYWxOYW1lID09PSAnc2JiLXNlbGVjdCcpIHtcbiAgICAgIHJldHVybiAodGhpcy5faW5wdXQgYXMgU2JiU2VsZWN0RWxlbWVudCkuZ2V0RGlzcGxheVZhbHVlKCk/LnRyaW0oKSA9PT0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9pc0lucHV0VmFsdWVFbXB0eSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2lzSW5wdXRWYWx1ZUVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuX2lucHV0IGFzIHsgdmFsdWU6IHN0cmluZyB9KS52YWx1ZTtcbiAgICByZXR1cm4gWycnLCB1bmRlZmluZWQsIG51bGxdLmluY2x1ZGVzKHZhbHVlKSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Fzc2lnblNsb3RzKCk6IHZvaWQge1xuICAgIHRoaXMucXVlcnlTZWxlY3RvckFsbCgnbGFiZWw6bm90KFtzbG90XSknKS5mb3JFYWNoKChlKSA9PiBlLnNldEF0dHJpYnV0ZSgnc2xvdCcsICdsYWJlbCcpKTtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoJ3NiYi1mb3JtLWVycm9yOm5vdChbc2xvdF0pJykuZm9yRWFjaCgoZSkgPT5cbiAgICAgIGUuc2V0QXR0cmlidXRlKCdzbG90JywgJ2Vycm9yJyksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlYWRJbnB1dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW5wdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtcmVhZG9ubHknLCB0aGlzLl9pbnB1dC5oYXNBdHRyaWJ1dGUoJ3JlYWRvbmx5JykpO1xuICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWRpc2FibGVkJywgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkaXNhYmxlZCcpKTtcbiAgICB0aGlzLnRvZ2dsZUF0dHJpYnV0ZShcbiAgICAgICdkYXRhLWludmFsaWQnLFxuICAgICAgdGhpcy5faW5wdXQuaGFzQXR0cmlidXRlKCdkYXRhLXNiYi1pbnZhbGlkJykgfHxcbiAgICAgICAgdGhpcy5faW5wdXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdzYmItaW52YWxpZCcpIHx8XG4gICAgICAgICh0aGlzLl9pbnB1dC5jbGFzc0xpc3QuY29udGFpbnMoJ25nLXRvdWNoZWQnKSAmJlxuICAgICAgICAgIHRoaXMuX2lucHV0LmNsYXNzTGlzdC5jb250YWlucygnbmctaW52YWxpZCcpKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBzZXQgdGhlIGFyaWEtZGVzY3JpYmVkYnkgYXR0cmlidXRlIGZvciB0aGUgc2xvdHRlZCBpbnB1dCByZWZlcmVuY2luZyBhdmFpbGFibGUgPHNiYi1mb3JtLWVycm9yPiBpbnN0YW5jZXMuXG4gICAqL1xuICBwcml2YXRlIF9vblNsb3RFcnJvckNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvckVsZW1lbnRzID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MU2xvdEVsZW1lbnQpLmFzc2lnbmVkRWxlbWVudHMoKTtcblxuICAgIGZvciAoY29uc3QgZWwgb2YgdGhpcy5fZXJyb3JFbGVtZW50cykge1xuICAgICAgLy8gQWx0aG91Z2ggYSBmb3JtIGVycm9yIGFzc2lnbnMgYW4gaWQgaXRzZWxmLCB3ZSBuZWVkIHRvIGJlIGVhcmxpZXIgYnkgY3JlYXRpbmcgb25lIGhlcmVcbiAgICAgIGlmICghZWwuaWQpIHtcbiAgICAgICAgZWwuaWQgPSBgc2JiLWZvcm0tZmllbGQtZXJyb3ItJHsrK25leHRGb3JtRmllbGRFcnJvcklkfWA7XG4gICAgICB9XG4gICAgICBpZiAoIWVsLnJvbGUpIHtcbiAgICAgICAgLy8gSW5zdGVhZCBvZiBkZWZpbmluZyBhIGNvbnRhaW5lciB3aXRoIGFuIGFyaWEtbGl2ZSByZWdpb24gYXMgZXhwZWN0ZWQsIHdlIGhhZCB0byBjaGFuZ2VcbiAgICAgICAgLy8gc2V0dGluZyBpdCBmb3IgZXZlcnkgc2xvdHRlZCBlbGVtZW50IHRvIHByb3Blcmx5IHdvcmsgaW4gYWxsIGJyb3dzZXJzIGFuZCBzY3JlZW4gcmVhZGVyIGNvbWJpbmF0aW9ucy5cbiAgICAgICAgZWwucm9sZSA9ICdzdGF0dXMnO1xuICAgICAgICBpZiAoaXNGaXJlZm94KSB7XG4gICAgICAgICAgZWwuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3N0YXR1cycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2FwcGx5QXJpYURlc2NyaWJlZGJ5KCk7XG4gICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtaGFzLWVycm9yJywgISF0aGlzLl9lcnJvckVsZW1lbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5fc3luY05lZ2F0aXZlKCk7XG4gIH1cblxuICBwcml2YXRlIF9hcHBseUFyaWFEZXNjcmliZWRieSgpOiB2b2lkIHtcbiAgICBjb25zdCBpZHMgPSBbXTtcblxuICAgIGlmICh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KSB7XG4gICAgICBpZHMucHVzaCh0aGlzLl9vcmlnaW5hbElucHV0QXJpYURlc2NyaWJlZGJ5KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZXJyb3JFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2Vycm9yRWxlbWVudHMuZm9yRWFjaCgoZSkgPT4gaWRzLnB1c2goZS5pZCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGFyaWFEZXNjcmliZWRieSA9IGlkcy5qb2luKCcgJyk7XG4gICAgaWYgKHRoaXMuX2lucHV0KSB7XG4gICAgICBzZXRPclJlbW92ZUF0dHJpYnV0ZSh0aGlzLl9pbnB1dCwgJ2FyaWEtZGVzY3JpYmVkYnknLCBhcmlhRGVzY3JpYmVkYnkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBNYW51YWxseSByZXNldCB0aGUgZm9ybSBmaWVsZC4gQ3VycmVudGx5LCB0aGlzIG9ubHkgcmVzZXRzIHRoZSBmbG9hdGluZyBsYWJlbC4gKi9cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoZWNrQW5kVXBkYXRlSW5wdXRFbXB0eSgpO1xuICB9XG5cbiAgLyoqIE1hbnVhbGx5IGNsZWFycyB0aGUgaW5wdXQgdmFsdWUuIEl0IG9ubHkgd29ya3MgZm9yIGlucHV0cywgc2VsZWN0cyBhcmUgbm90IHN1cHBvcnRlZC4gKi9cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmICgodGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpICE9PSAnaW5wdXQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgICh0aGlzLl9pbnB1dCBhcyB7IHZhbHVlOiBzdHJpbmcgfSkudmFsdWUgPSAnJztcbiAgICB0aGlzLl9jaGVja0FuZFVwZGF0ZUlucHV0RW1wdHkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlICdpbnB1dEVsZW1lbnQnIHByb3BlcnR5IGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBnZXRJbnB1dEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IEhUTUxTZWxlY3RFbGVtZW50IHwgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9pbnB1dDtcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNOZWdhdGl2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGw/LihcbiAgICAgICdzYmItZm9ybS1lcnJvcixzYmItbWluaS1idXR0b24sc2JiLXBvcG92ZXItdHJpZ2dlcixzYmItZm9ybS1maWVsZC1jbGVhcixzYmItZGF0ZXBpY2tlci1uZXh0LWRheSxzYmItZGF0ZXBpY2tlci1wcmV2aW91cy1kYXksc2JiLWRhdGVwaWNrZXItdG9nZ2xlLHNiYi1zZWxlY3Qsc2JiLWF1dG9jb21wbGV0ZSxzYmItYXV0b2NvbXBsZXRlLWdyaWQnLFxuICAgICkuZm9yRWFjaCgoZWxlbWVudCkgPT4gZWxlbWVudC50b2dnbGVBdHRyaWJ1dGUoJ25lZ2F0aXZlJywgdGhpcy5uZWdhdGl2ZSkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX3NwYWNlLXdyYXBwZXJcIj5cbiAgICAgICAgJHsvKiBRdWVyaWVkIGJ5IGlkIGZyb20gdGhlIGF1dG9jb21wbGV0ZS9zZWxlY3QgdG8gYmUgdXNlZCBhcyB0aGUgYW5jaG9yIGVsZW1lbnQgKi8gJyd9XG4gICAgICAgIDxkaXYgQGNsaWNrPSR7dGhpcy5faGFuZGxlV3JhcHBlckNsaWNrfSBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX193cmFwcGVyXCIgaWQ9XCJvdmVybGF5LWFuY2hvclwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJwcmVmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9faW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1zcGFjZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiYi1mb3JtLWZpZWxkX19sYWJlbC1lbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJsYWJlbFwiIEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90TGFiZWxDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgICAgICAke3RoaXMub3B0aW9uYWxcbiAgICAgICAgICAgICAgICAgID8gaHRtbGAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+ICR7aTE4bk9wdGlvbmFsW3RoaXMuX2xhbmd1YWdlLmN1cnJlbnRdfSA8L3NwYW4+YFxuICAgICAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2lucHV0XCI+XG4gICAgICAgICAgICAgIDxzbG90IEBzbG90Y2hhbmdlPSR7dGhpcy5fb25TbG90SW5wdXRDaGFuZ2V9Pjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgJHtbJ3NlbGVjdCcsICdzYmItc2VsZWN0J10uaW5jbHVkZXModGhpcy5faW5wdXQ/LmxvY2FsTmFtZSBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgID8gaHRtbGA8c2JiLWljb25cbiAgICAgICAgICAgICAgICAgIG5hbWU9XCJjaGV2cm9uLXNtYWxsLWRvd24tc21hbGxcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItZm9ybS1maWVsZF9fc2VsZWN0LWlucHV0LWljb25cIlxuICAgICAgICAgICAgICAgID48L3NiYi1pY29uPmBcbiAgICAgICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJzdWZmaXhcIiBAc2xvdGNoYW5nZT0ke3RoaXMuX3N5bmNOZWdhdGl2ZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLWZvcm0tZmllbGRfX2Vycm9yXCI+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImVycm9yXCIgQHNsb3RjaGFuZ2U9JHt0aGlzLl9vblNsb3RFcnJvckNoYW5nZX0+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1mb3JtLWZpZWxkJzogU2JiRm9ybUZpZWxkRWxlbWVudDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -1 +1 @@
1
- {"version":3,"file":"icon-base.d.ts","sourceRoot":"","sources":["../../../../src/elements/icon/icon-base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAYvC;;;GAGG;AACH,8BAIsB,WAAY,SAAQ,UAAU;IAClD,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAa;IAE7C,OAAO,CAAC,aAAa,CAAiC;IAE/D;;OAEG;IACM,OAAO,CAAC,QAAQ,CAAC,CAAuD;IAEjF;;;;;OAKG;IAC2D,UAAU,UAAS;cAEjE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAkB5C,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9E,OAAO,CAAC,cAAc;cAgBH,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAK3D,MAAM,IAAI,cAAc;CAS5C"}
1
+ {"version":3,"file":"icon-base.d.ts","sourceRoot":"","sources":["../../../../src/elements/icon/icon-base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1E,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAYvC;;;GAGG;AACH,8BAIsB,WAAY,SAAQ,UAAU;IAClD,OAAuB,MAAM,EAAE,cAAc,CAAS;IACtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAa;IAE7C,OAAO,CAAC,aAAa,CAAiC;IAE/D;;OAEG;IACM,OAAO,CAAC,QAAQ,CAAC,CAAuD;IAEjF;;;;;OAKG;IAC2D,UAAU,UAAS;cAEjE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;cAkB5C,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9E,OAAO,CAAC,cAAc;cAgBH,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAM3D,MAAM,IAAI,cAAc;CAS5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../src/elements/icon/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,qBACa,cAAe,SAAQ,WAAW;IAC7C;;;;OAIG;IACiC,IAAI,EAAG,MAAM,CAAC;IAElD,OAAO,CAAC,iBAAiB,CAAM;cAEN,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBpE,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQzD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;CAM/E;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../../src/elements/icon/icon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,qBACa,cAAe,SAAQ,WAAW;IAC7C;;;;OAIG;IACiC,IAAI,EAAG,MAAM,CAAC;IAElD,OAAO,CAAC,iBAAiB,CAAM;cAEN,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAiBpE,UAAU,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;cAQzD,YAAY,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;CAO/E;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,UAAU,EAAE,cAAc,CAAC;KAC5B;CACF"}
@@ -302,4 +302,4 @@ export {
302
302
  isValid,
303
303
  validateContent
304
304
  };
305
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ljb24vaWNvbi12YWxpZGF0ZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tcmVxdWVzdC50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tYmFzZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24udHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaWNvbi9pY29uLW5hbWUtbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNTdHIgPSAodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xuXG4vKipcbiAqIFNhbml0aXplcyB0aGUgU1ZHIGVsZW1lbnQgYW5kIGFsbCBpdHMgY2hpbGQgbm9kZXMuXG4gKiBEb2VzIG5vdCBhbGxvdyBgPHNjcmlwdD5gIGVsZW1lbnRzLCBvciBhbnkgYXR0cmlidXRlcyB0aGF0IHN0YXJ0IHdpdGggYG9uYCwgc3VjaCBhcyBgb25jbGlja2AuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkID0gKGVsbTogSFRNTEVsZW1lbnQpOiBib29sZWFuID0+IHtcbiAgaWYgKGVsbS5ub2RlVHlwZSA9PT0gMSkge1xuICAgIC8vIGlzIGFuIEVsZW1lbnQgbm9kZSBsaWtlIDxkaXY+LCA8cD4gb3IgPHN2Zz5cbiAgICBpZiAoZWxtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzY3JpcHQnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZG8gbm90IGFsbG93IGF0dHJpYnV0ZXMgc3RhcnRpbmcgd2l0aCBgb25gXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbG0uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdmFsID0gZWxtLmF0dHJpYnV0ZXNbaV0ubmFtZTtcbiAgICAgIGlmIChpc1N0cih2YWwpICYmIHZhbC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ29uJykgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxtLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNWYWxpZChlbG0uY2hpbGROb2Rlc1tpXSBhcyBhbnkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgU1ZHIGNvbnRlbnQgYnkgY2hlY2tpbmcgdGhhdCBpdCBoYXMgb25seSBvbmUgcm9vdCBlbGVtZW50IGA8c3ZnPmAsXG4gKiBhZGRpbmcgdGhlIGBjb2xvci1pbW11dGFibGVgIGNsYXNzIGlmIHRoZSBgY29sb3JJbW11dGFibGVgIG9wdGlvbiBpcyBzZXQgdG8gYHRydWVgLFxuICogYW5kIHNhbml0aXppbmcgdGhlIHByb3ZpZGVkIGNvbnRlbnQgYXMgbG9uZyBhcyB0aGUgYHNhbml0aXplYCBwcm9wZXJ0eSBpcyBub3QgZXhwbGljaXRseSBzZXQgdG8gYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlQ29udGVudCA9IChcbiAgc3ZnQ29udGVudDogc3RyaW5nLFxuICBzYW5pdGl6ZSA9IHRydWUsXG4gIGNvbG9ySW1tdXRhYmxlID0gZmFsc2UsXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlubmVySFRNTCA9IHN2Z0NvbnRlbnQ7XG5cbiAgZm9yIChsZXQgaSA9IGRpdi5jaGlsZE5vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGRpdi5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdzdmcnKSB7XG4gICAgICBkaXYucmVtb3ZlQ2hpbGQoZGl2LmNoaWxkTm9kZXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3Qgb25seSBoYXZlIDEgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHN2Z0VsbSA9IGRpdi5maXJzdEVsZW1lbnRDaGlsZDtcblxuICBpZiAoc3ZnRWxtICYmIHN2Z0VsbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc3ZnJykge1xuICAgIGlmIChjb2xvckltbXV0YWJsZSAmJiAhc3ZnRWxtLmNsYXNzTGlzdC5jb250YWlucygnY29sb3ItaW1tdXRhYmxlJykpIHtcbiAgICAgIHN2Z0VsbS5jbGFzc0xpc3QuYWRkKCdjb2xvci1pbW11dGFibGUnKTtcbiAgICB9XG5cbiAgICAvLyBkbyBub3Qgc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKHNhbml0aXplID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gICAgfVxuXG4gICAgLy8gc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKGlzVmFsaWQoc3ZnRWxtIGFzIGFueSkpIHtcbiAgICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59O1xuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkljb25Db25maWcgfSBmcm9tICcuLi9jb3JlL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9jb25maWcuanMnO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZUNvbnRlbnQgfSBmcm9tICcuL2ljb24tdmFsaWRhdGUuanMnO1xuXG5jb25zdCBpY29uQ2RuID0gJ2h0dHBzOi8vaWNvbnMuYXBwLnNiYi5jaC8nO1xuXG5jb25zdCBpY29uTmFtZXNwYWNlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KClcbiAgLnNldCgnZGVmYXVsdCcsIGAke2ljb25DZG59aWNvbnMvYClcbiAgLnNldCgncGljdG8nLCBgJHtpY29uQ2RufXBpY3RvL2ApO1xuY29uc3QgcmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxhbnk+PigpO1xuXG4vKiogRmV0Y2hlcyBpY29uIHN2ZyBjb250ZW50IGZyb20gcHJvdmlkZXJzIGFuZCBhc3NlcnRzIG9ubHkgb25lIHJlcXVlc3QgcGVyIGljb24gaXMgbWFkZS4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdmdDb250ZW50ID0gKFxuICBuYW1lc3BhY2U6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICBzYW5pdGl6ZTogYm9vbGVhbixcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGNvbmZpZzogU2JiSWNvbkNvbmZpZyA9IHJlYWRDb25maWcoKS5pY29uID8/IHt9O1xuXG4gIGNvbnN0IHJlc29sdmVkTmFtZXNwYWNlID0gY29uZmlnLm5hbWVzcGFjZXM/LmdldChuYW1lc3BhY2UpID8/IGljb25OYW1lc3BhY2VzLmdldChuYW1lc3BhY2UpO1xuICBpZiAocmVzb2x2ZWROYW1lc3BhY2UgPT0gbnVsbCkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYFVuYWJsZSB0byBmaW5kIHRoZSBuYW1lc3BhY2UgXCIke25hbWVzcGFjZX1cIi4gUGxlYXNlIHJlZ2lzdGVyIHlvdXIgY3VzdG9tIG5hbWVzcGFjZS5gLFxuICAgICk7XG4gIH1cbiAgY29uc3QgdXJsID0gYCR7cmVzb2x2ZWROYW1lc3BhY2V9JHtuYW1lfS5zdmdgO1xuXG4gIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHJlcXVlc3QgZm9yIHRoaXMgdXJsXG4gIGxldCByZXEgPSByZXF1ZXN0cy5nZXQodXJsKTtcblxuICBpZiAoIXJlcSkge1xuICAgIC8vIFdlIGNhbm5vdCBzdXBwb3J0IHNlcnZlciBzaWRlIHJlbmRlcmVkIGljb25zICh5ZXQpLCBhcyB0aGUgdmFsaWRhdGlvblxuICAgIC8vIGlzIGRvbmUgdmlhIERPTSwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgU1NSLlxuICAgIGlmICh0eXBlb2YgZmV0Y2ggIT09ICd1bmRlZmluZWQnICYmICFpc1NlcnZlcikge1xuICAgICAgY29uc3QgaW50ZXJjZXB0b3IgPSBjb25maWcuaW50ZXJjZXB0b3IgPz8gKChpKSA9PiBpLnJlcXVlc3QoKSk7XG5cbiAgICAgIHJlcSA9IGludGVyY2VwdG9yKHtcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBuYW1lLFxuICAgICAgICB1cmwsXG4gICAgICAgIHJlcXVlc3Q6ICgpID0+XG4gICAgICAgICAgZmV0Y2godXJsKVxuICAgICAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGljb24gJyArIG5hbWVzcGFjZSArICc6JyArIG5hbWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbnRlbnQoYXdhaXQgcmVzcG9uc2UudGV4dCgpLCBzYW5pdGl6ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgLy8gQ2FjaGUgZm9yIHRoZSBzYW1lIHJlcXVlc3RzXG4gICAgICByZXF1ZXN0cy5zZXQodXJsLCByZXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNvbHZlIHByb21pc2UgZm9yIHNzciBzY2VuYXJpb3NcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXE7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RpdmVSZXN1bHQgfSBmcm9tICdsaXQvZGlyZWN0aXZlLmpzJztcbmltcG9ydCB0eXBlIHsgVW5zYWZlSFRNTERpcmVjdGl2ZSB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3Vuc2FmZS1odG1sLmpzJztcbmltcG9ydCB7IHVuc2FmZUhUTUwgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy91bnNhZmUtaHRtbC5qcyc7XG5pbXBvcnQgeyB1bnRpbCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3VudGlsLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBnZXRTdmdDb250ZW50IH0gZnJvbSAnLi9pY29uLXJlcXVlc3QuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vaWNvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIEBjc3Nwcm9wIFstLXNiYi1pY29uLXN2Zy13aWR0aD1hdXRvXSAtIENhbiBiZSB1c2VkIHRvIHNldCBhIGN1c3RvbSB3aWR0aC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1pY29uLXN2Zy1oZWlnaHQ9YXV0b10gLSBDYW4gYmUgdXNlZCB0byBzZXQgYSBjdXN0b20gaGVpZ2h0LlxuICovXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICAnZGF0YS1uYW1lc3BhY2UnOiBTYmJJY29uQmFzZS5fZGVmYXVsdE5hbWVzcGFjZSxcbiAgJ2RhdGEtZW1wdHknOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiSWNvbkJhc2UgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kZWZhdWx0TmFtZXNwYWNlID0gJ2RlZmF1bHQnO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX3N2Z05hbWVzcGFjZSA9IFNiYkljb25CYXNlLl9kZWZhdWx0TmFtZXNwYWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiBzdmcgY29udGVudCByZW5kZXJlZCBvbiB0aGUgcGFnZTogPHN2Zz4uLi48L3N2Zz4uXG4gICAqL1xuICBAc3RhdGUoKSBwcml2YXRlIF9zdmdJY29uPzogUHJvbWlzZTxEaXJlY3RpdmVSZXN1bHQ8dHlwZW9mIFVuc2FmZUhUTUxEaXJlY3RpdmU+PjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCBTVkcgY29udGVudCB0aGF0IGlzIEhUVFAgZmV0Y2hlZCB3aWxsIG5vdCBiZSBjaGVja2VkXG4gICAqIGlmIHRoZSByZXNwb25zZSBTVkcgY29udGVudCBoYXMgYW55IGA8c2NyaXB0PmAgZWxlbWVudHMsIG9yIGFueSBhdHRyaWJ1dGVzXG4gICAqIHRoYXQgc3RhcnQgd2l0aCBgb25gLCBzdWNoIGFzIGBvbmNsaWNrYC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ25vLXNhbml0aXplJywgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgbm9TYW5pdGl6ZSA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkU3ZnSWNvbihpY29uTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFpY29uTmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFtuYW1lc3BhY2UsIG5hbWVdID0gdGhpcy5fc3BsaXRJY29uTmFtZShpY29uTmFtZSk7XG4gICAgdGhpcy5fc3ZnTmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLW5hbWVzcGFjZScsIHRoaXMuX3N2Z05hbWVzcGFjZSk7XG5cbiAgICBjb25zdCBzdmdJY29uID0gdGhpcy5mZXRjaFN2Z0ljb24odGhpcy5fc3ZnTmFtZXNwYWNlLCBuYW1lKTtcbiAgICB0aGlzLl9zdmdJY29uID0gc3ZnSWNvbi50aGVuKCh2KSA9PiB1bnNhZmVIVE1MKHYpKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZW1wdHknLCAhKGF3YWl0IHN2Z0ljb24pKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWVtcHR5JywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGZldGNoU3ZnSWNvbihuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0U3ZnQ29udGVudChuYW1lc3BhY2UsIG5hbWUsICF0aGlzLm5vU2FuaXRpemUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3BsaXRJY29uTmFtZShpY29uTmFtZTogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nXSB7XG4gICAgaWYgKCFpY29uTmFtZSkge1xuICAgICAgcmV0dXJuIFsnJywgJyddO1xuICAgIH1cbiAgICBjb25zdCBwYXJ0cyA9IGljb25OYW1lLnNwbGl0KCc6Jyk7XG4gICAgc3dpdGNoIChwYXJ0cy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgLy8gVXNlIGRlZmF1bHQgbmFtZXNwYWNlIGlmIGVtcHR5LlxuICAgICAgICByZXR1cm4gW1NiYkljb25CYXNlLl9kZWZhdWx0TmFtZXNwYWNlLCBwYXJ0c1swXV07XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBwYXJ0cyBhcyBbc3RyaW5nLCBzdHJpbmddO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaWNvbiBuYW1lOiBcIiR7aWNvbk5hbWV9XCJgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCB0aGlzLmdldEF0dHJpYnV0ZSgncm9sZScpID8/ICdpbWcnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSByZW5kZXIoKTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiBodG1sYDxzcGFuIGNsYXNzPVwic2JiLWljb24taW5uZXJcIlxuICAgICAgPiR7dW50aWwoXG4gICAgICAgIHRoaXMuX3N2Z0ljb24sXG4gICAgICAgIC8vIFRvIHJlc2VydmUgc3BhY2UsIHdlIG5lZWQgYW4gZW1wdHkgc3ZnIHRvIGFwcGx5IGRpbWVuc2lvbiB0by5cbiAgICAgICAgaHRtbGA8c3ZnIHdpZHRoPVwiMFwiIGhlaWdodD1cIjBcIj48L3N2Zz5gLFxuICAgICAgKX08L3NwYW5cbiAgICA+YDtcbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eVZhbHVlcyB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjdXN0b21FbGVtZW50LCBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHsgU2JiSWNvbkJhc2UgfSBmcm9tICcuL2ljb24tYmFzZS5qcyc7XG5cbi8qKlxuICogSXQgZGlzcGxheXMgYW4gaWNvbiBsb2FkZWQgZnJvbSBhIHJlZ2lzdGVyZWQgbmFtZXNwYWNlLlxuICovXG5AY3VzdG9tRWxlbWVudCgnc2JiLWljb24nKVxuZXhwb3J0IGNsYXNzIFNiYkljb25FbGVtZW50IGV4dGVuZHMgU2JiSWNvbkJhc2Uge1xuICAvKipcbiAgICogVGhlIHByb3ZpZGVkIG5hbWUgY29uc2lzdGluZyBvZiB0aGUgbmFtZXNwYWNlIGFuZCB0aGUgbmFtZSBvZiB0aGUgaWNvbi5cbiAgICogSWYgdGhlIG5hbWVzcGFjZSBpcyBtaXNzaW5nLCB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgXCJzYmJcIiB3aWxsIGJlIHVzZWQuXG4gICAqIEUuZy4gYG5hbWVgICh3aWxsIHVzZSBcInNiYlwiIGFzIG5hbWVzcGFjZSkgb3IgYG5hbWVzcGFjZTpuYW1lYC5cbiAgICovXG4gIEBwcm9wZXJ0eSh7IHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIG5hbWUhOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdEFyaWFMYWJlbCA9ICcnO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBhc3luYyBmZXRjaFN2Z0ljb24obmFtZXNwYWNlOiBzdHJpbmcsIG5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8gSWYgdGhlIGljb24gaXMgY2hhbmdpbmcsIGFuZCB3ZSB3ZXJlIHVzaW5nIHRoZSBkZWZhdWx0QXJpYUxhYmVsLCByZXNldCBpdFxuICAgIGlmICh0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpID09PSB0aGlzLl9kZWZhdWx0QXJpYUxhYmVsKSB7XG4gICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpO1xuICAgIH1cblxuICAgIHRoaXMuX2RlZmF1bHRBcmlhTGFiZWwgPSBgSWNvbiAke25hbWUucmVwbGFjZSgvLS9nLCAnICcpfWA7XG5cbiAgICAvLyBnZW5lcmF0ZSBhIGRlZmF1bHQgbGFiZWwgaW4gY2FzZSB1c2VyIGRvZXMgbm90IHByb3ZpZGUgdGhlaXIgb3duXG4gICAgLy8gYW5kIGFyaWEtaGlkZGVuIGlzIHNldCB0byBcImZhbHNlXCJcbiAgICBpZiAodGhpcy5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykgPT09ICdmYWxzZScgJiYgIXRoaXMuaGFzQXR0cmlidXRlKCdhcmlhLWxhYmVsJykgJiYgbmFtZSkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aGlzLl9kZWZhdWx0QXJpYUxhYmVsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwZXIuZmV0Y2hTdmdJY29uKG5hbWVzcGFjZSwgbmFtZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgd2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci53aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcy5oYXMoJ25hbWUnKSkge1xuICAgICAgdGhpcy5sb2FkU3ZnSWNvbih0aGlzLm5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcbiAgICBpZiAoIXRoaXMuaGFzQXR0cmlidXRlKCdhcmlhLWhpZGRlbicpKSB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgIH1cbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLWljb24nOiBTYmJJY29uRWxlbWVudDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgaHRtbCwgdHlwZSBMaXRFbGVtZW50LCBub3RoaW5nLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEFic3RyYWN0Q29uc3RydWN0b3IgfSBmcm9tICcuLi9jb3JlL21peGlucy5qcyc7XG5cbmltcG9ydCAnLi9pY29uLmpzJztcblxuZXhwb3J0IGRlY2xhcmUgY2xhc3MgU2JiSWNvbk5hbWVNaXhpblR5cGUge1xuICBwdWJsaWMgaWNvbk5hbWU/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZW5kZXJJY29uU2xvdChjbGFzc25hbWU/OiBzdHJpbmcpOiBUZW1wbGF0ZVJlc3VsdDtcbn1cblxuLyoqXG4gKiBFbmhhbmNlIHlvdXIgY29tcG9uZW50IHdpdGggYW4gaWNvbk5hbWUgcHJvcGVydHkgYW5kIHByb3ZpZGVzIGEgdGVtcGxhdGUgZm9yIHRoZSBpY29uIHNsb3QuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbmV4cG9ydCBjb25zdCBTYmJJY29uTmFtZU1peGluID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnN0cnVjdG9yPExpdEVsZW1lbnQ+PihcbiAgc3VwZXJDbGFzczogVCxcbik6IEFic3RyYWN0Q29uc3RydWN0b3I8U2JiSWNvbk5hbWVNaXhpblR5cGU+ICYgVCA9PiB7XG4gIGFic3RyYWN0IGNsYXNzIFNiYkljb25OYW1lRWxlbWVudCBleHRlbmRzIHN1cGVyQ2xhc3MgaW1wbGVtZW50cyBQYXJ0aWFsPFNiYkljb25OYW1lTWl4aW5UeXBlPiB7XG4gICAgLyoqXG4gICAgICogVGhlIGljb24gbmFtZSB3ZSB3YW50IHRvIHVzZSwgY2hvb3NlIGZyb20gdGhlIHNtYWxsIGljb24gdmFyaWFudHNcbiAgICAgKiBmcm9tIHRoZSB1aS1pY29ucyBjYXRlZ29yeSBmcm9tIGhlcmVcbiAgICAgKiBodHRwczovL2ljb25zLmFwcC5zYmIuY2guXG4gICAgICovXG4gICAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnaWNvbi1uYW1lJywgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgaWNvbk5hbWU/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgcmVuZGVySWNvblNsb3QoY2xhc3NuYW1lPzogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQge1xuICAgICAgcmV0dXJuIGh0bWxgXG4gICAgICAgIDxzbG90IG5hbWU9XCJpY29uXCI+XG4gICAgICAgICAgJHt0aGlzLmljb25OYW1lXG4gICAgICAgICAgICA/IGh0bWxgPHNiYi1pY29uIG5hbWU9JHt0aGlzLmljb25OYW1lfSBjbGFzcz0ke2NsYXNzbmFtZSB8fCBub3RoaW5nfT48L3NiYi1pY29uPmBcbiAgICAgICAgICAgIDogbm90aGluZ31cbiAgICAgICAgPC9zbG90PlxuICAgICAgYDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gU2JiSWNvbk5hbWVFbGVtZW50IGFzIHVua25vd24gYXMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxTYmJJY29uTmFtZU1peGluVHlwZT4gJiBUO1xufTtcbiJdLCJuYW1lcyI6WyJfX2RlY29yYXRlQ2xhc3MiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE1BQU0sUUFBUSxDQUFDLFFBQTRCLE9BQU8sUUFBUTtBQU03QyxNQUFBLFVBQVUsQ0FBQyxRQUE4QjtBQUNoRCxNQUFBLElBQUksYUFBYSxHQUFHO0FBRXRCLFFBQUksSUFBSSxTQUFTLFlBQVksTUFBTSxVQUFVO0FBQ3BDLGFBQUE7QUFBQSxJQUNUO0FBR0EsYUFBUyxJQUFJLEdBQUcsSUFBSSxJQUFJLFdBQVcsUUFBUSxLQUFLO0FBQzlDLFlBQU0sTUFBTSxJQUFJLFdBQVcsQ0FBQyxFQUFFO0FBQzFCLFVBQUEsTUFBTSxHQUFHLEtBQUssSUFBSSxjQUFjLFFBQVEsSUFBSSxNQUFNLEdBQUc7QUFDaEQsZUFBQTtBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBRUEsYUFBUyxJQUFJLEdBQUcsSUFBSSxJQUFJLFdBQVcsUUFBUSxLQUFLO0FBQzlDLFVBQUksQ0FBQyxRQUFRLElBQUksV0FBVyxDQUFDLENBQVEsR0FBRztBQUMvQixlQUFBO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQ08sU0FBQTtBQUNUO0FBT08sTUFBTSxrQkFBa0IsQ0FDN0IsWUFDQSxXQUFXLE1BQ1gsaUJBQWlCLFVBQ047QUFDTCxRQUFBLE1BQU0sU0FBUyxjQUFjLEtBQUs7QUFDeEMsTUFBSSxZQUFZO0FBRWhCLFdBQVMsSUFBSSxJQUFJLFdBQVcsU0FBUyxHQUFHLEtB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
305
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2ljb24vaWNvbi12YWxpZGF0ZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tcmVxdWVzdC50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24tYmFzZS50cyIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9pY29uL2ljb24udHMiLCIuLi8uLi8uLi9zcmMvZWxlbWVudHMvaWNvbi9pY29uLW5hbWUtbWl4aW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNTdHIgPSAodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xuXG4vKipcbiAqIFNhbml0aXplcyB0aGUgU1ZHIGVsZW1lbnQgYW5kIGFsbCBpdHMgY2hpbGQgbm9kZXMuXG4gKiBEb2VzIG5vdCBhbGxvdyBgPHNjcmlwdD5gIGVsZW1lbnRzLCBvciBhbnkgYXR0cmlidXRlcyB0aGF0IHN0YXJ0IHdpdGggYG9uYCwgc3VjaCBhcyBgb25jbGlja2AuXG4gKi9cbmV4cG9ydCBjb25zdCBpc1ZhbGlkID0gKGVsbTogSFRNTEVsZW1lbnQpOiBib29sZWFuID0+IHtcbiAgaWYgKGVsbS5ub2RlVHlwZSA9PT0gMSkge1xuICAgIC8vIGlzIGFuIEVsZW1lbnQgbm9kZSBsaWtlIDxkaXY+LCA8cD4gb3IgPHN2Zz5cbiAgICBpZiAoZWxtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzY3JpcHQnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gZG8gbm90IGFsbG93IGF0dHJpYnV0ZXMgc3RhcnRpbmcgd2l0aCBgb25gXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbG0uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdmFsID0gZWxtLmF0dHJpYnV0ZXNbaV0ubmFtZTtcbiAgICAgIGlmIChpc1N0cih2YWwpICYmIHZhbC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ29uJykgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZWxtLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghaXNWYWxpZChlbG0uY2hpbGROb2Rlc1tpXSBhcyBhbnkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgU1ZHIGNvbnRlbnQgYnkgY2hlY2tpbmcgdGhhdCBpdCBoYXMgb25seSBvbmUgcm9vdCBlbGVtZW50IGA8c3ZnPmAsXG4gKiBhZGRpbmcgdGhlIGBjb2xvci1pbW11dGFibGVgIGNsYXNzIGlmIHRoZSBgY29sb3JJbW11dGFibGVgIG9wdGlvbiBpcyBzZXQgdG8gYHRydWVgLFxuICogYW5kIHNhbml0aXppbmcgdGhlIHByb3ZpZGVkIGNvbnRlbnQgYXMgbG9uZyBhcyB0aGUgYHNhbml0aXplYCBwcm9wZXJ0eSBpcyBub3QgZXhwbGljaXRseSBzZXQgdG8gYGZhbHNlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlQ29udGVudCA9IChcbiAgc3ZnQ29udGVudDogc3RyaW5nLFxuICBzYW5pdGl6ZSA9IHRydWUsXG4gIGNvbG9ySW1tdXRhYmxlID0gZmFsc2UsXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmlubmVySFRNTCA9IHN2Z0NvbnRlbnQ7XG5cbiAgZm9yIChsZXQgaSA9IGRpdi5jaGlsZE5vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGRpdi5jaGlsZE5vZGVzW2ldLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdzdmcnKSB7XG4gICAgICBkaXYucmVtb3ZlQ2hpbGQoZGl2LmNoaWxkTm9kZXNbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIG11c3Qgb25seSBoYXZlIDEgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHN2Z0VsbSA9IGRpdi5maXJzdEVsZW1lbnRDaGlsZDtcblxuICBpZiAoc3ZnRWxtICYmIHN2Z0VsbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc3ZnJykge1xuICAgIGlmIChjb2xvckltbXV0YWJsZSAmJiAhc3ZnRWxtLmNsYXNzTGlzdC5jb250YWlucygnY29sb3ItaW1tdXRhYmxlJykpIHtcbiAgICAgIHN2Z0VsbS5jbGFzc0xpc3QuYWRkKCdjb2xvci1pbW11dGFibGUnKTtcbiAgICB9XG5cbiAgICAvLyBkbyBub3Qgc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKHNhbml0aXplID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gICAgfVxuXG4gICAgLy8gc2FuaXRpemUgdGhlIHN2ZyBlbGVtZW50XG4gICAgaWYgKGlzVmFsaWQoc3ZnRWxtIGFzIGFueSkpIHtcbiAgICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59O1xuIiwiaW1wb3J0IHsgaXNTZXJ2ZXIgfSBmcm9tICdsaXQnO1xuXG5pbXBvcnQgdHlwZSB7IFNiYkljb25Db25maWcgfSBmcm9tICcuLi9jb3JlL2NvbmZpZy5qcyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnIH0gZnJvbSAnLi4vY29yZS9jb25maWcuanMnO1xuXG5pbXBvcnQgeyB2YWxpZGF0ZUNvbnRlbnQgfSBmcm9tICcuL2ljb24tdmFsaWRhdGUuanMnO1xuXG5jb25zdCBpY29uQ2RuID0gJ2h0dHBzOi8vaWNvbnMuYXBwLnNiYi5jaC8nO1xuXG5jb25zdCBpY29uTmFtZXNwYWNlcyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KClcbiAgLnNldCgnZGVmYXVsdCcsIGAke2ljb25DZG59aWNvbnMvYClcbiAgLnNldCgncGljdG8nLCBgJHtpY29uQ2RufXBpY3RvL2ApO1xuY29uc3QgcmVxdWVzdHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxhbnk+PigpO1xuXG4vKiogRmV0Y2hlcyBpY29uIHN2ZyBjb250ZW50IGZyb20gcHJvdmlkZXJzIGFuZCBhc3NlcnRzIG9ubHkgb25lIHJlcXVlc3QgcGVyIGljb24gaXMgbWFkZS4gKi9cbmV4cG9ydCBjb25zdCBnZXRTdmdDb250ZW50ID0gKFxuICBuYW1lc3BhY2U6IHN0cmluZyxcbiAgbmFtZTogc3RyaW5nLFxuICBzYW5pdGl6ZTogYm9vbGVhbixcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IGNvbmZpZzogU2JiSWNvbkNvbmZpZyA9IHJlYWRDb25maWcoKS5pY29uID8/IHt9O1xuXG4gIGNvbnN0IHJlc29sdmVkTmFtZXNwYWNlID0gY29uZmlnLm5hbWVzcGFjZXM/LmdldChuYW1lc3BhY2UpID8/IGljb25OYW1lc3BhY2VzLmdldChuYW1lc3BhY2UpO1xuICBpZiAocmVzb2x2ZWROYW1lc3BhY2UgPT0gbnVsbCkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYFVuYWJsZSB0byBmaW5kIHRoZSBuYW1lc3BhY2UgXCIke25hbWVzcGFjZX1cIi4gUGxlYXNlIHJlZ2lzdGVyIHlvdXIgY3VzdG9tIG5hbWVzcGFjZS5gLFxuICAgICk7XG4gIH1cbiAgY29uc3QgdXJsID0gYCR7cmVzb2x2ZWROYW1lc3BhY2V9JHtuYW1lfS5zdmdgO1xuXG4gIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSBhIHJlcXVlc3QgZm9yIHRoaXMgdXJsXG4gIGxldCByZXEgPSByZXF1ZXN0cy5nZXQodXJsKTtcblxuICBpZiAoIXJlcSkge1xuICAgIC8vIFdlIGNhbm5vdCBzdXBwb3J0IHNlcnZlciBzaWRlIHJlbmRlcmVkIGljb25zICh5ZXQpLCBhcyB0aGUgdmFsaWRhdGlvblxuICAgIC8vIGlzIGRvbmUgdmlhIERPTSwgd2hpY2ggaXMgbm90IGF2YWlsYWJsZSBkdXJpbmcgU1NSLlxuICAgIGlmICh0eXBlb2YgZmV0Y2ggIT09ICd1bmRlZmluZWQnICYmICFpc1NlcnZlcikge1xuICAgICAgY29uc3QgaW50ZXJjZXB0b3IgPSBjb25maWcuaW50ZXJjZXB0b3IgPz8gKChpKSA9PiBpLnJlcXVlc3QoKSk7XG5cbiAgICAgIHJlcSA9IGludGVyY2VwdG9yKHtcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICBuYW1lLFxuICAgICAgICB1cmwsXG4gICAgICAgIHJlcXVlc3Q6ICgpID0+XG4gICAgICAgICAgZmV0Y2godXJsKVxuICAgICAgICAgICAgLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBsb2FkIGljb24gJyArIG5hbWVzcGFjZSArICc6JyArIG5hbWUpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUNvbnRlbnQoYXdhaXQgcmVzcG9uc2UudGV4dCgpLCBzYW5pdGl6ZSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aHJvdyBFcnJvcihlcnJvcik7XG4gICAgICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgICAgLy8gQ2FjaGUgZm9yIHRoZSBzYW1lIHJlcXVlc3RzXG4gICAgICByZXF1ZXN0cy5zZXQodXJsLCByZXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNvbHZlIHByb21pc2UgZm9yIHNzciBzY2VuYXJpb3NcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXE7XG59O1xuIiwiaW1wb3J0IHR5cGUgeyBDU1NSZXN1bHRHcm91cCwgUHJvcGVydHlWYWx1ZXMsIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGh0bWwsIExpdEVsZW1lbnQgfSBmcm9tICdsaXQnO1xuaW1wb3J0IHsgcHJvcGVydHksIHN0YXRlIH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3RpdmVSZXN1bHQgfSBmcm9tICdsaXQvZGlyZWN0aXZlLmpzJztcbmltcG9ydCB0eXBlIHsgVW5zYWZlSFRNTERpcmVjdGl2ZSB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3Vuc2FmZS1odG1sLmpzJztcbmltcG9ydCB7IHVuc2FmZUhUTUwgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy91bnNhZmUtaHRtbC5qcyc7XG5pbXBvcnQgeyB1bnRpbCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL3VudGlsLmpzJztcblxuaW1wb3J0IHsgaG9zdEF0dHJpYnV0ZXMgfSBmcm9tICcuLi9jb3JlL2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBnZXRTdmdDb250ZW50IH0gZnJvbSAnLi9pY29uLXJlcXVlc3QuanMnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vaWNvbi5zY3NzP2xpdCZpbmxpbmUnO1xuXG4vKipcbiAqIEBjc3Nwcm9wIFstLXNiYi1pY29uLXN2Zy13aWR0aD1hdXRvXSAtIENhbiBiZSB1c2VkIHRvIHNldCBhIGN1c3RvbSB3aWR0aC5cbiAqIEBjc3Nwcm9wIFstLXNiYi1pY29uLXN2Zy1oZWlnaHQ9YXV0b10gLSBDYW4gYmUgdXNlZCB0byBzZXQgYSBjdXN0b20gaGVpZ2h0LlxuICovXG5AaG9zdEF0dHJpYnV0ZXMoe1xuICAnZGF0YS1uYW1lc3BhY2UnOiBTYmJJY29uQmFzZS5fZGVmYXVsdE5hbWVzcGFjZSxcbiAgJ2RhdGEtZW1wdHknOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2JiSWNvbkJhc2UgZXh0ZW5kcyBMaXRFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gc3R5bGU7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kZWZhdWx0TmFtZXNwYWNlID0gJ2RlZmF1bHQnO1xuXG4gIEBzdGF0ZSgpIHByaXZhdGUgX3N2Z05hbWVzcGFjZSA9IFNiYkljb25CYXNlLl9kZWZhdWx0TmFtZXNwYWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaWNvbiBzdmcgY29udGVudCByZW5kZXJlZCBvbiB0aGUgcGFnZTogPHN2Zz4uLi48L3N2Zz4uXG4gICAqL1xuICBAc3RhdGUoKSBwcml2YXRlIF9zdmdJY29uPzogUHJvbWlzZTxEaXJlY3RpdmVSZXN1bHQ8dHlwZW9mIFVuc2FmZUhUTUxEaXJlY3RpdmU+PjtcblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCBTVkcgY29udGVudCB0aGF0IGlzIEhUVFAgZmV0Y2hlZCB3aWxsIG5vdCBiZSBjaGVja2VkXG4gICAqIGlmIHRoZSByZXNwb25zZSBTVkcgY29udGVudCBoYXMgYW55IGA8c2NyaXB0PmAgZWxlbWVudHMsIG9yIGFueSBhdHRyaWJ1dGVzXG4gICAqIHRoYXQgc3RhcnQgd2l0aCBgb25gLCBzdWNoIGFzIGBvbmNsaWNrYC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ25vLXNhbml0aXplJywgdHlwZTogQm9vbGVhbiB9KSBwdWJsaWMgbm9TYW5pdGl6ZSA9IGZhbHNlO1xuXG4gIHByb3RlY3RlZCBhc3luYyBsb2FkU3ZnSWNvbihpY29uTmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFpY29uTmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IFtuYW1lc3BhY2UsIG5hbWVdID0gdGhpcy5fc3BsaXRJY29uTmFtZShpY29uTmFtZSk7XG4gICAgdGhpcy5fc3ZnTmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkYXRhLW5hbWVzcGFjZScsIHRoaXMuX3N2Z05hbWVzcGFjZSk7XG5cbiAgICBjb25zdCBzdmdJY29uID0gdGhpcy5mZXRjaFN2Z0ljb24odGhpcy5fc3ZnTmFtZXNwYWNlLCBuYW1lKTtcbiAgICB0aGlzLl9zdmdJY29uID0gc3ZnSWNvbi50aGVuKCh2KSA9PiB1bnNhZmVIVE1MKHYpKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy50b2dnbGVBdHRyaWJ1dGUoJ2RhdGEtZW1wdHknLCAhKGF3YWl0IHN2Z0ljb24pKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMudG9nZ2xlQXR0cmlidXRlKCdkYXRhLWVtcHR5JywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGZldGNoU3ZnSWNvbihuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0U3ZnQ29udGVudChuYW1lc3BhY2UsIG5hbWUsICF0aGlzLm5vU2FuaXRpemUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3BsaXRJY29uTmFtZShpY29uTmFtZTogc3RyaW5nKTogW3N0cmluZywgc3RyaW5nXSB7XG4gICAgaWYgKCFpY29uTmFtZSkge1xuICAgICAgcmV0dXJuIFsnJywgJyddO1xuICAgIH1cbiAgICBjb25zdCBwYXJ0cyA9IGljb25OYW1lLnNwbGl0KCc6Jyk7XG4gICAgc3dpdGNoIChwYXJ0cy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgLy8gVXNlIGRlZmF1bHQgbmFtZXNwYWNlIGlmIGVtcHR5LlxuICAgICAgICByZXR1cm4gW1NiYkljb25CYXNlLl9kZWZhdWx0TmFtZXNwYWNlLCBwYXJ0c1swXV07XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBwYXJ0cyBhcyBbc3RyaW5nLCBzdHJpbmddO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgaWNvbiBuYW1lOiBcIiR7aWNvbk5hbWV9XCJgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLmZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgncm9sZScsIHRoaXMuZ2V0QXR0cmlidXRlKCdyb2xlJykgPz8gJ2ltZycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIGh0bWxgPHNwYW4gY2xhc3M9XCJzYmItaWNvbi1pbm5lclwiXG4gICAgICA+JHt1bnRpbChcbiAgICAgICAgdGhpcy5fc3ZnSWNvbixcbiAgICAgICAgLy8gVG8gcmVzZXJ2ZSBzcGFjZSwgd2UgbmVlZCBhbiBlbXB0eSBzdmcgdG8gYXBwbHkgZGltZW5zaW9uIHRvLlxuICAgICAgICBodG1sYDxzdmcgd2lkdGg9XCIwXCIgaGVpZ2h0PVwiMFwiPjwvc3ZnPmAsXG4gICAgICApfTwvc3BhblxuICAgID5gO1xuICB9XG59XG4iLCJpbXBvcnQgdHlwZSB7IFByb3BlcnR5VmFsdWVzIH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IGN1c3RvbUVsZW1lbnQsIHByb3BlcnR5IH0gZnJvbSAnbGl0L2RlY29yYXRvcnMuanMnO1xuXG5pbXBvcnQgeyBTYmJJY29uQmFzZSB9IGZyb20gJy4vaWNvbi1iYXNlLmpzJztcblxuLyoqXG4gKiBJdCBkaXNwbGF5cyBhbiBpY29uIGxvYWRlZCBmcm9tIGEgcmVnaXN0ZXJlZCBuYW1lc3BhY2UuXG4gKi9cbkBjdXN0b21FbGVtZW50KCdzYmItaWNvbicpXG5leHBvcnQgY2xhc3MgU2JiSWNvbkVsZW1lbnQgZXh0ZW5kcyBTYmJJY29uQmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgcHJvdmlkZWQgbmFtZSBjb25zaXN0aW5nIG9mIHRoZSBuYW1lc3BhY2UgYW5kIHRoZSBuYW1lIG9mIHRoZSBpY29uLlxuICAgKiBJZiB0aGUgbmFtZXNwYWNlIGlzIG1pc3NpbmcsIHRoZSBkZWZhdWx0IG5hbWVzcGFjZSBcInNiYlwiIHdpbGwgYmUgdXNlZC5cbiAgICogRS5nLiBgbmFtZWAgKHdpbGwgdXNlIFwic2JiXCIgYXMgbmFtZXNwYWNlKSBvciBgbmFtZXNwYWNlOm5hbWVgLlxuICAgKi9cbiAgQHByb3BlcnR5KHsgcmVmbGVjdDogdHJ1ZSB9KSBwdWJsaWMgbmFtZSE6IHN0cmluZztcblxuICBwcml2YXRlIF9kZWZhdWx0QXJpYUxhYmVsID0gJyc7XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGFzeW5jIGZldGNoU3ZnSWNvbihuYW1lc3BhY2U6IHN0cmluZywgbmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyBJZiB0aGUgaWNvbiBpcyBjaGFuZ2luZywgYW5kIHdlIHdlcmUgdXNpbmcgdGhlIGRlZmF1bHRBcmlhTGFiZWwsIHJlc2V0IGl0XG4gICAgaWYgKHRoaXMuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJykgPT09IHRoaXMuX2RlZmF1bHRBcmlhTGFiZWwpIHtcbiAgICAgIHRoaXMucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWxhYmVsJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGVmYXVsdEFyaWFMYWJlbCA9IGBJY29uICR7bmFtZS5yZXBsYWNlKC8tL2csICcgJyl9YDtcblxuICAgIC8vIGdlbmVyYXRlIGEgZGVmYXVsdCBsYWJlbCBpbiBjYXNlIHVzZXIgZG9lcyBub3QgcHJvdmlkZSB0aGVpciBvd25cbiAgICAvLyBhbmQgYXJpYS1oaWRkZW4gaXMgc2V0IHRvIFwiZmFsc2VcIlxuICAgIGlmICh0aGlzLmdldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSA9PT0gJ2ZhbHNlJyAmJiAhdGhpcy5oYXNBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnKSAmJiBuYW1lKSB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuX2RlZmF1bHRBcmlhTGFiZWwpO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci5mZXRjaFN2Z0ljb24obmFtZXNwYWNlLCBuYW1lKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnbmFtZScpKSB7XG4gICAgICB0aGlzLmxvYWRTdmdJY29uKHRoaXMubmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGZpcnN0VXBkYXRlZChjaGFuZ2VkUHJvcGVydGllczogUHJvcGVydHlWYWx1ZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBzdXBlci5maXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKCF0aGlzLmhhc0F0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICB9XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTEVsZW1lbnRUYWdOYW1lTWFwIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgJ3NiYi1pY29uJzogU2JiSWNvbkVsZW1lbnQ7XG4gIH1cbn1cbiIsImltcG9ydCB7IGh0bWwsIHR5cGUgTGl0RWxlbWVudCwgbm90aGluZywgdHlwZSBUZW1wbGF0ZVJlc3VsdCB9IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBBYnN0cmFjdENvbnN0cnVjdG9yIH0gZnJvbSAnLi4vY29yZS9taXhpbnMuanMnO1xuXG5pbXBvcnQgJy4vaWNvbi5qcyc7XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIFNiYkljb25OYW1lTWl4aW5UeXBlIHtcbiAgcHVibGljIGljb25OYW1lPzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVuZGVySWNvblNsb3QoY2xhc3NuYW1lPzogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQ7XG59XG5cbi8qKlxuICogRW5oYW5jZSB5b3VyIGNvbXBvbmVudCB3aXRoIGFuIGljb25OYW1lIHByb3BlcnR5IGFuZCBwcm92aWRlcyBhIHRlbXBsYXRlIGZvciB0aGUgaWNvbiBzbG90LlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgU2JiSWNvbk5hbWVNaXhpbiA9IDxUIGV4dGVuZHMgQWJzdHJhY3RDb25zdHJ1Y3RvcjxMaXRFbGVtZW50Pj4oXG4gIHN1cGVyQ2xhc3M6IFQsXG4pOiBBYnN0cmFjdENvbnN0cnVjdG9yPFNiYkljb25OYW1lTWl4aW5UeXBlPiAmIFQgPT4ge1xuICBhYnN0cmFjdCBjbGFzcyBTYmJJY29uTmFtZUVsZW1lbnQgZXh0ZW5kcyBzdXBlckNsYXNzIGltcGxlbWVudHMgUGFydGlhbDxTYmJJY29uTmFtZU1peGluVHlwZT4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBpY29uIG5hbWUgd2Ugd2FudCB0byB1c2UsIGNob29zZSBmcm9tIHRoZSBzbWFsbCBpY29uIHZhcmlhbnRzXG4gICAgICogZnJvbSB0aGUgdWktaWNvbnMgY2F0ZWdvcnkgZnJvbSBoZXJlXG4gICAgICogaHR0cHM6Ly9pY29ucy5hcHAuc2JiLmNoLlxuICAgICAqL1xuICAgIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ2ljb24tbmFtZScsIHJlZmxlY3Q6IHRydWUgfSkgcHVibGljIGljb25OYW1lPzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIHJlbmRlckljb25TbG90KGNsYXNzbmFtZT86IHN0cmluZyk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2xvdCBuYW1lPVwiaWNvblwiPlxuICAgICAgICAgICR7dGhpcy5pY29uTmFtZVxuICAgICAgICAgICAgPyBodG1sYDxzYmItaWNvbiBuYW1lPSR7dGhpcy5pY29uTmFtZX0gY2xhc3M9JHtjbGFzc25hbWUgfHwgbm90aGluZ30+PC9zYmItaWNvbj5gXG4gICAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICAgIDwvc2xvdD5cbiAgICAgIGA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFNiYkljb25OYW1lRWxlbWVudCBhcyB1bmtub3duIGFzIEFic3RyYWN0Q29uc3RydWN0b3I8U2JiSWNvbk5hbWVNaXhpblR5cGU+ICYgVDtcbn07XG4iXSwibmFtZXMiOlsiX19kZWNvcmF0ZUNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNLFFBQVEsQ0FBQyxRQUE0QixPQUFPLFFBQVE7QUFNN0MsTUFBQSxVQUFVLENBQUMsUUFBOEI7QUFDaEQsTUFBQSxJQUFJLGFBQWEsR0FBRztBQUV0QixRQUFJLElBQUksU0FBUyxZQUFZLE1BQU0sVUFBVTtBQUNwQyxhQUFBO0FBQUEsSUFDVDtBQUdBLGFBQVMsSUFBSSxHQUFHLElBQUksSUFBSSxXQUFXLFFBQVEsS0FBSztBQUM5QyxZQUFNLE1BQU0sSUFBSSxXQUFXLENBQUMsRUFBRTtBQUMxQixVQUFBLE1BQU0sR0FBRyxLQUFLLElBQUksY0FBYyxRQUFRLElBQUksTUFBTSxHQUFHO0FBQ2hELGVBQUE7QUFBQSxNQUNUO0FBQUEsSUFDRjtBQUVBLGFBQVMsSUFBSSxHQUFHLElBQUksSUFBSSxXQUFXLFFBQVEsS0FBSztBQUM5QyxVQUFJLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQyxDQUFRLEdBQUc7QUFDL0IsZUFBQTtBQUFBLE1BQ1Q7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNPLFNBQUE7QUFDVDtBQU9PLE1BQU0sa0JBQWtCLENBQzdCLFlBQ0EsV0FBVyxNQUNYLGlCQUFpQixVQUNOO0FBQ0wsUUFBQSxNQUFNLFNBQVMsY0FBYyxLQUFLO0FBQ3hDLE1BQUksWUFBWTtBQUVoQixXQUFTLElBQUksSUFBSSxXQUFXLFNBQVMsR0FB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
@@ -28,6 +28,7 @@ export interface InterfaceImageAttributesSizesConfigMediaQuery {
28
28
  * ratio of 4/3 in smaller viewports and 16/9 in larger viewports.
29
29
  * @cssprop [--sbb-image-border-radius=var(--sbb-border-radius-4x)] - Can be used to override the
30
30
  * `borderRadius` property in case of different values for different viewports.
31
+ * @cssprop [--sbb-image-object-position] - Can be used to set the object-position css property of the image itself if the image itself is cropped.
31
32
  */
32
33
  export declare class SbbImageElement extends LitElement {
33
34
  static styles: CSSResultGroup;
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../../src/elements/image/image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../../src/elements/image/image.ts"],"names":[],"mappings":"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"}