@po-ui/ng-templates 18.23.1 → 19.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/fesm2022/po-ui-ng-templates.mjs +139 -122
  2. package/fesm2022/po-ui-ng-templates.mjs.map +1 -1
  3. package/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.d.ts +1 -1
  4. package/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.d.ts +1 -1
  5. package/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.d.ts +1 -1
  6. package/lib/components/po-page-blocked-user/po-page-blocked-user.component.d.ts +1 -1
  7. package/lib/components/po-page-change-password/po-page-change-password-base.component.d.ts +1 -1
  8. package/lib/components/po-page-change-password/po-page-change-password.service.d.ts +1 -1
  9. package/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.d.ts +1 -1
  10. package/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.d.ts +1 -1
  11. package/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.d.ts +2 -2
  12. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.d.ts +1 -1
  13. package/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.d.ts +1 -1
  14. package/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.d.ts +2 -2
  15. package/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.d.ts +2 -2
  16. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.d.ts +1 -1
  17. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.d.ts +2 -2
  18. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/po-job-scheduler-parameters-template.directive.d.ts +1 -1
  19. package/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.d.ts +1 -1
  20. package/lib/components/po-page-login/po-page-login-base.component.d.ts +1 -1
  21. package/lib/components/po-page-login/po-page-login.service.d.ts +1 -1
  22. package/package.json +13 -15
  23. package/po-ui-ng-templates-19.0.0-rc.0.tgz +0 -0
  24. package/schematics/ng-add/index.js +2 -2
  25. package/schematics/ng-add/index.js.map +1 -1
  26. package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  27. package/schematics/ng-generate/po-page-blocked-user/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  28. package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  29. package/schematics/ng-generate/po-page-blocked-user/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  30. package/schematics/ng-generate/po-page-blocked-user/index.js +1 -1
  31. package/schematics/ng-generate/po-page-blocked-user/index.js.map +1 -1
  32. package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  33. package/schematics/ng-generate/po-page-change-password/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  34. package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  35. package/schematics/ng-generate/po-page-change-password/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  36. package/schematics/ng-generate/po-page-change-password/index.js +1 -1
  37. package/schematics/ng-generate/po-page-change-password/index.js.map +1 -1
  38. package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  39. package/schematics/ng-generate/po-page-dynamic-detail/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  40. package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  41. package/schematics/ng-generate/po-page-dynamic-detail/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  42. package/schematics/ng-generate/po-page-dynamic-detail/index.js +1 -1
  43. package/schematics/ng-generate/po-page-dynamic-detail/index.js.map +1 -1
  44. package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  45. package/schematics/ng-generate/po-page-dynamic-edit/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  46. package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  47. package/schematics/ng-generate/po-page-dynamic-edit/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  48. package/schematics/ng-generate/po-page-dynamic-edit/index.js +1 -1
  49. package/schematics/ng-generate/po-page-dynamic-edit/index.js.map +1 -1
  50. package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  51. package/schematics/ng-generate/po-page-dynamic-search/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  52. package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  53. package/schematics/ng-generate/po-page-dynamic-search/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  54. package/schematics/ng-generate/po-page-dynamic-search/index.js +1 -1
  55. package/schematics/ng-generate/po-page-dynamic-search/index.js.map +1 -1
  56. package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  57. package/schematics/ng-generate/po-page-dynamic-table/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  58. package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  59. package/schematics/ng-generate/po-page-dynamic-table/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  60. package/schematics/ng-generate/po-page-dynamic-table/index.js +1 -1
  61. package/schematics/ng-generate/po-page-dynamic-table/index.js.map +1 -1
  62. package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  63. package/schematics/ng-generate/po-page-job-scheduler/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  64. package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  65. package/schematics/ng-generate/po-page-job-scheduler/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  66. package/schematics/ng-generate/po-page-job-scheduler/index.js +1 -1
  67. package/schematics/ng-generate/po-page-job-scheduler/index.js.map +1 -1
  68. package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -2
  69. package/schematics/ng-generate/po-page-login/files/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +2 -1
  70. package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.spec.ts.template +4 -3
  71. package/schematics/ng-generate/po-page-login/files-standalone/__path__/__name@dasherize__/__name@dasherize__.component.ts.template +0 -1
  72. package/schematics/ng-generate/po-page-login/index.js +1 -1
  73. package/schematics/ng-generate/po-page-login/index.js.map +1 -1
  74. package/esm2022/lib/components/components.module.mjs +0 -84
  75. package/esm2022/lib/components/index.mjs +0 -12
  76. package/esm2022/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-modal-content.enum.mjs +0 -17
  77. package/esm2022/lib/components/po-modal-password-recovery/enums/po-modal-password-recovery-type.enum.mjs +0 -17
  78. package/esm2022/lib/components/po-modal-password-recovery/index.mjs +0 -8
  79. package/esm2022/lib/components/po-modal-password-recovery/interfaces/po-modal-password-recovery.interface.mjs +0 -2
  80. package/esm2022/lib/components/po-modal-password-recovery/literals/i18n/po-modal-password-recovery-literals.mjs +0 -119
  81. package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery-base.component.mjs +0 -293
  82. package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery-error-message/po-modal-password-recovery-error-message.component.mjs +0 -34
  83. package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.component.mjs +0 -451
  84. package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.module.mjs +0 -29
  85. package/esm2022/lib/components/po-modal-password-recovery/po-modal-password-recovery.service.mjs +0 -18
  86. package/esm2022/lib/components/po-page-background/index.mjs +0 -3
  87. package/esm2022/lib/components/po-page-background/po-page-background.component.mjs +0 -191
  88. package/esm2022/lib/components/po-page-background/po-page-background.module.mjs +0 -27
  89. package/esm2022/lib/components/po-page-blocked-user/enums/po-page-blocked-user-reason.enum.mjs +0 -17
  90. package/esm2022/lib/components/po-page-blocked-user/index.mjs +0 -8
  91. package/esm2022/lib/components/po-page-blocked-user/interfaces/po-page-blocked-user-reason-params.interface.mjs +0 -2
  92. package/esm2022/lib/components/po-page-blocked-user/literals/i18n/po-page-blocked-user-literals.mjs +0 -78
  93. package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-base.component.mjs +0 -197
  94. package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-contacts/po-page-blocked-user-contacts.component.mjs +0 -105
  95. package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user-reason/po-page-blocked-user-reason.component.mjs +0 -107
  96. package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user.component.mjs +0 -108
  97. package/esm2022/lib/components/po-page-blocked-user/po-page-blocked-user.module.mjs +0 -29
  98. package/esm2022/lib/components/po-page-change-password/index.mjs +0 -7
  99. package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password-recovery.interface.mjs +0 -2
  100. package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password-requirement.interface.mjs +0 -2
  101. package/esm2022/lib/components/po-page-change-password/interfaces/po-page-change-password.interface.mjs +0 -2
  102. package/esm2022/lib/components/po-page-change-password/literals/i18n/po-page-change-password-literals.mjs +0 -79
  103. package/esm2022/lib/components/po-page-change-password/po-page-change-password-base.component.mjs +0 -300
  104. package/esm2022/lib/components/po-page-change-password/po-page-change-password.component.mjs +0 -401
  105. package/esm2022/lib/components/po-page-change-password/po-page-change-password.module.mjs +0 -30
  106. package/esm2022/lib/components/po-page-change-password/po-page-change-password.service.mjs +0 -18
  107. package/esm2022/lib/components/po-page-dynamic-detail/index.mjs +0 -10
  108. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-actions.interface.mjs +0 -2
  109. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-back.interface.mjs +0 -2
  110. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-edit.interface.mjs +0 -2
  111. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-before-remove.interface.mjs +0 -2
  112. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-field.interface.mjs +0 -2
  113. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-metadata.interface.mjs +0 -2
  114. package/esm2022/lib/components/po-page-dynamic-detail/interfaces/po-page-dynamic-detail-options.interface.mjs +0 -2
  115. package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail-actions.service.mjs +0 -44
  116. package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.component.mjs +0 -546
  117. package/esm2022/lib/components/po-page-dynamic-detail/po-page-dynamic-detail.module.mjs +0 -54
  118. package/esm2022/lib/components/po-page-dynamic-edit/index.mjs +0 -11
  119. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-actions.interface.mjs +0 -2
  120. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-cancel.interface.mjs +0 -2
  121. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save-new.interface.mjs +0 -2
  122. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-before-save.interface.mjs +0 -2
  123. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-field.interface.mjs +0 -2
  124. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-literals.interface.mjs +0 -2
  125. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-metadata.interface.mjs +0 -2
  126. package/esm2022/lib/components/po-page-dynamic-edit/interfaces/po-page-dynamic-edit-options.interface.mjs +0 -2
  127. package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit-actions.service.mjs +0 -44
  128. package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.component.mjs +0 -889
  129. package/esm2022/lib/components/po-page-dynamic-edit/po-page-dynamic-edit.module.mjs +0 -60
  130. package/esm2022/lib/components/po-page-dynamic-search/index.mjs +0 -7
  131. package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-base.component.mjs +0 -133
  132. package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter-literals.interface.mjs +0 -2
  133. package/esm2022/lib/components/po-page-dynamic-search/po-advanced-filter/po-advanced-filter.component.mjs +0 -76
  134. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-base.component.mjs +0 -365
  135. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-filters.interface.mjs +0 -2
  136. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-literals.interface.mjs +0 -2
  137. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search-options.interface.mjs +0 -2
  138. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.component.mjs +0 -349
  139. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.interface.mjs +0 -2
  140. package/esm2022/lib/components/po-page-dynamic-search/po-page-dynamic-search.module.mjs +0 -52
  141. package/esm2022/lib/components/po-page-dynamic-table/index.mjs +0 -16
  142. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-actions.interface.mjs +0 -2
  143. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-detail.interface.mjs +0 -2
  144. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-duplicate.interface.mjs +0 -2
  145. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-edit.interface.mjs +0 -2
  146. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-new.interface.mjs +0 -2
  147. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove-all.interface.mjs +0 -2
  148. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-before-remove.interface.mjs +0 -2
  149. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-action.interface.mjs +0 -2
  150. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-custom-table-action.interface.mjs +0 -2
  151. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-field.interface.mjs +0 -2
  152. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-filters.interface.mjs +0 -2
  153. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-metadata.interface.mjs +0 -2
  154. package/esm2022/lib/components/po-page-dynamic-table/interfaces/po-page-dynamic-table-options.interface.mjs +0 -2
  155. package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-list-base.component.mjs +0 -271
  156. package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table-actions.service.mjs +0 -59
  157. package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table-literals.mjs +0 -63
  158. package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table.component.mjs +0 -1257
  159. package/esm2022/lib/components/po-page-dynamic-table/po-page-dynamic-table.module.mjs +0 -50
  160. package/esm2022/lib/components/po-page-job-scheduler/index.mjs +0 -6
  161. package/esm2022/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler-internal.interface.mjs +0 -2
  162. package/esm2022/lib/components/po-page-job-scheduler/interfaces/po-job-scheduler.interface.mjs +0 -2
  163. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-base.component.mjs +0 -302
  164. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-execution/po-page-job-scheduler-execution.component.mjs +0 -393
  165. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-internal.mjs +0 -13
  166. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-literals.mjs +0 -195
  167. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-lookup.service.mjs +0 -22
  168. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/index.mjs +0 -2
  169. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/index.mjs +0 -2
  170. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-job-scheduler-parameters-template/po-job-scheduler-parameters-template.directive.mjs +0 -92
  171. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-parameters/po-page-job-scheduler-parameters.component.mjs +0 -79
  172. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/index.mjs +0 -2
  173. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-job-scheduler-summary-template/index.mjs +0 -2
  174. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-job-scheduler-summary-template/po-job-scheduler-summary-template.directive.mjs +0 -44
  175. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler-summary/po-page-job-scheduler-summary.component.mjs +0 -211
  176. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.component.mjs +0 -418
  177. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.module.mjs +0 -85
  178. package/esm2022/lib/components/po-page-job-scheduler/po-page-job-scheduler.service.mjs +0 -224
  179. package/esm2022/lib/components/po-page-login/enums/po-page-login-authentication-type.enum.mjs +0 -15
  180. package/esm2022/lib/components/po-page-login/index.mjs +0 -8
  181. package/esm2022/lib/components/po-page-login/interfaces/po-page-login-custom-field.interface.mjs +0 -2
  182. package/esm2022/lib/components/po-page-login/interfaces/po-page-login-literals.interface.mjs +0 -2
  183. package/esm2022/lib/components/po-page-login/interfaces/po-page-login-recovery.interface.mjs +0 -2
  184. package/esm2022/lib/components/po-page-login/interfaces/po-page-login.interface.mjs +0 -2
  185. package/esm2022/lib/components/po-page-login/po-page-login-base.component.mjs +0 -1099
  186. package/esm2022/lib/components/po-page-login/po-page-login-popover/po-page-login-popover.component.mjs +0 -137
  187. package/esm2022/lib/components/po-page-login/po-page-login.component.mjs +0 -483
  188. package/esm2022/lib/components/po-page-login/po-page-login.module.mjs +0 -31
  189. package/esm2022/lib/components/po-page-login/po-page-login.service.mjs +0 -32
  190. package/esm2022/lib/index.mjs +0 -4
  191. package/esm2022/lib/po-templates.module.mjs +0 -18
  192. package/esm2022/lib/services/index.mjs +0 -4
  193. package/esm2022/lib/services/po-page-customization/index.mjs +0 -4
  194. package/esm2022/lib/services/po-page-customization/po-page-customization.module.mjs +0 -23
  195. package/esm2022/lib/services/po-page-customization/po-page-customization.service.mjs +0 -86
  196. package/esm2022/lib/services/po-page-customization/po-page-dynamic-options.interface.mjs +0 -2
  197. package/esm2022/lib/services/po-page-dynamic/index.mjs +0 -3
  198. package/esm2022/lib/services/po-page-dynamic/po-page-dynamic-literals.interface.mjs +0 -2
  199. package/esm2022/lib/services/po-page-dynamic/po-page-dynamic.module.mjs +0 -23
  200. package/esm2022/lib/services/po-page-dynamic/po-page-dynamic.service.mjs +0 -106
  201. package/esm2022/lib/services/services.module.mjs +0 -18
  202. package/esm2022/lib/utils/util.mjs +0 -428
  203. package/esm2022/po-ui-ng-templates.mjs +0 -5
  204. package/esm2022/public-api.mjs +0 -2
  205. package/po-ui-ng-templates-18.23.1.tgz +0 -0
