@agorapulse/ui-components 0.0.3 → 1.0.0-SNAPSHOT

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 (548) hide show
  1. package/add-comment/add-comment.component.d.ts +21 -0
  2. package/add-comment/index.d.ts +5 -0
  3. package/add-comment/public_api.d.ts +1 -0
  4. package/agorapulse-ui-components-1.0.0-SNAPSHOT.tgz +0 -0
  5. package/autocomplete/autocomplete.component.d.ts +40 -0
  6. package/autocomplete/index.d.ts +5 -0
  7. package/autocomplete/public_api.d.ts +1 -0
  8. package/avatar/avatar.component.d.ts +47 -0
  9. package/avatar/index.d.ts +5 -0
  10. package/avatar/public_api.d.ts +1 -0
  11. package/badge/badge.component.d.ts +7 -0
  12. package/badge/index.d.ts +5 -0
  13. package/badge/public_api.d.ts +1 -0
  14. package/button/button.component.d.ts +49 -0
  15. package/button/index.d.ts +5 -0
  16. package/button/public_api.d.ts +1 -0
  17. package/checkbox/checkbox.component.d.ts +51 -0
  18. package/checkbox/index.d.ts +5 -0
  19. package/checkbox/public_api.d.ts +1 -0
  20. package/confirm-modal/confirm-modal.component.d.ts +20 -0
  21. package/confirm-modal/index.d.ts +5 -0
  22. package/confirm-modal/public_api.d.ts +2 -0
  23. package/counter/counter.component.d.ts +17 -0
  24. package/counter/index.d.ts +5 -0
  25. package/counter/public_api.d.ts +1 -0
  26. package/datepicker/datepicker.component.d.ts +84 -0
  27. package/datepicker/index.d.ts +5 -0
  28. package/datepicker/public_api.d.ts +1 -0
  29. package/{src/lib/directives → directives}/autosize-textarea.directive.d.ts +3 -0
  30. package/directives/base-button.directive.d.ts +13 -0
  31. package/directives/default-image.directive.d.ts +8 -0
  32. package/{src/lib/directives → directives}/ellipsis.directive.d.ts +3 -1
  33. package/directives/equal-validator.directive.d.ts +13 -0
  34. package/{src/lib/directives → directives}/frozen-gif.directive.d.ts +6 -3
  35. package/directives/index.d.ts +5 -0
  36. package/directives/multi-style-text.directive.d.ts +16 -0
  37. package/directives/public_api.d.ts +8 -0
  38. package/directives/truncate-tooltip.directive.d.ts +16 -0
  39. package/dots-stepper/dots-stepper.component.d.ts +16 -0
  40. package/dots-stepper/index.d.ts +5 -0
  41. package/dots-stepper/public_api.d.ts +1 -0
  42. package/esm2022/add-comment/add-comment.component.mjs +71 -0
  43. package/esm2022/add-comment/agorapulse-ui-components-add-comment.mjs +5 -0
  44. package/esm2022/add-comment/public_api.mjs +2 -0
  45. package/esm2022/agorapulse-ui-components.mjs +5 -0
  46. package/esm2022/autocomplete/agorapulse-ui-components-autocomplete.mjs +5 -0
  47. package/esm2022/autocomplete/autocomplete.component.mjs +128 -0
  48. package/esm2022/autocomplete/public_api.mjs +2 -0
  49. package/esm2022/avatar/agorapulse-ui-components-avatar.mjs +5 -0
  50. package/esm2022/avatar/avatar.component.mjs +222 -0
  51. package/esm2022/avatar/public_api.mjs +2 -0
  52. package/esm2022/badge/agorapulse-ui-components-badge.mjs +5 -0
  53. package/esm2022/badge/badge.component.mjs +17 -0
  54. package/esm2022/badge/public_api.mjs +2 -0
  55. package/esm2022/button/agorapulse-ui-components-button.mjs +5 -0
  56. package/esm2022/button/button.component.mjs +112 -0
  57. package/esm2022/button/public_api.mjs +2 -0
  58. package/esm2022/checkbox/agorapulse-ui-components-checkbox.mjs +5 -0
  59. package/esm2022/checkbox/checkbox.component.mjs +178 -0
  60. package/esm2022/checkbox/public_api.mjs +2 -0
  61. package/esm2022/confirm-modal/agorapulse-ui-components-confirm-modal.mjs +5 -0
  62. package/esm2022/confirm-modal/confirm-modal-texts.model.mjs +2 -0
  63. package/esm2022/confirm-modal/confirm-modal.component.mjs +61 -0
  64. package/esm2022/confirm-modal/public_api.mjs +3 -0
  65. package/esm2022/counter/agorapulse-ui-components-counter.mjs +5 -0
  66. package/esm2022/counter/counter.component.mjs +59 -0
  67. package/esm2022/counter/public_api.mjs +2 -0
  68. package/esm2022/datepicker/agorapulse-ui-components-datepicker.mjs +5 -0
  69. package/esm2022/datepicker/datepicker.component.mjs +271 -0
  70. package/esm2022/datepicker/public_api.mjs +2 -0
  71. package/esm2022/directives/agorapulse-ui-components-directives.mjs +5 -0
  72. package/esm2022/directives/autosize-textarea.directive.mjs +45 -0
  73. package/esm2022/directives/base-button.directive.mjs +47 -0
  74. package/esm2022/directives/default-image.directive.mjs +37 -0
  75. package/esm2022/directives/ellipsis.directive.mjs +90 -0
  76. package/esm2022/directives/equal-validator.directive.mjs +73 -0
  77. package/esm2022/directives/frozen-gif.directive.mjs +125 -0
  78. package/esm2022/directives/multi-style-text.directive.mjs +61 -0
  79. package/esm2022/directives/public_api.mjs +9 -0
  80. package/esm2022/directives/truncate-tooltip.directive.mjs +43 -0
  81. package/esm2022/dots-stepper/agorapulse-ui-components-dots-stepper.mjs +5 -0
  82. package/esm2022/dots-stepper/dots-stepper.component.mjs +46 -0
  83. package/esm2022/dots-stepper/public_api.mjs +2 -0
  84. package/esm2022/form-field/agorapulse-ui-components-form-field.mjs +5 -0
  85. package/esm2022/form-field/form-field.component.mjs +11 -0
  86. package/esm2022/form-field/public_api.mjs +2 -0
  87. package/esm2022/form-message/agorapulse-ui-components-form-message.mjs +5 -0
  88. package/esm2022/form-message/form-message.component.mjs +34 -0
  89. package/esm2022/form-message/public_api.mjs +2 -0
  90. package/esm2022/icon-button/agorapulse-ui-components-icon-button.mjs +5 -0
  91. package/esm2022/icon-button/icon-button.component.mjs +121 -0
  92. package/esm2022/icon-button/public_api.mjs +2 -0
  93. package/esm2022/index.mjs +50 -0
  94. package/esm2022/infobox/agorapulse-ui-components-infobox.mjs +5 -0
  95. package/esm2022/infobox/infobox.component.mjs +78 -0
  96. package/esm2022/infobox/public_api.mjs +2 -0
  97. package/esm2022/input/agorapulse-ui-components-input.mjs +5 -0
  98. package/esm2022/input/input.directive.mjs +19 -0
  99. package/esm2022/input/public_api.mjs +2 -0
  100. package/esm2022/input-group/agorapulse-ui-components-input-group.mjs +5 -0
  101. package/esm2022/input-group/input-group.component.mjs +14 -0
  102. package/esm2022/input-group/public_api.mjs +2 -0
  103. package/esm2022/labels/agorapulse-ui-components-labels.mjs +5 -0
  104. package/esm2022/labels/label-list.component.mjs +109 -0
  105. package/esm2022/labels/label.component.mjs +57 -0
  106. package/esm2022/labels/public_api.mjs +3 -0
  107. package/esm2022/labels-selector/agorapulse-ui-components-labels-selector.mjs +5 -0
  108. package/esm2022/labels-selector/labels-selector.component.mjs +122 -0
  109. package/esm2022/labels-selector/public_api.mjs +2 -0
  110. package/esm2022/legacy/input/agorapulse-ui-components-legacy-input.mjs +5 -0
  111. package/esm2022/legacy/input/input.component.mjs +190 -0
  112. package/esm2022/legacy/input/public_api.mjs +2 -0
  113. package/esm2022/legacy/select/agorapulse-ui-components-legacy-select.mjs +5 -0
  114. package/esm2022/legacy/select/public_api.mjs +2 -0
  115. package/esm2022/legacy/select/select.component.mjs +453 -0
  116. package/esm2022/legacy/textarea/agorapulse-ui-components-legacy-textarea.mjs +5 -0
  117. package/esm2022/legacy/textarea/public_api.mjs +2 -0
  118. package/esm2022/legacy/textarea/textarea.component.mjs +155 -0
  119. package/esm2022/media-display-overlay/agorapulse-ui-components-media-display-overlay.mjs +5 -0
  120. package/esm2022/media-display-overlay/media-display-overlay-dialog.component.mjs +123 -0
  121. package/esm2022/media-display-overlay/public_api.mjs +2 -0
  122. package/esm2022/modal/agorapulse-ui-components-modal.mjs +5 -0
  123. package/esm2022/modal/modal.component.mjs +116 -0
  124. package/esm2022/modal/public_api.mjs +2 -0
  125. package/esm2022/neo-datepicker/agorapulse-ui-components-neo-datepicker.mjs +5 -0
  126. package/esm2022/neo-datepicker/day-detail.model.mjs +2 -0
  127. package/esm2022/neo-datepicker/day-disabled.pipe.mjs +21 -0
  128. package/esm2022/neo-datepicker/neo-datepicker.component.mjs +243 -0
  129. package/esm2022/neo-datepicker/public_api.mjs +4 -0
  130. package/esm2022/notification/agorapulse-ui-components-notification.mjs +5 -0
  131. package/esm2022/notification/notification.component.mjs +15 -0
  132. package/esm2022/notification/public_api.mjs +2 -0
  133. package/esm2022/paginator/agorapulse-ui-components-paginator.mjs +5 -0
  134. package/esm2022/paginator/paginator-button/paginator-button.component.mjs +51 -0
  135. package/esm2022/paginator/paginator.component.mjs +126 -0
  136. package/esm2022/paginator/public_api.mjs +3 -0
  137. package/esm2022/password-input/agorapulse-ui-components-password-input.mjs +5 -0
  138. package/esm2022/password-input/password-input.component.mjs +77 -0
  139. package/esm2022/password-input/public_api.mjs +2 -0
  140. package/esm2022/popmenu/agorapulse-ui-components-popmenu.mjs +5 -0
  141. package/esm2022/popmenu/options.mjs +17 -0
  142. package/esm2022/popmenu/popmenu-options.interface.mjs +2 -0
  143. package/esm2022/popmenu/popmenu-options.service.mjs +7 -0
  144. package/esm2022/popmenu/popmenu.component.mjs +384 -0
  145. package/esm2022/popmenu/popmenu.directive.mjs +292 -0
  146. package/esm2022/popmenu/popmenu.module.mjs +29 -0
  147. package/esm2022/popmenu/public_api.mjs +5 -0
  148. package/esm2022/radio/agorapulse-ui-components-radio.mjs +5 -0
  149. package/esm2022/radio/public_api.mjs +3 -0
  150. package/esm2022/radio/radio-control.registry.mjs +102 -0
  151. package/esm2022/radio/radio.component.mjs +224 -0
  152. package/esm2022/range-slider/agorapulse-ui-components-range-slider.mjs +5 -0
  153. package/esm2022/range-slider/public_api.mjs +2 -0
  154. package/esm2022/range-slider/range-slider.component.mjs +155 -0
  155. package/esm2022/select/agorapulse-ui-components-select.mjs +5 -0
  156. package/esm2022/select/ap-select.module.mjs +78 -0
  157. package/esm2022/select/dropdown-group-item/dropdown-group-item.component.mjs +52 -0
  158. package/esm2022/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.mjs +64 -0
  159. package/esm2022/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.mjs +68 -0
  160. package/esm2022/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.mjs +45 -0
  161. package/esm2022/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.mjs +49 -0
  162. package/esm2022/select/dropdown-search-form/dropdown-search-form.component.mjs +77 -0
  163. package/esm2022/select/public_api.mjs +13 -0
  164. package/esm2022/select/select-base.directive.mjs +69 -0
  165. package/esm2022/select/select-label-multiple/select-label-multiple.component.mjs +111 -0
  166. package/esm2022/select/select-label-single/select-label-single.component.mjs +30 -0
  167. package/esm2022/select/select-multiple.directive.mjs +35 -0
  168. package/esm2022/select/select-single.directive.mjs +34 -0
  169. package/esm2022/slide-toggle/agorapulse-ui-components-slide-toggle.mjs +5 -0
  170. package/esm2022/slide-toggle/public_api.mjs +2 -0
  171. package/esm2022/slide-toggle/slide-toggle.component.mjs +66 -0
  172. package/esm2022/snackbars-thread/agorapulse-ui-components-snackbars-thread.mjs +5 -0
  173. package/esm2022/snackbars-thread/component/snackbars-thread.component.mjs +84 -0
  174. package/esm2022/snackbars-thread/model/snackbars-thread.model.mjs +44 -0
  175. package/esm2022/snackbars-thread/public_api.mjs +4 -0
  176. package/esm2022/snackbars-thread/service/snackbars-thread.service.mjs +46 -0
  177. package/esm2022/snackbars-thread/utils/const/snackbars-thread.const.mjs +13 -0
  178. package/esm2022/social-button/agorapulse-ui-components-social-button.mjs +5 -0
  179. package/esm2022/social-button/public_api.mjs +2 -0
  180. package/esm2022/social-button/social-button.component.mjs +151 -0
  181. package/esm2022/split-button/agorapulse-ui-components-split-button.mjs +5 -0
  182. package/esm2022/split-button/public_api.mjs +2 -0
  183. package/esm2022/split-button/split-button.component.mjs +129 -0
  184. package/esm2022/src/lib/agorapulse-ui-components.module.mjs +204 -0
  185. package/esm2022/status/agorapulse-ui-components-status.mjs +5 -0
  186. package/esm2022/status/public_api.mjs +2 -0
  187. package/esm2022/status/status.component.mjs +22 -0
  188. package/esm2022/status-card/agorapulse-ui-components-status-card.mjs +5 -0
  189. package/esm2022/status-card/public_api.mjs +2 -0
  190. package/esm2022/status-card/status-card.component.mjs +25 -0
  191. package/esm2022/stepper/agorapulse-ui-components-stepper.mjs +5 -0
  192. package/esm2022/stepper/public_api.mjs +3 -0
  193. package/esm2022/stepper/step.model.mjs +2 -0
  194. package/esm2022/stepper/stepper.component.mjs +38 -0
  195. package/esm2022/tag/agorapulse-ui-components-tag.mjs +5 -0
  196. package/esm2022/tag/public_api.mjs +2 -0
  197. package/esm2022/tag/tag.component.mjs +36 -0
  198. package/esm2022/text-measurement/agorapulse-ui-components-text-measurement.mjs +5 -0
  199. package/esm2022/text-measurement/public_api.mjs +2 -0
  200. package/esm2022/text-measurement/text-measurement.service.mjs +29 -0
  201. package/esm2022/textarea/agorapulse-ui-components-textarea.mjs +5 -0
  202. package/esm2022/textarea/public_api.mjs +2 -0
  203. package/esm2022/textarea/textarea.directive.mjs +37 -0
  204. package/esm2022/toggle/agorapulse-ui-components-toggle.mjs +5 -0
  205. package/esm2022/toggle/public_api.mjs +2 -0
  206. package/esm2022/toggle/toggle.component.mjs +209 -0
  207. package/esm2022/tooltip/agorapulse-ui-components-tooltip.mjs +5 -0
  208. package/esm2022/tooltip/public_api.mjs +2 -0
  209. package/esm2022/tooltip/tooltip.directive.mjs +412 -0
  210. package/esm2022/tooltip/tooltip.service.mjs +29 -0
  211. package/fesm2022/agorapulse-ui-components-add-comment.mjs +78 -0
  212. package/fesm2022/agorapulse-ui-components-add-comment.mjs.map +1 -0
  213. package/fesm2022/agorapulse-ui-components-autocomplete.mjs +135 -0
  214. package/fesm2022/agorapulse-ui-components-autocomplete.mjs.map +1 -0
  215. package/fesm2022/agorapulse-ui-components-avatar.mjs +229 -0
  216. package/fesm2022/agorapulse-ui-components-avatar.mjs.map +1 -0
  217. package/fesm2022/agorapulse-ui-components-badge.mjs +24 -0
  218. package/fesm2022/agorapulse-ui-components-badge.mjs.map +1 -0
  219. package/fesm2022/agorapulse-ui-components-button.mjs +119 -0
  220. package/fesm2022/agorapulse-ui-components-button.mjs.map +1 -0
  221. package/fesm2022/agorapulse-ui-components-checkbox.mjs +185 -0
  222. package/fesm2022/agorapulse-ui-components-checkbox.mjs.map +1 -0
  223. package/fesm2022/agorapulse-ui-components-confirm-modal.mjs +68 -0
  224. package/fesm2022/agorapulse-ui-components-confirm-modal.mjs.map +1 -0
  225. package/fesm2022/agorapulse-ui-components-counter.mjs +66 -0
  226. package/fesm2022/agorapulse-ui-components-counter.mjs.map +1 -0
  227. package/fesm2022/agorapulse-ui-components-datepicker.mjs +278 -0
  228. package/fesm2022/agorapulse-ui-components-datepicker.mjs.map +1 -0
  229. package/fesm2022/agorapulse-ui-components-directives.mjs +513 -0
  230. package/fesm2022/agorapulse-ui-components-directives.mjs.map +1 -0
  231. package/fesm2022/agorapulse-ui-components-dots-stepper.mjs +53 -0
  232. package/fesm2022/agorapulse-ui-components-dots-stepper.mjs.map +1 -0
  233. package/fesm2022/agorapulse-ui-components-form-field.mjs +18 -0
  234. package/fesm2022/agorapulse-ui-components-form-field.mjs.map +1 -0
  235. package/fesm2022/agorapulse-ui-components-form-message.mjs +41 -0
  236. package/fesm2022/agorapulse-ui-components-form-message.mjs.map +1 -0
  237. package/fesm2022/agorapulse-ui-components-icon-button.mjs +128 -0
  238. package/fesm2022/agorapulse-ui-components-icon-button.mjs.map +1 -0
  239. package/fesm2022/agorapulse-ui-components-infobox.mjs +85 -0
  240. package/fesm2022/agorapulse-ui-components-infobox.mjs.map +1 -0
  241. package/fesm2022/agorapulse-ui-components-input-group.mjs +21 -0
  242. package/fesm2022/agorapulse-ui-components-input-group.mjs.map +1 -0
  243. package/fesm2022/agorapulse-ui-components-input.mjs +26 -0
  244. package/fesm2022/agorapulse-ui-components-input.mjs.map +1 -0
  245. package/fesm2022/agorapulse-ui-components-labels-selector.mjs +129 -0
  246. package/fesm2022/agorapulse-ui-components-labels-selector.mjs.map +1 -0
  247. package/fesm2022/agorapulse-ui-components-labels.mjs +168 -0
  248. package/fesm2022/agorapulse-ui-components-labels.mjs.map +1 -0
  249. package/fesm2022/agorapulse-ui-components-legacy-input.mjs +197 -0
  250. package/fesm2022/agorapulse-ui-components-legacy-input.mjs.map +1 -0
  251. package/fesm2022/agorapulse-ui-components-legacy-select.mjs +460 -0
  252. package/fesm2022/agorapulse-ui-components-legacy-select.mjs.map +1 -0
  253. package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs +162 -0
  254. package/fesm2022/agorapulse-ui-components-legacy-textarea.mjs.map +1 -0
  255. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs +130 -0
  256. package/fesm2022/agorapulse-ui-components-media-display-overlay.mjs.map +1 -0
  257. package/fesm2022/agorapulse-ui-components-modal.mjs +123 -0
  258. package/fesm2022/agorapulse-ui-components-modal.mjs.map +1 -0
  259. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs +268 -0
  260. package/fesm2022/agorapulse-ui-components-neo-datepicker.mjs.map +1 -0
  261. package/fesm2022/agorapulse-ui-components-notification.mjs +22 -0
  262. package/fesm2022/agorapulse-ui-components-notification.mjs.map +1 -0
  263. package/fesm2022/agorapulse-ui-components-paginator.mjs +181 -0
  264. package/fesm2022/agorapulse-ui-components-paginator.mjs.map +1 -0
  265. package/fesm2022/agorapulse-ui-components-password-input.mjs +84 -0
  266. package/fesm2022/agorapulse-ui-components-password-input.mjs.map +1 -0
  267. package/fesm2022/agorapulse-ui-components-popmenu.mjs +725 -0
  268. package/fesm2022/agorapulse-ui-components-popmenu.mjs.map +1 -0
  269. package/fesm2022/agorapulse-ui-components-radio.mjs +328 -0
  270. package/fesm2022/agorapulse-ui-components-radio.mjs.map +1 -0
  271. package/fesm2022/agorapulse-ui-components-range-slider.mjs +162 -0
  272. package/fesm2022/agorapulse-ui-components-range-slider.mjs.map +1 -0
  273. package/fesm2022/agorapulse-ui-components-select.mjs +651 -0
  274. package/fesm2022/agorapulse-ui-components-select.mjs.map +1 -0
  275. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs +73 -0
  276. package/fesm2022/agorapulse-ui-components-slide-toggle.mjs.map +1 -0
  277. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs +190 -0
  278. package/fesm2022/agorapulse-ui-components-snackbars-thread.mjs.map +1 -0
  279. package/fesm2022/agorapulse-ui-components-social-button.mjs +158 -0
  280. package/fesm2022/agorapulse-ui-components-social-button.mjs.map +1 -0
  281. package/fesm2022/agorapulse-ui-components-split-button.mjs +136 -0
  282. package/fesm2022/agorapulse-ui-components-split-button.mjs.map +1 -0
  283. package/fesm2022/agorapulse-ui-components-status-card.mjs +32 -0
  284. package/fesm2022/agorapulse-ui-components-status-card.mjs.map +1 -0
  285. package/fesm2022/agorapulse-ui-components-status.mjs +29 -0
  286. package/fesm2022/agorapulse-ui-components-status.mjs.map +1 -0
  287. package/fesm2022/agorapulse-ui-components-stepper.mjs +45 -0
  288. package/fesm2022/agorapulse-ui-components-stepper.mjs.map +1 -0
  289. package/fesm2022/agorapulse-ui-components-tag.mjs +43 -0
  290. package/fesm2022/agorapulse-ui-components-tag.mjs.map +1 -0
  291. package/fesm2022/agorapulse-ui-components-text-measurement.mjs +36 -0
  292. package/fesm2022/agorapulse-ui-components-text-measurement.mjs.map +1 -0
  293. package/fesm2022/agorapulse-ui-components-textarea.mjs +44 -0
  294. package/fesm2022/agorapulse-ui-components-textarea.mjs.map +1 -0
  295. package/fesm2022/agorapulse-ui-components-toggle.mjs +216 -0
  296. package/fesm2022/agorapulse-ui-components-toggle.mjs.map +1 -0
  297. package/fesm2022/agorapulse-ui-components-tooltip.mjs +445 -0
  298. package/fesm2022/agorapulse-ui-components-tooltip.mjs.map +1 -0
  299. package/fesm2022/agorapulse-ui-components.mjs +251 -0
  300. package/fesm2022/agorapulse-ui-components.mjs.map +1 -0
  301. package/form-field/form-field.component.d.ts +5 -0
  302. package/form-field/index.d.ts +5 -0
  303. package/form-field/public_api.d.ts +1 -0
  304. package/form-message/form-message.component.d.ts +12 -0
  305. package/form-message/index.d.ts +5 -0
  306. package/form-message/public_api.d.ts +1 -0
  307. package/icon-button/icon-button.component.d.ts +39 -0
  308. package/icon-button/index.d.ts +5 -0
  309. package/icon-button/public_api.d.ts +1 -0
  310. package/index.d.ts +43 -53
  311. package/infobox/index.d.ts +5 -0
  312. package/infobox/infobox.component.d.ts +32 -0
  313. package/infobox/public_api.d.ts +1 -0
  314. package/input/index.d.ts +5 -0
  315. package/input/input.directive.d.ts +7 -0
  316. package/input/public_api.d.ts +1 -0
  317. package/input-group/index.d.ts +5 -0
  318. package/input-group/input-group.component.d.ts +6 -0
  319. package/input-group/public_api.d.ts +1 -0
  320. package/labels/index.d.ts +5 -0
  321. package/labels/label-list.component.d.ts +34 -0
  322. package/labels/label.component.d.ts +24 -0
  323. package/labels/public_api.d.ts +2 -0
  324. package/labels-selector/index.d.ts +5 -0
  325. package/labels-selector/labels-selector.component.d.ts +42 -0
  326. package/labels-selector/public_api.d.ts +1 -0
  327. package/legacy/input/index.d.ts +5 -0
  328. package/legacy/input/input.component.d.ts +64 -0
  329. package/legacy/input/public_api.d.ts +1 -0
  330. package/legacy/select/index.d.ts +5 -0
  331. package/legacy/select/public_api.d.ts +1 -0
  332. package/legacy/select/select.component.d.ts +122 -0
  333. package/legacy/textarea/index.d.ts +5 -0
  334. package/legacy/textarea/public_api.d.ts +1 -0
  335. package/legacy/textarea/textarea.component.d.ts +53 -0
  336. package/media-display-overlay/index.d.ts +5 -0
  337. package/media-display-overlay/media-display-overlay-dialog.component.d.ts +42 -0
  338. package/media-display-overlay/public_api.d.ts +1 -0
  339. package/modal/index.d.ts +5 -0
  340. package/modal/modal.component.d.ts +54 -0
  341. package/modal/public_api.d.ts +1 -0
  342. package/neo-datepicker/day-detail.model.d.ts +9 -0
  343. package/neo-datepicker/day-disabled.pipe.d.ts +8 -0
  344. package/neo-datepicker/index.d.ts +5 -0
  345. package/neo-datepicker/neo-datepicker.component.d.ts +61 -0
  346. package/neo-datepicker/public_api.d.ts +3 -0
  347. package/notification/index.d.ts +5 -0
  348. package/notification/notification.component.d.ts +6 -0
  349. package/notification/public_api.d.ts +1 -0
  350. package/package.json +291 -20
  351. package/paginator/index.d.ts +5 -0
  352. package/paginator/paginator-button/paginator-button.component.d.ts +17 -0
  353. package/paginator/paginator.component.d.ts +38 -0
  354. package/paginator/public_api.d.ts +2 -0
  355. package/password-input/index.d.ts +5 -0
  356. package/password-input/password-input.component.d.ts +33 -0
  357. package/password-input/public_api.d.ts +1 -0
  358. package/popmenu/index.d.ts +5 -0
  359. package/{src/lib/popmenu → popmenu}/options.d.ts +1 -0
  360. package/popmenu/popmenu-options.interface.d.ts +48 -0
  361. package/{src/lib/popmenu → popmenu}/popmenu.component.d.ts +17 -9
  362. package/popmenu/popmenu.directive.d.ts +84 -0
  363. package/popmenu/popmenu.module.d.ts +11 -0
  364. package/popmenu/public_api.d.ts +4 -0
  365. package/radio/index.d.ts +5 -0
  366. package/radio/public_api.d.ts +2 -0
  367. package/radio/radio-control.registry.d.ts +22 -0
  368. package/radio/radio.component.d.ts +59 -0
  369. package/range-slider/index.d.ts +5 -0
  370. package/range-slider/public_api.d.ts +1 -0
  371. package/range-slider/range-slider.component.d.ts +35 -0
  372. package/select/ap-select.module.d.ts +17 -0
  373. package/select/dropdown-group-item/dropdown-group-item.component.d.ts +16 -0
  374. package/select/dropdown-item-multiple-one-line/dropdown-item-multiple-one-line.component.d.ts +21 -0
  375. package/select/dropdown-item-multiple-two-lines/dropdown-item-multiple-two-lines.component.d.ts +22 -0
  376. package/select/dropdown-item-single-one-line/dropdown-item-single-one-line.component.d.ts +15 -0
  377. package/select/dropdown-item-single-two-lines/dropdown-item-single-two-lines.component.d.ts +16 -0
  378. package/select/dropdown-search-form/dropdown-search-form.component.d.ts +22 -0
  379. package/select/index.d.ts +5 -0
  380. package/select/public_api.d.ts +12 -0
  381. package/select/select-base.directive.d.ts +18 -0
  382. package/select/select-label-multiple/select-label-multiple.component.d.ts +29 -0
  383. package/select/select-label-single/select-label-single.component.d.ts +10 -0
  384. package/select/select-multiple.directive.d.ts +10 -0
  385. package/select/select-single.directive.d.ts +10 -0
  386. package/slide-toggle/index.d.ts +5 -0
  387. package/slide-toggle/public_api.d.ts +1 -0
  388. package/{src/lib/slide-toggle → slide-toggle}/slide-toggle.component.d.ts +4 -0
  389. package/snackbars-thread/component/snackbars-thread.component.d.ts +23 -0
  390. package/snackbars-thread/index.d.ts +5 -0
  391. package/{src/lib/snackbars-thread → snackbars-thread}/model/snackbars-thread.model.d.ts +9 -6
  392. package/snackbars-thread/public_api.d.ts +3 -0
  393. package/snackbars-thread/service/snackbars-thread.service.d.ts +15 -0
  394. package/{src/lib/snackbars-thread → snackbars-thread}/utils/const/snackbars-thread.const.d.ts +2 -4
  395. package/social-button/index.d.ts +5 -0
  396. package/social-button/public_api.d.ts +1 -0
  397. package/social-button/social-button.component.d.ts +32 -0
  398. package/split-button/index.d.ts +5 -0
  399. package/split-button/public_api.d.ts +1 -0
  400. package/split-button/split-button.component.d.ts +43 -0
  401. package/src/lib/agorapulse-ui-components.module.d.ts +27 -0
  402. package/status/index.d.ts +5 -0
  403. package/status/public_api.d.ts +1 -0
  404. package/status/status.component.d.ts +9 -0
  405. package/status-card/index.d.ts +5 -0
  406. package/status-card/public_api.d.ts +1 -0
  407. package/status-card/status-card.component.d.ts +13 -0
  408. package/stepper/index.d.ts +5 -0
  409. package/stepper/public_api.d.ts +2 -0
  410. package/{src/lib/stepper → stepper}/step.model.d.ts +1 -0
  411. package/stepper/stepper.component.d.ts +16 -0
  412. package/tag/index.d.ts +5 -0
  413. package/tag/public_api.d.ts +1 -0
  414. package/tag/tag.component.d.ts +18 -0
  415. package/text-measurement/index.d.ts +5 -0
  416. package/text-measurement/public_api.d.ts +1 -0
  417. package/text-measurement/text-measurement.service.d.ts +8 -0
  418. package/textarea/index.d.ts +5 -0
  419. package/textarea/public_api.d.ts +1 -0
  420. package/textarea/textarea.directive.d.ts +11 -0
  421. package/toggle/index.d.ts +5 -0
  422. package/toggle/public_api.d.ts +1 -0
  423. package/toggle/toggle.component.d.ts +52 -0
  424. package/tooltip/index.d.ts +5 -0
  425. package/tooltip/public_api.d.ts +1 -0
  426. package/tooltip/tooltip.directive.d.ts +58 -0
  427. package/tooltip/tooltip.service.d.ts +11 -0
  428. package/agorapulse-ui-components-0.0.3.tgz +0 -0
  429. package/agorapulse-ui-components.d.ts +0 -9
  430. package/agorapulse-ui-components.metadata.json +0 -1
  431. package/bundles/agorapulse-ui-components.umd.js +0 -4448
  432. package/bundles/agorapulse-ui-components.umd.js.map +0 -1
  433. package/esm2015/agorapulse-ui-components.js +0 -10
  434. package/esm2015/index.js +0 -57
  435. package/esm2015/src/lib/add-comment/add-comment.component.js +0 -54
  436. package/esm2015/src/lib/agorapulse-ui-components.module.js +0 -279
  437. package/esm2015/src/lib/avatar/avatar.component.js +0 -82
  438. package/esm2015/src/lib/confirm-modal/confirm-modal-texts.model.js +0 -2
  439. package/esm2015/src/lib/confirm-modal/confirm-modal.component.js +0 -59
  440. package/esm2015/src/lib/datepicker/datepicker.component.js +0 -213
  441. package/esm2015/src/lib/directives/autosize-textarea.directive.js +0 -43
  442. package/esm2015/src/lib/directives/default-image.directive.js +0 -25
  443. package/esm2015/src/lib/directives/ellipsis.directive.js +0 -82
  444. package/esm2015/src/lib/directives/equal-validator.directive.js +0 -53
  445. package/esm2015/src/lib/directives/frozen-gif.directive.js +0 -113
  446. package/esm2015/src/lib/directives/multi-style-text.directive.js +0 -103
  447. package/esm2015/src/lib/directives/truncate-tooltip.directive.js +0 -36
  448. package/esm2015/src/lib/dots-stepper/dots-stepper.component.js +0 -41
  449. package/esm2015/src/lib/edit-tag-modal/edit-tags-modal.component.js +0 -129
  450. package/esm2015/src/lib/edit-tag-modal/model/edit-tags-modal.model.js +0 -2
  451. package/esm2015/src/lib/feature-onboarding/feature-onboarding.component.js +0 -35
  452. package/esm2015/src/lib/image-carousel/image-carousel.component.js +0 -143
  453. package/esm2015/src/lib/lead-modal/lead-info.model.js +0 -2
  454. package/esm2015/src/lib/lead-modal/lead-modal.component.js +0 -47
  455. package/esm2015/src/lib/media-display-overlay/media-display-overlay-dialog.component.js +0 -87
  456. package/esm2015/src/lib/modal/modal.component.js +0 -88
  457. package/esm2015/src/lib/notification/notification.component.js +0 -18
  458. package/esm2015/src/lib/overlay/overlay-dialog-service.component.js +0 -62
  459. package/esm2015/src/lib/overlay/overlay-dialog.component.js +0 -33
  460. package/esm2015/src/lib/overlay-in-div/overlay-in-div.component.js +0 -23
  461. package/esm2015/src/lib/paginator/paginator-button/paginator-button.component.js +0 -22
  462. package/esm2015/src/lib/paginator/paginator.component.js +0 -47
  463. package/esm2015/src/lib/password-input/password-input.component.js +0 -65
  464. package/esm2015/src/lib/password-strength-bar/password-strength-bar.component.js +0 -82
  465. package/esm2015/src/lib/password-strength-display-bar/password-strength-display-bar.component.js +0 -41
  466. package/esm2015/src/lib/phone-number-input/phone-number-input.component.js +0 -123
  467. package/esm2015/src/lib/places/place-list.component.js +0 -12
  468. package/esm2015/src/lib/places/place.component.js +0 -15
  469. package/esm2015/src/lib/popmenu/options.js +0 -16
  470. package/esm2015/src/lib/popmenu/popmenu-options.interface.js +0 -2
  471. package/esm2015/src/lib/popmenu/popmenu-options.service.js +0 -7
  472. package/esm2015/src/lib/popmenu/popmenu.component.js +0 -322
  473. package/esm2015/src/lib/popmenu/popmenu.directive.js +0 -215
  474. package/esm2015/src/lib/popmenu/popmenu.module.js +0 -38
  475. package/esm2015/src/lib/slide-toggle/slide-toggle.component.js +0 -59
  476. package/esm2015/src/lib/snackbar/snackbar.component.js +0 -22
  477. package/esm2015/src/lib/snackbars-thread/component/snackbars-thread.component.js +0 -50
  478. package/esm2015/src/lib/snackbars-thread/model/snackbars-thread.model.js +0 -41
  479. package/esm2015/src/lib/snackbars-thread/service/snackbars-thread.service.js +0 -44
  480. package/esm2015/src/lib/snackbars-thread/utils/const/snackbars-thread.const.js +0 -13
  481. package/esm2015/src/lib/splashscreen/splashscreen.component.js +0 -37
  482. package/esm2015/src/lib/star-rating/star-rating.component.js +0 -38
  483. package/esm2015/src/lib/stepper/step.model.js +0 -2
  484. package/esm2015/src/lib/stepper/stepper.component.js +0 -37
  485. package/esm2015/src/lib/tags/tag-list.component.js +0 -12
  486. package/esm2015/src/lib/tags/tag.component.js +0 -20
  487. package/esm2015/src/lib/tags-selector/tags-selector.component.js +0 -73
  488. package/esm2015/src/lib/timepicker/timepicker.component.js +0 -375
  489. package/esm2015/src/lib/tooltip-neo/tooltip-neo.component.js +0 -46
  490. package/esm2015/src/lib/tooltip-neo/tooltip-neo.const.js +0 -67
  491. package/esm2015/src/lib/tooltip-neo/tooltip-neo.directive.js +0 -107
  492. package/esm2015/src/lib/tooltip-neo/tooltip-neo.model.js +0 -2
  493. package/esm2015/src/lib/tooltip-neo/tooltip-neo.service.js +0 -15
  494. package/esm2015/src/lib/try-popup/try-popup-texts.model.js +0 -2
  495. package/esm2015/src/lib/try-popup/try-popup.component.js +0 -33
  496. package/fesm2015/agorapulse-ui-components.js +0 -3805
  497. package/fesm2015/agorapulse-ui-components.js.map +0 -1
  498. package/src/lib/add-comment/add-comment.component.d.ts +0 -17
  499. package/src/lib/avatar/avatar.component.d.ts +0 -23
  500. package/src/lib/confirm-modal/confirm-modal.component.d.ts +0 -17
  501. package/src/lib/datepicker/datepicker.component.d.ts +0 -69
  502. package/src/lib/directives/default-image.directive.d.ts +0 -5
  503. package/src/lib/directives/equal-validator.directive.d.ts +0 -10
  504. package/src/lib/directives/multi-style-text.directive.d.ts +0 -15
  505. package/src/lib/directives/truncate-tooltip.directive.d.ts +0 -13
  506. package/src/lib/dots-stepper/dots-stepper.component.d.ts +0 -13
  507. package/src/lib/edit-tag-modal/edit-tags-modal.component.d.ts +0 -29
  508. package/src/lib/edit-tag-modal/model/edit-tags-modal.model.d.ts +0 -21
  509. package/src/lib/feature-onboarding/feature-onboarding.component.d.ts +0 -15
  510. package/src/lib/image-carousel/image-carousel.component.d.ts +0 -45
  511. package/src/lib/lead-modal/lead-info.model.d.ts +0 -7
  512. package/src/lib/lead-modal/lead-modal.component.d.ts +0 -28
  513. package/src/lib/media-display-overlay/media-display-overlay-dialog.component.d.ts +0 -28
  514. package/src/lib/modal/modal.component.d.ts +0 -47
  515. package/src/lib/notification/notification.component.d.ts +0 -3
  516. package/src/lib/overlay/overlay-dialog-service.component.d.ts +0 -20
  517. package/src/lib/overlay/overlay-dialog.component.d.ts +0 -17
  518. package/src/lib/overlay-in-div/overlay-in-div.component.d.ts +0 -8
  519. package/src/lib/paginator/paginator-button/paginator-button.component.d.ts +0 -6
  520. package/src/lib/paginator/paginator.component.d.ts +0 -14
  521. package/src/lib/password-input/password-input.component.d.ts +0 -28
  522. package/src/lib/password-strength-bar/password-strength-bar.component.d.ts +0 -21
  523. package/src/lib/password-strength-display-bar/password-strength-display-bar.component.d.ts +0 -14
  524. package/src/lib/phone-number-input/phone-number-input.component.d.ts +0 -42
  525. package/src/lib/places/place-list.component.d.ts +0 -2
  526. package/src/lib/places/place.component.d.ts +0 -3
  527. package/src/lib/popmenu/popmenu-options.interface.d.ts +0 -24
  528. package/src/lib/popmenu/popmenu.directive.d.ts +0 -69
  529. package/src/lib/popmenu/popmenu.module.d.ts +0 -5
  530. package/src/lib/snackbar/snackbar.component.d.ts +0 -6
  531. package/src/lib/snackbars-thread/component/snackbars-thread.component.d.ts +0 -18
  532. package/src/lib/snackbars-thread/service/snackbars-thread.service.d.ts +0 -12
  533. package/src/lib/splashscreen/splashscreen.component.d.ts +0 -15
  534. package/src/lib/star-rating/star-rating.component.d.ts +0 -10
  535. package/src/lib/stepper/stepper.component.d.ts +0 -14
  536. package/src/lib/tags/tag-list.component.d.ts +0 -2
  537. package/src/lib/tags/tag.component.d.ts +0 -4
  538. package/src/lib/tags-selector/tags-selector.component.d.ts +0 -29
  539. package/src/lib/timepicker/timepicker.component.d.ts +0 -68
  540. package/src/lib/tooltip-neo/tooltip-neo.component.d.ts +0 -12
  541. package/src/lib/tooltip-neo/tooltip-neo.const.d.ts +0 -4
  542. package/src/lib/tooltip-neo/tooltip-neo.directive.d.ts +0 -29
  543. package/src/lib/tooltip-neo/tooltip-neo.model.d.ts +0 -12
  544. package/src/lib/tooltip-neo/tooltip-neo.service.d.ts +0 -4
  545. package/src/lib/try-popup/try-popup-texts.model.d.ts +0 -4
  546. package/src/lib/try-popup/try-popup.component.d.ts +0 -12
  547. /package/{src/lib/confirm-modal → confirm-modal}/confirm-modal-texts.model.d.ts +0 -0
  548. /package/{src/lib/popmenu → popmenu}/popmenu-options.service.d.ts +0 -0
