general-library-union 2.8.18 → 2.8.19

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 (647) hide show
  1. package/esm2022/general-library-union.mjs +5 -0
  2. package/esm2022/public-api.mjs +180 -0
  3. package/esm2022/src/app/core/componentes/breadcrumb/breadcrumb.component.mjs +40 -0
  4. package/esm2022/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.mjs +28 -0
  5. package/esm2022/src/app/core/componentes/filtro-general/filtro-general.component.mjs +194 -0
  6. package/esm2022/src/app/core/componentes/footer/footer.component.mjs +16 -0
  7. package/esm2022/src/app/core/componentes/formulariodinamico/formulariodinamico.component.mjs +272 -0
  8. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/Cambio.mjs +11 -0
  9. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.mjs +124 -0
  10. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.mjs +73 -0
  11. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.mjs +59 -0
  12. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.mjs +21 -0
  13. package/esm2022/src/app/core/componentes/inicio-component/inicio-component.component.mjs +67 -0
  14. package/esm2022/src/app/core/componentes/menu/menu.component.mjs +37 -0
  15. package/esm2022/src/app/core/componentes/tabla-general/tabla-general.component.mjs +93 -0
  16. package/esm2022/src/app/core/core.module.mjs +23 -0
  17. package/esm2022/src/app/core/errores/authentication.error.mjs +7 -0
  18. package/esm2022/src/app/core/modelos/error-response.model.mjs +2 -0
  19. package/esm2022/src/app/core/modelos/table-column.model.mjs +2 -0
  20. package/esm2022/src/app/core/modelos/user.model.mjs +7 -0
  21. package/esm2022/src/app/core/plantilla-general/plantilla-general.template.mjs +230 -0
  22. package/esm2022/src/app/core/servicios/auth.service.mjs +185 -0
  23. package/esm2022/src/app/core/servicios/cargar-control-funcionalidad.service.mjs +57 -0
  24. package/esm2022/src/app/core/servicios/data-exporter-table.utils.mjs +64 -0
  25. package/esm2022/src/app/core/servicios/error-interceptor.service.mjs +214 -0
  26. package/esm2022/src/app/core/servicios/guardias/auth.guard.mjs +66 -0
  27. package/esm2022/src/app/core/servicios/guardias/publico.guard.mjs +35 -0
  28. package/esm2022/src/app/core/servicios/interceptores/loading-interceptor.mjs +37 -0
  29. package/esm2022/src/app/core/servicios/interceptores/token-interceptor.service.mjs +180 -0
  30. package/esm2022/src/app/core/servicios/loading.service.mjs +43 -0
  31. package/esm2022/src/app/core/servicios/menu.service.mjs +146 -0
  32. package/esm2022/src/app/core/servicios/spinner-service.mjs +22 -0
  33. package/esm2022/src/app/core/servicios/storage.service.mjs +68 -0
  34. package/esm2022/src/app/core/servicios/template.service.mjs +99 -0
  35. package/esm2022/src/app/core/servicios/toast.service.mjs +120 -0
  36. package/esm2022/src/app/core/servicios/utils.service.mjs +335 -0
  37. package/esm2022/src/app/core/sharedlib.module.mjs +16 -0
  38. package/esm2022/src/app/core/utilidades/color.util.mjs +177 -0
  39. package/esm2022/src/app/layout/api/menuchangeevent.mjs +2 -0
  40. package/esm2022/src/app/layout/app.breadcrumb.component.mjs +71 -0
  41. package/esm2022/src/app/layout/app.footer.component.mjs +18 -0
  42. package/esm2022/src/app/layout/app.layout.component.mjs +188 -0
  43. package/esm2022/src/app/layout/app.layout.module.mjs +15 -0
  44. package/esm2022/src/app/layout/app.menu.component.mjs +51 -0
  45. package/esm2022/src/app/layout/app.menu.service.mjs +24 -0
  46. package/esm2022/src/app/layout/app.menuitem.component.mjs +296 -0
  47. package/esm2022/src/app/layout/app.menuprofile.component.mjs +78 -0
  48. package/esm2022/src/app/layout/app.rightmenu.component.mjs +24 -0
  49. package/esm2022/src/app/layout/app.sidebar.component.mjs +92 -0
  50. package/esm2022/src/app/layout/app.topbar.component.mjs +345 -0
  51. package/esm2022/src/app/layout/service/app.layout.service.mjs +134 -0
  52. package/esm2022/src/app/publico/pages/login/login.page.mjs +129 -0
  53. package/esm2022/src/app/publico/pages/not-found/not-found.page.mjs +51 -0
  54. package/esm2022/src/app/publico/pages/seleccion-rol/seleccion-rol.component.mjs +167 -0
  55. package/esm2022/src/app/publico/pages/timeout/timeout.page.mjs +20 -0
  56. package/esm2022/src/app/seguridad/constantes/ConstantesGenerales.mjs +30 -0
  57. package/esm2022/src/app/seguridad/constantes/ReporteEntradaConstantes.mjs +19 -0
  58. package/esm2022/src/app/seguridad/modelos/AplicacionModel.mjs +8 -0
  59. package/esm2022/src/app/seguridad/modelos/ArchivoPortalModel.mjs +14 -0
  60. package/esm2022/src/app/seguridad/modelos/AtributoPuntoModel.mjs +9 -0
  61. package/esm2022/src/app/seguridad/modelos/AtributoSSOportalModel.mjs +17 -0
  62. package/esm2022/src/app/seguridad/modelos/AuditoriaArchivoModel.mjs +11 -0
  63. package/esm2022/src/app/seguridad/modelos/CargueLineaModel.mjs +13 -0
  64. package/esm2022/src/app/seguridad/modelos/ColoresRGB.mjs +18 -0
  65. package/esm2022/src/app/seguridad/modelos/ColumnaFuenteModel.mjs +9 -0
  66. package/esm2022/src/app/seguridad/modelos/ColumnaWraperModel.mjs +6 -0
  67. package/esm2022/src/app/seguridad/modelos/ComplementoModel.mjs +7 -0
  68. package/esm2022/src/app/seguridad/modelos/ComponentePaginaModel.mjs +21 -0
  69. package/esm2022/src/app/seguridad/modelos/ConexionModel.mjs +14 -0
  70. package/esm2022/src/app/seguridad/modelos/ContenidoHtmlPortalModel.mjs +21 -0
  71. package/esm2022/src/app/seguridad/modelos/ControlFuncionModel.mjs +8 -0
  72. package/esm2022/src/app/seguridad/modelos/CorreoModel.mjs +35 -0
  73. package/esm2022/src/app/seguridad/modelos/CorreoWSModel.mjs +37 -0
  74. package/esm2022/src/app/seguridad/modelos/CruceRecursoPuntoModel.mjs +14 -0
  75. package/esm2022/src/app/seguridad/modelos/DatoInicioModel.mjs +6 -0
  76. package/esm2022/src/app/seguridad/modelos/EjecucionReporteDataModel.mjs +14 -0
  77. package/esm2022/src/app/seguridad/modelos/EmpresaModel.mjs +25 -0
  78. package/esm2022/src/app/seguridad/modelos/EmpresaSeguridadModel.mjs +19 -0
  79. package/esm2022/src/app/seguridad/modelos/EntradaComplementoModel.mjs +7 -0
  80. package/esm2022/src/app/seguridad/modelos/EtiquetaModel.mjs +5 -0
  81. package/esm2022/src/app/seguridad/modelos/Etiquetas.mjs +12 -0
  82. package/esm2022/src/app/seguridad/modelos/ForeingWraperModel.mjs +6 -0
  83. package/esm2022/src/app/seguridad/modelos/FuenteCampoAtributoModel.mjs +16 -0
  84. package/esm2022/src/app/seguridad/modelos/FuenteCampoModel.mjs +17 -0
  85. package/esm2022/src/app/seguridad/modelos/FuenteDato.mjs +19 -0
  86. package/esm2022/src/app/seguridad/modelos/FuenteEntradaModel.mjs +9 -0
  87. package/esm2022/src/app/seguridad/modelos/FuenteGeneralModel.mjs +37 -0
  88. package/esm2022/src/app/seguridad/modelos/FuenteLineaServicioModel.mjs +16 -0
  89. package/esm2022/src/app/seguridad/modelos/FuenteProcesoGeneralModel.mjs +11 -0
  90. package/esm2022/src/app/seguridad/modelos/FuenteServicioModel.mjs +51 -0
  91. package/esm2022/src/app/seguridad/modelos/FuncionalidadModel.mjs +10 -0
  92. package/esm2022/src/app/seguridad/modelos/GeneralModel.mjs +15 -0
  93. package/esm2022/src/app/seguridad/modelos/GrupoAccesoModel.mjs +7 -0
  94. package/esm2022/src/app/seguridad/modelos/GrupoControlFuncionModel.mjs +10 -0
  95. package/esm2022/src/app/seguridad/modelos/GrupoFuenteModel.mjs +13 -0
  96. package/esm2022/src/app/seguridad/modelos/GrupoPermisoModel.mjs +14 -0
  97. package/esm2022/src/app/seguridad/modelos/JoinFromModel.mjs +5 -0
  98. package/esm2022/src/app/seguridad/modelos/ListaServicioModel.mjs +17 -0
  99. package/esm2022/src/app/seguridad/modelos/LlaveForaneaModel.mjs +7 -0
  100. package/esm2022/src/app/seguridad/modelos/LoginModel.mjs +15 -0
  101. package/esm2022/src/app/seguridad/modelos/MensajeSistemaModel.mjs +8 -0
  102. package/esm2022/src/app/seguridad/modelos/MenuPortalModel.mjs +5 -0
  103. package/esm2022/src/app/seguridad/modelos/ModulosModel.mjs +18 -0
  104. package/esm2022/src/app/seguridad/modelos/ObjetoReporteModel.mjs +6 -0
  105. package/esm2022/src/app/seguridad/modelos/PaginaPortalModel.mjs +20 -0
  106. package/esm2022/src/app/seguridad/modelos/ParametroComponenteModel.mjs +9 -0
  107. package/esm2022/src/app/seguridad/modelos/ParametrosGeneralModel.mjs +15 -0
  108. package/esm2022/src/app/seguridad/modelos/PermisoFuncionModel.mjs +9 -0
  109. package/esm2022/src/app/seguridad/modelos/PermisocontenidoModel.mjs +20 -0
  110. package/esm2022/src/app/seguridad/modelos/PeticionModel.mjs +16 -0
  111. package/esm2022/src/app/seguridad/modelos/PreguntaSeguridadModel.mjs +7 -0
  112. package/esm2022/src/app/seguridad/modelos/PropiedadModel.mjs +10 -0
  113. package/esm2022/src/app/seguridad/modelos/PublicacionWebModel.mjs +27 -0
  114. package/esm2022/src/app/seguridad/modelos/PuntoProcesoModel.mjs +7 -0
  115. package/esm2022/src/app/seguridad/modelos/RecursoPunto.mjs +13 -0
  116. package/esm2022/src/app/seguridad/modelos/RecursoPuntoModel.mjs +13 -0
  117. package/esm2022/src/app/seguridad/modelos/ReporteBanda.mjs +8 -0
  118. package/esm2022/src/app/seguridad/modelos/ReporteColumna.mjs +33 -0
  119. package/esm2022/src/app/seguridad/modelos/ReporteColumnario.mjs +69 -0
  120. package/esm2022/src/app/seguridad/modelos/ReporteColumnarioMarcador.mjs +24 -0
  121. package/esm2022/src/app/seguridad/modelos/ReporteEntradaModel.mjs +20 -0
  122. package/esm2022/src/app/seguridad/modelos/ReporteFuenteModel.mjs +124 -0
  123. package/esm2022/src/app/seguridad/modelos/ReporteMarcador.mjs +40 -0
  124. package/esm2022/src/app/seguridad/modelos/ReporteSoporte.mjs +10 -0
  125. package/esm2022/src/app/seguridad/modelos/ReporteTabla.mjs +13 -0
  126. package/esm2022/src/app/seguridad/modelos/RespuestaModel.mjs +9 -0
  127. package/esm2022/src/app/seguridad/modelos/RolModel.mjs +39 -0
  128. package/esm2022/src/app/seguridad/modelos/ServidorCorreoModel.mjs +28 -0
  129. package/esm2022/src/app/seguridad/modelos/SistemaMensajeModel.mjs +9 -0
  130. package/esm2022/src/app/seguridad/modelos/SitioPortalModel.mjs +25 -0
  131. package/esm2022/src/app/seguridad/modelos/TablaFromModel.mjs +5 -0
  132. package/esm2022/src/app/seguridad/modelos/TareasModel.mjs +54 -0
  133. package/esm2022/src/app/seguridad/modelos/TextoModel.mjs +9 -0
  134. package/esm2022/src/app/seguridad/modelos/TipoEtiqueta.mjs +8 -0
  135. package/esm2022/src/app/seguridad/modelos/UnionModel.mjs +12 -0
  136. package/esm2022/src/app/seguridad/modelos/UsuarioModel.mjs +53 -0
  137. package/esm2022/src/app/seguridad/modelos/UsuariogrupoModel.mjs +24 -0
  138. package/esm2022/src/app/seguridad/modelos/aplicacion-propiedad-model.mjs +15 -0
  139. package/esm2022/src/app/seguridad/modelos/contenidoCorreoModel.mjs +10 -0
  140. package/esm2022/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.mjs +154 -0
  141. package/esm2022/src/app/shared/servicios/cargar-archivos.service.mjs +54 -0
  142. package/esm2022/src/app/shared/servicios/cargar-mapas.service.mjs +46 -0
  143. package/esm2022/src/app/shared/servicios/encriptado-basico.service.mjs +53 -0
  144. package/esm2022/src/app/shared/servicios/general.service.mjs +104 -0
  145. package/esm2022/src/app/shared/servicios/parametros-navegacion.service.mjs +21 -0
  146. package/esm2022/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.mjs +370 -0
  147. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.mjs +187 -0
  148. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.mjs +85 -0
  149. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.mjs +347 -0
  150. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.mjs +206 -0
  151. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.mjs +328 -0
  152. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.mjs +1569 -0
  153. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.mjs +105 -0
  154. package/esm2022/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.mjs +114 -0
  155. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.mjs +588 -0
  156. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.mjs +177 -0
  157. package/esm2022/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.mjs +749 -0
  158. package/esm2022/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.mjs +331 -0
  159. package/esm2022/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.mjs +96 -0
  160. package/esm2022/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.mjs +675 -0
  161. package/esm2022/src/app/webcommon/pipes/dashboard.pipe.mjs +86 -0
  162. package/esm2022/src/app/webcommon/pipes/fuente.pipe.mjs +201 -0
  163. package/esm2022/src/app/webcommon/pipes/general.pipe.mjs +916 -0
  164. package/esm2022/src/app/webcommon/pipes/reporte-columnario.pipe.mjs +115 -0
  165. package/esm2022/src/app/webcommon/pipes/reporte-fuente.pipe.mjs +301 -0
  166. package/esm2022/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.mjs +267 -0
  167. package/esm2022/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.mjs +128 -0
  168. package/esm2022/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.mjs +293 -0
  169. package/esm2022/src/app/webcommon/popups/popup-recurso/popup-recurso.component.mjs +269 -0
  170. package/esm2022/src/app/webcommon/popups/popup-reporte/popup-reporte.component.mjs +515 -0
  171. package/esm2022/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.mjs +64 -0
  172. package/esm2022/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.mjs +159 -0
  173. package/esm2022/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.mjs +89 -0
  174. package/esm2022/src/app/webcommon/services/carguelinea.service.mjs +69 -0
  175. package/esm2022/src/app/webcommon/services/dashboard.service.mjs +253 -0
  176. package/esm2022/src/app/webcommon/services/ejecucionreporte.service.mjs +114 -0
  177. package/esm2022/src/app/webcommon/services/fechaUtils.service.mjs +88 -0
  178. package/esm2022/src/app/webcommon/services/fuentegeneral.service.mjs +68 -0
  179. package/esm2022/src/app/webcommon/services/homologacion.service.mjs +50 -0
  180. package/esm2022/src/app/webcommon/services/plantillas.service.mjs +129 -0
  181. package/esm2022/src/app/webcommon/services/reportes.service.mjs +95 -0
  182. package/esm2022/src/app/webcommon/webcommon.module.mjs +15 -0
  183. package/esm2022/src/environments/environment.mjs +24 -0
  184. package/fesm2022/general-library-union.mjs +15885 -0
  185. package/fesm2022/general-library-union.mjs.map +1 -0
  186. package/index.d.ts +5 -0
  187. package/package.json +17 -28
  188. package/{public-api.ts → public-api.d.ts} +35 -75
  189. package/src/app/core/componentes/breadcrumb/breadcrumb.component.d.ts +18 -0
  190. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.d.ts +14 -0
  191. package/src/app/core/componentes/filtro-general/filtro-general.component.d.ts +34 -0
  192. package/src/app/core/componentes/footer/footer.component.d.ts +9 -0
  193. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.d.ts +46 -0
  194. package/src/app/core/componentes/formulariodinamico/objetosformulario/{Cambio.ts → Cambio.d.ts} +3 -9
  195. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.d.ts +44 -0
  196. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.d.ts +45 -0
  197. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.d.ts +33 -0
  198. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.d.ts +9 -0
  199. package/src/app/core/componentes/inicio-component/inicio-component.component.d.ts +24 -0
  200. package/src/app/core/componentes/menu/menu.component.d.ts +16 -0
  201. package/src/app/core/componentes/tabla-general/tabla-general.component.d.ts +32 -0
  202. package/src/app/core/core.module.d.ts +8 -0
  203. package/src/app/core/errores/authentication.error.d.ts +3 -0
  204. package/src/app/core/modelos/error-response.model.d.ts +9 -0
  205. package/src/app/core/modelos/table-column.model.d.ts +12 -0
  206. package/src/app/core/modelos/user.model.d.ts +6 -0
  207. package/src/app/core/plantilla-general/plantilla-general.template.d.ts +89 -0
  208. package/src/app/core/servicios/auth.service.d.ts +52 -0
  209. package/src/app/core/servicios/cargar-control-funcionalidad.service.d.ts +19 -0
  210. package/src/app/core/servicios/data-exporter-table.utils.d.ts +11 -0
  211. package/src/app/core/servicios/error-interceptor.service.d.ts +41 -0
  212. package/src/app/core/servicios/guardias/auth.guard.d.ts +17 -0
  213. package/src/app/core/servicios/guardias/publico.guard.d.ts +13 -0
  214. package/src/app/core/servicios/interceptores/loading-interceptor.d.ts +11 -0
  215. package/src/app/core/servicios/interceptores/token-interceptor.service.d.ts +26 -0
  216. package/src/app/core/servicios/loading.service.d.ts +22 -0
  217. package/src/app/core/servicios/menu.service.d.ts +35 -0
  218. package/src/app/core/servicios/spinner-service.d.ts +9 -0
  219. package/src/app/core/servicios/storage.service.d.ts +37 -0
  220. package/src/app/core/servicios/template.service.d.ts +20 -0
  221. package/src/app/core/servicios/toast.service.d.ts +48 -0
  222. package/src/app/core/servicios/utils.service.d.ts +42 -0
  223. package/src/app/core/sharedlib.module.d.ts +6 -0
  224. package/src/app/core/utilidades/color.util.d.ts +70 -0
  225. package/src/app/layout/api/{menuchangeevent.ts → menuchangeevent.d.ts} +1 -1
  226. package/src/app/layout/app.breadcrumb.component.d.ts +28 -0
  227. package/src/app/layout/app.footer.component.d.ts +8 -0
  228. package/src/app/layout/app.layout.component.d.ts +39 -0
  229. package/src/app/layout/app.layout.module.d.ts +6 -0
  230. package/src/app/layout/app.menu.component.d.ts +19 -0
  231. package/src/app/layout/app.menu.service.d.ts +12 -0
  232. package/src/app/layout/app.menuitem.component.d.ts +41 -0
  233. package/src/app/layout/app.menuprofile.component.d.ts +18 -0
  234. package/src/app/layout/app.rightmenu.component.d.ts +10 -0
  235. package/src/app/layout/app.sidebar.component.d.ts +34 -0
  236. package/src/app/layout/app.topbar.component.d.ts +79 -0
  237. package/src/app/layout/service/app.layout.service.d.ts +57 -0
  238. package/src/app/publico/pages/login/login.page.d.ts +40 -0
  239. package/src/app/publico/pages/not-found/not-found.page.d.ts +17 -0
  240. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.d.ts +41 -0
  241. package/src/app/publico/pages/timeout/timeout.page.d.ts +10 -0
  242. package/src/app/seguridad/constantes/ConstantesGenerales.d.ts +25 -0
  243. package/src/app/seguridad/constantes/ReporteEntradaConstantes.d.ts +7 -0
  244. package/src/app/seguridad/modelos/AplicacionModel.d.ts +7 -0
  245. package/src/app/seguridad/modelos/ArchivoPortalModel.d.ts +13 -0
  246. package/src/app/seguridad/modelos/AtributoPuntoModel.d.ts +8 -0
  247. package/src/app/seguridad/modelos/AtributoSSOportalModel.d.ts +16 -0
  248. package/src/app/seguridad/modelos/{AuditoriaArchivoModel.ts → AuditoriaArchivoModel.d.ts} +2 -5
  249. package/src/app/seguridad/modelos/CargueLineaModel.d.ts +12 -0
  250. package/src/app/seguridad/modelos/ColoresRGB.d.ts +17 -0
  251. package/src/app/seguridad/modelos/ColumnaFuenteModel.d.ts +8 -0
  252. package/src/app/seguridad/modelos/{ColumnaWraperModel.ts → ColumnaWraperModel.d.ts} +4 -5
  253. package/src/app/seguridad/modelos/ComplementoModel.d.ts +6 -0
  254. package/src/app/seguridad/modelos/ComponentePaginaModel.d.ts +20 -0
  255. package/src/app/seguridad/modelos/ConexionModel.d.ts +13 -0
  256. package/src/app/seguridad/modelos/{ContenidoHtmlPortalModel.ts → ContenidoHtmlPortalModel.d.ts} +2 -7
  257. package/src/app/seguridad/modelos/ControlFuncionModel.d.ts +7 -0
  258. package/src/app/seguridad/modelos/CorreoModel.d.ts +31 -0
  259. package/src/app/seguridad/modelos/CorreoWSModel.d.ts +33 -0
  260. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.d.ts +13 -0
  261. package/src/app/seguridad/modelos/{DatoInicioModel.ts → DatoInicioModel.d.ts} +3 -4
  262. package/src/app/seguridad/modelos/{EjecucionReporteDataModel.ts → EjecucionReporteDataModel.d.ts} +2 -3
  263. package/src/app/seguridad/modelos/EmpresaModel.d.ts +23 -0
  264. package/src/app/seguridad/modelos/EmpresaSeguridadModel.d.ts +18 -0
  265. package/src/app/seguridad/modelos/{EntradaComplementoModel.ts → EntradaComplementoModel.d.ts} +2 -5
  266. package/src/app/seguridad/modelos/EtiquetaModel.d.ts +4 -0
  267. package/src/app/seguridad/modelos/Etiquetas.d.ts +10 -0
  268. package/src/app/seguridad/modelos/{ForeingWraperModel.ts → ForeingWraperModel.d.ts} +2 -5
  269. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.d.ts +15 -0
  270. package/src/app/seguridad/modelos/{FuenteCampoModel.ts → FuenteCampoModel.d.ts} +2 -6
  271. package/src/app/seguridad/modelos/FuenteDato.d.ts +18 -0
  272. package/src/app/seguridad/modelos/FuenteEntradaModel.d.ts +8 -0
  273. package/src/app/seguridad/modelos/{FuenteGeneralModel.ts → FuenteGeneralModel.d.ts} +2 -21
  274. package/src/app/seguridad/modelos/FuenteLineaServicioModel.d.ts +16 -0
  275. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.d.ts +10 -0
  276. package/src/app/seguridad/modelos/{FuenteServicioModel.ts → FuenteServicioModel.d.ts} +2 -16
  277. package/src/app/seguridad/modelos/FuncionalidadModel.d.ts +8 -0
  278. package/src/app/seguridad/modelos/GeneralModel.d.ts +8 -0
  279. package/src/app/seguridad/modelos/{GrupoAccesoModel.ts → GrupoAccesoModel.d.ts} +2 -5
  280. package/src/app/seguridad/modelos/GrupoControlFuncionModel.d.ts +9 -0
  281. package/src/app/seguridad/modelos/GrupoFuenteModel.d.ts +13 -0
  282. package/src/app/seguridad/modelos/GrupoPermisoModel.d.ts +13 -0
  283. package/src/app/seguridad/modelos/{JoinFromModel.ts → JoinFromModel.d.ts} +2 -2
  284. package/src/app/seguridad/modelos/ListaServicioModel.d.ts +16 -0
  285. package/src/app/seguridad/modelos/LlaveForaneaModel.d.ts +6 -0
  286. package/src/app/seguridad/modelos/LoginModel.d.ts +17 -0
  287. package/src/app/seguridad/modelos/MensajeSistemaModel.d.ts +7 -0
  288. package/src/app/seguridad/modelos/{MenuPortalModel.ts → MenuPortalModel.d.ts} +1 -2
  289. package/src/app/seguridad/modelos/ModulosModel.d.ts +14 -0
  290. package/src/app/seguridad/modelos/{ObjetoReporteModel.ts → ObjetoReporteModel.d.ts} +2 -3
  291. package/src/app/seguridad/modelos/PaginaPortalModel.d.ts +19 -0
  292. package/src/app/seguridad/modelos/ParametroComponenteModel.d.ts +8 -0
  293. package/src/app/seguridad/modelos/ParametrosGeneralModel.d.ts +8 -0
  294. package/src/app/seguridad/modelos/PermisoFuncionModel.d.ts +8 -0
  295. package/src/app/seguridad/modelos/PermisocontenidoModel.d.ts +18 -0
  296. package/src/app/seguridad/modelos/{PeticionModel.ts → PeticionModel.d.ts} +1 -6
  297. package/src/app/seguridad/modelos/PreguntaSeguridadModel.d.ts +6 -0
  298. package/src/app/seguridad/modelos/PropiedadModel.d.ts +9 -0
  299. package/src/app/seguridad/modelos/PublicacionWebModel.d.ts +25 -0
  300. package/src/app/seguridad/modelos/PuntoProcesoModel.d.ts +6 -0
  301. package/src/app/seguridad/modelos/RecursoPunto.d.ts +12 -0
  302. package/src/app/seguridad/modelos/RecursoPuntoModel.d.ts +12 -0
  303. package/src/app/seguridad/modelos/ReporteBanda.d.ts +7 -0
  304. package/src/app/seguridad/modelos/ReporteColumna.d.ts +32 -0
  305. package/src/app/seguridad/modelos/ReporteColumnario.d.ts +68 -0
  306. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.d.ts +23 -0
  307. package/src/app/seguridad/modelos/{ReporteEntradaModel.ts → ReporteEntradaModel.d.ts} +2 -4
  308. package/src/app/seguridad/modelos/{ReporteFuenteModel.ts → ReporteFuenteModel.d.ts} +16 -70
  309. package/src/app/seguridad/modelos/ReporteMarcador.d.ts +39 -0
  310. package/src/app/seguridad/modelos/ReporteSoporte.d.ts +9 -0
  311. package/src/app/seguridad/modelos/ReporteTabla.d.ts +12 -0
  312. package/src/app/seguridad/modelos/RespuestaModel.d.ts +8 -0
  313. package/src/app/seguridad/modelos/{RolModel.ts → RolModel.d.ts} +4 -8
  314. package/src/app/seguridad/modelos/ServidorCorreoModel.d.ts +25 -0
  315. package/src/app/seguridad/modelos/SistemaMensajeModel.d.ts +8 -0
  316. package/src/app/seguridad/modelos/SitioPortalModel.d.ts +24 -0
  317. package/src/app/seguridad/modelos/TablaFromModel.d.ts +4 -0
  318. package/src/app/seguridad/modelos/TareasModel.d.ts +49 -0
  319. package/src/app/seguridad/modelos/TextoModel.d.ts +8 -0
  320. package/src/app/seguridad/modelos/TipoEtiqueta.d.ts +7 -0
  321. package/src/app/seguridad/modelos/UnionModel.d.ts +11 -0
  322. package/src/app/seguridad/modelos/{UsuarioModel.ts → UsuarioModel.d.ts} +5 -16
  323. package/src/app/seguridad/modelos/UsuariogrupoModel.d.ts +22 -0
  324. package/src/app/seguridad/modelos/aplicacion-propiedad-model.d.ts +13 -0
  325. package/src/app/seguridad/modelos/contenidoCorreoModel.d.ts +9 -0
  326. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.d.ts +47 -0
  327. package/src/app/shared/servicios/cargar-archivos.service.d.ts +15 -0
  328. package/src/app/shared/servicios/cargar-mapas.service.d.ts +18 -0
  329. package/src/app/shared/servicios/encriptado-basico.service.d.ts +10 -0
  330. package/src/app/shared/servicios/general.service.d.ts +24 -0
  331. package/src/app/shared/servicios/parametros-navegacion.service.d.ts +9 -0
  332. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.d.ts +78 -0
  333. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.d.ts +79 -0
  334. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.d.ts +29 -0
  335. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.d.ts +69 -0
  336. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.d.ts +51 -0
  337. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.d.ts +77 -0
  338. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.d.ts +275 -0
  339. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.d.ts +42 -0
  340. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.d.ts +35 -0
  341. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.d.ts +143 -0
  342. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.d.ts +49 -0
  343. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.d.ts +128 -0
  344. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.d.ts +64 -0
  345. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.d.ts +33 -0
  346. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.d.ts +149 -0
  347. package/src/app/webcommon/pipes/dashboard.pipe.d.ts +48 -0
  348. package/src/app/webcommon/pipes/fuente.pipe.d.ts +136 -0
  349. package/src/app/webcommon/pipes/general.pipe.d.ts +646 -0
  350. package/src/app/webcommon/pipes/reporte-columnario.pipe.d.ts +59 -0
  351. package/src/app/webcommon/pipes/reporte-fuente.pipe.d.ts +193 -0
  352. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.d.ts +59 -0
  353. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.d.ts +27 -0
  354. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.d.ts +64 -0
  355. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.d.ts +63 -0
  356. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.d.ts +97 -0
  357. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.d.ts +21 -0
  358. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.d.ts +42 -0
  359. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.d.ts +30 -0
  360. package/src/app/webcommon/services/carguelinea.service.d.ts +19 -0
  361. package/src/app/webcommon/services/dashboard.service.d.ts +27 -0
  362. package/src/app/webcommon/services/ejecucionreporte.service.d.ts +34 -0
  363. package/src/app/webcommon/services/fechaUtils.service.d.ts +29 -0
  364. package/src/app/webcommon/services/fuentegeneral.service.d.ts +24 -0
  365. package/src/app/webcommon/services/homologacion.service.d.ts +17 -0
  366. package/src/app/webcommon/services/plantillas.service.d.ts +26 -0
  367. package/src/app/webcommon/services/reportes.service.d.ts +35 -0
  368. package/src/app/webcommon/webcommon.module.d.ts +6 -0
  369. package/src/environments/environment.d.ts +7 -0
  370. package/.browserslistrc +0 -15
  371. package/.editorconfig +0 -16
  372. package/.vscode/extensions.json +0 -4
  373. package/.vscode/launch.json +0 -20
  374. package/.vscode/tasks.json +0 -42
  375. package/angular.json +0 -143
  376. package/karma.conf.js +0 -44
  377. package/ng-package.json +0 -21
  378. package/src/app/app.component.html +0 -12
  379. package/src/app/app.component.scss +0 -0
  380. package/src/app/app.component.spec.ts +0 -29
  381. package/src/app/app.component.ts +0 -34
  382. package/src/app/app.config.ts +0 -43
  383. package/src/app/app.module.ts +0 -10
  384. package/src/app/app.routes.ts +0 -88
  385. package/src/app/core/componentes/breadcrumb/breadcrumb.component.html +0 -6
  386. package/src/app/core/componentes/breadcrumb/breadcrumb.component.scss +0 -0
  387. package/src/app/core/componentes/breadcrumb/breadcrumb.component.ts +0 -39
  388. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.html +0 -1
  389. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.scss +0 -0
  390. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.ts +0 -31
  391. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.html +0 -9
  392. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.scss +0 -28
  393. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.ts +0 -32
  394. package/src/app/core/componentes/filtro-general/filtro-general.component.html +0 -34
  395. package/src/app/core/componentes/filtro-general/filtro-general.component.scss +0 -3
  396. package/src/app/core/componentes/filtro-general/filtro-general.component.ts +0 -202
  397. package/src/app/core/componentes/footer/footer.component.html +0 -13
  398. package/src/app/core/componentes/footer/footer.component.scss +0 -3
  399. package/src/app/core/componentes/footer/footer.component.ts +0 -20
  400. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.html +0 -267
  401. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.scss +0 -21
  402. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.ts +0 -275
  403. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.ts +0 -118
  404. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.ts +0 -76
  405. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.ts +0 -67
  406. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.ts +0 -11
  407. package/src/app/core/componentes/inicio-component/inicio-component.component.html +0 -29
  408. package/src/app/core/componentes/inicio-component/inicio-component.component.scss +0 -69
  409. package/src/app/core/componentes/inicio-component/inicio-component.component.ts +0 -65
  410. package/src/app/core/componentes/menu/menu.component.html +0 -13
  411. package/src/app/core/componentes/menu/menu.component.scss +0 -36
  412. package/src/app/core/componentes/menu/menu.component.ts +0 -35
  413. package/src/app/core/componentes/tabla-general/tabla-general.component.html +0 -90
  414. package/src/app/core/componentes/tabla-general/tabla-general.component.scss +0 -0
  415. package/src/app/core/componentes/tabla-general/tabla-general.component.ts +0 -96
  416. package/src/app/core/core.module.ts +0 -22
  417. package/src/app/core/errores/authentication.error.ts +0 -6
  418. package/src/app/core/modelos/error-response.model.ts +0 -9
  419. package/src/app/core/modelos/table-column.model.ts +0 -10
  420. package/src/app/core/modelos/user.model.ts +0 -6
  421. package/src/app/core/plantilla-general/plantilla-general.template.html +0 -139
  422. package/src/app/core/plantilla-general/plantilla-general.template.scss +0 -37
  423. package/src/app/core/plantilla-general/plantilla-general.template.ts +0 -233
  424. package/src/app/core/servicios/auth.service.ts +0 -189
  425. package/src/app/core/servicios/cargar-control-funcionalidad.service.ts +0 -49
  426. package/src/app/core/servicios/data-exporter-table.utils.ts +0 -78
  427. package/src/app/core/servicios/error-interceptor.service.ts +0 -208
  428. package/src/app/core/servicios/guardias/auth.guard.ts +0 -51
  429. package/src/app/core/servicios/guardias/publico.guard.ts +0 -26
  430. package/src/app/core/servicios/interceptores/loading-interceptor.ts +0 -37
  431. package/src/app/core/servicios/interceptores/token-interceptor.service.ts +0 -177
  432. package/src/app/core/servicios/loading.service.ts +0 -48
  433. package/src/app/core/servicios/menu.service.ts +0 -153
  434. package/src/app/core/servicios/spinner-service.ts +0 -18
  435. package/src/app/core/servicios/storage.service.ts +0 -68
  436. package/src/app/core/servicios/template.service.ts +0 -91
  437. package/src/app/core/servicios/toast.service.ts +0 -114
  438. package/src/app/core/servicios/utils.service.ts +0 -362
  439. package/src/app/core/sharedlib.module.ts +0 -11
  440. package/src/app/core/utilidades/color.util.ts +0 -197
  441. package/src/app/layout/app.breadcrumb.component.html +0 -20
  442. package/src/app/layout/app.breadcrumb.component.ts +0 -78
  443. package/src/app/layout/app.footer.component.html +0 -18
  444. package/src/app/layout/app.footer.component.ts +0 -15
  445. package/src/app/layout/app.layout.component.html +0 -20
  446. package/src/app/layout/app.layout.component.ts +0 -201
  447. package/src/app/layout/app.layout.module.ts +0 -9
  448. package/src/app/layout/app.menu.component.html +0 -6
  449. package/src/app/layout/app.menu.component.ts +0 -51
  450. package/src/app/layout/app.menu.service.ts +0 -23
  451. package/src/app/layout/app.menuitem.component.ts +0 -252
  452. package/src/app/layout/app.menuprofile.component.html +0 -35
  453. package/src/app/layout/app.menuprofile.component.ts +0 -60
  454. package/src/app/layout/app.rightmenu.component.html +0 -72
  455. package/src/app/layout/app.rightmenu.component.ts +0 -24
  456. package/src/app/layout/app.sidebar.component.html +0 -40
  457. package/src/app/layout/app.sidebar.component.ts +0 -81
  458. package/src/app/layout/app.topbar.component.html +0 -214
  459. package/src/app/layout/app.topbar.component.ts +0 -335
  460. package/src/app/layout/config/app.config.component.html +0 -125
  461. package/src/app/layout/config/app.config.component.ts +0 -206
  462. package/src/app/layout/config/app.config.module.ts +0 -11
  463. package/src/app/layout/service/app.layout.service.ts +0 -191
  464. package/src/app/publico/pages/login/login.page.html +0 -53
  465. package/src/app/publico/pages/login/login.page.scss +0 -166
  466. package/src/app/publico/pages/login/login.page.ts +0 -128
  467. package/src/app/publico/pages/not-found/not-found.page.html +0 -35
  468. package/src/app/publico/pages/not-found/not-found.page.scss +0 -2
  469. package/src/app/publico/pages/not-found/not-found.page.ts +0 -46
  470. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.html +0 -58
  471. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.scss +0 -49
  472. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.ts +0 -176
  473. package/src/app/publico/pages/timeout/timeout.page.html +0 -24
  474. package/src/app/publico/pages/timeout/timeout.page.scss +0 -2
  475. package/src/app/publico/pages/timeout/timeout.page.ts +0 -18
  476. package/src/app/seguridad/constantes/ConstantesGenerales.ts +0 -30
  477. package/src/app/seguridad/constantes/ReporteEntradaConstantes.ts +0 -18
  478. package/src/app/seguridad/constantes/ReporteFuenteConstantes.ts +0 -13
  479. package/src/app/seguridad/modelos/AplicacionModel.ts +0 -11
  480. package/src/app/seguridad/modelos/ArchivoPortalModel.ts +0 -16
  481. package/src/app/seguridad/modelos/AtributoPuntoModel.ts +0 -9
  482. package/src/app/seguridad/modelos/AtributoSSOportalModel.ts +0 -22
  483. package/src/app/seguridad/modelos/CargueLineaModel.ts +0 -17
  484. package/src/app/seguridad/modelos/ColoresRGB.ts +0 -17
  485. package/src/app/seguridad/modelos/ColumnaFuenteModel.ts +0 -9
  486. package/src/app/seguridad/modelos/ComplementoModel.ts +0 -10
  487. package/src/app/seguridad/modelos/ComponentePaginaModel.ts +0 -22
  488. package/src/app/seguridad/modelos/ConexionModel.ts +0 -15
  489. package/src/app/seguridad/modelos/ControlFuncionModel.ts +0 -10
  490. package/src/app/seguridad/modelos/CorreoModel.ts +0 -45
  491. package/src/app/seguridad/modelos/CorreoWSModel.ts +0 -49
  492. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.ts +0 -14
  493. package/src/app/seguridad/modelos/EmpresaModel.ts +0 -25
  494. package/src/app/seguridad/modelos/EmpresaSeguridadModel.ts +0 -19
  495. package/src/app/seguridad/modelos/EtiquetaModel.ts +0 -4
  496. package/src/app/seguridad/modelos/Etiquetas.ts +0 -14
  497. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.ts +0 -21
  498. package/src/app/seguridad/modelos/FuenteDato.ts +0 -19
  499. package/src/app/seguridad/modelos/FuenteEntradaModel.ts +0 -9
  500. package/src/app/seguridad/modelos/FuenteLineaServicioModel.ts +0 -19
  501. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.ts +0 -14
  502. package/src/app/seguridad/modelos/FuncionalidadModel.ts +0 -12
  503. package/src/app/seguridad/modelos/GeneralModel.ts +0 -16
  504. package/src/app/seguridad/modelos/GrupoControlFuncionModel.ts +0 -12
  505. package/src/app/seguridad/modelos/GrupoFuenteModel.ts +0 -17
  506. package/src/app/seguridad/modelos/GrupoPermisoModel.ts +0 -16
  507. package/src/app/seguridad/modelos/ListaServicioModel.ts +0 -18
  508. package/src/app/seguridad/modelos/LlaveForaneaModel.ts +0 -6
  509. package/src/app/seguridad/modelos/LoginModel.ts +0 -19
  510. package/src/app/seguridad/modelos/MensajeSistemaModel.ts +0 -10
  511. package/src/app/seguridad/modelos/ModulosModel.ts +0 -17
  512. package/src/app/seguridad/modelos/PaginaPortalModel.ts +0 -23
  513. package/src/app/seguridad/modelos/ParametroComponenteModel.ts +0 -9
  514. package/src/app/seguridad/modelos/ParametrosGeneralModel.ts +0 -16
  515. package/src/app/seguridad/modelos/PermisoFuncionModel.ts +0 -11
  516. package/src/app/seguridad/modelos/PermisocontenidoModel.ts +0 -20
  517. package/src/app/seguridad/modelos/PreguntaSeguridadModel.ts +0 -9
  518. package/src/app/seguridad/modelos/PropiedadModel.ts +0 -12
  519. package/src/app/seguridad/modelos/PublicacionWebModel.ts +0 -29
  520. package/src/app/seguridad/modelos/PuntoProcesoModel.ts +0 -7
  521. package/src/app/seguridad/modelos/RecursoPunto.ts +0 -13
  522. package/src/app/seguridad/modelos/RecursoPuntoModel.ts +0 -13
  523. package/src/app/seguridad/modelos/ReporteBanda.ts +0 -9
  524. package/src/app/seguridad/modelos/ReporteColumna.ts +0 -33
  525. package/src/app/seguridad/modelos/ReporteColumnario.ts +0 -82
  526. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.ts +0 -31
  527. package/src/app/seguridad/modelos/ReporteMarcador.ts +0 -40
  528. package/src/app/seguridad/modelos/ReporteSoporte.ts +0 -10
  529. package/src/app/seguridad/modelos/ReporteTabla.ts +0 -14
  530. package/src/app/seguridad/modelos/RespuestaModel.ts +0 -10
  531. package/src/app/seguridad/modelos/ServidorCorreoModel.ts +0 -31
  532. package/src/app/seguridad/modelos/SistemaMensajeModel.ts +0 -11
  533. package/src/app/seguridad/modelos/SitioPortalModel.ts +0 -29
  534. package/src/app/seguridad/modelos/TablaFromModel.ts +0 -5
  535. package/src/app/seguridad/modelos/TareasModel.ts +0 -54
  536. package/src/app/seguridad/modelos/TextoModel.ts +0 -11
  537. package/src/app/seguridad/modelos/TipoEtiqueta.ts +0 -8
  538. package/src/app/seguridad/modelos/UnionModel.ts +0 -14
  539. package/src/app/seguridad/modelos/UsuariogrupoModel.ts +0 -27
  540. package/src/app/seguridad/modelos/aplicacion-propiedad-model.ts +0 -16
  541. package/src/app/seguridad/modelos/contenidoCorreoModel.ts +0 -13
  542. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.html +0 -47
  543. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.scss +0 -8
  544. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.ts +0 -144
  545. package/src/app/shared/servicios/cargar-archivos.service.ts +0 -51
  546. package/src/app/shared/servicios/cargar-mapas.service.ts +0 -43
  547. package/src/app/shared/servicios/encriptado-basico.service.ts +0 -54
  548. package/src/app/shared/servicios/encriptador-simetrico.service.ts +0 -29
  549. package/src/app/shared/servicios/general.service.ts +0 -124
  550. package/src/app/shared/servicios/parametros-navegacion.service.ts +0 -20
  551. package/src/app/shared/servicios/plantillas.service.ts +0 -22
  552. package/src/app/shared/servicios/tarea.service.ts +0 -71
  553. package/src/app/shared/utilidades/translate-loader.util.ts +0 -44
  554. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.html +0 -167
  555. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.scss +0 -11
  556. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.ts +0 -425
  557. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.html +0 -87
  558. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.scss +0 -0
  559. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.ts +0 -189
  560. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.html +0 -117
  561. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.scss +0 -0
  562. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.ts +0 -87
  563. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.html +0 -158
  564. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.scss +0 -6
  565. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.ts +0 -345
  566. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.html +0 -131
  567. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.scss +0 -0
  568. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.ts +0 -198
  569. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.html +0 -206
  570. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.scss +0 -3
  571. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.ts +0 -329
  572. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.html +0 -2114
  573. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.scss +0 -241
  574. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.ts +0 -1677
  575. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.html +0 -33
  576. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.scss +0 -0
  577. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.ts +0 -96
  578. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.html +0 -54
  579. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.scss +0 -0
  580. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.ts +0 -111
  581. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.html +0 -394
  582. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.scss +0 -10
  583. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.ts +0 -599
  584. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.html +0 -130
  585. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.scss +0 -0
  586. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.ts +0 -172
  587. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.html +0 -376
  588. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.scss +0 -5
  589. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.ts +0 -749
  590. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.html +0 -145
  591. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.scss +0 -0
  592. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.ts +0 -302
  593. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.html +0 -19
  594. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.scss +0 -0
  595. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.ts +0 -89
  596. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.html +0 -714
  597. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.scss +0 -0
  598. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.ts +0 -688
  599. package/src/app/webcommon/pipes/dashboard.pipe.ts +0 -79
  600. package/src/app/webcommon/pipes/fuente.pipe.ts +0 -207
  601. package/src/app/webcommon/pipes/general.pipe.ts +0 -1043
  602. package/src/app/webcommon/pipes/reporte-columnario.pipe.ts +0 -101
  603. package/src/app/webcommon/pipes/reporte-fuente.pipe.ts +0 -306
  604. package/src/app/webcommon/pipes/sara-general.pipe.ts +0 -289
  605. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.html +0 -90
  606. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.scss +0 -0
  607. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.ts +0 -262
  608. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.html +0 -50
  609. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.scss +0 -0
  610. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.ts +0 -135
  611. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.html +0 -41
  612. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.scss +0 -0
  613. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.ts +0 -283
  614. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.html +0 -179
  615. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.scss +0 -3
  616. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.ts +0 -266
  617. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.html +0 -261
  618. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.scss +0 -13
  619. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.ts +0 -519
  620. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.html +0 -10
  621. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.scss +0 -5
  622. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.ts +0 -58
  623. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.html +0 -71
  624. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.scss +0 -0
  625. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.ts +0 -151
  626. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.html +0 -11
  627. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.scss +0 -0
  628. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.ts +0 -82
  629. package/src/app/webcommon/services/carguelinea.service.ts +0 -72
  630. package/src/app/webcommon/services/dashboard.service.ts +0 -258
  631. package/src/app/webcommon/services/ejecucionreporte.service.ts +0 -160
  632. package/src/app/webcommon/services/fechaUtils.service.ts +0 -117
  633. package/src/app/webcommon/services/fuentegeneral.service.ts +0 -74
  634. package/src/app/webcommon/services/homologacion.service.ts +0 -49
  635. package/src/app/webcommon/services/plantillas.service.ts +0 -165
  636. package/src/app/webcommon/services/reportes.service.ts +0 -133
  637. package/src/app/webcommon/webcommon.module.ts +0 -11
  638. package/src/environments/environment.prod.ts +0 -3
  639. package/src/environments/environment.ts +0 -25
  640. package/src/favicon.ico +0 -0
  641. package/src/index.html +0 -14
  642. package/src/main.ts +0 -12
  643. package/src/polyfills.ts +0 -53
  644. package/src/test.ts +0 -14
  645. package/tsconfig.app.json +0 -15
  646. package/tsconfig.json +0 -35
  647. package/tsconfig.spec.json +0 -18