@@ -1,300 +0,0 @@
1
- import { EventEmitter, Input, Output, Directive } from '@angular/core';
2
- import { convertToBoolean, isExternalLink, isTypeof } from '../../utils/util';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * @description
6
- *
7
- * O componente `po-page-change-password` é utilizado como template para tela de cadastro ou alteração de senha.
8
- *
9
- * Apresenta dicas e regras para senhas mais seguras e também possibilidade de personalizar o redirecionamento para as telas
10
- * 'esqueceu a senha', 'voltar' e 'entrar no sistema'. Os textos das telas são pré-definidos e imutáveis.
11
- *
12
- * A propriedade `p-url-new-password` automatiza a rotina do template e simplifica o processo de cadastro/alteração de senha, bastando
13
- * definir uma url para POST das informações digitadas pelo usuário. A flexibilidade e praticidade podem chegar a um nível em que o
14
- * desenvolvimento da aplicação no *client side* é desprovida de qualquer código-fonte relacionado à rotina de cadastro/alteração de senha.
15
- * Seu detalhamento para uso pode ser visto logo abaixo em *propriedades*.
16
- * Caso julgue necessário, pode-se também definir manualmente a rotina do componente.
17
- *
18
- * Para que as imagens sejam exibidas corretamente, é necessário incluir o caminho delas ao projeto. Para isso, edite
19
- * o *assets* no arquivo **angular.json** da aplicação na seguinte ordem:
20
- * ```
21
- * "assets": [
22
- * "src/assets",
23
- * "src/favicon.ico",
24
- * {
25
- * "glob": "**\/*",
26
- * "input": "node_modules/@po-ui/style/images",
27
- * "output": "assets/images"
28
- * }
29
- * ]
30
- * ```
31
- */
32
- export class PoPageChangePasswordBaseComponent {
33
- /**
34
- * @optional
35
- *
36
- * @description
37
- *
38
- * Caminho para a logomarca localizada na parte superior.
39
- *
40
- * > Caso seja indefinida o espaço se mantém preservado porém vazio.
41
- */
42
- logo;
43
- /**
44
- * @optional
45
- *
46
- * @description
47
- *
48
- * Caminho para a logomarca localizada no rodapé.
49
- */
50
- secondaryLogo;
51
- /**
52
- * Token para solicitação de troca/recuperação de senha.
53
- *
54
- * > Esta propriedade será ignorada caso exista um token como parâmetro na URL inicial do template.
55
- */
56
- token;
57
- /**
58
- * @optional
59
- *
60
- * @description
61
- *
62
- * URL para a ação de retorno da página.
63
- *
64
- * > O botão `Voltar` aparece apenas para telas de alteração de senha, ou seja, só aparece se a propriedade `p-hide-current-password` for
65
- * falsa.
66
- *
67
- * @default `/`
68
- */
69
- urlBack = '/';
70
- /**
71
- * Endpoint usado pelo template para realizar um POST. Quando preenchido, o método `p-submit` será ignorado e o componente adquirirá
72
- * automatização para o processo de cadastro/troca de senha.
73
- *
74
- * ### Processo
75
- * Ao digitar um valor válido nos campos de senha e pressionar **salvar**,
76
- * o componente fará uma requisição `POST` na url especificada nesta propriedade passando o objeto contendo os valores definidos pelo
77
- * usuário.
78
- *
79
- * ```
80
- * body {
81
- * token?: token,
82
- * oldPassword?: oldPassword,
83
- * newPassword: newPassword
84
- * }
85
- * ```
86
- *
87
- * O código de resposta HTTP de status esperado é `204`.
88
- *
89
- * Em caso de **sucesso**, será exibida a modal de confirmação de senha alterada.
90
- *
91
- * > O token será informado pela propriedade `p-token`do componente ou por um *query parameter* na URL do template.
92
- *
93
- * *Processo finalizado.*
94
- *
95
- * _______________
96
- *
97
- * #### Praticidade
98
- * As informações do serviço de autenticação também podem ser transmitidas diretamente pelas configuraçãos de rota e, desta maneira,
99
- * dispensa-se qualquer menção e/ou importação do componente `po-page-change-password` no restante da aplicação. O exemplo abaixo
100
- * exemplifica a forma dinâmica com a qual o template de tela de troca de senha pode ser gerado ao navegar para rota `/change-password`, e
101
- * também como ele se comunica com o serviço para efetuação do processo de troca de senha do usuário e solicitação de nova senha.
102
- * Basta definir nas configurações de rota:
103
- *
104
- *
105
- * ```
106
- * import { PoModalPasswordRecoveryType, PoPageChangePasswordComponent } from '@po-ui/ng-templates';
107
- *
108
- * ...
109
- * const routes: Routes = [
110
- * {
111
- * path: 'change-password', component: PoPageChangePasswordComponent, data: {
112
- * serviceApi: 'https://po-ui.io/sample/api/new-password',
113
- * recovery: {
114
- * url: 'https://po-ui.io/sample/api/users',
115
- * type: PoModalPasswordRecoveryType.All,
116
- * contactMail: 'dev.po@po-ui.com',
117
- * phoneMask: '9-999-999-9999'
118
- * }
119
- * }
120
- * }
121
- * ...
122
- * ];
123
- *
124
- * @NgModule({
125
- * imports: [RouterModule.forRoot(routes)],
126
- * exports: [RouterModule]
127
- * })
128
- * export class AppRoutingModule { }
129
- * ```
130
- *
131
- *
132
- * O metadado `serviceApi` deve ser a **url** para requisição dos recursos de troca de senha. E `recovery` é a interface
133
- * `PoPageChangePasswordRecovery` responsável pelas especificações contidas na modal de recuperação de senha.
134
- *
135
- * > É essencial que siga a nomenclatura dos atributos exemplificados acima para sua efetiva funcionalidade.
136
- *
137
- */
138
- urlNewPassword;
139
- /**
140
- * @optional
141
- *
142
- * @description
143
- *
144
- * Função executada ao submeter o form pelo botão salvar.
145
- *
146
- * Caso definida essa função, a modal de confirmação não aparece, mas pode ser chamada pelo
147
- * método `openConfirmation`. Exemplo:
148
- *
149
- * ```
150
- * @ViewChild(PoPageChangePasswordComponent) changePassword: PoPageChangePasswordComponent;
151
- *
152
- * onSubmit() {
153
- * this.changePassword.openConfirmation();
154
- * }
155
- *
156
- * ```
157
- * > Esta propriedade será ignorada se for definido valor para a propriedade `p-url-new-password`.
158
- */
159
- submit = new EventEmitter();
160
- confirmPassword;
161
- currentPassword;
162
- modalAction;
163
- newPassword;
164
- recoveryUrlType;
165
- showRequirements;
166
- validatorChange;
167
- _hideCurrentPassword = false;
168
- _recovery;
169
- _requirements = [];
170
- _urlHome = '/';
171
- /**
172
- * @optional
173
- *
174
- * @description
175
- *
176
- * Esconde o campo `Senha atual` para que o template seja para criação de senha.
177
- *
178
- * @default `false`
179
- */
180
- set hideCurrentPassword(value) {
181
- this._hideCurrentPassword = convertToBoolean(value);
182
- }
183
- get hideCurrentPassword() {
184
- return this._hideCurrentPassword;
185
- }
186
- /**
187
- * @optional
188
- *
189
- * @description
190
- *
191
- * URL para a ação do link `Esqueceu a senha`.
192
- *
193
- * A propriedade aceita os seguintes tipos:
194
- *
195
- * - **String**: informe uma url externa ou uma rota válida;
196
- * - **Function**: pode-se customizar a ação. Para esta possilidade basta atribuir:
197
- * ```
198
- * <po-page-change-password>
199
- * [recovery]="this.myFunc.bind(this)";
200
- * </po-page-change-password>
201
- * ```
202
- *
203
- * - **PoPageChangePasswordRecovery**: cria-se vínculo automático com o template **po-modal-password-recovery**.
204
- * O objeto deve conter a **url** para requisição dos recursos e pode-se definir o **tipo** de modal para recuperação de senha,
205
- * **email** para contato e **máscara** do campo de telefone.
206
- *
207
- * > Caso não tenha valor o link `Esqueceu a senha` desaparece.
208
- */
209
- set recovery(value) {
210
- this._recovery = value;
211
- if (isTypeof(value, 'string')) {
212
- this.recoveryUrlType = isExternalLink(value) ? 'externalLink' : 'internalLink';
213
- }
214
- }
215
- get recovery() {
216
- return this._recovery;
217
- }
218
- /**
219
- * @optional
220
- *
221
- * @description
222
- *
223
- * Lista de regras para criação e alteração de senha.
224
- */
225
- set requirements(value) {
226
- this._requirements = value || [];
227
- this.showRequirements = this._requirements.length > 0;
228
- }
229
- get requirements() {
230
- return this._requirements;
231
- }
232
- /**
233
- * @optional
234
- *
235
- * @description
236
- *
237
- * URL para a ação do botão `Entrar no sistema` da modal de confirmação que aparece após salvar a senha ou se chamada pelo método
238
- * `openConfirmation`.
239
- *
240
- * @default `/`
241
- */
242
- set urlHome(value) {
243
- this._urlHome = value;
244
- this.modalAction.action = this.navigateTo.bind(this, this.urlHome);
245
- }
246
- get urlHome() {
247
- return this._urlHome;
248
- }
249
- /**
250
- * @optional
251
- *
252
- * @description
253
- *
254
- * Define a propriedade nativa `autocomplete` do campo como `off`.
255
- *
256
- * > No input de senha(`po-password`) será definido como `new-password`.
257
- *
258
- * @default `true`
259
- */
260
- noAutocompletePassword = true;
261
- static ɵfac = function PoPageChangePasswordBaseComponent_Factory(t) { return new (t || PoPageChangePasswordBaseComponent)(); };
262
- static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoPageChangePasswordBaseComponent, inputs: { logo: [0, "p-logo", "logo"], secondaryLogo: [0, "p-secondary-logo", "secondaryLogo"], token: [0, "p-token", "token"], urlBack: [0, "p-url-back", "urlBack"], urlNewPassword: [0, "p-url-new-password", "urlNewPassword"], hideCurrentPassword: [0, "p-hide-current-password", "hideCurrentPassword"], recovery: [0, "p-recovery", "recovery"], requirements: [0, "p-requirements", "requirements"], urlHome: [0, "p-url-home", "urlHome"], noAutocompletePassword: [0, "p-no-autocomplete-password", "noAutocompletePassword"] }, outputs: { submit: "p-submit" } });
263
- }
264
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageChangePasswordBaseComponent, [{
265
- type: Directive
266
- }], null, { logo: [{
267
- type: Input,
268
- args: ['p-logo']
269
- }], secondaryLogo: [{
270
- type: Input,
271
- args: ['p-secondary-logo']
272
- }], token: [{
273
- type: Input,
274
- args: ['p-token']
275
- }], urlBack: [{
276
- type: Input,
277
- args: ['p-url-back']
278
- }], urlNewPassword: [{
279
- type: Input,
280
- args: ['p-url-new-password']
281
- }], submit: [{
282
- type: Output,
283
- args: ['p-submit']
284
- }], hideCurrentPassword: [{
285
- type: Input,
286
- args: ['p-hide-current-password']
287
- }], recovery: [{
288
- type: Input,
289
- args: ['p-recovery']
290
- }], requirements: [{
291
- type: Input,
292
- args: ['p-requirements']
293
- }], urlHome: [{
294
- type: Input,
295
- args: ['p-url-home']
296
- }], noAutocompletePassword: [{
297
- type: Input,
298
- args: ['p-no-autocomplete-password']
299
- }] }); })();
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1jaGFuZ2UtcGFzc3dvcmQtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW1wbGF0ZXMvc3JjL2xpYi9jb21wb25lbnRzL3BvLXBhZ2UtY2hhbmdlLXBhc3N3b3JkL3BvLXBhZ2UtY2hhbmdlLXBhc3N3b3JkLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFLOUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCRztBQUVILE1BQU0sT0FBZ0IsaUNBQWlDO0lBQ3JEOzs7Ozs7OztPQVFHO0lBQ2MsSUFBSSxDQUFVO0lBRS9COzs7Ozs7T0FNRztJQUN3QixhQUFhLENBQVU7SUFFbEQ7Ozs7T0FJRztJQUNlLEtBQUssQ0FBVTtJQUVqQzs7Ozs7Ozs7Ozs7T0FXRztJQUNrQixPQUFPLEdBQVcsR0FBRyxDQUFDO0lBRTNDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BbUVHO0lBQzBCLGNBQWMsQ0FBVTtJQUVyRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1CRztJQUNpQixNQUFNLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFbkUsZUFBZSxDQUFTO0lBQ3hCLGVBQWUsQ0FBUztJQUN4QixXQUFXLENBQWdCO0lBQzNCLFdBQVcsQ0FBUztJQUNwQixlQUFlLENBQVM7SUFDeEIsZ0JBQWdCLENBQVU7SUFFaEIsZUFBZSxDQUFNO0lBRXZCLG9CQUFvQixHQUFZLEtBQUssQ0FBQztJQUN0QyxTQUFTLENBQW1EO0lBQzVELGFBQWEsR0FBMkMsRUFBRSxDQUFDO0lBQzNELFFBQVEsR0FBVyxHQUFHLENBQUM7SUFFL0I7Ozs7Ozs7O09BUUc7SUFDSCxJQUFzQyxtQkFBbUIsQ0FBQyxLQUFjO1FBQ3RFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bc0JHO0lBQ0gsSUFBeUIsUUFBUSxDQUFDLEtBQXVEO1FBQ3ZGLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBRXZCLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNqRixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBNkIsWUFBWSxDQUFDLEtBQTZDO1FBQ3JGLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILElBQXlCLE9BQU8sQ0FBQyxLQUFhO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNrQyxzQkFBc0IsR0FBWSxJQUFJLENBQUM7MkZBcFB4RCxpQ0FBaUM7NkRBQWpDLGlDQUFpQzs7aUZBQWpDLGlDQUFpQztjQUR0RCxTQUFTO2dCQVdTLElBQUk7a0JBQXBCLEtBQUs7bUJBQUMsUUFBUTtZQVNZLGFBQWE7a0JBQXZDLEtBQUs7bUJBQUMsa0JBQWtCO1lBT1AsS0FBSztrQkFBdEIsS0FBSzttQkFBQyxTQUFTO1lBY0ssT0FBTztrQkFBM0IsS0FBSzttQkFBQyxZQUFZO1lBc0VVLGNBQWM7a0JBQTFDLEtBQUs7bUJBQUMsb0JBQW9CO1lBc0JQLE1BQU07a0JBQXpCLE1BQU07bUJBQUMsVUFBVTtZQXlCb0IsbUJBQW1CO2tCQUF4RCxLQUFLO21CQUFDLHlCQUF5QjtZQStCUCxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUFtQlUsWUFBWTtrQkFBeEMsS0FBSzttQkFBQyxnQkFBZ0I7WUFrQkUsT0FBTztrQkFBL0IsS0FBSzttQkFBQyxZQUFZO1lBbUJrQixzQkFBc0I7a0JBQTFELEtBQUs7bUJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUG9Nb2RhbEFjdGlvbiB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcblxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiwgaXNFeHRlcm5hbExpbmssIGlzVHlwZW9mIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IFBvUGFnZUNoYW5nZVBhc3N3b3JkUmVjb3ZlcnkgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1jaGFuZ2UtcGFzc3dvcmQtcmVjb3ZlcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUNoYW5nZVBhc3N3b3JkUmVxdWlyZW1lbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1jaGFuZ2UtcGFzc3dvcmQtcmVxdWlyZW1lbnQuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGNvbXBvbmVudGUgYHBvLXBhZ2UtY2hhbmdlLXBhc3N3b3JkYCDDqSB1dGlsaXphZG8gY29tbyB0ZW1wbGF0ZSBwYXJhIHRlbGEgZGUgY2FkYXN0cm8gb3UgYWx0ZXJhw6fDo28gZGUgc2VuaGEuXG4gKlxuICogQXByZXNlbnRhIGRpY2FzIGUgcmVncmFzIHBhcmEgc2VuaGFzIG1haXMgc2VndXJhcyBlIHRhbWLDqW0gcG9zc2liaWxpZGFkZSBkZSBwZXJzb25hbGl6YXIgbyByZWRpcmVjaW9uYW1lbnRvIHBhcmEgYXMgdGVsYXNcbiAqICdlc3F1ZWNldSBhIHNlbmhhJywgJ3ZvbHRhcicgZSAnZW50cmFyIG5vIHNpc3RlbWEnLiBPcyB0ZXh0b3MgZGFzIHRlbGFzIHPDo28gcHLDqS1kZWZpbmlkb3MgZSBpbXV0w6F2ZWlzLlxuICpcbiAqIEEgcHJvcHJpZWRhZGUgYHAtdXJsLW5ldy1wYXNzd29yZGAgYXV0b21hdGl6YSBhIHJvdGluYSBkbyB0ZW1wbGF0ZSBlIHNpbXBsaWZpY2EgbyBwcm9jZXNzbyBkZSBjYWRhc3Ryby9hbHRlcmHDp8OjbyBkZSBzZW5oYSwgYmFzdGFuZG9cbiAqIGRlZmluaXIgdW1hIHVybCBwYXJhIFBPU1QgZGFzIGluZm9ybWHDp8O1ZXMgZGlnaXRhZGFzIHBlbG8gdXN1w6FyaW8uICBBIGZsZXhpYmlsaWRhZGUgZSBwcmF0aWNpZGFkZSBwb2RlbSBjaGVnYXIgYSB1bSBuw612ZWwgZW0gcXVlIG9cbiAqIGRlc2Vudm9sdmltZW50byBkYSBhcGxpY2HDp8OjbyBubyAqY2xpZW50IHNpZGUqIMOpIGRlc3Byb3ZpZGEgZGUgcXVhbHF1ZXIgY8OzZGlnby1mb250ZSByZWxhY2lvbmFkbyDDoCByb3RpbmEgZGUgY2FkYXN0cm8vYWx0ZXJhw6fDo28gZGUgc2VuaGEuXG4gKiBTZXUgZGV0YWxoYW1lbnRvIHBhcmEgdXNvIHBvZGUgc2VyIHZpc3RvIGxvZ28gYWJhaXhvIGVtICpwcm9wcmllZGFkZXMqLlxuICogQ2FzbyBqdWxndWUgbmVjZXNzw6FyaW8sIHBvZGUtc2UgdGFtYsOpbSBkZWZpbmlyIG1hbnVhbG1lbnRlIGEgcm90aW5hIGRvIGNvbXBvbmVudGUuXG4gKlxuICogUGFyYSBxdWUgYXMgaW1hZ2VucyBzZWphbSBleGliaWRhcyBjb3JyZXRhbWVudGUsIMOpIG5lY2Vzc8OhcmlvIGluY2x1aXIgbyBjYW1pbmhvIGRlbGFzIGFvIHByb2pldG8uIFBhcmEgaXNzbywgZWRpdGVcbiAqIG8gKmFzc2V0cyogbm8gYXJxdWl2byAqKmFuZ3VsYXIuanNvbioqIGRhIGFwbGljYcOnw6NvIG5hIHNlZ3VpbnRlIG9yZGVtOlxuICogYGBgXG4gKiAgIFwiYXNzZXRzXCI6IFtcbiAqICAgICBcInNyYy9hc3NldHNcIixcbiAqICAgICBcInNyYy9mYXZpY29uLmljb1wiLFxuICogICAgIHtcbiAqICAgICAgIFwiZ2xvYlwiOiBcIioqXFwvKlwiLFxuICogICAgICAgXCJpbnB1dFwiOiBcIm5vZGVfbW9kdWxlcy9AcG8tdWkvc3R5bGUvaW1hZ2VzXCIsXG4gKiAgICAgICBcIm91dHB1dFwiOiBcImFzc2V0cy9pbWFnZXNcIlxuICogICAgIH1cbiAqICAgXVxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvUGFnZUNoYW5nZVBhc3N3b3JkQmFzZUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENhbWluaG8gcGFyYSBhIGxvZ29tYXJjYSBsb2NhbGl6YWRhIG5hIHBhcnRlIHN1cGVyaW9yLlxuICAgKlxuICAgKiA+IENhc28gc2VqYSBpbmRlZmluaWRhIG8gZXNwYcOnbyBzZSBtYW50w6ltIHByZXNlcnZhZG8gcG9yw6ltIHZhemlvLlxuICAgKi9cbiAgQElucHV0KCdwLWxvZ28nKSBsb2dvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENhbWluaG8gcGFyYSBhIGxvZ29tYXJjYSBsb2NhbGl6YWRhIG5vIHJvZGFww6kuXG4gICAqL1xuICBASW5wdXQoJ3Atc2Vjb25kYXJ5LWxvZ28nKSBzZWNvbmRhcnlMb2dvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUb2tlbiBwYXJhIHNvbGljaXRhw6fDo28gZGUgdHJvY2EvcmVjdXBlcmHDp8OjbyBkZSBzZW5oYS5cbiAgICpcbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIHNlcsOhIGlnbm9yYWRhIGNhc28gZXhpc3RhIHVtIHRva2VuIGNvbW8gcGFyw6JtZXRybyBuYSBVUkwgaW5pY2lhbCBkbyB0ZW1wbGF0ZS5cbiAgICovXG4gIEBJbnB1dCgncC10b2tlbicpIHRva2VuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFVSTCBwYXJhIGEgYcOnw6NvIGRlIHJldG9ybm8gZGEgcMOhZ2luYS5cbiAgICpcbiAgICogPiBPIGJvdMOjbyBgVm9sdGFyYCBhcGFyZWNlIGFwZW5hcyBwYXJhIHRlbGFzIGRlIGFsdGVyYcOnw6NvIGRlIHNlbmhhLCBvdSBzZWphLCBzw7MgYXBhcmVjZSBzZSBhIHByb3ByaWVkYWRlIGBwLWhpZGUtY3VycmVudC1wYXNzd29yZGAgZm9yXG4gICAqIGZhbHNhLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgL2BcbiAgICovXG4gIEBJbnB1dCgncC11cmwtYmFjaycpIHVybEJhY2s6IHN0cmluZyA9ICcvJztcblxuICAvKipcbiAgICogRW5kcG9pbnQgdXNhZG8gcGVsbyB0ZW1wbGF0ZSBwYXJhIHJlYWxpemFyIHVtIFBPU1QuIFF1YW5kbyBwcmVlbmNoaWRvLCBvIG3DqXRvZG8gYHAtc3VibWl0YCBzZXLDoSBpZ25vcmFkbyBlIG8gY29tcG9uZW50ZSBhZHF1aXJpcsOhXG4gICAqIGF1dG9tYXRpemHDp8OjbyBwYXJhIG8gcHJvY2Vzc28gZGUgY2FkYXN0cm8vdHJvY2EgZGUgc2VuaGEuXG4gICAqXG4gICAqICMjIyBQcm9jZXNzb1xuICAgKiBBbyBkaWdpdGFyIHVtIHZhbG9yIHbDoWxpZG8gbm9zIGNhbXBvcyBkZSBzZW5oYSBlIHByZXNzaW9uYXIgKipzYWx2YXIqKixcbiAgICogbyBjb21wb25lbnRlIGZhcsOhIHVtYSByZXF1aXNpw6fDo28gYFBPU1RgIG5hIHVybCBlc3BlY2lmaWNhZGEgbmVzdGEgcHJvcHJpZWRhZGUgcGFzc2FuZG8gbyBvYmpldG8gY29udGVuZG8gb3MgdmFsb3JlcyBkZWZpbmlkb3MgcGVsb1xuICAgKiB1c3XDoXJpby5cbiAgICpcbiAgICogYGBgXG4gICAqIGJvZHkge1xuICAgKiAgdG9rZW4/OiB0b2tlbixcbiAgICogIG9sZFBhc3N3b3JkPzogb2xkUGFzc3dvcmQsXG4gICAqICBuZXdQYXNzd29yZDogbmV3UGFzc3dvcmRcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogTyBjw7NkaWdvIGRlIHJlc3Bvc3RhIEhUVFAgZGUgc3RhdHVzIGVzcGVyYWRvIMOpIGAyMDRgLlxuICAgKlxuICAgKiBFbSBjYXNvIGRlICoqc3VjZXNzbyoqLCBzZXLDoSBleGliaWRhIGEgbW9kYWwgZGUgY29uZmlybWHDp8OjbyBkZSBzZW5oYSBhbHRlcmFkYS5cbiAgICpcbiAgICogPiBPIHRva2VuIHNlcsOhIGluZm9ybWFkbyBwZWxhIHByb3ByaWVkYWRlIGBwLXRva2VuYGRvIGNvbXBvbmVudGUgb3UgcG9yIHVtICpxdWVyeSBwYXJhbWV0ZXIqIG5hIFVSTCBkbyB0ZW1wbGF0ZS5cbiAgICpcbiAgICogKlByb2Nlc3NvIGZpbmFsaXphZG8uKlxuICAgKlxuICAgKiBfX19fX19fX19fX19fX19cbiAgICpcbiAgICogIyMjIyBQcmF0aWNpZGFkZVxuICAgKiBBcyBpbmZvcm1hw6fDtWVzIGRvIHNlcnZpw6dvIGRlIGF1dGVudGljYcOnw6NvIHRhbWLDqW0gcG9kZW0gc2VyIHRyYW5zbWl0aWRhcyBkaXJldGFtZW50ZSBwZWxhcyBjb25maWd1cmHDp8Ojb3MgZGUgcm90YSBlLCBkZXN0YSBtYW5laXJhLFxuICAgKiBkaXNwZW5zYS1zZSBxdWFscXVlciBtZW7Dp8OjbyBlL291IGltcG9ydGHDp8OjbyBkbyBjb21wb25lbnRlIGBwby1wYWdlLWNoYW5nZS1wYXNzd29yZGAgbm8gcmVzdGFudGUgZGEgYXBsaWNhw6fDo28uIE8gZXhlbXBsbyBhYmFpeG9cbiAgICogZXhlbXBsaWZpY2EgYSBmb3JtYSBkaW7Dom1pY2EgY29tIGEgcXVhbCBvIHRlbXBsYXRlIGRlIHRlbGEgZGUgdHJvY2EgZGUgc2VuaGEgcG9kZSBzZXIgZ2VyYWRvIGFvIG5hdmVnYXIgcGFyYSByb3RhIGAvY2hhbmdlLXBhc3N3b3JkYCwgZVxuICAgKiB0YW1iw6ltIGNvbW8gZWxlIHNlIGNvbXVuaWNhIGNvbSBvIHNlcnZpw6dvIHBhcmEgZWZldHVhw6fDo28gZG8gcHJvY2Vzc28gZGUgdHJvY2EgZGUgc2VuaGEgZG8gdXN1w6FyaW8gZSBzb2xpY2l0YcOnw6NvIGRlIG5vdmEgc2VuaGEuXG4gICAqIEJhc3RhIGRlZmluaXIgbmFzIGNvbmZpZ3VyYcOnw7VlcyBkZSByb3RhOlxuICAgKlxuICAgKlxuICAgKiBgYGBcbiAgICogICBpbXBvcnQgeyBQb01vZGFsUGFzc3dvcmRSZWNvdmVyeVR5cGUsIFBvUGFnZUNoYW5nZVBhc3N3b3JkQ29tcG9uZW50IH0gZnJvbSAnQHBvLXVpL25nLXRlbXBsYXRlcyc7XG4gICAqXG4gICAqICAgLi4uXG4gICAqICAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gICAqICAgICB7XG4gICAqICAgICAgIHBhdGg6ICdjaGFuZ2UtcGFzc3dvcmQnLCBjb21wb25lbnQ6IFBvUGFnZUNoYW5nZVBhc3N3b3JkQ29tcG9uZW50LCBkYXRhOiB7XG4gICAqICAgICAgICAgc2VydmljZUFwaTogJ2h0dHBzOi8vcG8tdWkuaW8vc2FtcGxlL2FwaS9uZXctcGFzc3dvcmQnLFxuICAgKiAgICAgICAgIHJlY292ZXJ5OiB7XG4gICAqICAgICAgICAgICB1cmw6ICdodHRwczovL3BvLXVpLmlvL3NhbXBsZS9hcGkvdXNlcnMnLFxuICAgKiAgICAgICAgICAgdHlwZTogUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlUeXBlLkFsbCxcbiAgICogICAgICAgICAgIGNvbnRhY3RNYWlsOiAnZGV2LnBvQHBvLXVpLmNvbScsXG4gICAqICAgICAgICAgICBwaG9uZU1hc2s6ICc5LTk5OS05OTktOTk5OSdcbiAgICogICAgICAgICB9XG4gICAqICAgICAgIH1cbiAgICogICAgIH1cbiAgICogICAgIC4uLlxuICAgKiAgIF07XG4gICAqXG4gICAqICAgQE5nTW9kdWxlKHtcbiAgICogICAgIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yUm9vdChyb3V0ZXMpXSxcbiAgICogICAgIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdXG4gICAqICAgfSlcbiAgICogICBleHBvcnQgY2xhc3MgQXBwUm91dGluZ01vZHVsZSB7IH1cbiAgICogYGBgXG4gICAqXG4gICAqXG4gICAqIE8gbWV0YWRhZG8gYHNlcnZpY2VBcGlgIGRldmUgc2VyIGEgKip1cmwqKiBwYXJhIHJlcXVpc2nDp8OjbyBkb3MgcmVjdXJzb3MgZGUgdHJvY2EgZGUgc2VuaGEuIEUgYHJlY292ZXJ5YCDDqSBhIGludGVyZmFjZVxuICAgKiBgUG9QYWdlQ2hhbmdlUGFzc3dvcmRSZWNvdmVyeWAgcmVzcG9uc8OhdmVsIHBlbGFzIGVzcGVjaWZpY2HDp8O1ZXMgY29udGlkYXMgbmEgbW9kYWwgZGUgcmVjdXBlcmHDp8OjbyBkZSBzZW5oYS5cbiAgICpcbiAgICogPiDDiSBlc3NlbmNpYWwgcXVlIHNpZ2EgYSBub21lbmNsYXR1cmEgZG9zIGF0cmlidXRvcyBleGVtcGxpZmljYWRvcyBhY2ltYSBwYXJhIHN1YSBlZmV0aXZhIGZ1bmNpb25hbGlkYWRlLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLXVybC1uZXctcGFzc3dvcmQnKSB1cmxOZXdQYXNzd29yZD86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBGdW7Dp8OjbyBleGVjdXRhZGEgYW8gc3VibWV0ZXIgbyBmb3JtIHBlbG8gYm90w6NvIHNhbHZhci5cbiAgICpcbiAgICogQ2FzbyBkZWZpbmlkYSBlc3NhIGZ1bsOnw6NvLCBhIG1vZGFsIGRlIGNvbmZpcm1hw6fDo28gbsOjbyBhcGFyZWNlLCBtYXMgcG9kZSBzZXIgY2hhbWFkYSBwZWxvXG4gICAqIG3DqXRvZG8gYG9wZW5Db25maXJtYXRpb25gLiBFeGVtcGxvOlxuICAgKlxuICAgKiBgYGBcbiAgICogQFZpZXdDaGlsZChQb1BhZ2VDaGFuZ2VQYXNzd29yZENvbXBvbmVudCkgY2hhbmdlUGFzc3dvcmQ6IFBvUGFnZUNoYW5nZVBhc3N3b3JkQ29tcG9uZW50O1xuICAgKlxuICAgKiBvblN1Ym1pdCgpIHtcbiAgICogIHRoaXMuY2hhbmdlUGFzc3dvcmQub3BlbkNvbmZpcm1hdGlvbigpO1xuICAgKiB9XG4gICAqXG4gICAqIGBgYFxuICAgKiA+IEVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgaWdub3JhZGEgc2UgZm9yIGRlZmluaWRvIHZhbG9yIHBhcmEgYSBwcm9wcmllZGFkZSBgcC11cmwtbmV3LXBhc3N3b3JkYC5cbiAgICovXG4gIEBPdXRwdXQoJ3Atc3VibWl0Jykgc3VibWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25maXJtUGFzc3dvcmQ6IHN0cmluZztcbiAgY3VycmVudFBhc3N3b3JkOiBzdHJpbmc7XG4gIG1vZGFsQWN0aW9uOiBQb01vZGFsQWN0aW9uO1xuICBuZXdQYXNzd29yZDogc3RyaW5nO1xuICByZWNvdmVyeVVybFR5cGU6IHN0cmluZztcbiAgc2hvd1JlcXVpcmVtZW50czogYm9vbGVhbjtcblxuICBwcm90ZWN0ZWQgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG5cbiAgcHJpdmF0ZSBfaGlkZUN1cnJlbnRQYXNzd29yZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9yZWNvdmVyeTogc3RyaW5nIHwgUG9QYWdlQ2hhbmdlUGFzc3dvcmRSZWNvdmVyeSB8IEZ1bmN0aW9uO1xuICBwcml2YXRlIF9yZXF1aXJlbWVudHM6IEFycmF5PFBvUGFnZUNoYW5nZVBhc3N3b3JkUmVxdWlyZW1lbnQ+ID0gW107XG4gIHByaXZhdGUgX3VybEhvbWU6IHN0cmluZyA9ICcvJztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFc2NvbmRlIG8gY2FtcG8gYFNlbmhhIGF0dWFsYCBwYXJhIHF1ZSBvIHRlbXBsYXRlIHNlamEgcGFyYSBjcmlhw6fDo28gZGUgc2VuaGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLWN1cnJlbnQtcGFzc3dvcmQnKSBzZXQgaGlkZUN1cnJlbnRQYXNzd29yZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2hpZGVDdXJyZW50UGFzc3dvcmQgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgfVxuXG4gIGdldCBoaWRlQ3VycmVudFBhc3N3b3JkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlQ3VycmVudFBhc3N3b3JkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVVJMIHBhcmEgYSBhw6fDo28gZG8gbGluayBgRXNxdWVjZXUgYSBzZW5oYWAuXG4gICAqXG4gICAqIEEgcHJvcHJpZWRhZGUgYWNlaXRhIG9zIHNlZ3VpbnRlcyB0aXBvczpcbiAgICpcbiAgICogLSAqKlN0cmluZyoqOiBpbmZvcm1lIHVtYSB1cmwgZXh0ZXJuYSBvdSB1bWEgcm90YSB2w6FsaWRhO1xuICAgKiAtICoqRnVuY3Rpb24qKjogcG9kZS1zZSBjdXN0b21pemFyIGEgYcOnw6NvLiBQYXJhIGVzdGEgcG9zc2lsaWRhZGUgYmFzdGEgYXRyaWJ1aXI6XG4gICAqIGBgYFxuICAgKiA8cG8tcGFnZS1jaGFuZ2UtcGFzc3dvcmQ+XG4gICAqICAgICAgW3JlY292ZXJ5XT1cInRoaXMubXlGdW5jLmJpbmQodGhpcylcIjtcbiAgICogPC9wby1wYWdlLWNoYW5nZS1wYXNzd29yZD5cbiAgICogYGBgXG4gICAqXG4gICAqIC0gKipQb1BhZ2VDaGFuZ2VQYXNzd29yZFJlY292ZXJ5Kio6IGNyaWEtc2UgdsOtbmN1bG8gYXV0b23DoXRpY28gY29tIG8gdGVtcGxhdGUgKipwby1tb2RhbC1wYXNzd29yZC1yZWNvdmVyeSoqLlxuICAgKiAgIE8gb2JqZXRvIGRldmUgY29udGVyIGEgKip1cmwqKiBwYXJhIHJlcXVpc2nDp8OjbyBkb3MgcmVjdXJzb3MgZSBwb2RlLXNlIGRlZmluaXIgbyAqKnRpcG8qKiBkZSBtb2RhbCBwYXJhIHJlY3VwZXJhw6fDo28gZGUgc2VuaGEsXG4gICAqICAgKiplbWFpbCoqIHBhcmEgY29udGF0byBlICoqbcOhc2NhcmEqKiBkbyBjYW1wbyBkZSB0ZWxlZm9uZS5cbiAgICpcbiAgICogPiBDYXNvIG7Do28gdGVuaGEgdmFsb3IgbyBsaW5rIGBFc3F1ZWNldSBhIHNlbmhhYCBkZXNhcGFyZWNlLlxuICAgKi9cbiAgQElucHV0KCdwLXJlY292ZXJ5Jykgc2V0IHJlY292ZXJ5KHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbiB8IFBvUGFnZUNoYW5nZVBhc3N3b3JkUmVjb3ZlcnkpIHtcbiAgICB0aGlzLl9yZWNvdmVyeSA9IHZhbHVlO1xuXG4gICAgaWYgKGlzVHlwZW9mKHZhbHVlLCAnc3RyaW5nJykpIHtcbiAgICAgIHRoaXMucmVjb3ZlcnlVcmxUeXBlID0gaXNFeHRlcm5hbExpbmsodmFsdWUpID8gJ2V4dGVybmFsTGluaycgOiAnaW50ZXJuYWxMaW5rJztcbiAgICB9XG4gIH1cblxuICBnZXQgcmVjb3ZlcnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlY292ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTGlzdGEgZGUgcmVncmFzIHBhcmEgY3JpYcOnw6NvIGUgYWx0ZXJhw6fDo28gZGUgc2VuaGEuXG4gICAqL1xuICBASW5wdXQoJ3AtcmVxdWlyZW1lbnRzJykgc2V0IHJlcXVpcmVtZW50cyh2YWx1ZTogQXJyYXk8UG9QYWdlQ2hhbmdlUGFzc3dvcmRSZXF1aXJlbWVudD4pIHtcbiAgICB0aGlzLl9yZXF1aXJlbWVudHMgPSB2YWx1ZSB8fCBbXTtcbiAgICB0aGlzLnNob3dSZXF1aXJlbWVudHMgPSB0aGlzLl9yZXF1aXJlbWVudHMubGVuZ3RoID4gMDtcbiAgfVxuICBnZXQgcmVxdWlyZW1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlbWVudHM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBVUkwgcGFyYSBhIGHDp8OjbyBkbyBib3TDo28gYEVudHJhciBubyBzaXN0ZW1hYCBkYSBtb2RhbCBkZSBjb25maXJtYcOnw6NvIHF1ZSBhcGFyZWNlIGFww7NzIHNhbHZhciBhIHNlbmhhIG91IHNlIGNoYW1hZGEgcGVsbyBtw6l0b2RvXG4gICAqIGBvcGVuQ29uZmlybWF0aW9uYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYC9gXG4gICAqL1xuICBASW5wdXQoJ3AtdXJsLWhvbWUnKSBzZXQgdXJsSG9tZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdXJsSG9tZSA9IHZhbHVlO1xuICAgIHRoaXMubW9kYWxBY3Rpb24uYWN0aW9uID0gdGhpcy5uYXZpZ2F0ZVRvLmJpbmQodGhpcywgdGhpcy51cmxIb21lKTtcbiAgfVxuICBnZXQgdXJsSG9tZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsSG9tZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIHByb3ByaWVkYWRlIG5hdGl2YSBgYXV0b2NvbXBsZXRlYCBkbyBjYW1wbyBjb21vIGBvZmZgLlxuICAgKlxuICAgKiA+IE5vIGlucHV0IGRlIHNlbmhhKGBwby1wYXNzd29yZGApIHNlcsOhIGRlZmluaWRvIGNvbW8gYG5ldy1wYXNzd29yZGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZS1wYXNzd29yZCcpIG5vQXV0b2NvbXBsZXRlUGFzc3dvcmQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGFic3RyYWN0IG5hdmlnYXRlVG8odXJsOiBzdHJpbmcpOiB2b2lkO1xufVxuIl19