keevo-components 2.0.105 → 2.0.107

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 (746) hide show
  1. package/ng-package.json +14 -0
  2. package/package.json +32 -42
  3. package/src/assets/.gitkeep +0 -0
  4. package/src/index.ts +1 -0
  5. package/src/lib/api/base-components/base-component-button.ts +29 -0
  6. package/src/lib/api/base-components/base-component-chart.ts +118 -0
  7. package/src/lib/api/base-components/base-component-crud-form.ts +377 -0
  8. package/src/lib/api/base-components/base-component-crud-list.ts +129 -0
  9. package/src/lib/api/base-components/base-component-crud.ts +92 -0
  10. package/src/lib/api/base-components/base-component-dropdown-external.ts +29 -0
  11. package/src/lib/api/base-components/base-component-dropdown-new.ts +112 -0
  12. package/src/lib/api/base-components/base-component-dropdown.ts +257 -0
  13. package/src/lib/api/base-components/base-component-input.ts +121 -0
  14. package/src/lib/api/base-components/base-component-multi-select.ts +187 -0
  15. package/src/lib/api/base-components/base-component-table.ts +366 -0
  16. package/src/lib/api/base-components/base-component.ts +47 -0
  17. package/src/lib/api/components/chart/chart.config.ts +15 -0
  18. package/src/lib/api/components/chart/chart.model.ts +12 -0
  19. package/src/lib/api/components/chart/orchart.config.ts +51 -0
  20. package/src/lib/api/components/chart/orchartnode.ts +44 -0
  21. package/src/lib/api/components/dropdown/filtro.combo.ts +4 -0
  22. package/{lib/api/components/step/step.model.d.ts → src/lib/api/components/step/step.model.ts} +15 -13
  23. package/src/lib/api/components/stepper/kv-stepperpanel.ts +10 -0
  24. package/src/lib/api/components/table/action-item.ts +13 -0
  25. package/src/lib/api/components/table/kv-menuitem.ts +198 -0
  26. package/src/lib/api/components/table/table-dropdown-control.ts +6 -0
  27. package/src/lib/api/components/table/table.config.column.ts +38 -0
  28. package/src/lib/api/components/table/table.config.ts +39 -0
  29. package/src/lib/api/components/table/table.paginate.ts +7 -0
  30. package/{lib/api/components/table/tabledit.config.d.ts → src/lib/api/components/table/tabledit.config.ts} +9 -8
  31. package/src/lib/api/components/table/tableedit.config.column.ts +12 -0
  32. package/src/lib/api/components/tree-table/tree-table-keys.ts +12 -0
  33. package/src/lib/api/components/tree-table/tree-table.config.ts +34 -0
  34. package/src/lib/api/directives/directives.module.ts +19 -0
  35. package/src/lib/api/directives/drag/drag.directive.ts +40 -0
  36. package/src/lib/api/directives/stepper/dynamicinput.directive.ts +23 -0
  37. package/src/lib/api/directives/template/template.directive.ts +15 -0
  38. package/src/lib/api/helpers/component-providers.ts +16 -0
  39. package/src/lib/api/helpers/keevo-validators.ts +174 -0
  40. package/src/lib/api/helpers/severity-color.ts +77 -0
  41. package/src/lib/api/helpers/translate-primeng.ts +25 -0
  42. package/src/lib/api/modules/primeng.module.ts +144 -0
  43. package/src/lib/api/pipes/capitalize.pipe.ts +47 -0
  44. package/src/lib/api/pipes/cpfcnpj.pipe.ts +21 -0
  45. package/src/lib/api/pipes/mask.pipe.ts +24 -0
  46. package/src/lib/api/pipes/pipes.module.ts +26 -0
  47. package/src/lib/api/pipes/telefone.pipe.ts +38 -0
  48. package/src/lib/api/services/base.api.service.ts +115 -0
  49. package/src/lib/api/services/breadcrumbs.service.ts +71 -0
  50. package/src/lib/api/services/chat.service.ts +39 -0
  51. package/src/lib/api/services/component.service.ts +44 -0
  52. package/src/lib/api/services/docs.service.ts +129 -0
  53. package/src/lib/api/services/form.service.ts +139 -0
  54. package/src/lib/api/services/image.cutter.service.ts +290 -0
  55. package/src/lib/api/services/imagens.service.ts +28 -0
  56. package/src/lib/api/services/notification.service.ts +88 -0
  57. package/src/lib/api/services/object.service.ts +33 -0
  58. package/src/lib/api/services/orgchart.service.ts +77 -0
  59. package/src/lib/api/services/pdf.service.ts +54 -0
  60. package/src/lib/api/types/breadcrumb.model.ts +5 -0
  61. package/src/lib/api/types/severity.ts +3 -0
  62. package/src/lib/api/types/stimulsoft.reports.d.ts +67463 -0
  63. package/src/lib/components/keevo-components-styles.scss +5 -0
  64. package/src/lib/components/keevo-components.module.ts +105 -0
  65. package/src/lib/components/kv-avatar/kv-avatar.component.html +75 -0
  66. package/src/lib/components/kv-avatar/kv-avatar.component.scss +162 -0
  67. package/src/lib/components/kv-avatar/kv-avatar.component.spec.ts +23 -0
  68. package/src/lib/components/kv-avatar/kv-avatar.component.ts +165 -0
  69. package/src/lib/components/kv-avatar/kv-avatar.module.ts +32 -0
  70. package/src/lib/components/kv-button/kv-button.component.html +26 -0
  71. package/src/lib/components/kv-button/kv-button.component.spec.ts +23 -0
  72. package/src/lib/components/kv-button/kv-button.component.ts +55 -0
  73. package/src/lib/components/kv-button/kv-button.module.ts +20 -0
  74. package/src/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.html +14 -0
  75. package/src/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.scss +6 -0
  76. package/src/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.ts +25 -0
  77. package/src/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.html +13 -0
  78. package/src/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.scss +33 -0
  79. package/src/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.ts +41 -0
  80. package/src/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.html +12 -0
  81. package/src/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.scss +18 -0
  82. package/src/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.ts +14 -0
  83. package/src/lib/components/kv-buttons/kv-button-success/kv-button-success.component.html +11 -0
  84. package/src/lib/components/kv-buttons/kv-button-success/kv-button-success.component.scss +17 -0
  85. package/src/lib/components/kv-buttons/kv-button-success/kv-button-success.component.ts +14 -0
  86. package/src/lib/components/kv-buttons/kv-button.module.ts +26 -0
  87. package/src/lib/components/kv-card-selection/kv-card-selection.component.html +63 -0
  88. package/src/lib/components/kv-card-selection/kv-card-selection.component.scss +54 -0
  89. package/src/lib/components/kv-card-selection/kv-card-selection.component.spec.ts +23 -0
  90. package/src/lib/components/kv-card-selection/kv-card-selection.component.ts +73 -0
  91. package/src/lib/components/kv-card-selection/kv-card-selection.module.ts +19 -0
  92. package/src/lib/components/kv-carousel/kv-carousel.component.html +26 -0
  93. package/src/lib/components/kv-carousel/kv-carousel.component.scss +47 -0
  94. package/src/lib/components/kv-carousel/kv-carousel.component.spec.ts +23 -0
  95. package/src/lib/components/kv-carousel/kv-carousel.component.ts +40 -0
  96. package/src/lib/components/kv-carousel/kv-carousel.module.ts +19 -0
  97. package/src/lib/components/kv-chart/kv-chart.component.html +38 -0
  98. package/src/lib/components/kv-chart/kv-chart.component.scss +0 -0
  99. package/src/lib/components/kv-chart/kv-chart.component.spec.ts +28 -0
  100. package/src/lib/components/kv-chart/kv-chart.component.ts +174 -0
  101. package/src/lib/components/kv-chart/kv-chart.module.ts +21 -0
  102. package/src/lib/components/kv-confirmation-modal/kv-confirmation-modal.component.html +9 -0
  103. package/src/lib/components/kv-confirmation-modal/kv-confirmation-modal.component.scss +7 -0
  104. package/src/lib/components/kv-confirmation-modal/kv-confirmation-modal.component.spec.ts +23 -0
  105. package/src/lib/components/kv-confirmation-modal/kv-confirmation-modal.component.ts +32 -0
  106. package/src/lib/components/kv-confirmation-modal/kv-confirmation-modal.module.ts +14 -0
  107. package/src/lib/components/kv-content-viewer/kv-content-viewer.component.html +229 -0
  108. package/src/lib/components/kv-content-viewer/kv-content-viewer.component.scss +185 -0
  109. package/src/lib/components/kv-content-viewer/kv-content-viewer.component.spec.ts +23 -0
  110. package/src/lib/components/kv-content-viewer/kv-content-viewer.component.ts +171 -0
  111. package/src/lib/components/kv-content-viewer/kv-content-viewer.module.ts +25 -0
  112. package/src/lib/components/kv-error/kv-error.component.html +3 -0
  113. package/src/lib/components/kv-error/kv-error.component.scss +5 -0
  114. package/src/lib/components/kv-error/kv-error.component.ts +27 -0
  115. package/src/lib/components/kv-error/kv-error.module.ts +26 -0
  116. package/src/lib/components/kv-file-upload/kv-file-upload.component.html +134 -0
  117. package/src/lib/components/kv-file-upload/kv-file-upload.component.scss +13 -0
  118. package/src/lib/components/kv-file-upload/kv-file-upload.component.spec.ts +23 -0
  119. package/src/lib/components/kv-file-upload/kv-file-upload.component.ts +200 -0
  120. package/src/lib/components/kv-file-upload/kv-file-upload.module.ts +13 -0
  121. package/src/lib/components/kv-file-viewer/kv-file-viewer.component.html +16 -0
  122. package/src/lib/components/kv-file-viewer/kv-file-viewer.component.scss +18 -0
  123. package/src/lib/components/kv-file-viewer/kv-file-viewer.component.ts +42 -0
  124. package/src/lib/components/kv-file-viewer/kv-file-viewer.module.ts +14 -0
  125. package/src/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.html +34 -0
  126. package/src/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.scss +17 -0
  127. package/src/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.ts +80 -0
  128. package/src/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.module.ts +15 -0
  129. package/src/lib/components/kv-file-viewer-preview/kv-file-viewer-preview.component.html +103 -0
  130. package/src/lib/components/kv-file-viewer-preview/kv-file-viewer-preview.component.scss +153 -0
  131. package/src/lib/components/kv-file-viewer-preview/kv-file-viewer-preview.component.spec.ts +23 -0
  132. package/src/lib/components/kv-file-viewer-preview/kv-file-viewer-preview.component.ts +73 -0
  133. package/src/lib/components/kv-file-viewer-preview/kv-file-viewer-preview.module.ts +18 -0
  134. package/src/lib/components/kv-filter-card/kv-filter-card.component.html +12 -0
  135. package/src/lib/components/kv-filter-card/kv-filter-card.component.scss +76 -0
  136. package/src/lib/components/kv-filter-card/kv-filter-card.component.spec.ts +23 -0
  137. package/src/lib/components/kv-filter-card/kv-filter-card.component.ts +18 -0
  138. package/src/lib/components/kv-filter-card/kv-filter-card.module.ts +23 -0
  139. package/src/lib/components/kv-filter-cards/kv-filter-cards.component.html +81 -0
  140. package/src/lib/components/kv-filter-cards/kv-filter-cards.component.scss +197 -0
  141. package/src/lib/components/kv-filter-cards/kv-filter-cards.component.ts +150 -0
  142. package/src/lib/components/kv-filter-cards/kv-filter-cards.module.ts +20 -0
  143. package/src/lib/components/kv-filter-cards/kv-filter-cards.pipe.ts +24 -0
  144. package/src/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.html +25 -0
  145. package/src/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.scss +22 -0
  146. package/src/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.spec.ts +23 -0
  147. package/src/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.ts +20 -0
  148. package/src/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.ts +20 -0
  149. package/src/lib/components/kv-g-icon/kv-g-icon.component.html +1 -0
  150. package/src/lib/components/kv-g-icon/kv-g-icon.component.scss +0 -0
  151. package/src/lib/components/kv-g-icon/kv-g-icon.component.spec.ts +23 -0
  152. package/src/lib/components/kv-g-icon/kv-g-icon.component.ts +10 -0
  153. package/src/lib/components/kv-g-icon/kv-g-icon.module.ts +11 -0
  154. package/src/lib/components/kv-home-card/kv-home-card.component.html +35 -0
  155. package/src/lib/components/kv-home-card/kv-home-card.component.scss +5 -0
  156. package/src/lib/components/kv-home-card/kv-home-card.component.spec.ts +23 -0
  157. package/src/lib/components/kv-home-card/kv-home-card.component.ts +33 -0
  158. package/src/lib/components/kv-home-card/kv-home-card.module.ts +18 -0
  159. package/src/lib/components/kv-icon/kv-icon.component.html +13 -0
  160. package/src/lib/components/kv-icon/kv-icon.component.scss +69 -0
  161. package/src/lib/components/kv-icon/kv-icon.component.spec.ts +28 -0
  162. package/src/lib/components/kv-icon/kv-icon.component.ts +30 -0
  163. package/src/lib/components/kv-icon/kv-icon.model.ts +3 -0
  164. package/src/lib/components/kv-icon/kv-icon.module.ts +16 -0
  165. package/src/lib/components/kv-image-upload/kv-image-upload.component.html +64 -0
  166. package/src/lib/components/kv-image-upload/kv-image-upload.component.scss +0 -0
  167. package/src/lib/components/kv-image-upload/kv-image-upload.component.ts +153 -0
  168. package/src/lib/components/kv-image-upload/kv-image-upload.module.ts +10 -0
  169. package/src/lib/components/kv-inputs/kv-check/kv-check.component.html +12 -0
  170. package/src/lib/components/kv-inputs/kv-check/kv-check.component.scss +38 -0
  171. package/src/lib/components/kv-inputs/kv-check/kv-check.component.ts +32 -0
  172. package/src/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.html +87 -0
  173. package/src/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.ts +119 -0
  174. package/src/lib/components/kv-inputs/kv-editor/components/kv-instrucoes-report/kv-instrucoes-report.component.html +13 -0
  175. package/src/lib/components/kv-inputs/kv-editor/components/kv-instrucoes-report/kv-instrucoes-report.component.scss +0 -0
  176. package/src/lib/components/kv-inputs/kv-editor/components/kv-instrucoes-report/kv-instrucoes-report.component.spec.ts +23 -0
  177. package/src/lib/components/kv-inputs/kv-editor/components/kv-instrucoes-report/kv-instrucoes-report.component.ts +16 -0
  178. package/src/lib/components/kv-inputs/kv-editor/components/kv-report-modal/kv-report-modal.component.html +18 -0
  179. package/src/lib/components/kv-inputs/kv-editor/components/kv-report-modal/kv-report-modal.component.scss +0 -0
  180. package/src/lib/components/kv-inputs/kv-editor/components/kv-report-modal/kv-report-modal.component.ts +41 -0
  181. package/src/lib/components/kv-inputs/kv-editor/config/kv-editor.config.ts +120 -0
  182. package/src/lib/components/kv-inputs/kv-editor/kv-editor.component.html +285 -0
  183. package/src/lib/components/kv-inputs/kv-editor/kv-editor.component.scss +182 -0
  184. package/src/lib/components/kv-inputs/kv-editor/kv-editor.component.ts +311 -0
  185. package/{lib/components/kv-inputs/kv-editor/kv-editor.d.ts → src/lib/components/kv-inputs/kv-editor/kv-editor.ts} +6 -6
  186. package/src/lib/components/kv-inputs/kv-editor/services/kv-editor-mention.service.ts +156 -0
  187. package/src/lib/components/kv-inputs/kv-editor/services/kv-editor-pdf.service.ts +190 -0
  188. package/src/lib/components/kv-inputs/kv-editor/services/kv-editor-quill.service.spec.ts +126 -0
  189. package/src/lib/components/kv-inputs/kv-editor/services/kv-editor-quill.service.ts +84 -0
  190. package/src/lib/components/kv-inputs/kv-editor/services/kv-editor-relatorio.service.spec.ts +176 -0
  191. package/src/lib/components/kv-inputs/kv-editor/services/kv-editor-relatorio.service.ts +101 -0
  192. package/src/lib/components/kv-inputs/kv-editor/types/kv-editor.types.ts +36 -0
  193. package/src/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.html +37 -0
  194. package/src/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.scss +23 -0
  195. package/src/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.ts +197 -0
  196. package/src/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.html +24 -0
  197. package/src/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.scss +0 -0
  198. package/src/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.ts +35 -0
  199. package/src/lib/components/kv-inputs/kv-input-number/kv-input-number.component.html +23 -0
  200. package/src/lib/components/kv-inputs/kv-input-number/kv-input-number.component.scss +0 -0
  201. package/src/lib/components/kv-inputs/kv-input-number/kv-input-number.component.ts +61 -0
  202. package/src/lib/components/kv-inputs/kv-input-number-addon/kv-input-number-addon.component.html +33 -0
  203. package/src/lib/components/kv-inputs/kv-input-number-addon/kv-input-number-addon.component.scss +5 -0
  204. package/src/lib/components/kv-inputs/kv-input-number-addon/kv-input-number-addon.component.ts +63 -0
  205. package/src/lib/components/kv-inputs/kv-input-password/kv-input-password.component.html +24 -0
  206. package/src/lib/components/kv-inputs/kv-input-password/kv-input-password.component.scss +0 -0
  207. package/src/lib/components/kv-inputs/kv-input-password/kv-input-password.component.ts +26 -0
  208. package/src/lib/components/kv-inputs/kv-input-text/kv-input-text.component.html +23 -0
  209. package/src/lib/components/kv-inputs/kv-input-text/kv-input-text.component.scss +18 -0
  210. package/src/lib/components/kv-inputs/kv-input-text/kv-input-text.component.ts +40 -0
  211. package/src/lib/components/kv-inputs/kv-input-text-addon/kv-input-text-addon.component.html +30 -0
  212. package/src/lib/components/kv-inputs/kv-input-text-addon/kv-input-text-addon.component.scss +26 -0
  213. package/src/lib/components/kv-inputs/kv-input-text-addon/kv-input-text-addon.component.ts +38 -0
  214. package/src/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.html +53 -0
  215. package/src/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.scss +41 -0
  216. package/src/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.spec.ts +23 -0
  217. package/src/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.ts +48 -0
  218. package/src/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.html +23 -0
  219. package/src/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.scss +0 -0
  220. package/src/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.ts +40 -0
  221. package/src/lib/components/kv-inputs/kv-input-time/kv-input-time.component.html +24 -0
  222. package/src/lib/components/kv-inputs/kv-input-time/kv-input-time.component.scss +0 -0
  223. package/src/lib/components/kv-inputs/kv-input-time/kv-input-time.component.ts +27 -0
  224. package/src/lib/components/kv-inputs/kv-inputs.module.ts +100 -0
  225. package/src/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.html +87 -0
  226. package/src/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.scss +62 -0
  227. package/src/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.ts +54 -0
  228. package/src/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.html +19 -0
  229. package/src/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.scss +22 -0
  230. package/src/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.ts +63 -0
  231. package/src/lib/components/kv-inputs/kv-select-button/kv-select-button.component.html +26 -0
  232. package/src/lib/components/kv-inputs/kv-select-button/kv-select-button.component.scss +5 -0
  233. package/src/lib/components/kv-inputs/kv-select-button/kv-select-button.component.spec.ts +21 -0
  234. package/src/lib/components/kv-inputs/kv-select-button/kv-select-button.component.ts +30 -0
  235. package/src/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.html +28 -0
  236. package/src/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.scss +61 -0
  237. package/src/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.spec.ts +23 -0
  238. package/src/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.ts +43 -0
  239. package/src/lib/components/kv-inputs/kv-switch/kv-switch.component.html +23 -0
  240. package/src/lib/components/kv-inputs/kv-switch/kv-switch.component.scss +35 -0
  241. package/src/lib/components/kv-inputs/kv-switch/kv-switch.component.ts +54 -0
  242. package/src/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.html +68 -0
  243. package/src/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.scss +86 -0
  244. package/src/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.ts +59 -0
  245. package/src/lib/components/kv-label/kv-label.component.html +3 -0
  246. package/src/lib/components/kv-label/kv-label.component.scss +15 -0
  247. package/src/lib/components/kv-label/kv-label.component.spec.ts +23 -0
  248. package/src/lib/components/kv-label/kv-label.component.ts +14 -0
  249. package/src/lib/components/kv-label/kv-label.module.ts +17 -0
  250. package/src/lib/components/kv-layout/dropdown-master/dropdown-master.component.html +25 -0
  251. package/src/lib/components/kv-layout/dropdown-master/dropdown-master.component.scss +19 -0
  252. package/src/lib/components/kv-layout/dropdown-master/dropdown-master.component.spec.ts +28 -0
  253. package/src/lib/components/kv-layout/dropdown-master/dropdown-master.component.ts +34 -0
  254. package/src/lib/components/kv-layout/kv-layout.module.ts +44 -0
  255. package/src/lib/components/kv-layout/layout/kv-layout.component.html +535 -0
  256. package/src/lib/components/kv-layout/layout/kv-layout.component.scss +267 -0
  257. package/src/lib/components/kv-layout/layout/kv-layout.component.spec.ts +23 -0
  258. package/src/lib/components/kv-layout/layout/kv-layout.component.ts +502 -0
  259. package/src/lib/components/kv-layout/top-icons/top-icons.component.html +26 -0
  260. package/src/lib/components/kv-layout/top-icons/top-icons.component.scss +71 -0
  261. package/src/lib/components/kv-layout/top-icons/top-icons.component.spec.ts +23 -0
  262. package/src/lib/components/kv-layout/top-icons/top-icons.component.ts +26 -0
  263. package/src/lib/components/kv-loader/kv-loader.component.html +1 -0
  264. package/src/lib/components/kv-loader/kv-loader.component.ts +11 -0
  265. package/src/lib/components/kv-loader/kv-loader.module.ts +17 -0
  266. package/src/lib/components/kv-loader/kv-loader.service.ts +29 -0
  267. package/src/lib/components/kv-login/kv-login.component.html +101 -0
  268. package/src/lib/components/kv-login/kv-login.component.scss +99 -0
  269. package/src/lib/components/kv-login/kv-login.component.spec.ts +23 -0
  270. package/src/lib/components/kv-login/kv-login.component.ts +97 -0
  271. package/src/lib/components/kv-login/kv-login.module.ts +33 -0
  272. package/src/lib/components/kv-modal/kv-modal.component.html +20 -0
  273. package/src/lib/components/kv-modal/kv-modal.component.scss +37 -0
  274. package/src/lib/components/kv-modal/kv-modal.component.spec.ts +21 -0
  275. package/src/lib/components/kv-modal/kv-modal.component.ts +111 -0
  276. package/src/lib/components/kv-modal/kv-modal.module.ts +12 -0
  277. package/src/lib/components/kv-orgchart/kv-orgchart.component.html +125 -0
  278. package/src/lib/components/kv-orgchart/kv-orgchart.component.scss +73 -0
  279. package/src/lib/components/kv-orgchart/kv-orgchart.component.ts +283 -0
  280. package/src/lib/components/kv-orgchart/kv-orgchart.module.ts +31 -0
  281. package/src/lib/components/kv-page-form/kv-page-form.component.html +91 -0
  282. package/src/lib/components/kv-page-form/kv-page-form.component.scss +100 -0
  283. package/src/lib/components/kv-page-form/kv-page-form.component.spec.ts +28 -0
  284. package/src/lib/components/kv-page-form/kv-page-form.component.ts +206 -0
  285. package/src/lib/components/kv-page-form/kv-page-form.module.ts +33 -0
  286. package/src/lib/components/kv-page-stepper/kv-page-stepper.component.html +276 -0
  287. package/src/lib/components/kv-page-stepper/kv-page-stepper.component.scss +85 -0
  288. package/src/lib/components/kv-page-stepper/kv-page-stepper.component.spec.ts +23 -0
  289. package/src/lib/components/kv-page-stepper/kv-page-stepper.component.ts +223 -0
  290. package/src/lib/components/kv-page-stepper/kv-page-stepper.module.ts +36 -0
  291. package/src/lib/components/kv-pick-list/kv-pick-list.component.html +32 -0
  292. package/src/lib/components/kv-pick-list/kv-pick-list.component.scss +57 -0
  293. package/src/lib/components/kv-pick-list/kv-pick-list.component.spec.ts +26 -0
  294. package/src/lib/components/kv-pick-list/kv-pick-list.component.ts +461 -0
  295. package/src/lib/components/kv-pick-list/kv-pick-list.module.ts +24 -0
  296. package/src/lib/components/kv-progress-bar/kv-progress-bar.component.html +38 -0
  297. package/src/lib/components/kv-progress-bar/kv-progress-bar.component.scss +128 -0
  298. package/src/lib/components/kv-progress-bar/kv-progress-bar.component.spec.ts +21 -0
  299. package/src/lib/components/kv-progress-bar/kv-progress-bar.component.ts +75 -0
  300. package/src/lib/components/kv-progress-bar/kv-progress-bar.module.ts +19 -0
  301. package/src/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.component.html +43 -0
  302. package/src/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.component.scss +130 -0
  303. package/src/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.component.spec.ts +23 -0
  304. package/src/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.component.ts +82 -0
  305. package/src/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.module.ts +18 -0
  306. package/src/lib/components/kv-report/kv-report.component.html +3 -0
  307. package/src/lib/components/kv-report/kv-report.component.scss +14 -0
  308. package/src/lib/components/kv-report/kv-report.component.spec.ts +28 -0
  309. package/src/lib/components/kv-report/kv-report.component.ts +44 -0
  310. package/src/lib/components/kv-report/kv-report.module.ts +18 -0
  311. package/src/lib/components/kv-stepper/kv-stepper.component.html +94 -0
  312. package/src/lib/components/kv-stepper/kv-stepper.component.scss +43 -0
  313. package/src/lib/components/kv-stepper/kv-stepper.component.spec.ts +23 -0
  314. package/src/lib/components/kv-stepper/kv-stepper.component.ts +73 -0
  315. package/src/lib/components/kv-stepper/kv-stepper.module.ts +27 -0
  316. package/src/lib/components/kv-steps/kv-steps.component.html +53 -0
  317. package/src/lib/components/kv-steps/kv-steps.component.scss +120 -0
  318. package/src/lib/components/kv-steps/kv-steps.component.ts +122 -0
  319. package/src/lib/components/kv-table/kv-table.component.html +655 -0
  320. package/src/lib/components/kv-table/kv-table.component.spec.ts +28 -0
  321. package/src/lib/components/kv-table/kv-table.component.ts +792 -0
  322. package/src/lib/components/kv-table/kv-table.module.ts +25 -0
  323. package/src/lib/components/kv-table-edit/kv-table-edit.component.html +913 -0
  324. package/src/lib/components/kv-table-edit/kv-table-edit.component.scss +829 -0
  325. package/src/lib/components/kv-table-edit/kv-table-edit.component.ts +425 -0
  326. package/src/lib/components/kv-table-edit/kv-table-edit.module.ts +31 -0
  327. package/src/lib/components/kv-table-expandable/kv-table-expandable.component.html +634 -0
  328. package/src/lib/components/kv-table-expandable/kv-table-expandable.component.scss +387 -0
  329. package/src/lib/components/kv-table-expandable/kv-table-expandable.component.ts +546 -0
  330. package/src/lib/components/kv-table-expandable/kv-table-expandable.module.ts +22 -0
  331. package/src/lib/components/kv-table-viewer/components/actions-lote-field/actions-lote-field.component.html +25 -0
  332. package/src/lib/components/kv-table-viewer/components/actions-lote-field/actions-lote-field.component.scss +0 -0
  333. package/src/lib/components/kv-table-viewer/components/actions-lote-field/actions-lote-field.component.spec.ts +23 -0
  334. package/src/lib/components/kv-table-viewer/components/actions-lote-field/actions-lote-field.component.ts +17 -0
  335. package/src/lib/components/kv-table-viewer/components/actions-row-menu/actions-row-menu.component.html +20 -0
  336. package/src/lib/components/kv-table-viewer/components/actions-row-menu/actions-row-menu.component.scss +0 -0
  337. package/src/lib/components/kv-table-viewer/components/actions-row-menu/actions-row-menu.component.spec.ts +23 -0
  338. package/src/lib/components/kv-table-viewer/components/actions-row-menu/actions-row-menu.component.ts +14 -0
  339. package/src/lib/components/kv-table-viewer/kv-table-viewer.component.html +164 -0
  340. package/src/lib/components/kv-table-viewer/kv-table-viewer.component.scss +80 -0
  341. package/src/lib/components/kv-table-viewer/kv-table-viewer.component.spec.ts +23 -0
  342. package/src/lib/components/kv-table-viewer/kv-table-viewer.component.ts +183 -0
  343. package/src/lib/components/kv-tag/kv-tag.component.html +3 -0
  344. package/src/lib/components/kv-tag/kv-tag.component.scss +65 -0
  345. package/src/lib/components/kv-tag/kv-tag.component.spec.ts +23 -0
  346. package/src/lib/components/kv-tag/kv-tag.component.ts +16 -0
  347. package/src/lib/components/kv-tag/kv-tag.module.ts +18 -0
  348. package/src/lib/components/kv-tags/kv-tags.component.html +19 -0
  349. package/src/lib/components/kv-tags/kv-tags.component.scss +28 -0
  350. package/src/lib/components/kv-tags/kv-tags.component.ts +64 -0
  351. package/src/lib/components/kv-tags/kv-tags.module.ts +18 -0
  352. package/src/lib/components/kv-timeline/kv-timeline.component.html +28 -0
  353. package/src/lib/components/kv-timeline/kv-timeline.component.scss +6 -0
  354. package/src/lib/components/kv-timeline/kv-timeline.component.spec.ts +23 -0
  355. package/src/lib/components/kv-timeline/kv-timeline.component.ts +77 -0
  356. package/src/lib/components/kv-tree-table/kv-tree-table.component.html +492 -0
  357. package/src/lib/components/kv-tree-table/kv-tree-table.component.scss +187 -0
  358. package/src/lib/components/kv-tree-table/kv-tree-table.component.spec.ts +21 -0
  359. package/src/lib/components/kv-tree-table/kv-tree-table.component.ts +355 -0
  360. package/src/lib/components/kv-tree-table/kv-tree-table.module.ts +23 -0
  361. package/src/lib/components/kv-tree-view/kv-tree-view.component.html +16 -0
  362. package/src/lib/components/kv-tree-view/kv-tree-view.component.scss +19 -0
  363. package/src/lib/components/kv-tree-view/kv-tree-view.component.spec.ts +23 -0
  364. package/src/lib/components/kv-tree-view/kv-tree-view.component.ts +73 -0
  365. package/src/lib/components/kv-tree-view/kv-tree-view.module.ts +19 -0
  366. package/src/lib/components/kv-widget-card/kv-widget-card.component.html +71 -0
  367. package/src/lib/components/kv-widget-card/kv-widget-card.component.scss +27 -0
  368. package/src/lib/components/kv-widget-card/kv-widget-card.component.spec.ts +28 -0
  369. package/src/lib/components/kv-widget-card/kv-widget-card.component.ts +107 -0
  370. package/src/lib/components/kv-widget-card/kv-widget-card.module.ts +20 -0
  371. package/src/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.html +22 -0
  372. package/src/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.scss +36 -0
  373. package/src/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.spec.ts +28 -0
  374. package/src/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.ts +41 -0
  375. package/src/lib/components/kv-workspace/kv-workspace.module.ts +45 -0
  376. package/src/lib/components/kv-workspace/logo/kv-workspace-logo.component.html +20 -0
  377. package/src/lib/components/kv-workspace/logo/kv-workspace-logo.component.scss +0 -0
  378. package/src/lib/components/kv-workspace/logo/kv-workspace-logo.component.spec.ts +28 -0
  379. package/src/lib/components/kv-workspace/logo/kv-workspace-logo.component.ts +18 -0
  380. package/src/lib/components/kv-workspace/master/kv-workspace-master.component.html +35 -0
  381. package/src/lib/components/kv-workspace/master/kv-workspace-master.component.scss +29 -0
  382. package/src/lib/components/kv-workspace/master/kv-workspace-master.component.spec.ts +28 -0
  383. package/src/lib/components/kv-workspace/master/kv-workspace-master.component.ts +98 -0
  384. package/src/lib/components/kv-workspace/workspace/kv-workspace.component.html +63 -0
  385. package/src/lib/components/kv-workspace/workspace/kv-workspace.component.scss +62 -0
  386. package/src/lib/components/kv-workspace/workspace/kv-workspace.component.ts +91 -0
  387. package/{public-api.d.ts → src/public-api.ts} +361 -288
  388. package/tsconfig.lib.json +14 -0
  389. package/tsconfig.lib.prod.json +10 -0
  390. package/tsconfig.spec.json +14 -0
  391. package/esm2022/keevo-components.mjs +0 -5
  392. package/esm2022/lib/api/base-components/base-component-button.mjs +0 -39
  393. package/esm2022/lib/api/base-components/base-component-chart.mjs +0 -104
  394. package/esm2022/lib/api/base-components/base-component-crud-form.mjs +0 -308
  395. package/esm2022/lib/api/base-components/base-component-crud-list.mjs +0 -91
  396. package/esm2022/lib/api/base-components/base-component-crud.mjs +0 -80
  397. package/esm2022/lib/api/base-components/base-component-dropdown-external.mjs +0 -31
  398. package/esm2022/lib/api/base-components/base-component-dropdown.mjs +0 -238
  399. package/esm2022/lib/api/base-components/base-component-input.mjs +0 -101
  400. package/esm2022/lib/api/base-components/base-component-multi-select.mjs +0 -174
  401. package/esm2022/lib/api/base-components/base-component-table.mjs +0 -354
  402. package/esm2022/lib/api/base-components/base-component.mjs +0 -51
  403. package/esm2022/lib/api/components/chart/chart.config.mjs +0 -2
  404. package/esm2022/lib/api/components/chart/chart.model.mjs +0 -2
  405. package/esm2022/lib/api/components/chart/orchart.config.mjs +0 -2
  406. package/esm2022/lib/api/components/chart/orchartnode.mjs +0 -2
  407. package/esm2022/lib/api/components/dropdown/filtro.combo.mjs +0 -2
  408. package/esm2022/lib/api/components/step/step.model.mjs +0 -2
  409. package/esm2022/lib/api/components/stepper/kv-stepperpanel.mjs +0 -2
  410. package/esm2022/lib/api/components/table/action-item.mjs +0 -2
  411. package/esm2022/lib/api/components/table/kv-menuitem.mjs +0 -46
  412. package/esm2022/lib/api/components/table/table-dropdown-control.mjs +0 -2
  413. package/esm2022/lib/api/components/table/table.config.column.mjs +0 -2
  414. package/esm2022/lib/api/components/table/table.config.mjs +0 -2
  415. package/esm2022/lib/api/components/table/table.paginate.mjs +0 -10
  416. package/esm2022/lib/api/components/table/tabledit.config.mjs +0 -2
  417. package/esm2022/lib/api/components/table/tableedit.config.column.mjs +0 -2
  418. package/esm2022/lib/api/components/tree-table/tree-table-keys.mjs +0 -2
  419. package/esm2022/lib/api/components/tree-table/tree-table.config.mjs +0 -3
  420. package/esm2022/lib/api/directives/directives.module.mjs +0 -30
  421. package/esm2022/lib/api/directives/drag/drag.directive.mjs +0 -52
  422. package/esm2022/lib/api/directives/stepper/dynamicinput.directive.mjs +0 -31
  423. package/esm2022/lib/api/directives/template/template.directive.mjs +0 -24
  424. package/esm2022/lib/api/helpers/component-providers.mjs +0 -16
  425. package/esm2022/lib/api/helpers/keevo-validators.mjs +0 -144
  426. package/esm2022/lib/api/helpers/translate-primeng.mjs +0 -23
  427. package/esm2022/lib/api/modules/primeng.module.mjs +0 -283
  428. package/esm2022/lib/api/pipes/capitalize.pipe.mjs +0 -47
  429. package/esm2022/lib/api/pipes/cpfcnpj.pipe.mjs +0 -25
  430. package/esm2022/lib/api/pipes/mask.pipe.mjs +0 -29
  431. package/esm2022/lib/api/pipes/pipes.module.mjs +0 -39
  432. package/esm2022/lib/api/pipes/telefone.pipe.mjs +0 -45
  433. package/esm2022/lib/api/services/base.api.service.mjs +0 -74
  434. package/esm2022/lib/api/services/breadcrumbs.service.mjs +0 -62
  435. package/esm2022/lib/api/services/chat.service.mjs +0 -37
  436. package/esm2022/lib/api/services/component.service.mjs +0 -37
  437. package/esm2022/lib/api/services/docs.service.mjs +0 -129
  438. package/esm2022/lib/api/services/form.service.mjs +0 -95
  439. package/esm2022/lib/api/services/image.cutter.service.mjs +0 -193
  440. package/esm2022/lib/api/services/imagens.service.mjs +0 -28
  441. package/esm2022/lib/api/services/notification.service.mjs +0 -69
  442. package/esm2022/lib/api/services/object.service.mjs +0 -39
  443. package/esm2022/lib/api/services/orgchart.service.mjs +0 -64
  444. package/esm2022/lib/api/services/pdf.service.mjs +0 -48
  445. package/esm2022/lib/api/types/breadcrumb.model.mjs +0 -2
  446. package/esm2022/lib/components/keevo-components.module.mjs +0 -232
  447. package/esm2022/lib/components/kv-avatar/kv-avatar.component.mjs +0 -142
  448. package/esm2022/lib/components/kv-avatar/kv-avatar.module.mjs +0 -55
  449. package/esm2022/lib/components/kv-button/kv-button.component.mjs +0 -51
  450. package/esm2022/lib/components/kv-button/kv-button.module.mjs +0 -28
  451. package/esm2022/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.mjs +0 -25
  452. package/esm2022/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.mjs +0 -39
  453. package/esm2022/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.mjs +0 -17
  454. package/esm2022/lib/components/kv-buttons/kv-button-success/kv-button-success.component.mjs +0 -17
  455. package/esm2022/lib/components/kv-buttons/kv-button.module.mjs +0 -39
  456. package/esm2022/lib/components/kv-card-selection/kv-card-selection.component.mjs +0 -60
  457. package/esm2022/lib/components/kv-card-selection/kv-card-selection.module.mjs +0 -31
  458. package/esm2022/lib/components/kv-carousel/kv-carousel.component.mjs +0 -34
  459. package/esm2022/lib/components/kv-carousel/kv-carousel.module.mjs +0 -28
  460. package/esm2022/lib/components/kv-chart/kv-chart.component.mjs +0 -166
  461. package/esm2022/lib/components/kv-chart/kv-chart.module.mjs +0 -32
  462. package/esm2022/lib/components/kv-confirmation-modal/kv-confirmation-modal.component.mjs +0 -32
  463. package/esm2022/lib/components/kv-confirmation-modal/kv-confirmation-modal.module.mjs +0 -22
  464. package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.component.mjs +0 -185
  465. package/esm2022/lib/components/kv-content-viewer/kv-content-viewer.module.mjs +0 -44
  466. package/esm2022/lib/components/kv-error/kv-error.component.mjs +0 -26
  467. package/esm2022/lib/components/kv-error/kv-error.module.mjs +0 -35
  468. package/esm2022/lib/components/kv-file-upload/kv-file-upload.component.mjs +0 -191
  469. package/esm2022/lib/components/kv-file-upload/kv-file-upload.module.mjs +0 -23
  470. package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.component.mjs +0 -46
  471. package/esm2022/lib/components/kv-file-viewer/kv-file-viewer.module.mjs +0 -20
  472. package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.mjs +0 -68
  473. package/esm2022/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.module.mjs +0 -24
  474. package/esm2022/lib/components/kv-filter-card/kv-filter-card.component.mjs +0 -29
  475. package/esm2022/lib/components/kv-filter-card/kv-filter-card.module.mjs +0 -34
  476. package/esm2022/lib/components/kv-filter-cards/kv-filter-cards.component.mjs +0 -103
  477. package/esm2022/lib/components/kv-filter-cards/kv-filter-cards.module.mjs +0 -31
  478. package/esm2022/lib/components/kv-filter-cards/kv-filter-cards.pipe.mjs +0 -30
  479. package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.mjs +0 -26
  480. package/esm2022/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.mjs +0 -28
  481. package/esm2022/lib/components/kv-g-icon/kv-g-icon.component.mjs +0 -11
  482. package/esm2022/lib/components/kv-g-icon/kv-g-icon.module.mjs +0 -19
  483. package/esm2022/lib/components/kv-home-card/kv-home-card.component.mjs +0 -27
  484. package/esm2022/lib/components/kv-home-card/kv-home-card.module.mjs +0 -32
  485. package/esm2022/lib/components/kv-image-upload/kv-image-upload.component.mjs +0 -136
  486. package/esm2022/lib/components/kv-image-upload/kv-image-upload.module.mjs +0 -18
  487. package/esm2022/lib/components/kv-inputs/kv-check/kv-check.component.mjs +0 -29
  488. package/esm2022/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.mjs +0 -102
  489. package/esm2022/lib/components/kv-inputs/kv-editor/components/kv-instrucoes-report/kv-instrucoes-report.component.mjs +0 -18
  490. package/esm2022/lib/components/kv-inputs/kv-editor/components/kv-report-modal/kv-report-modal.component.mjs +0 -40
  491. package/esm2022/lib/components/kv-inputs/kv-editor/config/kv-editor.config.mjs +0 -110
  492. package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.component.mjs +0 -266
  493. package/esm2022/lib/components/kv-inputs/kv-editor/kv-editor.mjs +0 -7
  494. package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-mention.service.mjs +0 -135
  495. package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-pdf.service.mjs +0 -168
  496. package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-quill.service.mjs +0 -78
  497. package/esm2022/lib/components/kv-inputs/kv-editor/services/kv-editor-relatorio.service.mjs +0 -95
  498. package/esm2022/lib/components/kv-inputs/kv-editor/types/kv-editor.types.mjs +0 -2
  499. package/esm2022/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.mjs +0 -168
  500. package/esm2022/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.mjs +0 -30
  501. package/esm2022/lib/components/kv-inputs/kv-input-number/kv-input-number.component.mjs +0 -59
  502. package/esm2022/lib/components/kv-inputs/kv-input-number-addon/kv-input-number-addon.component.mjs +0 -66
  503. package/esm2022/lib/components/kv-inputs/kv-input-password/kv-input-password.component.mjs +0 -33
  504. package/esm2022/lib/components/kv-inputs/kv-input-text/kv-input-text.component.mjs +0 -38
  505. package/esm2022/lib/components/kv-inputs/kv-input-text-addon/kv-input-text-addon.component.mjs +0 -42
  506. package/esm2022/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.mjs +0 -50
  507. package/esm2022/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.mjs +0 -43
  508. package/esm2022/lib/components/kv-inputs/kv-input-time/kv-input-time.component.mjs +0 -24
  509. package/esm2022/lib/components/kv-inputs/kv-inputs.module.mjs +0 -165
  510. package/esm2022/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.mjs +0 -60
  511. package/esm2022/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.mjs +0 -60
  512. package/esm2022/lib/components/kv-inputs/kv-select-button/kv-select-button.component.mjs +0 -46
  513. package/esm2022/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.mjs +0 -37
  514. package/esm2022/lib/components/kv-inputs/kv-switch/kv-switch.component.mjs +0 -42
  515. package/esm2022/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.mjs +0 -58
  516. package/esm2022/lib/components/kv-label/kv-label.component.mjs +0 -15
  517. package/esm2022/lib/components/kv-label/kv-label.module.mjs +0 -24
  518. package/esm2022/lib/components/kv-layout/dropdown-master/dropdown-master.component.mjs +0 -28
  519. package/esm2022/lib/components/kv-layout/kv-layout.module.mjs +0 -72
  520. package/esm2022/lib/components/kv-layout/layout/kv-layout.component.mjs +0 -433
  521. package/esm2022/lib/components/kv-layout/top-icons/top-icons.component.mjs +0 -15
  522. package/esm2022/lib/components/kv-loader/kv-loader.component.mjs +0 -16
  523. package/esm2022/lib/components/kv-loader/kv-loader.module.mjs +0 -28
  524. package/esm2022/lib/components/kv-loader/kv-loader.service.mjs +0 -29
  525. package/esm2022/lib/components/kv-login/kv-login.component.mjs +0 -62
  526. package/esm2022/lib/components/kv-login/kv-login.module.mjs +0 -47
  527. package/esm2022/lib/components/kv-modal/kv-modal.component.mjs +0 -98
  528. package/esm2022/lib/components/kv-modal/kv-modal.module.mjs +0 -20
  529. package/esm2022/lib/components/kv-orgchart/kv-orgchart.component.mjs +0 -225
  530. package/esm2022/lib/components/kv-orgchart/kv-orgchart.module.mjs +0 -59
  531. package/esm2022/lib/components/kv-page-form/kv-page-form.component.mjs +0 -190
  532. package/esm2022/lib/components/kv-page-form/kv-page-form.module.mjs +0 -41
  533. package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.component.mjs +0 -205
  534. package/esm2022/lib/components/kv-page-stepper/kv-page-stepper.module.mjs +0 -51
  535. package/esm2022/lib/components/kv-pick-list/kv-pick-list.component.mjs +0 -386
  536. package/esm2022/lib/components/kv-pick-list/kv-pick-list.module.mjs +0 -39
  537. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.component.mjs +0 -58
  538. package/esm2022/lib/components/kv-progress-bar/kv-progress-bar.module.mjs +0 -28
  539. package/esm2022/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.component.mjs +0 -62
  540. package/esm2022/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.module.mjs +0 -28
  541. package/esm2022/lib/components/kv-report/kv-report.component.mjs +0 -44
  542. package/esm2022/lib/components/kv-report/kv-report.module.mjs +0 -24
  543. package/esm2022/lib/components/kv-stepper/kv-stepper.component.mjs +0 -74
  544. package/esm2022/lib/components/kv-stepper/kv-stepper.module.mjs +0 -47
  545. package/esm2022/lib/components/kv-steps/kv-steps.component.mjs +0 -105
  546. package/esm2022/lib/components/kv-table/kv-table.component.mjs +0 -673
  547. package/esm2022/lib/components/kv-table/kv-table.module.mjs +0 -40
  548. package/esm2022/lib/components/kv-table-edit/kv-table-edit.component.mjs +0 -341
  549. package/esm2022/lib/components/kv-table-edit/kv-table-edit.module.mjs +0 -45
  550. package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.component.mjs +0 -516
  551. package/esm2022/lib/components/kv-table-expandable/kv-table-expandable.module.mjs +0 -40
  552. package/esm2022/lib/components/kv-table-viewer/components/actions-lote-field/actions-lote-field.component.mjs +0 -17
  553. package/esm2022/lib/components/kv-table-viewer/components/actions-row-menu/actions-row-menu.component.mjs +0 -18
  554. package/esm2022/lib/components/kv-table-viewer/kv-table-viewer.component.mjs +0 -184
  555. package/esm2022/lib/components/kv-tag/kv-tag.component.mjs +0 -18
  556. package/esm2022/lib/components/kv-tag/kv-tag.module.mjs +0 -24
  557. package/esm2022/lib/components/kv-tags/kv-tags.component.mjs +0 -35
  558. package/esm2022/lib/components/kv-tags/kv-tags.module.mjs +0 -27
  559. package/esm2022/lib/components/kv-timeline/kv-timeline.component.mjs +0 -71
  560. package/esm2022/lib/components/kv-tree-table/kv-tree-table.component.mjs +0 -331
  561. package/esm2022/lib/components/kv-tree-table/kv-tree-table.module.mjs +0 -39
  562. package/esm2022/lib/components/kv-tree-view/kv-tree-view.component.mjs +0 -70
  563. package/esm2022/lib/components/kv-tree-view/kv-tree-view.module.mjs +0 -28
  564. package/esm2022/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.mjs +0 -40
  565. package/esm2022/lib/components/kv-workspace/kv-workspace.module.mjs +0 -68
  566. package/esm2022/lib/components/kv-workspace/logo/kv-workspace-logo.component.mjs +0 -22
  567. package/esm2022/lib/components/kv-workspace/master/kv-workspace-master.component.mjs +0 -78
  568. package/esm2022/lib/components/kv-workspace/workspace/kv-workspace.component.mjs +0 -87
  569. package/esm2022/public-api.mjs +0 -293
  570. package/fesm2022/keevo-components.mjs +0 -11977
  571. package/fesm2022/keevo-components.mjs.map +0 -1
  572. package/index.d.ts +0 -5
  573. package/lib/api/base-components/base-component-button.d.ts +0 -15
  574. package/lib/api/base-components/base-component-chart.d.ts +0 -40
  575. package/lib/api/base-components/base-component-crud-form.d.ts +0 -149
  576. package/lib/api/base-components/base-component-crud-list.d.ts +0 -70
  577. package/lib/api/base-components/base-component-crud.d.ts +0 -36
  578. package/lib/api/base-components/base-component-dropdown-external.d.ts +0 -15
  579. package/lib/api/base-components/base-component-dropdown.d.ts +0 -57
  580. package/lib/api/base-components/base-component-input.d.ts +0 -33
  581. package/lib/api/base-components/base-component-multi-select.d.ts +0 -40
  582. package/lib/api/base-components/base-component-table.d.ts +0 -88
  583. package/lib/api/base-components/base-component.d.ts +0 -22
  584. package/lib/api/components/chart/chart.config.d.ts +0 -14
  585. package/lib/api/components/chart/chart.model.d.ts +0 -12
  586. package/lib/api/components/chart/orchart.config.d.ts +0 -41
  587. package/lib/api/components/chart/orchartnode.d.ts +0 -34
  588. package/lib/api/components/dropdown/filtro.combo.d.ts +0 -4
  589. package/lib/api/components/stepper/kv-stepperpanel.d.ts +0 -9
  590. package/lib/api/components/table/action-item.d.ts +0 -13
  591. package/lib/api/components/table/kv-menuitem.d.ts +0 -152
  592. package/lib/api/components/table/table-dropdown-control.d.ts +0 -6
  593. package/lib/api/components/table/table.config.column.d.ts +0 -38
  594. package/lib/api/components/table/table.config.d.ts +0 -36
  595. package/lib/api/components/table/table.paginate.d.ts +0 -10
  596. package/lib/api/components/table/tableedit.config.column.d.ts +0 -11
  597. package/lib/api/components/tree-table/tree-table-keys.d.ts +0 -12
  598. package/lib/api/components/tree-table/tree-table.config.d.ts +0 -31
  599. package/lib/api/directives/directives.module.d.ts +0 -9
  600. package/lib/api/directives/drag/drag.directive.d.ts +0 -11
  601. package/lib/api/directives/stepper/dynamicinput.directive.d.ts +0 -15
  602. package/lib/api/directives/template/template.directive.d.ts +0 -11
  603. package/lib/api/helpers/component-providers.d.ts +0 -2
  604. package/lib/api/helpers/keevo-validators.d.ts +0 -18
  605. package/lib/api/helpers/translate-primeng.d.ts +0 -4
  606. package/lib/api/modules/primeng.module.d.ts +0 -69
  607. package/lib/api/pipes/capitalize.pipe.d.ts +0 -10
  608. package/lib/api/pipes/cpfcnpj.pipe.d.ts +0 -7
  609. package/lib/api/pipes/mask.pipe.d.ts +0 -7
  610. package/lib/api/pipes/pipes.module.d.ts +0 -11
  611. package/lib/api/pipes/telefone.pipe.d.ts +0 -7
  612. package/lib/api/services/base.api.service.d.ts +0 -25
  613. package/lib/api/services/breadcrumbs.service.d.ts +0 -16
  614. package/lib/api/services/chat.service.d.ts +0 -17
  615. package/lib/api/services/component.service.d.ts +0 -11
  616. package/lib/api/services/docs.service.d.ts +0 -12
  617. package/lib/api/services/form.service.d.ts +0 -31
  618. package/lib/api/services/image.cutter.service.d.ts +0 -16
  619. package/lib/api/services/imagens.service.d.ts +0 -10
  620. package/lib/api/services/notification.service.d.ts +0 -26
  621. package/lib/api/services/object.service.d.ts +0 -9
  622. package/lib/api/services/orgchart.service.d.ts +0 -20
  623. package/lib/api/services/pdf.service.d.ts +0 -7
  624. package/lib/api/types/breadcrumb.model.d.ts +0 -5
  625. package/lib/components/keevo-components.module.d.ts +0 -38
  626. package/lib/components/kv-avatar/kv-avatar.component.d.ts +0 -36
  627. package/lib/components/kv-avatar/kv-avatar.module.d.ts +0 -15
  628. package/lib/components/kv-button/kv-button.component.d.ts +0 -24
  629. package/lib/components/kv-button/kv-button.module.d.ts +0 -9
  630. package/lib/components/kv-buttons/kv-button-personalize/kv-button-personalize.component.d.ts +0 -11
  631. package/lib/components/kv-buttons/kv-button-popup/kv-button-popup.component.d.ts +0 -19
  632. package/lib/components/kv-buttons/kv-button-secondary/kv-button-secondary.component.d.ts +0 -7
  633. package/lib/components/kv-buttons/kv-button-success/kv-button-success.component.d.ts +0 -7
  634. package/lib/components/kv-buttons/kv-button.module.d.ts +0 -11
  635. package/lib/components/kv-card-selection/kv-card-selection.component.d.ts +0 -25
  636. package/lib/components/kv-card-selection/kv-card-selection.module.d.ts +0 -10
  637. package/lib/components/kv-carousel/kv-carousel.component.d.ts +0 -17
  638. package/lib/components/kv-carousel/kv-carousel.module.d.ts +0 -9
  639. package/lib/components/kv-chart/kv-chart.component.d.ts +0 -57
  640. package/lib/components/kv-chart/kv-chart.module.d.ts +0 -10
  641. package/lib/components/kv-confirmation-modal/kv-confirmation-modal.component.d.ts +0 -12
  642. package/lib/components/kv-confirmation-modal/kv-confirmation-modal.module.d.ts +0 -10
  643. package/lib/components/kv-content-viewer/kv-content-viewer.component.d.ts +0 -56
  644. package/lib/components/kv-content-viewer/kv-content-viewer.module.d.ts +0 -14
  645. package/lib/components/kv-error/kv-error.component.d.ts +0 -12
  646. package/lib/components/kv-error/kv-error.module.d.ts +0 -10
  647. package/lib/components/kv-file-upload/kv-file-upload.component.d.ts +0 -35
  648. package/lib/components/kv-file-upload/kv-file-upload.module.d.ts +0 -10
  649. package/lib/components/kv-file-viewer/kv-file-viewer.component.d.ts +0 -21
  650. package/lib/components/kv-file-viewer/kv-file-viewer.module.d.ts +0 -8
  651. package/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.component.d.ts +0 -24
  652. package/lib/components/kv-file-viewer-novo/kv-file-viewer-novo.module.d.ts +0 -9
  653. package/lib/components/kv-filter-card/kv-filter-card.component.d.ts +0 -13
  654. package/lib/components/kv-filter-card/kv-filter-card.module.d.ts +0 -10
  655. package/lib/components/kv-filter-cards/kv-filter-cards.component.d.ts +0 -32
  656. package/lib/components/kv-filter-cards/kv-filter-cards.module.d.ts +0 -9
  657. package/lib/components/kv-filter-cards/kv-filter-cards.pipe.d.ts +0 -7
  658. package/lib/components/kv-filter-fieldset/kv-filter-fieldset.component.d.ts +0 -10
  659. package/lib/components/kv-filter-fieldset/kv-filter-fieldset.module.d.ts +0 -9
  660. package/lib/components/kv-g-icon/kv-g-icon.component.d.ts +0 -5
  661. package/lib/components/kv-g-icon/kv-g-icon.module.d.ts +0 -9
  662. package/lib/components/kv-home-card/kv-home-card.component.d.ts +0 -24
  663. package/lib/components/kv-home-card/kv-home-card.module.d.ts +0 -11
  664. package/lib/components/kv-image-upload/kv-image-upload.component.d.ts +0 -34
  665. package/lib/components/kv-image-upload/kv-image-upload.module.d.ts +0 -8
  666. package/lib/components/kv-inputs/kv-check/kv-check.component.d.ts +0 -12
  667. package/lib/components/kv-inputs/kv-dropdown/kv-dropdown.component.d.ts +0 -33
  668. package/lib/components/kv-inputs/kv-editor/components/kv-instrucoes-report/kv-instrucoes-report.component.d.ts +0 -8
  669. package/lib/components/kv-inputs/kv-editor/components/kv-report-modal/kv-report-modal.component.d.ts +0 -14
  670. package/lib/components/kv-inputs/kv-editor/config/kv-editor.config.d.ts +0 -55
  671. package/lib/components/kv-inputs/kv-editor/kv-editor.component.d.ts +0 -69
  672. package/lib/components/kv-inputs/kv-editor/services/kv-editor-mention.service.d.ts +0 -41
  673. package/lib/components/kv-inputs/kv-editor/services/kv-editor-pdf.service.d.ts +0 -41
  674. package/lib/components/kv-inputs/kv-editor/services/kv-editor-quill.service.d.ts +0 -28
  675. package/lib/components/kv-inputs/kv-editor/services/kv-editor-relatorio.service.d.ts +0 -45
  676. package/lib/components/kv-inputs/kv-editor/types/kv-editor.types.d.ts +0 -32
  677. package/lib/components/kv-inputs/kv-input-calendar/kv-input-calendar.component.d.ts +0 -34
  678. package/lib/components/kv-inputs/kv-input-mask/kv-input-mask.component.d.ts +0 -12
  679. package/lib/components/kv-inputs/kv-input-number/kv-input-number.component.d.ts +0 -19
  680. package/lib/components/kv-inputs/kv-input-number-addon/kv-input-number-addon.component.d.ts +0 -21
  681. package/lib/components/kv-inputs/kv-input-password/kv-input-password.component.d.ts +0 -13
  682. package/lib/components/kv-inputs/kv-input-text/kv-input-text.component.d.ts +0 -11
  683. package/lib/components/kv-inputs/kv-input-text-addon/kv-input-text-addon.component.d.ts +0 -13
  684. package/lib/components/kv-inputs/kv-input-text-checkbox/kv-input-text-checkbox.component.d.ts +0 -18
  685. package/lib/components/kv-inputs/kv-input-textarea/kv-input-textarea.component.d.ts +0 -16
  686. package/lib/components/kv-inputs/kv-input-time/kv-input-time.component.d.ts +0 -10
  687. package/lib/components/kv-inputs/kv-inputs.module.d.ts +0 -38
  688. package/lib/components/kv-inputs/kv-multi-select/kv-multi-select.component.d.ts +0 -20
  689. package/lib/components/kv-inputs/kv-radio-group/kv-radio-group.component.d.ts +0 -20
  690. package/lib/components/kv-inputs/kv-select-button/kv-select-button.component.d.ts +0 -19
  691. package/lib/components/kv-inputs/kv-select-buttons/kv-select-buttons.component.d.ts +0 -26
  692. package/lib/components/kv-inputs/kv-switch/kv-switch.component.d.ts +0 -16
  693. package/lib/components/kv-inputs/kv-tree-multi-select/kv-tree-multi-select.component.d.ts +0 -25
  694. package/lib/components/kv-label/kv-label.component.d.ts +0 -7
  695. package/lib/components/kv-label/kv-label.module.d.ts +0 -8
  696. package/lib/components/kv-layout/dropdown-master/dropdown-master.component.d.ts +0 -12
  697. package/lib/components/kv-layout/kv-layout.module.d.ts +0 -18
  698. package/lib/components/kv-layout/layout/kv-layout.component.d.ts +0 -156
  699. package/lib/components/kv-layout/top-icons/top-icons.component.d.ts +0 -16
  700. package/lib/components/kv-loader/kv-loader.component.d.ts +0 -7
  701. package/lib/components/kv-loader/kv-loader.module.d.ts +0 -9
  702. package/lib/components/kv-loader/kv-loader.service.d.ts +0 -10
  703. package/lib/components/kv-login/kv-login.component.d.ts +0 -32
  704. package/lib/components/kv-login/kv-login.module.d.ts +0 -13
  705. package/lib/components/kv-modal/kv-modal.component.d.ts +0 -27
  706. package/lib/components/kv-modal/kv-modal.module.d.ts +0 -10
  707. package/lib/components/kv-orgchart/kv-orgchart.component.d.ts +0 -45
  708. package/lib/components/kv-orgchart/kv-orgchart.module.d.ts +0 -17
  709. package/lib/components/kv-page-form/kv-page-form.component.d.ts +0 -98
  710. package/lib/components/kv-page-form/kv-page-form.module.d.ts +0 -12
  711. package/lib/components/kv-page-stepper/kv-page-stepper.component.d.ts +0 -84
  712. package/lib/components/kv-page-stepper/kv-page-stepper.module.d.ts +0 -14
  713. package/lib/components/kv-pick-list/kv-pick-list.component.d.ts +0 -70
  714. package/lib/components/kv-pick-list/kv-pick-list.module.d.ts +0 -11
  715. package/lib/components/kv-progress-bar/kv-progress-bar.component.d.ts +0 -67
  716. package/lib/components/kv-progress-bar/kv-progress-bar.module.d.ts +0 -9
  717. package/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.component.d.ts +0 -71
  718. package/lib/components/kv-progress-bar-alternative/kv-progress-bar-alternative.module.d.ts +0 -9
  719. package/lib/components/kv-report/kv-report.component.d.ts +0 -18
  720. package/lib/components/kv-report/kv-report.module.d.ts +0 -8
  721. package/lib/components/kv-stepper/kv-stepper.component.d.ts +0 -32
  722. package/lib/components/kv-stepper/kv-stepper.module.d.ts +0 -13
  723. package/lib/components/kv-steps/kv-steps.component.d.ts +0 -21
  724. package/lib/components/kv-table/kv-table.component.d.ts +0 -154
  725. package/lib/components/kv-table/kv-table.module.d.ts +0 -12
  726. package/lib/components/kv-table-edit/kv-table-edit.component.d.ts +0 -66
  727. package/lib/components/kv-table-edit/kv-table-edit.module.d.ts +0 -15
  728. package/lib/components/kv-table-expandable/kv-table-expandable.component.d.ts +0 -119
  729. package/lib/components/kv-table-expandable/kv-table-expandable.module.d.ts +0 -13
  730. package/lib/components/kv-table-viewer/components/actions-lote-field/actions-lote-field.component.d.ts +0 -8
  731. package/lib/components/kv-table-viewer/components/actions-row-menu/actions-row-menu.component.d.ts +0 -7
  732. package/lib/components/kv-table-viewer/kv-table-viewer.component.d.ts +0 -72
  733. package/lib/components/kv-tag/kv-tag.component.d.ts +0 -7
  734. package/lib/components/kv-tag/kv-tag.module.d.ts +0 -8
  735. package/lib/components/kv-tags/kv-tags.component.d.ts +0 -31
  736. package/lib/components/kv-tags/kv-tags.module.d.ts +0 -8
  737. package/lib/components/kv-timeline/kv-timeline.component.d.ts +0 -18
  738. package/lib/components/kv-tree-table/kv-tree-table.component.d.ts +0 -86
  739. package/lib/components/kv-tree-table/kv-tree-table.module.d.ts +0 -11
  740. package/lib/components/kv-tree-view/kv-tree-view.component.d.ts +0 -21
  741. package/lib/components/kv-tree-view/kv-tree-view.module.d.ts +0 -9
  742. package/lib/components/kv-workspace/empresa/kv-workspace-empresa.component.d.ts +0 -14
  743. package/lib/components/kv-workspace/kv-workspace.module.d.ts +0 -19
  744. package/lib/components/kv-workspace/logo/kv-workspace-logo.component.d.ts +0 -11
  745. package/lib/components/kv-workspace/master/kv-workspace-master.component.d.ts +0 -25
  746. package/lib/components/kv-workspace/workspace/kv-workspace.component.d.ts +0 -37
@@ -1,331 +0,0 @@
1
- import { Component, ContentChildren, EventEmitter, HostListener, Input, Output, ViewChild, computed, input, model, signal, viewChild, } from '@angular/core';
2
- import { TreeTable } from 'primeng/treetable';
3
- import { getOrExecute, mapToMenuItem, } from '../../api/components/table/kv-menuitem';
4
- import { TemplateDirective } from '../../api/directives/template/template.directive';
5
- import { moveItemInArray } from '@angular/cdk/drag-drop';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
- import * as i2 from "primeng/api";
9
- import * as i3 from "primeng/autofocus";
10
- import * as i4 from "primeng/tooltip";
11
- import * as i5 from "primeng/inputtext";
12
- import * as i6 from "primeng/menu";
13
- import * as i7 from "@angular/cdk/drag-drop";
14
- import * as i8 from "primeng/skeleton";
15
- import * as i9 from "primeng/treetable";
16
- import * as i10 from "../kv-button/kv-button.component";
17
- export class KvTreetableComponent {
18
- constructor(elementRef) {
19
- this.elementRef = elementRef;
20
- this.menuItems = [];
21
- this.disableRowNodeSticky = false;
22
- // @Input() dataSource!: any;
23
- this.gridLines = false;
24
- this.tableCaptalized = false;
25
- this.selectedItems = [];
26
- this.paginator = true;
27
- this.rows = 10;
28
- this.treeTableDraggable = false;
29
- this.transferArrayItem = false;
30
- this.textoEmptyMessage = 'Nenhum registro encontrado';
31
- this.childrenRecoil = true;
32
- this.showHeader = true;
33
- this.scrollHeight = '';
34
- this.indFullPage = false;
35
- this.dataSource = model([]);
36
- this.tamanhoTela = signal(0);
37
- this.kvTreeTable = viewChild('kvTreeTable');
38
- this.isLoadingSkeleton = input(false);
39
- this.dataSourceMock = [];
40
- this.onFilter = new EventEmitter();
41
- this.onPaginate = new EventEmitter();
42
- this.onActiveItem = new EventEmitter();
43
- this.onActiveItemLote = new EventEmitter();
44
- this.doubleClickEvent = new EventEmitter();
45
- this.onNodeSelect = new EventEmitter();
46
- this.onNodeUnselect = new EventEmitter();
47
- this.onDropItem = new EventEmitter();
48
- this.selectionKeys = model(undefined);
49
- this.criarMenusModal = computed(() => (data) => {
50
- if (this.config.actions && data) {
51
- for (const action of this.config.actions) {
52
- const menuInsert = mapToMenuItem(action, data);
53
- let item = this.menuItems.filter((x) => x.command == menuInsert.command);
54
- if (item.length == 0)
55
- this.menuItems.push(menuInsert);
56
- else {
57
- if (menuInsert.label != item[0].label) {
58
- let index = this.menuItems.indexOf(item[0]);
59
- this.menuItems.splice(index, 1);
60
- }
61
- if (menuInsert.visible != item[0].visible) {
62
- let index = this.menuItems.indexOf(item[0]);
63
- this.menuItems.splice(index, 1);
64
- }
65
- if (menuInsert.disabled != item[0].disabled) {
66
- let index = this.menuItems.indexOf(item[0]);
67
- this.menuItems.splice(index, 1);
68
- }
69
- }
70
- }
71
- }
72
- });
73
- this.validateActionPosition = computed(() => (rowNode) => {
74
- if (this.config.actionsPai && rowNode.level == 0)
75
- return false;
76
- else
77
- return true;
78
- });
79
- this.isSelectEnabled = computed(() => (rowData, rowNode) => {
80
- return this.config.visibleCheckboxFunction
81
- ? this.config.visibleCheckboxFunction(rowData, rowNode)
82
- : true;
83
- });
84
- this.isDisabledCheckbox = computed(() => (rowData, rowNode) => {
85
- return this.config.disableControlCheckboxFunction
86
- ? this.config.disableControlCheckboxFunction(rowData, rowNode)
87
- : false;
88
- });
89
- this.validateShowTemplate = computed(() => (rowNode, col) => {
90
- if (col.templateOnly) {
91
- if (col.templateOnly === 'pai') {
92
- return rowNode.level === 0;
93
- }
94
- if (col.templateOnly === 'filho') {
95
- return rowNode.level === 1;
96
- }
97
- }
98
- return true;
99
- });
100
- this.exibirCampo = computed(() => (field, rowData) => {
101
- let visible = field.visible ? field.visible(rowData) : true;
102
- return visible;
103
- });
104
- }
105
- ngOnInit() {
106
- this.loadingSkeletonUtilities();
107
- this.tamanhoTela.set(window.innerWidth);
108
- if (this.ordenacao) {
109
- this.dataSource.set(this.sortTreeNodes(this.dataSource()));
110
- }
111
- if (this.indFullPage)
112
- this.setMaxHeightTreeTable();
113
- }
114
- onWindowResize() {
115
- this.tamanhoTela.set(window.innerWidth);
116
- }
117
- activeItem(rowData) {
118
- this.onActiveItem.emit(rowData);
119
- }
120
- activeItemLote(rowData) {
121
- this.onActiveItemLote.emit(rowData);
122
- }
123
- getOrExecute(action, data) {
124
- return getOrExecute(action, data);
125
- }
126
- onGlobalFilter(table, event) {
127
- this.onFilter.emit(event.target.value);
128
- table.filterGlobal(event.target.value, 'contains');
129
- }
130
- paginate($event) {
131
- if ($event) {
132
- let paginaInicial = ($event?.first > 0 ? $event.first / $event.rows : $event.first) + 1;
133
- let termoPesquisa = '';
134
- let ordenacao = '';
135
- if ($event.globalFilter)
136
- termoPesquisa = $event.globalFilter;
137
- if ($event.sortField)
138
- ordenacao = `${$event.sortField} ${$event.sortOrder === 1 ? 'ASC' : 'DESC'}`;
139
- const objeto = {
140
- paginaInicial: paginaInicial,
141
- tamanhoPagina: $event.rows,
142
- termoPesquisa: termoPesquisa,
143
- ordenacao: ordenacao,
144
- };
145
- this.onPaginate.emit(objeto);
146
- }
147
- }
148
- loadingSkeletonUtilities() {
149
- if (this.dataSource().length === 0 && this.isLoadingSkeleton()) {
150
- let rowItem = {};
151
- this.config?.columns.forEach((col) => {
152
- rowItem[col.field] = '';
153
- });
154
- this.dataSourceMock = Array.from({ length: this.rows }, () => ({
155
- ...rowItem,
156
- data: { ...(rowItem.data || {}) },
157
- children: [{ ...(rowItem.data || {}) }]
158
- }));
159
- this.dataSource.set(this.dataSourceMock);
160
- }
161
- }
162
- drop(event) {
163
- const draggedNode = event.item.data;
164
- const draggedChildData = draggedNode.node.data;
165
- if (draggedNode.level === 0) {
166
- moveItemInArray(this.dataSource(), event.previousIndex, event.currentIndex);
167
- }
168
- else if (draggedNode.level >= 1) {
169
- const parentNode = draggedNode.node.parent;
170
- if (parentNode) {
171
- const parentChildren = parentNode.children.map((child) => child.data);
172
- const previousChildIndex = parentChildren.indexOf(draggedChildData);
173
- const relativeCurrentIndex = previousChildIndex + (event.currentIndex - event.previousIndex);
174
- const targetChildIndex = Math.max(0, Math.min(parentChildren.length - 1, relativeCurrentIndex));
175
- if (previousChildIndex !== -1 && targetChildIndex !== -1) {
176
- moveItemInArray(parentNode.children, previousChildIndex, targetChildIndex);
177
- }
178
- const dropInfo = {
179
- previousChildIndex: previousChildIndex + 1,
180
- targetChildIndex: targetChildIndex + 1,
181
- };
182
- this.onDropItem.emit({ event: event, dropChildInfo: dropInfo });
183
- }
184
- }
185
- this.dataSource.set([...this.dataSource()]);
186
- if (draggedNode.level === 0) {
187
- this.onDropItem.emit(event);
188
- }
189
- }
190
- sortTreeNodes(nodes) {
191
- return nodes
192
- .sort((a, b) => a.data[this.ordenacao] - b.data[this.ordenacao])
193
- .map((node) => {
194
- if (node.children) {
195
- node.children = this.sortTreeNodes(node.children);
196
- }
197
- return node;
198
- });
199
- }
200
- // calculateTargetChildIndex(
201
- // event: CdkDragDrop<any>,
202
- // parentChildren: any[],
203
- // previousChildIndex: number
204
- // ): number {
205
- // const targetChildIndex =
206
- // previousChildIndex + (event.currentIndex - event.previousIndex);
207
- // if (targetChildIndex < 0) {
208
- // return 0;
209
- // } else if (targetChildIndex >= parentChildren.length) {
210
- // return parentChildren.length - 1;
211
- // } else {
212
- // return targetChildIndex;
213
- // }
214
- // }
215
- doubleClick(e, rowData) {
216
- let eventDoubleClick = { event: e, rowData: rowData };
217
- let array = [];
218
- e.target.classList.forEach((x) => array.push(x));
219
- this.doubleClickEvent.emit(eventDoubleClick);
220
- }
221
- onNodeSelected(event) {
222
- this.onNodeSelect.emit(event);
223
- }
224
- onNodeUnselected(event) {
225
- this.onNodeUnselect.emit(event);
226
- }
227
- getCustomTemplate(templatename) {
228
- return this._templates[templatename];
229
- }
230
- getIcon(icon) {
231
- return icon.includes('pi-') ? `pi ${icon}` : '';
232
- }
233
- align(col) {
234
- if (col.centralize)
235
- return 'justify-content-center';
236
- else if (col.align == 'right')
237
- return 'justify-content-end';
238
- else
239
- return '';
240
- }
241
- resetTreeTable() {
242
- if (this.pTreeTable)
243
- this.pTreeTable.reset();
244
- if (this.inputBusca)
245
- this.inputBusca.nativeElement.value = '';
246
- }
247
- setMaxHeightTreeTable() {
248
- if (this.kvTreeTable()?.nativeElement.offsetHeight) {
249
- const height = this.kvTreeTable()?.nativeElement.offsetHeight;
250
- const element = this.elementRef.nativeElement.querySelector('.kv-treetable-container');
251
- if (element)
252
- element.style.maxHeight = `${height}px`;
253
- }
254
- }
255
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreetableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
256
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvTreetableComponent, selector: "kv-tree-table", inputs: { disableRowNodeSticky: { classPropertyName: "disableRowNodeSticky", publicName: "disableRowNodeSticky", isSignal: false, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: false, isRequired: false, transformFunction: null }, gridLines: { classPropertyName: "gridLines", publicName: "gridLines", isSignal: false, isRequired: false, transformFunction: null }, tableCaptalized: { classPropertyName: "tableCaptalized", publicName: "tableCaptalized", isSignal: false, isRequired: false, transformFunction: null }, selectedItems: { classPropertyName: "selectedItems", publicName: "selectedItems", isSignal: false, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: false, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: false, isRequired: false, transformFunction: null }, treeTableDraggable: { classPropertyName: "treeTableDraggable", publicName: "treeTableDraggable", isSignal: false, isRequired: false, transformFunction: null }, transferArrayItem: { classPropertyName: "transferArrayItem", publicName: "transferArrayItem", isSignal: false, isRequired: false, transformFunction: null }, ordenacao: { classPropertyName: "ordenacao", publicName: "ordenacao", isSignal: false, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: false, isRequired: false, transformFunction: null }, textoEmptyMessage: { classPropertyName: "textoEmptyMessage", publicName: "textoEmptyMessage", isSignal: false, isRequired: false, transformFunction: null }, childrenRecoil: { classPropertyName: "childrenRecoil", publicName: "childrenRecoil", isSignal: false, isRequired: false, transformFunction: null }, showHeader: { classPropertyName: "showHeader", publicName: "showHeader", isSignal: false, isRequired: false, transformFunction: null }, scrollHeight: { classPropertyName: "scrollHeight", publicName: "scrollHeight", isSignal: false, isRequired: false, transformFunction: null }, indFullPage: { classPropertyName: "indFullPage", publicName: "indFullPage", isSignal: false, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, isLoadingSkeleton: { classPropertyName: "isLoadingSkeleton", publicName: "isLoadingSkeleton", isSignal: true, isRequired: false, transformFunction: null }, pageLinksOptions: { classPropertyName: "pageLinksOptions", publicName: "pageLinksOptions", isSignal: false, isRequired: false, transformFunction: null }, pageLinks: { classPropertyName: "pageLinks", publicName: "pageLinks", isSignal: false, isRequired: false, transformFunction: null }, showFirstLastIcon: { classPropertyName: "showFirstLastIcon", publicName: "showFirstLastIcon", isSignal: false, isRequired: false, transformFunction: null }, selectionKeys: { classPropertyName: "selectionKeys", publicName: "selectionKeys", isSignal: true, isRequired: false, transformFunction: null }, _templates: { classPropertyName: "_templates", publicName: "templates", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { dataSource: "dataSourceChange", onFilter: "onFilter", onPaginate: "onPaginate", onActiveItem: "onActiveItem", onActiveItemLote: "onActiveItemLote", doubleClickEvent: "doubleClickEvent", onNodeSelect: "onNodeSelect", onNodeUnselect: "onNodeUnselect", onDropItem: "onDropItem", selectionKeys: "selectionKeysChange" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, queries: [{ propertyName: "templates", predicate: TemplateDirective }], viewQueries: [{ propertyName: "kvTreeTable", first: true, predicate: ["kvTreeTable"], descendants: true, isSignal: true }, { propertyName: "pTreeTable", first: true, predicate: TreeTable, descendants: true }, { propertyName: "inputBusca", first: true, predicate: ["inputBusca"], descendants: true }], ngImport: i0, template: "<div class=\"kv-treetable-container\" #kvTreeTable>\r\n <p-treeTable\r\n #tt\r\n cdkDropList\r\n class=\"example-list\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n [value]=\"dataSource()\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n [resizableColumns]=\"true\"\r\n [paginator]=\"paginator\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [rowsPerPageOptions]=\"[5, 10, 15, 25, 50]\"\r\n [showFirstLastIcon]=\"tamanhoTela() > 960 ? true : false\"\r\n [pageLinks]=\"tamanhoTela() > 960 ? 2 : 1\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n [(selection)]=\"selectedItems\"\r\n [selectionKeys]=\"selectionKeys()\"\r\n (selectionKeysChange)=\"selectionKeys.set($event)\"\r\n [lazy]=\"config.lazy\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n (onNodeSelect)=\"onNodeSelected($event)\"\r\n (onNodeUnselect)=\"onNodeUnselected($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{first} - {last} de {totalRecords}\"\r\n [scrollHeight]=\"scrollHeight\"\r\n >\r\n @if(config.enableCation) {\r\n <ng-template pTemplate=\"caption\">\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12 m-0 p-1\"\r\n style=\"background-color: #eaeaea\"\r\n >\r\n <div class=\"col-12 flex flex-column\">\r\n @if(config.title) {\r\n <div class=\"text-md font-bold my-3\">{{ config.title }}</div>\r\n } @if(config.subtitle) {\r\n <div class=\"text-sm mb-4 font-medium\">{{ config.subtitle }}</div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex flex-row align-items-center col-10 p-0 md:col-6 lg:col-4 justify-content-center {{\r\n tamanhoTela() < 768 ? '' : 'input-search'\r\n }}\"\r\n >\r\n @if(config.enableFilter) {\r\n\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2rem\"\r\n #inputBusca\r\n />\r\n </span>\r\n }\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div class=\"flex flex-row gap-2 btns-options\">\r\n @for (action of config.actionsLote; track $index) {\r\n @if((selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo()(action, this.action)) {\r\n <kv-button\r\n (onClick)=\"action?.command(); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"getOrExecute(action.tooltip, selectedItems)\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [size]=\"'small'\"\r\n [disabled]=\"getOrExecute(action.disabled, selectedItems) || false\"\r\n [icon]=\"getOrExecute(action.icon, selectedItems)\"\r\n [severity]=\"action.severity || 'tertiary'\"\r\n />\r\n } }\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n } @if(showHeader){\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n @for(col of columns; track $index){\r\n <th\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: $index == 0, 'gap-3': $index == 0 }\">\r\n @if($index == 0 && config.enableSelect) {\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"\r\n />\r\n }\r\n\r\n <div class=\"flex flex-row align-items-center {{ align(col) }}\">\r\n <span class=\"text-xs\">{{ col.header }}</span>\r\n\r\n @if(col.sortable) {\r\n <p-treeTableSortIcon [field]=\"col.field\" class=\"pb-1\" />\r\n } @if(col.headerTooltip) {\r\n <span\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >\r\n info\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n @if (config.actions?.length ?? 0 > 0 || config.actionsPai) {\r\n <th [style.width]=\"5\"></th>\r\n } }\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n @for (col of columns; track $index) {\r\n <th\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div class=\"flex flex-row align-items-center {{ align(col) }}\">\r\n <span class=\"text-xs\">{{ col.header }}</span>\r\n\r\n @if(col.sortable) {\r\n <p-treeTableSortIcon [field]=\"col.field\" class=\"pb-1\" />\r\n }\r\n </div>\r\n </th>\r\n } @if (config.actions?.length ?? 0 > 0 || config.actionsPai) {\r\n <th [style.width]=\"5\"></th>\r\n }\r\n </tr>\r\n </ng-template>\r\n }\r\n\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n @if(isLoadingSkeleton()) { @for(skeletonRow of\r\n dataSource(); track $index) {\r\n <tr>\r\n @for(col of columns; track $index){\r\n <td>\r\n <div\r\n class=\"flex flex-row align-items-center justify-content-center w-full\"\r\n >\r\n @if($index == 0) {\r\n <p-treeTableToggler [rowNode]=\"rowNode\" />\r\n }\r\n <div class=\"flex flex-column w-full\">\r\n <p-skeleton height=\"1rem\" />\r\n </div>\r\n </div>\r\n </td>\r\n }\r\n <td>\r\n <div class=\"flex justify-content-center\">\r\n <p-skeleton [style]=\"{ height: '1.5rem', width: '1.5rem' }\" />\r\n </div>\r\n </td>\r\n </tr>\r\n } } @else { @if(treeTableDraggable) {\r\n <tr\r\n cdkDrag\r\n cdkDragLockAxis=\"y\"\r\n [cdkDragData]=\"rowNode\"\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n [ngClass]=\"{ capitalize: tableCaptalized }\"\r\n >\r\n @for(col of columns; track $index){\r\n <td\r\n class=\"draggable-cell\"\r\n [style.position]=\"\r\n !disableRowNodeSticky && rowNode.level !== 0 ? 'sticky' : null\r\n \"\r\n >\r\n <!-- [style.left.px]=\"\r\n childrenRecoil && rowNode.level !== 0 ? rowNode.level * 30 : null\r\n \" -->\r\n\r\n <div class=\"flex flex-row {{ align(col) }}\">\r\n @if($index == 0) {\r\n <div class=\"w-full-h-full flex align-items-center\">\r\n <span\r\n class=\"material-symbols-outlined drag-icon\"\r\n style=\"\r\n cursor: grab;\r\n font-size: 25px;\r\n color: #6b7280;\r\n opacity: 0.9;\r\n \"\r\n cdkDragHandle\r\n >\r\n drag_indicator\r\n </span>\r\n <p-treeTableToggler class=\"hiddenVisible\" [rowNode]=\"rowNode\" />\r\n\r\n @if(config.enableSelect) {\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox()(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n [ngStyle]=\"{\r\n display: isSelectEnabled()(rowData, rowNode)\r\n ? 'block'\r\n : 'none',\r\n 'margin-left': config.visibleCheckboxFunction\r\n ? '-34px'\r\n : '0px'\r\n }\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"flex flex-row align-items-center w-full\">\r\n @if (col.template && validateShowTemplate()(rowNode, col)) {\r\n <span class=\"w-full\">\r\n @if(getCustomTemplate(col.template.name)) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n }\r\n </span>\r\n } @else {\r\n <div\r\n class=\"flex flex-row align-items-center {{\r\n (col.boolean || col.centralize) && 'justify-content-center'\r\n }} gap-2 w-full\"\r\n >\r\n @if(col.tagColor) {\r\n <div\r\n class=\"tag\"\r\n [pTooltip]=\"\r\n col.tooltipTag &&\r\n col.tooltipTag(rowData, col, rowData[col.field])\r\n \"\r\n [style.background-color]=\"\r\n col.tagColor(rowData, col, rowData[col.field])\r\n \"\r\n ></div>\r\n\r\n } @if(col.boolean) {\r\n <i\r\n class=\"pi {{\r\n rowData[col.field] ? 'pi-check text-green-300' : ''\r\n }}\"\r\n style=\"font-size: 1rem; font-weight: 700\"\r\n ></i>\r\n\r\n } @else {\r\n <div class=\"flex flex-column\">\r\n <span class=\"m-0 text-xs\">{{ rowData[col.field] }}</span>\r\n\r\n @if(col.subtitle) {\r\n\r\n <p class=\"m-0 text-xs font-semibold\">\r\n {{ rowData[col.subtitle] }}\r\n </p>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n } @if((config.actions?.length ?? 0 > 0) || config.actionsPai) {\r\n <td\r\n style=\"border-left: none; text-align: center; width: 0\"\r\n [style.borderRight]=\"rowNode.level === 0 ? 'none' : ''\"\r\n [style.borderLeft]=\"rowNode.level === 0 ? 'none' : ''\"\r\n >\r\n @if((config.actions?.length ?? 0 > 0) &&\r\n validateActionPosition()(rowNode)) {\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <span\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 20px; padding: 0.1rem\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n @for(action of config.actions; track $index) {\r\n {{ criarMenusModal()(rowData) }}\r\n }\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n </div>\r\n } @if(config.actionsPai?.length ?? 0 > 0 && rowNode.level == 0){\r\n <div class=\"flex justify-content-end align-items-center\">\r\n @for (actionPai of config.actionsPai; track $index) {\r\n @if(getOrExecute(actionPai.visible, rowData) ?? true) {\r\n <kv-button\r\n (onClick)=\"activeItem(rowData); actionPai.command($event)\"\r\n [type]=\"'text'\"\r\n [icon]=\"actionPai.icon\"\r\n [severity]=\"actionPai.severity || 'tertiary'\"\r\n [disabled]=\"getOrExecute(actionPai.disabled, rowData) || false\"\r\n [pTooltip]=\"getOrExecute(actionPai.tooltip, rowData)\"\r\n [tooltipPosition]=\"'left'\"\r\n />\r\n\r\n } }\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n } @else {\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n [ngClass]=\"{ capitalize: tableCaptalized }\"\r\n >\r\n @for(col of columns; track $index){\r\n <td\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"\r\n childrenRecoil && rowNode.level !== 0 ? rowNode.level * 30 : null\r\n \"\r\n [style.borderRight]=\"rowNode.level === 0 ? 'none' : ''\"\r\n [style.borderLeft]=\"\r\n rowNode.level === 0 && col.field != config.columns[0].field\r\n ? 'none'\r\n : ''\r\n \"\r\n >\r\n <div class=\"flex flex-row {{ align(col) }}\">\r\n @if($index == 0) {\r\n <div class=\"w-full-h-full flex align-items-center\">\r\n <p-treeTableToggler class=\"hiddenVisible\" [rowNode]=\"rowNode\" />\r\n\r\n @if(config.enableSelect) {\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox()(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n [ngStyle]=\"{\r\n display: isSelectEnabled()(rowData, rowNode)\r\n ? 'block'\r\n : 'none',\r\n 'margin-left': config.visibleCheckboxFunction\r\n ? '-34px'\r\n : '0px'\r\n }\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"flex flex-row align-items-center w-full\">\r\n @if (col.template && validateShowTemplate()(rowNode, col)) {\r\n <span class=\"w-full\">\r\n @if(getCustomTemplate(col.template.name)) {\r\n\r\n <ng-container\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n }\r\n </span>\r\n } @else {\r\n <div\r\n class=\"flex flex-row align-items-center {{\r\n (col.boolean || col.centralize) && 'justify-content-center'\r\n }} gap-2 w-full\"\r\n >\r\n @if(col.tagColor) {\r\n\r\n <div\r\n class=\"tag\"\r\n [pTooltip]=\"\r\n col.tooltipTag &&\r\n col.tooltipTag(rowData, col, rowData[col.field])\r\n \"\r\n [style.background-color]=\"\r\n col.tagColor(rowData, col, rowData[col.field])\r\n \"\r\n ></div>\r\n\r\n } @if(col.boolean) {\r\n\r\n <i\r\n class=\"pi {{\r\n rowData[col.field] ? 'pi-check text-green-300' : ''\r\n }}\"\r\n style=\"font-size: 1rem; font-weight: 700\"\r\n ></i>\r\n } @else {\r\n <div class=\"flex flex-column\">\r\n <span class=\"m-0 text-xs\">{{ rowData[col.field] }}</span>\r\n\r\n @if(col.subtitle) {\r\n\r\n <p class=\"m-0 text-xs font-semibold\">\r\n {{ rowData[col.subtitle] }}\r\n </p>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n } @if((config.actions?.length ?? 0 > 0) || config.actionsPai) {\r\n <td style=\"border-left: none; text-align: center; width: 0\">\r\n @if((config.actions?.length ?? 0 > 0) &&\r\n validateActionPosition()(rowNode)) {\r\n <div>\r\n <span\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 20px; padding: 0.1rem\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n @for(action of config.actions; track $index) {\r\n {{ criarMenusModal()(rowData) }}\r\n }\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n </div>\r\n } @if(config.actionsPai?.length ?? 0 > 0 && rowNode.level == 0){\r\n <div class=\"flex justify-content-end\">\r\n @for (actionPai of config.actionsPai; track $index) { @if\r\n (getOrExecute(actionPai.visible, rowData) ?? true) {\r\n <kv-button\r\n (onClick)=\"activeItem(rowData); actionPai.command($event)\"\r\n [type]=\"'text'\"\r\n [icon]=\"actionPai.icon\"\r\n [severity]=\"actionPai.severity || 'tertiary'\"\r\n [disabled]=\"getOrExecute(actionPai.disabled, rowData) || false\"\r\n [pTooltip]=\"getOrExecute(actionPai.tooltip, rowData)\"\r\n [tooltipPosition]=\"'left'\"\r\n />\r\n } }\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n } }\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td\r\n [attr.colspan]=\"config.columns.length + 1\"\r\n style=\"text-align: center\"\r\n class=\"text-xs\"\r\n >\r\n {{ textoEmptyMessage }}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-treeTable>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.2rem}::ng-deep .p-treetable .p-treetable-header{padding:0rem}span{font-size:14px}:host ::ng-deep .p-treetable table{table-layout:auto!important}::ng-deep .p-checkbox .p-checkbox-box{width:1.125rem;height:1.125rem}::ng-deep .p-checkbox{display:flex;align-items:center}::ng-deep .p-treetable .p-paginator{scale:.75}.icon-more-horiz{font-weight:700}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transition:color .3s,transform .3s;background-color:#eaeaea;border-radius:50%}::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.3rem}:host ::ng-deep .treetabledraggable .p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler{width:1rem;height:1rem}.tag{width:5px;height:20px;border-radius:.25rem}:host ::ng-deep .draggable-cell .drag-icon{visibility:hidden}:host ::ng-deep .draggable-cell:hover .drag-icon{visibility:visible}.cdk-drag-preview{display:flex;align-items:center;justify-content:space-between;border-radius:10px!important}.cdk-drop-list-dragging{cursor:grabbing}:host ::ng-deep .cdk-drop-list-dragging .cdk-drag{transition:transform .25s cubic-bezier(0,0,.2,1)}:host ::ng-deep .cdk-drag-animating{transition:transform .3s cubic-bezier(0,0,.2,1)}::ng-deep svg.p-icon{width:.65rem;height:.65rem}::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:#004172;background:#004172}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:hover{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:active{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:disabled{background-color:#002542;opacity:.4;cursor:auto}:host{height:100%}::ng-deep .kv-treetable-container,::ng-deep p-treeTable{height:100%}::ng-deep p-treeTable .p-treetable{display:flex;flex-direction:column;height:100%}::ng-deep table{height:auto!important}::ng-deep p-treeTable .p-treetable .p-treetable-wrapper,::ng-deep p-treeTable{height:100%}::ng-deep .p-treetable .p-treetable-wrapper::-webkit-scrollbar{width:6px}::ng-deep .p-treetable .p-treetable-wrapper::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-treetable .p-treetable-wrapper::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-treetable .p-treetable-wrapper:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-treetable .p-treetable-wrapper::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i3.AutoFocus, selector: "[pAutoFocus]", inputs: ["autofocus"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "component", type: i6.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i8.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "style", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: i9.TreeTable, selector: "p-treeTable", inputs: ["columns", "style", "styleClass", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "virtualRowHeight", "selectionKeys"], outputs: ["selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel", "selectionKeysChange"] }, { kind: "component", type: i9.TreeTableToggler, selector: "p-treeTableToggler", inputs: ["rowNode"] }, { kind: "directive", type: i9.TTSortableColumn, selector: "[ttSortableColumn]", inputs: ["ttSortableColumn", "ttSortableColumnDisabled"] }, { kind: "component", type: i9.TTSortIcon, selector: "p-treeTableSortIcon", inputs: ["field", "ariaLabelDesc", "ariaLabelAsc"] }, { kind: "directive", type: i9.TTRow, selector: "[ttRow]", inputs: ["ttRow"] }, { kind: "component", type: i9.TTCheckbox, selector: "p-treeTableCheckbox", inputs: ["disabled", "value"] }, { kind: "component", type: i9.TTHeaderCheckbox, selector: "p-treeTableHeaderCheckbox" }, { kind: "component", type: i10.KvButtonComponent, selector: "kv-button", inputs: ["fullWidth", "type", "loading", "severity", "size", "icon", "iconPosition", "label", "disabled", "items", "popup"], outputs: ["iconChange", "onClick"] }] }); }
257
- }
258
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreetableComponent, decorators: [{
259
- type: Component,
260
- args: [{ selector: 'kv-tree-table', template: "<div class=\"kv-treetable-container\" #kvTreeTable>\r\n <p-treeTable\r\n #tt\r\n cdkDropList\r\n class=\"example-list\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n [value]=\"dataSource()\"\r\n [columns]=\"config.columns\"\r\n [resizableColumns]=\"true\"\r\n [tableStyle]=\"{ 'min-width': '50rem' }\"\r\n [resizableColumns]=\"true\"\r\n [paginator]=\"paginator\"\r\n [rows]=\"rows\"\r\n [totalRecords]=\"totalRecords\"\r\n [rowsPerPageOptions]=\"[5, 10, 15, 25, 50]\"\r\n [showFirstLastIcon]=\"tamanhoTela() > 960 ? true : false\"\r\n [pageLinks]=\"tamanhoTela() > 960 ? 2 : 1\"\r\n [styleClass]=\"gridLines ? 'p-treetable-gridlines' : ''\"\r\n [(selection)]=\"selectedItems\"\r\n [selectionKeys]=\"selectionKeys()\"\r\n (selectionKeysChange)=\"selectionKeys.set($event)\"\r\n [lazy]=\"config.lazy\"\r\n (onLazyLoad)=\"paginate($event)\"\r\n (onNodeSelect)=\"onNodeSelected($event)\"\r\n (onNodeUnselect)=\"onNodeUnselected($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n currentPageReportTemplate=\"{first} - {last} de {totalRecords}\"\r\n [scrollHeight]=\"scrollHeight\"\r\n >\r\n @if(config.enableCation) {\r\n <ng-template pTemplate=\"caption\">\r\n <div\r\n class=\"flex flex-row flex-wrap justify-content-between align-items-center grid formgrid p-fluid col-12 m-0 p-1\"\r\n style=\"background-color: #eaeaea\"\r\n >\r\n <div class=\"col-12 flex flex-column\">\r\n @if(config.title) {\r\n <div class=\"text-md font-bold my-3\">{{ config.title }}</div>\r\n } @if(config.subtitle) {\r\n <div class=\"text-sm mb-4 font-medium\">{{ config.subtitle }}</div>\r\n }\r\n </div>\r\n\r\n <div\r\n class=\"flex flex-row align-items-center col-10 p-0 md:col-6 lg:col-4 justify-content-center {{\r\n tamanhoTela() < 768 ? '' : 'input-search'\r\n }}\"\r\n >\r\n @if(config.enableFilter) {\r\n\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n\r\n <input\r\n pInputText\r\n pAutoFocus\r\n [autofocus]=\"true\"\r\n type=\"text\"\r\n (input)=\"onGlobalFilter(tt, $event)\"\r\n placeholder=\"Pesquisar...\"\r\n class=\"h-2rem\"\r\n #inputBusca\r\n />\r\n </span>\r\n }\r\n </div>\r\n\r\n <div class=\"flex flex-row col-1 justify-content-end p-0\">\r\n <div class=\"flex flex-row gap-2 btns-options\">\r\n @for (action of config.actionsLote; track $index) {\r\n @if((selectedItems.length > 0 || action.showAcoesLote) &&\r\n exibirCampo()(action, this.action)) {\r\n <kv-button\r\n (onClick)=\"action?.command(); activeItemLote(selectedItems)\"\r\n [pTooltip]=\"getOrExecute(action.tooltip, selectedItems)\"\r\n [tooltipPosition]=\"'bottom'\"\r\n [size]=\"'small'\"\r\n [disabled]=\"getOrExecute(action.disabled, selectedItems) || false\"\r\n [icon]=\"getOrExecute(action.icon, selectedItems)\"\r\n [severity]=\"action.severity || 'tertiary'\"\r\n />\r\n } }\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n } @if(showHeader){\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n @for(col of columns; track $index){\r\n <th\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div>\r\n <div [ngClass]=\"{ flex: $index == 0, 'gap-3': $index == 0 }\">\r\n @if($index == 0 && config.enableSelect) {\r\n <p-treeTableHeaderCheckbox\r\n (click)=\"activeItemLote(selectedItems)\"\r\n />\r\n }\r\n\r\n <div class=\"flex flex-row align-items-center {{ align(col) }}\">\r\n <span class=\"text-xs\">{{ col.header }}</span>\r\n\r\n @if(col.sortable) {\r\n <p-treeTableSortIcon [field]=\"col.field\" class=\"pb-1\" />\r\n } @if(col.headerTooltip) {\r\n <span\r\n class=\"material-symbols-outlined flex align-items-center\"\r\n [pTooltip]=\"col.headerTooltip\"\r\n >\r\n info\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </th>\r\n @if (config.actions?.length ?? 0 > 0 || config.actionsPai) {\r\n <th [style.width]=\"5\"></th>\r\n } }\r\n </tr>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n @for (col of columns; track $index) {\r\n <th\r\n [ttSortableColumn]=\"col.field\"\r\n [ttSortableColumnDisabled]=\"col.sortable === false\"\r\n [style.width]=\"col.width\"\r\n >\r\n <div class=\"flex flex-row align-items-center {{ align(col) }}\">\r\n <span class=\"text-xs\">{{ col.header }}</span>\r\n\r\n @if(col.sortable) {\r\n <p-treeTableSortIcon [field]=\"col.field\" class=\"pb-1\" />\r\n }\r\n </div>\r\n </th>\r\n } @if (config.actions?.length ?? 0 > 0 || config.actionsPai) {\r\n <th [style.width]=\"5\"></th>\r\n }\r\n </tr>\r\n </ng-template>\r\n }\r\n\r\n <ng-template\r\n pTemplate=\"body\"\r\n let-rowNode\r\n let-rowData=\"rowData\"\r\n let-columns=\"columns\"\r\n >\r\n @if(isLoadingSkeleton()) { @for(skeletonRow of\r\n dataSource(); track $index) {\r\n <tr>\r\n @for(col of columns; track $index){\r\n <td>\r\n <div\r\n class=\"flex flex-row align-items-center justify-content-center w-full\"\r\n >\r\n @if($index == 0) {\r\n <p-treeTableToggler [rowNode]=\"rowNode\" />\r\n }\r\n <div class=\"flex flex-column w-full\">\r\n <p-skeleton height=\"1rem\" />\r\n </div>\r\n </div>\r\n </td>\r\n }\r\n <td>\r\n <div class=\"flex justify-content-center\">\r\n <p-skeleton [style]=\"{ height: '1.5rem', width: '1.5rem' }\" />\r\n </div>\r\n </td>\r\n </tr>\r\n } } @else { @if(treeTableDraggable) {\r\n <tr\r\n cdkDrag\r\n cdkDragLockAxis=\"y\"\r\n [cdkDragData]=\"rowNode\"\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n [ngClass]=\"{ capitalize: tableCaptalized }\"\r\n >\r\n @for(col of columns; track $index){\r\n <td\r\n class=\"draggable-cell\"\r\n [style.position]=\"\r\n !disableRowNodeSticky && rowNode.level !== 0 ? 'sticky' : null\r\n \"\r\n >\r\n <!-- [style.left.px]=\"\r\n childrenRecoil && rowNode.level !== 0 ? rowNode.level * 30 : null\r\n \" -->\r\n\r\n <div class=\"flex flex-row {{ align(col) }}\">\r\n @if($index == 0) {\r\n <div class=\"w-full-h-full flex align-items-center\">\r\n <span\r\n class=\"material-symbols-outlined drag-icon\"\r\n style=\"\r\n cursor: grab;\r\n font-size: 25px;\r\n color: #6b7280;\r\n opacity: 0.9;\r\n \"\r\n cdkDragHandle\r\n >\r\n drag_indicator\r\n </span>\r\n <p-treeTableToggler class=\"hiddenVisible\" [rowNode]=\"rowNode\" />\r\n\r\n @if(config.enableSelect) {\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox()(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n [ngStyle]=\"{\r\n display: isSelectEnabled()(rowData, rowNode)\r\n ? 'block'\r\n : 'none',\r\n 'margin-left': config.visibleCheckboxFunction\r\n ? '-34px'\r\n : '0px'\r\n }\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"flex flex-row align-items-center w-full\">\r\n @if (col.template && validateShowTemplate()(rowNode, col)) {\r\n <span class=\"w-full\">\r\n @if(getCustomTemplate(col.template.name)) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n }\r\n </span>\r\n } @else {\r\n <div\r\n class=\"flex flex-row align-items-center {{\r\n (col.boolean || col.centralize) && 'justify-content-center'\r\n }} gap-2 w-full\"\r\n >\r\n @if(col.tagColor) {\r\n <div\r\n class=\"tag\"\r\n [pTooltip]=\"\r\n col.tooltipTag &&\r\n col.tooltipTag(rowData, col, rowData[col.field])\r\n \"\r\n [style.background-color]=\"\r\n col.tagColor(rowData, col, rowData[col.field])\r\n \"\r\n ></div>\r\n\r\n } @if(col.boolean) {\r\n <i\r\n class=\"pi {{\r\n rowData[col.field] ? 'pi-check text-green-300' : ''\r\n }}\"\r\n style=\"font-size: 1rem; font-weight: 700\"\r\n ></i>\r\n\r\n } @else {\r\n <div class=\"flex flex-column\">\r\n <span class=\"m-0 text-xs\">{{ rowData[col.field] }}</span>\r\n\r\n @if(col.subtitle) {\r\n\r\n <p class=\"m-0 text-xs font-semibold\">\r\n {{ rowData[col.subtitle] }}\r\n </p>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n } @if((config.actions?.length ?? 0 > 0) || config.actionsPai) {\r\n <td\r\n style=\"border-left: none; text-align: center; width: 0\"\r\n [style.borderRight]=\"rowNode.level === 0 ? 'none' : ''\"\r\n [style.borderLeft]=\"rowNode.level === 0 ? 'none' : ''\"\r\n >\r\n @if((config.actions?.length ?? 0 > 0) &&\r\n validateActionPosition()(rowNode)) {\r\n <div class=\"flex align-items-center justify-content-center\">\r\n <span\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 20px; padding: 0.1rem\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n @for(action of config.actions; track $index) {\r\n {{ criarMenusModal()(rowData) }}\r\n }\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n </div>\r\n } @if(config.actionsPai?.length ?? 0 > 0 && rowNode.level == 0){\r\n <div class=\"flex justify-content-end align-items-center\">\r\n @for (actionPai of config.actionsPai; track $index) {\r\n @if(getOrExecute(actionPai.visible, rowData) ?? true) {\r\n <kv-button\r\n (onClick)=\"activeItem(rowData); actionPai.command($event)\"\r\n [type]=\"'text'\"\r\n [icon]=\"actionPai.icon\"\r\n [severity]=\"actionPai.severity || 'tertiary'\"\r\n [disabled]=\"getOrExecute(actionPai.disabled, rowData) || false\"\r\n [pTooltip]=\"getOrExecute(actionPai.tooltip, rowData)\"\r\n [tooltipPosition]=\"'left'\"\r\n />\r\n\r\n } }\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n } @else {\r\n <tr\r\n [ttRow]=\"rowNode\"\r\n (dblclick)=\"doubleClick($event, rowData)\"\r\n [ngClass]=\"{ capitalize: tableCaptalized }\"\r\n >\r\n @for(col of columns; track $index){\r\n <td\r\n [style.position]=\"rowNode.level !== 0 ? 'sticky' : null\"\r\n [style.left.px]=\"\r\n childrenRecoil && rowNode.level !== 0 ? rowNode.level * 30 : null\r\n \"\r\n [style.borderRight]=\"rowNode.level === 0 ? 'none' : ''\"\r\n [style.borderLeft]=\"\r\n rowNode.level === 0 && col.field != config.columns[0].field\r\n ? 'none'\r\n : ''\r\n \"\r\n >\r\n <div class=\"flex flex-row {{ align(col) }}\">\r\n @if($index == 0) {\r\n <div class=\"w-full-h-full flex align-items-center\">\r\n <p-treeTableToggler class=\"hiddenVisible\" [rowNode]=\"rowNode\" />\r\n\r\n @if(config.enableSelect) {\r\n <p-treeTableCheckbox\r\n [disabled]=\"isDisabledCheckbox()(rowData, rowNode)\"\r\n (click)=\"activeItemLote(selectedItems)\"\r\n [value]=\"rowNode\"\r\n [ngStyle]=\"{\r\n display: isSelectEnabled()(rowData, rowNode)\r\n ? 'block'\r\n : 'none',\r\n 'margin-left': config.visibleCheckboxFunction\r\n ? '-34px'\r\n : '0px'\r\n }\"\r\n />\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"flex flex-row align-items-center w-full\">\r\n @if (col.template && validateShowTemplate()(rowNode, col)) {\r\n <span class=\"w-full\">\r\n @if(getCustomTemplate(col.template.name)) {\r\n\r\n <ng-container\r\n [ngTemplateOutlet]=\"getCustomTemplate(col.template.name)\"\r\n [ngTemplateOutletContext]=\"{ $implicit: rowData }\"\r\n >\r\n </ng-container>\r\n }\r\n </span>\r\n } @else {\r\n <div\r\n class=\"flex flex-row align-items-center {{\r\n (col.boolean || col.centralize) && 'justify-content-center'\r\n }} gap-2 w-full\"\r\n >\r\n @if(col.tagColor) {\r\n\r\n <div\r\n class=\"tag\"\r\n [pTooltip]=\"\r\n col.tooltipTag &&\r\n col.tooltipTag(rowData, col, rowData[col.field])\r\n \"\r\n [style.background-color]=\"\r\n col.tagColor(rowData, col, rowData[col.field])\r\n \"\r\n ></div>\r\n\r\n } @if(col.boolean) {\r\n\r\n <i\r\n class=\"pi {{\r\n rowData[col.field] ? 'pi-check text-green-300' : ''\r\n }}\"\r\n style=\"font-size: 1rem; font-weight: 700\"\r\n ></i>\r\n } @else {\r\n <div class=\"flex flex-column\">\r\n <span class=\"m-0 text-xs\">{{ rowData[col.field] }}</span>\r\n\r\n @if(col.subtitle) {\r\n\r\n <p class=\"m-0 text-xs font-semibold\">\r\n {{ rowData[col.subtitle] }}\r\n </p>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </td>\r\n } @if((config.actions?.length ?? 0 > 0) || config.actionsPai) {\r\n <td style=\"border-left: none; text-align: center; width: 0\">\r\n @if((config.actions?.length ?? 0 > 0) &&\r\n validateActionPosition()(rowNode)) {\r\n <div>\r\n <span\r\n class=\"material-symbols-outlined cursor-pointer icon-more-horiz\"\r\n style=\"font-size: 20px; padding: 0.1rem\"\r\n (click)=\"menu.toggle($event); activeItem(rowData)\"\r\n >\r\n more_horiz\r\n </span>\r\n\r\n @for(action of config.actions; track $index) {\r\n {{ criarMenusModal()(rowData) }}\r\n }\r\n\r\n <p-menu\r\n #menu\r\n [popup]=\"true\"\r\n [model]=\"menuItems\"\r\n appendTo=\"body\"\r\n ></p-menu>\r\n </div>\r\n } @if(config.actionsPai?.length ?? 0 > 0 && rowNode.level == 0){\r\n <div class=\"flex justify-content-end\">\r\n @for (actionPai of config.actionsPai; track $index) { @if\r\n (getOrExecute(actionPai.visible, rowData) ?? true) {\r\n <kv-button\r\n (onClick)=\"activeItem(rowData); actionPai.command($event)\"\r\n [type]=\"'text'\"\r\n [icon]=\"actionPai.icon\"\r\n [severity]=\"actionPai.severity || 'tertiary'\"\r\n [disabled]=\"getOrExecute(actionPai.disabled, rowData) || false\"\r\n [pTooltip]=\"getOrExecute(actionPai.tooltip, rowData)\"\r\n [tooltipPosition]=\"'left'\"\r\n />\r\n } }\r\n </div>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n } }\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"emptymessage\">\r\n <tr>\r\n <td\r\n [attr.colspan]=\"config.columns.length + 1\"\r\n style=\"text-align: center\"\r\n class=\"text-xs\"\r\n >\r\n {{ textoEmptyMessage }}\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-treeTable>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";::ng-deep .p-treetable .p-treetable-tbody>tr>td{padding:.2rem}::ng-deep .p-treetable .p-treetable-header{padding:0rem}span{font-size:14px}:host ::ng-deep .p-treetable table{table-layout:auto!important}::ng-deep .p-checkbox .p-checkbox-box{width:1.125rem;height:1.125rem}::ng-deep .p-checkbox{display:flex;align-items:center}::ng-deep .p-treetable .p-paginator{scale:.75}.icon-more-horiz{font-weight:700}.icon-more-horiz:hover,.icon-more-horiz:focus{color:#5e5e5e;transition:color .3s,transform .3s;background-color:#eaeaea;border-radius:50%}::ng-deep .p-treetable .p-treetable-thead>tr>th{background-color:#eaeaea;padding:.3rem}:host ::ng-deep .treetabledraggable .p-treetable .p-treetable-tbody>tr>td .p-treetable-toggler{width:1rem;height:1rem}.tag{width:5px;height:20px;border-radius:.25rem}:host ::ng-deep .draggable-cell .drag-icon{visibility:hidden}:host ::ng-deep .draggable-cell:hover .drag-icon{visibility:visible}.cdk-drag-preview{display:flex;align-items:center;justify-content:space-between;border-radius:10px!important}.cdk-drop-list-dragging{cursor:grabbing}:host ::ng-deep .cdk-drop-list-dragging .cdk-drag{transition:transform .25s cubic-bezier(0,0,.2,1)}:host ::ng-deep .cdk-drag-animating{transition:transform .3s cubic-bezier(0,0,.2,1)}::ng-deep svg.p-icon{width:.65rem;height:.65rem}::ng-deep .p-checkbox .p-checkbox-box.p-highlight{border-color:#004172;background:#004172}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:hover{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:active{background-color:#002542}::ng-deep .p-checkbox .p-checkbox-box.p-highlight:disabled{background-color:#002542;opacity:.4;cursor:auto}:host{height:100%}::ng-deep .kv-treetable-container,::ng-deep p-treeTable{height:100%}::ng-deep p-treeTable .p-treetable{display:flex;flex-direction:column;height:100%}::ng-deep table{height:auto!important}::ng-deep p-treeTable .p-treetable .p-treetable-wrapper,::ng-deep p-treeTable{height:100%}::ng-deep .p-treetable .p-treetable-wrapper::-webkit-scrollbar{width:6px}::ng-deep .p-treetable .p-treetable-wrapper::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-treetable .p-treetable-wrapper::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-treetable .p-treetable-wrapper:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-treetable .p-treetable-wrapper::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}\n"] }]
261
- }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { disableRowNodeSticky: [{
262
- type: Input
263
- }], config: [{
264
- type: Input
265
- }], gridLines: [{
266
- type: Input
267
- }], tableCaptalized: [{
268
- type: Input
269
- }], selectedItems: [{
270
- type: Input
271
- }], paginator: [{
272
- type: Input
273
- }], rows: [{
274
- type: Input
275
- }], treeTableDraggable: [{
276
- type: Input
277
- }], transferArrayItem: [{
278
- type: Input
279
- }], ordenacao: [{
280
- type: Input
281
- }], totalRecords: [{
282
- type: Input
283
- }], textoEmptyMessage: [{
284
- type: Input
285
- }], childrenRecoil: [{
286
- type: Input
287
- }], showHeader: [{
288
- type: Input
289
- }], scrollHeight: [{
290
- type: Input
291
- }], indFullPage: [{
292
- type: Input
293
- }], pageLinksOptions: [{
294
- type: Input
295
- }], pageLinks: [{
296
- type: Input
297
- }], showFirstLastIcon: [{
298
- type: Input
299
- }], onFilter: [{
300
- type: Output
301
- }], onPaginate: [{
302
- type: Output
303
- }], onActiveItem: [{
304
- type: Output
305
- }], onActiveItemLote: [{
306
- type: Output
307
- }], doubleClickEvent: [{
308
- type: Output
309
- }], onNodeSelect: [{
310
- type: Output
311
- }], onNodeUnselect: [{
312
- type: Output
313
- }], onDropItem: [{
314
- type: Output
315
- }], templates: [{
316
- type: ContentChildren,
317
- args: [TemplateDirective]
318
- }], _templates: [{
319
- type: Input,
320
- args: ['templates']
321
- }], pTreeTable: [{
322
- type: ViewChild,
323
- args: [TreeTable]
324
- }], inputBusca: [{
325
- type: ViewChild,
326
- args: ['inputBusca']
327
- }], onWindowResize: [{
328
- type: HostListener,
329
- args: ['window:resize', ['$event']]
330
- }] } });
331
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10cmVlLXRhYmxlL2t2LXRyZWUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdHJlZS10YWJsZS9rdi10cmVlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsUUFBUSxFQUVSLEtBQUssRUFDTCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUVMLFlBQVksRUFDWixhQUFhLEdBQ2QsTUFBTSx3Q0FBd0MsQ0FBQztBQUVoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUdyRixPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7OztBQVF0RSxNQUFNLE9BQU8sb0JBQW9CO0lBMkIvQixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBMUIxQyxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBQ2xCLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUcvQyw2QkFBNkI7UUFDcEIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUNqQyxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0Isc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRzFCLHNCQUFpQixHQUFXLDRCQUE0QixDQUFDO1FBQ3pELG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFdEMsZUFBVSxHQUFHLEtBQUssQ0FBUSxFQUFFLENBQUMsQ0FBQztRQUM5QixnQkFBVyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUNoQyxnQkFBVyxHQUFHLFNBQVMsQ0FBYSxhQUFhLENBQUMsQ0FBQztRQUNuRCxzQkFBaUIsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDMUMsbUJBQWMsR0FBVSxFQUFFLENBQUM7UUFpQmpCLGFBQVEsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqRCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkQsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyRCxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6RCxxQkFBZ0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN6RCxpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkQsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWxELGtCQUFhLEdBQUcsS0FBSyxDQUE0QixTQUFTLENBQUMsQ0FBQztRQTBNNUUsb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNoQyxLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ3pDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBRS9DLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUM5QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxDQUN2QyxDQUFDO29CQUVGLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDO3dCQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO3lCQUNqRCxDQUFDO3dCQUNKLElBQUksVUFBVSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7NEJBQ3RDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ2xDLENBQUM7d0JBRUQsSUFBSSxVQUFVLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDMUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbEMsQ0FBQzt3QkFFRCxJQUFJLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUM1QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNsQyxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILDJCQUFzQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQ3ZELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDO2dCQUFFLE9BQU8sS0FBSyxDQUFDOztnQkFDMUQsT0FBTyxJQUFJLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQVksRUFBRSxPQUFZLEVBQUUsRUFBRTtZQUM5RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCO2dCQUN4QyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO2dCQUN2RCxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQ1YsQ0FBQyxDQUFDLENBQUM7UUFFSCx1QkFBa0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFZLEVBQUUsT0FBWSxFQUFFLEVBQUU7WUFDakUsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLDhCQUE4QjtnQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsOEJBQThCLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztnQkFDOUQsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO1FBRUgseUJBQW9CLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBWSxFQUFFLEdBQVEsRUFBRSxFQUFFO1lBQy9ELElBQUksR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNyQixJQUFJLEdBQUcsQ0FBQyxZQUFZLEtBQUssS0FBSyxFQUFFLENBQUM7b0JBQy9CLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQzdCLENBQUM7Z0JBQ0QsSUFBSSxHQUFHLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRSxDQUFDO29CQUNqQyxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUM7UUFFSCxnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQVUsRUFBRSxPQUFZLEVBQUUsRUFBRTtZQUN4RCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDNUQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFoUzJDLENBQUM7SUEwQi9DLFFBQVE7UUFDTixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUVoQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQ2xCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFTRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxVQUFVLENBQUMsT0FBWTtRQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sY0FBYyxDQUFDLE9BQVk7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBWSxDQUFJLE1BQW9CLEVBQUUsSUFBUztRQUM3QyxPQUFPLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUFnQixFQUFFLEtBQVk7UUFDbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUUsS0FBSyxDQUFDLE1BQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsS0FBSyxDQUFDLFlBQVksQ0FBRSxLQUFLLENBQUMsTUFBMkIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLFFBQVEsQ0FBQyxNQUFXO1FBQ3pCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLGFBQWEsR0FDZixDQUFDLE1BQU0sRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEUsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUVuQixJQUFJLE1BQU0sQ0FBQyxZQUFZO2dCQUFFLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBRTdELElBQUksTUFBTSxDQUFDLFNBQVM7Z0JBQ2xCLFNBQVMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFDbEUsRUFBRSxDQUFDO1lBRVAsTUFBTSxNQUFNLEdBQWtCO2dCQUM1QixhQUFhLEVBQUUsYUFBYTtnQkFDNUIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUMxQixhQUFhLEVBQUUsYUFBYTtnQkFDNUIsU0FBUyxFQUFFLFNBQVM7YUFDckIsQ0FBQztZQUVGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQsd0JBQXdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQztZQUMvRCxJQUFJLE9BQU8sR0FBUSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxHQUFHLE9BQU87Z0JBQ1YsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQ2pDLFFBQVEsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQzthQUN4QyxDQUFDLENBQUMsQ0FBQztZQUVKLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUdELElBQUksQ0FBQyxLQUF1QjtRQUMxQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNwQyxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRS9DLElBQUksV0FBVyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QixlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlFLENBQUM7YUFBTSxJQUFJLFdBQVcsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbEMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7WUFFM0MsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDNUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQzNCLENBQUM7Z0JBQ0YsTUFBTSxrQkFBa0IsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBRXBFLE1BQU0sb0JBQW9CLEdBQ3hCLGtCQUFrQixHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBRWxFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDL0IsQ0FBQyxFQUNELElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FDMUQsQ0FBQztnQkFFRixJQUFJLGtCQUFrQixLQUFLLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3pELGVBQWUsQ0FDYixVQUFVLENBQUMsUUFBUSxFQUNuQixrQkFBa0IsRUFDbEIsZ0JBQWdCLENBQ2pCLENBQUM7Z0JBQ0osQ0FBQztnQkFDRCxNQUFNLFFBQVEsR0FBUTtvQkFDcEIsa0JBQWtCLEVBQUUsa0JBQWtCLEdBQUcsQ0FBQztvQkFDMUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEdBQUcsQ0FBQztpQkFDdkMsQ0FBQztnQkFFRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU1QyxJQUFJLFdBQVcsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLENBQUMsS0FBaUI7UUFDN0IsT0FBTyxLQUFLO2FBQ1QsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDL0QsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCw2QkFBNkI7SUFDN0IsNkJBQTZCO0lBQzdCLDJCQUEyQjtJQUMzQiwrQkFBK0I7SUFDL0IsY0FBYztJQUNkLDZCQUE2QjtJQUM3Qix1RUFBdUU7SUFFdkUsZ0NBQWdDO0lBQ2hDLGdCQUFnQjtJQUNoQiw0REFBNEQ7SUFDNUQsd0NBQXdDO0lBQ3hDLGFBQWE7SUFDYiwrQkFBK0I7SUFDL0IsTUFBTTtJQUNOLElBQUk7SUFFSixXQUFXLENBQUMsQ0FBTSxFQUFFLE9BQVk7UUFDOUIsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXRELElBQUksS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxZQUFvQjtRQUNwQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRCxLQUFLLENBQUMsR0FBc0I7UUFDMUIsSUFBSSxHQUFHLENBQUMsVUFBVTtZQUFFLE9BQU8sd0JBQXdCLENBQUM7YUFDL0MsSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLE9BQU87WUFBRSxPQUFPLHFCQUFxQixDQUFDOztZQUN2RCxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdDLElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ25ELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDO1lBQzlELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1lBQ3RGLElBQUksT0FBTztnQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFBO1FBQ3RELENBQUM7SUFDSCxDQUFDOzhHQTNQVSxvQkFBb0I7a0dBQXBCLG9CQUFvQix3c0hBaUVkLGlCQUFpQixzTEFHdkIsU0FBUywySUN6R3RCLDZna0JBNGVBOzsyRkR2Y2Esb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGVBQWU7K0VBTWhCLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBYUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBZ0I2QixTQUFTO3NCQUE1QyxlQUFlO3VCQUFDLGlCQUFpQjtnQkFDZCxVQUFVO3NCQUE3QixLQUFLO3VCQUFDLFdBQVc7Z0JBRUksVUFBVTtzQkFBL0IsU0FBUzt1QkFBQyxTQUFTO2dCQUNLLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFHdkIsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgZWZmZWN0LFxyXG4gIGlucHV0LFxyXG4gIG1vZGVsLFxyXG4gIHNpZ25hbCxcclxuICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1lbnVJdGVtLCBUcmVlTm9kZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgVHJlZVRhYmxlIH0gZnJvbSAncHJpbWVuZy90cmVldGFibGUnO1xyXG5pbXBvcnQge1xyXG4gIFZhbHVlT3JGbixcclxuICBnZXRPckV4ZWN1dGUsXHJcbiAgbWFwVG9NZW51SXRlbSxcclxufSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS9rdi1tZW51aXRlbSc7XHJcbmltcG9ydCB7IFRhYmxlUGFnaW5hdGUgfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5wYWdpbmF0ZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vYXBpL2RpcmVjdGl2ZXMvdGVtcGxhdGUvdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVHJlZVRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vYXBpL2NvbXBvbmVudHMvdHJlZS10YWJsZS90cmVlLXRhYmxlLmNvbmZpZyc7XHJcbmltcG9ydCB7IFRyZWVUYWJsZUtleXMgfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90cmVlLXRhYmxlL3RyZWUtdGFibGUta2V5cyc7XHJcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgVGFibGVDb25maWdDb2x1bW4gfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb25maWcuY29sdW1uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtdHJlZS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXRyZWUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LXRyZWUtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2VHJlZXRhYmxlQ29tcG9uZW50IHtcclxuICBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcclxuICBASW5wdXQoKSBkaXNhYmxlUm93Tm9kZVN0aWNreTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBjb25maWchOiBUcmVlVGFibGVDb25maWc7XHJcbiAgLy8gQElucHV0KCkgZGF0YVNvdXJjZSE6IGFueTtcclxuICBASW5wdXQoKSBncmlkTGluZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0YWJsZUNhcHRhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBwYWdpbmF0b3IgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHJvd3MgPSAxMDtcclxuICBASW5wdXQoKSB0cmVlVGFibGVEcmFnZ2FibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSB0cmFuc2ZlckFycmF5SXRlbSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG9yZGVuYWNhbyE6IHN0cmluZztcclxuICBASW5wdXQoKSB0b3RhbFJlY29yZHMhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgdGV4dG9FbXB0eU1lc3NhZ2U6IHN0cmluZyA9ICdOZW5odW0gcmVnaXN0cm8gZW5jb250cmFkbyc7XHJcbiAgQElucHV0KCkgY2hpbGRyZW5SZWNvaWw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNjcm9sbEhlaWdodDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgaW5kRnVsbFBhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZGF0YVNvdXJjZSA9IG1vZGVsPGFueVtdPihbXSk7XHJcbiAgdGFtYW5ob1RlbGEgPSBzaWduYWw8bnVtYmVyPigwKTtcclxuICBrdlRyZWVUYWJsZSA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPigna3ZUcmVlVGFibGUnKTtcclxuICBpc0xvYWRpbmdTa2VsZXRvbiA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBkYXRhU291cmNlTW9jazogYW55W10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgTyB2YWxvciBkZSBwYWdlTGlua3Mgw6kgYXRyaWJ1w61kbyBkZSBhY29yZG8gY29tIG8gdGFtYW5obyBkYSB0ZWxhLCBlc3NhIHByb3ByaWVkYWRlIG7Do28gZXN0w6Egc2VuZG8gdXRpbGl6YWRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnZUxpbmtzT3B0aW9ucyE6IG51bWJlcjtcclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBPIHZhbG9yIGRlIHBhZ2VMaW5rcyDDqSBhdHJpYnXDrWRvIGRlIGFjb3JkbyBjb20gbyB0YW1hbmhvIGRhIHRlbGEsIGVzc2EgcHJvcHJpZWRhZGUgbsOjbyBlc3TDoSBzZW5kbyB1dGlsaXphZGFcclxuICAgKi9cclxuICBASW5wdXQoKSBwYWdlTGlua3MhOiBudW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgQSBxdWFudGlkYWRlIGRlIHBhZ2luaXRvclBhZ2VJY29ucyDDqSBhdHJpYnXDrWRvIGRlIGFjb3JkbyBjb20gbyB0YW1hbmhvIGRhIHRlbGEsIGVzc2EgcHJvcHJpZWRhZGUgbsOjbyBlc3TDoSBzZW5kbyB1dGlsaXphZGFcclxuICAgKi9cclxuICBASW5wdXQoKSBzaG93Rmlyc3RMYXN0SWNvbiE6IGJvb2xlYW47XHJcblxyXG4gIEBPdXRwdXQoKSBvbkZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUGFnaW5hdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkFjdGl2ZUl0ZW1Mb3RlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZG91YmxlQ2xpY2tFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uTm9kZVNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uTm9kZVVuc2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Ecm9wSXRlbTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGlvbktleXMgPSBtb2RlbDxUcmVlVGFibGVLZXlzIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMubG9hZGluZ1NrZWxldG9uVXRpbGl0aWVzKCk7XHJcblxyXG4gICAgdGhpcy50YW1hbmhvVGVsYS5zZXQod2luZG93LmlubmVyV2lkdGgpO1xyXG4gICAgaWYgKHRoaXMub3JkZW5hY2FvKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQodGhpcy5zb3J0VHJlZU5vZGVzKHRoaXMuZGF0YVNvdXJjZSgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaW5kRnVsbFBhZ2UpXHJcbiAgICAgIHRoaXMuc2V0TWF4SGVpZ2h0VHJlZVRhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8YW55PjtcclxuICBASW5wdXQoJ3RlbXBsYXRlcycpIF90ZW1wbGF0ZXMhOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHJlZVRhYmxlKSBwVHJlZVRhYmxlITogVHJlZVRhYmxlO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0QnVzY2EnKSBpbnB1dEJ1c2NhITogRWxlbWVudFJlZjtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXHJcbiAgb25XaW5kb3dSZXNpemUoKSB7XHJcbiAgICB0aGlzLnRhbWFuaG9UZWxhLnNldCh3aW5kb3cuaW5uZXJXaWR0aCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWN0aXZlSXRlbShyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMub25BY3RpdmVJdGVtLmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWN0aXZlSXRlbUxvdGUocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLm9uQWN0aXZlSXRlbUxvdGUuZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIGdldE9yRXhlY3V0ZTxUPihhY3Rpb246IFZhbHVlT3JGbjxUPiwgZGF0YTogYW55KTogVCB7XHJcbiAgICByZXR1cm4gZ2V0T3JFeGVjdXRlKGFjdGlvbiwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25HbG9iYWxGaWx0ZXIodGFibGU6IFRyZWVUYWJsZSwgZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLm9uRmlsdGVyLmVtaXQoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSk7XHJcbiAgICB0YWJsZS5maWx0ZXJHbG9iYWwoKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSwgJ2NvbnRhaW5zJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcGFnaW5hdGUoJGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICgkZXZlbnQpIHtcclxuICAgICAgbGV0IHBhZ2luYUluaWNpYWwgPVxyXG4gICAgICAgICgkZXZlbnQ/LmZpcnN0ID4gMCA/ICRldmVudC5maXJzdCAvICRldmVudC5yb3dzIDogJGV2ZW50LmZpcnN0KSArIDE7XHJcbiAgICAgIGxldCB0ZXJtb1Blc3F1aXNhID0gJyc7XHJcbiAgICAgIGxldCBvcmRlbmFjYW8gPSAnJztcclxuXHJcbiAgICAgIGlmICgkZXZlbnQuZ2xvYmFsRmlsdGVyKSB0ZXJtb1Blc3F1aXNhID0gJGV2ZW50Lmdsb2JhbEZpbHRlcjtcclxuXHJcbiAgICAgIGlmICgkZXZlbnQuc29ydEZpZWxkKVxyXG4gICAgICAgIG9yZGVuYWNhbyA9IGAkeyRldmVudC5zb3J0RmllbGR9ICR7JGV2ZW50LnNvcnRPcmRlciA9PT0gMSA/ICdBU0MnIDogJ0RFU0MnXHJcbiAgICAgICAgICB9YDtcclxuXHJcbiAgICAgIGNvbnN0IG9iamV0bzogVGFibGVQYWdpbmF0ZSA9IHtcclxuICAgICAgICBwYWdpbmFJbmljaWFsOiBwYWdpbmFJbmljaWFsLFxyXG4gICAgICAgIHRhbWFuaG9QYWdpbmE6ICRldmVudC5yb3dzLFxyXG4gICAgICAgIHRlcm1vUGVzcXVpc2E6IHRlcm1vUGVzcXVpc2EsXHJcbiAgICAgICAgb3JkZW5hY2FvOiBvcmRlbmFjYW8sXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLm9uUGFnaW5hdGUuZW1pdChvYmpldG8pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZGluZ1NrZWxldG9uVXRpbGl0aWVzKCkge1xyXG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZSgpLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmlzTG9hZGluZ1NrZWxldG9uKCkpIHtcclxuICAgICAgbGV0IHJvd0l0ZW06IGFueSA9IHt9O1xyXG4gICAgICB0aGlzLmNvbmZpZz8uY29sdW1ucy5mb3JFYWNoKChjb2wpID0+IHtcclxuICAgICAgICByb3dJdGVtW2NvbC5maWVsZF0gPSAnJztcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmRhdGFTb3VyY2VNb2NrID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy5yb3dzIH0sICgpID0+ICh7XHJcbiAgICAgICAgLi4ucm93SXRlbSxcclxuICAgICAgICBkYXRhOiB7IC4uLihyb3dJdGVtLmRhdGEgfHwge30pIH0sXHJcbiAgICAgICAgY2hpbGRyZW46IFt7IC4uLihyb3dJdGVtLmRhdGEgfHwge30pIH1dXHJcbiAgICAgIH0pKTtcclxuXHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQodGhpcy5kYXRhU291cmNlTW9jaylcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XHJcbiAgICBjb25zdCBkcmFnZ2VkTm9kZSA9IGV2ZW50Lml0ZW0uZGF0YTtcclxuICAgIGNvbnN0IGRyYWdnZWRDaGlsZERhdGEgPSBkcmFnZ2VkTm9kZS5ub2RlLmRhdGE7XHJcblxyXG4gICAgaWYgKGRyYWdnZWROb2RlLmxldmVsID09PSAwKSB7XHJcbiAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmRhdGFTb3VyY2UoKSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIH0gZWxzZSBpZiAoZHJhZ2dlZE5vZGUubGV2ZWwgPj0gMSkge1xyXG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gZHJhZ2dlZE5vZGUubm9kZS5wYXJlbnQ7XHJcblxyXG4gICAgICBpZiAocGFyZW50Tm9kZSkge1xyXG4gICAgICAgIGNvbnN0IHBhcmVudENoaWxkcmVuID0gcGFyZW50Tm9kZS5jaGlsZHJlbi5tYXAoXHJcbiAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZGF0YVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNDaGlsZEluZGV4ID0gcGFyZW50Q2hpbGRyZW4uaW5kZXhPZihkcmFnZ2VkQ2hpbGREYXRhKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVsYXRpdmVDdXJyZW50SW5kZXggPVxyXG4gICAgICAgICAgcHJldmlvdXNDaGlsZEluZGV4ICsgKGV2ZW50LmN1cnJlbnRJbmRleCAtIGV2ZW50LnByZXZpb3VzSW5kZXgpO1xyXG5cclxuICAgICAgICBjb25zdCB0YXJnZXRDaGlsZEluZGV4ID0gTWF0aC5tYXgoXHJcbiAgICAgICAgICAwLFxyXG4gICAgICAgICAgTWF0aC5taW4ocGFyZW50Q2hpbGRyZW4ubGVuZ3RoIC0gMSwgcmVsYXRpdmVDdXJyZW50SW5kZXgpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKHByZXZpb3VzQ2hpbGRJbmRleCAhPT0gLTEgJiYgdGFyZ2V0Q2hpbGRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShcclxuICAgICAgICAgICAgcGFyZW50Tm9kZS5jaGlsZHJlbixcclxuICAgICAgICAgICAgcHJldmlvdXNDaGlsZEluZGV4LFxyXG4gICAgICAgICAgICB0YXJnZXRDaGlsZEluZGV4XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkcm9wSW5mbzogYW55ID0ge1xyXG4gICAgICAgICAgcHJldmlvdXNDaGlsZEluZGV4OiBwcmV2aW91c0NoaWxkSW5kZXggKyAxLFxyXG4gICAgICAgICAgdGFyZ2V0Q2hpbGRJbmRleDogdGFyZ2V0Q2hpbGRJbmRleCArIDEsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkRyb3BJdGVtLmVtaXQoeyBldmVudDogZXZlbnQsIGRyb3BDaGlsZEluZm86IGRyb3BJbmZvIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhU291cmNlLnNldChbLi4udGhpcy5kYXRhU291cmNlKCldKTtcclxuXHJcbiAgICBpZiAoZHJhZ2dlZE5vZGUubGV2ZWwgPT09IDApIHtcclxuICAgICAgdGhpcy5vbkRyb3BJdGVtLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc29ydFRyZWVOb2Rlcyhub2RlczogVHJlZU5vZGVbXSk6IFRyZWVOb2RlW10ge1xyXG4gICAgcmV0dXJuIG5vZGVzXHJcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmRhdGFbdGhpcy5vcmRlbmFjYW9dIC0gYi5kYXRhW3RoaXMub3JkZW5hY2FvXSlcclxuICAgICAgLm1hcCgobm9kZSkgPT4ge1xyXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBub2RlLmNoaWxkcmVuID0gdGhpcy5zb3J0VHJlZU5vZGVzKG5vZGUuY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBjYWxjdWxhdGVUYXJnZXRDaGlsZEluZGV4KFxyXG4gIC8vICAgZXZlbnQ6IENka0RyYWdEcm9wPGFueT4sXHJcbiAgLy8gICBwYXJlbnRDaGlsZHJlbjogYW55W10sXHJcbiAgLy8gICBwcmV2aW91c0NoaWxkSW5kZXg6IG51bWJlclxyXG4gIC8vICk6IG51bWJlciB7XHJcbiAgLy8gICBjb25zdCB0YXJnZXRDaGlsZEluZGV4ID1cclxuICAvLyAgICAgcHJldmlvdXNDaGlsZEluZGV4ICsgKGV2ZW50LmN1cnJlbnRJbmRleCAtIGV2ZW50LnByZXZpb3VzSW5kZXgpO1xyXG5cclxuICAvLyAgIGlmICh0YXJnZXRDaGlsZEluZGV4IDwgMCkge1xyXG4gIC8vICAgICByZXR1cm4gMDtcclxuICAvLyAgIH0gZWxzZSBpZiAodGFyZ2V0Q2hpbGRJbmRleCA+PSBwYXJlbnRDaGlsZHJlbi5sZW5ndGgpIHtcclxuICAvLyAgICAgcmV0dXJuIHBhcmVudENoaWxkcmVuLmxlbmd0aCAtIDE7XHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICByZXR1cm4gdGFyZ2V0Q2hpbGRJbmRleDtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGRvdWJsZUNsaWNrKGU6IGFueSwgcm93RGF0YTogYW55KSB7XHJcbiAgICBsZXQgZXZlbnREb3VibGVDbGljayA9IHsgZXZlbnQ6IGUsIHJvd0RhdGE6IHJvd0RhdGEgfTtcclxuXHJcbiAgICBsZXQgYXJyYXk6IHN0cmluZ1tdID0gW107XHJcbiAgICBlLnRhcmdldC5jbGFzc0xpc3QuZm9yRWFjaCgoeDogYW55KSA9PiBhcnJheS5wdXNoKHgpKTtcclxuXHJcbiAgICB0aGlzLmRvdWJsZUNsaWNrRXZlbnQuZW1pdChldmVudERvdWJsZUNsaWNrKTtcclxuICB9XHJcblxyXG4gIG9uTm9kZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25Ob2RlU2VsZWN0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Ob2RlVW5zZWxlY3RlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uTm9kZVVuc2VsZWN0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VzdG9tVGVtcGxhdGUodGVtcGxhdGVuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZXNbdGVtcGxhdGVuYW1lXTtcclxuICB9XHJcblxyXG4gIGdldEljb24oaWNvbjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBpY29uLmluY2x1ZGVzKCdwaS0nKSA/IGBwaSAke2ljb259YCA6ICcnO1xyXG4gIH1cclxuXHJcbiAgYWxpZ24oY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLmNlbnRyYWxpemUpIHJldHVybiAnanVzdGlmeS1jb250ZW50LWNlbnRlcic7XHJcbiAgICBlbHNlIGlmIChjb2wuYWxpZ24gPT0gJ3JpZ2h0JykgcmV0dXJuICdqdXN0aWZ5LWNvbnRlbnQtZW5kJztcclxuICAgIGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRUcmVlVGFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5wVHJlZVRhYmxlKSB0aGlzLnBUcmVlVGFibGUucmVzZXQoKTtcclxuICAgIGlmICh0aGlzLmlucHV0QnVzY2EpIHRoaXMuaW5wdXRCdXNjYS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRNYXhIZWlnaHRUcmVlVGFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5rdlRyZWVUYWJsZSgpPy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCkge1xyXG4gICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmt2VHJlZVRhYmxlKCk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmt2LXRyZWV0YWJsZS1jb250YWluZXInKVxyXG4gICAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSBgJHtoZWlnaHR9cHhgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjcmlhck1lbnVzTW9kYWwgPSBjb21wdXRlZCgoKSA9PiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuYWN0aW9ucyAmJiBkYXRhKSB7XHJcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIHRoaXMuY29uZmlnLmFjdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBtZW51SW5zZXJ0ID0gbWFwVG9NZW51SXRlbShhY3Rpb24sIGRhdGEpO1xyXG5cclxuICAgICAgICBsZXQgaXRlbSA9IHRoaXMubWVudUl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PiB4LmNvbW1hbmQgPT0gbWVudUluc2VydC5jb21tYW5kXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09IDApIHRoaXMubWVudUl0ZW1zLnB1c2gobWVudUluc2VydCk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5sYWJlbCAhPSBpdGVtWzBdLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKG1lbnVJbnNlcnQudmlzaWJsZSAhPSBpdGVtWzBdLnZpc2libGUpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5tZW51SXRlbXMuaW5kZXhPZihpdGVtWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5kaXNhYmxlZCAhPSBpdGVtWzBdLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHZhbGlkYXRlQWN0aW9uUG9zaXRpb24gPSBjb21wdXRlZCgoKSA9PiAocm93Tm9kZTogYW55KSA9PiB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuYWN0aW9uc1BhaSAmJiByb3dOb2RlLmxldmVsID09IDApIHJldHVybiBmYWxzZTtcclxuICAgIGVsc2UgcmV0dXJuIHRydWU7XHJcbiAgfSk7XHJcblxyXG4gIGlzU2VsZWN0RW5hYmxlZCA9IGNvbXB1dGVkKCgpID0+IChyb3dEYXRhOiBhbnksIHJvd05vZGU6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnZpc2libGVDaGVja2JveEZ1bmN0aW9uXHJcbiAgICAgID8gdGhpcy5jb25maWcudmlzaWJsZUNoZWNrYm94RnVuY3Rpb24ocm93RGF0YSwgcm93Tm9kZSlcclxuICAgICAgOiB0cnVlXHJcbiAgfSk7XHJcblxyXG4gIGlzRGlzYWJsZWRDaGVja2JveCA9IGNvbXB1dGVkKCgpID0+IChyb3dEYXRhOiBhbnksIHJvd05vZGU6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmRpc2FibGVDb250cm9sQ2hlY2tib3hGdW5jdGlvblxyXG4gICAgICA/IHRoaXMuY29uZmlnLmRpc2FibGVDb250cm9sQ2hlY2tib3hGdW5jdGlvbihyb3dEYXRhLCByb3dOb2RlKVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH0pO1xyXG5cclxuICB2YWxpZGF0ZVNob3dUZW1wbGF0ZSA9IGNvbXB1dGVkKCgpID0+IChyb3dOb2RlOiBhbnksIGNvbDogYW55KSA9PiB7XHJcbiAgICBpZiAoY29sLnRlbXBsYXRlT25seSkge1xyXG4gICAgICBpZiAoY29sLnRlbXBsYXRlT25seSA9PT0gJ3BhaScpIHtcclxuICAgICAgICByZXR1cm4gcm93Tm9kZS5sZXZlbCA9PT0gMDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sLnRlbXBsYXRlT25seSA9PT0gJ2ZpbGhvJykge1xyXG4gICAgICAgIHJldHVybiByb3dOb2RlLmxldmVsID09PSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9KTtcclxuXHJcbiAgZXhpYmlyQ2FtcG8gPSBjb21wdXRlZCgoKSA9PiAoZmllbGQ6IGFueSwgcm93RGF0YTogYW55KSA9PiB7XHJcbiAgICBsZXQgdmlzaWJsZSA9IGZpZWxkLnZpc2libGUgPyBmaWVsZC52aXNpYmxlKHJvd0RhdGEpIDogdHJ1ZTtcclxuICAgIHJldHVybiB2aXNpYmxlO1xyXG4gIH0pO1xyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwia3YtdHJlZXRhYmxlLWNvbnRhaW5lclwiICNrdlRyZWVUYWJsZT5cclxuICA8cC10cmVlVGFibGVcclxuICAgICN0dFxyXG4gICAgY2RrRHJvcExpc3RcclxuICAgIGNsYXNzPVwiZXhhbXBsZS1saXN0XCJcclxuICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcclxuICAgIFt2YWx1ZV09XCJkYXRhU291cmNlKClcIlxyXG4gICAgW2NvbHVtbnNdPVwiY29uZmlnLmNvbHVtbnNcIlxyXG4gICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiXHJcbiAgICBbdGFibGVTdHlsZV09XCJ7ICdtaW4td2lkdGgnOiAnNTByZW0nIH1cIlxyXG4gICAgW3Jlc2l6YWJsZUNvbHVtbnNdPVwidHJ1ZVwiXHJcbiAgICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvclwiXHJcbiAgICBbcm93c109XCJyb3dzXCJcclxuICAgIFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzXCJcclxuICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwiWzUsIDEwLCAxNSwgMjUsIDUwXVwiXHJcbiAgICBbc2hvd0ZpcnN0TGFzdEljb25dPVwidGFtYW5ob1RlbGEoKSA+IDk2MCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICBbcGFnZUxpbmtzXT1cInRhbWFuaG9UZWxhKCkgPiA5NjAgPyAyIDogMVwiXHJcbiAgICBbc3R5bGVDbGFzc109XCJncmlkTGluZXMgPyAncC10cmVldGFibGUtZ3JpZGxpbmVzJyA6ICcnXCJcclxuICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgIFtzZWxlY3Rpb25LZXlzXT1cInNlbGVjdGlvbktleXMoKVwiXHJcbiAgICAoc2VsZWN0aW9uS2V5c0NoYW5nZSk9XCJzZWxlY3Rpb25LZXlzLnNldCgkZXZlbnQpXCJcclxuICAgIFtsYXp5XT1cImNvbmZpZy5sYXp5XCJcclxuICAgIChvbkxhenlMb2FkKT1cInBhZ2luYXRlKCRldmVudClcIlxyXG4gICAgKG9uTm9kZVNlbGVjdCk9XCJvbk5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgIChvbk5vZGVVbnNlbGVjdCk9XCJvbk5vZGVVbnNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcclxuICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IC0ge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9XCJcclxuICAgIFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0XCJcclxuICA+XHJcbiAgICBAaWYoY29uZmlnLmVuYWJsZUNhdGlvbikge1xyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdyaWQgZm9ybWdyaWQgcC1mbHVpZCBjb2wtMTIgbS0wIHAtMVwiXHJcbiAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZWFlYWVhXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgQGlmKGNvbmZpZy50aXRsZSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgZm9udC1ib2xkIG15LTNcIj57eyBjb25maWcudGl0bGUgfX08L2Rpdj5cclxuICAgICAgICAgIH0gQGlmKGNvbmZpZy5zdWJ0aXRsZSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbWItNCBmb250LW1lZGl1bVwiPnt7IGNvbmZpZy5zdWJ0aXRsZSB9fTwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGNvbC0xMCBwLTAgbWQ6Y29sLTYgbGc6Y29sLTQganVzdGlmeS1jb250ZW50LWNlbnRlciB7e1xyXG4gICAgICAgICAgICB0YW1hbmhvVGVsYSgpIDwgNzY4ID8gJycgOiAnaW5wdXQtc2VhcmNoJ1xyXG4gICAgICAgICAgfX1cIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEBpZihjb25maWcuZW5hYmxlRmlsdGVyKSB7XHJcblxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwLWlucHV0LWljb24tbGVmdFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLXNlYXJjaFwiPjwvaT5cclxuXHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcclxuICAgICAgICAgICAgICBwQXV0b0ZvY3VzXHJcbiAgICAgICAgICAgICAgW2F1dG9mb2N1c109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgKGlucHV0KT1cIm9uR2xvYmFsRmlsdGVyKHR0LCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlBlc3F1aXNhci4uLlwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJoLTJyZW1cIlxyXG4gICAgICAgICAgICAgICNpbnB1dEJ1c2NhXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGNvbC0xIGp1c3RpZnktY29udGVudC1lbmQgcC0wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBnYXAtMiBidG5zLW9wdGlvbnNcIj5cclxuICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zTG90ZTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIEBpZigoc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwIHx8IGFjdGlvbi5zaG93QWNvZXNMb3RlKSAmJlxyXG4gICAgICAgICAgICBleGliaXJDYW1wbygpKGFjdGlvbiwgdGhpcy5hY3Rpb24pKSB7XHJcbiAgICAgICAgICAgIDxrdi1idXR0b25cclxuICAgICAgICAgICAgICAob25DbGljayk9XCJhY3Rpb24/LmNvbW1hbmQoKTsgYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJnZXRPckV4ZWN1dGUoYWN0aW9uLnRvb2x0aXAsIHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidib3R0b20nXCJcclxuICAgICAgICAgICAgICBbc2l6ZV09XCInc21hbGwnXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvbi5kaXNhYmxlZCwgc2VsZWN0ZWRJdGVtcykgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtpY29uXT1cImdldE9yRXhlY3V0ZShhY3Rpb24uaWNvbiwgc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICAgIFtzZXZlcml0eV09XCJhY3Rpb24uc2V2ZXJpdHkgfHwgJ3RlcnRpYXJ5J1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIH0gfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIH0gQGlmKHNob3dIZWFkZXIpe1xyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgQGZvcihjb2wgb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KXtcclxuICAgICAgICA8dGhcclxuICAgICAgICAgIFt0dFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbkRpc2FibGVkXT1cImNvbC5zb3J0YWJsZSA9PT0gZmFsc2VcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IGZsZXg6ICRpbmRleCA9PSAwLCAnZ2FwLTMnOiAkaW5kZXggPT0gMCB9XCI+XHJcbiAgICAgICAgICAgICAgQGlmKCRpbmRleCA9PSAwICYmIGNvbmZpZy5lbmFibGVTZWxlY3QpIHtcclxuICAgICAgICAgICAgICA8cC10cmVlVGFibGVIZWFkZXJDaGVja2JveFxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyICB7eyBhbGlnbihjb2wpIH19XCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteHNcIj57eyBjb2wuaGVhZGVyIH19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgIEBpZihjb2wuc29ydGFibGUpIHtcclxuICAgICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVNvcnRJY29uIFtmaWVsZF09XCJjb2wuZmllbGRcIiBjbGFzcz1cInBiLTFcIiAvPlxyXG4gICAgICAgICAgICAgICAgfSBAaWYoY29sLmhlYWRlclRvb2x0aXApIHtcclxuICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJjb2wuaGVhZGVyVG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIGluZm9cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIEBpZiAoY29uZmlnLmFjdGlvbnM/Lmxlbmd0aCA/PyAwID4gMCB8fCBjb25maWcuYWN0aW9uc1BhaSkge1xyXG4gICAgICAgIDx0aCBbc3R5bGUud2lkdGhdPVwiNVwiPjwvdGg+XHJcbiAgICAgICAgfSB9XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIEBmb3IgKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICA8dGhcclxuICAgICAgICAgIFt0dFNvcnRhYmxlQ29sdW1uXT1cImNvbC5maWVsZFwiXHJcbiAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbkRpc2FibGVkXT1cImNvbC5zb3J0YWJsZSA9PT0gZmFsc2VcIlxyXG4gICAgICAgICAgW3N0eWxlLndpZHRoXT1cImNvbC53aWR0aFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIHt7IGFsaWduKGNvbCkgfX1cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIEBpZihjb2wuc29ydGFibGUpIHtcclxuICAgICAgICAgICAgPHAtdHJlZVRhYmxlU29ydEljb24gW2ZpZWxkXT1cImNvbC5maWVsZFwiIGNsYXNzPVwicGItMVwiIC8+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGg+XHJcbiAgICAgICAgfSBAaWYgKGNvbmZpZy5hY3Rpb25zPy5sZW5ndGggPz8gMCA+IDAgfHwgY29uZmlnLmFjdGlvbnNQYWkpIHtcclxuICAgICAgICA8dGggW3N0eWxlLndpZHRoXT1cIjVcIj48L3RoPlxyXG4gICAgICAgIH1cclxuICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICB9XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlXHJcbiAgICAgIHBUZW1wbGF0ZT1cImJvZHlcIlxyXG4gICAgICBsZXQtcm93Tm9kZVxyXG4gICAgICBsZXQtcm93RGF0YT1cInJvd0RhdGFcIlxyXG4gICAgICBsZXQtY29sdW1ucz1cImNvbHVtbnNcIlxyXG4gICAgPlxyXG4gICAgICBAaWYoaXNMb2FkaW5nU2tlbGV0b24oKSkgeyBAZm9yKHNrZWxldG9uUm93IG9mXHJcbiAgICAgIGRhdGFTb3VyY2UoKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgIDx0cj5cclxuICAgICAgICBAZm9yKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpe1xyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHctZnVsbFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIEBpZigkaW5kZXggPT0gMCkge1xyXG4gICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIFtyb3dOb2RlXT1cInJvd05vZGVcIiAvPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIHctZnVsbFwiPlxyXG4gICAgICAgICAgICAgIDxwLXNrZWxldG9uIGhlaWdodD1cIjFyZW1cIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgfVxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHAtc2tlbGV0b24gW3N0eWxlXT1cInsgaGVpZ2h0OiAnMS41cmVtJywgd2lkdGg6ICcxLjVyZW0nIH1cIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgICAgfSB9IEBlbHNlIHsgQGlmKHRyZWVUYWJsZURyYWdnYWJsZSkge1xyXG4gICAgICA8dHJcclxuICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieVwiXHJcbiAgICAgICAgW2Nka0RyYWdEYXRhXT1cInJvd05vZGVcIlxyXG4gICAgICAgIFt0dFJvd109XCJyb3dOb2RlXCJcclxuICAgICAgICAoZGJsY2xpY2spPVwiZG91YmxlQ2xpY2soJGV2ZW50LCByb3dEYXRhKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBjYXBpdGFsaXplOiB0YWJsZUNhcHRhbGl6ZWQgfVwiXHJcbiAgICAgID5cclxuICAgICAgICBAZm9yKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpe1xyXG4gICAgICAgIDx0ZFxyXG4gICAgICAgICAgY2xhc3M9XCJkcmFnZ2FibGUtY2VsbFwiXHJcbiAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiXHJcbiAgICAgICAgICAgICFkaXNhYmxlUm93Tm9kZVN0aWNreSAmJiByb3dOb2RlLmxldmVsICE9PSAwID8gJ3N0aWNreScgOiBudWxsXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDwhLS0gW3N0eWxlLmxlZnQucHhdPVwiXHJcbiAgICAgICAgICAgICAgICAgICBjaGlsZHJlblJlY29pbCAmJiByb3dOb2RlLmxldmVsICE9PSAwID8gcm93Tm9kZS5sZXZlbCAqIDMwIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgXCIgLS0+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgIHt7IGFsaWduKGNvbCkgfX1cIj5cclxuICAgICAgICAgICAgQGlmKCRpbmRleCA9PSAwKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LWZ1bGwtaC1mdWxsIGZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBkcmFnLWljb25cIlxyXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICAgICAgY3Vyc29yOiBncmFiO1xyXG4gICAgICAgICAgICAgICAgICBmb250LXNpemU6IDI1cHg7XHJcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNmI3MjgwO1xyXG4gICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjk7XHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgY2RrRHJhZ0hhbmRsZVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIGRyYWdfaW5kaWNhdG9yXHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXIgY2xhc3M9XCJoaWRkZW5WaXNpYmxlXCIgW3Jvd05vZGVdPVwicm93Tm9kZVwiIC8+XHJcblxyXG4gICAgICAgICAgICAgIEBpZihjb25maWcuZW5hYmxlU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkQ2hlY2tib3goKShyb3dEYXRhLCByb3dOb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpc1NlbGVjdEVuYWJsZWQoKShyb3dEYXRhLCByb3dOb2RlKVxyXG4gICAgICAgICAgICAgICAgICAgID8gJ2Jsb2NrJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogJ25vbmUnLFxyXG4gICAgICAgICAgICAgICAgICAnbWFyZ2luLWxlZnQnOiBjb25maWcudmlzaWJsZUNoZWNrYm94RnVuY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICA/ICctMzRweCdcclxuICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICBAaWYgKGNvbC50ZW1wbGF0ZSAmJiB2YWxpZGF0ZVNob3dUZW1wbGF0ZSgpKHJvd05vZGUsIGNvbCkpIHtcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgQGlmKGdldEN1c3RvbVRlbXBsYXRlKGNvbC50ZW1wbGF0ZS5uYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvd0RhdGEgfVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB7e1xyXG4gICAgICAgICAgICAgICAgICAoY29sLmJvb2xlYW4gfHwgY29sLmNlbnRyYWxpemUpICYmICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJ1xyXG4gICAgICAgICAgICAgICAgfX0gZ2FwLTIgdy1mdWxsXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBAaWYoY29sLnRhZ0NvbG9yKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFnXCJcclxuICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbC50b29sdGlwVGFnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY29sLnRvb2x0aXBUYWcocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5maWVsZF0pXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbC50YWdDb2xvcihyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmZpZWxkXSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB9IEBpZihjb2wuYm9vbGVhbikge1xyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaSB7e1xyXG4gICAgICAgICAgICAgICAgICAgIHJvd0RhdGFbY29sLmZpZWxkXSA/ICdwaS1jaGVjayB0ZXh0LWdyZWVuLTMwMCcgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxcmVtOyBmb250LXdlaWdodDogNzAwXCJcclxuICAgICAgICAgICAgICAgID48L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tMCB0ZXh0LXhzXCI+e3sgcm93RGF0YVtjb2wuZmllbGRdIH19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgQGlmKGNvbC5zdWJ0aXRsZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTAgdGV4dC14cyBmb250LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcm93RGF0YVtjb2wuc3VidGl0bGVdIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgfSBAaWYoKGNvbmZpZy5hY3Rpb25zPy5sZW5ndGggPz8gMCA+IDApIHx8IGNvbmZpZy5hY3Rpb25zUGFpKSB7XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBzdHlsZT1cImJvcmRlci1sZWZ0OiBub25lOyB0ZXh0LWFsaWduOiBjZW50ZXI7IHdpZHRoOiAwXCJcclxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJSaWdodF09XCJyb3dOb2RlLmxldmVsID09PSAwID8gJ25vbmUnIDogJydcIlxyXG4gICAgICAgICAgW3N0eWxlLmJvcmRlckxlZnRdPVwicm93Tm9kZS5sZXZlbCA9PT0gMCA/ICdub25lJyA6ICcnXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBAaWYoKGNvbmZpZy5hY3Rpb25zPy5sZW5ndGggPz8gMCA+IDApICYmXHJcbiAgICAgICAgICB2YWxpZGF0ZUFjdGlvblBvc2l0aW9uKCkocm93Tm9kZSkpIHtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyIGljb24tbW9yZS1ob3JpelwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDIwcHg7IHBhZGRpbmc6IDAuMXJlbVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudCk7IGFjdGl2ZUl0ZW0ocm93RGF0YSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgbW9yZV9ob3JpelxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAZm9yKGFjdGlvbiBvZiBjb25maWcuYWN0aW9uczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIHt7IGNyaWFyTWVudXNNb2RhbCgpKHJvd0RhdGEpIH19XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxwLW1lbnVcclxuICAgICAgICAgICAgICAjbWVudVxyXG4gICAgICAgICAgICAgIFtwb3B1cF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbbW9kZWxdPVwibWVudUl0ZW1zXCJcclxuICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICA+PC9wLW1lbnU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH0gQGlmKGNvbmZpZy5hY3Rpb25zUGFpPy5sZW5ndGggPz8gMCA+IDAgJiYgcm93Tm9kZS5sZXZlbCA9PSAwKXtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGFjdGlvblBhaSBvZiBjb25maWcuYWN0aW9uc1BhaTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIEBpZihnZXRPckV4ZWN1dGUoYWN0aW9uUGFpLnZpc2libGUsIHJvd0RhdGEpID8/IHRydWUpIHtcclxuICAgICAgICAgICAgPGt2LWJ1dHRvblxyXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImFjdGl2ZUl0ZW0ocm93RGF0YSk7IGFjdGlvblBhaS5jb21tYW5kKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXHJcbiAgICAgICAgICAgICAgW2ljb25dPVwiYWN0aW9uUGFpLmljb25cIlxyXG4gICAgICAgICAgICAgIFtzZXZlcml0eV09XCJhY3Rpb25QYWkuc2V2ZXJpdHkgfHwgJ3RlcnRpYXJ5J1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdldE9yRXhlY3V0ZShhY3Rpb25QYWkuZGlzYWJsZWQsIHJvd0RhdGEpIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvblBhaS50b29sdGlwLCByb3dEYXRhKVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInbGVmdCdcIlxyXG4gICAgICAgICAgICAvPlxyXG5cclxuICAgICAgICAgICAgfSB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIH1cclxuICAgICAgPC90cj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgIDx0clxyXG4gICAgICAgIFt0dFJvd109XCJyb3dOb2RlXCJcclxuICAgICAgICAoZGJsY2xpY2spPVwiZG91YmxlQ2xpY2soJGV2ZW50LCByb3dEYXRhKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBjYXBpdGFsaXplOiB0YWJsZUNhcHRhbGl6ZWQgfVwiXHJcbiAgICAgID5cclxuICAgICAgICBAZm9yKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpe1xyXG4gICAgICAgIDx0ZFxyXG4gICAgICAgICAgW3N0eWxlLnBvc2l0aW9uXT1cInJvd05vZGUubGV2ZWwgIT09IDAgPyAnc3RpY2t5JyA6IG51bGxcIlxyXG4gICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiXHJcbiAgICAgICAgICAgIGNoaWxkcmVuUmVjb2lsICYmIHJvd05vZGUubGV2ZWwgIT09IDAgPyByb3dOb2RlLmxldmVsICogMzAgOiBudWxsXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgW3N0eWxlLmJvcmRlclJpZ2h0XT1cInJvd05vZGUubGV2ZWwgPT09IDAgPyAnbm9uZScgOiAnJ1wiXHJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyTGVmdF09XCJcclxuICAgICAgICAgICAgcm93Tm9kZS5sZXZlbCA9PT0gMCAmJiBjb2wuZmllbGQgIT0gY29uZmlnLmNvbHVtbnNbMF0uZmllbGRcclxuICAgICAgICAgICAgICA/ICdub25lJ1xyXG4gICAgICAgICAgICAgIDogJydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cge3sgYWxpZ24oY29sKSB9fVwiPlxyXG4gICAgICAgICAgICBAaWYoJGluZGV4ID09IDApIHtcclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctZnVsbC1oLWZ1bGwgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIGNsYXNzPVwiaGlkZGVuVmlzaWJsZVwiIFtyb3dOb2RlXT1cInJvd05vZGVcIiAvPlxyXG5cclxuICAgICAgICAgICAgICBAaWYoY29uZmlnLmVuYWJsZVNlbGVjdCkge1xyXG4gICAgICAgICAgICAgIDxwLXRyZWVUYWJsZUNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZENoZWNrYm94KCkocm93RGF0YSwgcm93Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheTogaXNTZWxlY3RFbmFibGVkKCkocm93RGF0YSwgcm93Tm9kZSlcclxuICAgICAgICAgICAgICAgICAgICA/ICdibG9jaydcclxuICAgICAgICAgICAgICAgICAgICA6ICdub25lJyxcclxuICAgICAgICAgICAgICAgICAgJ21hcmdpbi1sZWZ0JzogY29uZmlnLnZpc2libGVDaGVja2JveEZ1bmN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnLTM0cHgnXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgQGlmIChjb2wudGVtcGxhdGUgJiYgdmFsaWRhdGVTaG93VGVtcGxhdGUoKShyb3dOb2RlLCBjb2wpKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgIEBpZihnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSkpIHtcclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEN1c3RvbVRlbXBsYXRlKGNvbC50ZW1wbGF0ZS5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogcm93RGF0YSB9XCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIHt7XHJcbiAgICAgICAgICAgICAgICAgIChjb2wuYm9vbGVhbiB8fCBjb2wuY2VudHJhbGl6ZSkgJiYgJ2p1c3RpZnktY29udGVudC1jZW50ZXInXHJcbiAgICAgICAgICAgICAgICB9fSBnYXAtMiB3LWZ1bGxcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIEBpZihjb2wudGFnQ29sb3IpIHtcclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFnXCJcclxuICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbC50b29sdGlwVGFnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY29sLnRvb2x0aXBUYWcocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5maWVsZF0pXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbC50YWdDb2xvcihyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmZpZWxkXSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB9IEBpZihjb2wuYm9vbGVhbikge1xyXG5cclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGkge3tcclxuICAgICAgICAgICAgICAgICAgICByb3dEYXRhW2NvbC5maWVsZF0gPyAncGktY2hlY2sgdGV4dC1ncmVlbi0zMDAnIDogJydcclxuICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMXJlbTsgZm9udC13ZWlnaHQ6IDcwMFwiXHJcbiAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tMCB0ZXh0LXhzXCI+e3sgcm93RGF0YVtjb2wuZmllbGRdIH19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgQGlmKGNvbC5zdWJ0aXRsZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtLTAgdGV4dC14cyBmb250LXNlbWlib2xkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgcm93RGF0YVtjb2wuc3VidGl0bGVdIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgfSBAaWYoKGNvbmZpZy5hY3Rpb25zPy5sZW5ndGggPz8gMCA+IDApIHx8IGNvbmZpZy5hY3Rpb25zUGFpKSB7XHJcbiAgICAgICAgPHRkIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IG5vbmU7IHRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6IDBcIj5cclxuICAgICAgICAgIEBpZigoY29uZmlnLmFjdGlvbnM/Lmxlbmd0aCA/PyAwID4gMCkgJiZcclxuICAgICAgICAgIHZhbGlkYXRlQWN0aW9uUG9zaXRpb24oKShyb3dOb2RlKSkge1xyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgY3Vyc29yLXBvaW50ZXIgaWNvbi1tb3JlLWhvcml6XCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMjBweDsgcGFkZGluZzogMC4xcmVtXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KTsgYWN0aXZlSXRlbShyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBtb3JlX2hvcml6XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIEBmb3IoYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAge3sgY3JpYXJNZW51c01vZGFsKCkocm93RGF0YSkgfX1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPHAtbWVudVxyXG4gICAgICAgICAgICAgICNtZW51XHJcbiAgICAgICAgICAgICAgW3BvcHVwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJtZW51SXRlbXNcIlxyXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgID48L3AtbWVudT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfSBAaWYoY29uZmlnLmFjdGlvbnNQYWk/Lmxlbmd0aCA/PyAwID4gMCAmJiByb3dOb2RlLmxldmVsID09IDApe1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICBAZm9yIChhY3Rpb25QYWkgb2YgY29uZmlnLmFjdGlvbnNQYWk7IHRyYWNrICRpbmRleCkgeyBAaWZcclxuICAgICAgICAgICAgKGdldE9yRXhlY3V0ZShhY3Rpb25QYWkudmlzaWJsZSwgcm93RGF0YSkgPz8gdHJ1ZSkge1xyXG4gICAgICAgICAgICA8a3YtYnV0dG9uXHJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aXZlSXRlbShyb3dEYXRhKTsgYWN0aW9uUGFpLmNvbW1hbmQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJhY3Rpb25QYWkuaWNvblwiXHJcbiAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImFjdGlvblBhaS5zZXZlcml0eSB8fCAndGVydGlhcnknXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvblBhaS5kaXNhYmxlZCwgcm93RGF0YSkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJnZXRPckV4ZWN1dGUoYWN0aW9uUGFpLnRvb2x0aXAsIHJvd0RhdGEpXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIH0gfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICB9XHJcbiAgICAgIDwvdHI+XHJcbiAgICAgIH0gfVxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGRcclxuICAgICAgICAgIFthdHRyLmNvbHNwYW5dPVwiY29uZmlnLmNvbHVtbnMubGVuZ3RoICsgMVwiXHJcbiAgICAgICAgICBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiXHJcbiAgICAgICAgICBjbGFzcz1cInRleHQteHNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHRleHRvRW1wdHlNZXNzYWdlIH19XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9wLXRyZWVUYWJsZT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,39 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { KvTreetableComponent } from './kv-tree-table.component';
4
- import { PrimeNgModule } from '../../api/modules/primeng.module';
5
- import { KvButtonModule } from '../kv-button/kv-button.module';
6
- import { KvInputsModule } from '../kv-inputs/kv-inputs.module';
7
- import * as i0 from "@angular/core";
8
- export class KvTreetableModule {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreetableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.8", ngImport: i0, type: KvTreetableModule, declarations: [KvTreetableComponent], imports: [CommonModule,
11
- PrimeNgModule,
12
- KvButtonModule,
13
- KvInputsModule,
14
- KvButtonModule], exports: [KvTreetableComponent] }); }
15
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreetableModule, imports: [CommonModule,
16
- PrimeNgModule,
17
- KvButtonModule,
18
- KvInputsModule,
19
- KvButtonModule] }); }
20
- }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreetableModule, decorators: [{
22
- type: NgModule,
23
- args: [{
24
- declarations: [
25
- KvTreetableComponent
26
- ],
27
- imports: [
28
- CommonModule,
29
- PrimeNgModule,
30
- KvButtonModule,
31
- KvInputsModule,
32
- KvButtonModule
33
- ],
34
- exports: [
35
- KvTreetableComponent
36
- ]
37
- }]
38
- }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZS10YWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10cmVlLXRhYmxlL2t2LXRyZWUtdGFibGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQWlCL0QsTUFBTSxPQUFPLGlCQUFpQjs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBYjFCLG9CQUFvQixhQUdwQixZQUFZO1lBQ1osYUFBYTtZQUNiLGNBQWM7WUFDZCxjQUFjO1lBQ2QsY0FBYyxhQUdkLG9CQUFvQjsrR0FHWCxpQkFBaUIsWUFWMUIsWUFBWTtZQUNaLGFBQWE7WUFDYixjQUFjO1lBQ2QsY0FBYztZQUNkLGNBQWM7OzJGQU1MLGlCQUFpQjtrQkFmN0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osb0JBQW9CO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgS3ZUcmVldGFibGVDb21wb25lbnQgfSBmcm9tICcuL2t2LXRyZWUtdGFibGUuY29tcG9uZW50J1xyXG5pbXBvcnQgeyBQcmltZU5nTW9kdWxlIH0gZnJvbSAnLi4vLi4vYXBpL21vZHVsZXMvcHJpbWVuZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBLdkJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2t2LWJ1dHRvbi9rdi1idXR0b24ubW9kdWxlJztcclxuaW1wb3J0IHsgS3ZJbnB1dHNNb2R1bGUgfSBmcm9tICcuLi9rdi1pbnB1dHMva3YtaW5wdXRzLm1vZHVsZSc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgS3ZUcmVldGFibGVDb21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFByaW1lTmdNb2R1bGUsXHJcbiAgICBLdkJ1dHRvbk1vZHVsZSxcclxuICAgIEt2SW5wdXRzTW9kdWxlLFxyXG4gICAgS3ZCdXR0b25Nb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEt2VHJlZXRhYmxlQ29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZUcmVldGFibGVNb2R1bGUgeyB9XHJcbiJdfQ==