@agorapulse/ui-components 18.1.13 → 18.2.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 (533) hide show
  1. package/action-dropdown/index.d.ts +105 -3
  2. package/add-comment/index.d.ts +24 -5
  3. package/agorapulse-ui-components-18.2.0.tgz +0 -0
  4. package/autocomplete/index.d.ts +43 -5
  5. package/avatar/index.d.ts +64 -5
  6. package/badge/index.d.ts +11 -5
  7. package/button/index.d.ts +54 -5
  8. package/checkbox/index.d.ts +54 -5
  9. package/close-button/index.d.ts +14 -5
  10. package/confirm-modal/index.d.ts +32 -5
  11. package/counter/index.d.ts +17 -5
  12. package/datepicker/index.d.ts +99 -5
  13. package/directives/index.d.ts +149 -3
  14. package/dot-stepper/index.d.ts +23 -5
  15. package/fesm2022/agorapulse-ui-components-action-dropdown.mjs +22 -32
  16. package/fesm2022/agorapulse-ui-components-action-dropdown.mjs.map +1 -1
  17. package/fesm2022/agorapulse-ui-components-add-comment.mjs +5 -5
  18. package/fesm2022/agorapulse-ui-components-add-comment.mjs.map +1 -1
  19. package/fesm2022/agorapulse-ui-components-autocomplete.mjs +8 -8
  20. package/fesm2022/agorapulse-ui-components-autocomplete.mjs.map +1 -1
  21. package/fesm2022/agorapulse-ui-components-avatar.mjs +24 -24
  22. package/fesm2022/agorapulse-ui-components-avatar.mjs.map +1 -1
  23. package/fesm2022/agorapulse-ui-components-badge.mjs +4 -4
  24. package/fesm2022/agorapulse-ui-components-badge.mjs.map +1 -1
  25. package/fesm2022/agorapulse-ui-components-button.mjs +6 -6
  26. package/fesm2022/agorapulse-ui-components-button.mjs.map +1 -1
  27. package/fesm2022/agorapulse-ui-components-checkbox.mjs +4 -4
  28. package/fesm2022/agorapulse-ui-components-checkbox.mjs.map +1 -1
  29. package/fesm2022/agorapulse-ui-components-close-button.mjs +7 -7
  30. package/fesm2022/agorapulse-ui-components-close-button.mjs.map +1 -1
  31. package/fesm2022/agorapulse-ui-components-confirm-modal.mjs +4 -4
  32. package/fesm2022/agorapulse-ui-components-confirm-modal.mjs.map +1 -1
  33. package/fesm2022/agorapulse-ui-components-counter.mjs +9 -9
  34. package/fesm2022/agorapulse-ui-components-counter.mjs.map +1 -1
  35. package/fesm2022/agorapulse-ui-components-datepicker.mjs +6 -6
  36. package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -1
  37. package/fesm2022/agorapulse-ui-components-directives.mjs +26 -28
  38. package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -1
  39. package/fesm2022/agorapulse-ui-components-dot-stepper.mjs +4 -4
  40. package/fesm2022/agorapulse-ui-components-dot-stepper.mjs.map +1 -1
  41. package/fesm2022/agorapulse-ui-components-form-field.mjs +3 -3
  42. package/fesm2022/agorapulse-ui-components-form-field.mjs.map +1 -1
  43. package/fesm2022/agorapulse-ui-components-form-message.mjs +6 -6
  44. package/fesm2022/agorapulse-ui-components-form-message.mjs.map +1 -1
  45. package/fesm2022/agorapulse-ui-components-icon-button.mjs +5 -5
  46. package/fesm2022/agorapulse-ui-components-icon-button.mjs.map +1 -1
  47. package/fesm2022/agorapulse-ui-components-infobox.mjs +4 -4
  48. package/fesm2022/agorapulse-ui-components-infobox.mjs.map +1 -1
  49. package/fesm2022/agorapulse-ui-components-input-group.mjs +6 -6
  50. package/fesm2022/agorapulse-ui-components-input-group.mjs.map +1 -1
  51. package/fesm2022/agorapulse-ui-components-input-search.mjs +13 -10
  52. package/fesm2022/agorapulse-ui-components-input-search.mjs.map +1 -1
  53. package/fesm2022/agorapulse-ui-components-input.mjs +3 -3
  54. package/fesm2022/agorapulse-ui-components-labels-selector.mjs +4 -4
  55. package/fesm2022/agorapulse-ui-components-labels-selector.mjs.map +1 -1
  56. package/fesm2022/agorapulse-ui-components-labels.mjs +8 -8
  57. package/fesm2022/agorapulse-ui-components-labels.mjs.map +1 -1
  58. package/fesm2022/agorapulse-ui-components-legacy-input.mjs +5 -5
  59. package/fesm2022/agorapulse-ui-components-legacy-input.mjs.map +1 -1
  60. package/fesm2022/agorapulse-ui-components-legacy-select.mjs +17 -17
  61. package/fesm2022/agorapulse-ui-components-legacy-select.mjs.map +1 -1
  62. package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs +5 -5
  63. package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs.map +1 -1
  64. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs +4 -4
  65. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs.map +1 -1
  66. package/fesm2022/agorapulse-ui-components-modal.mjs +4 -4
  67. package/fesm2022/agorapulse-ui-components-modal.mjs.map +1 -1
  68. package/fesm2022/agorapulse-ui-components-nav-selector-testing.mjs.map +1 -1
  69. package/fesm2022/agorapulse-ui-components-nav-selector.mjs +164 -159
  70. package/fesm2022/agorapulse-ui-components-nav-selector.mjs.map +1 -1
  71. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs +8 -8
  72. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs.map +1 -1
  73. package/fesm2022/agorapulse-ui-components-notification.mjs +4 -4
  74. package/fesm2022/agorapulse-ui-components-notification.mjs.map +1 -1
  75. package/fesm2022/agorapulse-ui-components-paginator.mjs +7 -7
  76. package/fesm2022/agorapulse-ui-components-paginator.mjs.map +1 -1
  77. package/fesm2022/agorapulse-ui-components-password-input.mjs +4 -4
  78. package/fesm2022/agorapulse-ui-components-password-input.mjs.map +1 -1
  79. package/fesm2022/agorapulse-ui-components-phone-number-input.mjs +16 -16
  80. package/fesm2022/agorapulse-ui-components-phone-number-input.mjs.map +1 -1
  81. package/fesm2022/agorapulse-ui-components-popmenu.mjs +11 -11
  82. package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -1
  83. package/fesm2022/agorapulse-ui-components-providers.mjs +19 -0
  84. package/fesm2022/agorapulse-ui-components-providers.mjs.map +1 -0
  85. package/fesm2022/agorapulse-ui-components-radio.mjs +6 -6
  86. package/fesm2022/agorapulse-ui-components-radio.mjs.map +1 -1
  87. package/fesm2022/agorapulse-ui-components-range-slider.mjs +4 -4
  88. package/fesm2022/agorapulse-ui-components-range-slider.mjs.map +1 -1
  89. package/fesm2022/agorapulse-ui-components-select.mjs +65 -65
  90. package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -1
  91. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs +4 -4
  92. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs.map +1 -1
  93. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs +8 -8
  94. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs.map +1 -1
  95. package/fesm2022/agorapulse-ui-components-social-button.mjs +4 -4
  96. package/fesm2022/agorapulse-ui-components-social-button.mjs.map +1 -1
  97. package/fesm2022/agorapulse-ui-components-split-button.mjs +5 -5
  98. package/fesm2022/agorapulse-ui-components-split-button.mjs.map +1 -1
  99. package/fesm2022/agorapulse-ui-components-status-card.mjs +3 -3
  100. package/fesm2022/agorapulse-ui-components-status-card.mjs.map +1 -1
  101. package/fesm2022/agorapulse-ui-components-status.mjs +4 -4
  102. package/fesm2022/agorapulse-ui-components-status.mjs.map +1 -1
  103. package/fesm2022/agorapulse-ui-components-stepper.mjs +4 -4
  104. package/fesm2022/agorapulse-ui-components-stepper.mjs.map +1 -1
  105. package/fesm2022/agorapulse-ui-components-tag.mjs +9 -9
  106. package/fesm2022/agorapulse-ui-components-tag.mjs.map +1 -1
  107. package/fesm2022/agorapulse-ui-components-text-measurement.mjs +3 -3
  108. package/fesm2022/agorapulse-ui-components-textarea.mjs +3 -3
  109. package/fesm2022/agorapulse-ui-components-toggle.mjs +4 -4
  110. package/fesm2022/agorapulse-ui-components-toggle.mjs.map +1 -1
  111. package/fesm2022/agorapulse-ui-components-tooltip.mjs +15 -15
  112. package/fesm2022/agorapulse-ui-components-tooltip.mjs.map +1 -1
  113. package/fesm2022/agorapulse-ui-components.mjs +4 -4
  114. package/fesm2022/agorapulse-ui-components.mjs.map +1 -1
  115. package/form-field/index.d.ts +8 -5
  116. package/form-message/index.d.ts +16 -5
  117. package/icon-button/index.d.ts +44 -5
  118. package/index.d.ts +50 -25
  119. package/infobox/index.d.ts +29 -5
  120. package/input/index.d.ts +10 -5
  121. package/input-group/index.d.ts +14 -5
  122. package/input-search/index.d.ts +35 -5
  123. package/labels/index.d.ts +59 -5
  124. package/labels-selector/index.d.ts +46 -5
  125. package/legacy/input/index.d.ts +64 -3
  126. package/legacy/select/index.d.ts +124 -3
  127. package/legacy/textarea/index.d.ts +54 -3
  128. package/media-display-overlay/index.d.ts +46 -5
  129. package/modal/index.d.ts +58 -5
  130. package/nav-selector/index.d.ts +372 -3
  131. package/nav-selector/testing/index.d.ts +67 -3
  132. package/neo-datepicker/index.d.ts +74 -5
  133. package/notification/index.d.ts +9 -5
  134. package/package.json +14 -112
  135. package/paginator/index.d.ts +57 -5
  136. package/password-input/index.d.ts +36 -5
  137. package/phone-number-input/index.d.ts +54 -5
  138. package/popmenu/index.d.ts +212 -3
  139. package/providers/index.d.ts +11 -0
  140. package/radio/index.d.ts +80 -5
  141. package/range-slider/index.d.ts +39 -5
  142. package/select/index.d.ts +214 -5
  143. package/slide-toggle/index.d.ts +23 -5
  144. package/snackbars-thread/index.d.ts +73 -3
  145. package/social-button/index.d.ts +34 -5
  146. package/split-button/index.d.ts +47 -5
  147. package/status/index.d.ts +13 -5
  148. package/status-card/index.d.ts +17 -5
  149. package/stepper/index.d.ts +26 -5
  150. package/tag/index.d.ts +28 -5
  151. package/text-measurement/index.d.ts +11 -5
  152. package/textarea/index.d.ts +14 -5
  153. package/toggle/index.d.ts +55 -5
  154. package/tooltip/index.d.ts +62 -5
  155. package/action-dropdown/action-dropdown-trigger.directive.d.ts +0 -17
  156. package/action-dropdown/action-dropdown.component.d.ts +0 -87
  157. package/action-dropdown/providers.d.ts +0 -8
  158. package/action-dropdown/public_api.d.ts +0 -3
  159. package/add-comment/add-comment.component.d.ts +0 -21
  160. package/add-comment/public_api.d.ts +0 -1
  161. package/agorapulse-ui-components-18.1.13.tgz +0 -0
  162. package/autocomplete/autocomplete.component.d.ts +0 -40
  163. package/autocomplete/public_api.d.ts +0 -1
  164. package/avatar/avatar.component.d.ts +0 -61
  165. package/avatar/public_api.d.ts +0 -1
  166. package/badge/badge.component.d.ts +0 -7
  167. package/badge/public_api.d.ts +0 -1
  168. package/button/button.component.d.ts +0 -52
  169. package/button/public_api.d.ts +0 -1
  170. package/checkbox/checkbox.component.d.ts +0 -51
  171. package/checkbox/public_api.d.ts +0 -1
  172. package/close-button/close-button.component.d.ts +0 -11
  173. package/close-button/public_api.d.ts +0 -1
  174. package/confirm-modal/confirm-modal-texts.model.d.ts +0 -8
  175. package/confirm-modal/confirm-modal.component.d.ts +0 -20
  176. package/confirm-modal/public_api.d.ts +0 -2
  177. package/counter/counter.component.d.ts +0 -13
  178. package/counter/public_api.d.ts +0 -1
  179. package/datepicker/datepicker.component.d.ts +0 -100
  180. package/datepicker/public_api.d.ts +0 -1
  181. package/directives/autosize-textarea.directive.d.ts +0 -12
  182. package/directives/base-button.directive.d.ts +0 -13
  183. package/directives/checkbox.directive.d.ts +0 -32
  184. package/directives/default-image.directive.d.ts +0 -8
  185. package/directives/ellipsis.directive.d.ts +0 -29
  186. package/directives/equal-validator.directive.d.ts +0 -13
  187. package/directives/frozen-gif.directive.d.ts +0 -30
  188. package/directives/multi-style-text.directive.d.ts +0 -16
  189. package/directives/public_api.d.ts +0 -8
  190. package/dot-stepper/dot-stepper.component.d.ts +0 -20
  191. package/dot-stepper/public_api.d.ts +0 -1
  192. package/esm2022/action-dropdown/action-dropdown-trigger.directive.mjs +0 -54
  193. package/esm2022/action-dropdown/action-dropdown.component.mjs +0 -272
  194. package/esm2022/action-dropdown/agorapulse-ui-components-action-dropdown.mjs +0 -5
  195. package/esm2022/action-dropdown/providers.mjs +0 -12
  196. package/esm2022/action-dropdown/public_api.mjs +0 -4
  197. package/esm2022/add-comment/add-comment.component.mjs +0 -72
  198. package/esm2022/add-comment/agorapulse-ui-components-add-comment.mjs +0 -5
  199. package/esm2022/add-comment/public_api.mjs +0 -2
  200. package/esm2022/agorapulse-ui-components.mjs +0 -5
  201. package/esm2022/autocomplete/agorapulse-ui-components-autocomplete.mjs +0 -5
  202. package/esm2022/autocomplete/autocomplete.component.mjs +0 -125
  203. package/esm2022/autocomplete/public_api.mjs +0 -2
  204. package/esm2022/avatar/agorapulse-ui-components-avatar.mjs +0 -5
  205. package/esm2022/avatar/avatar.component.mjs +0 -161
  206. package/esm2022/avatar/public_api.mjs +0 -2
  207. package/esm2022/badge/agorapulse-ui-components-badge.mjs +0 -5
  208. package/esm2022/badge/badge.component.mjs +0 -17
  209. package/esm2022/badge/public_api.mjs +0 -2
  210. package/esm2022/button/agorapulse-ui-components-button.mjs +0 -5
  211. package/esm2022/button/button.component.mjs +0 -105
  212. package/esm2022/button/public_api.mjs +0 -2
  213. package/esm2022/checkbox/agorapulse-ui-components-checkbox.mjs +0 -5
  214. package/esm2022/checkbox/checkbox.component.mjs +0 -177
  215. package/esm2022/checkbox/public_api.mjs +0 -2
  216. package/esm2022/close-button/agorapulse-ui-components-close-button.mjs +0 -5
  217. package/esm2022/close-button/close-button.component.mjs +0 -20
  218. package/esm2022/close-button/public_api.mjs +0 -2
  219. package/esm2022/confirm-modal/agorapulse-ui-components-confirm-modal.mjs +0 -5
  220. package/esm2022/confirm-modal/confirm-modal-texts.model.mjs +0 -2
  221. package/esm2022/confirm-modal/confirm-modal.component.mjs +0 -61
  222. package/esm2022/confirm-modal/public_api.mjs +0 -3
  223. package/esm2022/counter/agorapulse-ui-components-counter.mjs +0 -5
  224. package/esm2022/counter/counter.component.mjs +0 -32
  225. package/esm2022/counter/public_api.mjs +0 -2
  226. package/esm2022/datepicker/agorapulse-ui-components-datepicker.mjs +0 -5
  227. package/esm2022/datepicker/datepicker.component.mjs +0 -288
  228. package/esm2022/datepicker/public_api.mjs +0 -2
  229. package/esm2022/directives/agorapulse-ui-components-directives.mjs +0 -5
  230. package/esm2022/directives/autosize-textarea.directive.mjs +0 -45
  231. package/esm2022/directives/base-button.directive.mjs +0 -47
  232. package/esm2022/directives/checkbox.directive.mjs +0 -283
  233. package/esm2022/directives/default-image.directive.mjs +0 -37
  234. package/esm2022/directives/ellipsis.directive.mjs +0 -90
  235. package/esm2022/directives/equal-validator.directive.mjs +0 -73
  236. package/esm2022/directives/frozen-gif.directive.mjs +0 -125
  237. package/esm2022/directives/multi-style-text.directive.mjs +0 -61
  238. package/esm2022/directives/public_api.mjs +0 -9
  239. package/esm2022/dot-stepper/agorapulse-ui-components-dot-stepper.mjs +0 -5
  240. package/esm2022/dot-stepper/dot-stepper.component.mjs +0 -46
  241. package/esm2022/dot-stepper/public_api.mjs +0 -2
  242. package/esm2022/form-field/agorapulse-ui-components-form-field.mjs +0 -5
  243. package/esm2022/form-field/form-field.component.mjs +0 -11
  244. package/esm2022/form-field/public_api.mjs +0 -2
  245. package/esm2022/form-message/agorapulse-ui-components-form-message.mjs +0 -5
  246. package/esm2022/form-message/form-message.component.mjs +0 -34
  247. package/esm2022/form-message/public_api.mjs +0 -2
  248. package/esm2022/icon-button/agorapulse-ui-components-icon-button.mjs +0 -5
  249. package/esm2022/icon-button/icon-button.component.mjs +0 -123
  250. package/esm2022/icon-button/public_api.mjs +0 -2
  251. package/esm2022/index.mjs +0 -49
  252. package/esm2022/infobox/agorapulse-ui-components-infobox.mjs +0 -5
  253. package/esm2022/infobox/infobox.component.mjs +0 -72
  254. package/esm2022/infobox/public_api.mjs +0 -2
  255. package/esm2022/input/agorapulse-ui-components-input.mjs +0 -5
  256. package/esm2022/input/input.directive.mjs +0 -19
  257. package/esm2022/input/public_api.mjs +0 -2
  258. package/esm2022/input-group/agorapulse-ui-components-input-group.mjs +0 -5
  259. package/esm2022/input-group/input-group.component.mjs +0 -14
  260. package/esm2022/input-group/input-prefix/input-prefix.component.mjs +0 -11
  261. package/esm2022/input-group/public_api.mjs +0 -3
  262. package/esm2022/input-search/agorapulse-ui-components-input-search.mjs +0 -5
  263. package/esm2022/input-search/input-search.component.mjs +0 -78
  264. package/esm2022/input-search/public_api.mjs +0 -2
  265. package/esm2022/labels/agorapulse-ui-components-labels.mjs +0 -5
  266. package/esm2022/labels/label-list.component.mjs +0 -108
  267. package/esm2022/labels/label.component.mjs +0 -56
  268. package/esm2022/labels/public_api.mjs +0 -3
  269. package/esm2022/labels-selector/agorapulse-ui-components-labels-selector.mjs +0 -5
  270. package/esm2022/labels-selector/labels-selector.component.mjs +0 -122
  271. package/esm2022/labels-selector/public_api.mjs +0 -2
  272. package/esm2022/legacy/input/agorapulse-ui-components-legacy-input.mjs +0 -5
  273. package/esm2022/legacy/input/input.component.mjs +0 -189
  274. package/esm2022/legacy/input/public_api.mjs +0 -2
  275. package/esm2022/legacy/select/agorapulse-ui-components-legacy-select.mjs +0 -5
  276. package/esm2022/legacy/select/public_api.mjs +0 -2
  277. package/esm2022/legacy/select/select.component.mjs +0 -451
  278. package/esm2022/legacy/textarea/agorapulse-ui-components-legacy-textarea.mjs +0 -5
  279. package/esm2022/legacy/textarea/public_api.mjs +0 -2
  280. package/esm2022/legacy/textarea/textarea.component.mjs +0 -154
  281. package/esm2022/media-display-overlay/agorapulse-ui-components-media-display-overlay.mjs +0 -5
  282. package/esm2022/media-display-overlay/media-display-overlay-dialog.component.mjs +0 -122
  283. package/esm2022/media-display-overlay/public_api.mjs +0 -2
  284. package/esm2022/modal/agorapulse-ui-components-modal.mjs +0 -5
  285. package/esm2022/modal/modal.component.mjs +0 -116
  286. package/esm2022/modal/public_api.mjs +0 -2
  287. package/esm2022/nav-selector/agorapulse-ui-components-nav-selector.mjs +0 -5
  288. package/esm2022/nav-selector/directives/nav-selector-popover-trigger.directive.mjs +0 -71
  289. package/esm2022/nav-selector/directives/tree-node-accessibility.directive.mjs +0 -30
  290. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.component.mjs +0 -129
  291. package/esm2022/nav-selector/nav-selector-category/nav-selector-category.presenter.mjs +0 -28
  292. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.component.mjs +0 -174
  293. package/esm2022/nav-selector/nav-selector-group/nav-selector-group.presenter.mjs +0 -30
  294. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.component.mjs +0 -242
  295. package/esm2022/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.mjs +0 -36
  296. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.mjs +0 -43
  297. package/esm2022/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.mjs +0 -20
  298. package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.mjs +0 -95
  299. package/esm2022/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.mjs +0 -31
  300. package/esm2022/nav-selector/nav-selector-popover/nav-selector-popover-item.component.mjs +0 -65
  301. package/esm2022/nav-selector/nav-selector-popover/nav-selector-popover.component.mjs +0 -132
  302. package/esm2022/nav-selector/nav-selector.component.mjs +0 -201
  303. package/esm2022/nav-selector/nav-selector.mjs +0 -9
  304. package/esm2022/nav-selector/nav-selector.state.mjs +0 -207
  305. package/esm2022/nav-selector/public_api.mjs +0 -3
  306. package/esm2022/nav-selector/testing/agorapulse-ui-components-nav-selector-testing.mjs +0 -5
  307. package/esm2022/nav-selector/testing/nav-selector-entry.mock.mjs +0 -91
  308. package/esm2022/nav-selector/testing/public_api.mjs +0 -2
  309. package/esm2022/nav-selector/utils/leaf.utils.mjs +0 -44
  310. package/esm2022/nav-selector/utils/nav-selector.accessibility.mjs +0 -179
  311. package/esm2022/nav-selector/utils/nav-selector.builder.mjs +0 -271
  312. package/esm2022/nav-selector/utils/nav-selector.filter.mjs +0 -141
  313. package/esm2022/nav-selector/utils/nav-selector.folding.mjs +0 -284
  314. package/esm2022/nav-selector/utils/nav-selector.merger.mjs +0 -76
  315. package/esm2022/nav-selector/utils/nav-selector.minifying.mjs +0 -59
  316. package/esm2022/nav-selector/utils/nav-selector.multi-select.mjs +0 -208
  317. package/esm2022/nav-selector/utils/nav-selector.single-select.mjs +0 -113
  318. package/esm2022/nav-selector/utils/nav-selector.view-more.mjs +0 -98
  319. package/esm2022/neo-datepicker/agorapulse-ui-components-neo-datepicker.mjs +0 -5
  320. package/esm2022/neo-datepicker/day-detail.model.mjs +0 -2
  321. package/esm2022/neo-datepicker/day-disabled.pipe.mjs +0 -21
  322. package/esm2022/neo-datepicker/neo-datepicker.component.mjs +0 -241
  323. package/esm2022/neo-datepicker/public_api.mjs +0 -4
  324. package/esm2022/notification/agorapulse-ui-components-notification.mjs +0 -5
  325. package/esm2022/notification/notification.component.mjs +0 -15
  326. package/esm2022/notification/public_api.mjs +0 -2
  327. package/esm2022/paginator/agorapulse-ui-components-paginator.mjs +0 -5
  328. package/esm2022/paginator/paginator-button/paginator-button.component.mjs +0 -51
  329. package/esm2022/paginator/paginator.component.mjs +0 -114
  330. package/esm2022/paginator/public_api.mjs +0 -3
  331. package/esm2022/password-input/agorapulse-ui-components-password-input.mjs +0 -5
  332. package/esm2022/password-input/password-input.component.mjs +0 -78
  333. package/esm2022/password-input/public_api.mjs +0 -2
  334. package/esm2022/phone-number-input/agorapulse-ui-components-phone-number-input.mjs +0 -5
  335. package/esm2022/phone-number-input/phone-number-input.component.mjs +0 -195
  336. package/esm2022/phone-number-input/public_api.mjs +0 -2
  337. package/esm2022/popmenu/agorapulse-ui-components-popmenu.mjs +0 -5
  338. package/esm2022/popmenu/options.mjs +0 -17
  339. package/esm2022/popmenu/popmenu-options.interface.mjs +0 -2
  340. package/esm2022/popmenu/popmenu-options.service.mjs +0 -7
  341. package/esm2022/popmenu/popmenu.component.mjs +0 -383
  342. package/esm2022/popmenu/popmenu.directive.mjs +0 -296
  343. package/esm2022/popmenu/popmenu.module.mjs +0 -29
  344. package/esm2022/popmenu/public_api.mjs +0 -5
  345. package/esm2022/radio/agorapulse-ui-components-radio.mjs +0 -5
  346. package/esm2022/radio/public_api.mjs +0 -2
  347. package/esm2022/radio/radio.component.mjs +0 -319
  348. package/esm2022/range-slider/agorapulse-ui-components-range-slider.mjs +0 -5
  349. package/esm2022/range-slider/public_api.mjs +0 -2
  350. package/esm2022/range-slider/range-slider.component.mjs +0 -154
  351. package/esm2022/select/agorapulse-ui-components-select.mjs +0 -5
  352. package/esm2022/select/ap-select.module.mjs +0 -78
  353. package/esm2022/select/dropdown-group-item/dropdown-group-item.component.mjs +0 -51
  354. package/esm2022/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.mjs +0 -75
  355. package/esm2022/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.mjs +0 -79
  356. package/esm2022/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.mjs +0 -59
  357. package/esm2022/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.mjs +0 -60
  358. package/esm2022/select/dropdown-search-form/dropdown-search-form.component.mjs +0 -98
  359. package/esm2022/select/public_api.mjs +0 -13
  360. package/esm2022/select/select-base.directive.mjs +0 -69
  361. package/esm2022/select/select-label-multiple/select-label-multiple.component.mjs +0 -95
  362. package/esm2022/select/select-label-single/select-label-single.component.mjs +0 -33
  363. package/esm2022/select/select-multiple.directive.mjs +0 -35
  364. package/esm2022/select/select-single.directive.mjs +0 -34
  365. package/esm2022/slide-toggle/agorapulse-ui-components-slide-toggle.mjs +0 -5
  366. package/esm2022/slide-toggle/public_api.mjs +0 -2
  367. package/esm2022/slide-toggle/slide-toggle.component.mjs +0 -66
  368. package/esm2022/snackbars-thread/agorapulse-ui-components-snackbars-thread.mjs +0 -5
  369. package/esm2022/snackbars-thread/component/snackbars-thread.component.mjs +0 -93
  370. package/esm2022/snackbars-thread/model/snackbars-thread.model.mjs +0 -44
  371. package/esm2022/snackbars-thread/public_api.mjs +0 -4
  372. package/esm2022/snackbars-thread/service/snackbars-thread.service.mjs +0 -47
  373. package/esm2022/snackbars-thread/utils/const/snackbars-thread.const.mjs +0 -13
  374. package/esm2022/social-button/agorapulse-ui-components-social-button.mjs +0 -5
  375. package/esm2022/social-button/public_api.mjs +0 -2
  376. package/esm2022/social-button/social-button.component.mjs +0 -164
  377. package/esm2022/split-button/agorapulse-ui-components-split-button.mjs +0 -5
  378. package/esm2022/split-button/public_api.mjs +0 -2
  379. package/esm2022/split-button/split-button.component.mjs +0 -122
  380. package/esm2022/src/lib/agorapulse-ui-components.module.mjs +0 -200
  381. package/esm2022/status/agorapulse-ui-components-status.mjs +0 -5
  382. package/esm2022/status/public_api.mjs +0 -2
  383. package/esm2022/status/status.component.mjs +0 -21
  384. package/esm2022/status-card/agorapulse-ui-components-status-card.mjs +0 -5
  385. package/esm2022/status-card/public_api.mjs +0 -2
  386. package/esm2022/status-card/status-card.component.mjs +0 -23
  387. package/esm2022/stepper/agorapulse-ui-components-stepper.mjs +0 -5
  388. package/esm2022/stepper/public_api.mjs +0 -3
  389. package/esm2022/stepper/step.model.mjs +0 -2
  390. package/esm2022/stepper/stepper.component.mjs +0 -38
  391. package/esm2022/tag/agorapulse-ui-components-tag.mjs +0 -5
  392. package/esm2022/tag/public_api.mjs +0 -2
  393. package/esm2022/tag/tag.component.mjs +0 -35
  394. package/esm2022/text-measurement/agorapulse-ui-components-text-measurement.mjs +0 -5
  395. package/esm2022/text-measurement/public_api.mjs +0 -2
  396. package/esm2022/text-measurement/text-measurement.service.mjs +0 -29
  397. package/esm2022/textarea/agorapulse-ui-components-textarea.mjs +0 -5
  398. package/esm2022/textarea/public_api.mjs +0 -2
  399. package/esm2022/textarea/textarea.directive.mjs +0 -37
  400. package/esm2022/toggle/agorapulse-ui-components-toggle.mjs +0 -5
  401. package/esm2022/toggle/public_api.mjs +0 -2
  402. package/esm2022/toggle/toggle.component.mjs +0 -208
  403. package/esm2022/tooltip/agorapulse-ui-components-tooltip.mjs +0 -5
  404. package/esm2022/tooltip/public_api.mjs +0 -2
  405. package/esm2022/tooltip/tooltip.directive.mjs +0 -401
  406. package/esm2022/tooltip/tooltip.service.mjs +0 -29
  407. package/form-field/form-field.component.d.ts +0 -5
  408. package/form-field/public_api.d.ts +0 -1
  409. package/form-message/form-message.component.d.ts +0 -12
  410. package/form-message/public_api.d.ts +0 -1
  411. package/icon-button/icon-button.component.d.ts +0 -40
  412. package/icon-button/public_api.d.ts +0 -1
  413. package/infobox/infobox.component.d.ts +0 -26
  414. package/infobox/public_api.d.ts +0 -1
  415. package/input/input.directive.d.ts +0 -7
  416. package/input/public_api.d.ts +0 -1
  417. package/input-group/input-group.component.d.ts +0 -6
  418. package/input-group/input-prefix/input-prefix.component.d.ts +0 -5
  419. package/input-group/public_api.d.ts +0 -2
  420. package/input-search/input-search.component.d.ts +0 -32
  421. package/input-search/public_api.d.ts +0 -1
  422. package/labels/label-list.component.d.ts +0 -34
  423. package/labels/label.component.d.ts +0 -23
  424. package/labels/public_api.d.ts +0 -2
  425. package/labels-selector/labels-selector.component.d.ts +0 -42
  426. package/labels-selector/public_api.d.ts +0 -1
  427. package/legacy/input/input.component.d.ts +0 -64
  428. package/legacy/input/public_api.d.ts +0 -1
  429. package/legacy/select/public_api.d.ts +0 -1
  430. package/legacy/select/select.component.d.ts +0 -122
  431. package/legacy/textarea/public_api.d.ts +0 -1
  432. package/legacy/textarea/textarea.component.d.ts +0 -53
  433. package/media-display-overlay/media-display-overlay-dialog.component.d.ts +0 -42
  434. package/media-display-overlay/public_api.d.ts +0 -1
  435. package/modal/modal.component.d.ts +0 -54
  436. package/modal/public_api.d.ts +0 -1
  437. package/nav-selector/directives/nav-selector-popover-trigger.directive.d.ts +0 -25
  438. package/nav-selector/directives/tree-node-accessibility.directive.d.ts +0 -9
  439. package/nav-selector/nav-selector-category/nav-selector-category.component.d.ts +0 -28
  440. package/nav-selector/nav-selector-category/nav-selector-category.presenter.d.ts +0 -13
  441. package/nav-selector/nav-selector-group/nav-selector-group.component.d.ts +0 -37
  442. package/nav-selector/nav-selector-group/nav-selector-group.presenter.d.ts +0 -16
  443. package/nav-selector/nav-selector-leaf/nav-selector-leaf.component.d.ts +0 -48
  444. package/nav-selector/nav-selector-leaf/nav-selector-leaf.presenter.d.ts +0 -18
  445. package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.component.d.ts +0 -13
  446. package/nav-selector/nav-selector-leaf-detail/nav-selector-leaf-detail.presenter.d.ts +0 -10
  447. package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.component.d.ts +0 -24
  448. package/nav-selector/nav-selector-leaf-details/nav-selector-leaf-details.presenter.d.ts +0 -14
  449. package/nav-selector/nav-selector-popover/nav-selector-popover-item.component.d.ts +0 -14
  450. package/nav-selector/nav-selector-popover/nav-selector-popover.component.d.ts +0 -40
  451. package/nav-selector/nav-selector.component.d.ts +0 -40
  452. package/nav-selector/nav-selector.d.ts +0 -270
  453. package/nav-selector/nav-selector.state.d.ts +0 -47
  454. package/nav-selector/public_api.d.ts +0 -3
  455. package/nav-selector/testing/nav-selector-entry.mock.d.ts +0 -67
  456. package/nav-selector/testing/public_api.d.ts +0 -1
  457. package/nav-selector/utils/leaf.utils.d.ts +0 -20
  458. package/nav-selector/utils/nav-selector.accessibility.d.ts +0 -52
  459. package/nav-selector/utils/nav-selector.builder.d.ts +0 -32
  460. package/nav-selector/utils/nav-selector.filter.d.ts +0 -32
  461. package/nav-selector/utils/nav-selector.folding.d.ts +0 -73
  462. package/nav-selector/utils/nav-selector.merger.d.ts +0 -23
  463. package/nav-selector/utils/nav-selector.minifying.d.ts +0 -29
  464. package/nav-selector/utils/nav-selector.multi-select.d.ts +0 -54
  465. package/nav-selector/utils/nav-selector.single-select.d.ts +0 -17
  466. package/nav-selector/utils/nav-selector.view-more.d.ts +0 -30
  467. package/neo-datepicker/day-detail.model.d.ts +0 -9
  468. package/neo-datepicker/day-disabled.pipe.d.ts +0 -8
  469. package/neo-datepicker/neo-datepicker.component.d.ts +0 -61
  470. package/neo-datepicker/public_api.d.ts +0 -3
  471. package/notification/notification.component.d.ts +0 -6
  472. package/notification/public_api.d.ts +0 -1
  473. package/paginator/paginator-button/paginator-button.component.d.ts +0 -17
  474. package/paginator/paginator.component.d.ts +0 -38
  475. package/paginator/public_api.d.ts +0 -2
  476. package/password-input/password-input.component.d.ts +0 -33
  477. package/password-input/public_api.d.ts +0 -1
  478. package/phone-number-input/phone-number-input.component.d.ts +0 -50
  479. package/phone-number-input/public_api.d.ts +0 -1
  480. package/popmenu/options.d.ts +0 -16
  481. package/popmenu/popmenu-options.interface.d.ts +0 -48
  482. package/popmenu/popmenu-options.service.d.ts +0 -7
  483. package/popmenu/popmenu.component.d.ts +0 -66
  484. package/popmenu/popmenu.directive.d.ts +0 -90
  485. package/popmenu/popmenu.module.d.ts +0 -11
  486. package/popmenu/public_api.d.ts +0 -4
  487. package/radio/public_api.d.ts +0 -1
  488. package/radio/radio.component.d.ts +0 -77
  489. package/range-slider/public_api.d.ts +0 -1
  490. package/range-slider/range-slider.component.d.ts +0 -35
  491. package/select/ap-select.module.d.ts +0 -17
  492. package/select/dropdown-group-item/dropdown-group-item.component.d.ts +0 -16
  493. package/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.d.ts +0 -25
  494. package/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.d.ts +0 -26
  495. package/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.d.ts +0 -20
  496. package/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.d.ts +0 -20
  497. package/select/dropdown-search-form/dropdown-search-form.component.d.ts +0 -32
  498. package/select/public_api.d.ts +0 -12
  499. package/select/select-base.directive.d.ts +0 -18
  500. package/select/select-label-multiple/select-label-multiple.component.d.ts +0 -27
  501. package/select/select-label-single/select-label-single.component.d.ts +0 -12
  502. package/select/select-multiple.directive.d.ts +0 -10
  503. package/select/select-single.directive.d.ts +0 -10
  504. package/slide-toggle/public_api.d.ts +0 -1
  505. package/slide-toggle/slide-toggle.component.d.ts +0 -20
  506. package/snackbars-thread/component/snackbars-thread.component.d.ts +0 -24
  507. package/snackbars-thread/model/snackbars-thread.model.d.ts +0 -36
  508. package/snackbars-thread/public_api.d.ts +0 -3
  509. package/snackbars-thread/service/snackbars-thread.service.d.ts +0 -15
  510. package/snackbars-thread/utils/const/snackbars-thread.const.d.ts +0 -10
  511. package/social-button/public_api.d.ts +0 -1
  512. package/social-button/social-button.component.d.ts +0 -32
  513. package/split-button/public_api.d.ts +0 -1
  514. package/split-button/split-button.component.d.ts +0 -45
  515. package/src/lib/agorapulse-ui-components.module.d.ts +0 -29
  516. package/status/public_api.d.ts +0 -1
  517. package/status/status.component.d.ts +0 -9
  518. package/status-card/public_api.d.ts +0 -1
  519. package/status-card/status-card.component.d.ts +0 -13
  520. package/stepper/public_api.d.ts +0 -2
  521. package/stepper/step.model.d.ts +0 -6
  522. package/stepper/stepper.component.d.ts +0 -16
  523. package/tag/public_api.d.ts +0 -1
  524. package/tag/tag.component.d.ts +0 -24
  525. package/text-measurement/public_api.d.ts +0 -1
  526. package/text-measurement/text-measurement.service.d.ts +0 -8
  527. package/textarea/public_api.d.ts +0 -1
  528. package/textarea/textarea.directive.d.ts +0 -11
  529. package/toggle/public_api.d.ts +0 -1
  530. package/toggle/toggle.component.d.ts +0 -52
  531. package/tooltip/public_api.d.ts +0 -1
  532. package/tooltip/tooltip.directive.d.ts +0 -59
  533. package/tooltip/tooltip.service.d.ts +0 -11