@@ -0,0 +1,515 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { TranslateModule } from '@ngx-translate/core';
3
+ import { GeneralModel } from '../../../seguridad/modelos/GeneralModel';
4
+ import { ConfirmationService, MessageService } from 'primeng/api';
5
+ import { ReporteFuenteModel } from '../../../seguridad/modelos/ReporteFuenteModel';
6
+ import { DialogModule } from 'primeng/dialog';
7
+ import { ConfirmPopupModule } from 'primeng/confirmpopup';
8
+ import { AccordionModule } from 'primeng/accordion';
9
+ import { TableModule } from 'primeng/table';
10
+ import { CommonModule, DatePipe } from '@angular/common';
11
+ import { FieldsetModule } from 'primeng/fieldset';
12
+ import { InputNumberModule } from 'primeng/inputnumber';
13
+ import { InputTextModule } from 'primeng/inputtext';
14
+ import { DropdownModule } from 'primeng/dropdown';
15
+ import { CalendarModule } from 'primeng/calendar';
16
+ import { RadioButtonModule } from 'primeng/radiobutton';
17
+ import { PopupSentenciaComponent } from '../popup-sentencia/popup-sentencia.component';
18
+ import { FormsModule } from '@angular/forms';
19
+ import { FloatLabelModule } from 'primeng/floatlabel';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "../../../shared/servicios/general.service";
22
+ import * as i2 from "../../services/ejecucionreporte.service";
23
+ import * as i3 from "primeng/api";
24
+ import * as i4 from "../../../core/servicios/toast.service";
25
+ import * as i5 from "../../../core/servicios/auth.service";
26
+ import * as i6 from "@ngx-translate/core";
27
+ import * as i7 from "../../../shared/servicios/cargar-archivos.service";
28
+ import * as i8 from "../../../core/servicios/utils.service";
29
+ import * as i9 from "../../../core/servicios/cargar-control-funcionalidad.service";
30
+ import * as i10 from "../../../shared/servicios/encriptado-basico.service";
31
+ import * as i11 from "../../pipes/reporte-fuente.pipe";
32
+ import * as i12 from "../../pipes/general.pipe";
33
+ import * as i13 from "@angular/common";
34
+ import * as i14 from "primeng/dialog";
35
+ import * as i15 from "primeng/confirmpopup";
36
+ import * as i16 from "primeng/accordion";
37
+ import * as i17 from "primeng/table";
38
+ import * as i18 from "primeng/fieldset";
39
+ import * as i19 from "primeng/inputnumber";
40
+ import * as i20 from "primeng/inputtext";
41
+ import * as i21 from "primeng/dropdown";
42
+ import * as i22 from "primeng/calendar";
43
+ import * as i23 from "primeng/button";
44
+ import * as i24 from "primeng/radiobutton";
45
+ import * as i25 from "@angular/forms";
46
+ import * as i26 from "primeng/floatlabel";
47
+ export class PopupReporteComponent {
48
+ generalService;
49
+ ejecucionReporteService;
50
+ confirmationService;
51
+ notificacionService;
52
+ authService;
53
+ translateService;
54
+ cargarArchivoService;
55
+ utilsService;
56
+ controlFuncionalidad;
57
+ encriptadoBasico;
58
+ reporteFuentePipe;
59
+ generalPipe;
60
+ cargarArchivo;
61
+ encriptadorArchivo;
62
+ mostrar = false;
63
+ aplicacion;
64
+ reporte = new ReporteFuenteModel;
65
+ entradasPuntoProceso = [];
66
+ regresar = new EventEmitter();
67
+ panel = 'entrada';
68
+ operacion;
69
+ listaEntrada = [];
70
+ listaSegundoPlano = [];
71
+ parametros = [];
72
+ elementoBorrar = {};
73
+ generaciones = [];
74
+ operaciones = [];
75
+ mostrarOtraSeleccion;
76
+ mostrarArchivosSoporte;
77
+ mostrarConsultaCasoError;
78
+ correo;
79
+ tipoReporte;
80
+ soporteBase;
81
+ tipoArchivo;
82
+ bloquearCorreo;
83
+ mapaTipoArchivos;
84
+ listadoArchivoSoporte = [];
85
+ mostrarPopupSentencia;
86
+ items;
87
+ vistaVisualizar;
88
+ paginator = { rows: 2, totalRecords: 0 };
89
+ mostrarParametros;
90
+ mostrarQueDeseaHacer;
91
+ columnas = [];
92
+ listaRegistro = [];
93
+ existeJasper = false;
94
+ constructor(generalService, ejecucionReporteService, confirmationService, notificacionService, authService, translateService, cargarArchivoService, utilsService, controlFuncionalidad, encriptadoBasico, reporteFuentePipe, generalPipe, cargarArchivo, encriptadorArchivo) {
95
+ this.generalService = generalService;
96
+ this.ejecucionReporteService = ejecucionReporteService;
97
+ this.confirmationService = confirmationService;
98
+ this.notificacionService = notificacionService;
99
+ this.authService = authService;
100
+ this.translateService = translateService;
101
+ this.cargarArchivoService = cargarArchivoService;
102
+ this.utilsService = utilsService;
103
+ this.controlFuncionalidad = controlFuncionalidad;
104
+ this.encriptadoBasico = encriptadoBasico;
105
+ this.reporteFuentePipe = reporteFuentePipe;
106
+ this.generalPipe = generalPipe;
107
+ this.cargarArchivo = cargarArchivo;
108
+ this.encriptadorArchivo = encriptadorArchivo;
109
+ }
110
+ ngOnInit() {
111
+ this.mapaTipoArchivos = this.reporteFuentePipe.MAPA_TIPO_ARCHIVOS;
112
+ this.aplicacion = this.authService.getTokenKey('aplicacion');
113
+ }
114
+ async mostrarPopup() {
115
+ this.panel = 'entrada';
116
+ this.mostrarQueDeseaHacer = false;
117
+ this.tipoReporte = null;
118
+ this.mostrarConsultaCasoError = this.validarControlFuncionalidad('reporte:versentenciaerror');
119
+ this.operacion = null;
120
+ this.elementoBorrar = {};
121
+ this.listaSegundoPlano = [];
122
+ this.listaRegistro = [];
123
+ this.columnas = [];
124
+ this.existeJasper = false;
125
+ if (this.reporte.llave) {
126
+ var resultado = await this.ejecucionReporteService.getDatosEjecucionReporte({ llave: this.reporte.llave }).toPromise();
127
+ this.reporte = resultado.reporte;
128
+ delete this.reporte['alias'];
129
+ this.cargarListaEntrada();
130
+ this.traerSegundoPlano();
131
+ this.cargarCorreo();
132
+ await this.validarExisteJasper();
133
+ await this.cargarGeneraciones();
134
+ this.cargarOperaciones();
135
+ this.utilsService.resizeWindowIFrame();
136
+ }
137
+ this.utilsService.resizeWindowIFrame();
138
+ }
139
+ cargarMenu() {
140
+ this.items = [
141
+ {
142
+ label: this.translateService.instant('ejecucion'),
143
+ icon: 'glyphicons glyphicons-plus-sign',
144
+ command: (event) => {
145
+ this.vistaVisualizar = 'entrada';
146
+ },
147
+ },
148
+ {
149
+ label: this.translateService.instant('segundoplano'),
150
+ icon: 'glyphicons glyphicons-file-minus',
151
+ command: (event) => {
152
+ this.vistaVisualizar = 'segundoplano';
153
+ },
154
+ visible: this.listaSegundoPlano.length > 0,
155
+ }
156
+ ];
157
+ }
158
+ async cargarGeneraciones() {
159
+ this.generaciones = [];
160
+ if (this.utilsService.isNotBlank(this.reporte.tituloParametro) && this.existeJasper) {
161
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_JASPERDINAMICO,
162
+ label: this.reporteFuentePipe.DESC_GENERACION_JASPERDINAMICO });
163
+ }
164
+ if (this.utilsService.isNotBlank(this.reporte.jasperFijo) && this.utilsService.isNotBlank(this.reporte.modoFijo)) {
165
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_JASPERFIJO,
166
+ label: this.reporteFuentePipe.DESC_GENERACION_JASPERFIJO });
167
+ }
168
+ if (this.utilsService.isNotBlank(this.reporte.archivoTodo) && this.utilsService.isNotBlank(this.reporte.hojaExcel)) {
169
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_EXCEL,
170
+ label: this.reporteFuentePipe.DESC_GENERACION_EXCEL });
171
+ }
172
+ if (this.utilsService.isNotBlank(this.reporte.archivoIndividual) || this.reporte.unicoArchivo == 'N') {
173
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_PLANTILLA,
174
+ label: this.reporteFuentePipe.DESC_GENERACION_PLANTILLA });
175
+ }
176
+ if (this.utilsService.isNotBlank(this.reporte.separador)) {
177
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_ARCHIVOPLANO,
178
+ label: this.reporteFuentePipe.DESC_GENERACION_ARCHIVOPLANO });
179
+ }
180
+ if (this.utilsService.isNotBlank(this.reporte.nombreTabla)) {
181
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_TABLA,
182
+ label: this.reporteFuentePipe.DESC_GENERACION_TABLA });
183
+ }
184
+ if (this.utilsService.isNotBlank(this.reporte.tagEncabezado) && this.utilsService.isNotBlank(this.reporte.estructuraRegistro)) {
185
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_XML,
186
+ label: this.reporteFuentePipe.DESC_GENERACION_XML });
187
+ }
188
+ if (this.utilsService.isNotBlank(this.reporte.archivoExcelColumnario) && this.utilsService.isNotBlank(this.reporte.hojaExcelColumnario)) {
189
+ this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_COLUMNARIO,
190
+ label: this.reporteFuentePipe.DESC_GENERACION_COLUMNARIO });
191
+ }
192
+ }
193
+ async validarExisteJasper() {
194
+ try {
195
+ var data = await this.cargarArchivo.descargarArchivo(this.encriptadorArchivo.encriptar('reportes/' + this.reporte.llave + '.jrxml'), 'ruta_plantillas', this.aplicacion).toPromise();
196
+ if (data) {
197
+ this.existeJasper = true;
198
+ }
199
+ }
200
+ catch (error) {
201
+ this.existeJasper = false;
202
+ }
203
+ }
204
+ cargarOperaciones() {
205
+ this.bloquearCorreo = true;
206
+ this.operaciones = [];
207
+ if (this.tipoReporte) {
208
+ if (this.tipoReporte != this.reporteFuentePipe.GENERACION_TABLA) {
209
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_DESCARGAR,
210
+ label: this.reporteFuentePipe.DESC_OPERACION_DESCARGAR });
211
+ if (this.validarControlFuncionalidad('reporte:enviocorreo')) {
212
+ this.bloquearCorreo = false;
213
+ }
214
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_ENVIARCORREO,
215
+ label: this.reporteFuentePipe.DESC_OPERACION_ENVIARCORREO });
216
+ if (this.reporteFuentePipe.MOMENTOS_SEGUNDO_PLANO == this.reporte.momento) {
217
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_SEGUNDOPLANO,
218
+ label: this.reporteFuentePipe.DESC_OPERACION_SEGUNDOPLANO });
219
+ }
220
+ if ((this.tipoReporte == this.reporteFuentePipe.GENERACION_JASPERFIJO && this.reporte.modoFijo == 'P')
221
+ || this.tipoReporte == this.reporteFuentePipe.GENERACION_PLANTILLA && this.reporte.descargarFuente != 'S') {
222
+ if (this.reporte.archivoHtml && this.reporte.campoEmail) {
223
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_ENVIOMASIVO,
224
+ label: this.reporteFuentePipe.DESC_OPERACION_ENVIOMASIVO });
225
+ }
226
+ if (this.reporte.publicacion && this.reporte.campoPublica) {
227
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_PUBLICAR,
228
+ label: this.reporteFuentePipe.DESC_OPERACION_PUBLICAR });
229
+ }
230
+ if (this.reporte.archivoHtml && this.reporte.campoEmail && this.reporte.publicacion && this.reporte.campoPublica) {
231
+ this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_CORREOPUBLICAR,
232
+ label: this.reporteFuentePipe.DESC_OPERACION_CORREOPUBLICAR });
233
+ }
234
+ }
235
+ //pte proceso externo
236
+ }
237
+ }
238
+ }
239
+ cambioValorLista(event, parametro) {
240
+ if (event.value) {
241
+ let lista = event.value.split(':');
242
+ if (parametro.unionDTO.tipoDato == 'N') {
243
+ parametro.unionDTO.valor = parseInt(lista[0]);
244
+ }
245
+ else {
246
+ parametro.unionDTO.valor = lista[0];
247
+ }
248
+ }
249
+ this.utilsService.resizeWindowIFrame();
250
+ }
251
+ cambioSoporteBase(event) {
252
+ if (this.soporteBase == null) {
253
+ this.cargarOperaciones();
254
+ return;
255
+ }
256
+ this.generalService.queryForObject(new GeneralModel('ReporteSoporteDTO', null, false, { llaveTabla: this.soporteBase })).subscribe(archivoBase => {
257
+ if (archivoBase == null) {
258
+ return;
259
+ }
260
+ this.soporteBase = archivoBase.llaveTabla;
261
+ this.reporte.archivoIndividual = archivoBase.archivoIndividual;
262
+ this.cargarOperaciones();
263
+ this.utilsService.resizeWindowIFrame();
264
+ });
265
+ }
266
+ cargarCorreo() {
267
+ this.generalService.queryForObject(new GeneralModel('UsuarioDTO', null, true, { login: this.authService.getTokenKey('usuario') })).subscribe(data => {
268
+ this.correo = data.email;
269
+ });
270
+ }
271
+ cargarListaEntrada() {
272
+ this.mostrarParametros = false;
273
+ if (this.entradasPuntoProceso.length > 0) {
274
+ this.parametros = this.entradasPuntoProceso;
275
+ this.parametros.forEach(element => {
276
+ if (element.unionDTO.solicitar == 'S') {
277
+ this.mostrarParametros = true;
278
+ }
279
+ if (element.unionDTO.tipoDato == 'F' && element.unionDTO.valor != null) {
280
+ element.unionDTO.valor = new Date(element.unionDTO.valor);
281
+ }
282
+ });
283
+ this.utilsService.resizeWindowIFrame();
284
+ }
285
+ else {
286
+ this.ejecucionReporteService.obtenerListaEntradaEjecucion(this.reporte).subscribe(data => {
287
+ this.parametros = data;
288
+ this.parametros.forEach(element => {
289
+ if (element.unionDTO.solicitar == 'S') {
290
+ this.mostrarParametros = true;
291
+ }
292
+ if (element.unionDTO.tipoDato == 'F' && element.unionDTO.valor != null) {
293
+ element.unionDTO.valor = new Date(element.unionDTO.valor);
294
+ }
295
+ });
296
+ this.utilsService.resizeWindowIFrame();
297
+ });
298
+ }
299
+ }
300
+ traerSegundoPlano() {
301
+ let usuario = this.authService.getTokenKey('usuario');
302
+ this.generalService.queryForList(new GeneralModel('EjecucionReporteDTO', null, false, {
303
+ adicionado: usuario,
304
+ reporteFuente: this.reporte.llave
305
+ })).subscribe(data => {
306
+ this.listaSegundoPlano = data;
307
+ this.paginator.totalRecords = this.listaSegundoPlano.length;
308
+ });
309
+ }
310
+ verSegundoPlano(event) {
311
+ this.elementoBorrar = event.data;
312
+ this.elementoBorrar.fechaAdicionado = this.elementoBorrar.fechaAdicionado ? new Date(this.elementoBorrar.fechaAdicionado) : null;
313
+ this.elementoBorrar.inicia = this.elementoBorrar.inicia ? new Date(this.elementoBorrar.inicia) : null;
314
+ this.elementoBorrar.termina = this.elementoBorrar.termina ? new Date(this.elementoBorrar.termina) : null;
315
+ this.operacion = 'historico';
316
+ this.panel = 'resultado';
317
+ }
318
+ eliminarSegundoPlano(event) {
319
+ this.confirmationService.confirm({
320
+ target: event.target,
321
+ message: this.generalPipe.MENSAJE_ELIMINAR_CONFIRMAR,
322
+ acceptLabel: this.generalPipe.SI_DESC,
323
+ header: this.translateService.instant('confirmar'),
324
+ accept: () => {
325
+ this.ejecucionReporteService.eliminarEjecucionReporte(this.elementoBorrar).subscribe(data => {
326
+ this.notificacionService.showInfo(this.generalPipe.MENSAJE_ELIMINAR);
327
+ this.regresarSegundoPlano();
328
+ this.traerSegundoPlano();
329
+ });
330
+ }
331
+ });
332
+ }
333
+ descargarArchivo() {
334
+ this.cargarArchivoService.descargarArchivo(this.encriptadoBasico.encriptar(this.elementoBorrar.archivo)).subscribe(blob => {
335
+ const a = document.createElement('a');
336
+ const objectUrl = URL.createObjectURL(blob);
337
+ a.href = objectUrl;
338
+ let partes = this.elementoBorrar.archivo.split(".");
339
+ let extension = partes[partes.length - 1];
340
+ a.download = this.utilsService.generarLlave() + '.' + extension;
341
+ a.click();
342
+ URL.revokeObjectURL(objectUrl);
343
+ });
344
+ }
345
+ cambioTipoReporte(event) {
346
+ this.mostrarQueDeseaHacer = true;
347
+ if (this.tipoReporte == this.reporteFuentePipe.GENERACION_PLANTILLA && this.reporte.unicoArchivo == 'N') {
348
+ this.mostrarArchivosSoporte = true;
349
+ this.generalService.queryForList(new GeneralModel('ReporteSoporteDTO', null, false, {
350
+ reporteFuente: this.reporte.llave,
351
+ tipo: 'S'
352
+ })).subscribe(data => {
353
+ this.listadoArchivoSoporte = data;
354
+ });
355
+ }
356
+ else {
357
+ this.mostrarArchivosSoporte = false;
358
+ this.listadoArchivoSoporte = [];
359
+ this.tipoArchivo = null;
360
+ this.operacion = null;
361
+ this.cargarOperaciones();
362
+ //this.descargarArchivo = null;
363
+ }
364
+ }
365
+ cambioTipoArchivo(event) {
366
+ this.cargarOperaciones();
367
+ }
368
+ regresarSegundoPlano() {
369
+ this.elementoBorrar = {};
370
+ this.panel = 'entrada';
371
+ this.operacion = null;
372
+ }
373
+ ocultar() {
374
+ this.tipoReporte = null;
375
+ this.mostrar = false;
376
+ this.regresar.emit(false);
377
+ }
378
+ validarControlFuncionalidad(valor) {
379
+ return this.controlFuncionalidad.getControlFuncionalidad(valor);
380
+ }
381
+ sentencia() {
382
+ this.mostrarPopupSentencia = true;
383
+ }
384
+ regresarSentencia(event) {
385
+ this.mostrarPopupSentencia = false;
386
+ }
387
+ enviarSegundoPlano() {
388
+ let listaEntrada = [];
389
+ this.parametros.forEach(element => {
390
+ listaEntrada.push(element.unionDTO);
391
+ });
392
+ this.ejecucionReporteService.enviarSegundoPlano({
393
+ reporte: this.reporte,
394
+ parametros: listaEntrada,
395
+ tipoReporte: this.tipoReporte,
396
+ operacion: this.operacion,
397
+ correo: this.correo,
398
+ }).subscribe(data => {
399
+ this.notificacionService.showInfo(data.mensaje);
400
+ });
401
+ }
402
+ descargarReporte() {
403
+ if ('F' == this.tipoReporte) {
404
+ this.reporte.tipoArchivo = this.tipoArchivo;
405
+ }
406
+ let listaEntrada = [];
407
+ this.parametros.forEach(element => {
408
+ listaEntrada.push(element.unionDTO);
409
+ });
410
+ this.ejecucionReporteService.descargarReporte({
411
+ reporte: this.reporte,
412
+ parametros: listaEntrada,
413
+ tipoReporte: this.tipoReporte,
414
+ operacion: this.operacion,
415
+ correo: this.correo,
416
+ endpointGeneradorReportes: ''
417
+ }).subscribe({
418
+ next: data => {
419
+ console.log(data);
420
+ this.notificacionService.showInfo(data.mensaje);
421
+ if (!data.archivo) {
422
+ return;
423
+ }
424
+ const decodedData = atob(data.archivo);
425
+ const byteNumbers = new Array(decodedData.length);
426
+ for (let i = 0; i < decodedData.length; i++) {
427
+ byteNumbers[i] = decodedData.charCodeAt(i);
428
+ }
429
+ const byteArray = new Uint8Array(byteNumbers);
430
+ // Crea un objeto Blob con los bytes decodificados y el tipo MIME del archivo
431
+ const blob = new Blob([byteArray], { type: data.mime });
432
+ // Crea una URL del objeto Blob
433
+ const url = URL.createObjectURL(blob);
434
+ // Crea un enlace de descarga y haz clic en él para iniciar la descarga
435
+ const link = document.createElement('a');
436
+ link.href = url;
437
+ link.download = data.nombreArchivo + data.extension;
438
+ document.body.appendChild(link);
439
+ link.click();
440
+ // Limpia la URL creada
441
+ URL.revokeObjectURL(url);
442
+ }
443
+ });
444
+ }
445
+ descargarReporteSinHilo() {
446
+ let listaEntrada = [];
447
+ this.parametros.forEach(element => {
448
+ listaEntrada.push(element.unionDTO);
449
+ });
450
+ this.ejecucionReporteService.descargarReporte({
451
+ next: data => {
452
+ this.notificacionService.showInfo(data.mensaje);
453
+ const decodedData = atob(data.archivo);
454
+ const byteNumbers = new Array(decodedData.length);
455
+ for (let i = 0; i < decodedData.length; i++) {
456
+ byteNumbers[i] = decodedData.charCodeAt(i);
457
+ }
458
+ const byteArray = new Uint8Array(byteNumbers);
459
+ // Crea un objeto Blob con los bytes decodificados y el tipo MIME del archivo
460
+ const blob = new Blob([byteArray], { type: data.mime });
461
+ // Crea una URL del objeto Blob
462
+ const url = URL.createObjectURL(blob);
463
+ // Crea un enlace de descarga y haz clic en él para iniciar la descarga
464
+ const link = document.createElement('a');
465
+ link.href = url;
466
+ link.download = data.nombreArchivo + '.' + data.extension;
467
+ document.body.appendChild(link);
468
+ link.click();
469
+ // Limpia la URL creada
470
+ URL.revokeObjectURL(url);
471
+ },
472
+ error: err => {
473
+ this.notificacionService.showError(JSON.stringify(err.error.mensajeEtiqueta));
474
+ }
475
+ });
476
+ }
477
+ generarTabla() {
478
+ this.panel = 'resultado';
479
+ let listaEntrada = [];
480
+ this.columnas = [];
481
+ this.parametros.forEach(element => {
482
+ listaEntrada.push(element.unionDTO);
483
+ });
484
+ this.ejecucionReporteService.generarTabla({ reporte: this.reporte, parametros: listaEntrada }).subscribe(data => {
485
+ var columna;
486
+ data.columnas.forEach(element => {
487
+ columna = {
488
+ field: element.nombre.toLowerCase(),
489
+ header: element.nombre,
490
+ width: 300,
491
+ canOrder: true,
492
+ };
493
+ this.columnas.push(columna);
494
+ });
495
+ this.listaRegistro = data.listaRegistro;
496
+ });
497
+ }
498
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PopupReporteComponent, deps: [{ token: i1.GeneralService }, { token: i2.EjecucionReporteService }, { token: i3.ConfirmationService }, { token: i4.ToastService }, { token: i5.AuthService }, { token: i6.TranslateService }, { token: i7.CargarArchivosService }, { token: i8.UtilsService }, { token: i9.CargarControlFuncionalidadService }, { token: i10.EncriptadoBasicoService }, { token: i11.ReporteFuentePipe }, { token: i12.GeneralPipe }, { token: i7.CargarArchivosService }, { token: i10.EncriptadoBasicoService }], target: i0.ɵɵFactoryTarget.Component });
499
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: PopupReporteComponent, isStandalone: true, selector: "app-popup-reporte", inputs: { mostrar: "mostrar", aplicacion: "aplicacion", reporte: "reporte", entradasPuntoProceso: "entradasPuntoProceso" }, outputs: { regresar: "regresar" }, providers: [MessageService, ConfirmationService], ngImport: i0, template: "<p-confirmPopup></p-confirmPopup>\n<p-dialog id='popupReporte' header=\"{{'reportesgenerales' | translate}}\" [(visible)]=\"mostrar\" (onShow)=\"mostrarPopup()\"\n [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\" (onHide)=\"ocultar()\" [modal]=\"true\">\n\n <div *ngIf=\"panel == 'entrada'\">\n <!--Segundo plano-->\n <p-accordion [multiple]=\"true\">\n <p-accordionTab [selected]=\"true\" [header]=\"'segundoplano' | translate\" *ngIf=\"listaSegundoPlano.length > 0\">\n <p-table [value]=\"listaSegundoPlano\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\"\n [rows]=\"paginator.rows\" [totalRecords]=\"paginator.totalRecords\"\n [paginator]=\"paginator.totalRecords > paginator.rows\" (onRowSelect)=\"verSegundoPlano($event)\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'estado' | translate }} </th>\n <th>{{'fechainicial' | translate }} </th>\n </tr>\n <th>\n </ng-template>\n <ng-template pTemplate=\"body\" let-entrada>\n <tr [pSelectableRow]=\"entrada\">\n <td>{{entrada.nombreEstado}}</td>\n <td>{{entrada.inicia | date: 'dd/MM/yyyy h:mm a'}}</td>\n </tr>\n </ng-template>\n </p-table>\n </p-accordionTab>\n </p-accordion>\n <p-fieldset class=\"mt-0\" *ngIf=\"mostrarParametros\">\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>{{'entrada' | translate}}</span>\n </div>\n </ng-template>\n <p-table [value]=\"parametros\" >\n <ng-template pTemplate=\"body\" let-parametro>\n <tr [pSelectableRow]=\"parametro\">\n <!--<td>\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\n </td>-->\n <td *ngIf=\"parametro.unionDTO.solicitar == 'S'\">\n <p-floatLabel>\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"(parametro.unionDTO.tipoDato == 'T' || parametro.unionDTO.tipoDato == 'E') && parametro.unionDTO.tipo == 'D'\" />\n\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'U' && parametro.unionDTO.tipo == 'D'\" />\n\n\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'N' && parametro.unionDTO.tipo == 'D'\">\n </p-inputNumber>\n\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\" mode=\"decimal\" [minFractionDigits]=\"2\"\n [maxFractionDigits]=\"16\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'B' && parametro.unionDTO.tipo == 'D'\">\n </p-inputNumber>\n\n <p-dropdown [options]=\"parametro.lista\" [autoDisplayFirst]=\"false\" appendTo=\"body\"\n (onChange)=\"cambioValorLista($event, parametro)\" [(ngModel)]=\"parametro.unionDTO.llaveLista\"\n optionLabel=\"label\" optionValue=\"value\" *ngIf=\"parametro.unionDTO.tipo == 'L'\">\n </p-dropdown>\n\n <p-calendar type=\"text\" [(ngModel)]=\"parametro.unionDTO.valor\" dateFormat=\"dd/mm/yy\" appendTo=\"body\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'F' && parametro.unionDTO.tipo == 'D'\"></p-calendar>\n\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\n </p-floatLabel>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </p-fieldset>\n <p-fieldset class=\"mt-0\" *ngIf=\"generaciones.length > 0\">\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>{{'generar' | translate}}</span>\n </div>\n </ng-template>\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of generaciones\">\n <div class=\"field-radiobutton\">\n <p-radioButton (onClick)=\"cambioTipoReporte($event)\" [inputId]=\"valor.value\" name=\"tipoReporte\"\n [value]=\"valor.value\" [(ngModel)]=\"tipoReporte\" />\n <label [for]=\"valor.value\" class=\"ml-2\">\n {{ valor.label }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </p-fieldset>\n\n <p-fieldset class=\"mt-0\" *ngIf=\"'A' != tipoReporte && mostrarQueDeseaHacer\" >\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>\u00BFQu\u00E9 desea hacer?</span>\n </div>\n </ng-template>\n <label *ngIf=\"tipoReporte && 'F' == tipoReporte\">{{'seleccionetipoarchivodeseagenerar' | translate}}</label>\n\n <div *ngIf=\"tipoReporte && 'F' == tipoReporte\">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of mapaTipoArchivos\">\n <div class=\"field-radiobutton\">\n <p-radioButton (onClick)=\"cambioTipoArchivo($event)\" [inputId]=\"valor.codigo\" name=\"tipoArchivo\"\n [value]=\"valor.codigo\" [(ngModel)]=\"tipoArchivo\" />\n <label [for]=\"valor.codigo\" class=\"ml-2\">\n {{ valor.nombre }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"mostrarArchivosSoporte\">\n <div class=\"Detallereporte\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-12\">\n <p-floatLabel>\n <p-dropdown [options]=\"listadoArchivoSoporte\" [autoDisplayFirst]=\"false\" optionLabel=\"descripcion\" appendTo=\"body\"\n optionValue=\"llaveTabla\" [(ngModel)]=\"soporteBase\" (onChange)=\"cambioSoporteBase($event)\"></p-dropdown>\n <label>Soporte Base:</label>\n </p-floatLabel>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"tipoReporte == 'F' && tipoArchivo || tipoReporte != 'F' \">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of operaciones\">\n <div class=\"field-radiobutton\">\n <p-radioButton [inputId]=\"valor.value\" name=\"operacion\" [value]=\"valor.value\"\n [(ngModel)]=\"operacion\" />\n <label [for]=\"valor.value\" class=\"ml-2\">\n {{ valor.label }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"operacion == 'E'\">\n <p-floatLabel>\n <input pInputText [(ngModel)]=\"correo\" type=\"text\" [disabled]=\"bloquearCorreo\" />\n <label>{{'correo' | translate}}</label>\n </p-floatLabel>\n </div>\n </p-fieldset>\n \n\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 mt-4 p-button p-button-outlined background-100\"\n *ngIf=\"validarControlFuncionalidad('ejecrepo:sentencia')\" label=\"Ver sentencia\" icon=\"glyphicons glyphicons-eye-open\"\n (click)=\"sentencia()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'E'\" icon=\"glyphicons glyphicons-envelope\"\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento != 'D'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporte()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento == 'D'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporteSinHilo()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"tipoReporte == 'A'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"generarTabla()\"></button>\n <!--pte proceso externo-->\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'M' || operacion == 'MP'\" icon=\"glyphicons glyphicons-envelope\"\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'P'\" icon=\"glyphicons glyphicons-folder-open\"\n label=\"{{'link_publicar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion =='S'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'link_generar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n\n </div>\n </div>\n <div *ngIf=\"panel == 'resultado'\">\n <div *ngIf=\"operacion == 'historico'\">\n <div class=\"flex justify-content-between align-items-center mt-2 mb-2\">\n <h4 class=\"text-base mt-2 ml-2\">{{'detalle' | translate}} {{'segundoplano' | translate}}</h4>\n <button pButton pRipple icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 ml-4\"\n (click)=\"regresarSegundoPlano()\" label=\"{{'link_regresar' | translate}}\" >\n </button>\n </div>\n <div class=\" Inputgroup\">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.inicia\" [disabled]=\"true\" appendTo=\"body\"\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\n <label>{{('fechainicial') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.termina\" [disabled]=\"true\" appendTo=\"body\"\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\n <label>{{('fechafinal') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <input pInputText type=\"text\" [readonly]=\"false\"\n [(ngModel)]=\"elementoBorrar.nombreEstado\" [disabled]=\"true\" />\n <label>{{('estado') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"elementoBorrar.estado == 'E'\">\n <label>{{('mensaje') | translate}}</label>\n <textarea class=\"min-w-full p-inputtextarea p-inputtext p-component p-element \"\n rows=\"5\" cols=\"30\" pInputTextarea [(ngModel)]=\"elementoBorrar.archivo\"\n [disabled]=\"true\"></textarea>\n </div>\n </div>\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\"\n *ngIf=\"elementoBorrar.estado == 'T'\" icon=\"pi pi-download\"\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarArchivo()\">\n </button>\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\"\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarSegundoPlano($event)\">\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"tipoReporte == 'A'\" >\n <p-table [value]=\"listaRegistro\" responsiveLayout=\"scroll\" [scrollable]=\"true\"\n [rows]=\"10\" [totalRecords]=\"listaRegistro.length\" [paginator]=\"listaRegistro.length > 10\" >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ col.header }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-entrada>\n <tr>\n <td [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ entrada[col.field] }}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <p class=\"p-3 font-medium emptymessage\">\n {{'mensajetablavacia' | translate}}\n </p>\n </ng-template>\n </p-table>\n </div>\n </div>\n\n</p-dialog>\n<app-popup-sentencia [reporte]=\"reporte\" [parametros]=\"parametros\" [mostrarPopup]=\"mostrarPopupSentencia\"\n (regresar)=\"regresarSentencia($event)\"></app-popup-sentencia>", styles: [":host ::ng-deep .p-button{width:auto}:host ::ng-deep .min-w-full2{min-height:150px;min-width:100%}h4{color:var(--color-500)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i13.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i13.DatePipe, name: "date" }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i14.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: ConfirmPopupModule }, { kind: "component", type: i15.ConfirmPopup, selector: "p-confirmPopup", inputs: ["key", "defaultFocus", "showTransitionOptions", "hideTransitionOptions", "autoZIndex", "baseZIndex", "style", "styleClass", "visible"] }, { kind: "ngmodule", type: AccordionModule }, { kind: "component", type: i16.Accordion, selector: "p-accordion", inputs: ["multiple", "style", "styleClass", "expandIcon", "collapseIcon", "activeIndex", "selectOnFocus", "headerAriaLevel"], outputs: ["onClose", "onOpen", "activeIndexChange"] }, { kind: "component", type: i16.AccordionTab, selector: "p-accordionTab", inputs: ["id", "header", "headerStyle", "tabStyle", "contentStyle", "tabStyleClass", "headerStyleClass", "contentStyleClass", "disabled", "cache", "transitionOptions", "iconPos", "selected", "headerAriaLevel"], outputs: ["selectedChange"] }, { kind: "ngmodule", type: TableModule }, { kind: "component", type: i17.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i17.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FieldsetModule }, { kind: "component", type: i18.Fieldset, selector: "p-fieldset", inputs: ["legend", "toggleable", "collapsed", "style", "styleClass", "transitionOptions"], outputs: ["collapsedChange", "onBeforeToggle", "onAfterToggle"] }, { kind: "ngmodule", type: InputNumberModule }, { kind: "component", type: i19.InputNumber, selector: "p-inputNumber", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i20.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i21.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i22.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepYearPicker", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "directive", type: i23.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: i24.RadioButton, selector: "p-radioButton", inputs: ["value", "formControlName", "name", "disabled", "label", "variant", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "labelStyleClass", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: PopupSentenciaComponent, selector: "app-popup-sentencia", inputs: ["reporte", "parametros", "mostrarPopup"], outputs: ["regresar"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i25.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i25.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i25.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: FloatLabelModule }, { kind: "component", type: i26.FloatLabel, selector: "p-floatLabel" }] });
500
+ }
501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PopupReporteComponent, decorators: [{
502
+ type: Component,
503
+ args: [{ selector: 'app-popup-reporte', imports: [CommonModule, DialogModule, ConfirmPopupModule, AccordionModule, TableModule, TranslateModule, DatePipe, FieldsetModule, InputNumberModule, InputTextModule, DropdownModule, CalendarModule, RadioButtonModule, PopupSentenciaComponent, FormsModule, FloatLabelModule], standalone: true, providers: [MessageService, ConfirmationService], template: "<p-confirmPopup></p-confirmPopup>\n<p-dialog id='popupReporte' header=\"{{'reportesgenerales' | translate}}\" [(visible)]=\"mostrar\" (onShow)=\"mostrarPopup()\"\n [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\" (onHide)=\"ocultar()\" [modal]=\"true\">\n\n <div *ngIf=\"panel == 'entrada'\">\n <!--Segundo plano-->\n <p-accordion [multiple]=\"true\">\n <p-accordionTab [selected]=\"true\" [header]=\"'segundoplano' | translate\" *ngIf=\"listaSegundoPlano.length > 0\">\n <p-table [value]=\"listaSegundoPlano\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\"\n [rows]=\"paginator.rows\" [totalRecords]=\"paginator.totalRecords\"\n [paginator]=\"paginator.totalRecords > paginator.rows\" (onRowSelect)=\"verSegundoPlano($event)\">\n <ng-template pTemplate=\"header\">\n\n <tr class=\"fondoTablaPincipal\">\n <th>{{'estado' | translate }} </th>\n <th>{{'fechainicial' | translate }} </th>\n </tr>\n <th>\n </ng-template>\n <ng-template pTemplate=\"body\" let-entrada>\n <tr [pSelectableRow]=\"entrada\">\n <td>{{entrada.nombreEstado}}</td>\n <td>{{entrada.inicia | date: 'dd/MM/yyyy h:mm a'}}</td>\n </tr>\n </ng-template>\n </p-table>\n </p-accordionTab>\n </p-accordion>\n <p-fieldset class=\"mt-0\" *ngIf=\"mostrarParametros\">\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>{{'entrada' | translate}}</span>\n </div>\n </ng-template>\n <p-table [value]=\"parametros\" >\n <ng-template pTemplate=\"body\" let-parametro>\n <tr [pSelectableRow]=\"parametro\">\n <!--<td>\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\n </td>-->\n <td *ngIf=\"parametro.unionDTO.solicitar == 'S'\">\n <p-floatLabel>\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"(parametro.unionDTO.tipoDato == 'T' || parametro.unionDTO.tipoDato == 'E') && parametro.unionDTO.tipo == 'D'\" />\n\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'U' && parametro.unionDTO.tipo == 'D'\" />\n\n\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'N' && parametro.unionDTO.tipo == 'D'\">\n </p-inputNumber>\n\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\" mode=\"decimal\" [minFractionDigits]=\"2\"\n [maxFractionDigits]=\"16\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'B' && parametro.unionDTO.tipo == 'D'\">\n </p-inputNumber>\n\n <p-dropdown [options]=\"parametro.lista\" [autoDisplayFirst]=\"false\" appendTo=\"body\"\n (onChange)=\"cambioValorLista($event, parametro)\" [(ngModel)]=\"parametro.unionDTO.llaveLista\"\n optionLabel=\"label\" optionValue=\"value\" *ngIf=\"parametro.unionDTO.tipo == 'L'\">\n </p-dropdown>\n\n <p-calendar type=\"text\" [(ngModel)]=\"parametro.unionDTO.valor\" dateFormat=\"dd/mm/yy\" appendTo=\"body\"\n *ngIf=\"parametro.unionDTO.tipoDato == 'F' && parametro.unionDTO.tipo == 'D'\"></p-calendar>\n\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\n </p-floatLabel>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </p-fieldset>\n <p-fieldset class=\"mt-0\" *ngIf=\"generaciones.length > 0\">\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>{{'generar' | translate}}</span>\n </div>\n </ng-template>\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of generaciones\">\n <div class=\"field-radiobutton\">\n <p-radioButton (onClick)=\"cambioTipoReporte($event)\" [inputId]=\"valor.value\" name=\"tipoReporte\"\n [value]=\"valor.value\" [(ngModel)]=\"tipoReporte\" />\n <label [for]=\"valor.value\" class=\"ml-2\">\n {{ valor.label }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </p-fieldset>\n\n <p-fieldset class=\"mt-0\" *ngIf=\"'A' != tipoReporte && mostrarQueDeseaHacer\" >\n <ng-template pTemplate=\"header\">\n <div>\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\n <span>\u00BFQu\u00E9 desea hacer?</span>\n </div>\n </ng-template>\n <label *ngIf=\"tipoReporte && 'F' == tipoReporte\">{{'seleccionetipoarchivodeseagenerar' | translate}}</label>\n\n <div *ngIf=\"tipoReporte && 'F' == tipoReporte\">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of mapaTipoArchivos\">\n <div class=\"field-radiobutton\">\n <p-radioButton (onClick)=\"cambioTipoArchivo($event)\" [inputId]=\"valor.codigo\" name=\"tipoArchivo\"\n [value]=\"valor.codigo\" [(ngModel)]=\"tipoArchivo\" />\n <label [for]=\"valor.codigo\" class=\"ml-2\">\n {{ valor.nombre }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"mostrarArchivosSoporte\">\n <div class=\"Detallereporte\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-12\">\n <p-floatLabel>\n <p-dropdown [options]=\"listadoArchivoSoporte\" [autoDisplayFirst]=\"false\" optionLabel=\"descripcion\" appendTo=\"body\"\n optionValue=\"llaveTabla\" [(ngModel)]=\"soporteBase\" (onChange)=\"cambioSoporteBase($event)\"></p-dropdown>\n <label>Soporte Base:</label>\n </p-floatLabel>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"tipoReporte == 'F' && tipoArchivo || tipoReporte != 'F' \">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid text-xs\">\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of operaciones\">\n <div class=\"field-radiobutton\">\n <p-radioButton [inputId]=\"valor.value\" name=\"operacion\" [value]=\"valor.value\"\n [(ngModel)]=\"operacion\" />\n <label [for]=\"valor.value\" class=\"ml-2\">\n {{ valor.label }}\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"operacion == 'E'\">\n <p-floatLabel>\n <input pInputText [(ngModel)]=\"correo\" type=\"text\" [disabled]=\"bloquearCorreo\" />\n <label>{{'correo' | translate}}</label>\n </p-floatLabel>\n </div>\n </p-fieldset>\n \n\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"m-2 mt-4 p-button p-button-outlined background-100\"\n *ngIf=\"validarControlFuncionalidad('ejecrepo:sentencia')\" label=\"Ver sentencia\" icon=\"glyphicons glyphicons-eye-open\"\n (click)=\"sentencia()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'E'\" icon=\"glyphicons glyphicons-envelope\"\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento != 'D'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporte()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento == 'D'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporteSinHilo()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"tipoReporte == 'A'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'generar' | translate}}\" (click)=\"generarTabla()\"></button>\n <!--pte proceso externo-->\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'M' || operacion == 'MP'\" icon=\"glyphicons glyphicons-envelope\"\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'P'\" icon=\"glyphicons glyphicons-folder-open\"\n label=\"{{'link_publicar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion =='S'\" icon=\"glyphicons glyphicons-check\"\n label=\"{{'link_generar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\n\n </div>\n </div>\n <div *ngIf=\"panel == 'resultado'\">\n <div *ngIf=\"operacion == 'historico'\">\n <div class=\"flex justify-content-between align-items-center mt-2 mb-2\">\n <h4 class=\"text-base mt-2 ml-2\">{{'detalle' | translate}} {{'segundoplano' | translate}}</h4>\n <button pButton pRipple icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 ml-4\"\n (click)=\"regresarSegundoPlano()\" label=\"{{'link_regresar' | translate}}\" >\n </button>\n </div>\n <div class=\" Inputgroup\">\n <div class=\"col-md-12\">\n <div class=\"p-fluid p-formgrid grid\">\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.inicia\" [disabled]=\"true\" appendTo=\"body\"\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\n <label>{{('fechainicial') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.termina\" [disabled]=\"true\" appendTo=\"body\"\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\n <label>{{('fechafinal') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-4 lg:col-4\">\n <p-floatLabel>\n <input pInputText type=\"text\" [readonly]=\"false\"\n [(ngModel)]=\"elementoBorrar.nombreEstado\" [disabled]=\"true\" />\n <label>{{('estado') | translate}}</label>\n </p-floatLabel>\n </div>\n\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"elementoBorrar.estado == 'E'\">\n <label>{{('mensaje') | translate}}</label>\n <textarea class=\"min-w-full p-inputtextarea p-inputtext p-component p-element \"\n rows=\"5\" cols=\"30\" pInputTextarea [(ngModel)]=\"elementoBorrar.archivo\"\n [disabled]=\"true\"></textarea>\n </div>\n </div>\n <div class=\"flex justify-content-end\">\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\"\n *ngIf=\"elementoBorrar.estado == 'T'\" icon=\"pi pi-download\"\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarArchivo()\">\n </button>\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\"\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarSegundoPlano($event)\">\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"tipoReporte == 'A'\" >\n <p-table [value]=\"listaRegistro\" responsiveLayout=\"scroll\" [scrollable]=\"true\"\n [rows]=\"10\" [totalRecords]=\"listaRegistro.length\" [paginator]=\"listaRegistro.length > 10\" >\n <ng-template pTemplate=\"header\">\n <tr class=\"fondoTablaPincipal\">\n <th [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ col.header }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-entrada>\n <tr>\n <td [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ entrada[col.field] }}</td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <p class=\"p-3 font-medium emptymessage\">\n {{'mensajetablavacia' | translate}}\n </p>\n </ng-template>\n </p-table>\n </div>\n </div>\n\n</p-dialog>\n<app-popup-sentencia [reporte]=\"reporte\" [parametros]=\"parametros\" [mostrarPopup]=\"mostrarPopupSentencia\"\n (regresar)=\"regresarSentencia($event)\"></app-popup-sentencia>", styles: [":host ::ng-deep .p-button{width:auto}:host ::ng-deep .min-w-full2{min-height:150px;min-width:100%}h4{color:var(--color-500)}\n"] }]
504
+ }], ctorParameters: () => [{ type: i1.GeneralService }, { type: i2.EjecucionReporteService }, { type: i3.ConfirmationService }, { type: i4.ToastService }, { type: i5.AuthService }, { type: i6.TranslateService }, { type: i7.CargarArchivosService }, { type: i8.UtilsService }, { type: i9.CargarControlFuncionalidadService }, { type: i10.EncriptadoBasicoService }, { type: i11.ReporteFuentePipe }, { type: i12.GeneralPipe }, { type: i7.CargarArchivosService }, { type: i10.EncriptadoBasicoService }], propDecorators: { mostrar: [{
505
+ type: Input
506
+ }], aplicacion: [{
507
+ type: Input
508
+ }], reporte: [{
509
+ type: Input
510
+ }], entradasPuntoProceso: [{
511
+ type: Input
512
+ }], regresar: [{
513
+ type: Output
514
+ }] } });
515
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wb3B1cHMvcG9wdXAtcmVwb3J0ZS9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BvcHVwcy9wb3B1cC1yZXBvcnRlL3BvcHVwLXJlcG9ydGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBR3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQVksY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBUW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FB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cUNBQUUsY0FBYywwZ0RBQUUsaUJBQWlCLDhVQUFFLHVCQUF1Qix5SUFBRSxXQUFXLGluQkFBRSxnQkFBZ0I7OzJGQU1yUSxxQkFBcUI7a0JBUmpDLFNBQVM7K0JBQ0UsbUJBQW1CLFdBQ3BCLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxjQUNuUSxJQUFJLGFBQ0wsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7NGdCQU1sQyxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1csUUFBUTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgR2VuZXJhbFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9nZW5lcmFsLnBpcGUnO1xuaW1wb3J0IHsgR2VuZXJhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2dlbmVyYWwuc2VydmljZSc7XG5pbXBvcnQgeyBHZW5lcmFsTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9HZW5lcmFsTW9kZWwnO1xuaW1wb3J0IHsgQ2FyZ2FyQXJjaGl2b3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2lvcy9jYXJnYXItYXJjaGl2b3Muc2VydmljZSc7XG5pbXBvcnQgeyBFbmNyaXB0YWRvQmFzaWNvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZW5jcmlwdGFkby1iYXNpY28uc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBSZXBvcnRlRnVlbnRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3JlcG9ydGUtZnVlbnRlLnBpcGUnO1xuaW1wb3J0IHsgRWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lamVjdWNpb25yZXBvcnRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0ZUZ1ZW50ZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvUmVwb3J0ZUZ1ZW50ZU1vZGVsJztcbmltcG9ydCB7IFJlcG9ydGVFbnRyYWRhTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9SZXBvcnRlRW50cmFkYU1vZGVsJztcbmltcG9ydCB7IFJlcG9ydGVTb3BvcnRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9SZXBvcnRlU29wb3J0ZSc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbiB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxvcy90YWJsZS1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy91dGlscy5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNpb3MvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IENhcmdhckNvbnRyb2xGdW5jaW9uYWxpZGFkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL2Nhcmdhci1jb250cm9sLWZ1bmNpb25hbGlkYWQuc2VydmljZSc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XG5pbXBvcnQgeyBDb25maXJtUG9wdXBNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NvbmZpcm1wb3B1cCc7XG5pbXBvcnQgeyBBY2NvcmRpb25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL2FjY29yZGlvbic7XG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGaWVsZHNldE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZmllbGRzZXQnO1xuaW1wb3J0IHsgSW5wdXROdW1iZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0bnVtYmVyJztcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9kcm9wZG93bic7XG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xuaW1wb3J0IHsgUmFkaW9CdXR0b25Nb2R1bGUgfSBmcm9tICdwcmltZW5nL3JhZGlvYnV0dG9uJztcbmltcG9ydCB7IFBvcHVwU2VudGVuY2lhQ29tcG9uZW50IH0gZnJvbSAnLi4vcG9wdXAtc2VudGVuY2lhL3BvcHVwLXNlbnRlbmNpYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGbG9hdExhYmVsTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9mbG9hdGxhYmVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXBvcHVwLXJlcG9ydGUnLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEaWFsb2dNb2R1bGUsIENvbmZpcm1Qb3B1cE1vZHVsZSwgQWNjb3JkaW9uTW9kdWxlLCBUYWJsZU1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBEYXRlUGlwZSwgRmllbGRzZXRNb2R1bGUsIElucHV0TnVtYmVyTW9kdWxlLCBJbnB1dFRleHRNb2R1bGUsIERyb3Bkb3duTW9kdWxlLCBDYWxlbmRhck1vZHVsZSwgUmFkaW9CdXR0b25Nb2R1bGUsIFBvcHVwU2VudGVuY2lhQ29tcG9uZW50LCBGb3Jtc01vZHVsZSwgRmxvYXRMYWJlbE1vZHVsZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3BvcHVwLXJlcG9ydGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUG9wdXBSZXBvcnRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBwdWJsaWMgbW9zdHJhciA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgYXBsaWNhY2lvbjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcmVwb3J0ZTogUmVwb3J0ZUZ1ZW50ZU1vZGVsID0gbmV3IFJlcG9ydGVGdWVudGVNb2RlbDtcbiAgQElucHV0KCkgcHVibGljIGVudHJhZGFzUHVudG9Qcm9jZXNvOiBhbnlbXT1bXTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZWdyZXNhcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHBhbmVsOiBzdHJpbmcgPSAnZW50cmFkYSc7XG4gIHB1YmxpYyBvcGVyYWNpb246IHN0cmluZztcbiAgcHVibGljIGxpc3RhRW50cmFkYTogUmVwb3J0ZUVudHJhZGFNb2RlbFtdID0gW107XG4gIHB1YmxpYyBsaXN0YVNlZ3VuZG9QbGFubzogYW55W10gPSBbXTtcbiAgcHVibGljIHBhcmFtZXRyb3M6IGFueVtdID0gW107XG4gIHB1YmxpYyBlbGVtZW50b0JvcnJhcjogYW55ID0ge307XG4gIHB1YmxpYyBnZW5lcmFjaW9uZXM6IGFueVtdID0gW107XG4gIHB1YmxpYyBvcGVyYWNpb25lczogYW55W10gPSBbXTtcbiAgcHVibGljIG1vc3RyYXJPdHJhU2VsZWNjaW9uOiBib29sZWFuO1xuXHRwdWJsaWMgbW9zdHJhckFyY2hpdm9zU29wb3J0ZTogYm9vbGVhbjtcblx0cHVibGljIG1vc3RyYXJDb25zdWx0YUNhc29FcnJvcjogYm9vbGVhbjtcbiAgcHVibGljIGNvcnJlbzogc3RyaW5nO1xuICBwdWJsaWMgdGlwb1JlcG9ydGU6IHN0cmluZztcbiAgcHVibGljIHNvcG9ydGVCYXNlOiBzdHJpbmc7XG4gIHB1YmxpYyB0aXBvQXJjaGl2bzogc3RyaW5nO1xuICBwdWJsaWMgYmxvcXVlYXJDb3JyZW86IGJvb2xlYW47XG4gIHB1YmxpYyBtYXBhVGlwb0FyY2hpdm9zO1xuICBwdWJsaWMgbGlzdGFkb0FyY2hpdm9Tb3BvcnRlOiBSZXBvcnRlU29wb3J0ZU1vZGVsW10gPSBbXTtcbiAgcHVibGljIG1vc3RyYXJQb3B1cFNlbnRlbmNpYTogYm9vbGVhbjtcblxuICBwdWJsaWMgaXRlbXM6IE1lbnVJdGVtW107XG4gIHB1YmxpYyB2aXN0YVZpc3VhbGl6YXI6IHN0cmluZztcbiAgcGFnaW5hdG9yPXtyb3dzOjIsdG90YWxSZWNvcmRzOjB9XG4gIHB1YmxpYyBtb3N0cmFyUGFyYW1ldHJvczogYm9vbGVhbjtcblx0cHVibGljIG1vc3RyYXJRdWVEZXNlYUhhY2VyOiBib29sZWFuO1xuXG4gIHB1YmxpYyBjb2x1bW5hczogVGFibGVDb2x1bW5bXSA9IFtdO1xuICBwdWJsaWMgbGlzdGFSZWdpc3RybzogYW55W10gPSBbXTtcblxuICBwdWJsaWMgZXhpc3RlSmFzcGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBnZW5lcmFsU2VydmljZTogR2VuZXJhbFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2U6IEVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgbm90aWZpY2FjaW9uU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNhcmdhckFyY2hpdm9TZXJ2aWNlOiBDYXJnYXJBcmNoaXZvc1NlcnZpY2UsXG4gICAgICAgICAgICAgIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjb250cm9sRnVuY2lvbmFsaWRhZDogQ2FyZ2FyQ29udHJvbEZ1bmNpb25hbGlkYWRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGVuY3JpcHRhZG9CYXNpY286IEVuY3JpcHRhZG9CYXNpY29TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlcG9ydGVGdWVudGVQaXBlOiBSZXBvcnRlRnVlbnRlUGlwZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBnZW5lcmFsUGlwZTogR2VuZXJhbFBpcGUsXG4gICAgICAgICAgICAgIHByaXZhdGUgY2FyZ2FyQXJjaGl2bzogQ2FyZ2FyQXJjaGl2b3NTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGVuY3JpcHRhZG9yQXJjaGl2bzogRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UsKSB7IH0gICAgICAgICBcbiAgXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubWFwYVRpcG9BcmNoaXZvcyA9IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuTUFQQV9USVBPX0FSQ0hJVk9TOyAgXG4gICAgdGhpcy5hcGxpY2FjaW9uID0gdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgnYXBsaWNhY2lvbicpXG4gIH1cblxuICBhc3luYyBtb3N0cmFyUG9wdXAoKXtcbiAgICB0aGlzLnBhbmVsID0gJ2VudHJhZGEnO1xuICAgIHRoaXMubW9zdHJhclF1ZURlc2VhSGFjZXIgPSBmYWxzZTtcbiAgICB0aGlzLnRpcG9SZXBvcnRlID0gbnVsbDtcbiAgICB0aGlzLm1vc3RyYXJDb25zdWx0YUNhc29FcnJvciA9IHRoaXMudmFsaWRhckNvbnRyb2xGdW5jaW9uYWxpZGFkKCdyZXBvcnRlOnZlcnNlbnRlbmNpYWVycm9yJyk7XG4gICAgdGhpcy5vcGVyYWNpb24gPSBudWxsO1xuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIgPSB7fVxuICAgIHRoaXMubGlzdGFTZWd1bmRvUGxhbm8gPSBbXVxuICAgIHRoaXMubGlzdGFSZWdpc3RybyA9IFtdO1xuICAgIHRoaXMuY29sdW1uYXMgPSBbXTtcbiAgICB0aGlzLmV4aXN0ZUphc3BlciA9IGZhbHNlO1xuICAgIGlmICh0aGlzLnJlcG9ydGUubGxhdmUpIHtcbiAgICAgIHZhciByZXN1bHRhZG8gPSBhd2FpdCB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmdldERhdG9zRWplY3VjaW9uUmVwb3J0ZSh7bGxhdmU6IHRoaXMucmVwb3J0ZS5sbGF2ZX0pLnRvUHJvbWlzZSgpO1xuICAgICAgdGhpcy5yZXBvcnRlID0gcmVzdWx0YWRvLnJlcG9ydGU7XG4gICAgICBkZWxldGUgdGhpcy5yZXBvcnRlWydhbGlhcyddXG4gICAgICB0aGlzLmNhcmdhckxpc3RhRW50cmFkYSgpO1xuICAgICAgdGhpcy50cmFlclNlZ3VuZG9QbGFubygpO1xuICAgICAgdGhpcy5jYXJnYXJDb3JyZW8oKTtcbiAgICAgIGF3YWl0IHRoaXMudmFsaWRhckV4aXN0ZUphc3BlcigpO1xuICAgICAgYXdhaXQgdGhpcy5jYXJnYXJHZW5lcmFjaW9uZXMoKTtcbiAgICAgIHRoaXMuY2FyZ2FyT3BlcmFjaW9uZXMoKTtcbiAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xuICAgIH1cbiAgICB0aGlzLnV0aWxzU2VydmljZS5yZXNpemVXaW5kb3dJRnJhbWUoKTtcbiAgfVxuXG4gIGNhcmdhck1lbnUoKXtcbiAgICB0aGlzLml0ZW1zID0gW1xuICAgICAgXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZWplY3VjaW9uJyksXG4gICAgICAgIGljb246ICdnbHlwaGljb25zIGdseXBoaWNvbnMtcGx1cy1zaWduJyxcbiAgICAgICAgY29tbWFuZDogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy52aXN0YVZpc3VhbGl6YXIgPSAnZW50cmFkYSc7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3NlZ3VuZG9wbGFubycpLFxuICAgICAgICBpY29uOiAnZ2x5cGhpY29ucyBnbHlwaGljb25zLWZpbGUtbWludXMnLFxuICAgICAgICBjb21tYW5kOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLnZpc3RhVmlzdWFsaXphciA9ICdzZWd1bmRvcGxhbm8nO1xuICAgICAgICB9LFxuICAgICAgICB2aXNpYmxlOiB0aGlzLmxpc3RhU2VndW5kb1BsYW5vLmxlbmd0aCA+IDAsXG4gICAgICB9XG4gICAgXVxuICB9XG5cbiAgYXN5bmMgY2FyZ2FyR2VuZXJhY2lvbmVzKCl7XG4gICAgdGhpcy5nZW5lcmFjaW9uZXMgPSBbXTtcbiAgICBpZiAoIHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLnRpdHVsb1BhcmFtZXRybykgJiYgdGhpcy5leGlzdGVKYXNwZXIpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9KQVNQRVJESU5BTUlDTywgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fSkFTUEVSRElOQU1JQ099KVxuICAgIH1cbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuamFzcGVyRmlqbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUubW9kb0Zpam8pKXtcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fSkFTUEVSRklKTywgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fSkFTUEVSRklKT30pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5hcmNoaXZvVG9kbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuaG9qYUV4Y2VsKSl7XG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX0VYQ0VMLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9FWENFTH0pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5hcmNoaXZvSW5kaXZpZHVhbCkgfHwgdGhpcy5yZXBvcnRlLnVuaWNvQXJjaGl2byA9PSAnTicpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9QTEFOVElMTEEsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX1BMQU5USUxMQX0pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5zZXBhcmFkb3IpKXtcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fQVJDSElWT1BMQU5PLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9BUkNISVZPUExBTk99KVxuICAgIH1cbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUubm9tYnJlVGFibGEpKXtcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fVEFCTEEsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX1RBQkxBfSlcbiAgICB9XG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLnRhZ0VuY2FiZXphZG8pICYmIHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmVzdHJ1Y3R1cmFSZWdpc3Rybykpe1xuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9YTUwsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX1hNTH0pXG4gICAgfVxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5hcmNoaXZvRXhjZWxDb2x1bW5hcmlvKSAmJiB0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5ob2phRXhjZWxDb2x1bW5hcmlvKSl7XG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX0NPTFVNTkFSSU8sIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX0NPTFVNTkFSSU99KVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXJFeGlzdGVKYXNwZXIoKXtcbiAgICB0cnkge1xuICAgICAgdmFyIGRhdGEgPSBhd2FpdCB0aGlzLmNhcmdhckFyY2hpdm8uZGVzY2FyZ2FyQXJjaGl2byh0aGlzLmVuY3JpcHRhZG9yQXJjaGl2by5lbmNyaXB0YXIoJ3JlcG9ydGVzLycgKyB0aGlzLnJlcG9ydGUubGxhdmUgKyAnLmpyeG1sJyksICdydXRhX3BsYW50aWxsYXMnLCB0aGlzLmFwbGljYWNpb24pLnRvUHJvbWlzZSgpO1xuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgdGhpcy5leGlzdGVKYXNwZXIgPSB0cnVlO1xuICAgICAgfSAgIFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmV4aXN0ZUphc3BlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNhcmdhck9wZXJhY2lvbmVzKCl7XG4gICAgdGhpcy5ibG9xdWVhckNvcnJlbyA9IHRydWU7XG4gICAgdGhpcy5vcGVyYWNpb25lcyA9IFtdO1xuICAgIGlmICh0aGlzLnRpcG9SZXBvcnRlKXtcbiAgICAgIGlmICh0aGlzLnRpcG9SZXBvcnRlICE9IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9UQUJMQSkge1xuICAgICAgICB0aGlzLm9wZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk9QRVJBQ0lPTl9ERVNDQVJHQVIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19PUEVSQUNJT05fREVTQ0FSR0FSfSk7XG4gICAgICBcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhckNvbnRyb2xGdW5jaW9uYWxpZGFkKCdyZXBvcnRlOmVudmlvY29ycmVvJykpe1xuICAgICAgICAgIHRoaXMuYmxvcXVlYXJDb3JyZW8gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk9QRVJBQ0lPTl9FTlZJQVJDT1JSRU8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9FTlZJQVJDT1JSRU99KTtcbiAgICAgICAgaWYgKHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuTU9NRU5UT1NfU0VHVU5ET19QTEFOTyA9PSB0aGlzLnJlcG9ydGUubW9tZW50bykge1xuICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX1NFR1VORE9QTEFOTyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19PUEVSQUNJT05fU0VHVU5ET1BMQU5PfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0aGlzLnRpcG9SZXBvcnRlID09IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9KQVNQRVJGSUpPICYmIHRoaXMucmVwb3J0ZS5tb2RvRmlqbyA9PSAnUCcpXG4gICAgICAgICAgfHwgdGhpcy50aXBvUmVwb3J0ZSA9PSB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fUExBTlRJTExBICYmIHRoaXMucmVwb3J0ZS5kZXNjYXJnYXJGdWVudGUgIT0gJ1MnKXtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAodGhpcy5yZXBvcnRlLmFyY2hpdm9IdG1sICYmIHRoaXMucmVwb3J0ZS5jYW1wb0VtYWlsKXtcbiAgICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0VOVklPTUFTSVZPLFxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9FTlZJT01BU0lWT30pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5yZXBvcnRlLnB1YmxpY2FjaW9uICYmIHRoaXMucmVwb3J0ZS5jYW1wb1B1YmxpY2Epe1xuICAgICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fUFVCTElDQVIsXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX1BVQkxJQ0FSfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLnJlcG9ydGUuYXJjaGl2b0h0bWwgJiYgdGhpcy5yZXBvcnRlLmNhbXBvRW1haWwgJiYgdGhpcy5yZXBvcnRlLnB1YmxpY2FjaW9uICYmIHRoaXMucmVwb3J0ZS5jYW1wb1B1YmxpY2EgKXtcbiAgICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0NPUlJFT1BVQkxJQ0FSLFxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9DT1JSRU9QVUJMSUNBUn0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL3B0ZSBwcm9jZXNvIGV4dGVybm9cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYW1iaW9WYWxvckxpc3RhKGV2ZW50LCBwYXJhbWV0cm8pe1xuICAgIGlmIChldmVudC52YWx1ZSl7XG4gICAgICBsZXQgbGlzdGEgPSBldmVudC52YWx1ZS5zcGxpdCgnOicpXG4gICAgICBpZiAocGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdOJyl7XG4gICAgICAgIHBhcmFtZXRyby51bmlvbkRUTy52YWxvciA9IHBhcnNlSW50KGxpc3RhWzBdKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yID0gbGlzdGFbMF1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7XG4gIH1cbiAgXG4gIGNhbWJpb1NvcG9ydGVCYXNlKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc29wb3J0ZUJhc2UgPT0gbnVsbCkge1xuICAgICAgdGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gXG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvck9iamVjdChuZXcgR2VuZXJhbE1vZGVsKCdSZXBvcnRlU29wb3J0ZURUTycsIG51bGwsIGZhbHNlLCB7bGxhdmVUYWJsYTogdGhpcy5zb3BvcnRlQmFzZX0pKS5zdWJzY3JpYmUoYXJjaGl2b0Jhc2UgPT4ge1xuICAgICAgaWYgKGFyY2hpdm9CYXNlID09IG51bGwpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zb3BvcnRlQmFzZSA9IGFyY2hpdm9CYXNlLmxsYXZlVGFibGE7XG5cdFx0XHR0aGlzLnJlcG9ydGUuYXJjaGl2b0luZGl2aWR1YWwgPSBhcmNoaXZvQmFzZS5hcmNoaXZvSW5kaXZpZHVhbDtcblx0XHRcdHRoaXMuY2FyZ2FyT3BlcmFjaW9uZXMoKTtcbiAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xuICAgIH0pO1xuICAgIFxuICB9XG5cbiAgY2FyZ2FyQ29ycmVvKCl7XG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvck9iamVjdChuZXcgR2VuZXJhbE1vZGVsKCdVc3VhcmlvRFRPJywgbnVsbCwgdHJ1ZSwge2xvZ2luOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCd1c3VhcmlvJyl9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5jb3JyZW8gPSBkYXRhLmVtYWlsO1xuICAgIH0pXG4gIH1cblxuICBjYXJnYXJMaXN0YUVudHJhZGEoKXtcbiAgICB0aGlzLm1vc3RyYXJQYXJhbWV0cm9zID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuZW50cmFkYXNQdW50b1Byb2Nlc28ubGVuZ3RoID4gMCl7XG4gICAgICB0aGlzLnBhcmFtZXRyb3MgPSB0aGlzLmVudHJhZGFzUHVudG9Qcm9jZXNvOyAgXG4gICAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQudW5pb25EVE8uc29saWNpdGFyID09ICdTJyl7XG4gICAgICAgICAgdGhpcy5tb3N0cmFyUGFyYW1ldHJvcyA9ICB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50LnVuaW9uRFRPLnRpcG9EYXRvID09ICdGJyAmJiBlbGVtZW50LnVuaW9uRFRPLnZhbG9yICE9IG51bGwpe1xuICAgICAgICAgIGVsZW1lbnQudW5pb25EVE8udmFsb3IgPSBuZXcgRGF0ZShlbGVtZW50LnVuaW9uRFRPLnZhbG9yKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgdGhpcy51dGlsc1NlcnZpY2UucmVzaXplV2luZG93SUZyYW1lKCk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5vYnRlbmVyTGlzdGFFbnRyYWRhRWplY3VjaW9uKHRoaXMucmVwb3J0ZSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICB0aGlzLnBhcmFtZXRyb3MgPSBkYXRhO1xuICAgICAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICBpZiAoZWxlbWVudC51bmlvbkRUTy5zb2xpY2l0YXIgPT0gJ1MnKXtcbiAgICAgICAgICAgIHRoaXMubW9zdHJhclBhcmFtZXRyb3MgPSAgdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGVsZW1lbnQudW5pb25EVE8udGlwb0RhdG8gPT0gJ0YnICYmIGVsZW1lbnQudW5pb25EVE8udmFsb3IgIT0gbnVsbCl7XG4gICAgICAgICAgICBlbGVtZW50LnVuaW9uRFRPLnZhbG9yID0gbmV3IERhdGUoZWxlbWVudC51bmlvbkRUTy52YWxvcilcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMudXRpbHNTZXJ2aWNlLnJlc2l6ZVdpbmRvd0lGcmFtZSgpO1xuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB0cmFlclNlZ3VuZG9QbGFubygpe1xuICAgIGxldCB1c3VhcmlvID0gdGhpcy5hdXRoU2VydmljZS5nZXRUb2tlbktleSgndXN1YXJpbycpXG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvckxpc3QobmV3IEdlbmVyYWxNb2RlbCgnRWplY3VjaW9uUmVwb3J0ZURUTycsIG51bGwsIGZhbHNlLCB7XG4gICAgICBhZGljaW9uYWRvOiB1c3VhcmlvLCBcbiAgICAgIHJlcG9ydGVGdWVudGU6IHRoaXMucmVwb3J0ZS5sbGF2ZX0pKS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgIHRoaXMubGlzdGFTZWd1bmRvUGxhbm8gPSBkYXRhO1xuICAgICAgICB0aGlzLnBhZ2luYXRvci50b3RhbFJlY29yZHMgPSB0aGlzLmxpc3RhU2VndW5kb1BsYW5vLmxlbmd0aDtcbiAgICAgIH0pXG4gIH1cbiAgXG4gIHZlclNlZ3VuZG9QbGFubyhldmVudCl7XG4gICAgdGhpcy5lbGVtZW50b0JvcnJhciA9IGV2ZW50LmRhdGE7XG4gICAgdGhpcy5lbGVtZW50b0JvcnJhci5mZWNoYUFkaWNpb25hZG8gPSB0aGlzLmVsZW1lbnRvQm9ycmFyLmZlY2hhQWRpY2lvbmFkbyA/IG5ldyBEYXRlKHRoaXMuZWxlbWVudG9Cb3JyYXIuZmVjaGFBZGljaW9uYWRvKSA6IG51bGxcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyLmluaWNpYSA9IHRoaXMuZWxlbWVudG9Cb3JyYXIuaW5pY2lhID8gbmV3IERhdGUodGhpcy5lbGVtZW50b0JvcnJhci5pbmljaWEpIDogbnVsbFxuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIudGVybWluYSA9IHRoaXMuZWxlbWVudG9Cb3JyYXIudGVybWluYSA/IG5ldyBEYXRlKHRoaXMuZWxlbWVudG9Cb3JyYXIudGVybWluYSkgOiBudWxsXG4gICAgdGhpcy5vcGVyYWNpb24gPSAnaGlzdG9yaWNvJ1xuICAgIHRoaXMucGFuZWwgPSAncmVzdWx0YWRvJ1xuICB9XG5cbiAgZWxpbWluYXJTZWd1bmRvUGxhbm8oZXZlbnQpe1xuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcbiAgICAgIHRhcmdldDogZXZlbnQudGFyZ2V0LFxuICAgICAgbWVzc2FnZTogIHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUl9DT05GSVJNQVIsXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy5nZW5lcmFsUGlwZS5TSV9ERVNDLFxuICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnY29uZmlybWFyJyksXG4gICAgICBhY2NlcHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5lbGltaW5hckVqZWN1Y2lvblJlcG9ydGUodGhpcy5lbGVtZW50b0JvcnJhcikuc3Vic2NyaWJlKGRhdGEgPT57XG4gICAgICAgICAgdGhpcy5ub3RpZmljYWNpb25TZXJ2aWNlLnNob3dJbmZvKHRoaXMuZ2VuZXJhbFBpcGUuTUVOU0FKRV9FTElNSU5BUilcbiAgICAgICAgICB0aGlzLnJlZ3Jlc2FyU2VndW5kb1BsYW5vKCk7XG4gICAgICAgICAgdGhpcy50cmFlclNlZ3VuZG9QbGFubygpO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBkZXNjYXJnYXJBcmNoaXZvKCl7XG4gICAgdGhpcy5jYXJnYXJBcmNoaXZvU2VydmljZS5kZXNjYXJnYXJBcmNoaXZvKHRoaXMuZW5jcmlwdGFkb0Jhc2ljby5lbmNyaXB0YXIodGhpcy5lbGVtZW50b0JvcnJhci5hcmNoaXZvKSkuc3Vic2NyaWJlKGJsb2IgPT4ge1xuICAgICAgXG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXG4gICAgICBjb25zdCBvYmplY3RVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpXG4gICAgICBhLmhyZWYgPSBvYmplY3RVcmxcbiAgICAgIGxldCBwYXJ0ZXMgPSB0aGlzLmVsZW1lbnRvQm9ycmFyLmFyY2hpdm8uc3BsaXQoXCIuXCIpO1xuICAgICAgbGV0IGV4dGVuc2lvbiA9IHBhcnRlc1twYXJ0ZXMubGVuZ3RoIC0gMV07XG4gICAgICBhLmRvd25sb2FkID0gdGhpcy51dGlsc1NlcnZpY2UuZ2VuZXJhckxsYXZlKCkgKyAnLicgKyBleHRlbnNpb247XG4gICAgICBhLmNsaWNrKCk7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVybCk7XG4gICAgfSk7XG4gIH1cblxuICBjYW1iaW9UaXBvUmVwb3J0ZShldmVudCl7XG4gICAgdGhpcy5tb3N0cmFyUXVlRGVzZWFIYWNlciA9IHRydWU7XG4gICAgaWYgKHRoaXMudGlwb1JlcG9ydGUgPT0gdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX1BMQU5USUxMQSAmJiB0aGlzLnJlcG9ydGUudW5pY29BcmNoaXZvID09ICdOJyApe1xuICAgICAgdGhpcy5tb3N0cmFyQXJjaGl2b3NTb3BvcnRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JMaXN0KG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVTb3BvcnRlRFRPJywgbnVsbCwgZmFsc2UsIHtcbiAgICAgICAgcmVwb3J0ZUZ1ZW50ZTogdGhpcy5yZXBvcnRlLmxsYXZlLFxuICAgICAgICB0aXBvOidTJ1xuICAgICAgfSkpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy5saXN0YWRvQXJjaGl2b1NvcG9ydGUgPSBkYXRhO1xuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1vc3RyYXJBcmNoaXZvc1NvcG9ydGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5saXN0YWRvQXJjaGl2b1NvcG9ydGUgPSBbXTtcbiAgICAgICAgdGhpcy50aXBvQXJjaGl2byA9IG51bGw7XG4gICAgICAgIHRoaXMub3BlcmFjaW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xuICAgICAgICAvL3RoaXMuZGVzY2FyZ2FyQXJjaGl2byA9IG51bGw7XG4gICAgfSBcbiAgfVxuXG4gIGNhbWJpb1RpcG9BcmNoaXZvKGV2ZW50KXtcbiAgICB0aGlzLmNhcmdhck9wZXJhY2lvbmVzKCk7XG4gIH1cblxuICByZWdyZXNhclNlZ3VuZG9QbGFubygpe1xuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIgPSB7fVxuICAgIHRoaXMucGFuZWwgPSAnZW50cmFkYSdcbiAgICB0aGlzLm9wZXJhY2lvbiA9IG51bGw7XG4gIH1cblxuICBvY3VsdGFyKCl7XG4gICAgdGhpcy50aXBvUmVwb3J0ZSA9IG51bGw7XG4gICAgdGhpcy5tb3N0cmFyID0gZmFsc2U7XG4gICAgdGhpcy5yZWdyZXNhci5lbWl0KGZhbHNlKTtcbiAgfVxuXG4gIHZhbGlkYXJDb250cm9sRnVuY2lvbmFsaWRhZCh2YWxvcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbEZ1bmNpb25hbGlkYWQuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQodmFsb3IpO1xuICB9XG5cbiAgc2VudGVuY2lhKCl7XG4gICAgdGhpcy5tb3N0cmFyUG9wdXBTZW50ZW5jaWEgPSB0cnVlXG4gIH1cblxuICByZWdyZXNhclNlbnRlbmNpYShldmVudCl7XG4gICAgdGhpcy5tb3N0cmFyUG9wdXBTZW50ZW5jaWEgPSBmYWxzZTtcbiAgfVxuXG4gIGVudmlhclNlZ3VuZG9QbGFubygpe1xuICAgIGxldCBsaXN0YUVudHJhZGEgPSBbXVxuICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgbGlzdGFFbnRyYWRhLnB1c2goZWxlbWVudC51bmlvbkRUTylcbiAgICB9KVxuICAgIHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZW52aWFyU2VndW5kb1BsYW5vKHtcbiAgICAgIHJlcG9ydGU6IHRoaXMucmVwb3J0ZSxcbiAgICAgIHBhcmFtZXRyb3M6IGxpc3RhRW50cmFkYSxcbiAgICAgIHRpcG9SZXBvcnRlOiB0aGlzLnRpcG9SZXBvcnRlLFxuICAgICAgb3BlcmFjaW9uOiB0aGlzLm9wZXJhY2lvbixcbiAgICAgIGNvcnJlbzogdGhpcy5jb3JyZW8sXG4gICAgfSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5ub3RpZmljYWNpb25TZXJ2aWNlLnNob3dJbmZvKGRhdGEubWVuc2FqZSlcbiAgICB9KVxuICB9XG5cbiAgZGVzY2FyZ2FyUmVwb3J0ZSgpe1xuXG4gICAgaWYoJ0YnID09IHRoaXMudGlwb1JlcG9ydGUpe1xuICAgICAgdGhpcy5yZXBvcnRlLnRpcG9BcmNoaXZvID0gdGhpcy50aXBvQXJjaGl2bztcbiAgICB9XG5cbiAgICBsZXQgbGlzdGFFbnRyYWRhID0gW11cbiAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGxpc3RhRW50cmFkYS5wdXNoKGVsZW1lbnQudW5pb25EVE8pXG4gICAgfSlcbiAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmRlc2NhcmdhclJlcG9ydGUoe1xuICAgICAgcmVwb3J0ZTogdGhpcy5yZXBvcnRlLFxuICAgICAgcGFyYW1ldHJvczogbGlzdGFFbnRyYWRhLFxuICAgICAgdGlwb1JlcG9ydGU6IHRoaXMudGlwb1JlcG9ydGUsXG4gICAgICBvcGVyYWNpb246IHRoaXMub3BlcmFjaW9uLFxuICAgICAgY29ycmVvOiB0aGlzLmNvcnJlbyxcbiAgICAgIGVuZHBvaW50R2VuZXJhZG9yUmVwb3J0ZXM6ICcnXG4gICAgfSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IGRhdGEgPT57XG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpXG4gICAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyhkYXRhLm1lbnNhamUpXG4gICAgICAgIGlmICghZGF0YS5hcmNoaXZvKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRlY29kZWREYXRhID0gYXRvYihkYXRhLmFyY2hpdm8pO1xuICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShkZWNvZGVkRGF0YS5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlY29kZWREYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBkZWNvZGVkRGF0YS5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcblxuICAgICAgICAvLyBDcmVhIHVuIG9iamV0byBCbG9iIGNvbiBsb3MgYnl0ZXMgZGVjb2RpZmljYWRvcyB5IGVsIHRpcG8gTUlNRSBkZWwgYXJjaGl2b1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogZGF0YS5taW1lIH0pO1xuXG4gICAgICAgIC8vIENyZWEgdW5hIFVSTCBkZWwgb2JqZXRvIEJsb2JcbiAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgICAgICAvLyBDcmVhIHVuIGVubGFjZSBkZSBkZXNjYXJnYSB5IGhheiBjbGljIGVuIMOpbCBwYXJhIGluaWNpYXIgbGEgZGVzY2FyZ2FcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gZGF0YS5ub21icmVBcmNoaXZvICArIGRhdGEuZXh0ZW5zaW9uO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLmNsaWNrKCk7XG5cbiAgICAgICAgLy8gTGltcGlhIGxhIFVSTCBjcmVhZGFcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgXG4gIGRlc2NhcmdhclJlcG9ydGVTaW5IaWxvKCl7XG4gICAgbGV0IGxpc3RhRW50cmFkYSA9IFtdXG4gICAgdGhpcy5wYXJhbWV0cm9zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBsaXN0YUVudHJhZGEucHVzaChlbGVtZW50LnVuaW9uRFRPKVxuICAgIH0pXG4gICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5kZXNjYXJnYXJSZXBvcnRlKHtcbiAgICAgIG5leHQ6IGRhdGEgPT57XG4gICAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyhkYXRhLm1lbnNhamUpXG4gICAgICAgIGNvbnN0IGRlY29kZWREYXRhID0gYXRvYihkYXRhLmFyY2hpdm8pO1xuICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShkZWNvZGVkRGF0YS5sZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlY29kZWREYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBkZWNvZGVkRGF0YS5jaGFyQ29kZUF0KGkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcblxuICAgICAgICAvLyBDcmVhIHVuIG9iamV0byBCbG9iIGNvbiBsb3MgYnl0ZXMgZGVjb2RpZmljYWRvcyB5IGVsIHRpcG8gTUlNRSBkZWwgYXJjaGl2b1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogZGF0YS5taW1lIH0pO1xuXG4gICAgICAgIC8vIENyZWEgdW5hIFVSTCBkZWwgb2JqZXRvIEJsb2JcbiAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAgICAgICAvLyBDcmVhIHVuIGVubGFjZSBkZSBkZXNjYXJnYSB5IGhheiBjbGljIGVuIMOpbCBwYXJhIGluaWNpYXIgbGEgZGVzY2FyZ2FcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gZGF0YS5ub21icmVBcmNoaXZvICsgJy4nICsgZGF0YS5leHRlbnNpb247XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuY2xpY2soKTtcblxuICAgICAgICAvLyBMaW1waWEgbGEgVVJMIGNyZWFkYVxuICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93RXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyLmVycm9yLm1lbnNhamVFdGlxdWV0YSkpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGdlbmVyYXJUYWJsYSgpe1xuICAgIHRoaXMucGFuZWwgPSAncmVzdWx0YWRvJ1xuICAgIGxldCBsaXN0YUVudHJhZGEgPSBbXVxuICAgIHRoaXMuY29sdW1uYXMgPSBbXTtcbiAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGxpc3RhRW50cmFkYS5wdXNoKGVsZW1lbnQudW5pb25EVE8pXG4gICAgfSlcbiAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmdlbmVyYXJUYWJsYSh7cmVwb3J0ZTogdGhpcy5yZXBvcnRlLCBwYXJhbWV0cm9zOiBsaXN0YUVudHJhZGF9KS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB2YXIgY29sdW1uYTogVGFibGVDb2x1bW47XG4gICAgICBkYXRhLmNvbHVtbmFzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgIGNvbHVtbmEgPSB7XG4gICAgICAgICAgZmllbGQ6IGVsZW1lbnQubm9tYnJlLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgaGVhZGVyOiBlbGVtZW50Lm5vbWJyZSxcbiAgICAgICAgICB3aWR0aDogMzAwLFxuICAgICAgICAgIGNhbk9yZGVyOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbHVtbmFzLnB1c2goY29sdW1uYSlcbiAgICAgIH0pO1xuICAgICAgdGhpcy5saXN0YVJlZ2lzdHJvID0gZGF0YS5saXN0YVJlZ2lzdHJvO1xuICAgIH0pXG4gIH1cbn1cbiIsIjxwLWNvbmZpcm1Qb3B1cD48L3AtY29uZmlybVBvcHVwPlxuPHAtZGlhbG9nIGlkPSdwb3B1cFJlcG9ydGUnIGhlYWRlcj1cInt7J3JlcG9ydGVzZ2VuZXJhbGVzJyB8IHRyYW5zbGF0ZX19XCIgWyh2aXNpYmxlKV09XCJtb3N0cmFyXCIgKG9uU2hvdyk9XCJtb3N0cmFyUG9wdXAoKVwiXG4gICAgW2JyZWFrcG9pbnRzXT1cInsnOTYwcHgnOiAnNzV2dycsICc2NDBweCc6ICcxMDB2dyd9XCIgW3N0eWxlXT1cInt3aWR0aDogJzUwdncnfVwiIChvbkhpZGUpPVwib2N1bHRhcigpXCIgW21vZGFsXT1cInRydWVcIj5cblxuICAgIDxkaXYgKm5nSWY9XCJwYW5lbCA9PSAnZW50cmFkYSdcIj5cbiAgICAgICAgPCEtLVNlZ3VuZG8gcGxhbm8tLT5cbiAgICAgICAgPHAtYWNjb3JkaW9uIFttdWx0aXBsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8cC1hY2NvcmRpb25UYWIgW3NlbGVjdGVkXT1cInRydWVcIiBbaGVhZGVyXT1cIidzZWd1bmRvcGxhbm8nIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJsaXN0YVNlZ3VuZG9QbGFuby5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cImxpc3RhU2VndW5kb1BsYW5vXCIgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiIFtzY3JvbGxhYmxlXT1cInRydWVcIiBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Jvd3NdPVwicGFnaW5hdG9yLnJvd3NcIiBbdG90YWxSZWNvcmRzXT1cInBhZ2luYXRvci50b3RhbFJlY29yZHNcIlxuICAgICAgICAgICAgICAgICAgICBbcGFnaW5hdG9yXT1cInBhZ2luYXRvci50b3RhbFJlY29yZHMgPiBwYWdpbmF0b3Iucm93c1wiIChvblJvd1NlbGVjdCk9XCJ2ZXJTZWd1bmRvUGxhbm8oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbmRvVGFibGFQaW5jaXBhbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydlc3RhZG8nIHwgdHJhbnNsYXRlIH19IDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7J2ZlY2hhaW5pY2lhbCcgfCB0cmFuc2xhdGUgfX0gPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWVudHJhZGE+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cImVudHJhZGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tlbnRyYWRhLm5vbWJyZUVzdGFkb319PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tlbnRyYWRhLmluaWNpYSB8IGRhdGU6ICdkZC9NTS95eXl5IGg6bW0gYSd9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgICAgIDwvcC1hY2NvcmRpb25UYWI+XG4gICAgICAgIDwvcC1hY2NvcmRpb24+XG4gICAgICAgIDxwLWZpZWxkc2V0IGNsYXNzPVwibXQtMFwiICAqbmdJZj1cIm1vc3RyYXJQYXJhbWV0cm9zXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYm9va1wiIHN0eWxlPVwiY29sb3I6dmFyKC0tY29sb3ItNDAwKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3snZW50cmFkYScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8cC10YWJsZSBbdmFsdWVdPVwicGFyYW1ldHJvc1wiID5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1wYXJhbWV0cm8+XG4gICAgICAgICAgICAgICAgICAgIDx0ciBbcFNlbGVjdGFibGVSb3ddPVwicGFyYW1ldHJvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy5zb2xpY2l0YXIgPT0gJ1MnXCI+e3sgcGFyYW1ldHJvLnVuaW9uRFRPLmRlc2NyaXBjaW9uIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+LS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgICpuZ0lmPVwicGFyYW1ldHJvLnVuaW9uRFRPLnNvbGljaXRhciA9PSAnUydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy52YWxvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ1QnIHx8IHBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnRScpICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ1UnICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiIC8+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy52YWxvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnTicgJiYgcGFyYW1ldHJvLnVuaW9uRFRPLnRpcG8gPT0gJ0QnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dE51bWJlcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy52YWxvclwiIG1vZGU9XCJkZWNpbWFsXCIgW21pbkZyYWN0aW9uRGlnaXRzXT1cIjJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heEZyYWN0aW9uRGlnaXRzXT1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdCJyAmJiBwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnRCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cInBhcmFtZXRyby5saXN0YVwiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJjYW1iaW9WYWxvckxpc3RhKCRldmVudCwgcGFyYW1ldHJvKVwiIFsobmdNb2RlbCldPVwicGFyYW1ldHJvLnVuaW9uRFRPLmxsYXZlTGlzdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdMJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy52YWxvclwiIGRhdGVGb3JtYXQ9XCJkZC9tbS95eVwiIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnRicgJiYgcGFyYW1ldHJvLnVuaW9uRFRPLnRpcG8gPT0gJ0QnXCI+PC9wLWNhbGVuZGFyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy5zb2xpY2l0YXIgPT0gJ1MnXCI+e3sgcGFyYW1ldHJvLnVuaW9uRFRPLmRlc2NyaXBjaW9uIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvcC10YWJsZT5cbiAgICAgICAgPC9wLWZpZWxkc2V0PlxuICAgICAgICA8cC1maWVsZHNldCBjbGFzcz1cIm10LTBcIiAqbmdJZj1cImdlbmVyYWNpb25lcy5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYm9va1wiIHN0eWxlPVwiY29sb3I6dmFyKC0tY29sb3ItNDAwKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3snZ2VuZXJhcicgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkIHRleHQteHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNiBsZzpjb2wtMyBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMFwiICAqbmdGb3I9XCJsZXQgdmFsb3Igb2YgZ2VuZXJhY2lvbmVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1yYWRpb0J1dHRvbiAob25DbGljayk9XCJjYW1iaW9UaXBvUmVwb3J0ZSgkZXZlbnQpXCIgW2lucHV0SWRdPVwidmFsb3IudmFsdWVcIiBuYW1lPVwidGlwb1JlcG9ydGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsb3IudmFsdWVcIiBbKG5nTW9kZWwpXT1cInRpcG9SZXBvcnRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJ2YWxvci52YWx1ZVwiIGNsYXNzPVwibWwtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YWxvci5sYWJlbCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9wLWZpZWxkc2V0PlxuXG4gICAgICAgIDxwLWZpZWxkc2V0IGNsYXNzPVwibXQtMFwiICpuZ0lmPVwiJ0EnICE9IHRpcG9SZXBvcnRlICYmIG1vc3RyYXJRdWVEZXNlYUhhY2VyXCIgPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2tcIiBzdHlsZT1cImNvbG9yOnZhcigtLWNvbG9yLTQwMClcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPsK/UXXDqSBkZXNlYSBoYWNlcj88L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwidGlwb1JlcG9ydGUgJiYgJ0YnID09IHRpcG9SZXBvcnRlXCI+e3snc2VsZWNjaW9uZXRpcG9hcmNoaXZvZGVzZWFnZW5lcmFyJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRpcG9SZXBvcnRlICYmICdGJyA9PSB0aXBvUmVwb3J0ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkIHRleHQteHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTMgYWxpZ24taXRlbXMtY2VudGVyIG1iLTBcIiAgKm5nRm9yPVwibGV0IHZhbG9yIG9mIG1hcGFUaXBvQXJjaGl2b3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b24gKG9uQ2xpY2spPVwiY2FtYmlvVGlwb0FyY2hpdm8oJGV2ZW50KVwiIFtpbnB1dElkXT1cInZhbG9yLmNvZGlnb1wiIG5hbWU9XCJ0aXBvQXJjaGl2b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsb3IuY29kaWdvXCIgIFsobmdNb2RlbCldPVwidGlwb0FyY2hpdm9cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJ2YWxvci5jb2RpZ29cIiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbG9yLm5vbWJyZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJtb3N0cmFyQXJjaGl2b3NTb3BvcnRlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIkRldGFsbGVyZXBvcnRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biBbb3B0aW9uc109XCJsaXN0YWRvQXJjaGl2b1NvcG9ydGVcIiBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIG9wdGlvbkxhYmVsPVwiZGVzY3JpcGNpb25cIiBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJsbGF2ZVRhYmxhXCIgWyhuZ01vZGVsKV09XCJzb3BvcnRlQmFzZVwiIChvbkNoYW5nZSk9XCJjYW1iaW9Tb3BvcnRlQmFzZSgkZXZlbnQpXCI+PC9wLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+U29wb3J0ZSBCYXNlOjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRpcG9SZXBvcnRlID09ICdGJyAmJiB0aXBvQXJjaGl2byB8fCB0aXBvUmVwb3J0ZSAhPSAnRicgXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWQgdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNiBsZzpjb2wtMyBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMFwiICAqbmdGb3I9XCJsZXQgdmFsb3Igb2Ygb3BlcmFjaW9uZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcmFkaW9idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b24gW2lucHV0SWRdPVwidmFsb3IudmFsdWVcIiBuYW1lPVwib3BlcmFjaW9uXCIgW3ZhbHVlXT1cInZhbG9yLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwib3BlcmFjaW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwidmFsb3IudmFsdWVcIiBjbGFzcz1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbG9yLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ0UnXCI+XG4gICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJjb3JyZW9cIiB0eXBlPVwidGV4dFwiIFtkaXNhYmxlZF09XCJibG9xdWVhckNvcnJlb1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eydjb3JyZW8nIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDwvcC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcC1maWVsZHNldD5cbiAgICAgICAgXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbiBwLWJ1dHRvbi1vdXRsaW5lZCBiYWNrZ3JvdW5kLTEwMFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ2YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQoJ2VqZWNyZXBvOnNlbnRlbmNpYScpXCIgbGFiZWw9XCJWZXIgc2VudGVuY2lhXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1leWUtb3BlblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbnRlbmNpYSgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdFJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZW52ZWxvcGVcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbnZpYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZW52aWFyU2VndW5kb1BsYW5vKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ0QnICYmIHJlcG9ydGUubW9tZW50byAhPSAnRCdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWNoZWNrXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2dlbmVyYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZGVzY2FyZ2FyUmVwb3J0ZSgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdEJyAmJiByZXBvcnRlLm1vbWVudG8gPT0gJ0QnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1jaGVja1wiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydnZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImRlc2NhcmdhclJlcG9ydGVTaW5IaWxvKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJ0aXBvUmVwb3J0ZSA9PSAnQSdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWNoZWNrXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2dlbmVyYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZ2VuZXJhclRhYmxhKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDwhLS1wdGUgcHJvY2VzbyBleHRlcm5vLS0+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdNJyB8fCBvcGVyYWNpb24gPT0gJ01QJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtZW52ZWxvcGVcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbnZpYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZW52aWFyU2VndW5kb1BsYW5vKClcIj48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24tcmFpc2VkXCIgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ1AnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1mb2xkZXItb3BlblwiXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX3B1YmxpY2FyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09J1MnXCIgIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtY2hlY2tcIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19nZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVudmlhclNlZ3VuZG9QbGFubygpXCI+PC9idXR0b24+XG5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInBhbmVsID09ICdyZXN1bHRhZG8nXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ2hpc3RvcmljbydcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJ0ZXh0LWJhc2UgbXQtMiBtbC0yXCI+e3snZGV0YWxsZScgfCB0cmFuc2xhdGV9fSB7eydzZWd1bmRvcGxhbm8nIHwgdHJhbnNsYXRlfX08L2g0PlxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1jaGV2cm9uLWxlZnRcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgZm9udC1zZW1pYm9sZCBmbGV4LXNocmluay0wIG1sLTRcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZ3Jlc2FyU2VndW5kb1BsYW5vKClcIiBsYWJlbD1cInt7J2xpbmtfcmVncmVzYXInIHwgdHJhbnNsYXRlfX1cIiA+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBJbnB1dGdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTQgbGc6Y29sLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1mbG9hdExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhciB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiZWxlbWVudG9Cb3JyYXIuaW5pY2lhXCIgW2Rpc2FibGVkXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cInRydWVcIiBbc2hvd1NlY29uZHNdPVwidHJ1ZVwiIGRhdGVGb3JtYXQ9XCJkZC9tbS95eVwiPjwvcC1jYWxlbmRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7KCdmZWNoYWluaWNpYWwnKSB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC00IGxnOmNvbC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImVsZW1lbnRvQm9ycmFyLnRlcm1pbmFcIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIGFwcGVuZFRvPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwidHJ1ZVwiIFtzaG93U2Vjb25kc109XCJ0cnVlXCIgZGF0ZUZvcm1hdD1cImRkL21tL3l5XCI+PC9wLWNhbGVuZGFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3soJ2ZlY2hhZmluYWwnKSB8IHRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC00IGxnOmNvbC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiBbcmVhZG9ubHldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbGVtZW50b0JvcnJhci5ub21icmVFc3RhZG9cIiBbZGlzYWJsZWRdPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eygnZXN0YWRvJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtMTIgbGc6Y29sLTEyXCIgKm5nSWY9XCJlbGVtZW50b0JvcnJhci5lc3RhZG8gPT0gJ0UnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7KCdtZW5zYWplJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwibWluLXctZnVsbCBwLWlucHV0dGV4dGFyZWEgcC1pbnB1dHRleHQgcC1jb21wb25lbnQgcC1lbGVtZW50IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M9XCI1XCIgY29scz1cIjMwXCIgcElucHV0VGV4dGFyZWEgWyhuZ01vZGVsKV09XCJlbGVtZW50b0JvcnJhci5hcmNoaXZvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm1sLTIgcC1idXR0b24gcC1idXR0b24tcmFpc2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVsZW1lbnRvQm9ycmFyLmVzdGFkbyA9PSAnVCdcIiBpY29uPVwicGkgcGktZG93bmxvYWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19kZXNjYXJnYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZGVzY2FyZ2FyQXJjaGl2bygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibWwtMiBwLWJ1dHRvbi1vdXRsaW5lZFwiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYmluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZWxpbWluYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZWxpbWluYXJTZWd1bmRvUGxhbm8oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0aXBvUmVwb3J0ZSA9PSAnQSdcIiA+XG4gICAgICAgICAgICA8cC10YWJsZSBbdmFsdWVdPVwibGlzdGFSZWdpc3Ryb1wiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzY3JvbGxcIiBbc2Nyb2xsYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbcm93c109XCIxMFwiIFt0b3RhbFJlY29yZHNdPVwibGlzdGFSZWdpc3Ryby5sZW5ndGhcIiBbcGFnaW5hdG9yXT1cImxpc3RhUmVnaXN0cm8ubGVuZ3RoID4gMTBcIiA+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmb25kb1RhYmxhUGluY2lwYWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoIHx8IDIwMFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uYXNcIj57eyBjb2wuaGVhZGVyIH19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWVudHJhZGE+XG4gICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbc3R5bGUud2lkdGgucHhdPVwiY29sLndpZHRoIHx8IDIwMFwiICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uYXNcIj57eyBlbnRyYWRhW2NvbC5maWVsZF0gfX08L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInAtMyBmb250LW1lZGl1bSBlbXB0eW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J21lbnNhamV0YWJsYXZhY2lhJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9wLXRhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuPC9wLWRpYWxvZz5cbjxhcHAtcG9wdXAtc2VudGVuY2lhIFtyZXBvcnRlXT1cInJlcG9ydGVcIiBbcGFyYW1ldHJvc109XCJwYXJhbWV0cm9zXCIgW21vc3RyYXJQb3B1cF09XCJtb3N0cmFyUG9wdXBTZW50ZW5jaWFcIlxuICAgIChyZWdyZXNhcik9XCJyZWdyZXNhclNlbnRlbmNpYSgkZXZlbnQpXCI+PC9hcHAtcG9wdXAtc2VudGVuY2lhPiJdfQ==