@@ -0,0 +1,453 @@
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 { InputComponent } from '@agorapulse/ui-components/legacy/input';
6
+ import { LabelComponent } from '@agorapulse/ui-components/labels';
7
+ import { TagComponent } from '@agorapulse/ui-components/tag';
8
+ import { SymbolComponent, SymbolRegistry, apAdd2022, apAlertCircle, apCheck2, apCheckCircle, apDeleteNoCircle, apSearchAlternate, } from '@agorapulse/ui-symbol';
9
+ import { AsyncPipe, NgFor, NgIf, 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([apCheck2, apAlertCircle, apCheckCircle, apSearchAlternate, apAdd2022, 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: "16.2.10", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
322
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", 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: "<label\n *ngIf=\"label && !inlineLabel\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n <span\n *ngIf=\"description\"\n class=\"description\">\n {{ description }}\n </span>\n</label>\n\n<div\n *ngIf=\"inlineLabel\"\n #inlineLabel\n tabindex=\"0\"\n class=\"inline-label\"\n (click)=\"onOpenSelect()\"\n (keydown.enter)=\"onOpenSelect()\"\n (mouseenter)=\"onInlineInputEnter()\"\n (mouseleave)=\"onInlineInputLeave()\">\n <label\n *ngIf=\"label && inlineLabel\"\n class=\"label\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n </label>\n <div class=\"divider\"></div>\n</div>\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 <ng-container *ngIf=\"searchable || selectAll\">\n <ng-template\n let-item=\"item\"\n ng-header-tmp>\n <ng-container *ngIf=\"searchable\">\n <ap-input\n #searchInput\n tabindex=\"0\"\n name=\"search-input\"\n class=\"full-width\"\n symbolId=\"search-alternate\"\n symbolPosition=\"right\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"onSearchTermChange($event)\" />\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n </ng-template>\n </ng-container>\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 <ng-container *ngIf=\"!multiple\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ng-container>\n <ng-container *ngIf=\"multiple\">\n <ap-checkbox\n *ngIf=\"selectableGroup\"\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 <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ap-checkbox>\n <span\n *ngIf=\"!selectableGroup\"\n class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n </ng-container>\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 <ng-container *ngIf=\"!customMultiLabelTemplate\">\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n class=\"item\"\n removable=\"true\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n clearable=\"true\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!optionLabel || !item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n class=\"item\"\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span class=\"text-item\">\n {{ item }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"customMultiLabelTemplate\">\n <ng-container *ngTemplateOutlet=\"customMultiLabelTemplate; context: { options: items }\" />\n </ng-container>\n </div>\n <div\n *ngIf=\"hiddenCountSignal() > 0\"\n class=\"remaining\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || displayTypeSignal() === 'withAvatar' || !displayTypeSignal()\">\n <span class=\"text-item\">+{{ hiddenCountSignal() }}</span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n clearable=\"false\">\n +{{ hiddenCountSignal() }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"false\"\n [content]=\"'+' + hiddenCountSignal()\" />\n </ng-container>\n </div>\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 <ng-container *ngIf=\"create\">\n <ng-template ng-footer-tmp>\n <button\n class=\"create-new\"\n type=\"button\"\n (click)=\"onCreateNew()\">\n <ap-symbol\n symbolId=\"add-2022\"\n size=\"micro\" />\n <span>\n {{ createText }}\n </span>\n <ng-container *ngIf=\"searchTermSignal()\">\"{{ searchTermSignal() }}\"</ng-container>\n </button>\n </ng-template>\n </ng-container>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n <ng-container\n *ngIf=\"(!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 <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(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 </ng-container>\n <ng-container *ngIf=\"optionDivider && item[optionDivider]\">\n <div class=\"divider\"></div>\n </ng-container>\n </ng-template>\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n <ng-container *ngIf=\"customLabelTemplate\">\n <ng-container *ngTemplateOutlet=\"customLabelTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"!optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <span class=\"text-item\">\n {{ item }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span class=\"text-item\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n [title]=\"item[optionLabel]\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\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 <ng-container *ngIf=\"multiple\">\n <div class=\"disabled-opaque\"></div>\n <ap-checkbox\n *ngIf=\"multiple\"\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 </ng-container>\n <ng-container *ngIf=\"!multiple\">\n <div class=\"disabled-opaque\"></div>\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ng-container>\n</ng-template>\n\n<ng-template\n #textItem\n let-item=\"item\"\n let-item$=\"item$\">\n <div class=\"content\">\n <ng-container *ngIf=\"!customOptionTemplate\">\n <ng-container *ngIf=\"!optionLabel\">\n <span class=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"optionProfileImageUrl\">\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n </ng-container>\n <ng-container *ngIf=\"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 <ng-container *ngIf=\"optionBadgeLabel && item[optionBadgeLabel]\">\n <ap-badge color=\"blue\">{{ item[optionBadgeLabel] }}</ap-badge>\n </ng-container>\n </div>\n <ng-container *ngIf=\"optionCaption && item[optionCaption]\">\n <span\n class=\"caption\"\n [title]=\"item[optionCaption]\">\n {{ item[optionCaption] }}\n </span>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"customOptionTemplate\">\n <ng-container *ngTemplateOutlet=\"customOptionTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n</ng-template>\n\n<div\n *ngIf=\"errorMessage\"\n class=\"form-message error\">\n <ap-symbol\n symbolId=\"alert-circle\"\n size=\"micro\" />\n <span>\n {{ errorMessage }}\n </span>\n</div>\n\n<div\n *ngIf=\"successMessage\"\n class=\"form-message success\">\n <ap-symbol\n symbolId=\"check-circle\"\n size=\"micro\" />\n <span>\n {{ successMessage }}\n </span>\n</div>\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:-moz-fit-content;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: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "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", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], 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: ["color", "symbolId", "size"] }, { 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: ["alternativeText", "anonymous", "username", "network", "online", "profilePicture", "showInitials", "alt", "rounded", "size"] }, { 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", "color", "mini"], outputs: ["clear"] }, { 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: "16.2.10", ngImport: i0, type: SelectComponent, decorators: [{
325
+ type: Component,
326
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ap-select', standalone: true, imports: [
327
+ NgIf,
328
+ NgFor,
329
+ ReactiveFormsModule,
330
+ FormsModule,
331
+ NgSelectModule,
332
+ InputComponent,
333
+ SymbolComponent,
334
+ AsyncPipe,
335
+ SlicePipe,
336
+ CheckboxComponent,
337
+ AvatarComponent,
338
+ NgTemplateOutlet,
339
+ LabelComponent,
340
+ TagComponent,
341
+ BadgeComponent,
342
+ LoaderComponent,
343
+ ], providers: [SELECT_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, template: "<label\n *ngIf=\"label && !inlineLabel\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n <span\n *ngIf=\"description\"\n class=\"description\">\n {{ description }}\n </span>\n</label>\n\n<div\n *ngIf=\"inlineLabel\"\n #inlineLabel\n tabindex=\"0\"\n class=\"inline-label\"\n (click)=\"onOpenSelect()\"\n (keydown.enter)=\"onOpenSelect()\"\n (mouseenter)=\"onInlineInputEnter()\"\n (mouseleave)=\"onInlineInputLeave()\">\n <label\n *ngIf=\"label && inlineLabel\"\n class=\"label\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n </label>\n <div class=\"divider\"></div>\n</div>\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 <ng-container *ngIf=\"searchable || selectAll\">\n <ng-template\n let-item=\"item\"\n ng-header-tmp>\n <ng-container *ngIf=\"searchable\">\n <ap-input\n #searchInput\n tabindex=\"0\"\n name=\"search-input\"\n class=\"full-width\"\n symbolId=\"search-alternate\"\n symbolPosition=\"right\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"onSearchTermChange($event)\" />\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n </ng-template>\n </ng-container>\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 <ng-container *ngIf=\"!multiple\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ng-container>\n <ng-container *ngIf=\"multiple\">\n <ap-checkbox\n *ngIf=\"selectableGroup\"\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 <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ap-checkbox>\n <span\n *ngIf=\"!selectableGroup\"\n class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n </ng-container>\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 <ng-container *ngIf=\"!customMultiLabelTemplate\">\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n class=\"item\"\n removable=\"true\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n clearable=\"true\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!optionLabel || !item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n class=\"item\"\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span class=\"text-item\">\n {{ item }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"customMultiLabelTemplate\">\n <ng-container *ngTemplateOutlet=\"customMultiLabelTemplate; context: { options: items }\" />\n </ng-container>\n </div>\n <div\n *ngIf=\"hiddenCountSignal() > 0\"\n class=\"remaining\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || displayTypeSignal() === 'withAvatar' || !displayTypeSignal()\">\n <span class=\"text-item\">+{{ hiddenCountSignal() }}</span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n clearable=\"false\">\n +{{ hiddenCountSignal() }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"false\"\n [content]=\"'+' + hiddenCountSignal()\" />\n </ng-container>\n </div>\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 <ng-container *ngIf=\"create\">\n <ng-template ng-footer-tmp>\n <button\n class=\"create-new\"\n type=\"button\"\n (click)=\"onCreateNew()\">\n <ap-symbol\n symbolId=\"add-2022\"\n size=\"micro\" />\n <span>\n {{ createText }}\n </span>\n <ng-container *ngIf=\"searchTermSignal()\">\"{{ searchTermSignal() }}\"</ng-container>\n </button>\n </ng-template>\n </ng-container>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n <ng-container\n *ngIf=\"(!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 <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(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 </ng-container>\n <ng-container *ngIf=\"optionDivider && item[optionDivider]\">\n <div class=\"divider\"></div>\n </ng-container>\n </ng-template>\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n <ng-container *ngIf=\"customLabelTemplate\">\n <ng-container *ngTemplateOutlet=\"customLabelTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"!optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <span class=\"text-item\">\n {{ item }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span class=\"text-item\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n [title]=\"item[optionLabel]\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\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 <ng-container *ngIf=\"multiple\">\n <div class=\"disabled-opaque\"></div>\n <ap-checkbox\n *ngIf=\"multiple\"\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 </ng-container>\n <ng-container *ngIf=\"!multiple\">\n <div class=\"disabled-opaque\"></div>\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ng-container>\n</ng-template>\n\n<ng-template\n #textItem\n let-item=\"item\"\n let-item$=\"item$\">\n <div class=\"content\">\n <ng-container *ngIf=\"!customOptionTemplate\">\n <ng-container *ngIf=\"!optionLabel\">\n <span class=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"optionProfileImageUrl\">\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n </ng-container>\n <ng-container *ngIf=\"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 <ng-container *ngIf=\"optionBadgeLabel && item[optionBadgeLabel]\">\n <ap-badge color=\"blue\">{{ item[optionBadgeLabel] }}</ap-badge>\n </ng-container>\n </div>\n <ng-container *ngIf=\"optionCaption && item[optionCaption]\">\n <span\n class=\"caption\"\n [title]=\"item[optionCaption]\">\n {{ item[optionCaption] }}\n </span>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"customOptionTemplate\">\n <ng-container *ngTemplateOutlet=\"customOptionTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n</ng-template>\n\n<div\n *ngIf=\"errorMessage\"\n class=\"form-message error\">\n <ap-symbol\n symbolId=\"alert-circle\"\n size=\"micro\" />\n <span>\n {{ errorMessage }}\n </span>\n</div>\n\n<div\n *ngIf=\"successMessage\"\n class=\"form-message success\">\n <ap-symbol\n symbolId=\"check-circle\"\n size=\"micro\" />\n <span>\n {{ successMessage }}\n </span>\n</div>\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:-moz-fit-content;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"] }]
344
+ }], ctorParameters: function () { return []; }, propDecorators: { searchInput: [{
345
+ type: ViewChild,
346
+ args: ['searchInput']
347
+ }], inlineLabelElement: [{
348
+ type: ViewChild,
349
+ args: ['inlineLabel']
350
+ }], select: [{
351
+ type: ViewChild,
352
+ args: ['select']
353
+ }], hovered: [{
354
+ type: HostBinding,
355
+ args: ['class.hovered']
356
+ }], options: [{
357
+ type: Input,
358
+ args: [{ required: true }]
359
+ }], ariaLabel: [{
360
+ type: Input
361
+ }], ariaLabelledBy: [{
362
+ type: Input
363
+ }], ariaDescribedBy: [{
364
+ type: Input
365
+ }], appendTo: [{
366
+ type: Input
367
+ }], clearable: [{
368
+ type: Input
369
+ }], description: [{
370
+ type: Input
371
+ }], disabled: [{
372
+ type: Input
373
+ }], selectId: [{
374
+ type: Input
375
+ }], inlineLabel: [{
376
+ type: HostBinding,
377
+ args: ['class.inline']
378
+ }, {
379
+ type: Input
380
+ }], create: [{
381
+ type: Input
382
+ }], createText: [{
383
+ type: Input
384
+ }], group: [{
385
+ type: Input
386
+ }], selectableGroup: [{
387
+ type: Input
388
+ }], label: [{
389
+ type: Input
390
+ }], multiple: [{
391
+ type: Input
392
+ }], only: [{
393
+ type: Input
394
+ }], onlyText: [{
395
+ type: Input
396
+ }], placeholder: [{
397
+ type: Input
398
+ }], selectAll: [{
399
+ type: Input
400
+ }], selectAllText: [{
401
+ type: Input
402
+ }], unselectAllText: [{
403
+ type: Input
404
+ }], searchable: [{
405
+ type: Input
406
+ }], searchPlaceholder: [{
407
+ type: Input
408
+ }], searchFn: [{
409
+ type: Input
410
+ }], notFoundText: [{
411
+ type: Input
412
+ }], loadingText: [{
413
+ type: Input
414
+ }], displayType: [{
415
+ type: Input
416
+ }], optionLabel: [{
417
+ type: Input
418
+ }], optionCaption: [{
419
+ type: Input
420
+ }], optionDivider: [{
421
+ type: Input
422
+ }], optionProfileImageUrl: [{
423
+ type: Input
424
+ }], optionBadgeLabel: [{
425
+ type: Input
426
+ }], optionValue: [{
427
+ type: Input
428
+ }], optionDisabled: [{
429
+ type: Input
430
+ }], optionGroupLabel: [{
431
+ type: Input
432
+ }], optionGroupTag: [{
433
+ type: Input
434
+ }], maximumDisplayOptions: [{
435
+ type: Input
436
+ }], customOptionTemplate: [{
437
+ type: Input
438
+ }], customLabelTemplate: [{
439
+ type: Input
440
+ }], customMultiLabelTemplate: [{
441
+ type: Input
442
+ }], errorMessage: [{
443
+ type: Input
444
+ }], successMessage: [{
445
+ type: Input
446
+ }], compareWith: [{
447
+ type: Input
448
+ }], createNew: [{
449
+ type: Output
450
+ }], valueChanges: [{
451
+ type: Output
452
+ }] } });
453
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9sZWdhY3kvc2VsZWN0L3NyYy9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy91aS1jb21wb25lbnRzL2xlZ2FjeS9zZWxlY3Qvc3JjL3NlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEVBQ0gsZUFBZSxFQUNmLGNBQWMsRUFDZCxTQUFTLEVBQ1QsYUFBYSxFQUNiLFFBQVEsRUFDUixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNwQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxF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QW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNPLHFCQUFxQjtzQkFBakMsS0FBSztnQkFHRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1hbmltYXRpb25zJztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvYXZhdGFyJztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvY2hlY2tib3gnO1xuaW1wb3J0IHsgSW5wdXRDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2xlZ2FjeS9pbnB1dCc7XG5pbXBvcnQgeyBMYWJlbENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvbGFiZWxzJztcbmltcG9ydCB7IFRhZ0NvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvdGFnJztcbmltcG9ydCB7XG4gICAgU3ltYm9sQ29tcG9uZW50LFxuICAgIFN5bWJvbFJlZ2lzdHJ5LFxuICAgIGFwQWRkMjAyMixcbiAgICBhcEFsZXJ0Q2lyY2xlLFxuICAgIGFwQ2hlY2syLFxuICAgIGFwQ2hlY2tDaXJjbGUsXG4gICAgYXBEZWxldGVOb0NpcmNsZSxcbiAgICBhcFNlYXJjaEFsdGVybmF0ZSxcbn0gZnJvbSAnQGFnb3JhcHVsc2UvdWktc3ltYm9sJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3IsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIFNsaWNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFByb3ZpZGVyLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBjb21wdXRlZCxcbiAgICBlZmZlY3QsXG4gICAgZm9yd2FyZFJlZixcbiAgICBpbmplY3QsXG4gICAgcnVuSW5JbmplY3Rpb25Db250ZXh0LFxuICAgIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ09wdGlvbiwgTmdTZWxlY3RDb21wb25lbnQsIE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGVib3VuY2VUaW1lLCBmcm9tRXZlbnQsIG9mLCBza2lwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBEaXNwbGF5VHlwZSA9ICd0ZXh0JyB8ICdsYWJlbCcgfCAndGFnJyB8ICd3aXRoQXZhdGFyJztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVF9WQUxVRV9BQ0NFU1NPUjogUHJvdmlkZXIgPSB7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VsZWN0Q29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZSxcbn07XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIE5nU2VsZWN0Q29tcG9uZW50IHdpdGggZGlyZWN0aXZlIGFwU2VsZWN0U2luZ2xlIG9yIGFwU2VsZWN0TXVsdGlwbGVcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdhcC1zZWxlY3QnLFxuICAgIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nU2VsZWN0TW9kdWxlLFxuICAgICAgICBJbnB1dENvbXBvbmVudCxcbiAgICAgICAgU3ltYm9sQ29tcG9uZW50LFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIFNsaWNlUGlwZSxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIEF2YXRhckNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFRhZ0NvbXBvbmVudCxcbiAgICAgICAgQmFkZ2VDb21wb25lbnQsXG4gICAgICAgIExvYWRlckNvbXBvbmVudCxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1NFTEVDVF9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50PFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHN0cmluZz4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBwcml2YXRlIHN5bWJvbFJlZ2lzdHJ5OiBTeW1ib2xSZWdpc3RyeSA9IGluamVjdChTeW1ib2xSZWdpc3RyeSk7XG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQhOiBJbnB1dENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdpbmxpbmVMYWJlbCcpIGlubGluZUxhYmVsRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdCcpIHNlbGVjdCE6IE5nU2VsZWN0Q29tcG9uZW50O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5ob3ZlcmVkJykgaG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgb3B0aW9uc1NpZ25hbCA9IHNpZ25hbDxUW10+KFtdKTtcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZXQgb3B0aW9ucyhvcHRpb25zOiBUW10pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zU2lnbmFsLnNldChvcHRpb25zKTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNTaWduYWwuc2V0KG9wdGlvbnMpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbCE6IHN0cmluZztcbiAgICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeSE6IHN0cmluZztcbiAgICBASW5wdXQoKSBhcmlhRGVzY3JpYmVkQnkhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgYXBwZW5kVG86IHN0cmluZyA9ICdib2R5JztcbiAgICBASW5wdXQoKSBjbGVhcmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNlbGVjdElkPzogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBfaW5saW5lOiBib29sZWFuID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbmxpbmUnKVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlubGluZUxhYmVsKGlubGluZUxhYmVsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lubGluZSA9IGlubGluZUxhYmVsO1xuICAgICAgICBpZiAoIXRoaXMuaW5saW5lTGFiZWxFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAnLS1wbGFjZWhvbGRlci1wYWRkaW5nLWxlZnQnLFxuICAgICAgICAgICAgYCR7dGhpcy5pbmxpbmVMYWJlbEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aH1weGBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaW5saW5lTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmxpbmU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgY3JlYXRlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgY3JlYXRlVGV4dDogc3RyaW5nID0gJ0NyZWF0ZSc7XG4gICAgQElucHV0KCkgZ3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZWxlY3RhYmxlR3JvdXA6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBvbmx5VGV4dDogc3RyaW5nID0gJ09ubHknO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0Li4uJztcbiAgICBASW5wdXQoKSBzZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZWxlY3RBbGxUZXh0OiBzdHJpbmcgPSAnU2VsZWN0IGFsbCc7XG4gICAgQElucHV0KCkgdW5zZWxlY3RBbGxUZXh0OiBzdHJpbmcgPSAnVW5zZWxlY3QgYWxsJztcbiAgICBASW5wdXQoKSBzZWFyY2hhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWFyY2guLi4nO1xuICAgIEBJbnB1dCgpIHNlYXJjaEZuOiAodGVybTogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPFRbXT4gPSB0aGlzLmRlZmF1bHRTZWFyY2hGbjtcbiAgICBASW5wdXQoKSBub3RGb3VuZFRleHQ6IHN0cmluZyA9ICdObyByZXN1bHRzIGZvdW5kJztcbiAgICBASW5wdXQoKSBsb2FkaW5nVGV4dDogc3RyaW5nID0gJ0xvYWRpbmcgaXRlbXMnO1xuICAgIEBJbnB1dCgpIHNldCBkaXNwbGF5VHlwZShkaXNwbGF5VHlwZTogRGlzcGxheVR5cGUpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5VHlwZVNpZ25hbC5zZXQoZGlzcGxheVR5cGUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9wdGlvbkNhcHRpb24/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uRGl2aWRlcj86IHN0cmluZyA9ICdkaXZpZGVyJztcbiAgICBASW5wdXQoKSBvcHRpb25Qcm9maWxlSW1hZ2VVcmw/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uQmFkZ2VMYWJlbD86IHN0cmluZztcbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBvcHRpb25EaXNhYmxlZDogc3RyaW5nID0gJ2Rpc2FibGVkJztcbiAgICBASW5wdXQoKSBvcHRpb25Hcm91cExhYmVsOiBzdHJpbmcgPSAnZ3JvdXAnO1xuICAgIEBJbnB1dCgpIG9wdGlvbkdyb3VwVGFnPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBASW5wdXQoKSBzZXQgbWF4aW11bURpc3BsYXlPcHRpb25zKG1heGltdW1EaXNwbGF5T3B0aW9uczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubWF4aW11bURpc3BsYXlWYWx1ZXNTaWduYWwuc2V0KG1heGltdW1EaXNwbGF5T3B0aW9ucyk7XG4gICAgfVxuICAgIEBJbnB1dCgpIGN1c3RvbU9wdGlvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBvcHRpb246IFQgfT47XG4gICAgQElucHV0KCkgY3VzdG9tTGFiZWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgb3B0aW9uOiBUIH0+O1xuICAgIEBJbnB1dCgpIGN1c3RvbU11bHRpTGFiZWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgb3B0aW9uczogVFtdIH0+O1xuICAgIEBJbnB1dCgpIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBzdWNjZXNzTWVzc2FnZT86IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGNvbXBhcmVXaXRoITogKGE6IGFueSwgYjogYW55KSA9PiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIGNyZWF0ZU5ldzogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlcyA9IG5ldyBFdmVudEVtaXR0ZXI8dW5rbm93bltdPigpO1xuXG4gICAgcHJpdmF0ZSBfY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiE6ICh2YWx1ZTogdW5rbm93bltdKSA9PiB2b2lkO1xuICAgIG9uVG91Y2hlZCE6ICgpID0+IHZvaWQ7XG4gICAgZGlzcGxheVR5cGVTaWduYWwgPSBzaWduYWw8RGlzcGxheVR5cGU+KCd0ZXh0Jyk7XG5cbiAgICBlbmFibGVkT3B0aW9ucyA9IGNvbXB1dGVkPFRbXT4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zU2lnbmFsKCkuZmlsdGVyKCh2YWx1ZTogVCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkRpc2FibGVkICYmICF2YWx1ZVt0aGlzLm9wdGlvbkRpc2FibGVkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdGVtSG92ZXJlZFNpZ25hbCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgICBmaWx0ZXJlZE9wdGlvbnNTaWduYWwgPSBzaWduYWw8VFtdPihbXSk7XG4gICAgbG9hZGluZ1NpZ25hbCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gICAgc2VsZWN0ZWRWYWx1ZXNTaWduYWwgPSBzaWduYWw8dW5rbm93bltdPihbXSk7XG4gICAgc2VhcmNoVGVybVNpZ25hbCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgICBzZWFyY2hUZXJtJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnNlYXJjaFRlcm1TaWduYWwpO1xuICAgIG1heGltdW1EaXNwbGF5VmFsdWVzU2lnbmFsID0gc2lnbmFsPG51bWJlcj4oLTEpO1xuICAgIGhpZGRlbkNvdW50U2lnbmFsID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgICBhbGxTZWxlY3RlZFNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwoKS5sZW5ndGggPT09IHRoaXMuZW5hYmxlZE9wdGlvbnMoKS5sZW5ndGg7XG4gICAgfSk7XG4gICAgcGFydGlhbHlTZWxlY3RlZFNpZ25hbCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwoKS5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwoKS5sZW5ndGggPCB0aGlzLmVuYWJsZWRPcHRpb25zKCkubGVuZ3RoO1xuICAgIH0pO1xuXG4gICAgcHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChFbnZpcm9ubWVudEluamVjdG9yKTtcbiAgICBwcml2YXRlIHNlbGVjdFZhbHVlQ29udGFpbmVyITogSFRNTEVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBzZWxlY3RWYWx1ZUNvbnRhaW5lcldpZHRoU2lnbmFsID0gc2lnbmFsKDApO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc3ltYm9sUmVnaXN0cnkucmVnaXN0ZXJTeW1ib2xzKFthcENoZWNrMiwgYXBBbGVydENpcmNsZSwgYXBDaGVja0NpcmNsZSwgYXBTZWFyY2hBbHRlcm5hdGUsIGFwQWRkMjAyMiwgYXBEZWxldGVOb0NpcmNsZV0pO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUoc2VsZWN0ZWRWYWx1ZXM6IHVua25vd25bXSA9IFtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwuc2V0KHNlbGVjdGVkVmFsdWVzKTtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHVua25vd25bXSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlICYmICghdGhpcy5kaXNwbGF5VHlwZVNpZ25hbCgpIHx8IHRoaXMuZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3RleHQnKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdEaXNwbGF5IHR5cGUgXCJ0ZXh0XCIgaXMgbm90IHN1cHBvcnRlZCBmb3IgbXVsdGlwbGUgc2VsZWN0LiBTd2l0Y2hpbmcgdG8gXCJsYWJlbFwiLicpO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VHlwZVNpZ25hbC5zZXQoJ2xhYmVsJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDI1MCksXG4gICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTaWduYWwuc2V0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNTaWduYWwuc2V0KFtdKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoKHRlcm06IHN0cmluZykgPT4gdGhpcy5zZWFyY2hGbih0ZXJtKSksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2lnbmFsLnNldChmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG9wdGlvbnM6IFRbXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1NpZ25hbC5zZXQob3B0aW9ucyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlubGluZUxhYmVsRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAgICAgJy0tcGxhY2Vob2xkZXItcGFkZGluZy1sZWZ0JyxcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmlubGluZUxhYmVsRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRofXB4YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdFZhbHVlQ29udGFpbmVyID0gdGhpcy5zZWxlY3QuZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCduZy12YWx1ZS1jb250YWluZXInKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgyMDApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RWYWx1ZUNvbnRhaW5lcldpZHRoU2lnbmFsKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RWYWx1ZUNvbnRhaW5lcldpZHRoU2lnbmFsKCk7XG4gICAgICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLmluamVjdG9yLCAoKSA9PiB7XG4gICAgICAgICAgICBlZmZlY3QoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RWYWx1ZUNvbnRhaW5lcldpZHRoU2lnbmFsID0gdGhpcy5zZWxlY3RWYWx1ZUNvbnRhaW5lcldpZHRoU2lnbmFsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxjdWxhdGVSZXNwb25zaXZlTGFiZWxzKHNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGhTaWduYWwsIHNlbGVjdGVkVmFsdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblNlYXJjaFRlcm1DaGFuZ2Uoc2VhcmNoVGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybVNpZ25hbC5zZXQoc2VhcmNoVGVybSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZWZhdWx0U2VhcmNoRm4odGVybTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICAgICAgcmV0dXJuIG9mKFxuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNTaWduYWwoKS5maWx0ZXIoKG9wdGlvbjogVCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uTGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhvcHRpb25bdGhpcy5vcHRpb25MYWJlbF0pLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNHcm91cEluZGV0ZXJtaW5hdGUoY2hpbGRyZW46IE5nT3B0aW9uW10pIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuLnNvbWUoKGNoaWxkOiBOZ09wdGlvbikgPT4gY2hpbGQuc2VsZWN0ZWQpICYmICF0aGlzLmlzR3JvdXBDaGVja2VkKGNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICBpc0dyb3VwRGlzYWJsZWQoY2hpbGRyZW46IE5nT3B0aW9uW10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuLmV2ZXJ5KChjaGlsZDogTmdPcHRpb24pID0+IGNoaWxkLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICBpc0dyb3VwQ2hlY2tlZChjaGlsZHJlbjogTmdPcHRpb25bXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4uZXZlcnkoKGNoaWxkOiBOZ09wdGlvbikgPT4gY2hpbGQuZGlzYWJsZWQgfHwgY2hpbGQuc2VsZWN0ZWQpICYmICF0aGlzLmlzR3JvdXBEaXNhYmxlZChjaGlsZHJlbik7XG4gICAgfVxuXG4gICAgb25TZWxlY3RPbmx5KGl0ZW06IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC5zZXQoW2l0ZW1dKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uVmFsdWUgPyB0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsLnNldChbaXRlbVt0aGlzLm9wdGlvblZhbHVlXV0pIDogdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC5zZXQoW2l0ZW1dKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNhbGxDb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKCk7XG4gICAgfVxuXG4gICAgb25TZWxlY3RPcGVuZWQoKTogdm9pZCB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMub25Ub3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaGFibGUgJiYgISF0aGlzLnNlYXJjaEZuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5mb2N1c0lucHV0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uSG92ZXJJdGVtKGh0bWxpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pdGVtSG92ZXJlZFNpZ25hbC5zZXQoaHRtbGlkKTtcbiAgICB9XG5cbiAgICBvbkxlYXZlSXRlbSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLml0ZW1Ib3ZlcmVkU2lnbmFsLnNldChudWxsKTtcbiAgICB9XG5cbiAgICBvblRvZ2dsZUFsbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucGFydGlhbHlTZWxlY3RlZFNpZ25hbCgpIHx8IHRoaXMuYWxsU2VsZWN0ZWRTaWduYWwoKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC5zZXQoW10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC5zZXQoXG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVkT3B0aW9ucygpLm1hcCgodmFsdWU6IFQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25WYWx1ZSA/IHZhbHVlW3RoaXMub3B0aW9uVmFsdWVdIDogdmFsdWU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYWxsQ29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbigpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0ZWRWYWx1ZXNDaGFuZ2Uoc2VsZWN0ZWRWYWx1ZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsLnNldChzZWxlY3RlZFZhbHVlcyk7XG4gICAgICAgIHRoaXMuY2FsbENvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4oKTtcbiAgICB9XG5cbiAgICBvbk9wZW5TZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0Lm9wZW4oKTtcbiAgICB9XG5cbiAgICBvbklubGluZUlucHV0RW50ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG92ZXJlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25JbmxpbmVJbnB1dExlYXZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdmVyZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkNyZWF0ZU5ldygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jcmVhdGVOZXcuZW1pdCh0aGlzLnNlYXJjaFRlcm1TaWduYWwoKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlU2VsZWN0ZWRJdGVtKHsgJGV2ZW50IH06IHsgJGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50IH0sIGl0ZW06IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICAgJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbUlkID0gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbSA6IHRoaXMub3B0aW9uVmFsdWUgPyBpdGVtW3RoaXMub3B0aW9uVmFsdWVdIDogaXRlbTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC51cGRhdGUoKHNlbGVjdGVkVmFsdWVzOiB1bmtub3duW10pID0+XG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlcy5maWx0ZXIoKHNlbGVjdGVkVmFsdWU6IHVua25vd24pID0+IHNlbGVjdGVkVmFsdWUgIT09IHNlbGVjdGVkSXRlbUlkKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhbGxDb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxsQ29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbigpIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXMuZW1pdCh0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsKCkpO1xuICAgICAgICBpZiAodGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbikge1xuICAgICAgICAgICAgdGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbih0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RWYWx1ZUNvbnRhaW5lcldpZHRoU2lnbmFsKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RWYWx1ZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nUGxhY2VIb2xkZXJXaWR0aCA9IDEwMDtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGggPSB0aGlzLnNlbGVjdFZhbHVlQ29udGFpbmVyLmNsaWVudFdpZHRoIC0gcmVtYWluaW5nUGxhY2VIb2xkZXJXaWR0aDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbC5zZXQoc2VsZWN0VmFsdWVDb250YWluZXJXaWR0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVJlc3BvbnNpdmVMYWJlbHMoY29udGFpbmVyV2lkdGg6IG51bWJlciwgc2VsZWN0ZWRWYWx1ZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgICAgICBpZiAoIXNlbGVjdGVkVmFsdWVzIHx8IHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5oaWRkZW5Db3VudFNpZ25hbC5zZXQoMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbXNDb250YWluZXIgPSB0aGlzLnNlbGVjdFZhbHVlQ29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ211bHRpcGxlLWl0ZW0nKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLnNlbGVjdFZhbHVlQ29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2l0ZW0nKTtcbiAgICAgICAgbGV0IHRvdGFsV2lkdGggPSAwO1xuICAgICAgICBsZXQgaGlkZGVuQ291bnQgPSAwO1xuICAgICAgICBjb25zdCBpdGVtR2FwID0gNDtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1XaWR0aCA9IGl0ZW0uY2xpZW50V2lkdGggKyBpdGVtR2FwO1xuICAgICAgICAgICAgaWYgKHRvdGFsV2lkdGggKyBpdGVtV2lkdGggPCBjb250YWluZXJXaWR0aCAmJiAhaGlkZGVuQ291bnQpIHtcbiAgICAgICAgICAgICAgICB0b3RhbFdpZHRoICs9IGl0ZW1XaWR0aDtcbiAgICAgICAgICAgICAgICAoaXRlbSBhcyBIVE1MRWxlbWVudCkuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgKGl0ZW0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgICAgICAgICBoaWRkZW5Db3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGl0ZW1zQ29udGFpbmVyLnN0eWxlLm1heFdpZHRoID0gYCR7dG90YWxXaWR0aH1weGA7XG4gICAgICAgIHRoaXMuaGlkZGVuQ291bnRTaWduYWwuc2V0KGhpZGRlbkNvdW50KTtcbiAgICB9XG59XG4iLCI8bGFiZWxcbiAgICAqbmdJZj1cImxhYmVsICYmICFpbmxpbmVMYWJlbFwiXG4gICAgW2Zvcl09XCJzZWxlY3RJZFwiPlxuICAgIDxzcGFuPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgICAqbmdJZj1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICAgIDwvc3Bhbj5cbjwvbGFiZWw+XG5cbjxkaXZcbiAgICAqbmdJZj1cImlubGluZUxhYmVsXCJcbiAgICAjaW5saW5lTGFiZWxcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIGNsYXNzPVwiaW5saW5lLWxhYmVsXCJcbiAgICAoY2xpY2spPVwib25PcGVuU2VsZWN0KClcIlxuICAgIChrZXlkb3duLmVudGVyKT1cIm9uT3BlblNlbGVjdCgpXCJcbiAgICAobW91c2VlbnRlcik9XCJvbklubGluZUlucHV0RW50ZXIoKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwib25JbmxpbmVJbnB1dExlYXZlKClcIj5cbiAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJsYWJlbCAmJiBpbmxpbmVMYWJlbFwiXG4gICAgICAgIGNsYXNzPVwibGFiZWxcIlxuICAgICAgICBbZm9yXT1cInNlbGVjdElkXCI+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cbjwvZGl2PlxuXG48bmctc2VsZWN0XG4gICAgI3NlbGVjdFxuICAgIGNsYXNzPVwiYXAtc2VsZWN0LWxlZ2FjeVwiXG4gICAgW3RhYkluZGV4XT1cIjBcIlxuICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtsYWJlbEZvcklkXT1cInNlbGVjdElkXCJcbiAgICBbc2VhcmNoYWJsZV09XCJmYWxzZVwiXG4gICAgW2Nsb3NlT25TZWxlY3RdPVwiIW11bHRpcGxlXCJcbiAgICBbYmluZFZhbHVlXT1cIm9wdGlvblZhbHVlID8gb3B0aW9uVmFsdWUgOiAnJ1wiXG4gICAgW2dyb3VwQnldPVwiZ3JvdXAgPyBvcHRpb25Hcm91cExhYmVsIDogJydcIlxuICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbbWFya0ZpcnN0XT1cImZhbHNlXCJcbiAgICBbc2VsZWN0YWJsZUdyb3VwXT1cInNlbGVjdGFibGVHcm91cFwiXG4gICAgW3NlbGVjdGFibGVHcm91cEFzTW9kZWxdPVwiZmFsc2VcIlxuICAgIFthcHBlbmRUb109XCJhcHBlbmRUb1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5IHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5IHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQ/LnRvU3RyaW5nKClcIlxuICAgIFtpdGVtc109XCJvcHRpb25zU2lnbmFsKClcIlxuICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlV2l0aFwiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1NpZ25hbCgpXCJcbiAgICBbbmdNb2RlbF09XCJzZWxlY3RlZFZhbHVlc1NpZ25hbCgpXCJcbiAgICBbY2xhc3Mud2l0aC1lcnJvcl09XCJlcnJvck1lc3NhZ2VcIlxuICAgIFtjbGFzcy53aXRoLXN1Y2Nlc3NdPVwic3VjY2Vzc01lc3NhZ2VcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0ZWRWYWx1ZXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKG9wZW4pPVwib25TZWxlY3RPcGVuZWQoKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hhYmxlIHx8IHNlbGVjdEFsbFwiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGxldC1pdGVtPVwiaXRlbVwiXG4gICAgICAgICAgICBuZy1oZWFkZXItdG1wPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaGFibGVcIj5cbiAgICAgICAgICAgICAgICA8YXAtaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWFyY2gtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICBzeW1ib2xJZD1cInNlYXJjaC1hbHRlcm5hdGVcIlxuICAgICAgICAgICAgICAgICAgICBzeW1ib2xQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoVGVybVNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hUZXJtQ2hhbmdlKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0QWxsXCI+XG4gICAgICAgICAgICAgICAgPGFwLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJvcHRpb24tZ3JvdXAtc2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInBhcnRpYWx5U2VsZWN0ZWRTaWduYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbFNlbGVjdGVkU2lnbmFsKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVBbGwoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHBhcnRpYWx5U2VsZWN0ZWRTaWduYWwoKSB8fCBhbGxTZWxlY3RlZFNpZ25hbCgpID8gdW5zZWxlY3RBbGxUZXh0IDogc2VsZWN0QWxsVGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9hcC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBsZXQtaXRlbT1cIml0ZW1cIlxuICAgICAgICBsZXQtaXRlbSQ9XCJpdGVtJFwiXG4gICAgICAgIG5nLW9wdGdyb3VwLXRtcD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJncm91cFwiXG4gICAgICAgICAgICBbY2xhc3Mud2l0aC1zZWFyY2hdPVwic2VhcmNoYWJsZVwiXG4gICAgICAgICAgICBbY2xhc3Mud2l0aC1zZWxlY3QtYWxsXT1cInNlbGVjdEFsbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25Hcm91cExhYmVsXSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YXAtYmFkZ2VcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25Hcm91cFRhZyAmJiBvcHRpb25Hcm91cFRhZ1tpdGVtW29wdGlvbkdyb3VwTGFiZWxdXVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb25Hcm91cFRhZ1tpdGVtW29wdGlvbkdyb3VwTGFiZWxdXSB9fVxuICAgICAgICAgICAgICAgIDwvYXAtYmFkZ2U+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgIDxhcC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGFibGVHcm91cFwiXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidvcHRpb24tZ3JvdXAtc2VsZWN0aW9uLScgKyBpdGVtWydncm91cCddXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNHcm91cEluZGV0ZXJtaW5hdGUoaXRlbSQuY2hpbGRyZW4pXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNHcm91cENoZWNrZWQoaXRlbSQuY2hpbGRyZW4pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uR3JvdXBMYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YXAtYmFkZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uR3JvdXBUYWcgJiYgb3B0aW9uR3JvdXBUYWdbaXRlbVtvcHRpb25Hcm91cExhYmVsXV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJibHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb25Hcm91cFRhZ1tpdGVtW29wdGlvbkdyb3VwTGFiZWxdXSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2FwLWJhZGdlPlxuICAgICAgICAgICAgICAgIDwvYXAtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2VsZWN0YWJsZUdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkdyb3VwTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGxldC1pdGVtcz1cIml0ZW1zXCJcbiAgICAgICAgbGV0LWl0ZW0kPVwiaXRlbSRcIlxuICAgICAgICBuZy1tdWx0aS1sYWJlbC10bXA+XG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlwbGUtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tTXVsdGlMYWJlbFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcgfHwgIWRpc3BsYXlUeXBlU2lnbmFsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbSB0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bb3B0aW9uTGFiZWxdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICdsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92YWJsZT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiaXRlbVtvcHRpb25MYWJlbF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50LCBpdGVtKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0YWcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC10YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbSB0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xlYXIpPVwicmVtb3ZlU2VsZWN0ZWRJdGVtKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvblByb2ZpbGVJbWFnZVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZmlsZVBpY3R1cmVdPVwiaXRlbVtvcHRpb25Qcm9maWxlSW1hZ2VVcmxdID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlcm5hbWVdPVwib3B0aW9uTGFiZWwgJiYgaXRlbVtvcHRpb25MYWJlbF0gPyBpdGVtW29wdGlvbkxhYmVsXSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25MYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcC10YWc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd3aXRoQXZhdGFyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSB3aXRoLWF2YXRhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uUHJvZmlsZUltYWdlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VybmFtZV09XCJvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXSA/IGl0ZW1bb3B0aW9uTGFiZWxdIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SW5pdGlhbHNdPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVtvcHRpb25MYWJlbF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvcHRpb25MYWJlbCB8fCAhaXRlbVtvcHRpb25MYWJlbF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3RleHQnIHx8ICFkaXNwbGF5VHlwZVNpZ25hbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0gdGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmUpPVwicmVtb3ZlU2VsZWN0ZWRJdGVtKCRldmVudCwgaXRlbSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGFnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0gdGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXAtdGFnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnd2l0aEF2YXRhcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gd2l0aC1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvblByb2ZpbGVJbWFnZVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZmlsZVBpY3R1cmVdPVwiaXRlbVtvcHRpb25Qcm9maWxlSW1hZ2VVcmxdID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlcm5hbWVdPVwib3B0aW9uTGFiZWwgJiYgaXRlbVtvcHRpb25MYWJlbF0gPyBpdGVtW29wdGlvbkxhYmVsXSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21NdWx0aUxhYmVsVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbU11bHRpTGFiZWxUZW1wbGF0ZTsgY29udGV4dDogeyBvcHRpb25zOiBpdGVtcyB9XCIgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaGlkZGVuQ291bnRTaWduYWwoKSA+IDBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicmVtYWluaW5nXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0ZXh0JyB8fCBkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnd2l0aEF2YXRhcicgfHwgIWRpc3BsYXlUeXBlU2lnbmFsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWl0ZW1cIj4re3sgaGlkZGVuQ291bnRTaWduYWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3RhZydcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwLXRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICt7eyBoaWRkZW5Db3VudFNpZ25hbCgpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYXAtdGFnPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcC1sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJibHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiJysnICsgaGlkZGVuQ291bnRTaWduYWwoKVwiIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbmctbG9hZGluZ3RleHQtdG1wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1zdGF0ZVwiPlxuICAgICAgICAgICAgPGFwLWxvYWRlciBkaWFtZXRlcj1cIjMwXCIgLz5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgIHt7IGxvYWRpbmdUZXh0IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIG5nLWxvYWRpbmdzcGlubmVyLXRtcD48L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcmVhdGVcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIG5nLWZvb3Rlci10bXA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjcmVhdGUtbmV3XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DcmVhdGVOZXcoKVwiPlxuICAgICAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICAgICAgc3ltYm9sSWQ9XCJhZGQtMjAyMlwiXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJtaWNyb1wiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHt7IGNyZWF0ZVRleHQgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaFRlcm1TaWduYWwoKVwiPlwie3sgc2VhcmNoVGVybVNpZ25hbCgpIH19XCI8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBsZXQtaXRlbT1cIml0ZW1cIlxuICAgICAgICBsZXQtaXRlbSQ9XCJpdGVtJFwiXG4gICAgICAgIG5nLW9wdGlvbi10bXA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiKCFvcHRpb25MYWJlbCB8fCAhaXRlbVtvcHRpb25MYWJlbF0pICYmIGl0ZW0gJiYgKCFvcHRpb25EaXZpZGVyIHx8ICFpdGVtW29wdGlvbkRpdmlkZXJdKSAmJiAhY3VzdG9tT3B0aW9uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbSQuc2VsZWN0ZWQgJiYgIW11bHRpcGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiY2hlY2stMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImVsZWN0cmljLWJsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1pY3JvXCIgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXSkgfHwgY3VzdG9tT3B0aW9uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLndpdGgtY2FwdGlvbl09XCJvcHRpb25DYXB0aW9uICYmIGl0ZW1bb3B0aW9uQ2FwdGlvbl1cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Ib3Zlckl0ZW0oaXRlbSQuaHRtbElkKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25MZWF2ZUl0ZW0oKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SXRlbTsgY29udGV4dDogeyBpdGVtOiBpdGVtLCBpdGVtJDogaXRlbSQgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25EaXZpZGVyICYmIGl0ZW1bb3B0aW9uRGl2aWRlcl1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGxldC1pdGVtPVwiaXRlbVwiXG4gICAgICAgIG5nLWxhYmVsLXRtcD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUxhYmVsVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21MYWJlbFRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbjogaXRlbSB9XCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhb3B0aW9uTGFiZWwgJiYgIWN1c3RvbUxhYmVsVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcgfHwgIWRpc3BsYXlUeXBlU2lnbmFsKClcIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgPGFwLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50LCBpdGVtKVwiIC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGFnJ1wiPlxuICAgICAgICAgICAgICAgIDxhcC10YWdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsZWFyKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L2FwLXRhZz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd3aXRoQXZhdGFyJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25MYWJlbCAmJiAhY3VzdG9tTGFiZWxUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0ZXh0JyB8fCAhZGlzcGxheVR5cGVTaWduYWwoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgIDxhcC1sYWJlbFxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiaXRlbVtvcHRpb25MYWJlbF1cIlxuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0YWcnXCI+XG4gICAgICAgICAgICAgICAgPGFwLXRhZ1xuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVtvcHRpb25MYWJlbF1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xlYXIpPVwicmVtb3ZlU2VsZWN0ZWRJdGVtKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25Qcm9maWxlSW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJuYW1lXT1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdID8gaXRlbVtvcHRpb25MYWJlbF0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgIDwvYXAtdGFnPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3dpdGhBdmF0YXInXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndpdGgtYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uUHJvZmlsZUltYWdlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcHJvZmlsZVBpY3R1cmVdPVwiaXRlbVtvcHRpb25Qcm9maWxlSW1hZ2VVcmxdID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VybmFtZV09XCJvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXSA/IGl0ZW1bb3B0aW9uTGFiZWxdIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dJbml0aWFsc109XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW29wdGlvbkxhYmVsXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25MYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIG5nLW5vdGZvdW5kLXRtcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvbiBub3QtZm91bmRcIj5cbiAgICAgICAgICAgIHt7IG5vdEZvdW5kVGV4dCB9fVxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy1zZWxlY3Q+XG5cbjxuZy10ZW1wbGF0ZVxuICAgICNjb250ZW50SXRlbVxuICAgIGxldC1pdGVtPVwiaXRlbVwiXG4gICAgbGV0LWl0ZW0kPVwiaXRlbSRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRpc2FibGVkLW9wYXF1ZVwiPjwvZGl2PlxuICAgICAgICA8YXAtY2hlY2tib3hcbiAgICAgICAgICAgICpuZ0lmPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbSQuc2VsZWN0ZWRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0kLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIidvcHRpb24tc2VsZWN0aW9uLScgKyBpdGVtJC5odG1sSWRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXh0SXRlbTsgY29udGV4dDogeyBpdGVtOiBpdGVtLCBpdGVtJDogaXRlbSQgfVwiIC8+XG4gICAgICAgIDwvYXAtY2hlY2tib3g+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtdWx0aXBsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzYWJsZWQtb3BhcXVlXCI+PC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZXh0SXRlbTsgY29udGV4dDogeyBpdGVtOiBpdGVtLCBpdGVtJDogaXRlbSQgfVwiIC8+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGVcbiAgICAjdGV4dEl0ZW1cbiAgICBsZXQtaXRlbT1cIml0ZW1cIlxuICAgIGxldC1pdGVtJD1cIml0ZW0kXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjdXN0b21PcHRpb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvcHRpb25MYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uUHJvZmlsZUltYWdlVXJsXCI+XG4gICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICBbcHJvZmlsZVBpY3R1cmVdPVwiaXRlbVtvcHRpb25Qcm9maWxlSW1hZ2VVcmxdID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgW3VzZXJuYW1lXT1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdID8gaXRlbVtvcHRpb25MYWJlbF0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93SW5pdGlhbHNdPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0c1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlyc3QtbGluZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVtvcHRpb25MYWJlbF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbkJhZGdlTGFiZWwgJiYgaXRlbVtvcHRpb25CYWRnZUxhYmVsXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1iYWRnZSBjb2xvcj1cImJsdWVcIj57eyBpdGVtW29wdGlvbkJhZGdlTGFiZWxdIH19PC9hcC1iYWRnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbkNhcHRpb24gJiYgaXRlbVtvcHRpb25DYXB0aW9uXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW29wdGlvbkNhcHRpb25dXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25DYXB0aW9uXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbU9wdGlvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tT3B0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uOiBpdGVtIH1cIiAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9ubHkgJiYgIWl0ZW0kLmRpc2FibGVkICYmIGl0ZW1Ib3ZlcmVkU2lnbmFsKCkgPT09IGl0ZW0kLmh0bWxJZCAmJiBtdWx0aXBsZVwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RhbmRhbG9uZS1saW5rXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RPbmx5KGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAge3sgb25seVRleHQgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0kLnNlbGVjdGVkICYmICFtdWx0aXBsZVwiPlxuICAgICAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiY2hlY2stMlwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJlbGVjdHJpYy1ibHVlXCJcbiAgICAgICAgICAgICAgICBzaXplPVwibWljcm9cIiAvPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXZcbiAgICAqbmdJZj1cImVycm9yTWVzc2FnZVwiXG4gICAgY2xhc3M9XCJmb3JtLW1lc3NhZ2UgZXJyb3JcIj5cbiAgICA8YXAtc3ltYm9sXG4gICAgICAgIHN5bWJvbElkPVwiYWxlcnQtY2lyY2xlXCJcbiAgICAgICAgc2l6ZT1cIm1pY3JvXCIgLz5cbiAgICA8c3Bhbj5cbiAgICAgICAge3sgZXJyb3JNZXNzYWdlIH19XG4gICAgPC9zcGFuPlxuPC9kaXY+XG5cbjxkaXZcbiAgICAqbmdJZj1cInN1Y2Nlc3NNZXNzYWdlXCJcbiAgICBjbGFzcz1cImZvcm0tbWVzc2FnZSBzdWNjZXNzXCI+XG4gICAgPGFwLXN5bWJvbFxuICAgICAgICBzeW1ib2xJZD1cImNoZWNrLWNpcmNsZVwiXG4gICAgICAgIHNpemU9XCJtaWNyb1wiIC8+XG4gICAgPHNwYW4+XG4gICAgICAgIHt7IHN1Y2Nlc3NNZXNzYWdlIH19XG4gICAgPC9zcGFuPlxuPC9kaXY+XG4iXX0=