@@ -1,451 +0,0 @@
1
- import { LoaderComponent } from '@agorapulse/ui-animations';
2
- import { AvatarComponent } from '@agorapulse/ui-components/avatar';
3
- import { BadgeComponent } from '@agorapulse/ui-components/badge';
4
- import { CheckboxComponent } from '@agorapulse/ui-components/checkbox';
5
- import { LabelComponent } from '@agorapulse/ui-components/labels';
6
- import { InputComponent } from '@agorapulse/ui-components/legacy/input';
7
- import { TagComponent } from '@agorapulse/ui-components/tag';
8
- import { SymbolComponent, SymbolRegistry, apPlus, apErrorFill, apCheck, apRoundedCheckFill, apDeleteNoCircle, apSearch, } from '@agorapulse/ui-symbol';
9
- import { AsyncPipe, NgTemplateOutlet, SlicePipe } from '@angular/common';
10
- import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, EnvironmentInjector, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation, computed, effect, forwardRef, inject, runInInjectionContext, signal, } from '@angular/core';
11
- import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
12
- import { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
13
- import { NgSelectModule } from '@ng-select/ng-select';
14
- import { debounceTime, fromEvent, of, skip, switchMap, tap } from 'rxjs';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "@angular/forms";
17
- import * as i2 from "@ng-select/ng-select";
18
- export const SELECT_VALUE_ACCESSOR = {
19
- provide: NG_VALUE_ACCESSOR,
20
- useExisting: forwardRef(() => SelectComponent),
21
- multi: true,
22
- };
23
- /**
24
- * @deprecated use NgSelectComponent with directive apSelectSingle or apSelectMultiple
25
- */
26
- export class SelectComponent {
27
- symbolRegistry = inject(SymbolRegistry);
28
- destroyRef = inject(DestroyRef);
29
- elementRef = inject(ElementRef);
30
- searchInput;
31
- inlineLabelElement;
32
- select;
33
- hovered = false;
34
- optionsSignal = signal([]);
35
- set options(options) {
36
- this.optionsSignal.set(options);
37
- this.filteredOptionsSignal.set(options);
38
- }
39
- ariaLabel;
40
- ariaLabelledBy;
41
- ariaDescribedBy;
42
- appendTo = 'body';
43
- clearable = false;
44
- description;
45
- disabled = false;
46
- selectId;
47
- _inline = false;
48
- set inlineLabel(inlineLabel) {
49
- this._inline = inlineLabel;
50
- if (!this.inlineLabelElement) {
51
- return;
52
- }
53
- this.elementRef.nativeElement.style.setProperty('--placeholder-padding-left', `${this.inlineLabelElement.nativeElement.clientWidth}px`);
54
- }
55
- get inlineLabel() {
56
- return this._inline;
57
- }
58
- create = false;
59
- createText = 'Create';
60
- group = false;
61
- selectableGroup = true;
62
- label = '';
63
- multiple = false;
64
- only = false;
65
- onlyText = 'Only';
66
- placeholder = 'Select...';
67
- selectAll = false;
68
- selectAllText = 'Select all';
69
- unselectAllText = 'Unselect all';
70
- searchable = false;
71
- searchPlaceholder = 'Search...';
72
- searchFn = this.defaultSearchFn;
73
- notFoundText = 'No results found';
74
- loadingText = 'Loading items';
75
- set displayType(displayType) {
76
- this.displayTypeSignal.set(displayType);
77
- }
78
- optionLabel;
79
- optionCaption;
80
- optionDivider = 'divider';
81
- optionProfileImageUrl;
82
- optionBadgeLabel;
83
- optionValue;
84
- optionDisabled = 'disabled';
85
- optionGroupLabel = 'group';
86
- optionGroupTag;
87
- set maximumDisplayOptions(maximumDisplayOptions) {
88
- this.maximumDisplayValuesSignal.set(maximumDisplayOptions);
89
- }
90
- customOptionTemplate;
91
- customLabelTemplate;
92
- customMultiLabelTemplate;
93
- errorMessage;
94
- successMessage;
95
- compareWith;
96
- createNew = new EventEmitter();
97
- valueChanges = new EventEmitter();
98
- _controlValueAccessorChangeFn;
99
- onTouched;
100
- displayTypeSignal = signal('text');
101
- enabledOptions = computed(() => {
102
- return this.optionsSignal().filter((value) => {
103
- if (typeof value === 'string') {
104
- return value;
105
- }
106
- else {
107
- return this.optionDisabled && !value[this.optionDisabled];
108
- }
109
- });
110
- });
111
- itemHoveredSignal = signal(null);
112
- filteredOptionsSignal = signal([]);
113
- loadingSignal = signal(false);
114
- selectedValuesSignal = signal([]);
115
- searchTermSignal = signal('');
116
- searchTerm$ = toObservable(this.searchTermSignal);
117
- maximumDisplayValuesSignal = signal(-1);
118
- hiddenCountSignal = signal(0);
119
- allSelectedSignal = computed(() => {
120
- return this.selectedValuesSignal().length === this.enabledOptions().length;
121
- });
122
- partialySelectedSignal = computed(() => {
123
- return this.selectedValuesSignal().length > 0 && this.selectedValuesSignal().length < this.enabledOptions().length;
124
- });
125
- injector = inject(EnvironmentInjector);
126
- selectValueContainer;
127
- selectValueContainerWidthSignal = signal(0);
128
- constructor() {
129
- this.symbolRegistry.registerSymbols([apCheck, apErrorFill, apRoundedCheckFill, apSearch, apPlus, apDeleteNoCircle]);
130
- }
131
- writeValue(selectedValues = []) {
132
- this.selectedValuesSignal.set(selectedValues);
133
- }
134
- registerOnChange(fn) {
135
- this._controlValueAccessorChangeFn = fn;
136
- }
137
- registerOnTouched(fn) {
138
- this.onTouched = fn;
139
- }
140
- setDisabledState(isDisabled) {
141
- this.disabled = isDisabled;
142
- }
143
- ngOnInit() {
144
- if (this.multiple && (!this.displayTypeSignal() || this.displayTypeSignal() === 'text')) {
145
- console.warn('Display type "text" is not supported for multiple select. Switching to "label".');
146
- this.displayTypeSignal.set('label');
147
- }
148
- this.searchTerm$
149
- .pipe(debounceTime(250), skip(1), tap(() => {
150
- this.loadingSignal.set(true);
151
- this.optionsSignal.set([]);
152
- }), switchMap((term) => this.searchFn(term)), tap(() => {
153
- this.loadingSignal.set(false);
154
- }), takeUntilDestroyed(this.destroyRef))
155
- .subscribe((options) => {
156
- this.optionsSignal.set(options);
157
- });
158
- }
159
- ngAfterViewInit() {
160
- if (this.inlineLabelElement) {
161
- this.elementRef.nativeElement.style.setProperty('--placeholder-padding-left', `${this.inlineLabelElement.nativeElement.clientWidth}px`);
162
- }
163
- this.selectValueContainer = this.select.element.getElementsByClassName('ng-value-container')[0];
164
- if (this.multiple) {
165
- fromEvent(window, 'resize')
166
- .pipe(debounceTime(200), takeUntilDestroyed(this.destroyRef))
167
- .subscribe(() => {
168
- this.updateSelectValueContainerWidthSignal();
169
- });
170
- }
171
- this.updateSelectValueContainerWidthSignal();
172
- runInInjectionContext(this.injector, () => {
173
- effect(() => {
174
- if (this.multiple) {
175
- const selectedValues = this.selectedValuesSignal();
176
- const selectValueContainerWidthSignal = this.selectValueContainerWidthSignal();
177
- const timeout = setTimeout(() => {
178
- this.calculateResponsiveLabels(selectValueContainerWidthSignal, selectedValues);
179
- }, 100);
180
- return () => {
181
- clearTimeout(timeout);
182
- };
183
- }
184
- return;
185
- }, {
186
- allowSignalWrites: true,
187
- });
188
- });
189
- }
190
- onSearchTermChange(searchTerm) {
191
- this.searchTermSignal.set(searchTerm);
192
- }
193
- defaultSearchFn(term) {
194
- return of(this.filteredOptionsSignal().filter((option) => {
195
- if (typeof option === 'string') {
196
- return option.toLowerCase().includes(term.toLowerCase());
197
- }
198
- if (this.optionLabel) {
199
- return String(option[this.optionLabel]).toLowerCase().includes(term.toLowerCase());
200
- }
201
- return option;
202
- }));
203
- }
204
- isGroupIndeterminate(children) {
205
- return children.some((child) => child.selected) && !this.isGroupChecked(children);
206
- }
207
- isGroupDisabled(children) {
208
- return children.every((child) => child.disabled);
209
- }
210
- isGroupChecked(children) {
211
- return children.every((child) => child.disabled || child.selected) && !this.isGroupDisabled(children);
212
- }
213
- onSelectOnly(item) {
214
- if (typeof item === 'string') {
215
- this.selectedValuesSignal.set([item]);
216
- }
217
- else {
218
- this.optionValue ? this.selectedValuesSignal.set([item[this.optionValue]]) : this.selectedValuesSignal.set([item]);
219
- }
220
- this.callControlValueAccessorChangeFn();
221
- }
222
- onSelectOpened() {
223
- setTimeout(() => {
224
- if (this.onTouched) {
225
- this.onTouched();
226
- }
227
- if (this.searchable && !!this.searchFn) {
228
- this.searchInput.focusInput();
229
- }
230
- });
231
- }
232
- onHoverItem(htmlid) {
233
- if (!this.multiple || this.disabled) {
234
- return;
235
- }
236
- this.itemHoveredSignal.set(htmlid);
237
- }
238
- onLeaveItem() {
239
- if (!this.multiple || this.disabled) {
240
- return;
241
- }
242
- this.itemHoveredSignal.set(null);
243
- }
244
- onToggleAll() {
245
- if (this.partialySelectedSignal() || this.allSelectedSignal()) {
246
- this.selectedValuesSignal.set([]);
247
- }
248
- else {
249
- this.selectedValuesSignal.set(this.enabledOptions().map((value) => {
250
- if (typeof value === 'string') {
251
- return value;
252
- }
253
- return this.optionValue ? value[this.optionValue] : value;
254
- }));
255
- }
256
- this.callControlValueAccessorChangeFn();
257
- }
258
- onSelectedValuesChange(selectedValues) {
259
- this.selectedValuesSignal.set(selectedValues);
260
- this.callControlValueAccessorChangeFn();
261
- }
262
- onOpenSelect() {
263
- this.select.open();
264
- }
265
- onInlineInputEnter() {
266
- this.hovered = true;
267
- }
268
- onInlineInputLeave() {
269
- this.hovered = false;
270
- }
271
- onCreateNew() {
272
- this.createNew.emit(this.searchTermSignal());
273
- this.select.close();
274
- }
275
- removeSelectedItem({ $event }, item) {
276
- if ($event) {
277
- $event.stopImmediatePropagation();
278
- }
279
- const selectedItemId = typeof item === 'string' ? item : this.optionValue ? item[this.optionValue] : item;
280
- this.selectedValuesSignal.update((selectedValues) => selectedValues.filter((selectedValue) => selectedValue !== selectedItemId));
281
- this.callControlValueAccessorChangeFn();
282
- }
283
- callControlValueAccessorChangeFn() {
284
- this.valueChanges.emit(this.selectedValuesSignal());
285
- if (this._controlValueAccessorChangeFn) {
286
- this._controlValueAccessorChangeFn(this.selectedValuesSignal());
287
- }
288
- }
289
- updateSelectValueContainerWidthSignal() {
290
- if (this.selectValueContainer) {
291
- const remainingPlaceHolderWidth = 100;
292
- const selectValueContainerWidth = this.selectValueContainer.clientWidth - remainingPlaceHolderWidth;
293
- this.selectValueContainerWidthSignal.set(selectValueContainerWidth);
294
- }
295
- }
296
- calculateResponsiveLabels(containerWidth, selectedValues) {
297
- if (!selectedValues || selectedValues.length === 0) {
298
- this.hiddenCountSignal.set(0);
299
- return;
300
- }
301
- const itemsContainer = this.selectValueContainer.getElementsByClassName('multiple-item')[0];
302
- const items = this.selectValueContainer.getElementsByClassName('item');
303
- let totalWidth = 0;
304
- let hiddenCount = 0;
305
- const itemGap = 4;
306
- for (let index = 0; index < items.length; index++) {
307
- const item = items[index];
308
- const itemWidth = item.clientWidth + itemGap;
309
- if (totalWidth + itemWidth < containerWidth && !hiddenCount) {
310
- totalWidth += itemWidth;
311
- item.style.visibility = 'visible';
312
- }
313
- else {
314
- item.style.visibility = 'hidden';
315
- hiddenCount++;
316
- }
317
- }
318
- itemsContainer.style.maxWidth = `${totalWidth}px`;
319
- this.hiddenCountSignal.set(hiddenCount);
320
- }
321
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
322
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: SelectComponent, isStandalone: true, selector: "ap-select", inputs: { options: "options", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", appendTo: "appendTo", clearable: "clearable", description: "description", disabled: "disabled", selectId: "selectId", inlineLabel: "inlineLabel", create: "create", createText: "createText", group: "group", selectableGroup: "selectableGroup", label: "label", multiple: "multiple", only: "only", onlyText: "onlyText", placeholder: "placeholder", selectAll: "selectAll", selectAllText: "selectAllText", unselectAllText: "unselectAllText", searchable: "searchable", searchPlaceholder: "searchPlaceholder", searchFn: "searchFn", notFoundText: "notFoundText", loadingText: "loadingText", displayType: "displayType", optionLabel: "optionLabel", optionCaption: "optionCaption", optionDivider: "optionDivider", optionProfileImageUrl: "optionProfileImageUrl", optionBadgeLabel: "optionBadgeLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupTag: "optionGroupTag", maximumDisplayOptions: "maximumDisplayOptions", customOptionTemplate: "customOptionTemplate", customLabelTemplate: "customLabelTemplate", customMultiLabelTemplate: "customMultiLabelTemplate", errorMessage: "errorMessage", successMessage: "successMessage", compareWith: "compareWith" }, outputs: { createNew: "createNew", valueChanges: "valueChanges" }, host: { properties: { "class.hovered": "this.hovered", "class.inline": "this.inlineLabel" } }, providers: [SELECT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "inlineLabelElement", first: true, predicate: ["inlineLabel"], descendants: true }, { propertyName: "select", first: true, predicate: ["select"], descendants: true }], ngImport: i0, template: "@if (label && !inlineLabel) {\n <label [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n @if (description) {\n <span class=\"description\">\n {{ description }}\n </span>\n }\n </label>\n}\n\n@if (inlineLabel) {\n <div\n #inlineLabel\n tabindex=\"0\"\n class=\"inline-label\"\n (click)=\"onOpenSelect()\"\n (keydown.enter)=\"onOpenSelect()\"\n (mouseenter)=\"onInlineInputEnter()\"\n (mouseleave)=\"onInlineInputLeave()\">\n @if (label && inlineLabel) {\n <label\n class=\"label\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n </label>\n }\n <div class=\"divider\"></div>\n </div>\n}\n\n<ng-select\n #select\n class=\"ap-select-legacy\"\n [tabIndex]=\"0\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [labelForId]=\"selectId\"\n [searchable]=\"false\"\n [closeOnSelect]=\"!multiple\"\n [bindValue]=\"optionValue ? optionValue : ''\"\n [groupBy]=\"group ? optionGroupLabel : ''\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [markFirst]=\"false\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"false\"\n [appendTo]=\"appendTo\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-describedby]=\"ariaDescribedBy || null\"\n [attr.aria-disabled]=\"disabled?.toString()\"\n [items]=\"optionsSignal()\"\n [compareWith]=\"compareWith\"\n [loading]=\"loadingSignal()\"\n [ngModel]=\"selectedValuesSignal()\"\n [class.with-error]=\"errorMessage\"\n [class.with-success]=\"successMessage\"\n (ngModelChange)=\"onSelectedValuesChange($event)\"\n (open)=\"onSelectOpened()\">\n @if (searchable || selectAll) {\n <ng-template\n let-item=\"item\"\n ng-header-tmp>\n @if (searchable) {\n <ap-input\n #searchInput\n tabindex=\"0\"\n name=\"search-input\"\n class=\"full-width\"\n symbolId=\"search\"\n symbolPosition=\"right\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"onSearchTermChange($event)\" />\n }\n @if (selectAll) {\n <ap-checkbox\n class=\"select-all-checkbox\"\n name=\"option-group-select-all\"\n [indeterminate]=\"partialySelectedSignal()\"\n [checked]=\"allSelectedSignal()\"\n (click)=\"onToggleAll()\">\n <span>\n {{ partialySelectedSignal() || allSelectedSignal() ? unselectAllText : selectAllText }}\n </span>\n </ap-checkbox>\n }\n </ng-template>\n }\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-optgroup-tmp>\n <div\n class=\"group\"\n [class.with-search]=\"searchable\"\n [class.with-select-all]=\"selectAll\">\n @if (!multiple) {\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n @if (optionGroupTag && optionGroupTag[item[optionGroupLabel]]) {\n <ap-badge color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n }\n }\n @if (multiple) {\n @if (selectableGroup) {\n <ap-checkbox\n [name]=\"'option-group-selection-' + item['group']\"\n [indeterminate]=\"isGroupIndeterminate(item$.children)\"\n [checked]=\"isGroupChecked(item$.children)\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n @if (optionGroupTag && optionGroupTag[item[optionGroupLabel]]) {\n <ap-badge color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n }\n </ap-checkbox>\n }\n @if (!selectableGroup) {\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n }\n }\n </div>\n </ng-template>\n <ng-template\n let-items=\"items\"\n let-item$=\"item$\"\n ng-multi-label-tmp>\n <ng-container>\n <div class=\"multiple-item\">\n @if (!customMultiLabelTemplate) {\n @for (item of items; track item) {\n @if (optionLabel && item[optionLabel]) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"item text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n class=\"item\"\n removable=\"true\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"item text-item\"\n clearable=\"true\"\n (clear)=\"removeSelectedItem($event, item)\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n {{ item[optionLabel] }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"item with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n }\n }\n @if (!optionLabel || !item[optionLabel]) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"item text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n class=\"item\"\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"item text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"item with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span class=\"text-item\">\n {{ item }}\n </span>\n </div>\n }\n }\n }\n }\n @if (customMultiLabelTemplate) {\n <ng-container *ngTemplateOutlet=\"customMultiLabelTemplate; context: { options: items }\" />\n }\n </div>\n @if (hiddenCountSignal() > 0) {\n <div class=\"remaining\">\n @if (displayTypeSignal() === 'text' || displayTypeSignal() === 'withAvatar' || !displayTypeSignal()) {\n <span class=\"text-item\">+{{ hiddenCountSignal() }}</span>\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n clearable=\"false\">\n +{{ hiddenCountSignal() }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"false\"\n [content]=\"'+' + hiddenCountSignal()\" />\n }\n </div>\n }\n </ng-container>\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading-state\">\n <ap-loader diameter=\"30\" />\n <span>\n {{ loadingText }}\n </span>\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp></ng-template>\n @if (create) {\n <ng-template ng-footer-tmp>\n <button\n class=\"create-new\"\n type=\"button\"\n (click)=\"onCreateNew()\">\n <ap-symbol\n symbolId=\"plus\"\n size=\"sm\" />\n <span>\n {{ createText }}\n </span>\n @if (searchTermSignal()) {\n \"{{ searchTermSignal() }}\"\n }\n </button>\n </ng-template>\n }\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n @if ((!optionLabel || !item[optionLabel]) && item && (!optionDivider || !item[optionDivider]) && !customOptionTemplate) {\n <div class=\"option\">\n <span\n class=\"option-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n @if (item$.selected && !multiple) {\n <ap-symbol\n symbolId=\"check\"\n color=\"electric-blue\"\n size=\"sm\" />\n }\n </div>\n }\n @if ((optionLabel && item[optionLabel]) || customOptionTemplate) {\n <div\n class=\"option\"\n [class.with-caption]=\"optionCaption && item[optionCaption]\"\n [class.multiple]=\"multiple\"\n (mouseenter)=\"onHoverItem(item$.htmlId)\"\n (mouseleave)=\"onLeaveItem()\">\n <ng-container *ngTemplateOutlet=\"contentItem; context: { item: item, item$: item$ }\" />\n </div>\n }\n @if (optionDivider && item[optionDivider]) {\n <div class=\"divider\"></div>\n }\n </ng-template>\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n @if (customLabelTemplate) {\n <ng-container *ngTemplateOutlet=\"customLabelTemplate; context: { option: item }\" />\n }\n @if (!optionLabel && !customLabelTemplate) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <span class=\"text-item\">\n {{ item }}\n </span>\n }\n }\n @if (optionLabel && !customLabelTemplate) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span class=\"text-item\">\n {{ item[optionLabel] }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n [title]=\"item[optionLabel]\"\n (clear)=\"removeSelectedItem($event, item)\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n {{ item[optionLabel] }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n }\n }\n </ng-template>\n <ng-template ng-notfound-tmp>\n <div class=\"option not-found\">\n {{ notFoundText }}\n </div>\n </ng-template>\n</ng-select>\n\n<ng-template\n #contentItem\n let-item=\"item\"\n let-item$=\"item$\">\n @if (multiple) {\n <div class=\"disabled-opaque\"></div>\n @if (multiple) {\n <ap-checkbox\n [checked]=\"item$.selected\"\n [disabled]=\"item$.disabled\"\n [name]=\"'option-selection-' + item$.htmlId\">\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ap-checkbox>\n }\n }\n @if (!multiple) {\n <div class=\"disabled-opaque\"></div>\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n }\n</ng-template>\n\n<ng-template\n #textItem\n let-item=\"item\"\n let-item$=\"item$\">\n <div class=\"content\">\n @if (!customOptionTemplate) {\n @if (!optionLabel) {\n <span class=\"item\">\n {{ item }}\n </span>\n }\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n @if (optionLabel && item[optionLabel]) {\n <div class=\"texts\">\n <div class=\"first-line\">\n <span\n class=\"label\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n @if (optionBadgeLabel && item[optionBadgeLabel]) {\n <ap-badge color=\"blue\">{{ item[optionBadgeLabel] }}</ap-badge>\n }\n </div>\n @if (optionCaption && item[optionCaption]) {\n <span\n class=\"caption\"\n [title]=\"item[optionCaption]\">\n {{ item[optionCaption] }}\n </span>\n }\n </div>\n }\n }\n @if (customOptionTemplate) {\n <ng-container *ngTemplateOutlet=\"customOptionTemplate; context: { option: item }\" />\n }\n @if (only && !item$.disabled && itemHoveredSignal() === item$.htmlId && multiple) {\n <button\n class=\"standalone-link\"\n type=\"button\"\n (click)=\"onSelectOnly(item)\">\n {{ onlyText }}\n </button>\n }\n @if (item$.selected && !multiple) {\n <ap-symbol\n symbolId=\"check\"\n color=\"electric-blue\"\n size=\"sm\" />\n }\n </div>\n</ng-template>\n\n@if (errorMessage) {\n <div class=\"form-message error\">\n <ap-symbol\n symbolId=\"error_fill\"\n size=\"sm\" />\n <span>\n {{ errorMessage }}\n </span>\n </div>\n}\n\n@if (successMessage) {\n <div class=\"form-message success\">\n <ap-symbol\n symbolId=\"rounded-check_fill\"\n size=\"sm\" />\n <span>\n {{ successMessage }}\n </span>\n </div>\n}\n", styles: ["ap-select{--placeholder-padding-left: 0px;display:flex;flex-direction:column;position:relative;gap:var(--ref-spacing-xxs);font-family:var(--ref-font-family);font-size:var(--ref-font-size-sm)}ap-select.inline .inline-label{display:flex;align-items:center;position:absolute;z-index:10000;top:0;left:0;height:100%;padding-left:var(--ref-spacing-xs);box-sizing:border-box;color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label:hover{cursor:pointer}ap-select.inline .inline-label .label{display:flex;z-index:10;font-size:var(--comp-select-inline-label-text-size);line-height:var(--comp-select-inline-label-text-line-height);font-family:var(--comp-select-inline-label-text-font-family);font-weight:var(--comp-select-inline-label-text-font-weight);color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label .label:hover{cursor:pointer}ap-select.inline .inline-label .label span{width:fit-content}ap-select.inline .inline-label .divider{height:18px;max-height:18px;width:1px;margin:0 8px;background-color:var(--comp-select-separator-color);border-radius:1px}ap-select.inline .ng-select .ng-value-container{padding-left:calc(var(--placeholder-padding-left))!important}ap-select.hovered .ng-select-container{border-color:var(--ref-color-grey-40)!important}ap-select label{display:flex;flex-direction:column;gap:var(--comp-forms-label-spacing-vertical);font-size:var(--comp-forms-label-size);font-weight:var(--comp-forms-label-font-weight);line-height:var(--comp-forms-label-line-height);font-family:var(--comp-forms-label-font-family);color:var(--comp-forms-label-text-color)}ap-select label .description{font-size:var(--comp-forms-label-description-text-size);font-weight:var(--comp-forms-label-description-text-font-weight);line-height:var(--comp-forms-label-description-text-line-height);font-family:var(--comp-forms-label-description-text-font-family);color:var(--comp-forms-label-description-text-color)}ap-select.invalid:not([disabled]):not(.transparent) .ng-select-container,ap-select.ng-invalid.ng-dirty.ng-touched:not([disabled]):not(.transparent) .ng-select-container{border-color:var(--comp-input-border-error-color)}ap-select.valid:not([disabled]):not(.transparent) .ng-select-container{border:1px solid var(--comp-input-border-success-color)}.ng-select.ap-select-legacy .ng-select-container{border-color:var(--ref-color-grey-20)}.ng-select.ap-select-legacy .ng-select-container:hover{box-shadow:none;cursor:pointer;border-color:var(--ref-color-grey-40)!important}.ng-select.ap-select-legacy .ng-select-container .ng-value-container{overflow-x:auto;overflow-y:hidden}.ng-select.ap-select-legacy .ng-select-container .ng-value-container:hover,.ng-select.ap-select-legacy .ng-select-container .ng-value-container input:hover{cursor:pointer}.ng-select.ap-select-legacy.ng-select-opened.ng-select-bottom .ng-select-container,.ng-select.ap-select-legacy.ng-select-opened.ng-select-top .ng-select-container{border-radius:var(--ref-border-radius-sm);border-color:var(--ref-color-grey-20)}.ng-select.ap-select-legacy.ng-select-opened .ng-arrow{border-color:transparent transparent var(--ref-color-electric-blue-100)}.ng-select.ap-select-legacy.ng-select-opened .ng-select-container:hover{border-color:var(--ref-color-electric-blue-100)!important}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value{overflow:visible!important;width:100%;display:flex}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value span.text-item{display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value span{display:inline-block}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-tag{width:100%;margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-tag div{overflow:auto}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-label{margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-label .label{overflow:auto}.ng-select.ap-select-legacy.ng-select-multiple .ng-select-container .ng-value-container{padding-left:12px;flex-wrap:nowrap;overflow:hidden}.ng-select.ap-select-legacy.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:0!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container{background-color:var(--ref-color-grey-20);border-color:var(--ref-color-grey-20);color:var(--ref-color-grey-100)}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container:hover{cursor:default!important;background-color:var(--ref-color-grey-20)!important;border-color:var(--ref-color-grey-20)!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container .ng-placeholder{color:var(--ref-color-grey-60)!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container .ng-value-container:hover{cursor:default!important}.ng-select.ap-select-legacy .ng-value-container{padding-left:12px;height:100%;position:relative;padding-top:0!important}.ng-select.ap-select-legacy .ng-value-container .ng-placeholder{position:absolute;padding-left:0!important;color:var(--ref-color-grey-60);font-weight:var(--ref-font-weight-regular);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select-legacy .ng-value-container .multiple-item{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select-legacy .ng-value-container .multiple-item .item{visibility:hidden}.ng-select.ap-select-legacy .ng-value-container .multiple-item .text-item{color:var(--ref-color-grey-100);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select-legacy .ng-value-container .with-avatar{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select-legacy .ng-value-container .ng-value{margin:0!important}.ng-select.ap-select-legacy .ng-value-container .ng-input{position:unset!important;padding:0!important;height:100%!important}.ng-select.ap-select-legacy .ng-value-container .ng-input input{height:100%;color:var(--ref-color-grey-100)!important;caret-color:var(--ref-color-grey-100)!important;border-radius:unset}.ng-select.ap-select-legacy.with-error .ng-select-container{border-color:var(--comp-input-border-error-color)}.ng-select.ap-select-legacy.with-success .ng-select-container{border-color:var(--comp-input-border-success-color)}.ng-dropdown-panel.ap-select-legacy,.ap-select-legacy .ng-select-container+.ng-dropdown-panel{overflow:hidden;border:none;box-shadow:var(--comp-select-shadow);padding:var(--comp-select-padding-vertical) 0;background-color:var(--comp-select-background-color)}.ng-dropdown-panel.ap-select-legacy.ng-select-bottom,.ap-select-legacy .ng-select-container+.ng-dropdown-panel.ng-select-bottom{margin-top:var(--ref-spacing-xxxs);border-radius:var(--ref-border-radius-sm)}.ng-dropdown-panel.ap-select-legacy .ng-option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option{box-sizing:border-box;padding:0;position:relative}.ng-dropdown-panel.ap-select-legacy .ng-option .ng-option-label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option .ng-option-label{padding:0}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-child,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-child{padding-left:0}.ng-dropdown-panel.ap-select-legacy .ng-option:hover:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:hover:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select-legacy .ng-option:active:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:active:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select-legacy .ng-option:focus:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:focus:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple),.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple){background-color:var(--ref-color-electric-blue-10);color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple) .label,.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple) .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .caption{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option .label{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight);color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked .option span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option span{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked:hover{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option span{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option.multiple .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option.multiple .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-disabled,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled{color:var(--ref-color-grey-40)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-disabled .disabled-opaque,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled .disabled-opaque{position:absolute;inset:0;opacity:.6;background-color:var(--ref-color-white);cursor:default;width:100%;height:100%;z-index:999}.ng-dropdown-panel.ap-select-legacy .loading-state,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .loading-state{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:var(--ref-spacing-xxs);min-height:90px;max-height:90px;padding:var(--ref-spacing-md) var(--ref-spacing-sm) var(--ref-spacing-sm);box-sizing:border-box}.ng-dropdown-panel.ap-select-legacy .loading-state span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .loading-state span{font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm);font-style:italic;font-weight:var(--ref-font-weight-regular);color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .group,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group{display:flex;align-items:center;width:100%;gap:var(--ref-spacing-xxs);padding:var(--comp-select-group-padding-horizontal) var(--comp-select-group-padding-vertical)}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox .checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox .checkbox label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox label{display:flex;gap:var(--ref-spacing-xxs);flex:1}.ng-dropdown-panel.ap-select-legacy .divider,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .divider{width:100%;height:1px;background-color:var(--comp-select-separator-color);margin:var(--ref-spacing-xxs) 0}.ng-dropdown-panel.ap-select-legacy .create-new,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new{display:flex;align-items:center;border:none;width:100%;background-color:transparent;gap:var(--ref-spacing-xxxs);color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);cursor:pointer;padding:var(--comp-select-search-bar-bottom-link-margin-top) var(--comp-select-search-bar-bottom-link-padding-horizontal) var(--comp-select-search-bar-bottom-link-padding-bottom) var(--comp-select-search-bar-bottom-link-padding-horizontal);line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm)}.ng-dropdown-panel.ap-select-legacy .create-new:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .create-new:active,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new:active{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option{display:flex;align-items:center;box-sizing:border-box;min-height:var(--comp-select-one-line-height);max-height:var(--comp-select-one-line-height);color:var(--comp-select-one-line-text-color);background-color:var(--comp-select-one-line-background-color);font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height);padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal)}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox .checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox .checkbox label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox label{flex:1;overflow:auto}.ng-dropdown-panel.ap-select-legacy .option .option-item,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .option-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;flex:1}.ng-dropdown-panel.ap-select-legacy .option.not-found,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.not-found{padding:var(--ref-spacing-xs) var(--ref-spacing-sm) var(--ref-spacing-xxxs) var(--ref-spacing-sm)}.ng-dropdown-panel.ap-select-legacy .option .content,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content{display:flex;align-items:center;gap:var(--comp-select-one-line-spacing);flex:1;width:100%}.ng-dropdown-panel.ap-select-legacy .option .content .item,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .item{flex:1}.ng-dropdown-panel.ap-select-legacy .option .content .texts,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts{flex:1;overflow:auto;display:flex;flex-direction:column}.ng-dropdown-panel.ap-select-legacy .option .content .texts .first-line,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line{display:flex;align-items:center;gap:var(--ref-spacing-xxs)}.ng-dropdown-panel.ap-select-legacy .option .content .texts .first-line .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line .label{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select-legacy .option .content ap-symbol,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content ap-symbol{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .option .content ap-symbol div.svg,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content ap-symbol div.svg{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .label{font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height)}.ng-dropdown-panel.ap-select-legacy .option.with-caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption{padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal);min-height:var(--comp-select-two-line-height);max-height:var(--comp-select-two-line-height)}.ng-dropdown-panel.ap-select-legacy .option.with-caption .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption .label{font-weight:var(--comp-select-two-line-title-text-font-weight);font-family:var(--comp-select-two-line-title-text-font-family);font-size:var(--comp-select-two-line-title-text-size);line-height:var(--comp-select-two-line-title-text-line-height);color:var(--comp-select-two-line-title-text-color)}.ng-dropdown-panel.ap-select-legacy .option.with-caption .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption .caption{font-weight:var(--comp-select-two-line-caption-text-font-weight);font-family:var(--comp-select-two-line-caption-text-font-family);font-size:var(--comp-select-two-line-caption-text-size);line-height:var(--comp-select-two-line-caption-text-line-height);color:var(--comp-select-two-line-caption-text-color);display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-panel-items,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-panel-items{padding:0}.ng-dropdown-panel.ap-select-legacy .ng-optgroup,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup{display:flex;align-items:center;padding:0}.ng-dropdown-panel.ap-select-legacy .ng-optgroup:first-child .with-search,.ng-dropdown-panel.ap-select-legacy .ng-optgroup:first-child .with-select-all,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-search,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-select-all{border:none}.ng-dropdown-panel.ap-select-legacy .ng-optgroup .group,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup .group{display:flex;width:100%;height:100%;background-color:var(--comp-select-group-background-color);min-height:32px;box-sizing:border-box;max-height:50px;padding:var(--comp-select-group-padding-vertical) var(--comp-select-group-padding-horizontal);border-top:1px solid var(--comp-select-group-border-top-color)}.ng-dropdown-panel.ap-select-legacy .ng-optgroup .group .group-label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup .group .group-label{font-weight:var(--comp-select-group-text-font-weight);font-size:var(--comp-select-group-text-size);line-height:var(--comp-select-group-text-line-height);font-family:var(--comp-select-group-text-font-family);color:var(--comp-select-group-text-color)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-header,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-header{padding:0 var(--comp-select-search-bar-padding-horizontal) var(--comp-select-search-bar-margin-bottom) var(--comp-select-search-bar-padding-horizontal);border-bottom:1px solid var(--comp-select-search-bar-border-bottom-color)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-header .select-all-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-header .select-all-checkbox{padding-left:var(--ref-spacing-xxs);height:var(--comp-select-one-line-height)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-footer,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-footer{cursor:pointer;padding:0;border-top:1px solid var(--ref-color-grey-10)}.ng-dropdown-panel.ap-select-legacy .standalone-link,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link{color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);background-color:transparent;border:none;line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm);cursor:pointer}.ng-dropdown-panel.ap-select-legacy .standalone-link:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .standalone-link:active,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link:active{color:var(--ref-color-electric-blue-150)}.form-message{font-size:var(--comp-forms-status-text-size);font-weight:var(--comp-forms-status-text-font-weight);line-height:var(--comp-forms-status-text-line-height);font-family:var(--comp-forms-status-text-font-family);margin:0;display:flex;gap:var(--ref-spacing-xxxs)}.form-message.error{color:var(--comp-forms-status-text-error-color)}.form-message.error ap-symbol{color:var(--comp-forms-status-icon-error-color)}.form-message.success{color:var(--comp-forms-status-text-success-color)}.form-message.success ap-symbol{color:var(--comp-forms-status-icon-success-color)}form.ng-submitted ap-select.ng-valid .ng-select-container{border-color:var(--comp-input-border-success-color)}form.ng-submitted ap-select.ng-invalid .ng-select-container{border-color:var(--comp-input-border-error-color)}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick", "keyDownFn"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i2.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i2.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i2.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "directive", type: i2.NgFooterTemplateDirective, selector: "[ng-footer-tmp]" }, { kind: "directive", type: i2.NgNotFoundTemplateDirective, selector: "[ng-notfound-tmp]" }, { kind: "directive", type: i2.NgLoadingTextTemplateDirective, selector: "[ng-loadingtext-tmp]" }, { kind: "directive", type: i2.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: InputComponent, selector: "ap-input", inputs: ["ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "disabled", "clearable", "inputType", "inputId", "name", "label", "description", "prefix", "suffix", "required", "placeholder", "errorMessage", "successMessage", "symbolId", "symbolPosition"], outputs: ["focus", "blur", "keyup"] }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["symbolId", "color", "size"], outputs: ["sizeChange"] }, { kind: "component", type: CheckboxComponent, selector: "ap-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "disabled", "indeterminate", "checked", "required", "name"], outputs: ["change"] }, { kind: "component", type: AvatarComponent, selector: "ap-avatar", inputs: ["profilePicture", "alt", "network", "size", "username", "showInitials", "bigNetwork", "anonymous", "online", "youtubeAvatarMode", "rounded"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LabelComponent, selector: "ap-label", inputs: ["content", "selectorWidth", "removable"], outputs: ["remove"] }, { kind: "component", type: TagComponent, selector: "ap-tag", inputs: ["clearable", "add", "color", "mini"], outputs: ["clear", "added"] }, { kind: "component", type: BadgeComponent, selector: "ap-badge", inputs: ["color"] }, { kind: "component", type: LoaderComponent, selector: "ap-loader", inputs: ["color", "diameter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
323
- }
324
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: SelectComponent, decorators: [{
325
- type: Component,
326
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-select', standalone: true, imports: [
327
- ReactiveFormsModule,
328
- FormsModule,
329
- NgSelectModule,
330
- InputComponent,
331
- SymbolComponent,
332
- AsyncPipe,
333
- SlicePipe,
334
- CheckboxComponent,
335
- AvatarComponent,
336
- NgTemplateOutlet,
337
- LabelComponent,
338
- TagComponent,
339
- BadgeComponent,
340
- LoaderComponent,
341
- ], providers: [SELECT_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, template: "@if (label && !inlineLabel) {\n <label [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n @if (description) {\n <span class=\"description\">\n {{ description }}\n </span>\n }\n </label>\n}\n\n@if (inlineLabel) {\n <div\n #inlineLabel\n tabindex=\"0\"\n class=\"inline-label\"\n (click)=\"onOpenSelect()\"\n (keydown.enter)=\"onOpenSelect()\"\n (mouseenter)=\"onInlineInputEnter()\"\n (mouseleave)=\"onInlineInputLeave()\">\n @if (label && inlineLabel) {\n <label\n class=\"label\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n </label>\n }\n <div class=\"divider\"></div>\n </div>\n}\n\n<ng-select\n #select\n class=\"ap-select-legacy\"\n [tabIndex]=\"0\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [labelForId]=\"selectId\"\n [searchable]=\"false\"\n [closeOnSelect]=\"!multiple\"\n [bindValue]=\"optionValue ? optionValue : ''\"\n [groupBy]=\"group ? optionGroupLabel : ''\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [markFirst]=\"false\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"false\"\n [appendTo]=\"appendTo\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-describedby]=\"ariaDescribedBy || null\"\n [attr.aria-disabled]=\"disabled?.toString()\"\n [items]=\"optionsSignal()\"\n [compareWith]=\"compareWith\"\n [loading]=\"loadingSignal()\"\n [ngModel]=\"selectedValuesSignal()\"\n [class.with-error]=\"errorMessage\"\n [class.with-success]=\"successMessage\"\n (ngModelChange)=\"onSelectedValuesChange($event)\"\n (open)=\"onSelectOpened()\">\n @if (searchable || selectAll) {\n <ng-template\n let-item=\"item\"\n ng-header-tmp>\n @if (searchable) {\n <ap-input\n #searchInput\n tabindex=\"0\"\n name=\"search-input\"\n class=\"full-width\"\n symbolId=\"search\"\n symbolPosition=\"right\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"onSearchTermChange($event)\" />\n }\n @if (selectAll) {\n <ap-checkbox\n class=\"select-all-checkbox\"\n name=\"option-group-select-all\"\n [indeterminate]=\"partialySelectedSignal()\"\n [checked]=\"allSelectedSignal()\"\n (click)=\"onToggleAll()\">\n <span>\n {{ partialySelectedSignal() || allSelectedSignal() ? unselectAllText : selectAllText }}\n </span>\n </ap-checkbox>\n }\n </ng-template>\n }\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-optgroup-tmp>\n <div\n class=\"group\"\n [class.with-search]=\"searchable\"\n [class.with-select-all]=\"selectAll\">\n @if (!multiple) {\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n @if (optionGroupTag && optionGroupTag[item[optionGroupLabel]]) {\n <ap-badge color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n }\n }\n @if (multiple) {\n @if (selectableGroup) {\n <ap-checkbox\n [name]=\"'option-group-selection-' + item['group']\"\n [indeterminate]=\"isGroupIndeterminate(item$.children)\"\n [checked]=\"isGroupChecked(item$.children)\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n @if (optionGroupTag && optionGroupTag[item[optionGroupLabel]]) {\n <ap-badge color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n }\n </ap-checkbox>\n }\n @if (!selectableGroup) {\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n }\n }\n </div>\n </ng-template>\n <ng-template\n let-items=\"items\"\n let-item$=\"item$\"\n ng-multi-label-tmp>\n <ng-container>\n <div class=\"multiple-item\">\n @if (!customMultiLabelTemplate) {\n @for (item of items; track item) {\n @if (optionLabel && item[optionLabel]) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"item text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n class=\"item\"\n removable=\"true\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"item text-item\"\n clearable=\"true\"\n (clear)=\"removeSelectedItem($event, item)\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n {{ item[optionLabel] }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"item with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n }\n }\n @if (!optionLabel || !item[optionLabel]) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"item text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n class=\"item\"\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"item text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"item with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span class=\"text-item\">\n {{ item }}\n </span>\n </div>\n }\n }\n }\n }\n @if (customMultiLabelTemplate) {\n <ng-container *ngTemplateOutlet=\"customMultiLabelTemplate; context: { options: items }\" />\n }\n </div>\n @if (hiddenCountSignal() > 0) {\n <div class=\"remaining\">\n @if (displayTypeSignal() === 'text' || displayTypeSignal() === 'withAvatar' || !displayTypeSignal()) {\n <span class=\"text-item\">+{{ hiddenCountSignal() }}</span>\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n clearable=\"false\">\n +{{ hiddenCountSignal() }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"false\"\n [content]=\"'+' + hiddenCountSignal()\" />\n }\n </div>\n }\n </ng-container>\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading-state\">\n <ap-loader diameter=\"30\" />\n <span>\n {{ loadingText }}\n </span>\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp></ng-template>\n @if (create) {\n <ng-template ng-footer-tmp>\n <button\n class=\"create-new\"\n type=\"button\"\n (click)=\"onCreateNew()\">\n <ap-symbol\n symbolId=\"plus\"\n size=\"sm\" />\n <span>\n {{ createText }}\n </span>\n @if (searchTermSignal()) {\n \"{{ searchTermSignal() }}\"\n }\n </button>\n </ng-template>\n }\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n @if ((!optionLabel || !item[optionLabel]) && item && (!optionDivider || !item[optionDivider]) && !customOptionTemplate) {\n <div class=\"option\">\n <span\n class=\"option-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n @if (item$.selected && !multiple) {\n <ap-symbol\n symbolId=\"check\"\n color=\"electric-blue\"\n size=\"sm\" />\n }\n </div>\n }\n @if ((optionLabel && item[optionLabel]) || customOptionTemplate) {\n <div\n class=\"option\"\n [class.with-caption]=\"optionCaption && item[optionCaption]\"\n [class.multiple]=\"multiple\"\n (mouseenter)=\"onHoverItem(item$.htmlId)\"\n (mouseleave)=\"onLeaveItem()\">\n <ng-container *ngTemplateOutlet=\"contentItem; context: { item: item, item$: item$ }\" />\n </div>\n }\n @if (optionDivider && item[optionDivider]) {\n <div class=\"divider\"></div>\n }\n </ng-template>\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n @if (customLabelTemplate) {\n <ng-container *ngTemplateOutlet=\"customLabelTemplate; context: { option: item }\" />\n }\n @if (!optionLabel && !customLabelTemplate) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span\n class=\"text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <span class=\"text-item\">\n {{ item }}\n </span>\n }\n }\n @if (optionLabel && !customLabelTemplate) {\n @if (displayTypeSignal() === 'text' || !displayTypeSignal()) {\n <span class=\"text-item\">\n {{ item[optionLabel] }}\n </span>\n }\n @if (displayTypeSignal() === 'label') {\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n }\n @if (displayTypeSignal() === 'tag') {\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n [title]=\"item[optionLabel]\"\n (clear)=\"removeSelectedItem($event, item)\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n {{ item[optionLabel] }}\n </ap-tag>\n }\n @if (displayTypeSignal() === 'withAvatar') {\n <div class=\"with-avatar\">\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n }\n }\n </ng-template>\n <ng-template ng-notfound-tmp>\n <div class=\"option not-found\">\n {{ notFoundText }}\n </div>\n </ng-template>\n</ng-select>\n\n<ng-template\n #contentItem\n let-item=\"item\"\n let-item$=\"item$\">\n @if (multiple) {\n <div class=\"disabled-opaque\"></div>\n @if (multiple) {\n <ap-checkbox\n [checked]=\"item$.selected\"\n [disabled]=\"item$.disabled\"\n [name]=\"'option-selection-' + item$.htmlId\">\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ap-checkbox>\n }\n }\n @if (!multiple) {\n <div class=\"disabled-opaque\"></div>\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n }\n</ng-template>\n\n<ng-template\n #textItem\n let-item=\"item\"\n let-item$=\"item$\">\n <div class=\"content\">\n @if (!customOptionTemplate) {\n @if (!optionLabel) {\n <span class=\"item\">\n {{ item }}\n </span>\n }\n @if (optionProfileImageUrl) {\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n }\n @if (optionLabel && item[optionLabel]) {\n <div class=\"texts\">\n <div class=\"first-line\">\n <span\n class=\"label\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n @if (optionBadgeLabel && item[optionBadgeLabel]) {\n <ap-badge color=\"blue\">{{ item[optionBadgeLabel] }}</ap-badge>\n }\n </div>\n @if (optionCaption && item[optionCaption]) {\n <span\n class=\"caption\"\n [title]=\"item[optionCaption]\">\n {{ item[optionCaption] }}\n </span>\n }\n </div>\n }\n }\n @if (customOptionTemplate) {\n <ng-container *ngTemplateOutlet=\"customOptionTemplate; context: { option: item }\" />\n }\n @if (only && !item$.disabled && itemHoveredSignal() === item$.htmlId && multiple) {\n <button\n class=\"standalone-link\"\n type=\"button\"\n (click)=\"onSelectOnly(item)\">\n {{ onlyText }}\n </button>\n }\n @if (item$.selected && !multiple) {\n <ap-symbol\n symbolId=\"check\"\n color=\"electric-blue\"\n size=\"sm\" />\n }\n </div>\n</ng-template>\n\n@if (errorMessage) {\n <div class=\"form-message error\">\n <ap-symbol\n symbolId=\"error_fill\"\n size=\"sm\" />\n <span>\n {{ errorMessage }}\n </span>\n </div>\n}\n\n@if (successMessage) {\n <div class=\"form-message success\">\n <ap-symbol\n symbolId=\"rounded-check_fill\"\n size=\"sm\" />\n <span>\n {{ successMessage }}\n </span>\n </div>\n}\n", styles: ["ap-select{--placeholder-padding-left: 0px;display:flex;flex-direction:column;position:relative;gap:var(--ref-spacing-xxs);font-family:var(--ref-font-family);font-size:var(--ref-font-size-sm)}ap-select.inline .inline-label{display:flex;align-items:center;position:absolute;z-index:10000;top:0;left:0;height:100%;padding-left:var(--ref-spacing-xs);box-sizing:border-box;color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label:hover{cursor:pointer}ap-select.inline .inline-label .label{display:flex;z-index:10;font-size:var(--comp-select-inline-label-text-size);line-height:var(--comp-select-inline-label-text-line-height);font-family:var(--comp-select-inline-label-text-font-family);font-weight:var(--comp-select-inline-label-text-font-weight);color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label .label:hover{cursor:pointer}ap-select.inline .inline-label .label span{width:fit-content}ap-select.inline .inline-label .divider{height:18px;max-height:18px;width:1px;margin:0 8px;background-color:var(--comp-select-separator-color);border-radius:1px}ap-select.inline .ng-select .ng-value-container{padding-left:calc(var(--placeholder-padding-left))!important}ap-select.hovered .ng-select-container{border-color:var(--ref-color-grey-40)!important}ap-select label{display:flex;flex-direction:column;gap:var(--comp-forms-label-spacing-vertical);font-size:var(--comp-forms-label-size);font-weight:var(--comp-forms-label-font-weight);line-height:var(--comp-forms-label-line-height);font-family:var(--comp-forms-label-font-family);color:var(--comp-forms-label-text-color)}ap-select label .description{font-size:var(--comp-forms-label-description-text-size);font-weight:var(--comp-forms-label-description-text-font-weight);line-height:var(--comp-forms-label-description-text-line-height);font-family:var(--comp-forms-label-description-text-font-family);color:var(--comp-forms-label-description-text-color)}ap-select.invalid:not([disabled]):not(.transparent) .ng-select-container,ap-select.ng-invalid.ng-dirty.ng-touched:not([disabled]):not(.transparent) .ng-select-container{border-color:var(--comp-input-border-error-color)}ap-select.valid:not([disabled]):not(.transparent) .ng-select-container{border:1px solid var(--comp-input-border-success-color)}.ng-select.ap-select-legacy .ng-select-container{border-color:var(--ref-color-grey-20)}.ng-select.ap-select-legacy .ng-select-container:hover{box-shadow:none;cursor:pointer;border-color:var(--ref-color-grey-40)!important}.ng-select.ap-select-legacy .ng-select-container .ng-value-container{overflow-x:auto;overflow-y:hidden}.ng-select.ap-select-legacy .ng-select-container .ng-value-container:hover,.ng-select.ap-select-legacy .ng-select-container .ng-value-container input:hover{cursor:pointer}.ng-select.ap-select-legacy.ng-select-opened.ng-select-bottom .ng-select-container,.ng-select.ap-select-legacy.ng-select-opened.ng-select-top .ng-select-container{border-radius:var(--ref-border-radius-sm);border-color:var(--ref-color-grey-20)}.ng-select.ap-select-legacy.ng-select-opened .ng-arrow{border-color:transparent transparent var(--ref-color-electric-blue-100)}.ng-select.ap-select-legacy.ng-select-opened .ng-select-container:hover{border-color:var(--ref-color-electric-blue-100)!important}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value{overflow:visible!important;width:100%;display:flex}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value span.text-item{display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value span{display:inline-block}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-tag{width:100%;margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-tag div{overflow:auto}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-label{margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select-legacy.ng-select-single .ng-value-container .ng-value ap-label .label{overflow:auto}.ng-select.ap-select-legacy.ng-select-multiple .ng-select-container .ng-value-container{padding-left:12px;flex-wrap:nowrap;overflow:hidden}.ng-select.ap-select-legacy.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:0!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container{background-color:var(--ref-color-grey-20);border-color:var(--ref-color-grey-20);color:var(--ref-color-grey-100)}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container:hover{cursor:default!important;background-color:var(--ref-color-grey-20)!important;border-color:var(--ref-color-grey-20)!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container .ng-placeholder{color:var(--ref-color-grey-60)!important}.ng-select.ap-select-legacy.ng-select-disabled .ng-select-container .ng-value-container:hover{cursor:default!important}.ng-select.ap-select-legacy .ng-value-container{padding-left:12px;height:100%;position:relative;padding-top:0!important}.ng-select.ap-select-legacy .ng-value-container .ng-placeholder{position:absolute;padding-left:0!important;color:var(--ref-color-grey-60);font-weight:var(--ref-font-weight-regular);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select-legacy .ng-value-container .multiple-item{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select-legacy .ng-value-container .multiple-item .item{visibility:hidden}.ng-select.ap-select-legacy .ng-value-container .multiple-item .text-item{color:var(--ref-color-grey-100);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select-legacy .ng-value-container .with-avatar{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select-legacy .ng-value-container .ng-value{margin:0!important}.ng-select.ap-select-legacy .ng-value-container .ng-input{position:unset!important;padding:0!important;height:100%!important}.ng-select.ap-select-legacy .ng-value-container .ng-input input{height:100%;color:var(--ref-color-grey-100)!important;caret-color:var(--ref-color-grey-100)!important;border-radius:unset}.ng-select.ap-select-legacy.with-error .ng-select-container{border-color:var(--comp-input-border-error-color)}.ng-select.ap-select-legacy.with-success .ng-select-container{border-color:var(--comp-input-border-success-color)}.ng-dropdown-panel.ap-select-legacy,.ap-select-legacy .ng-select-container+.ng-dropdown-panel{overflow:hidden;border:none;box-shadow:var(--comp-select-shadow);padding:var(--comp-select-padding-vertical) 0;background-color:var(--comp-select-background-color)}.ng-dropdown-panel.ap-select-legacy.ng-select-bottom,.ap-select-legacy .ng-select-container+.ng-dropdown-panel.ng-select-bottom{margin-top:var(--ref-spacing-xxxs);border-radius:var(--ref-border-radius-sm)}.ng-dropdown-panel.ap-select-legacy .ng-option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option{box-sizing:border-box;padding:0;position:relative}.ng-dropdown-panel.ap-select-legacy .ng-option .ng-option-label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option .ng-option-label{padding:0}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-child,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-child{padding-left:0}.ng-dropdown-panel.ap-select-legacy .ng-option:hover:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:hover:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select-legacy .ng-option:active:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:active:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select-legacy .ng-option:focus:not(.ng-option-disabled) .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option:focus:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple),.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple){background-color:var(--ref-color-electric-blue-10);color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple) .label,.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option:not(.multiple) .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .caption{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option .label{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight);color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-selected.ng-option-marked .option span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option span{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked:hover{background-color:transparent}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option span{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option.multiple .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-marked .option.multiple .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-disabled,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled{color:var(--ref-color-grey-40)}.ng-dropdown-panel.ap-select-legacy .ng-option.ng-option-disabled .disabled-opaque,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled .disabled-opaque{position:absolute;inset:0;opacity:.6;background-color:var(--ref-color-white);cursor:default;width:100%;height:100%;z-index:999}.ng-dropdown-panel.ap-select-legacy .loading-state,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .loading-state{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:var(--ref-spacing-xxs);min-height:90px;max-height:90px;padding:var(--ref-spacing-md) var(--ref-spacing-sm) var(--ref-spacing-sm);box-sizing:border-box}.ng-dropdown-panel.ap-select-legacy .loading-state span,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .loading-state span{font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm);font-style:italic;font-weight:var(--ref-font-weight-regular);color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select-legacy .group,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group{display:flex;align-items:center;width:100%;gap:var(--ref-spacing-xxs);padding:var(--comp-select-group-padding-horizontal) var(--comp-select-group-padding-vertical)}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox .checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .group ap-checkbox .checkbox label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox label{display:flex;gap:var(--ref-spacing-xxs);flex:1}.ng-dropdown-panel.ap-select-legacy .divider,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .divider{width:100%;height:1px;background-color:var(--comp-select-separator-color);margin:var(--ref-spacing-xxs) 0}.ng-dropdown-panel.ap-select-legacy .create-new,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new{display:flex;align-items:center;border:none;width:100%;background-color:transparent;gap:var(--ref-spacing-xxxs);color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);cursor:pointer;padding:var(--comp-select-search-bar-bottom-link-margin-top) var(--comp-select-search-bar-bottom-link-padding-horizontal) var(--comp-select-search-bar-bottom-link-padding-bottom) var(--comp-select-search-bar-bottom-link-padding-horizontal);line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm)}.ng-dropdown-panel.ap-select-legacy .create-new:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .create-new:active,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .create-new:active{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select-legacy .option,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option{display:flex;align-items:center;box-sizing:border-box;min-height:var(--comp-select-one-line-height);max-height:var(--comp-select-one-line-height);color:var(--comp-select-one-line-text-color);background-color:var(--comp-select-one-line-background-color);font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height);padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal)}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox .checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select-legacy .option ap-checkbox .checkbox label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox label{flex:1;overflow:auto}.ng-dropdown-panel.ap-select-legacy .option .option-item,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .option-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;flex:1}.ng-dropdown-panel.ap-select-legacy .option.not-found,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.not-found{padding:var(--ref-spacing-xs) var(--ref-spacing-sm) var(--ref-spacing-xxxs) var(--ref-spacing-sm)}.ng-dropdown-panel.ap-select-legacy .option .content,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content{display:flex;align-items:center;gap:var(--comp-select-one-line-spacing);flex:1;width:100%}.ng-dropdown-panel.ap-select-legacy .option .content .item,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .item{flex:1}.ng-dropdown-panel.ap-select-legacy .option .content .texts,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts{flex:1;overflow:auto;display:flex;flex-direction:column}.ng-dropdown-panel.ap-select-legacy .option .content .texts .first-line,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line{display:flex;align-items:center;gap:var(--ref-spacing-xxs)}.ng-dropdown-panel.ap-select-legacy .option .content .texts .first-line .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line .label{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select-legacy .option .content ap-symbol,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content ap-symbol{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .option .content ap-symbol div.svg,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .content ap-symbol div.svg{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .option .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option .label{font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height)}.ng-dropdown-panel.ap-select-legacy .option.with-caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption{padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal);min-height:var(--comp-select-two-line-height);max-height:var(--comp-select-two-line-height)}.ng-dropdown-panel.ap-select-legacy .option.with-caption .label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption .label{font-weight:var(--comp-select-two-line-title-text-font-weight);font-family:var(--comp-select-two-line-title-text-font-family);font-size:var(--comp-select-two-line-title-text-size);line-height:var(--comp-select-two-line-title-text-line-height);color:var(--comp-select-two-line-title-text-color)}.ng-dropdown-panel.ap-select-legacy .option.with-caption .caption,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .option.with-caption .caption{font-weight:var(--comp-select-two-line-caption-text-font-weight);font-family:var(--comp-select-two-line-caption-text-font-family);font-size:var(--comp-select-two-line-caption-text-size);line-height:var(--comp-select-two-line-caption-text-line-height);color:var(--comp-select-two-line-caption-text-color);display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-panel-items,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-panel-items{padding:0}.ng-dropdown-panel.ap-select-legacy .ng-optgroup,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup{display:flex;align-items:center;padding:0}.ng-dropdown-panel.ap-select-legacy .ng-optgroup:first-child .with-search,.ng-dropdown-panel.ap-select-legacy .ng-optgroup:first-child .with-select-all,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-search,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-select-all{border:none}.ng-dropdown-panel.ap-select-legacy .ng-optgroup .group,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup .group{display:flex;width:100%;height:100%;background-color:var(--comp-select-group-background-color);min-height:32px;box-sizing:border-box;max-height:50px;padding:var(--comp-select-group-padding-vertical) var(--comp-select-group-padding-horizontal);border-top:1px solid var(--comp-select-group-border-top-color)}.ng-dropdown-panel.ap-select-legacy .ng-optgroup .group .group-label,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-optgroup .group .group-label{font-weight:var(--comp-select-group-text-font-weight);font-size:var(--comp-select-group-text-size);line-height:var(--comp-select-group-text-line-height);font-family:var(--comp-select-group-text-font-family);color:var(--comp-select-group-text-color)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-header,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-header{padding:0 var(--comp-select-search-bar-padding-horizontal) var(--comp-select-search-bar-margin-bottom) var(--comp-select-search-bar-padding-horizontal);border-bottom:1px solid var(--comp-select-search-bar-border-bottom-color)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-header .select-all-checkbox,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-header .select-all-checkbox{padding-left:var(--ref-spacing-xxs);height:var(--comp-select-one-line-height)}.ng-dropdown-panel.ap-select-legacy .ng-dropdown-footer,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .ng-dropdown-footer{cursor:pointer;padding:0;border-top:1px solid var(--ref-color-grey-10)}.ng-dropdown-panel.ap-select-legacy .standalone-link,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link{color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);background-color:transparent;border:none;line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm);cursor:pointer}.ng-dropdown-panel.ap-select-legacy .standalone-link:hover,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select-legacy .standalone-link:active,.ap-select-legacy .ng-select-container+.ng-dropdown-panel .standalone-link:active{color:var(--ref-color-electric-blue-150)}.form-message{font-size:var(--comp-forms-status-text-size);font-weight:var(--comp-forms-status-text-font-weight);line-height:var(--comp-forms-status-text-line-height);font-family:var(--comp-forms-status-text-font-family);margin:0;display:flex;gap:var(--ref-spacing-xxxs)}.form-message.error{color:var(--comp-forms-status-text-error-color)}.form-message.error ap-symbol{color:var(--comp-forms-status-icon-error-color)}.form-message.success{color:var(--comp-forms-status-text-success-color)}.form-message.success ap-symbol{color:var(--comp-forms-status-icon-success-color)}form.ng-submitted ap-select.ng-valid .ng-select-container{border-color:var(--comp-input-border-success-color)}form.ng-submitted ap-select.ng-invalid .ng-select-container{border-color:var(--comp-input-border-error-color)}\n"] }]
342
- }], ctorParameters: () => [], propDecorators: { searchInput: [{
343
- type: ViewChild,
344
- args: ['searchInput']
345
- }], inlineLabelElement: [{
346
- type: ViewChild,
347
- args: ['inlineLabel']
348
- }], select: [{
349
- type: ViewChild,
350
- args: ['select']
351
- }], hovered: [{
352
- type: HostBinding,
353
- args: ['class.hovered']
354
- }], options: [{
355
- type: Input,
356
- args: [{ required: true }]
357
- }], ariaLabel: [{
358
- type: Input
359
- }], ariaLabelledBy: [{
360
- type: Input
361
- }], ariaDescribedBy: [{
362
- type: Input
363
- }], appendTo: [{
364
- type: Input
365
- }], clearable: [{
366
- type: Input
367
- }], description: [{
368
- type: Input
369
- }], disabled: [{
370
- type: Input
371
- }], selectId: [{
372
- type: Input
373
- }], inlineLabel: [{
374
- type: HostBinding,
375
- args: ['class.inline']
376
- }, {
377
- type: Input
378
- }], create: [{
379
- type: Input
380
- }], createText: [{
381
- type: Input
382
- }], group: [{
383
- type: Input
384
- }], selectableGroup: [{
385
- type: Input
386
- }], label: [{
387
- type: Input
388
- }], multiple: [{
389
- type: Input
390
- }], only: [{
391
- type: Input
392
- }], onlyText: [{
393
- type: Input
394
- }], placeholder: [{
395
- type: Input
396
- }], selectAll: [{
397
- type: Input
398
- }], selectAllText: [{
399
- type: Input
400
- }], unselectAllText: [{
401
- type: Input
402
- }], searchable: [{
403
- type: Input
404
- }], searchPlaceholder: [{
405
- type: Input
406
- }], searchFn: [{
407
- type: Input
408
- }], notFoundText: [{
409
- type: Input
410
- }], loadingText: [{
411
- type: Input
412
- }], displayType: [{
413
- type: Input
414
- }], optionLabel: [{
415
- type: Input
416
- }], optionCaption: [{
417
- type: Input
418
- }], optionDivider: [{
419
- type: Input
420
- }], optionProfileImageUrl: [{
421
- type: Input
422
- }], optionBadgeLabel: [{
423
- type: Input
424
- }], optionValue: [{
425
- type: Input
426
- }], optionDisabled: [{
427
- type: Input
428
- }], optionGroupLabel: [{
429
- type: Input
430
- }], optionGroupTag: [{
431
- type: Input
432
- }], maximumDisplayOptions: [{
433
- type: Input
434
- }], customOptionTemplate: [{
435
- type: Input
436
- }], customLabelTemplate: [{
437
- type: Input
438
- }], customMultiLabelTemplate: [{
439
- type: Input
440
- }], errorMessage: [{
441
- type: Input
442
- }], successMessage: [{
443
- type: Input
444
- }], compareWith: [{
445
- type: Input
446
- }], createNew: [{
447
- type: Output
448
- }], valueChanges: [{
449
- type: Output
450
- }] } });
451
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9sZWdhY3kvc2VsZWN0L3NyYy9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL2xlZ2FjeS9zZWxlY3Qvc3JjL3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0gsZUFBZSxFQUNmLGNBQWMsRUFDZCxNQUFNLEVBQ04sV0FBVyxFQUNYLE9BQU8sRUFDUCxrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLFFBQVEsR0FDWCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsUUFBUSxFQUNSLE1BQU0sRUFDTixVQUFVLEVBQ1YsTUFBTSxF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QkFBckIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNPLFdBQVc7c0JBQXZCLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ08scUJBQXFCO3NCQUFqQyxLQUFLO2dCQUdHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9jaGVja2JveCc7XG5pbXBvcnQgeyBMYWJlbENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvbGFiZWxzJztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9sZWdhY3kvaW5wdXQnO1xuaW1wb3J0IHsgVGFnQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy90YWcnO1xuaW1wb3J0IHtcbiAgICBTeW1ib2xDb21wb25lbnQsXG4gICAgU3ltYm9sUmVnaXN0cnksXG4gICAgYXBQbHVzLFxuICAgIGFwRXJyb3JGaWxsLFxuICAgIGFwQ2hlY2ssXG4gICAgYXBSb3VuZGVkQ2hlY2tGaWxsLFxuICAgIGFwRGVsZXRlTm9DaXJjbGUsXG4gICAgYXBTZWFyY2gsXG59IGZyb20gJ0BhZ29yYXB1bHNlL3VpLXN5bWJvbCc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQsIFNsaWNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFByb3ZpZGVyLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBjb21wdXRlZCxcbiAgICBlZmZlY3QsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgcnVuSW5JbmplY3Rpb25Db250ZXh0LFxuICAgIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ09wdGlvbiwgTmdTZWxlY3RDb21wb25lbnQsIE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGVib3VuY2VUaW1lLCBmcm9tRXZlbnQsIG9mLCBza2lwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBEaXNwbGF5VHlwZSA9ICd0ZXh0JyB8ICdsYWJlbCcgfCAndGFnJyB8ICd3aXRoQXZhdGFyJztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVF9WQUxVRV9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0Q29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZSxcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIE5nU2VsZWN0Q29tcG9uZW50IHdpdGggZGlyZWN0aXZlIGFwU2VsZWN0U2luZ2xlIG9yIGFwU2VsZWN0TXVsdGlwbGVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdhcC1zZWxlY3QnLFxuICAgIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdTZWxlY3RNb2R1bGUsXG4gICAgICAgIElucHV0Q29tcG9uZW50LFxuICAgICAgICBTeW1ib2xDb21wb25lbnQsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgU2xpY2VQaXBlLFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgQXZhdGFyQ29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBMYWJlbENvbXBvbmVudCxcbiAgICAgICAgVGFnQ29tcG9uZW50LFxuICAgICAgICBCYWRnZUNvbXBvbmVudCxcbiAgICAgICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbU0VMRUNUX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgc3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHByaXZhdGUgc3ltYm9sUmVnaXN0cnk6IFN5bWJvbFJlZ2lzdHJ5ID0gaW5qZWN0KFN5bWJvbFJlZ2lzdHJ5KTtcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dCE6IElucHV0Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ2lubGluZUxhYmVsJykgaW5saW5lTGFiZWxFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnc2VsZWN0Jykgc2VsZWN0ITogTmdTZWxlY3RDb21wb25lbnQ7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhvdmVyZWQnKSBob3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBvcHRpb25zU2lnbmFsID0gc2lnbmFsPFRbXT4oW10pO1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNldCBvcHRpb25zKG9wdGlvbnM6IFRbXSkge1xuICAgICAgICB0aGlzLm9wdGlvbnNTaWduYWwuc2V0KG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1NpZ25hbC5zZXQob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5ITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGFyaWFEZXNjcmliZWRCeSE6IHN0cmluZztcbiAgICBASW5wdXQoKSBhcHBlbmRUbzogc3RyaW5nID0gJ2JvZHknO1xuICAgIEBJbnB1dCgpIGNsZWFyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2VsZWN0SWQ/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF9pbmxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlubGluZScpXG4gICAgQElucHV0KClcbiAgICBzZXQgaW5saW5lTGFiZWwoaW5saW5lTGFiZWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faW5saW5lID0gaW5saW5lTGFiZWw7XG4gICAgICAgIGlmICghdGhpcy5pbmxpbmVMYWJlbEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICctLXBsYWNlaG9sZGVyLXBhZGRpbmctbGVmdCcsXG4gICAgICAgICAgICBgJHt0aGlzLmlubGluZUxhYmVsRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRofXB4YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBpbmxpbmVMYWJlbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBjcmVhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjcmVhdGVUZXh0OiBzdHJpbmcgPSAnQ3JlYXRlJztcbiAgICBASW5wdXQoKSBncm91cDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNlbGVjdGFibGVHcm91cDogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgb25seTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIG9ubHlUZXh0OiBzdHJpbmcgPSAnT25seSc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QuLi4nO1xuICAgIEBJbnB1dCgpIHNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNlbGVjdEFsbFRleHQ6IHN0cmluZyA9ICdTZWxlY3QgYWxsJztcbiAgICBASW5wdXQoKSB1bnNlbGVjdEFsbFRleHQ6IHN0cmluZyA9ICdVbnNlbGVjdCBhbGwnO1xuICAgIEBJbnB1dCgpIHNlYXJjaGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlYXJjaC4uLic7XG4gICAgQElucHV0KCkgc2VhcmNoRm46ICh0ZXJtOiBzdHJpbmcpID0+IE9ic2VydmFibGU8VFtdPiA9IHRoaXMuZGVmYXVsdFNlYXJjaEZuO1xuICAgIEBJbnB1dCgpIG5vdEZvdW5kVGV4dDogc3RyaW5nID0gJ05vIHJlc3VsdHMgZm91bmQnO1xuICAgIEBJbnB1dCgpIGxvYWRpbmdUZXh0OiBzdHJpbmcgPSAnTG9hZGluZyBpdGVtcyc7XG4gICAgQElucHV0KCkgc2V0IGRpc3BsYXlUeXBlKGRpc3BsYXlUeXBlOiBEaXNwbGF5VHlwZSkge1xuICAgICAgICB0aGlzLmRpc3BsYXlUeXBlU2lnbmFsLnNldChkaXNwbGF5VHlwZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgb3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uQ2FwdGlvbj86IHN0cmluZztcbiAgICBASW5wdXQoKSBvcHRpb25EaXZpZGVyPzogc3RyaW5nID0gJ2RpdmlkZXInO1xuICAgIEBJbnB1dCgpIG9wdGlvblByb2ZpbGVJbWFnZVVybD86IHN0cmluZztcbiAgICBASW5wdXQoKSBvcHRpb25CYWRnZUxhYmVsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9wdGlvblZhbHVlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9wdGlvbkRpc2FibGVkOiBzdHJpbmcgPSAnZGlzYWJsZWQnO1xuICAgIEBJbnB1dCgpIG9wdGlvbkdyb3VwTGFiZWw6IHN0cmluZyA9ICdncm91cCc7XG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBUYWc/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIEBJbnB1dCgpIHNldCBtYXhpbXVtRGlzcGxheU9wdGlvbnMobWF4aW11bURpc3BsYXlPcHRpb25zOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5tYXhpbXVtRGlzcGxheVZhbHVlc1NpZ25hbC5zZXQobWF4aW11bURpc3BsYXlPcHRpb25zKTtcbiAgICB9XG4gICAgQElucHV0KCkgY3VzdG9tT3B0aW9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IG9wdGlvbjogVCB9PjtcbiAgICBASW5wdXQoKSBjdXN0b21MYWJlbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBvcHRpb246IFQgfT47XG4gICAgQElucHV0KCkgY3VzdG9tTXVsdGlMYWJlbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBvcHRpb25zOiBUW10gfT47XG4gICAgQElucHV0KCkgZXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHN1Y2Nlc3NNZXNzYWdlPzogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgY29tcGFyZVdpdGghOiAoYTogYW55LCBiOiBhbnkpID0+IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgY3JlYXRlTmV3OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duW10+KCk7XG5cbiAgICBwcml2YXRlIF9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuITogKHZhbHVlOiB1bmtub3duW10pID0+IHZvaWQ7XG4gICAgb25Ub3VjaGVkITogKCkgPT4gdm9pZDtcbiAgICBkaXNwbGF5VHlwZVNpZ25hbCA9IHNpZ25hbDxEaXNwbGF5VHlwZT4oJ3RleHQnKTtcblxuICAgIGVuYWJsZWRPcHRpb25zID0gY29tcHV0ZWQ8VFtdPigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNTaWduYWwoKS5maWx0ZXIoKHZhbHVlOiBUKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uRGlzYWJsZWQgJiYgIXZhbHVlW3RoaXMub3B0aW9uRGlzYWJsZWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0ZW1Ib3ZlcmVkU2lnbmFsID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAgIGZpbHRlcmVkT3B0aW9uc1NpZ25hbCA9IHNpZ25hbDxUW10+KFtdKTtcbiAgICBsb2FkaW5nU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgICBzZWxlY3RlZFZhbHVlc1NpZ25hbCA9IHNpZ25hbDx1bmtub3duW10+KFtdKTtcbiAgICBzZWFyY2hUZXJtU2lnbmFsID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICAgIHNlYXJjaFRlcm0kID0gdG9PYnNlcnZhYmxlKHRoaXMuc2VhcmNoVGVybVNpZ25hbCk7XG4gICAgbWF4aW11bURpc3BsYXlWYWx1ZXNTaWduYWwgPSBzaWduYWw8bnVtYmVyPigtMSk7XG4gICAgaGlkZGVuQ291bnRTaWduYWwgPSBzaWduYWw8bnVtYmVyPigwKTtcblxuICAgIGFsbFNlbGVjdGVkU2lnbmFsID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpLmxlbmd0aCA9PT0gdGhpcy5lbmFibGVkT3B0aW9ucygpLmxlbmd0aDtcbiAgICB9KTtcbiAgICBwYXJ0aWFseVNlbGVjdGVkU2lnbmFsID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpLmxlbmd0aCA8IHRoaXMuZW5hYmxlZE9wdGlvbnMoKS5sZW5ndGg7XG4gICAgfSk7XG5cbiAgICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICAgIHByaXZhdGUgc2VsZWN0VmFsdWVDb250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIHNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGhTaWduYWwgPSBzaWduYWwoMCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zeW1ib2xSZWdpc3RyeS5yZWdpc3RlclN5bWJvbHMoW2FwQ2hlY2ssIGFwRXJyb3JGaWxsLCBhcFJvdW5kZWRDaGVja0ZpbGwsIGFwU2VhcmNoLCBhcFBsdXMsIGFwRGVsZXRlTm9DaXJjbGVdKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHNlbGVjdGVkVmFsdWVzOiB1bmtub3duW10gPSBbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsLnNldChzZWxlY3RlZFZhbHVlcyk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiB1bmtub3duW10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiAoIXRoaXMuZGlzcGxheVR5cGVTaWduYWwoKSB8fCB0aGlzLmRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0ZXh0JykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRGlzcGxheSB0eXBlIFwidGV4dFwiIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG11bHRpcGxlIHNlbGVjdC4gU3dpdGNoaW5nIHRvIFwibGFiZWxcIi4nKTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVR5cGVTaWduYWwuc2V0KCdsYWJlbCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyNTApLFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2lnbmFsLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zU2lnbmFsLnNldChbXSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh0ZXJtOiBzdHJpbmcpID0+IHRoaXMuc2VhcmNoRm4odGVybSkpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1NpZ25hbC5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChvcHRpb25zOiBUW10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNTaWduYWwuc2V0KG9wdGlvbnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbmxpbmVMYWJlbEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICctLXBsYWNlaG9sZGVyLXBhZGRpbmctbGVmdCcsXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5pbmxpbmVMYWJlbEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aH1weGBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RWYWx1ZUNvbnRhaW5lciA9IHRoaXMuc2VsZWN0LmVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbmctdmFsdWUtY29udGFpbmVyJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCgpO1xuICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCA9IHRoaXMuc2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUmVzcG9uc2l2ZUxhYmVscyhzZWxlY3RWYWx1ZUNvbnRhaW5lcldpZHRoU2lnbmFsLCBzZWxlY3RlZFZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TZWFyY2hUZXJtQ2hhbmdlKHNlYXJjaFRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm1TaWduYWwuc2V0KHNlYXJjaFRlcm0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVmYXVsdFNlYXJjaEZuKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zU2lnbmFsKCkuZmlsdGVyKChvcHRpb246IFQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcob3B0aW9uW3RoaXMub3B0aW9uTGFiZWxdKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzR3JvdXBJbmRldGVybWluYXRlKGNoaWxkcmVuOiBOZ09wdGlvbltdKSB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbi5zb21lKChjaGlsZDogTmdPcHRpb24pID0+IGNoaWxkLnNlbGVjdGVkKSAmJiAhdGhpcy5pc0dyb3VwQ2hlY2tlZChjaGlsZHJlbik7XG4gICAgfVxuXG4gICAgaXNHcm91cERpc2FibGVkKGNoaWxkcmVuOiBOZ09wdGlvbltdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbi5ldmVyeSgoY2hpbGQ6IE5nT3B0aW9uKSA9PiBjaGlsZC5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgaXNHcm91cENoZWNrZWQoY2hpbGRyZW46IE5nT3B0aW9uW10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuLmV2ZXJ5KChjaGlsZDogTmdPcHRpb24pID0+IGNoaWxkLmRpc2FibGVkIHx8IGNoaWxkLnNlbGVjdGVkKSAmJiAhdGhpcy5pc0dyb3VwRGlzYWJsZWQoY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIG9uU2VsZWN0T25seShpdGVtOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwuc2V0KFtpdGVtXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvblZhbHVlID8gdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC5zZXQoW2l0ZW1bdGhpcy5vcHRpb25WYWx1ZV1dKSA6IHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwuc2V0KFtpdGVtXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYWxsQ29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbigpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0T3BlbmVkKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hhYmxlICYmICEhdGhpcy5zZWFyY2hGbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZm9jdXNJbnB1dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkhvdmVySXRlbShodG1saWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgfHwgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXRlbUhvdmVyZWRTaWduYWwuc2V0KGh0bWxpZCk7XG4gICAgfVxuXG4gICAgb25MZWF2ZUl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pdGVtSG92ZXJlZFNpZ25hbC5zZXQobnVsbCk7XG4gICAgfVxuXG4gICAgb25Ub2dnbGVBbGwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBhcnRpYWx5U2VsZWN0ZWRTaWduYWwoKSB8fCB0aGlzLmFsbFNlbGVjdGVkU2lnbmFsKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwuc2V0KFtdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwuc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlZE9wdGlvbnMoKS5tYXAoKHZhbHVlOiBUKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uVmFsdWUgPyB2YWx1ZVt0aGlzLm9wdGlvblZhbHVlXSA6IHZhbHVlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FsbENvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4oKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdGVkVmFsdWVzQ2hhbmdlKHNlbGVjdGVkVmFsdWVzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC5zZXQoc2VsZWN0ZWRWYWx1ZXMpO1xuICAgICAgICB0aGlzLmNhbGxDb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKCk7XG4gICAgfVxuXG4gICAgb25PcGVuU2VsZWN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdC5vcGVuKCk7XG4gICAgfVxuXG4gICAgb25JbmxpbmVJbnB1dEVudGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdmVyZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uSW5saW5lSW5wdXRMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3ZlcmVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25DcmVhdGVOZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3JlYXRlTmV3LmVtaXQodGhpcy5zZWFyY2hUZXJtU2lnbmFsKCkpO1xuICAgICAgICB0aGlzLnNlbGVjdC5jbG9zZSgpO1xuICAgIH1cblxuICAgIHJlbW92ZVNlbGVjdGVkSXRlbSh7ICRldmVudCB9OiB7ICRldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCB9LCBpdGVtOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1JZCA9IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IGl0ZW0gOiB0aGlzLm9wdGlvblZhbHVlID8gaXRlbVt0aGlzLm9wdGlvblZhbHVlXSA6IGl0ZW07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwudXBkYXRlKChzZWxlY3RlZFZhbHVlczogdW5rbm93bltdKSA9PlxuICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMuZmlsdGVyKChzZWxlY3RlZFZhbHVlOiB1bmtub3duKSA9PiBzZWxlY3RlZFZhbHVlICE9PSBzZWxlY3RlZEl0ZW1JZClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jYWxsQ29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsbENvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4oKSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpKTtcbiAgICAgICAgaWYgKHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4pIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0VmFsdWVDb250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1BsYWNlSG9sZGVyV2lkdGggPSAxMDA7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RWYWx1ZUNvbnRhaW5lcldpZHRoID0gdGhpcy5zZWxlY3RWYWx1ZUNvbnRhaW5lci5jbGllbnRXaWR0aCAtIHJlbWFpbmluZ1BsYWNlSG9sZGVyV2lkdGg7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGhTaWduYWwuc2V0KHNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVSZXNwb25zaXZlTGFiZWxzKGNvbnRhaW5lcldpZHRoOiBudW1iZXIsIHNlbGVjdGVkVmFsdWVzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZFZhbHVlcyB8fCBzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZGVuQ291bnRTaWduYWwuc2V0KDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGl0ZW1zQ29udGFpbmVyID0gdGhpcy5zZWxlY3RWYWx1ZUNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtdWx0aXBsZS1pdGVtJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5zZWxlY3RWYWx1ZUNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpdGVtJyk7XG4gICAgICAgIGxldCB0b3RhbFdpZHRoID0gMDtcbiAgICAgICAgbGV0IGhpZGRlbkNvdW50ID0gMDtcbiAgICAgICAgY29uc3QgaXRlbUdhcCA9IDQ7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpdGVtcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpbmRleF07XG4gICAgICAgICAgICBjb25zdCBpdGVtV2lkdGggPSBpdGVtLmNsaWVudFdpZHRoICsgaXRlbUdhcDtcbiAgICAgICAgICAgIGlmICh0b3RhbFdpZHRoICsgaXRlbVdpZHRoIDwgY29udGFpbmVyV2lkdGggJiYgIWhpZGRlbkNvdW50KSB7XG4gICAgICAgICAgICAgICAgdG90YWxXaWR0aCArPSBpdGVtV2lkdGg7XG4gICAgICAgICAgICAgICAgKGl0ZW0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIChpdGVtIGFzIEhUTUxFbGVtZW50KS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICAgICAgaGlkZGVuQ291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpdGVtc0NvbnRhaW5lci5zdHlsZS5tYXhXaWR0aCA9IGAke3RvdGFsV2lkdGh9cHhgO1xuICAgICAgICB0aGlzLmhpZGRlbkNvdW50U2lnbmFsLnNldChoaWRkZW5Db3VudCk7XG4gICAgfVxufVxuIiwiQGlmIChsYWJlbCAmJiAhaW5saW5lTGFiZWwpIHtcbiAgICA8bGFiZWwgW2Zvcl09XCJzZWxlY3RJZFwiPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgQGlmIChkZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cbiAgICA8L2xhYmVsPlxufVxuXG5AaWYgKGlubGluZUxhYmVsKSB7XG4gICAgPGRpdlxuICAgICAgICAjaW5saW5lTGFiZWxcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgY2xhc3M9XCJpbmxpbmUtbGFiZWxcIlxuICAgICAgICAoY2xpY2spPVwib25PcGVuU2VsZWN0KClcIlxuICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbk9wZW5TZWxlY3QoKVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIm9uSW5saW5lSW5wdXRFbnRlcigpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwib25JbmxpbmVJbnB1dExlYXZlKClcIj5cbiAgICAgICAgQGlmIChsYWJlbCAmJiBpbmxpbmVMYWJlbCkge1xuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgW2Zvcl09XCJzZWxlY3RJZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbn1cblxuPG5nLXNlbGVjdFxuICAgICNzZWxlY3RcbiAgICBjbGFzcz1cImFwLXNlbGVjdC1sZWdhY3lcIlxuICAgIFt0YWJJbmRleF09XCIwXCJcbiAgICBbY2xlYXJhYmxlXT1cImNsZWFyYWJsZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbbGFiZWxGb3JJZF09XCJzZWxlY3RJZFwiXG4gICAgW3NlYXJjaGFibGVdPVwiZmFsc2VcIlxuICAgIFtjbG9zZU9uU2VsZWN0XT1cIiFtdWx0aXBsZVwiXG4gICAgW2JpbmRWYWx1ZV09XCJvcHRpb25WYWx1ZSA/IG9wdGlvblZhbHVlIDogJydcIlxuICAgIFtncm91cEJ5XT1cImdyb3VwID8gb3B0aW9uR3JvdXBMYWJlbCA6ICcnXCJcbiAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW21hcmtGaXJzdF09XCJmYWxzZVwiXG4gICAgW3NlbGVjdGFibGVHcm91cF09XCJzZWxlY3RhYmxlR3JvdXBcIlxuICAgIFtzZWxlY3RhYmxlR3JvdXBBc01vZGVsXT1cImZhbHNlXCJcbiAgICBbYXBwZW5kVG9dPVwiYXBwZW5kVG9cIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeSB8fCBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeSB8fCBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkPy50b1N0cmluZygpXCJcbiAgICBbaXRlbXNdPVwib3B0aW9uc1NpZ25hbCgpXCJcbiAgICBbY29tcGFyZVdpdGhdPVwiY29tcGFyZVdpdGhcIlxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdTaWduYWwoKVwiXG4gICAgW25nTW9kZWxdPVwic2VsZWN0ZWRWYWx1ZXNTaWduYWwoKVwiXG4gICAgW2NsYXNzLndpdGgtZXJyb3JdPVwiZXJyb3JNZXNzYWdlXCJcbiAgICBbY2xhc3Mud2l0aC1zdWNjZXNzXT1cInN1Y2Nlc3NNZXNzYWdlXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGVkVmFsdWVzQ2hhbmdlKCRldmVudClcIlxuICAgIChvcGVuKT1cIm9uU2VsZWN0T3BlbmVkKClcIj5cbiAgICBAaWYgKHNlYXJjaGFibGUgfHwgc2VsZWN0QWxsKSB7XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgbGV0LWl0ZW09XCJpdGVtXCJcbiAgICAgICAgICAgIG5nLWhlYWRlci10bXA+XG4gICAgICAgICAgICBAaWYgKHNlYXJjaGFibGUpIHtcbiAgICAgICAgICAgICAgICA8YXAtaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWFyY2gtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICBzeW1ib2xJZD1cInNlYXJjaFwiXG4gICAgICAgICAgICAgICAgICAgIHN5bWJvbFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2hUZXJtU2lnbmFsKClcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaFRlcm1DaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHNlbGVjdEFsbCkge1xuICAgICAgICAgICAgICAgIDxhcC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwib3B0aW9uLWdyb3VwLXNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJwYXJ0aWFseVNlbGVjdGVkU2lnbmFsKClcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxTZWxlY3RlZFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQWxsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBwYXJ0aWFseVNlbGVjdGVkU2lnbmFsKCkgfHwgYWxsU2VsZWN0ZWRTaWduYWwoKSA/IHVuc2VsZWN0QWxsVGV4dCA6IHNlbGVjdEFsbFRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYXAtY2hlY2tib3g+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBsZXQtaXRlbT1cIml0ZW1cIlxuICAgICAgICBsZXQtaXRlbSQ9XCJpdGVtJFwiXG4gICAgICAgIG5nLW9wdGdyb3VwLXRtcD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJncm91cFwiXG4gICAgICAgICAgICBbY2xhc3Mud2l0aC1zZWFyY2hdPVwic2VhcmNoYWJsZVwiXG4gICAgICAgICAgICBbY2xhc3Mud2l0aC1zZWxlY3QtYWxsXT1cInNlbGVjdEFsbFwiPlxuICAgICAgICAgICAgQGlmICghbXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdyb3VwLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uR3JvdXBMYWJlbF0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgQGlmIChvcHRpb25Hcm91cFRhZyAmJiBvcHRpb25Hcm91cFRhZ1tpdGVtW29wdGlvbkdyb3VwTGFiZWxdXSkge1xuICAgICAgICAgICAgICAgICAgICA8YXAtYmFkZ2UgY29sb3I9XCJibHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb25Hcm91cFRhZ1tpdGVtW29wdGlvbkdyb3VwTGFiZWxdXSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2FwLWJhZGdlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICBAaWYgKHNlbGVjdGFibGVHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICA8YXAtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidvcHRpb24tZ3JvdXAtc2VsZWN0aW9uLScgKyBpdGVtWydncm91cCddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzR3JvdXBJbmRldGVybWluYXRlKGl0ZW0kLmNoaWxkcmVuKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc0dyb3VwQ2hlY2tlZChpdGVtJC5jaGlsZHJlbilcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkdyb3VwTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG9wdGlvbkdyb3VwVGFnICYmIG9wdGlvbkdyb3VwVGFnW2l0ZW1bb3B0aW9uR3JvdXBMYWJlbF1dKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLWJhZGdlIGNvbG9yPVwiYmx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb25Hcm91cFRhZ1tpdGVtW29wdGlvbkdyb3VwTGFiZWxdXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXAtYmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDwvYXAtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoIXNlbGVjdGFibGVHcm91cCkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdyb3VwLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkdyb3VwTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGxldC1pdGVtcz1cIml0ZW1zXCJcbiAgICAgICAgbGV0LWl0ZW0kPVwiaXRlbSRcIlxuICAgICAgICBuZy1tdWx0aS1sYWJlbC10bXA+XG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlwbGUtaXRlbVwiPlxuICAgICAgICAgICAgICAgIEBpZiAoIWN1c3RvbU11bHRpTGFiZWxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGl0ZW1zOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcgfHwgIWRpc3BsYXlUeXBlU2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbSB0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bb3B0aW9uTGFiZWxdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ2xhYmVsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJpdGVtW29wdGlvbkxhYmVsXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGFnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0gdGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyYWJsZT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG9wdGlvblByb2ZpbGVJbWFnZVVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2ZpbGVQaWN0dXJlXT1cIml0ZW1bb3B0aW9uUHJvZmlsZUltYWdlVXJsXSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VybmFtZV09XCJvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXSA/IGl0ZW1bb3B0aW9uTGFiZWxdIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25MYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcC10YWc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3dpdGhBdmF0YXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtIHdpdGgtYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG9wdGlvblByb2ZpbGVJbWFnZVVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2ZpbGVQaWN0dXJlXT1cIml0ZW1bb3B0aW9uUHJvZmlsZUltYWdlVXJsXSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VybmFtZV09XCJvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXSA/IGl0ZW1bb3B0aW9uTGFiZWxdIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bb3B0aW9uTGFiZWxdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25MYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghb3B0aW9uTGFiZWwgfHwgIWl0ZW1bb3B0aW9uTGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcgfHwgIWRpc3BsYXlUeXBlU2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbSB0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICdsYWJlbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJibHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGFnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0gdGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXAtdGFnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd3aXRoQXZhdGFyJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSB3aXRoLWF2YXRhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb25Qcm9maWxlSW1hZ2VVcmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlcm5hbWVdPVwib3B0aW9uTGFiZWwgJiYgaXRlbVtvcHRpb25MYWJlbF0gPyBpdGVtW29wdGlvbkxhYmVsXSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dJbml0aWFsc109XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmIChjdXN0b21NdWx0aUxhYmVsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbU11bHRpTGFiZWxUZW1wbGF0ZTsgY29udGV4dDogeyBvcHRpb25zOiBpdGVtcyB9XCIgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIEBpZiAoaGlkZGVuQ291bnRTaWduYWwoKSA+IDApIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtYWluaW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3RleHQnIHx8IGRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd3aXRoQXZhdGFyJyB8fCAhZGlzcGxheVR5cGVTaWduYWwoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWl0ZW1cIj4re3sgaGlkZGVuQ291bnRTaWduYWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0YWcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXAtdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgK3t7IGhpZGRlbkNvdW50U2lnbmFsKCkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXAtdGFnPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ2xhYmVsJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJibHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCInKycgKyBoaWRkZW5Db3VudFNpZ25hbCgpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBuZy1sb2FkaW5ndGV4dC10bXA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkaW5nLXN0YXRlXCI+XG4gICAgICAgICAgICA8YXAtbG9hZGVyIGRpYW1ldGVyPVwiMzBcIiAvPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAge3sgbG9hZGluZ1RleHQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbmctbG9hZGluZ3NwaW5uZXItdG1wPjwvbmctdGVtcGxhdGU+XG4gICAgQGlmIChjcmVhdGUpIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWZvb3Rlci10bXA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcmVhdGUtbmV3XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DcmVhdGVOZXcoKVwiPlxuICAgICAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICAgICAgc3ltYm9sSWQ9XCJwbHVzXCJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCIgLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3sgY3JlYXRlVGV4dCB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICBAaWYgKHNlYXJjaFRlcm1TaWduYWwoKSkge1xuICAgICAgICAgICAgICAgICAgICBcInt7IHNlYXJjaFRlcm1TaWduYWwoKSB9fVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgfVxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBsZXQtaXRlbT1cIml0ZW1cIlxuICAgICAgICBsZXQtaXRlbSQ9XCJpdGVtJFwiXG4gICAgICAgIG5nLW9wdGlvbi10bXA+XG4gICAgICAgIEBpZiAoKCFvcHRpb25MYWJlbCB8fCAhaXRlbVtvcHRpb25MYWJlbF0pICYmIGl0ZW0gJiYgKCFvcHRpb25EaXZpZGVyIHx8ICFpdGVtW29wdGlvbkRpdmlkZXJdKSAmJiAhY3VzdG9tT3B0aW9uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0kLnNlbGVjdGVkICYmICFtdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xJZD1cImNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiZWxlY3RyaWMtYmx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIiAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoKG9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdKSB8fCBjdXN0b21PcHRpb25UZW1wbGF0ZSkge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICBbY2xhc3Mud2l0aC1jYXB0aW9uXT1cIm9wdGlvbkNhcHRpb24gJiYgaXRlbVtvcHRpb25DYXB0aW9uXVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLm11bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbkhvdmVySXRlbShpdGVtJC5odG1sSWQpXCJcbiAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJvbkxlYXZlSXRlbSgpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRJdGVtOyBjb250ZXh0OiB7IGl0ZW06IGl0ZW0sIGl0ZW0kOiBpdGVtJCB9XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAob3B0aW9uRGl2aWRlciAmJiBpdGVtW29wdGlvbkRpdmlkZXJdKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgbGV0LWl0ZW09XCJpdGVtXCJcbiAgICAgICAgbmctbGFiZWwtdG1wPlxuICAgICAgICBAaWYgKGN1c3RvbUxhYmVsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21MYWJlbFRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbjogaXRlbSB9XCIgLz5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKCFvcHRpb25MYWJlbCAmJiAhY3VzdG9tTGFiZWxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgQGlmIChkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcgfHwgIWRpc3BsYXlUeXBlU2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICdsYWJlbCcpIHtcbiAgICAgICAgICAgICAgICA8YXAtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJibHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3RhZycpIHtcbiAgICAgICAgICAgICAgICA8YXAtdGFnXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGVhcik9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgPC9hcC10YWc+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd3aXRoQXZhdGFyJykge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChvcHRpb25MYWJlbCAmJiAhY3VzdG9tTGFiZWxUZW1wbGF0ZSkge1xuICAgICAgICAgICAgQGlmIChkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcgfHwgIWRpc3BsYXlUeXBlU2lnbmFsKCkpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ2xhYmVsJykge1xuICAgICAgICAgICAgICAgIDxhcC1sYWJlbFxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiaXRlbVtvcHRpb25MYWJlbF1cIlxuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3RhZycpIHtcbiAgICAgICAgICAgICAgICA8YXAtdGFnXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW29wdGlvbkxhYmVsXVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGVhcik9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKG9wdGlvblByb2ZpbGVJbWFnZVVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2ZpbGVQaWN0dXJlXT1cIml0ZW1bb3B0aW9uUHJvZmlsZUltYWdlVXJsXSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJuYW1lXT1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdID8gaXRlbVtvcHRpb25MYWJlbF0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dJbml0aWFsc109XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgIDwvYXAtdGFnPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnd2l0aEF2YXRhcicpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2l0aC1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb25Qcm9maWxlSW1hZ2VVcmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VybmFtZV09XCJvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXSA/IGl0ZW1bb3B0aW9uTGFiZWxdIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SW5pdGlhbHNdPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW29wdGlvbkxhYmVsXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25MYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbmctbm90Zm91bmQtdG1wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uIG5vdC1mb3VuZFwiPlxuICAgICAgICAgICAge3sgbm90Rm91bmRUZXh0IH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXNlbGVjdD5cblxuPG5nLXRlbXBsYXRlXG4gICAgI2NvbnRlbnRJdGVtXG4gICAgbGV0LWl0ZW09XCJpdGVtXCJcbiAgICBsZXQtaXRlbSQ9XCJpdGVtJFwiPlxuICAgIEBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpc2FibGVkLW9wYXF1ZVwiPjwvZGl2PlxuICAgICAgICBAaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICA8YXAtY2hlY2tib3hcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtJC5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0kLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCInb3B0aW9uLXNlbGVjdGlvbi0nICsgaXRlbSQuaHRtbElkXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRleHRJdGVtOyBjb250ZXh0OiB7IGl0ZW06IGl0ZW0sIGl0ZW0kOiBpdGVtJCB9XCIgLz5cbiAgICAgICAgICAgIDwvYXAtY2hlY2tib3g+XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGlmICghbXVsdGlwbGUpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImRpc2FibGVkLW9wYXF1ZVwiPjwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGV4dEl0ZW07IGNvbnRleHQ6IHsgaXRlbTogaXRlbSwgaXRlbSQ6IGl0ZW0kIH1cIiAvPlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAgICN0ZXh0SXRlbVxuICAgIGxldC1pdGVtPVwiaXRlbVwiXG4gICAgbGV0LWl0ZW0kPVwiaXRlbSRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICBAaWYgKCFjdXN0b21PcHRpb25UZW1wbGF0ZSkge1xuICAgICAgICAgICAgQGlmICghb3B0aW9uTGFiZWwpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAob3B0aW9uUHJvZmlsZUltYWdlVXJsKSB7XG4gICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICBbcHJvZmlsZVBpY3R1cmVdPVwiaXRlbVtvcHRpb25Qcm9maWxlSW1hZ2VVcmxdID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgW3VzZXJuYW1lXT1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdID8gaXRlbVtvcHRpb25MYWJlbF0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93SW5pdGlhbHNdPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKG9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaXJzdC1saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW29wdGlvbkxhYmVsXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG9wdGlvbkJhZGdlTGFiZWwgJiYgaXRlbVtvcHRpb25CYWRnZUxhYmVsXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1iYWRnZSBjb2xvcj1cImJsdWVcIj57eyBpdGVtW29wdGlvbkJhZGdlTGFiZWxdIH19PC9hcC1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAob3B0aW9uQ2FwdGlvbiAmJiBpdGVtW29wdGlvbkNhcHRpb25dKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bb3B0aW9uQ2FwdGlvbl1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkNhcHRpb25dIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAaWYgKGN1c3RvbU9wdGlvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tT3B0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uOiBpdGVtIH1cIiAvPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAob25seSAmJiAhaXRlbSQuZGlzYWJsZWQgJiYgaXRlbUhvdmVyZWRTaWduYWwoKSA9PT0gaXRlbSQuaHRtbElkICYmIG11bHRpcGxlKSB7XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdGFuZGFsb25lLWxpbmtcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdE9ubHkoaXRlbSlcIj5cbiAgICAgICAgICAgICAgICB7eyBvbmx5VGV4dCB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChpdGVtJC5zZWxlY3RlZCAmJiAhbXVsdGlwbGUpIHtcbiAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICBzeW1ib2xJZD1cImNoZWNrXCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cImVsZWN0cmljLWJsdWVcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiIC8+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbkBpZiAoZXJyb3JNZXNzYWdlKSB7XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tbWVzc2FnZSBlcnJvclwiPlxuICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICBzeW1ib2xJZD1cImVycm9yX2ZpbGxcIlxuICAgICAgICAgICAgc2l6ZT1cInNtXCIgLz5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxufVxuXG5AaWYgKHN1Y2Nlc3NNZXNzYWdlKSB7XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tbWVzc2FnZSBzdWNjZXNzXCI+XG4gICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgIHN5bWJvbElkPVwicm91bmRlZC1jaGVja19maWxsXCJcbiAgICAgICAgICAgIHNpemU9XCJzbVwiIC8+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3sgc3VjY2Vzc01lc3NhZ2UgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxufVxuIl19