general-library-union 2.4.99 → 2.5.1

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 (640) hide show
  1. package/.browserslistrc +15 -0
  2. package/.editorconfig +16 -0
  3. package/.vscode/extensions.json +4 -0
  4. package/.vscode/launch.json +20 -0
  5. package/.vscode/tasks.json +42 -0
  6. package/angular.json +143 -0
  7. package/karma.conf.js +44 -0
  8. package/ng-package.json +21 -0
  9. package/package.json +73 -62
  10. package/{public-api.d.ts → public-api.ts} +197 -159
  11. package/src/app/app.component.html +12 -0
  12. package/src/app/app.component.scss +0 -0
  13. package/src/app/app.component.spec.ts +29 -0
  14. package/src/app/app.component.ts +34 -0
  15. package/src/app/app.config.ts +43 -0
  16. package/src/app/app.module.ts +10 -0
  17. package/src/app/app.routes.ts +88 -0
  18. package/src/app/core/componentes/breadcrumb/breadcrumb.component.html +6 -0
  19. package/src/app/core/componentes/breadcrumb/breadcrumb.component.scss +0 -0
  20. package/src/app/core/componentes/breadcrumb/breadcrumb.component.ts +39 -0
  21. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.html +1 -0
  22. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.scss +0 -0
  23. package/src/app/core/componentes/carga-breadcrumb/carga-breadcrumb.component.ts +31 -0
  24. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.html +9 -0
  25. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.scss +28 -0
  26. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.ts +32 -0
  27. package/src/app/core/componentes/filtro-general/filtro-general.component.html +34 -0
  28. package/src/app/core/componentes/filtro-general/filtro-general.component.scss +3 -0
  29. package/src/app/core/componentes/filtro-general/filtro-general.component.ts +154 -0
  30. package/src/app/core/componentes/footer/footer.component.html +13 -0
  31. package/src/app/core/componentes/footer/footer.component.scss +3 -0
  32. package/src/app/core/componentes/footer/footer.component.ts +20 -0
  33. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.html +267 -0
  34. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.scss +21 -0
  35. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.ts +275 -0
  36. package/src/app/core/componentes/formulariodinamico/objetosformulario/{Cambio.d.ts → Cambio.ts} +13 -7
  37. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.ts +118 -0
  38. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.ts +76 -0
  39. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.ts +67 -0
  40. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.ts +11 -0
  41. package/src/app/core/componentes/inicio-component/inicio-component.component.html +29 -0
  42. package/src/app/core/componentes/inicio-component/inicio-component.component.scss +69 -0
  43. package/src/app/core/componentes/inicio-component/inicio-component.component.ts +65 -0
  44. package/src/app/core/componentes/menu/menu.component.html +13 -0
  45. package/src/app/core/componentes/menu/menu.component.scss +36 -0
  46. package/src/app/core/componentes/menu/menu.component.ts +35 -0
  47. package/src/app/core/componentes/tabla-general/tabla-general.component.html +90 -0
  48. package/src/app/core/componentes/tabla-general/tabla-general.component.scss +0 -0
  49. package/src/app/core/componentes/tabla-general/tabla-general.component.ts +96 -0
  50. package/src/app/core/core.module.ts +22 -0
  51. package/src/app/core/errores/authentication.error.ts +6 -0
  52. package/src/app/core/modelos/error-response.model.ts +9 -0
  53. package/src/app/core/modelos/table-column.model.ts +10 -0
  54. package/src/app/core/modelos/user.model.ts +6 -0
  55. package/src/app/core/plantilla-general/plantilla-general.template.html +139 -0
  56. package/src/app/core/plantilla-general/plantilla-general.template.scss +37 -0
  57. package/src/app/core/plantilla-general/plantilla-general.template.ts +233 -0
  58. package/src/app/core/servicios/auth.service.ts +189 -0
  59. package/src/app/core/servicios/cargar-control-funcionalidad.service.ts +49 -0
  60. package/src/app/core/servicios/data-exporter-table.utils.ts +55 -0
  61. package/src/app/core/servicios/error-interceptor.service.ts +146 -0
  62. package/src/app/core/servicios/guardias/auth.guard.ts +51 -0
  63. package/src/app/core/servicios/guardias/publico.guard.ts +26 -0
  64. package/src/app/core/servicios/interceptores/token-interceptor.service.ts +110 -0
  65. package/src/app/core/servicios/loading.service.ts +48 -0
  66. package/src/app/core/servicios/menu.service.ts +153 -0
  67. package/src/app/core/servicios/storage.service.ts +68 -0
  68. package/src/app/core/servicios/template.service.ts +91 -0
  69. package/src/app/core/servicios/toast.service.ts +89 -0
  70. package/src/app/core/servicios/utils.service.ts +351 -0
  71. package/src/app/core/sharedlib.module.ts +11 -0
  72. package/src/app/core/utilidades/color.util.ts +197 -0
  73. package/src/app/layout/api/{menuchangeevent.d.ts → menuchangeevent.ts} +4 -4
  74. package/src/app/layout/app.breadcrumb.component.html +20 -0
  75. package/src/app/layout/app.breadcrumb.component.ts +78 -0
  76. package/src/app/layout/app.footer.component.html +18 -0
  77. package/src/app/layout/app.footer.component.ts +15 -0
  78. package/src/app/layout/app.layout.component.html +20 -0
  79. package/src/app/layout/app.layout.component.ts +201 -0
  80. package/src/app/layout/app.layout.module.ts +9 -0
  81. package/src/app/layout/app.menu.component.html +6 -0
  82. package/src/app/layout/app.menu.component.ts +51 -0
  83. package/src/app/layout/app.menu.service.ts +23 -0
  84. package/src/app/layout/app.menuitem.component.ts +252 -0
  85. package/src/app/layout/app.menuprofile.component.html +35 -0
  86. package/src/app/layout/app.menuprofile.component.ts +60 -0
  87. package/src/app/layout/app.rightmenu.component.html +72 -0
  88. package/src/app/layout/app.rightmenu.component.ts +24 -0
  89. package/src/app/layout/app.sidebar.component.html +40 -0
  90. package/src/app/layout/app.sidebar.component.ts +81 -0
  91. package/src/app/layout/app.topbar.component.html +214 -0
  92. package/src/app/layout/app.topbar.component.ts +335 -0
  93. package/src/app/layout/config/app.config.component.html +125 -0
  94. package/src/app/layout/config/app.config.component.ts +206 -0
  95. package/src/app/layout/config/app.config.module.ts +11 -0
  96. package/src/app/layout/service/app.layout.service.ts +191 -0
  97. package/src/app/publico/pages/login/login.page.html +53 -0
  98. package/src/app/publico/pages/login/login.page.scss +166 -0
  99. package/src/app/publico/pages/login/login.page.ts +128 -0
  100. package/src/app/publico/pages/not-found/not-found.page.html +35 -0
  101. package/src/app/publico/pages/not-found/not-found.page.scss +2 -0
  102. package/src/app/publico/pages/not-found/not-found.page.ts +46 -0
  103. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.html +58 -0
  104. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.scss +49 -0
  105. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.ts +176 -0
  106. package/src/app/publico/pages/timeout/timeout.page.html +24 -0
  107. package/src/app/publico/pages/timeout/timeout.page.scss +2 -0
  108. package/src/app/publico/pages/timeout/timeout.page.ts +18 -0
  109. package/src/app/seguridad/constantes/ConstantesGenerales.ts +30 -0
  110. package/src/app/seguridad/constantes/ReporteEntradaConstantes.ts +18 -0
  111. package/src/app/seguridad/constantes/ReporteFuenteConstantes.ts +13 -0
  112. package/src/app/seguridad/modelos/AplicacionModel.ts +11 -0
  113. package/src/app/seguridad/modelos/ArchivoPortalModel.ts +16 -0
  114. package/src/app/seguridad/modelos/AtributoPuntoModel.ts +9 -0
  115. package/src/app/seguridad/modelos/AtributoSSOportalModel.ts +22 -0
  116. package/src/app/seguridad/modelos/{AuditoriaArchivoModel.d.ts → AuditoriaArchivoModel.ts} +13 -10
  117. package/src/app/seguridad/modelos/CargueLineaModel.ts +17 -0
  118. package/src/app/seguridad/modelos/ColoresRGB.ts +17 -0
  119. package/src/app/seguridad/modelos/ColumnaFuenteModel.ts +9 -0
  120. package/src/app/seguridad/modelos/{ColumnaWraperModel.d.ts → ColumnaWraperModel.ts} +7 -6
  121. package/src/app/seguridad/modelos/ComplementoModel.ts +10 -0
  122. package/src/app/seguridad/modelos/ComponentePaginaModel.ts +22 -0
  123. package/src/app/seguridad/modelos/ConexionModel.ts +15 -0
  124. package/src/app/seguridad/modelos/{ContenidoHtmlPortalModel.d.ts → ContenidoHtmlPortalModel.ts} +25 -20
  125. package/src/app/seguridad/modelos/ControlFuncionModel.ts +10 -0
  126. package/src/app/seguridad/modelos/CorreoModel.ts +45 -0
  127. package/src/app/seguridad/modelos/CorreoWSModel.ts +49 -0
  128. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.ts +14 -0
  129. package/src/app/seguridad/modelos/{DatoInicioModel.d.ts → DatoInicioModel.ts} +7 -6
  130. package/src/app/seguridad/modelos/{EjecucionReporteDataModel.d.ts → EjecucionReporteDataModel.ts} +21 -20
  131. package/src/app/seguridad/modelos/EmpresaModel.ts +25 -0
  132. package/src/app/seguridad/modelos/EmpresaSeguridadModel.ts +19 -0
  133. package/src/app/seguridad/modelos/{EntradaComplementoModel.d.ts → EntradaComplementoModel.ts} +9 -6
  134. package/src/app/seguridad/modelos/EtiquetaModel.ts +4 -0
  135. package/src/app/seguridad/modelos/Etiquetas.ts +14 -0
  136. package/src/app/seguridad/modelos/{ForeingWraperModel.d.ts → ForeingWraperModel.ts} +9 -6
  137. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.ts +21 -0
  138. package/src/app/seguridad/modelos/{FuenteCampoModel.d.ts → FuenteCampoModel.ts} +20 -16
  139. package/src/app/seguridad/modelos/FuenteDato.ts +19 -0
  140. package/src/app/seguridad/modelos/FuenteEntradaModel.ts +9 -0
  141. package/src/app/seguridad/modelos/{FuenteGeneralModel.d.ts → FuenteGeneralModel.ts} +55 -36
  142. package/src/app/seguridad/modelos/FuenteLineaServicioModel.ts +19 -0
  143. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.ts +14 -0
  144. package/src/app/seguridad/modelos/{FuenteServicioModel.d.ts → FuenteServicioModel.ts} +61 -47
  145. package/src/app/seguridad/modelos/FuncionalidadModel.ts +12 -0
  146. package/src/app/seguridad/modelos/GeneralModel.ts +16 -0
  147. package/src/app/seguridad/modelos/{GrupoAccesoModel.d.ts → GrupoAccesoModel.ts} +9 -6
  148. package/src/app/seguridad/modelos/GrupoControlFuncionModel.ts +12 -0
  149. package/src/app/seguridad/modelos/GrupoFuenteModel.ts +17 -0
  150. package/src/app/seguridad/modelos/GrupoPermisoModel.ts +16 -0
  151. package/src/app/seguridad/modelos/{JoinFromModel.d.ts → JoinFromModel.ts} +4 -4
  152. package/src/app/seguridad/modelos/ListaServicioModel.ts +18 -0
  153. package/src/app/seguridad/modelos/LlaveForaneaModel.ts +6 -0
  154. package/src/app/seguridad/modelos/LoginModel.ts +19 -0
  155. package/src/app/seguridad/modelos/MensajeSistemaModel.ts +10 -0
  156. package/src/app/seguridad/modelos/{MenuPortalModel.d.ts → MenuPortalModel.ts} +5 -4
  157. package/src/app/seguridad/modelos/ModulosModel.ts +17 -0
  158. package/src/app/seguridad/modelos/{ObjetoReporteModel.d.ts → ObjetoReporteModel.ts} +6 -5
  159. package/src/app/seguridad/modelos/PaginaPortalModel.ts +23 -0
  160. package/src/app/seguridad/modelos/ParametroComponenteModel.ts +9 -0
  161. package/src/app/seguridad/modelos/ParametrosGeneralModel.ts +16 -0
  162. package/src/app/seguridad/modelos/PermisoFuncionModel.ts +11 -0
  163. package/src/app/seguridad/modelos/PermisocontenidoModel.ts +20 -0
  164. package/src/app/seguridad/modelos/{PeticionModel.d.ts → PeticionModel.ts} +20 -15
  165. package/src/app/seguridad/modelos/PreguntaSeguridadModel.ts +9 -0
  166. package/src/app/seguridad/modelos/PropiedadModel.ts +12 -0
  167. package/src/app/seguridad/modelos/PublicacionWebModel.ts +29 -0
  168. package/src/app/seguridad/modelos/PuntoProcesoModel.ts +7 -0
  169. package/src/app/seguridad/modelos/RecursoPunto.ts +13 -0
  170. package/src/app/seguridad/modelos/RecursoPuntoModel.ts +13 -0
  171. package/src/app/seguridad/modelos/ReporteBanda.ts +9 -0
  172. package/src/app/seguridad/modelos/ReporteColumna.ts +33 -0
  173. package/src/app/seguridad/modelos/ReporteColumnario.ts +82 -0
  174. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.ts +31 -0
  175. package/src/app/seguridad/modelos/{ReporteEntradaModel.d.ts → ReporteEntradaModel.ts} +21 -19
  176. package/src/app/seguridad/modelos/{ReporteFuenteModel.d.ts → ReporteFuenteModel.ts} +141 -87
  177. package/src/app/seguridad/modelos/ReporteMarcador.ts +40 -0
  178. package/src/app/seguridad/modelos/ReporteSoporte.ts +10 -0
  179. package/src/app/seguridad/modelos/ReporteTabla.ts +14 -0
  180. package/src/app/seguridad/modelos/RespuestaModel.ts +10 -0
  181. package/src/app/seguridad/modelos/{RolModel.d.ts → RolModel.ts} +41 -37
  182. package/src/app/seguridad/modelos/ServidorCorreoModel.ts +31 -0
  183. package/src/app/seguridad/modelos/SistemaMensajeModel.ts +11 -0
  184. package/src/app/seguridad/modelos/SitioPortalModel.ts +29 -0
  185. package/src/app/seguridad/modelos/TablaFromModel.ts +5 -0
  186. package/src/app/seguridad/modelos/TareasModel.ts +54 -0
  187. package/src/app/seguridad/modelos/TextoModel.ts +11 -0
  188. package/src/app/seguridad/modelos/TipoEtiqueta.ts +8 -0
  189. package/src/app/seguridad/modelos/UnionModel.ts +14 -0
  190. package/src/app/seguridad/modelos/{UsuarioModel.d.ts → UsuarioModel.ts} +60 -49
  191. package/src/app/seguridad/modelos/UsuariogrupoModel.ts +27 -0
  192. package/src/app/seguridad/modelos/aplicacion-propiedad-model.ts +16 -0
  193. package/src/app/seguridad/modelos/contenidoCorreoModel.ts +13 -0
  194. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.html +47 -0
  195. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.scss +8 -0
  196. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.ts +141 -0
  197. package/src/app/shared/servicios/cargar-archivos.service.ts +51 -0
  198. package/src/app/shared/servicios/cargar-mapas.service.ts +43 -0
  199. package/src/app/shared/servicios/encriptado-basico.service.ts +54 -0
  200. package/src/app/shared/servicios/encriptador-simetrico.service.ts +29 -0
  201. package/src/app/shared/servicios/general.service.ts +124 -0
  202. package/src/app/shared/servicios/parametros-navegacion.service.ts +20 -0
  203. package/src/app/shared/servicios/plantillas.service.ts +22 -0
  204. package/src/app/shared/utilidades/translate-loader.util.ts +44 -0
  205. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.html +167 -0
  206. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.scss +11 -0
  207. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.ts +425 -0
  208. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.html +87 -0
  209. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.scss +0 -0
  210. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.ts +189 -0
  211. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.html +117 -0
  212. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.scss +0 -0
  213. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.ts +87 -0
  214. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.html +158 -0
  215. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.scss +6 -0
  216. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.ts +345 -0
  217. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.html +131 -0
  218. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.scss +0 -0
  219. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.ts +198 -0
  220. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.html +206 -0
  221. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.scss +3 -0
  222. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.ts +329 -0
  223. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.html +2114 -0
  224. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.scss +241 -0
  225. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.ts +1677 -0
  226. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.html +33 -0
  227. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.scss +0 -0
  228. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.ts +96 -0
  229. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.html +47 -0
  230. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.scss +0 -0
  231. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.ts +95 -0
  232. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.html +394 -0
  233. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.scss +10 -0
  234. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.ts +599 -0
  235. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.html +130 -0
  236. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.scss +0 -0
  237. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.ts +172 -0
  238. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.html +376 -0
  239. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.scss +5 -0
  240. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.ts +749 -0
  241. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.html +145 -0
  242. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.scss +0 -0
  243. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.ts +302 -0
  244. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.html +19 -0
  245. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.scss +0 -0
  246. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.ts +89 -0
  247. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.html +713 -0
  248. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.scss +0 -0
  249. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.ts +688 -0
  250. package/src/app/webcommon/pipes/dashboard.pipe.ts +79 -0
  251. package/src/app/webcommon/pipes/fuente.pipe.ts +207 -0
  252. package/src/app/webcommon/pipes/general.pipe.ts +1043 -0
  253. package/src/app/webcommon/pipes/reporte-columnario.pipe.ts +101 -0
  254. package/src/app/webcommon/pipes/reporte-fuente.pipe.ts +306 -0
  255. package/src/app/webcommon/pipes/sara-general.pipe.ts +289 -0
  256. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.html +90 -0
  257. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.scss +0 -0
  258. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.ts +262 -0
  259. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.html +50 -0
  260. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.scss +0 -0
  261. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.ts +135 -0
  262. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.html +41 -0
  263. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.scss +0 -0
  264. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.ts +283 -0
  265. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.html +179 -0
  266. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.scss +3 -0
  267. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.ts +266 -0
  268. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.html +261 -0
  269. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.scss +13 -0
  270. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.ts +513 -0
  271. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.html +10 -0
  272. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.scss +5 -0
  273. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.ts +58 -0
  274. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.html +71 -0
  275. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.scss +0 -0
  276. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.ts +151 -0
  277. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.html +11 -0
  278. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.scss +0 -0
  279. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.ts +82 -0
  280. package/src/app/webcommon/services/carguelinea.service.ts +72 -0
  281. package/src/app/webcommon/services/dashboard.service.ts +258 -0
  282. package/src/app/webcommon/services/ejecucionreporte.service.ts +160 -0
  283. package/src/app/webcommon/services/fechaUtils.service.ts +117 -0
  284. package/src/app/webcommon/services/fuentegeneral.service.ts +74 -0
  285. package/src/app/webcommon/services/homologacion.service.ts +49 -0
  286. package/src/app/webcommon/services/plantillas.service.ts +165 -0
  287. package/src/app/webcommon/services/reportes.service.ts +133 -0
  288. package/src/app/webcommon/webcommon.module.ts +11 -0
  289. package/src/environments/environment.prod.ts +3 -0
  290. package/src/environments/environment.ts +25 -0
  291. package/src/favicon.ico +0 -0
  292. package/src/index.html +14 -0
  293. package/src/main.ts +11 -0
  294. package/src/polyfills.ts +53 -0
  295. package/src/test.ts +14 -0
  296. package/tsconfig.app.json +15 -0
  297. package/tsconfig.json +35 -0
  298. package/tsconfig.spec.json +18 -0
  299. package/esm2022/general-library-union.mjs +0 -5
  300. package/esm2022/public-api.mjs +0 -177
  301. package/esm2022/src/app/core/componentes/breadcrumb/breadcrumb.component.mjs +0 -40
  302. package/esm2022/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.mjs +0 -28
  303. package/esm2022/src/app/core/componentes/filtro-general/filtro-general.component.mjs +0 -153
  304. package/esm2022/src/app/core/componentes/footer/footer.component.mjs +0 -16
  305. package/esm2022/src/app/core/componentes/formulariodinamico/formulariodinamico.component.mjs +0 -272
  306. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/Cambio.mjs +0 -11
  307. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.mjs +0 -124
  308. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.mjs +0 -73
  309. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.mjs +0 -59
  310. package/esm2022/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.mjs +0 -21
  311. package/esm2022/src/app/core/componentes/inicio-component/inicio-component.component.mjs +0 -67
  312. package/esm2022/src/app/core/componentes/menu/menu.component.mjs +0 -37
  313. package/esm2022/src/app/core/componentes/tabla-general/tabla-general.component.mjs +0 -93
  314. package/esm2022/src/app/core/core.module.mjs +0 -23
  315. package/esm2022/src/app/core/errores/authentication.error.mjs +0 -7
  316. package/esm2022/src/app/core/modelos/error-response.model.mjs +0 -2
  317. package/esm2022/src/app/core/modelos/table-column.model.mjs +0 -2
  318. package/esm2022/src/app/core/modelos/user.model.mjs +0 -7
  319. package/esm2022/src/app/core/plantilla-general/plantilla-general.template.mjs +0 -230
  320. package/esm2022/src/app/core/servicios/auth.service.mjs +0 -185
  321. package/esm2022/src/app/core/servicios/cargar-control-funcionalidad.service.mjs +0 -57
  322. package/esm2022/src/app/core/servicios/data-exporter-table.utils.mjs +0 -44
  323. package/esm2022/src/app/core/servicios/error-interceptor.service.mjs +0 -148
  324. package/esm2022/src/app/core/servicios/guardias/auth.guard.mjs +0 -66
  325. package/esm2022/src/app/core/servicios/guardias/publico.guard.mjs +0 -35
  326. package/esm2022/src/app/core/servicios/interceptores/token-interceptor.service.mjs +0 -120
  327. package/esm2022/src/app/core/servicios/loading.service.mjs +0 -43
  328. package/esm2022/src/app/core/servicios/menu.service.mjs +0 -146
  329. package/esm2022/src/app/core/servicios/storage.service.mjs +0 -68
  330. package/esm2022/src/app/core/servicios/template.service.mjs +0 -99
  331. package/esm2022/src/app/core/servicios/toast.service.mjs +0 -91
  332. package/esm2022/src/app/core/servicios/utils.service.mjs +0 -324
  333. package/esm2022/src/app/core/sharedlib.module.mjs +0 -16
  334. package/esm2022/src/app/core/utilidades/color.util.mjs +0 -177
  335. package/esm2022/src/app/layout/api/menuchangeevent.mjs +0 -2
  336. package/esm2022/src/app/layout/app.breadcrumb.component.mjs +0 -71
  337. package/esm2022/src/app/layout/app.footer.component.mjs +0 -18
  338. package/esm2022/src/app/layout/app.layout.component.mjs +0 -188
  339. package/esm2022/src/app/layout/app.layout.module.mjs +0 -15
  340. package/esm2022/src/app/layout/app.menu.component.mjs +0 -51
  341. package/esm2022/src/app/layout/app.menu.service.mjs +0 -24
  342. package/esm2022/src/app/layout/app.menuitem.component.mjs +0 -296
  343. package/esm2022/src/app/layout/app.menuprofile.component.mjs +0 -78
  344. package/esm2022/src/app/layout/app.rightmenu.component.mjs +0 -24
  345. package/esm2022/src/app/layout/app.sidebar.component.mjs +0 -92
  346. package/esm2022/src/app/layout/app.topbar.component.mjs +0 -345
  347. package/esm2022/src/app/layout/service/app.layout.service.mjs +0 -134
  348. package/esm2022/src/app/publico/pages/login/login.page.mjs +0 -129
  349. package/esm2022/src/app/publico/pages/not-found/not-found.page.mjs +0 -51
  350. package/esm2022/src/app/publico/pages/seleccion-rol/seleccion-rol.component.mjs +0 -167
  351. package/esm2022/src/app/publico/pages/timeout/timeout.page.mjs +0 -20
  352. package/esm2022/src/app/seguridad/constantes/ConstantesGenerales.mjs +0 -30
  353. package/esm2022/src/app/seguridad/constantes/ReporteEntradaConstantes.mjs +0 -19
  354. package/esm2022/src/app/seguridad/modelos/AplicacionModel.mjs +0 -8
  355. package/esm2022/src/app/seguridad/modelos/ArchivoPortalModel.mjs +0 -14
  356. package/esm2022/src/app/seguridad/modelos/AtributoPuntoModel.mjs +0 -9
  357. package/esm2022/src/app/seguridad/modelos/AtributoSSOportalModel.mjs +0 -17
  358. package/esm2022/src/app/seguridad/modelos/AuditoriaArchivoModel.mjs +0 -11
  359. package/esm2022/src/app/seguridad/modelos/CargueLineaModel.mjs +0 -13
  360. package/esm2022/src/app/seguridad/modelos/ColoresRGB.mjs +0 -18
  361. package/esm2022/src/app/seguridad/modelos/ColumnaFuenteModel.mjs +0 -9
  362. package/esm2022/src/app/seguridad/modelos/ColumnaWraperModel.mjs +0 -6
  363. package/esm2022/src/app/seguridad/modelos/ComplementoModel.mjs +0 -7
  364. package/esm2022/src/app/seguridad/modelos/ComponentePaginaModel.mjs +0 -21
  365. package/esm2022/src/app/seguridad/modelos/ConexionModel.mjs +0 -14
  366. package/esm2022/src/app/seguridad/modelos/ContenidoHtmlPortalModel.mjs +0 -21
  367. package/esm2022/src/app/seguridad/modelos/ControlFuncionModel.mjs +0 -8
  368. package/esm2022/src/app/seguridad/modelos/CorreoModel.mjs +0 -35
  369. package/esm2022/src/app/seguridad/modelos/CorreoWSModel.mjs +0 -37
  370. package/esm2022/src/app/seguridad/modelos/CruceRecursoPuntoModel.mjs +0 -14
  371. package/esm2022/src/app/seguridad/modelos/DatoInicioModel.mjs +0 -6
  372. package/esm2022/src/app/seguridad/modelos/EjecucionReporteDataModel.mjs +0 -14
  373. package/esm2022/src/app/seguridad/modelos/EmpresaModel.mjs +0 -25
  374. package/esm2022/src/app/seguridad/modelos/EmpresaSeguridadModel.mjs +0 -19
  375. package/esm2022/src/app/seguridad/modelos/EntradaComplementoModel.mjs +0 -7
  376. package/esm2022/src/app/seguridad/modelos/EtiquetaModel.mjs +0 -5
  377. package/esm2022/src/app/seguridad/modelos/Etiquetas.mjs +0 -12
  378. package/esm2022/src/app/seguridad/modelos/ForeingWraperModel.mjs +0 -6
  379. package/esm2022/src/app/seguridad/modelos/FuenteCampoAtributoModel.mjs +0 -16
  380. package/esm2022/src/app/seguridad/modelos/FuenteCampoModel.mjs +0 -17
  381. package/esm2022/src/app/seguridad/modelos/FuenteDato.mjs +0 -19
  382. package/esm2022/src/app/seguridad/modelos/FuenteEntradaModel.mjs +0 -9
  383. package/esm2022/src/app/seguridad/modelos/FuenteGeneralModel.mjs +0 -37
  384. package/esm2022/src/app/seguridad/modelos/FuenteLineaServicioModel.mjs +0 -16
  385. package/esm2022/src/app/seguridad/modelos/FuenteProcesoGeneralModel.mjs +0 -11
  386. package/esm2022/src/app/seguridad/modelos/FuenteServicioModel.mjs +0 -51
  387. package/esm2022/src/app/seguridad/modelos/FuncionalidadModel.mjs +0 -10
  388. package/esm2022/src/app/seguridad/modelos/GeneralModel.mjs +0 -15
  389. package/esm2022/src/app/seguridad/modelos/GrupoAccesoModel.mjs +0 -7
  390. package/esm2022/src/app/seguridad/modelos/GrupoControlFuncionModel.mjs +0 -10
  391. package/esm2022/src/app/seguridad/modelos/GrupoFuenteModel.mjs +0 -13
  392. package/esm2022/src/app/seguridad/modelos/GrupoPermisoModel.mjs +0 -14
  393. package/esm2022/src/app/seguridad/modelos/JoinFromModel.mjs +0 -5
  394. package/esm2022/src/app/seguridad/modelos/ListaServicioModel.mjs +0 -17
  395. package/esm2022/src/app/seguridad/modelos/LlaveForaneaModel.mjs +0 -7
  396. package/esm2022/src/app/seguridad/modelos/LoginModel.mjs +0 -15
  397. package/esm2022/src/app/seguridad/modelos/MensajeSistemaModel.mjs +0 -8
  398. package/esm2022/src/app/seguridad/modelos/MenuPortalModel.mjs +0 -5
  399. package/esm2022/src/app/seguridad/modelos/ModulosModel.mjs +0 -18
  400. package/esm2022/src/app/seguridad/modelos/ObjetoReporteModel.mjs +0 -6
  401. package/esm2022/src/app/seguridad/modelos/PaginaPortalModel.mjs +0 -20
  402. package/esm2022/src/app/seguridad/modelos/ParametroComponenteModel.mjs +0 -9
  403. package/esm2022/src/app/seguridad/modelos/ParametrosGeneralModel.mjs +0 -15
  404. package/esm2022/src/app/seguridad/modelos/PermisoFuncionModel.mjs +0 -9
  405. package/esm2022/src/app/seguridad/modelos/PermisocontenidoModel.mjs +0 -20
  406. package/esm2022/src/app/seguridad/modelos/PeticionModel.mjs +0 -16
  407. package/esm2022/src/app/seguridad/modelos/PreguntaSeguridadModel.mjs +0 -7
  408. package/esm2022/src/app/seguridad/modelos/PropiedadModel.mjs +0 -10
  409. package/esm2022/src/app/seguridad/modelos/PublicacionWebModel.mjs +0 -27
  410. package/esm2022/src/app/seguridad/modelos/PuntoProcesoModel.mjs +0 -7
  411. package/esm2022/src/app/seguridad/modelos/RecursoPunto.mjs +0 -13
  412. package/esm2022/src/app/seguridad/modelos/RecursoPuntoModel.mjs +0 -13
  413. package/esm2022/src/app/seguridad/modelos/ReporteBanda.mjs +0 -8
  414. package/esm2022/src/app/seguridad/modelos/ReporteColumna.mjs +0 -33
  415. package/esm2022/src/app/seguridad/modelos/ReporteColumnario.mjs +0 -69
  416. package/esm2022/src/app/seguridad/modelos/ReporteColumnarioMarcador.mjs +0 -24
  417. package/esm2022/src/app/seguridad/modelos/ReporteEntradaModel.mjs +0 -20
  418. package/esm2022/src/app/seguridad/modelos/ReporteFuenteModel.mjs +0 -124
  419. package/esm2022/src/app/seguridad/modelos/ReporteMarcador.mjs +0 -40
  420. package/esm2022/src/app/seguridad/modelos/ReporteSoporte.mjs +0 -10
  421. package/esm2022/src/app/seguridad/modelos/ReporteTabla.mjs +0 -13
  422. package/esm2022/src/app/seguridad/modelos/RespuestaModel.mjs +0 -9
  423. package/esm2022/src/app/seguridad/modelos/RolModel.mjs +0 -39
  424. package/esm2022/src/app/seguridad/modelos/ServidorCorreoModel.mjs +0 -28
  425. package/esm2022/src/app/seguridad/modelos/SistemaMensajeModel.mjs +0 -9
  426. package/esm2022/src/app/seguridad/modelos/SitioPortalModel.mjs +0 -25
  427. package/esm2022/src/app/seguridad/modelos/TablaFromModel.mjs +0 -5
  428. package/esm2022/src/app/seguridad/modelos/TareasModel.mjs +0 -54
  429. package/esm2022/src/app/seguridad/modelos/TextoModel.mjs +0 -9
  430. package/esm2022/src/app/seguridad/modelos/TipoEtiqueta.mjs +0 -8
  431. package/esm2022/src/app/seguridad/modelos/UnionModel.mjs +0 -12
  432. package/esm2022/src/app/seguridad/modelos/UsuarioModel.mjs +0 -53
  433. package/esm2022/src/app/seguridad/modelos/UsuariogrupoModel.mjs +0 -24
  434. package/esm2022/src/app/seguridad/modelos/aplicacion-propiedad-model.mjs +0 -15
  435. package/esm2022/src/app/seguridad/modelos/contenidoCorreoModel.mjs +0 -10
  436. package/esm2022/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.mjs +0 -151
  437. package/esm2022/src/app/shared/servicios/cargar-archivos.service.mjs +0 -54
  438. package/esm2022/src/app/shared/servicios/cargar-mapas.service.mjs +0 -46
  439. package/esm2022/src/app/shared/servicios/encriptado-basico.service.mjs +0 -53
  440. package/esm2022/src/app/shared/servicios/general.service.mjs +0 -104
  441. package/esm2022/src/app/shared/servicios/parametros-navegacion.service.mjs +0 -21
  442. package/esm2022/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.mjs +0 -371
  443. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.mjs +0 -187
  444. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.mjs +0 -85
  445. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.mjs +0 -347
  446. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.mjs +0 -206
  447. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.mjs +0 -328
  448. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.mjs +0 -1569
  449. package/esm2022/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.mjs +0 -105
  450. package/esm2022/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.mjs +0 -95
  451. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.mjs +0 -588
  452. package/esm2022/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.mjs +0 -177
  453. package/esm2022/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.mjs +0 -749
  454. package/esm2022/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.mjs +0 -331
  455. package/esm2022/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.mjs +0 -96
  456. package/esm2022/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.mjs +0 -675
  457. package/esm2022/src/app/webcommon/pipes/dashboard.pipe.mjs +0 -86
  458. package/esm2022/src/app/webcommon/pipes/fuente.pipe.mjs +0 -201
  459. package/esm2022/src/app/webcommon/pipes/general.pipe.mjs +0 -916
  460. package/esm2022/src/app/webcommon/pipes/reporte-columnario.pipe.mjs +0 -115
  461. package/esm2022/src/app/webcommon/pipes/reporte-fuente.pipe.mjs +0 -301
  462. package/esm2022/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.mjs +0 -267
  463. package/esm2022/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.mjs +0 -128
  464. package/esm2022/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.mjs +0 -293
  465. package/esm2022/src/app/webcommon/popups/popup-recurso/popup-recurso.component.mjs +0 -269
  466. package/esm2022/src/app/webcommon/popups/popup-reporte/popup-reporte.component.mjs +0 -509
  467. package/esm2022/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.mjs +0 -64
  468. package/esm2022/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.mjs +0 -159
  469. package/esm2022/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.mjs +0 -89
  470. package/esm2022/src/app/webcommon/services/carguelinea.service.mjs +0 -69
  471. package/esm2022/src/app/webcommon/services/dashboard.service.mjs +0 -253
  472. package/esm2022/src/app/webcommon/services/ejecucionreporte.service.mjs +0 -114
  473. package/esm2022/src/app/webcommon/services/fechaUtils.service.mjs +0 -88
  474. package/esm2022/src/app/webcommon/services/fuentegeneral.service.mjs +0 -68
  475. package/esm2022/src/app/webcommon/services/homologacion.service.mjs +0 -50
  476. package/esm2022/src/app/webcommon/services/plantillas.service.mjs +0 -129
  477. package/esm2022/src/app/webcommon/services/reportes.service.mjs +0 -95
  478. package/esm2022/src/app/webcommon/webcommon.module.mjs +0 -15
  479. package/esm2022/src/environments/environment.mjs +0 -24
  480. package/fesm2022/general-library-union.mjs +0 -15585
  481. package/fesm2022/general-library-union.mjs.map +0 -1
  482. package/index.d.ts +0 -5
  483. package/src/app/core/componentes/breadcrumb/breadcrumb.component.d.ts +0 -18
  484. package/src/app/core/componentes/carga-pantalla-completa/carga-pantalla-completa.component.d.ts +0 -14
  485. package/src/app/core/componentes/filtro-general/filtro-general.component.d.ts +0 -26
  486. package/src/app/core/componentes/footer/footer.component.d.ts +0 -9
  487. package/src/app/core/componentes/formulariodinamico/formulariodinamico.component.d.ts +0 -46
  488. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormulario.d.ts +0 -44
  489. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioCons.d.ts +0 -45
  490. package/src/app/core/componentes/formulariodinamico/objetosformulario/CampoFormularioNuevo.d.ts +0 -33
  491. package/src/app/core/componentes/formulariodinamico/objetosformulario/HashDirective.d.ts +0 -9
  492. package/src/app/core/componentes/inicio-component/inicio-component.component.d.ts +0 -24
  493. package/src/app/core/componentes/menu/menu.component.d.ts +0 -16
  494. package/src/app/core/componentes/tabla-general/tabla-general.component.d.ts +0 -32
  495. package/src/app/core/core.module.d.ts +0 -8
  496. package/src/app/core/errores/authentication.error.d.ts +0 -3
  497. package/src/app/core/modelos/error-response.model.d.ts +0 -9
  498. package/src/app/core/modelos/table-column.model.d.ts +0 -12
  499. package/src/app/core/modelos/user.model.d.ts +0 -6
  500. package/src/app/core/plantilla-general/plantilla-general.template.d.ts +0 -89
  501. package/src/app/core/servicios/auth.service.d.ts +0 -52
  502. package/src/app/core/servicios/cargar-control-funcionalidad.service.d.ts +0 -19
  503. package/src/app/core/servicios/data-exporter-table.utils.d.ts +0 -8
  504. package/src/app/core/servicios/error-interceptor.service.d.ts +0 -41
  505. package/src/app/core/servicios/guardias/auth.guard.d.ts +0 -17
  506. package/src/app/core/servicios/guardias/publico.guard.d.ts +0 -13
  507. package/src/app/core/servicios/interceptores/token-interceptor.service.d.ts +0 -21
  508. package/src/app/core/servicios/loading.service.d.ts +0 -22
  509. package/src/app/core/servicios/menu.service.d.ts +0 -35
  510. package/src/app/core/servicios/storage.service.d.ts +0 -37
  511. package/src/app/core/servicios/template.service.d.ts +0 -20
  512. package/src/app/core/servicios/toast.service.d.ts +0 -46
  513. package/src/app/core/servicios/utils.service.d.ts +0 -42
  514. package/src/app/core/sharedlib.module.d.ts +0 -6
  515. package/src/app/core/utilidades/color.util.d.ts +0 -70
  516. package/src/app/layout/app.breadcrumb.component.d.ts +0 -28
  517. package/src/app/layout/app.footer.component.d.ts +0 -8
  518. package/src/app/layout/app.layout.component.d.ts +0 -39
  519. package/src/app/layout/app.layout.module.d.ts +0 -6
  520. package/src/app/layout/app.menu.component.d.ts +0 -19
  521. package/src/app/layout/app.menu.service.d.ts +0 -12
  522. package/src/app/layout/app.menuitem.component.d.ts +0 -41
  523. package/src/app/layout/app.menuprofile.component.d.ts +0 -18
  524. package/src/app/layout/app.rightmenu.component.d.ts +0 -10
  525. package/src/app/layout/app.sidebar.component.d.ts +0 -34
  526. package/src/app/layout/app.topbar.component.d.ts +0 -79
  527. package/src/app/layout/service/app.layout.service.d.ts +0 -57
  528. package/src/app/publico/pages/login/login.page.d.ts +0 -40
  529. package/src/app/publico/pages/not-found/not-found.page.d.ts +0 -17
  530. package/src/app/publico/pages/seleccion-rol/seleccion-rol.component.d.ts +0 -41
  531. package/src/app/publico/pages/timeout/timeout.page.d.ts +0 -10
  532. package/src/app/seguridad/constantes/ConstantesGenerales.d.ts +0 -25
  533. package/src/app/seguridad/constantes/ReporteEntradaConstantes.d.ts +0 -7
  534. package/src/app/seguridad/modelos/AplicacionModel.d.ts +0 -7
  535. package/src/app/seguridad/modelos/ArchivoPortalModel.d.ts +0 -13
  536. package/src/app/seguridad/modelos/AtributoPuntoModel.d.ts +0 -8
  537. package/src/app/seguridad/modelos/AtributoSSOportalModel.d.ts +0 -16
  538. package/src/app/seguridad/modelos/CargueLineaModel.d.ts +0 -12
  539. package/src/app/seguridad/modelos/ColoresRGB.d.ts +0 -17
  540. package/src/app/seguridad/modelos/ColumnaFuenteModel.d.ts +0 -8
  541. package/src/app/seguridad/modelos/ComplementoModel.d.ts +0 -6
  542. package/src/app/seguridad/modelos/ComponentePaginaModel.d.ts +0 -20
  543. package/src/app/seguridad/modelos/ConexionModel.d.ts +0 -13
  544. package/src/app/seguridad/modelos/ControlFuncionModel.d.ts +0 -7
  545. package/src/app/seguridad/modelos/CorreoModel.d.ts +0 -31
  546. package/src/app/seguridad/modelos/CorreoWSModel.d.ts +0 -33
  547. package/src/app/seguridad/modelos/CruceRecursoPuntoModel.d.ts +0 -13
  548. package/src/app/seguridad/modelos/EmpresaModel.d.ts +0 -23
  549. package/src/app/seguridad/modelos/EmpresaSeguridadModel.d.ts +0 -18
  550. package/src/app/seguridad/modelos/EtiquetaModel.d.ts +0 -4
  551. package/src/app/seguridad/modelos/Etiquetas.d.ts +0 -10
  552. package/src/app/seguridad/modelos/FuenteCampoAtributoModel.d.ts +0 -15
  553. package/src/app/seguridad/modelos/FuenteDato.d.ts +0 -18
  554. package/src/app/seguridad/modelos/FuenteEntradaModel.d.ts +0 -8
  555. package/src/app/seguridad/modelos/FuenteLineaServicioModel.d.ts +0 -16
  556. package/src/app/seguridad/modelos/FuenteProcesoGeneralModel.d.ts +0 -10
  557. package/src/app/seguridad/modelos/FuncionalidadModel.d.ts +0 -8
  558. package/src/app/seguridad/modelos/GeneralModel.d.ts +0 -8
  559. package/src/app/seguridad/modelos/GrupoControlFuncionModel.d.ts +0 -9
  560. package/src/app/seguridad/modelos/GrupoFuenteModel.d.ts +0 -13
  561. package/src/app/seguridad/modelos/GrupoPermisoModel.d.ts +0 -13
  562. package/src/app/seguridad/modelos/ListaServicioModel.d.ts +0 -16
  563. package/src/app/seguridad/modelos/LlaveForaneaModel.d.ts +0 -6
  564. package/src/app/seguridad/modelos/LoginModel.d.ts +0 -17
  565. package/src/app/seguridad/modelos/MensajeSistemaModel.d.ts +0 -7
  566. package/src/app/seguridad/modelos/ModulosModel.d.ts +0 -14
  567. package/src/app/seguridad/modelos/PaginaPortalModel.d.ts +0 -19
  568. package/src/app/seguridad/modelos/ParametroComponenteModel.d.ts +0 -8
  569. package/src/app/seguridad/modelos/ParametrosGeneralModel.d.ts +0 -8
  570. package/src/app/seguridad/modelos/PermisoFuncionModel.d.ts +0 -8
  571. package/src/app/seguridad/modelos/PermisocontenidoModel.d.ts +0 -18
  572. package/src/app/seguridad/modelos/PreguntaSeguridadModel.d.ts +0 -6
  573. package/src/app/seguridad/modelos/PropiedadModel.d.ts +0 -9
  574. package/src/app/seguridad/modelos/PublicacionWebModel.d.ts +0 -25
  575. package/src/app/seguridad/modelos/PuntoProcesoModel.d.ts +0 -6
  576. package/src/app/seguridad/modelos/RecursoPunto.d.ts +0 -12
  577. package/src/app/seguridad/modelos/RecursoPuntoModel.d.ts +0 -12
  578. package/src/app/seguridad/modelos/ReporteBanda.d.ts +0 -7
  579. package/src/app/seguridad/modelos/ReporteColumna.d.ts +0 -32
  580. package/src/app/seguridad/modelos/ReporteColumnario.d.ts +0 -68
  581. package/src/app/seguridad/modelos/ReporteColumnarioMarcador.d.ts +0 -23
  582. package/src/app/seguridad/modelos/ReporteMarcador.d.ts +0 -39
  583. package/src/app/seguridad/modelos/ReporteSoporte.d.ts +0 -9
  584. package/src/app/seguridad/modelos/ReporteTabla.d.ts +0 -12
  585. package/src/app/seguridad/modelos/RespuestaModel.d.ts +0 -8
  586. package/src/app/seguridad/modelos/ServidorCorreoModel.d.ts +0 -25
  587. package/src/app/seguridad/modelos/SistemaMensajeModel.d.ts +0 -8
  588. package/src/app/seguridad/modelos/SitioPortalModel.d.ts +0 -24
  589. package/src/app/seguridad/modelos/TablaFromModel.d.ts +0 -4
  590. package/src/app/seguridad/modelos/TareasModel.d.ts +0 -49
  591. package/src/app/seguridad/modelos/TextoModel.d.ts +0 -8
  592. package/src/app/seguridad/modelos/TipoEtiqueta.d.ts +0 -7
  593. package/src/app/seguridad/modelos/UnionModel.d.ts +0 -11
  594. package/src/app/seguridad/modelos/UsuariogrupoModel.d.ts +0 -22
  595. package/src/app/seguridad/modelos/aplicacion-propiedad-model.d.ts +0 -13
  596. package/src/app/seguridad/modelos/contenidoCorreoModel.d.ts +0 -9
  597. package/src/app/shared/componentes/input-helper-seleccion-plantilla/input-helper-seleccion-plantilla.component.d.ts +0 -47
  598. package/src/app/shared/servicios/cargar-archivos.service.d.ts +0 -15
  599. package/src/app/shared/servicios/cargar-mapas.service.d.ts +0 -18
  600. package/src/app/shared/servicios/encriptado-basico.service.d.ts +0 -10
  601. package/src/app/shared/servicios/general.service.d.ts +0 -24
  602. package/src/app/shared/servicios/parametros-navegacion.service.d.ts +0 -9
  603. package/src/app/webcommon/pages/cargue-plantilla/cargue-plantilla-general/cargue-plantilla-general.component.d.ts +0 -78
  604. package/src/app/webcommon/pages/ejecucion-reporte/detalle-campo-reporte/detalle-campo-reporte.component.d.ts +0 -79
  605. package/src/app/webcommon/pages/ejecucion-reporte/detalle-distribucion-reporte/detalle-distribucion-reporte.component.d.ts +0 -29
  606. package/src/app/webcommon/pages/ejecucion-reporte/detalle-ejecucion-reporte/detalle-ejecucion-reporte.page.d.ts +0 -69
  607. package/src/app/webcommon/pages/ejecucion-reporte/detalle-entrada-reporte/detalle-entrada-reporte.component.d.ts +0 -51
  608. package/src/app/webcommon/pages/ejecucion-reporte/detalle-punto-proceso-reporte/detalle-punto-proceso-reporte.component.d.ts +0 -77
  609. package/src/app/webcommon/pages/ejecucion-reporte/detalle-tipo-reporte/detalle-tipo-reporte.component.d.ts +0 -275
  610. package/src/app/webcommon/pages/ejecucion-reporte/listado-ejecucion-reporte/listado-ejecucion-reporte.page.d.ts +0 -42
  611. package/src/app/webcommon/pages/ejecucion-reporte-externo/listado-ejecucion-reporte-externo/listado-ejecucion-reporte-externo.component.d.ts +0 -33
  612. package/src/app/webcommon/pages/fuente/importar-fuente-con/importar-fuente-con.component.d.ts +0 -143
  613. package/src/app/webcommon/pages/fuente/importar-fuente-general/importar-fuente-general.component.d.ts +0 -49
  614. package/src/app/webcommon/pages/fuente-reporte/fuente-reporte.component.d.ts +0 -128
  615. package/src/app/webcommon/pages/fuenteGeneral/fuente-general-servicio/fuente-general-servicio.component.d.ts +0 -64
  616. package/src/app/webcommon/pages/fuenteGeneral/listado-fuente-general/listado-fuente-general.page.d.ts +0 -33
  617. package/src/app/webcommon/pages/fuenteGeneral/mantenimiento-fuente-general/mantenimiento-fuente-general.page.d.ts +0 -149
  618. package/src/app/webcommon/pipes/dashboard.pipe.d.ts +0 -48
  619. package/src/app/webcommon/pipes/fuente.pipe.d.ts +0 -136
  620. package/src/app/webcommon/pipes/general.pipe.d.ts +0 -646
  621. package/src/app/webcommon/pipes/reporte-columnario.pipe.d.ts +0 -59
  622. package/src/app/webcommon/pipes/reporte-fuente.pipe.d.ts +0 -193
  623. package/src/app/webcommon/popups/popup-campos-fuente-general/popup-campos-fuente-general.component.d.ts +0 -59
  624. package/src/app/webcommon/popups/popup-convertir-plantillas/popup-convertir-plantillas.component.d.ts +0 -27
  625. package/src/app/webcommon/popups/popup-punto-proceso/popup-punto-proceso.component.d.ts +0 -64
  626. package/src/app/webcommon/popups/popup-recurso/popup-recurso.component.d.ts +0 -63
  627. package/src/app/webcommon/popups/popup-reporte/popup-reporte.component.d.ts +0 -97
  628. package/src/app/webcommon/popups/popup-sentencia/popup-sentencia.component.d.ts +0 -21
  629. package/src/app/webcommon/popups/popup-tablas-fuente/popup-tablas-fuente.component.d.ts +0 -42
  630. package/src/app/webcommon/popups/punto-proceso-comp/punto-proceso-comp.component.d.ts +0 -30
  631. package/src/app/webcommon/services/carguelinea.service.d.ts +0 -19
  632. package/src/app/webcommon/services/dashboard.service.d.ts +0 -27
  633. package/src/app/webcommon/services/ejecucionreporte.service.d.ts +0 -34
  634. package/src/app/webcommon/services/fechaUtils.service.d.ts +0 -29
  635. package/src/app/webcommon/services/fuentegeneral.service.d.ts +0 -24
  636. package/src/app/webcommon/services/homologacion.service.d.ts +0 -17
  637. package/src/app/webcommon/services/plantillas.service.d.ts +0 -26
  638. package/src/app/webcommon/services/reportes.service.d.ts +0 -35
  639. package/src/app/webcommon/webcommon.module.d.ts +0 -6
  640. package/src/environments/environment.d.ts +0 -7
@@ -1,509 +0,0 @@
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
- }
136
- }
137
- cargarMenu() {
138
- this.items = [
139
- {
140
- label: this.translateService.instant('ejecucion'),
141
- icon: 'glyphicons glyphicons-plus-sign',
142
- command: (event) => {
143
- this.vistaVisualizar = 'entrada';
144
- },
145
- },
146
- {
147
- label: this.translateService.instant('segundoplano'),
148
- icon: 'glyphicons glyphicons-file-minus',
149
- command: (event) => {
150
- this.vistaVisualizar = 'segundoplano';
151
- },
152
- visible: this.listaSegundoPlano.length > 0,
153
- }
154
- ];
155
- }
156
- async cargarGeneraciones() {
157
- this.generaciones = [];
158
- if (this.utilsService.isNotBlank(this.reporte.tituloParametro) && this.existeJasper) {
159
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_JASPERDINAMICO,
160
- label: this.reporteFuentePipe.DESC_GENERACION_JASPERDINAMICO });
161
- }
162
- if (this.utilsService.isNotBlank(this.reporte.jasperFijo) && this.utilsService.isNotBlank(this.reporte.modoFijo)) {
163
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_JASPERFIJO,
164
- label: this.reporteFuentePipe.DESC_GENERACION_JASPERFIJO });
165
- }
166
- if (this.utilsService.isNotBlank(this.reporte.archivoTodo) && this.utilsService.isNotBlank(this.reporte.hojaExcel)) {
167
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_EXCEL,
168
- label: this.reporteFuentePipe.DESC_GENERACION_EXCEL });
169
- }
170
- if (this.utilsService.isNotBlank(this.reporte.archivoIndividual) || this.reporte.unicoArchivo == 'N') {
171
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_PLANTILLA,
172
- label: this.reporteFuentePipe.DESC_GENERACION_PLANTILLA });
173
- }
174
- if (this.utilsService.isNotBlank(this.reporte.separador)) {
175
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_ARCHIVOPLANO,
176
- label: this.reporteFuentePipe.DESC_GENERACION_ARCHIVOPLANO });
177
- }
178
- if (this.utilsService.isNotBlank(this.reporte.nombreTabla)) {
179
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_TABLA,
180
- label: this.reporteFuentePipe.DESC_GENERACION_TABLA });
181
- }
182
- if (this.utilsService.isNotBlank(this.reporte.tagEncabezado) && this.utilsService.isNotBlank(this.reporte.estructuraRegistro)) {
183
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_XML,
184
- label: this.reporteFuentePipe.DESC_GENERACION_XML });
185
- }
186
- if (this.utilsService.isNotBlank(this.reporte.archivoExcelColumnario) && this.utilsService.isNotBlank(this.reporte.hojaExcelColumnario)) {
187
- this.generaciones.push({ value: this.reporteFuentePipe.GENERACION_COLUMNARIO,
188
- label: this.reporteFuentePipe.DESC_GENERACION_COLUMNARIO });
189
- }
190
- }
191
- async validarExisteJasper() {
192
- try {
193
- var data = await this.cargarArchivo.descargarArchivo(this.encriptadorArchivo.encriptar('reportes/' + this.reporte.llave + '.jrxml'), 'ruta_plantillas', this.aplicacion).toPromise();
194
- if (data) {
195
- this.existeJasper = true;
196
- }
197
- }
198
- catch (error) {
199
- this.existeJasper = false;
200
- }
201
- }
202
- cargarOperaciones() {
203
- this.bloquearCorreo = true;
204
- this.operaciones = [];
205
- if (this.tipoReporte) {
206
- if (this.tipoReporte != this.reporteFuentePipe.GENERACION_TABLA) {
207
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_DESCARGAR,
208
- label: this.reporteFuentePipe.DESC_OPERACION_DESCARGAR });
209
- if (this.validarControlFuncionalidad('reporte:enviocorreo')) {
210
- this.bloquearCorreo = false;
211
- }
212
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_ENVIARCORREO,
213
- label: this.reporteFuentePipe.DESC_OPERACION_ENVIARCORREO });
214
- if (this.reporteFuentePipe.MOMENTOS_SEGUNDO_PLANO == this.reporte.momento) {
215
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_SEGUNDOPLANO,
216
- label: this.reporteFuentePipe.DESC_OPERACION_SEGUNDOPLANO });
217
- }
218
- if ((this.tipoReporte == this.reporteFuentePipe.GENERACION_JASPERFIJO && this.reporte.modoFijo == 'P')
219
- || this.tipoReporte == this.reporteFuentePipe.GENERACION_PLANTILLA && this.reporte.descargarFuente != 'S') {
220
- if (this.reporte.archivoHtml && this.reporte.campoEmail) {
221
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_ENVIOMASIVO,
222
- label: this.reporteFuentePipe.DESC_OPERACION_ENVIOMASIVO });
223
- }
224
- if (this.reporte.publicacion && this.reporte.campoPublica) {
225
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_PUBLICAR,
226
- label: this.reporteFuentePipe.DESC_OPERACION_PUBLICAR });
227
- }
228
- if (this.reporte.archivoHtml && this.reporte.campoEmail && this.reporte.publicacion && this.reporte.campoPublica) {
229
- this.operaciones.push({ value: this.reporteFuentePipe.OPERACION_CORREOPUBLICAR,
230
- label: this.reporteFuentePipe.DESC_OPERACION_CORREOPUBLICAR });
231
- }
232
- }
233
- //pte proceso externo
234
- }
235
- }
236
- }
237
- cambioValorLista(event, parametro) {
238
- if (event.value) {
239
- let lista = event.value.split(':');
240
- if (parametro.unionDTO.tipoDato == 'N') {
241
- parametro.unionDTO.valor = parseInt(lista[0]);
242
- }
243
- else {
244
- parametro.unionDTO.valor = lista[0];
245
- }
246
- }
247
- }
248
- cambioSoporteBase(event) {
249
- if (this.soporteBase == null) {
250
- this.cargarOperaciones();
251
- return;
252
- }
253
- this.generalService.queryForObject(new GeneralModel('ReporteSoporteDTO', null, false, { llaveTabla: this.soporteBase })).subscribe(archivoBase => {
254
- if (archivoBase == null) {
255
- return;
256
- }
257
- this.soporteBase = archivoBase.llaveTabla;
258
- this.reporte.archivoIndividual = archivoBase.archivoIndividual;
259
- this.cargarOperaciones();
260
- });
261
- }
262
- cargarCorreo() {
263
- this.generalService.queryForObject(new GeneralModel('UsuarioDTO', null, true, { login: this.authService.getTokenKey('usuario') })).subscribe(data => {
264
- this.correo = data.email;
265
- });
266
- }
267
- cargarListaEntrada() {
268
- this.mostrarParametros = false;
269
- if (this.entradasPuntoProceso.length > 0) {
270
- this.parametros = this.entradasPuntoProceso;
271
- this.parametros.forEach(element => {
272
- if (element.unionDTO.solicitar == 'S') {
273
- this.mostrarParametros = true;
274
- }
275
- if (element.unionDTO.tipoDato == 'F' && element.unionDTO.valor != null) {
276
- element.unionDTO.valor = new Date(element.unionDTO.valor);
277
- }
278
- });
279
- }
280
- else {
281
- this.ejecucionReporteService.obtenerListaEntradaEjecucion(this.reporte).subscribe(data => {
282
- this.parametros = data;
283
- this.parametros.forEach(element => {
284
- if (element.unionDTO.solicitar == 'S') {
285
- this.mostrarParametros = true;
286
- }
287
- if (element.unionDTO.tipoDato == 'F' && element.unionDTO.valor != null) {
288
- element.unionDTO.valor = new Date(element.unionDTO.valor);
289
- }
290
- });
291
- });
292
- }
293
- }
294
- traerSegundoPlano() {
295
- let usuario = this.authService.getTokenKey('usuario');
296
- this.generalService.queryForList(new GeneralModel('EjecucionReporteDTO', null, false, {
297
- adicionado: usuario,
298
- reporteFuente: this.reporte.llave
299
- })).subscribe(data => {
300
- this.listaSegundoPlano = data;
301
- this.paginator.totalRecords = this.listaSegundoPlano.length;
302
- });
303
- }
304
- verSegundoPlano(event) {
305
- this.elementoBorrar = event.data;
306
- this.elementoBorrar.fechaAdicionado = this.elementoBorrar.fechaAdicionado ? new Date(this.elementoBorrar.fechaAdicionado) : null;
307
- this.elementoBorrar.inicia = this.elementoBorrar.inicia ? new Date(this.elementoBorrar.inicia) : null;
308
- this.elementoBorrar.termina = this.elementoBorrar.termina ? new Date(this.elementoBorrar.termina) : null;
309
- this.operacion = 'historico';
310
- this.panel = 'resultado';
311
- }
312
- eliminarSegundoPlano(event) {
313
- this.confirmationService.confirm({
314
- target: event.target,
315
- message: this.generalPipe.MENSAJE_ELIMINAR_CONFIRMAR,
316
- acceptLabel: this.generalPipe.SI_DESC,
317
- header: this.translateService.instant('confirmar'),
318
- accept: () => {
319
- this.ejecucionReporteService.eliminarEjecucionReporte(this.elementoBorrar).subscribe(data => {
320
- this.notificacionService.showInfo(this.generalPipe.MENSAJE_ELIMINAR);
321
- this.regresarSegundoPlano();
322
- this.traerSegundoPlano();
323
- });
324
- }
325
- });
326
- }
327
- descargarArchivo() {
328
- this.cargarArchivoService.descargarArchivo(this.encriptadoBasico.encriptar(this.elementoBorrar.archivo)).subscribe(blob => {
329
- const a = document.createElement('a');
330
- const objectUrl = URL.createObjectURL(blob);
331
- a.href = objectUrl;
332
- let partes = this.elementoBorrar.archivo.split(".");
333
- let extension = partes[partes.length - 1];
334
- a.download = this.utilsService.generarLlave() + '.' + extension;
335
- a.click();
336
- URL.revokeObjectURL(objectUrl);
337
- });
338
- }
339
- cambioTipoReporte(event) {
340
- this.mostrarQueDeseaHacer = true;
341
- if (this.tipoReporte == this.reporteFuentePipe.GENERACION_PLANTILLA && this.reporte.unicoArchivo == 'N') {
342
- this.mostrarArchivosSoporte = true;
343
- this.generalService.queryForList(new GeneralModel('ReporteSoporteDTO', null, false, {
344
- reporteFuente: this.reporte.llave,
345
- tipo: 'S'
346
- })).subscribe(data => {
347
- this.listadoArchivoSoporte = data;
348
- });
349
- }
350
- else {
351
- this.mostrarArchivosSoporte = false;
352
- this.listadoArchivoSoporte = [];
353
- this.tipoArchivo = null;
354
- this.operacion = null;
355
- this.cargarOperaciones();
356
- //this.descargarArchivo = null;
357
- }
358
- }
359
- cambioTipoArchivo(event) {
360
- this.cargarOperaciones();
361
- }
362
- regresarSegundoPlano() {
363
- this.elementoBorrar = {};
364
- this.panel = 'entrada';
365
- this.operacion = null;
366
- }
367
- ocultar() {
368
- this.tipoReporte = null;
369
- this.mostrar = false;
370
- this.regresar.emit(false);
371
- }
372
- validarControlFuncionalidad(valor) {
373
- return this.controlFuncionalidad.getControlFuncionalidad(valor);
374
- }
375
- sentencia() {
376
- this.mostrarPopupSentencia = true;
377
- }
378
- regresarSentencia(event) {
379
- this.mostrarPopupSentencia = false;
380
- }
381
- enviarSegundoPlano() {
382
- let listaEntrada = [];
383
- this.parametros.forEach(element => {
384
- listaEntrada.push(element.unionDTO);
385
- });
386
- this.ejecucionReporteService.enviarSegundoPlano({
387
- reporte: this.reporte,
388
- parametros: listaEntrada,
389
- tipoReporte: this.tipoReporte,
390
- operacion: this.operacion,
391
- correo: this.correo,
392
- }).subscribe(data => {
393
- this.notificacionService.showInfo(data.mensaje);
394
- });
395
- }
396
- descargarReporte() {
397
- if ('F' == this.tipoReporte) {
398
- this.reporte.tipoArchivo = this.tipoArchivo;
399
- }
400
- let listaEntrada = [];
401
- this.parametros.forEach(element => {
402
- listaEntrada.push(element.unionDTO);
403
- });
404
- this.ejecucionReporteService.descargarReporte({
405
- reporte: this.reporte,
406
- parametros: listaEntrada,
407
- tipoReporte: this.tipoReporte,
408
- operacion: this.operacion,
409
- correo: this.correo,
410
- endpointGeneradorReportes: ''
411
- }).subscribe({
412
- next: data => {
413
- console.log(data);
414
- this.notificacionService.showInfo(data.mensaje);
415
- if (!data.archivo) {
416
- return;
417
- }
418
- const decodedData = atob(data.archivo);
419
- const byteNumbers = new Array(decodedData.length);
420
- for (let i = 0; i < decodedData.length; i++) {
421
- byteNumbers[i] = decodedData.charCodeAt(i);
422
- }
423
- const byteArray = new Uint8Array(byteNumbers);
424
- // Crea un objeto Blob con los bytes decodificados y el tipo MIME del archivo
425
- const blob = new Blob([byteArray], { type: data.mime });
426
- // Crea una URL del objeto Blob
427
- const url = URL.createObjectURL(blob);
428
- // Crea un enlace de descarga y haz clic en él para iniciar la descarga
429
- const link = document.createElement('a');
430
- link.href = url;
431
- link.download = data.nombreArchivo + data.extension;
432
- document.body.appendChild(link);
433
- link.click();
434
- // Limpia la URL creada
435
- URL.revokeObjectURL(url);
436
- }
437
- });
438
- }
439
- descargarReporteSinHilo() {
440
- let listaEntrada = [];
441
- this.parametros.forEach(element => {
442
- listaEntrada.push(element.unionDTO);
443
- });
444
- this.ejecucionReporteService.descargarReporte({
445
- next: data => {
446
- this.notificacionService.showInfo(data.mensaje);
447
- const decodedData = atob(data.archivo);
448
- const byteNumbers = new Array(decodedData.length);
449
- for (let i = 0; i < decodedData.length; i++) {
450
- byteNumbers[i] = decodedData.charCodeAt(i);
451
- }
452
- const byteArray = new Uint8Array(byteNumbers);
453
- // Crea un objeto Blob con los bytes decodificados y el tipo MIME del archivo
454
- const blob = new Blob([byteArray], { type: data.mime });
455
- // Crea una URL del objeto Blob
456
- const url = URL.createObjectURL(blob);
457
- // Crea un enlace de descarga y haz clic en él para iniciar la descarga
458
- const link = document.createElement('a');
459
- link.href = url;
460
- link.download = data.nombreArchivo + '.' + data.extension;
461
- document.body.appendChild(link);
462
- link.click();
463
- // Limpia la URL creada
464
- URL.revokeObjectURL(url);
465
- },
466
- error: err => {
467
- this.notificacionService.showError(JSON.stringify(err.error.mensajeEtiqueta));
468
- }
469
- });
470
- }
471
- generarTabla() {
472
- this.panel = 'resultado';
473
- let listaEntrada = [];
474
- this.columnas = [];
475
- this.parametros.forEach(element => {
476
- listaEntrada.push(element.unionDTO);
477
- });
478
- this.ejecucionReporteService.generarTabla({ reporte: this.reporte, parametros: listaEntrada }).subscribe(data => {
479
- var columna;
480
- data.columnas.forEach(element => {
481
- columna = {
482
- field: element.nombre.toLowerCase(),
483
- header: element.nombre,
484
- width: 300,
485
- canOrder: true,
486
- };
487
- this.columnas.push(columna);
488
- });
489
- this.listaRegistro = data.listaRegistro;
490
- });
491
- }
492
- 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 });
493
- 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>\r\n<p-dialog id='popupReporte' header=\"{{'reportesgenerales' | translate}}\" [(visible)]=\"mostrar\" (onShow)=\"mostrarPopup()\"\r\n [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\" (onHide)=\"ocultar()\" [modal]=\"true\">\r\n\r\n <div *ngIf=\"panel == 'entrada'\">\r\n <!--Segundo plano-->\r\n <p-accordion [multiple]=\"true\">\r\n <p-accordionTab [selected]=\"true\" [header]=\"'segundoplano' | translate\" *ngIf=\"listaSegundoPlano.length > 0\">\r\n <p-table [value]=\"listaSegundoPlano\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\"\r\n [rows]=\"paginator.rows\" [totalRecords]=\"paginator.totalRecords\"\r\n [paginator]=\"paginator.totalRecords > paginator.rows\" (onRowSelect)=\"verSegundoPlano($event)\">\r\n <ng-template pTemplate=\"header\">\r\n\r\n <tr class=\"fondoTablaPincipal\">\r\n <th>{{'estado' | translate }} </th>\r\n <th>{{'fechainicial' | translate }} </th>\r\n </tr>\r\n <th>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-entrada>\r\n <tr [pSelectableRow]=\"entrada\">\r\n <td>{{entrada.nombreEstado}}</td>\r\n <td>{{entrada.inicia | date: 'dd/MM/yyyy h:mm a'}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </p-accordionTab>\r\n </p-accordion>\r\n <p-fieldset class=\"mt-0\" *ngIf=\"mostrarParametros\">\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>{{'entrada' | translate}}</span>\r\n </div>\r\n </ng-template>\r\n <p-table [value]=\"parametros\" >\r\n <ng-template pTemplate=\"body\" let-parametro>\r\n <tr [pSelectableRow]=\"parametro\">\r\n <!--<td>\r\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\r\n </td>-->\r\n <td *ngIf=\"parametro.unionDTO.solicitar == 'S'\">\r\n <p-floatLabel>\r\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"(parametro.unionDTO.tipoDato == 'T' || parametro.unionDTO.tipoDato == 'E') && parametro.unionDTO.tipo == 'D'\" />\r\n\r\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'U' && parametro.unionDTO.tipo == 'D'\" />\r\n\r\n\r\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'N' && parametro.unionDTO.tipo == 'D'\">\r\n </p-inputNumber>\r\n\r\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\" mode=\"decimal\" [minFractionDigits]=\"2\"\r\n [maxFractionDigits]=\"16\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'B' && parametro.unionDTO.tipo == 'D'\">\r\n </p-inputNumber>\r\n\r\n <p-dropdown [options]=\"parametro.lista\" [autoDisplayFirst]=\"false\" appendTo=\"body\"\r\n (onChange)=\"cambioValorLista($event, parametro)\" [(ngModel)]=\"parametro.unionDTO.llaveLista\"\r\n optionLabel=\"label\" optionValue=\"value\" *ngIf=\"parametro.unionDTO.tipo == 'L'\">\r\n </p-dropdown>\r\n\r\n <p-calendar type=\"text\" [(ngModel)]=\"parametro.unionDTO.valor\" dateFormat=\"dd/mm/yy\" appendTo=\"body\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'F' && parametro.unionDTO.tipo == 'D'\"></p-calendar>\r\n\r\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\r\n </p-floatLabel>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </p-fieldset>\r\n <p-fieldset class=\"mt-0\" *ngIf=\"generaciones.length > 0\">\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>{{'generar' | translate}}</span>\r\n </div>\r\n </ng-template>\r\n <div class=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of generaciones\">\r\n <div class=\"field-radiobutton\">\r\n <p-radioButton (onClick)=\"cambioTipoReporte($event)\" [inputId]=\"valor.value\" name=\"tipoReporte\"\r\n [value]=\"valor.value\" [(ngModel)]=\"tipoReporte\" />\r\n <label [for]=\"valor.value\" class=\"ml-2\">\r\n {{ valor.label }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n\r\n <p-fieldset class=\"mt-0\" *ngIf=\"'A' != tipoReporte && mostrarQueDeseaHacer\" >\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>\u00BFQu\u00E9 desea hacer?</span>\r\n </div>\r\n </ng-template>\r\n <label *ngIf=\"tipoReporte && 'F' == tipoReporte\">{{'seleccionetipoarchivodeseagenerar' | translate}}</label>\r\n\r\n <div *ngIf=\"tipoReporte && 'F' == tipoReporte\">\r\n <div class=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of mapaTipoArchivos\">\r\n <div class=\"field-radiobutton\">\r\n <p-radioButton (onClick)=\"cambioTipoArchivo($event)\" [inputId]=\"valor.codigo\" name=\"tipoArchivo\"\r\n [value]=\"valor.codigo\" [(ngModel)]=\"tipoArchivo\" />\r\n <label [for]=\"valor.codigo\" class=\"ml-2\">\r\n {{ valor.nombre }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"mostrarArchivosSoporte\">\r\n <div class=\"Detallereporte\">\r\n <div class=\"p-fluid p-formgrid grid\">\r\n <div class=\"field col-12 md:col-12\">\r\n <p-floatLabel>\r\n <p-dropdown [options]=\"listadoArchivoSoporte\" [autoDisplayFirst]=\"false\" optionLabel=\"descripcion\" appendTo=\"body\"\r\n optionValue=\"llaveTabla\" [(ngModel)]=\"soporteBase\" (onChange)=\"cambioSoporteBase($event)\"></p-dropdown>\r\n <label>Soporte Base:</label>\r\n </p-floatLabel>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"tipoReporte == 'F' && tipoArchivo || tipoReporte != 'F' \">\r\n <div class=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of operaciones\">\r\n <div class=\"field-radiobutton\">\r\n <p-radioButton [inputId]=\"valor.value\" name=\"operacion\" [value]=\"valor.value\"\r\n [(ngModel)]=\"operacion\" />\r\n <label [for]=\"valor.value\" class=\"ml-2\">\r\n {{ valor.label }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"operacion == 'E'\">\r\n <p-floatLabel>\r\n <input pInputText [(ngModel)]=\"correo\" type=\"text\" [disabled]=\"bloquearCorreo\" />\r\n <label>{{'correo' | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n </p-fieldset>\r\n \r\n\r\n <div class=\"flex justify-content-end\">\r\n <button pButton pRipple class=\"m-2 mt-4 p-button p-button-outlined background-100\"\r\n *ngIf=\"validarControlFuncionalidad('ejecrepo:sentencia')\" label=\"Ver sentencia\" icon=\"glyphicons glyphicons-eye-open\"\r\n (click)=\"sentencia()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'E'\" icon=\"glyphicons glyphicons-envelope\"\r\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento != 'D'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporte()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento == 'D'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporteSinHilo()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"tipoReporte == 'A'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"generarTabla()\"></button>\r\n <!--pte proceso externo-->\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'M' || operacion == 'MP'\" icon=\"glyphicons glyphicons-envelope\"\r\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'P'\" icon=\"glyphicons glyphicons-folder-open\"\r\n label=\"{{'link_publicar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion =='S'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'link_generar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"panel == 'resultado'\">\r\n <div *ngIf=\"operacion == 'historico'\">\r\n <div class=\"flex justify-content-between align-items-center mt-2 mb-2\">\r\n <h4 class=\"text-base mt-2 ml-2\">{{'detalle' | translate}} {{'segundoplano' | translate}}</h4>\r\n <button pButton pRipple icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 ml-4\"\r\n (click)=\"regresarSegundoPlano()\" label=\"{{'link_regresar' | translate}}\" >\r\n </button>\r\n </div>\r\n <div class=\" Inputgroup\">\r\n <div class=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid\">\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.inicia\" [disabled]=\"true\" appendTo=\"body\"\r\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\r\n <label>{{('fechainicial') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.termina\" [disabled]=\"true\" appendTo=\"body\"\r\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\r\n <label>{{('fechafinal') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <input pInputText type=\"text\" [readonly]=\"false\"\r\n [(ngModel)]=\"elementoBorrar.nombreEstado\" [disabled]=\"true\" />\r\n <label>{{('estado') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"elementoBorrar.estado == 'E'\">\r\n <label>{{('mensaje') | translate}}</label>\r\n <textarea class=\"min-w-full p-inputtextarea p-inputtext p-component p-element \"\r\n rows=\"5\" cols=\"30\" pInputTextarea [(ngModel)]=\"elementoBorrar.archivo\"\r\n [disabled]=\"true\"></textarea>\r\n </div>\r\n </div>\r\n <div class=\"flex justify-content-end\">\r\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\"\r\n *ngIf=\"elementoBorrar.estado == 'T'\" icon=\"pi pi-download\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarArchivo()\">\r\n </button>\r\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarSegundoPlano($event)\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"tipoReporte == 'A'\" >\r\n <p-table [value]=\"listaRegistro\" responsiveLayout=\"scroll\" [scrollable]=\"true\"\r\n [rows]=\"10\" [totalRecords]=\"listaRegistro.length\" [paginator]=\"listaRegistro.length > 10\" >\r\n <ng-template pTemplate=\"header\">\r\n <tr class=\"fondoTablaPincipal\">\r\n <th [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ col.header }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-entrada>\r\n <tr>\r\n <td [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ entrada[col.field] }}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <p class=\"p-3 font-medium emptymessage\">\r\n {{'mensajetablavacia' | translate}}\r\n </p>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n\r\n</p-dialog>\r\n<app-popup-sentencia [reporte]=\"reporte\" [parametros]=\"parametros\" [mostrarPopup]=\"mostrarPopupSentencia\"\r\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" }] });
494
- }
495
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: PopupReporteComponent, decorators: [{
496
- type: Component,
497
- 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>\r\n<p-dialog id='popupReporte' header=\"{{'reportesgenerales' | translate}}\" [(visible)]=\"mostrar\" (onShow)=\"mostrarPopup()\"\r\n [breakpoints]=\"{'960px': '75vw', '640px': '100vw'}\" [style]=\"{width: '50vw'}\" (onHide)=\"ocultar()\" [modal]=\"true\">\r\n\r\n <div *ngIf=\"panel == 'entrada'\">\r\n <!--Segundo plano-->\r\n <p-accordion [multiple]=\"true\">\r\n <p-accordionTab [selected]=\"true\" [header]=\"'segundoplano' | translate\" *ngIf=\"listaSegundoPlano.length > 0\">\r\n <p-table [value]=\"listaSegundoPlano\" responsiveLayout=\"scroll\" [scrollable]=\"true\" selectionMode=\"single\"\r\n [rows]=\"paginator.rows\" [totalRecords]=\"paginator.totalRecords\"\r\n [paginator]=\"paginator.totalRecords > paginator.rows\" (onRowSelect)=\"verSegundoPlano($event)\">\r\n <ng-template pTemplate=\"header\">\r\n\r\n <tr class=\"fondoTablaPincipal\">\r\n <th>{{'estado' | translate }} </th>\r\n <th>{{'fechainicial' | translate }} </th>\r\n </tr>\r\n <th>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-entrada>\r\n <tr [pSelectableRow]=\"entrada\">\r\n <td>{{entrada.nombreEstado}}</td>\r\n <td>{{entrada.inicia | date: 'dd/MM/yyyy h:mm a'}}</td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </p-accordionTab>\r\n </p-accordion>\r\n <p-fieldset class=\"mt-0\" *ngIf=\"mostrarParametros\">\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>{{'entrada' | translate}}</span>\r\n </div>\r\n </ng-template>\r\n <p-table [value]=\"parametros\" >\r\n <ng-template pTemplate=\"body\" let-parametro>\r\n <tr [pSelectableRow]=\"parametro\">\r\n <!--<td>\r\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\r\n </td>-->\r\n <td *ngIf=\"parametro.unionDTO.solicitar == 'S'\">\r\n <p-floatLabel>\r\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"(parametro.unionDTO.tipoDato == 'T' || parametro.unionDTO.tipoDato == 'E') && parametro.unionDTO.tipo == 'D'\" />\r\n\r\n <input pInputText [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'U' && parametro.unionDTO.tipo == 'D'\" />\r\n\r\n\r\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'N' && parametro.unionDTO.tipo == 'D'\">\r\n </p-inputNumber>\r\n\r\n <p-inputNumber [(ngModel)]=\"parametro.unionDTO.valor\" mode=\"decimal\" [minFractionDigits]=\"2\"\r\n [maxFractionDigits]=\"16\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'B' && parametro.unionDTO.tipo == 'D'\">\r\n </p-inputNumber>\r\n\r\n <p-dropdown [options]=\"parametro.lista\" [autoDisplayFirst]=\"false\" appendTo=\"body\"\r\n (onChange)=\"cambioValorLista($event, parametro)\" [(ngModel)]=\"parametro.unionDTO.llaveLista\"\r\n optionLabel=\"label\" optionValue=\"value\" *ngIf=\"parametro.unionDTO.tipo == 'L'\">\r\n </p-dropdown>\r\n\r\n <p-calendar type=\"text\" [(ngModel)]=\"parametro.unionDTO.valor\" dateFormat=\"dd/mm/yy\" appendTo=\"body\"\r\n *ngIf=\"parametro.unionDTO.tipoDato == 'F' && parametro.unionDTO.tipo == 'D'\"></p-calendar>\r\n\r\n <label *ngIf=\"parametro.unionDTO.solicitar == 'S'\">{{ parametro.unionDTO.descripcion }}</label>\r\n </p-floatLabel>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n </p-fieldset>\r\n <p-fieldset class=\"mt-0\" *ngIf=\"generaciones.length > 0\">\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>{{'generar' | translate}}</span>\r\n </div>\r\n </ng-template>\r\n <div class=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of generaciones\">\r\n <div class=\"field-radiobutton\">\r\n <p-radioButton (onClick)=\"cambioTipoReporte($event)\" [inputId]=\"valor.value\" name=\"tipoReporte\"\r\n [value]=\"valor.value\" [(ngModel)]=\"tipoReporte\" />\r\n <label [for]=\"valor.value\" class=\"ml-2\">\r\n {{ valor.label }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </p-fieldset>\r\n\r\n <p-fieldset class=\"mt-0\" *ngIf=\"'A' != tipoReporte && mostrarQueDeseaHacer\" >\r\n <ng-template pTemplate=\"header\">\r\n <div>\r\n <span class=\"glyphicons glyphicons-book\" style=\"color:var(--color-400)\"></span>\r\n <span>\u00BFQu\u00E9 desea hacer?</span>\r\n </div>\r\n </ng-template>\r\n <label *ngIf=\"tipoReporte && 'F' == tipoReporte\">{{'seleccionetipoarchivodeseagenerar' | translate}}</label>\r\n\r\n <div *ngIf=\"tipoReporte && 'F' == tipoReporte\">\r\n <div class=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of mapaTipoArchivos\">\r\n <div class=\"field-radiobutton\">\r\n <p-radioButton (onClick)=\"cambioTipoArchivo($event)\" [inputId]=\"valor.codigo\" name=\"tipoArchivo\"\r\n [value]=\"valor.codigo\" [(ngModel)]=\"tipoArchivo\" />\r\n <label [for]=\"valor.codigo\" class=\"ml-2\">\r\n {{ valor.nombre }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"mostrarArchivosSoporte\">\r\n <div class=\"Detallereporte\">\r\n <div class=\"p-fluid p-formgrid grid\">\r\n <div class=\"field col-12 md:col-12\">\r\n <p-floatLabel>\r\n <p-dropdown [options]=\"listadoArchivoSoporte\" [autoDisplayFirst]=\"false\" optionLabel=\"descripcion\" appendTo=\"body\"\r\n optionValue=\"llaveTabla\" [(ngModel)]=\"soporteBase\" (onChange)=\"cambioSoporteBase($event)\"></p-dropdown>\r\n <label>Soporte Base:</label>\r\n </p-floatLabel>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"tipoReporte == 'F' && tipoArchivo || tipoReporte != 'F' \">\r\n <div class=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid text-xs\">\r\n <div class=\"field col-12 md:col-6 lg:col-3 align-items-center mb-0\" *ngFor=\"let valor of operaciones\">\r\n <div class=\"field-radiobutton\">\r\n <p-radioButton [inputId]=\"valor.value\" name=\"operacion\" [value]=\"valor.value\"\r\n [(ngModel)]=\"operacion\" />\r\n <label [for]=\"valor.value\" class=\"ml-2\">\r\n {{ valor.label }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"operacion == 'E'\">\r\n <p-floatLabel>\r\n <input pInputText [(ngModel)]=\"correo\" type=\"text\" [disabled]=\"bloquearCorreo\" />\r\n <label>{{'correo' | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n </p-fieldset>\r\n \r\n\r\n <div class=\"flex justify-content-end\">\r\n <button pButton pRipple class=\"m-2 mt-4 p-button p-button-outlined background-100\"\r\n *ngIf=\"validarControlFuncionalidad('ejecrepo:sentencia')\" label=\"Ver sentencia\" icon=\"glyphicons glyphicons-eye-open\"\r\n (click)=\"sentencia()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'E'\" icon=\"glyphicons glyphicons-envelope\"\r\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento != 'D'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporte()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'D' && reporte.momento == 'D'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"descargarReporteSinHilo()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"tipoReporte == 'A'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'generar' | translate}}\" (click)=\"generarTabla()\"></button>\r\n <!--pte proceso externo-->\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'M' || operacion == 'MP'\" icon=\"glyphicons glyphicons-envelope\"\r\n label=\"{{'link_enviar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion == 'P'\" icon=\"glyphicons glyphicons-folder-open\"\r\n label=\"{{'link_publicar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n <button pButton pRipple class=\"m-2 mt-4 p-button-raised\" *ngIf=\"operacion =='S'\" icon=\"glyphicons glyphicons-check\"\r\n label=\"{{'link_generar' | translate}}\" (click)=\"enviarSegundoPlano()\"></button>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"panel == 'resultado'\">\r\n <div *ngIf=\"operacion == 'historico'\">\r\n <div class=\"flex justify-content-between align-items-center mt-2 mb-2\">\r\n <h4 class=\"text-base mt-2 ml-2\">{{'detalle' | translate}} {{'segundoplano' | translate}}</h4>\r\n <button pButton pRipple icon=\"pi pi-chevron-left\" class=\"p-button-text font-semibold flex-shrink-0 ml-4\"\r\n (click)=\"regresarSegundoPlano()\" label=\"{{'link_regresar' | translate}}\" >\r\n </button>\r\n </div>\r\n <div class=\" Inputgroup\">\r\n <div class=\"col-md-12\">\r\n <div class=\"p-fluid p-formgrid grid\">\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.inicia\" [disabled]=\"true\" appendTo=\"body\"\r\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\r\n <label>{{('fechainicial') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <p-calendar type=\"text\" [(ngModel)]=\"elementoBorrar.termina\" [disabled]=\"true\" appendTo=\"body\"\r\n [showTime]=\"true\" [showSeconds]=\"true\" dateFormat=\"dd/mm/yy\"></p-calendar>\r\n <label>{{('fechafinal') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-4 lg:col-4\">\r\n <p-floatLabel>\r\n <input pInputText type=\"text\" [readonly]=\"false\"\r\n [(ngModel)]=\"elementoBorrar.nombreEstado\" [disabled]=\"true\" />\r\n <label>{{('estado') | translate}}</label>\r\n </p-floatLabel>\r\n </div>\r\n\r\n <div class=\"field col-12 md:col-12 lg:col-12\" *ngIf=\"elementoBorrar.estado == 'E'\">\r\n <label>{{('mensaje') | translate}}</label>\r\n <textarea class=\"min-w-full p-inputtextarea p-inputtext p-component p-element \"\r\n rows=\"5\" cols=\"30\" pInputTextarea [(ngModel)]=\"elementoBorrar.archivo\"\r\n [disabled]=\"true\"></textarea>\r\n </div>\r\n </div>\r\n <div class=\"flex justify-content-end\">\r\n <button pButton pRipple class=\"ml-2 p-button p-button-raised\"\r\n *ngIf=\"elementoBorrar.estado == 'T'\" icon=\"pi pi-download\"\r\n label=\"{{'link_descargar' | translate}}\" (click)=\"descargarArchivo()\">\r\n </button>\r\n <button pButton pRipple class=\"ml-2 p-button-outlined\" icon=\"glyphicons glyphicons-bin\"\r\n label=\"{{'link_eliminar' | translate}}\" (click)=\"eliminarSegundoPlano($event)\">\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"tipoReporte == 'A'\" >\r\n <p-table [value]=\"listaRegistro\" responsiveLayout=\"scroll\" [scrollable]=\"true\"\r\n [rows]=\"10\" [totalRecords]=\"listaRegistro.length\" [paginator]=\"listaRegistro.length > 10\" >\r\n <ng-template pTemplate=\"header\">\r\n <tr class=\"fondoTablaPincipal\">\r\n <th [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ col.header }}</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-entrada>\r\n <tr>\r\n <td [style.width.px]=\"col.width || 200\" *ngFor=\"let col of columnas\">{{ entrada[col.field] }}</td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"emptymessage\">\r\n <p class=\"p-3 font-medium emptymessage\">\r\n {{'mensajetablavacia' | translate}}\r\n </p>\r\n </ng-template>\r\n </p-table>\r\n </div>\r\n </div>\r\n\r\n</p-dialog>\r\n<app-popup-sentencia [reporte]=\"reporte\" [parametros]=\"parametros\" [mostrarPopup]=\"mostrarPopupSentencia\"\r\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"] }]
498
- }], 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: [{
499
- type: Input
500
- }], aplicacion: [{
501
- type: Input
502
- }], reporte: [{
503
- type: Input
504
- }], entradasPuntoProceso: [{
505
- type: Input
506
- }], regresar: [{
507
- type: Output
508
- }] } });
509
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtcmVwb3J0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3dlYmNvbW1vbi9wb3B1cHMvcG9wdXAtcmVwb3J0ZS9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvd2ViY29tbW9uL3BvcHVwcy9wb3B1cC1yZXBvcnRlL3BvcHVwLXJlcG9ydGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBR3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUd2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQVksY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBUW5GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FB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QUFFLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxjQUNuUSxJQUFJLGFBQ0wsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7NGdCQU1sQyxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1csUUFBUTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlLCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEdlbmVyYWxQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvZ2VuZXJhbC5waXBlJztcclxuaW1wb3J0IHsgR2VuZXJhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljaW9zL2dlbmVyYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IEdlbmVyYWxNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3NlZ3VyaWRhZC9tb2RlbG9zL0dlbmVyYWxNb2RlbCc7XHJcbmltcG9ydCB7IENhcmdhckFyY2hpdm9zU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvY2FyZ2FyLWFyY2hpdm9zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbmNyaXB0YWRvQmFzaWNvU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNpb3MvZW5jcmlwdGFkby1iYXNpY28uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgUmVwb3J0ZUZ1ZW50ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9yZXBvcnRlLWZ1ZW50ZS5waXBlJztcclxuaW1wb3J0IHsgRWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lamVjdWNpb25yZXBvcnRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXBvcnRlRnVlbnRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9SZXBvcnRlRnVlbnRlTW9kZWwnO1xyXG5pbXBvcnQgeyBSZXBvcnRlRW50cmFkYU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc2VndXJpZGFkL21vZGVsb3MvUmVwb3J0ZUVudHJhZGFNb2RlbCc7XHJcbmltcG9ydCB7IFJlcG9ydGVTb3BvcnRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9zZWd1cmlkYWQvbW9kZWxvcy9SZXBvcnRlU29wb3J0ZSc7XHJcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbG9zL3RhYmxlLWNvbHVtbi5tb2RlbCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljaW9zL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlsc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy91dGlscy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJnYXJDb250cm9sRnVuY2lvbmFsaWRhZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2lvcy9jYXJnYXItY29udHJvbC1mdW5jaW9uYWxpZGFkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUgfSBmcm9tICdwcmltZW5nL2RpYWxvZyc7XHJcbmltcG9ydCB7IENvbmZpcm1Qb3B1cE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY29uZmlybXBvcHVwJztcclxuaW1wb3J0IHsgQWNjb3JkaW9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9hY2NvcmRpb24nO1xyXG5pbXBvcnQgeyBUYWJsZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRmllbGRzZXRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2ZpZWxkc2V0JztcclxuaW1wb3J0IHsgSW5wdXROdW1iZXJNb2R1bGUgfSBmcm9tICdwcmltZW5nL2lucHV0bnVtYmVyJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xyXG5pbXBvcnQgeyBEcm9wZG93bk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvZHJvcGRvd24nO1xyXG5pbXBvcnQgeyBDYWxlbmRhck1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBSYWRpb0J1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvcmFkaW9idXR0b24nO1xyXG5pbXBvcnQgeyBQb3B1cFNlbnRlbmNpYUNvbXBvbmVudCB9IGZyb20gJy4uL3BvcHVwLXNlbnRlbmNpYS9wb3B1cC1zZW50ZW5jaWEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZsb2F0TGFiZWxNb2R1bGUgfSBmcm9tICdwcmltZW5nL2Zsb2F0bGFiZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcG9wdXAtcmVwb3J0ZScsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRGlhbG9nTW9kdWxlLCBDb25maXJtUG9wdXBNb2R1bGUsIEFjY29yZGlvbk1vZHVsZSwgVGFibGVNb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgRGF0ZVBpcGUsIEZpZWxkc2V0TW9kdWxlLCBJbnB1dE51bWJlck1vZHVsZSwgSW5wdXRUZXh0TW9kdWxlLCBEcm9wZG93bk1vZHVsZSwgQ2FsZW5kYXJNb2R1bGUsIFJhZGlvQnV0dG9uTW9kdWxlLCBQb3B1cFNlbnRlbmNpYUNvbXBvbmVudCwgRm9ybXNNb2R1bGUsIEZsb2F0TGFiZWxNb2R1bGVdLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlLCBDb25maXJtYXRpb25TZXJ2aWNlXSxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wb3B1cC1yZXBvcnRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBvcHVwUmVwb3J0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBtb3N0cmFyID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGFwbGljYWNpb246IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgcmVwb3J0ZTogUmVwb3J0ZUZ1ZW50ZU1vZGVsID0gbmV3IFJlcG9ydGVGdWVudGVNb2RlbDtcclxuICBASW5wdXQoKSBwdWJsaWMgZW50cmFkYXNQdW50b1Byb2Nlc286IGFueVtdPVtdO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVncmVzYXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwdWJsaWMgcGFuZWw6IHN0cmluZyA9ICdlbnRyYWRhJztcclxuICBwdWJsaWMgb3BlcmFjaW9uOiBzdHJpbmc7XHJcbiAgcHVibGljIGxpc3RhRW50cmFkYTogUmVwb3J0ZUVudHJhZGFNb2RlbFtdID0gW107XHJcbiAgcHVibGljIGxpc3RhU2VndW5kb1BsYW5vOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBwYXJhbWV0cm9zOiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBlbGVtZW50b0JvcnJhcjogYW55ID0ge307XHJcbiAgcHVibGljIGdlbmVyYWNpb25lczogYW55W10gPSBbXTtcclxuICBwdWJsaWMgb3BlcmFjaW9uZXM6IGFueVtdID0gW107XHJcbiAgcHVibGljIG1vc3RyYXJPdHJhU2VsZWNjaW9uOiBib29sZWFuO1xyXG5cdHB1YmxpYyBtb3N0cmFyQXJjaGl2b3NTb3BvcnRlOiBib29sZWFuO1xyXG5cdHB1YmxpYyBtb3N0cmFyQ29uc3VsdGFDYXNvRXJyb3I6IGJvb2xlYW47XHJcbiAgcHVibGljIGNvcnJlbzogc3RyaW5nO1xyXG4gIHB1YmxpYyB0aXBvUmVwb3J0ZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBzb3BvcnRlQmFzZTogc3RyaW5nO1xyXG4gIHB1YmxpYyB0aXBvQXJjaGl2bzogc3RyaW5nO1xyXG4gIHB1YmxpYyBibG9xdWVhckNvcnJlbzogYm9vbGVhbjtcclxuICBwdWJsaWMgbWFwYVRpcG9BcmNoaXZvcztcclxuICBwdWJsaWMgbGlzdGFkb0FyY2hpdm9Tb3BvcnRlOiBSZXBvcnRlU29wb3J0ZU1vZGVsW10gPSBbXTtcclxuICBwdWJsaWMgbW9zdHJhclBvcHVwU2VudGVuY2lhOiBib29sZWFuO1xyXG5cclxuICBwdWJsaWMgaXRlbXM6IE1lbnVJdGVtW107XHJcbiAgcHVibGljIHZpc3RhVmlzdWFsaXphcjogc3RyaW5nO1xyXG4gIHBhZ2luYXRvcj17cm93czoyLHRvdGFsUmVjb3JkczowfVxyXG4gIHB1YmxpYyBtb3N0cmFyUGFyYW1ldHJvczogYm9vbGVhbjtcclxuXHRwdWJsaWMgbW9zdHJhclF1ZURlc2VhSGFjZXI6IGJvb2xlYW47XHJcblxyXG4gIHB1YmxpYyBjb2x1bW5hczogVGFibGVDb2x1bW5bXSA9IFtdO1xyXG4gIHB1YmxpYyBsaXN0YVJlZ2lzdHJvOiBhbnlbXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgZXhpc3RlSmFzcGVyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZ2VuZXJhbFNlcnZpY2U6IEdlbmVyYWxTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2U6IEVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIG5vdGlmaWNhY2lvblNlcnZpY2U6IFRvYXN0U2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBjYXJnYXJBcmNoaXZvU2VydmljZTogQ2FyZ2FyQXJjaGl2b3NTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHB1YmxpYyB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNvbnRyb2xGdW5jaW9uYWxpZGFkOiBDYXJnYXJDb250cm9sRnVuY2lvbmFsaWRhZFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBlbmNyaXB0YWRvQmFzaWNvOiBFbmNyaXB0YWRvQmFzaWNvU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIHJlcG9ydGVGdWVudGVQaXBlOiBSZXBvcnRlRnVlbnRlUGlwZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGdlbmVyYWxQaXBlOiBHZW5lcmFsUGlwZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGNhcmdhckFyY2hpdm86IENhcmdhckFyY2hpdm9zU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGVuY3JpcHRhZG9yQXJjaGl2bzogRW5jcmlwdGFkb0Jhc2ljb1NlcnZpY2UsKSB7IH0gICAgICAgICBcclxuICBcclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMubWFwYVRpcG9BcmNoaXZvcyA9IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuTUFQQV9USVBPX0FSQ0hJVk9TOyAgXHJcbiAgICB0aGlzLmFwbGljYWNpb24gPSB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCdhcGxpY2FjaW9uJylcclxuICB9XHJcblxyXG4gIGFzeW5jIG1vc3RyYXJQb3B1cCgpe1xyXG4gICAgdGhpcy5wYW5lbCA9ICdlbnRyYWRhJztcclxuICAgIHRoaXMubW9zdHJhclF1ZURlc2VhSGFjZXIgPSBmYWxzZTtcclxuICAgIHRoaXMudGlwb1JlcG9ydGUgPSBudWxsO1xyXG4gICAgdGhpcy5tb3N0cmFyQ29uc3VsdGFDYXNvRXJyb3IgPSB0aGlzLnZhbGlkYXJDb250cm9sRnVuY2lvbmFsaWRhZCgncmVwb3J0ZTp2ZXJzZW50ZW5jaWFlcnJvcicpO1xyXG4gICAgdGhpcy5vcGVyYWNpb24gPSBudWxsO1xyXG4gICAgdGhpcy5lbGVtZW50b0JvcnJhciA9IHt9XHJcbiAgICB0aGlzLmxpc3RhU2VndW5kb1BsYW5vID0gW11cclxuICAgIHRoaXMubGlzdGFSZWdpc3RybyA9IFtdO1xyXG4gICAgdGhpcy5jb2x1bW5hcyA9IFtdO1xyXG4gICAgdGhpcy5leGlzdGVKYXNwZXIgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLnJlcG9ydGUubGxhdmUpIHtcclxuICAgICAgdmFyIHJlc3VsdGFkbyA9IGF3YWl0IHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZ2V0RGF0b3NFamVjdWNpb25SZXBvcnRlKHtsbGF2ZTogdGhpcy5yZXBvcnRlLmxsYXZlfSkudG9Qcm9taXNlKCk7XHJcbiAgICAgIHRoaXMucmVwb3J0ZSA9IHJlc3VsdGFkby5yZXBvcnRlO1xyXG4gICAgICBkZWxldGUgdGhpcy5yZXBvcnRlWydhbGlhcyddXHJcbiAgICAgIHRoaXMuY2FyZ2FyTGlzdGFFbnRyYWRhKCk7XHJcbiAgICAgIHRoaXMudHJhZXJTZWd1bmRvUGxhbm8oKTtcclxuICAgICAgdGhpcy5jYXJnYXJDb3JyZW8oKTtcclxuICAgICAgYXdhaXQgdGhpcy52YWxpZGFyRXhpc3RlSmFzcGVyKCk7XHJcbiAgICAgIGF3YWl0IHRoaXMuY2FyZ2FyR2VuZXJhY2lvbmVzKCk7XHJcbiAgICAgIHRoaXMuY2FyZ2FyT3BlcmFjaW9uZXMoKTtcclxuICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYXJnYXJNZW51KCl7XHJcbiAgICB0aGlzLml0ZW1zID0gW1xyXG4gICAgICBcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZWplY3VjaW9uJyksXHJcbiAgICAgICAgaWNvbjogJ2dseXBoaWNvbnMgZ2x5cGhpY29ucy1wbHVzLXNpZ24nLFxyXG4gICAgICAgIGNvbW1hbmQ6IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy52aXN0YVZpc3VhbGl6YXIgPSAnZW50cmFkYSc7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnc2VndW5kb3BsYW5vJyksXHJcbiAgICAgICAgaWNvbjogJ2dseXBoaWNvbnMgZ2x5cGhpY29ucy1maWxlLW1pbnVzJyxcclxuICAgICAgICBjb21tYW5kOiAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIHRoaXMudmlzdGFWaXN1YWxpemFyID0gJ3NlZ3VuZG9wbGFubyc7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB2aXNpYmxlOiB0aGlzLmxpc3RhU2VndW5kb1BsYW5vLmxlbmd0aCA+IDAsXHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9XHJcblxyXG4gIGFzeW5jIGNhcmdhckdlbmVyYWNpb25lcygpe1xyXG4gICAgdGhpcy5nZW5lcmFjaW9uZXMgPSBbXTtcclxuICAgIGlmICggdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUudGl0dWxvUGFyYW1ldHJvKSAmJiB0aGlzLmV4aXN0ZUphc3Blcil7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fSkFTUEVSRElOQU1JQ08sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fSkFTUEVSRElOQU1JQ099KVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmphc3BlckZpam8pICYmIHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLm1vZG9GaWpvKSl7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fSkFTUEVSRklKTywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9KQVNQRVJGSUpPfSlcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnV0aWxzU2VydmljZS5pc05vdEJsYW5rKHRoaXMucmVwb3J0ZS5hcmNoaXZvVG9kbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuaG9qYUV4Y2VsKSl7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fRVhDRUwsIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fRVhDRUx9KVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudXRpbHNTZXJ2aWNlLmlzTm90QmxhbmsodGhpcy5yZXBvcnRlLmFyY2hpdm9JbmRpdmlkdWFsKSB8fCB0aGlzLnJlcG9ydGUudW5pY29BcmNoaXZvID09ICdOJyl7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fUExBTlRJTExBLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX1BMQU5USUxMQX0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuc2VwYXJhZG9yKSl7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fQVJDSElWT1BMQU5PLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX0FSQ0hJVk9QTEFOT30pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUubm9tYnJlVGFibGEpKXtcclxuICAgICAgdGhpcy5nZW5lcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9UQUJMQSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfR0VORVJBQ0lPTl9UQUJMQX0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUudGFnRW5jYWJlemFkbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuZXN0cnVjdHVyYVJlZ2lzdHJvKSl7XHJcbiAgICAgIHRoaXMuZ2VuZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fWE1MLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19HRU5FUkFDSU9OX1hNTH0pXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuYXJjaGl2b0V4Y2VsQ29sdW1uYXJpbykgJiYgdGhpcy51dGlsc1NlcnZpY2UuaXNOb3RCbGFuayh0aGlzLnJlcG9ydGUuaG9qYUV4Y2VsQ29sdW1uYXJpbykpe1xyXG4gICAgICB0aGlzLmdlbmVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5HRU5FUkFDSU9OX0NPTFVNTkFSSU8sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX0dFTkVSQUNJT05fQ09MVU1OQVJJT30pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyB2YWxpZGFyRXhpc3RlSmFzcGVyKCl7XHJcbiAgICB0cnkge1xyXG4gICAgICB2YXIgZGF0YSA9IGF3YWl0IHRoaXMuY2FyZ2FyQXJjaGl2by5kZXNjYXJnYXJBcmNoaXZvKHRoaXMuZW5jcmlwdGFkb3JBcmNoaXZvLmVuY3JpcHRhcigncmVwb3J0ZXMvJyArIHRoaXMucmVwb3J0ZS5sbGF2ZSArICcuanJ4bWwnKSwgJ3J1dGFfcGxhbnRpbGxhcycsIHRoaXMuYXBsaWNhY2lvbikudG9Qcm9taXNlKCk7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5leGlzdGVKYXNwZXIgPSB0cnVlO1xyXG4gICAgICB9ICAgXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aGlzLmV4aXN0ZUphc3BlciA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2FyZ2FyT3BlcmFjaW9uZXMoKXtcclxuICAgIHRoaXMuYmxvcXVlYXJDb3JyZW8gPSB0cnVlO1xyXG4gICAgdGhpcy5vcGVyYWNpb25lcyA9IFtdO1xyXG4gICAgaWYgKHRoaXMudGlwb1JlcG9ydGUpe1xyXG4gICAgICBpZiAodGhpcy50aXBvUmVwb3J0ZSAhPSB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fVEFCTEEpIHtcclxuICAgICAgICB0aGlzLm9wZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk9QRVJBQ0lPTl9ERVNDQVJHQVIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9ERVNDQVJHQVJ9KTtcclxuICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhckNvbnRyb2xGdW5jaW9uYWxpZGFkKCdyZXBvcnRlOmVudmlvY29ycmVvJykpe1xyXG4gICAgICAgICAgdGhpcy5ibG9xdWVhckNvcnJlbyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm9wZXJhY2lvbmVzLnB1c2goe3ZhbHVlOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk9QRVJBQ0lPTl9FTlZJQVJDT1JSRU8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX0VOVklBUkNPUlJFT30pO1xyXG4gICAgICAgIGlmICh0aGlzLnJlcG9ydGVGdWVudGVQaXBlLk1PTUVOVE9TX1NFR1VORE9fUExBTk8gPT0gdGhpcy5yZXBvcnRlLm1vbWVudG8pIHtcclxuICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX1NFR1VORE9QTEFOTyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5ERVNDX09QRVJBQ0lPTl9TRUdVTkRPUExBTk99KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCh0aGlzLnRpcG9SZXBvcnRlID09IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9KQVNQRVJGSUpPICYmIHRoaXMucmVwb3J0ZS5tb2RvRmlqbyA9PSAnUCcpXHJcbiAgICAgICAgICB8fCB0aGlzLnRpcG9SZXBvcnRlID09IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuR0VORVJBQ0lPTl9QTEFOVElMTEEgJiYgdGhpcy5yZXBvcnRlLmRlc2NhcmdhckZ1ZW50ZSAhPSAnUycpe1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBvcnRlLmFyY2hpdm9IdG1sICYmIHRoaXMucmVwb3J0ZS5jYW1wb0VtYWlsKXtcclxuICAgICAgICAgICAgdGhpcy5vcGVyYWNpb25lcy5wdXNoKHt2YWx1ZTogdGhpcy5yZXBvcnRlRnVlbnRlUGlwZS5PUEVSQUNJT05fRU5WSU9NQVNJVk8sXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuREVTQ19PUEVSQUNJT05fRU5WSU9NQVNJVk99KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0aGlzLnJlcG9ydGUucHVibGljYWNpb24gJiYgdGhpcy5yZXBvcnRlLmNhbXBvUHVibGljYSl7XHJcbiAgICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX1BVQkxJQ0FSLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX1BVQkxJQ0FSfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5yZXBvcnRlLmFyY2hpdm9IdG1sICYmIHRoaXMucmVwb3J0ZS5jYW1wb0VtYWlsICYmIHRoaXMucmVwb3J0ZS5wdWJsaWNhY2lvbiAmJiB0aGlzLnJlcG9ydGUuY2FtcG9QdWJsaWNhICl7XHJcbiAgICAgICAgICAgIHRoaXMub3BlcmFjaW9uZXMucHVzaCh7dmFsdWU6IHRoaXMucmVwb3J0ZUZ1ZW50ZVBpcGUuT1BFUkFDSU9OX0NPUlJFT1BVQkxJQ0FSLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkRFU0NfT1BFUkFDSU9OX0NPUlJFT1BVQkxJQ0FSfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vcHRlIHByb2Nlc28gZXh0ZXJub1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjYW1iaW9WYWxvckxpc3RhKGV2ZW50LCBwYXJhbWV0cm8pe1xyXG4gICAgaWYgKGV2ZW50LnZhbHVlKXtcclxuICAgICAgbGV0IGxpc3RhID0gZXZlbnQudmFsdWUuc3BsaXQoJzonKVxyXG4gICAgICBpZiAocGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdOJyl7XHJcbiAgICAgICAgcGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yID0gcGFyc2VJbnQobGlzdGFbMF0pXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yID0gbGlzdGFbMF1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBjYW1iaW9Tb3BvcnRlQmFzZShldmVudCkge1xyXG4gICAgaWYgKHRoaXMuc29wb3J0ZUJhc2UgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmNhcmdhck9wZXJhY2lvbmVzKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gXHJcbiAgICB0aGlzLmdlbmVyYWxTZXJ2aWNlLnF1ZXJ5Rm9yT2JqZWN0KG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVTb3BvcnRlRFRPJywgbnVsbCwgZmFsc2UsIHtsbGF2ZVRhYmxhOiB0aGlzLnNvcG9ydGVCYXNlfSkpLnN1YnNjcmliZShhcmNoaXZvQmFzZSA9PiB7XHJcbiAgICAgIGlmIChhcmNoaXZvQmFzZSA9PSBudWxsKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuc29wb3J0ZUJhc2UgPSBhcmNoaXZvQmFzZS5sbGF2ZVRhYmxhO1xyXG5cdFx0XHR0aGlzLnJlcG9ydGUuYXJjaGl2b0luZGl2aWR1YWwgPSBhcmNoaXZvQmFzZS5hcmNoaXZvSW5kaXZpZHVhbDtcclxuXHRcdFx0dGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xyXG4gICAgfSk7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIGNhcmdhckNvcnJlbygpe1xyXG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvck9iamVjdChuZXcgR2VuZXJhbE1vZGVsKCdVc3VhcmlvRFRPJywgbnVsbCwgdHJ1ZSwge2xvZ2luOiB0aGlzLmF1dGhTZXJ2aWNlLmdldFRva2VuS2V5KCd1c3VhcmlvJyl9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmNvcnJlbyA9IGRhdGEuZW1haWw7XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2FyZ2FyTGlzdGFFbnRyYWRhKCl7XHJcbiAgICB0aGlzLm1vc3RyYXJQYXJhbWV0cm9zID0gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5lbnRyYWRhc1B1bnRvUHJvY2Vzby5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5wYXJhbWV0cm9zID0gdGhpcy5lbnRyYWRhc1B1bnRvUHJvY2VzbzsgIFxyXG4gICAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudC51bmlvbkRUTy5zb2xpY2l0YXIgPT0gJ1MnKXtcclxuICAgICAgICAgIHRoaXMubW9zdHJhclBhcmFtZXRyb3MgPSAgdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudW5pb25EVE8udGlwb0RhdG8gPT0gJ0YnICYmIGVsZW1lbnQudW5pb25EVE8udmFsb3IgIT0gbnVsbCl7XHJcbiAgICAgICAgICBlbGVtZW50LnVuaW9uRFRPLnZhbG9yID0gbmV3IERhdGUoZWxlbWVudC51bmlvbkRUTy52YWxvcilcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLm9idGVuZXJMaXN0YUVudHJhZGFFamVjdWNpb24odGhpcy5yZXBvcnRlKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYXJhbWV0cm9zID0gZGF0YTtcclxuICAgICAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIGlmIChlbGVtZW50LnVuaW9uRFRPLnNvbGljaXRhciA9PSAnUycpe1xyXG4gICAgICAgICAgICB0aGlzLm1vc3RyYXJQYXJhbWV0cm9zID0gIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC51bmlvbkRUTy50aXBvRGF0byA9PSAnRicgJiYgZWxlbWVudC51bmlvbkRUTy52YWxvciAhPSBudWxsKXtcclxuICAgICAgICAgICAgZWxlbWVudC51bmlvbkRUTy52YWxvciA9IG5ldyBEYXRlKGVsZW1lbnQudW5pb25EVE8udmFsb3IpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyYWVyU2VndW5kb1BsYW5vKCl7XHJcbiAgICBsZXQgdXN1YXJpbyA9IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VG9rZW5LZXkoJ3VzdWFyaW8nKVxyXG4gICAgdGhpcy5nZW5lcmFsU2VydmljZS5xdWVyeUZvckxpc3QobmV3IEdlbmVyYWxNb2RlbCgnRWplY3VjaW9uUmVwb3J0ZURUTycsIG51bGwsIGZhbHNlLCB7XHJcbiAgICAgIGFkaWNpb25hZG86IHVzdWFyaW8sIFxyXG4gICAgICByZXBvcnRlRnVlbnRlOiB0aGlzLnJlcG9ydGUubGxhdmV9KSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICAgIHRoaXMubGlzdGFTZWd1bmRvUGxhbm8gPSBkYXRhO1xyXG4gICAgICAgIHRoaXMucGFnaW5hdG9yLnRvdGFsUmVjb3JkcyA9IHRoaXMubGlzdGFTZWd1bmRvUGxhbm8ubGVuZ3RoO1xyXG4gICAgICB9KVxyXG4gIH1cclxuICBcclxuICB2ZXJTZWd1bmRvUGxhbm8oZXZlbnQpe1xyXG4gICAgdGhpcy5lbGVtZW50b0JvcnJhciA9IGV2ZW50LmRhdGE7XHJcbiAgICB0aGlzLmVsZW1lbnRvQm9ycmFyLmZlY2hhQWRpY2lvbmFkbyA9IHRoaXMuZWxlbWVudG9Cb3JyYXIuZmVjaGFBZGljaW9uYWRvID8gbmV3IERhdGUodGhpcy5lbGVtZW50b0JvcnJhci5mZWNoYUFkaWNpb25hZG8pIDogbnVsbFxyXG4gICAgdGhpcy5lbGVtZW50b0JvcnJhci5pbmljaWEgPSB0aGlzLmVsZW1lbnRvQm9ycmFyLmluaWNpYSA/IG5ldyBEYXRlKHRoaXMuZWxlbWVudG9Cb3JyYXIuaW5pY2lhKSA6IG51bGxcclxuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIudGVybWluYSA9IHRoaXMuZWxlbWVudG9Cb3JyYXIudGVybWluYSA/IG5ldyBEYXRlKHRoaXMuZWxlbWVudG9Cb3JyYXIudGVybWluYSkgOiBudWxsXHJcbiAgICB0aGlzLm9wZXJhY2lvbiA9ICdoaXN0b3JpY28nXHJcbiAgICB0aGlzLnBhbmVsID0gJ3Jlc3VsdGFkbydcclxuICB9XHJcblxyXG4gIGVsaW1pbmFyU2VndW5kb1BsYW5vKGV2ZW50KXtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuICAgICAgdGFyZ2V0OiBldmVudC50YXJnZXQsXHJcbiAgICAgIG1lc3NhZ2U6ICB0aGlzLmdlbmVyYWxQaXBlLk1FTlNBSkVfRUxJTUlOQVJfQ09ORklSTUFSLFxyXG4gICAgICBhY2NlcHRMYWJlbDogdGhpcy5nZW5lcmFsUGlwZS5TSV9ERVNDLFxyXG4gICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdjb25maXJtYXInKSxcclxuICAgICAgYWNjZXB0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5lbGltaW5hckVqZWN1Y2lvblJlcG9ydGUodGhpcy5lbGVtZW50b0JvcnJhcikuc3Vic2NyaWJlKGRhdGEgPT57XHJcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhY2lvblNlcnZpY2Uuc2hvd0luZm8odGhpcy5nZW5lcmFsUGlwZS5NRU5TQUpFX0VMSU1JTkFSKVxyXG4gICAgICAgICAgdGhpcy5yZWdyZXNhclNlZ3VuZG9QbGFubygpO1xyXG4gICAgICAgICAgdGhpcy50cmFlclNlZ3VuZG9QbGFubygpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBkZXNjYXJnYXJBcmNoaXZvKCl7XHJcbiAgICB0aGlzLmNhcmdhckFyY2hpdm9TZXJ2aWNlLmRlc2NhcmdhckFyY2hpdm8odGhpcy5lbmNyaXB0YWRvQmFzaWNvLmVuY3JpcHRhcih0aGlzLmVsZW1lbnRvQm9ycmFyLmFyY2hpdm8pKS5zdWJzY3JpYmUoYmxvYiA9PiB7XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpXHJcbiAgICAgIGNvbnN0IG9iamVjdFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYilcclxuICAgICAgYS5ocmVmID0gb2JqZWN0VXJsXHJcbiAgICAgIGxldCBwYXJ0ZXMgPSB0aGlzLmVsZW1lbnRvQm9ycmFyLmFyY2hpdm8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICBsZXQgZXh0ZW5zaW9uID0gcGFydGVzW3BhcnRlcy5sZW5ndGggLSAxXTtcclxuICAgICAgYS5kb3dubG9hZCA9IHRoaXMudXRpbHNTZXJ2aWNlLmdlbmVyYXJMbGF2ZSgpICsgJy4nICsgZXh0ZW5zaW9uO1xyXG4gICAgICBhLmNsaWNrKCk7XHJcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2FtYmlvVGlwb1JlcG9ydGUoZXZlbnQpe1xyXG4gICAgdGhpcy5tb3N0cmFyUXVlRGVzZWFIYWNlciA9IHRydWU7XHJcbiAgICBpZiAodGhpcy50aXBvUmVwb3J0ZSA9PSB0aGlzLnJlcG9ydGVGdWVudGVQaXBlLkdFTkVSQUNJT05fUExBTlRJTExBICYmIHRoaXMucmVwb3J0ZS51bmljb0FyY2hpdm8gPT0gJ04nICl7XHJcbiAgICAgIHRoaXMubW9zdHJhckFyY2hpdm9zU29wb3J0ZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZ2VuZXJhbFNlcnZpY2UucXVlcnlGb3JMaXN0KG5ldyBHZW5lcmFsTW9kZWwoJ1JlcG9ydGVTb3BvcnRlRFRPJywgbnVsbCwgZmFsc2UsIHtcclxuICAgICAgICByZXBvcnRlRnVlbnRlOiB0aGlzLnJlcG9ydGUubGxhdmUsXHJcbiAgICAgICAgdGlwbzonUydcclxuICAgICAgfSkpLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICB0aGlzLmxpc3RhZG9BcmNoaXZvU29wb3J0ZSA9IGRhdGE7XHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubW9zdHJhckFyY2hpdm9zU29wb3J0ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubGlzdGFkb0FyY2hpdm9Tb3BvcnRlID0gW107XHJcbiAgICAgICAgdGhpcy50aXBvQXJjaGl2byA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5vcGVyYWNpb24gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY2FyZ2FyT3BlcmFjaW9uZXMoKTtcclxuICAgICAgICAvL3RoaXMuZGVzY2FyZ2FyQXJjaGl2byA9IG51bGw7XHJcbiAgICB9IFxyXG4gIH1cclxuXHJcbiAgY2FtYmlvVGlwb0FyY2hpdm8oZXZlbnQpe1xyXG4gICAgdGhpcy5jYXJnYXJPcGVyYWNpb25lcygpO1xyXG4gIH1cclxuXHJcbiAgcmVncmVzYXJTZWd1bmRvUGxhbm8oKXtcclxuICAgIHRoaXMuZWxlbWVudG9Cb3JyYXIgPSB7fVxyXG4gICAgdGhpcy5wYW5lbCA9ICdlbnRyYWRhJ1xyXG4gICAgdGhpcy5vcGVyYWNpb24gPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgb2N1bHRhcigpe1xyXG4gICAgdGhpcy50aXBvUmVwb3J0ZSA9IG51bGw7XHJcbiAgICB0aGlzLm1vc3RyYXIgPSBmYWxzZTtcclxuICAgIHRoaXMucmVncmVzYXIuZW1pdChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQodmFsb3I6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29udHJvbEZ1bmNpb25hbGlkYWQuZ2V0Q29udHJvbEZ1bmNpb25hbGlkYWQodmFsb3IpO1xyXG4gIH1cclxuXHJcbiAgc2VudGVuY2lhKCl7XHJcbiAgICB0aGlzLm1vc3RyYXJQb3B1cFNlbnRlbmNpYSA9IHRydWVcclxuICB9XHJcblxyXG4gIHJlZ3Jlc2FyU2VudGVuY2lhKGV2ZW50KXtcclxuICAgIHRoaXMubW9zdHJhclBvcHVwU2VudGVuY2lhID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBlbnZpYXJTZWd1bmRvUGxhbm8oKXtcclxuICAgIGxldCBsaXN0YUVudHJhZGEgPSBbXVxyXG4gICAgdGhpcy5wYXJhbWV0cm9zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGxpc3RhRW50cmFkYS5wdXNoKGVsZW1lbnQudW5pb25EVE8pXHJcbiAgICB9KVxyXG4gICAgdGhpcy5lamVjdWNpb25SZXBvcnRlU2VydmljZS5lbnZpYXJTZWd1bmRvUGxhbm8oe1xyXG4gICAgICByZXBvcnRlOiB0aGlzLnJlcG9ydGUsXHJcbiAgICAgIHBhcmFtZXRyb3M6IGxpc3RhRW50cmFkYSxcclxuICAgICAgdGlwb1JlcG9ydGU6IHRoaXMudGlwb1JlcG9ydGUsXHJcbiAgICAgIG9wZXJhY2lvbjogdGhpcy5vcGVyYWNpb24sXHJcbiAgICAgIGNvcnJlbzogdGhpcy5jb3JyZW8sXHJcbiAgICB9KS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyhkYXRhLm1lbnNhamUpXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZGVzY2FyZ2FyUmVwb3J0ZSgpe1xyXG5cclxuICAgIGlmKCdGJyA9PSB0aGlzLnRpcG9SZXBvcnRlKXtcclxuICAgICAgdGhpcy5yZXBvcnRlLnRpcG9BcmNoaXZvID0gdGhpcy50aXBvQXJjaGl2bztcclxuICAgIH1cclxuXHJcbiAgICBsZXQgbGlzdGFFbnRyYWRhID0gW11cclxuICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBsaXN0YUVudHJhZGEucHVzaChlbGVtZW50LnVuaW9uRFRPKVxyXG4gICAgfSlcclxuICAgIHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZGVzY2FyZ2FyUmVwb3J0ZSh7XHJcbiAgICAgIHJlcG9ydGU6IHRoaXMucmVwb3J0ZSxcclxuICAgICAgcGFyYW1ldHJvczogbGlzdGFFbnRyYWRhLFxyXG4gICAgICB0aXBvUmVwb3J0ZTogdGhpcy50aXBvUmVwb3J0ZSxcclxuICAgICAgb3BlcmFjaW9uOiB0aGlzLm9wZXJhY2lvbixcclxuICAgICAgY29ycmVvOiB0aGlzLmNvcnJlbyxcclxuICAgICAgZW5kcG9pbnRHZW5lcmFkb3JSZXBvcnRlczogJydcclxuICAgIH0pLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IGRhdGEgPT57XHJcbiAgICAgICAgY29uc29sZS5sb2coZGF0YSlcclxuICAgICAgICB0aGlzLm5vdGlmaWNhY2lvblNlcnZpY2Uuc2hvd0luZm8oZGF0YS5tZW5zYWplKVxyXG4gICAgICAgIGlmICghZGF0YS5hcmNoaXZvKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRlY29kZWREYXRhID0gYXRvYihkYXRhLmFyY2hpdm8pO1xyXG4gICAgICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGRlY29kZWREYXRhLmxlbmd0aCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWNvZGVkRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgYnl0ZU51bWJlcnNbaV0gPSBkZWNvZGVkRGF0YS5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XHJcblxyXG4gICAgICAgIC8vIENyZWEgdW4gb2JqZXRvIEJsb2IgY29uIGxvcyBieXRlcyBkZWNvZGlmaWNhZG9zIHkgZWwgdGlwbyBNSU1FIGRlbCBhcmNoaXZvXHJcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IGRhdGEubWltZSB9KTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYSB1bmEgVVJMIGRlbCBvYmpldG8gQmxvYlxyXG4gICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcblxyXG4gICAgICAgIC8vIENyZWEgdW4gZW5sYWNlIGRlIGRlc2NhcmdhIHkgaGF6IGNsaWMgZW4gw6lsIHBhcmEgaW5pY2lhciBsYSBkZXNjYXJnYVxyXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xyXG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBkYXRhLm5vbWJyZUFyY2hpdm8gICsgZGF0YS5leHRlbnNpb247XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICBsaW5rLmNsaWNrKCk7XHJcblxyXG4gICAgICAgIC8vIExpbXBpYSBsYSBVUkwgY3JlYWRhXHJcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuICBcclxuICBkZXNjYXJnYXJSZXBvcnRlU2luSGlsbygpe1xyXG4gICAgbGV0IGxpc3RhRW50cmFkYSA9IFtdXHJcbiAgICB0aGlzLnBhcmFtZXRyb3MuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgbGlzdGFFbnRyYWRhLnB1c2goZWxlbWVudC51bmlvbkRUTylcclxuICAgIH0pXHJcbiAgICB0aGlzLmVqZWN1Y2lvblJlcG9ydGVTZXJ2aWNlLmRlc2NhcmdhclJlcG9ydGUoe1xyXG4gICAgICBuZXh0OiBkYXRhID0+e1xyXG4gICAgICAgIHRoaXMubm90aWZpY2FjaW9uU2VydmljZS5zaG93SW5mbyhkYXRhLm1lbnNhamUpXHJcbiAgICAgICAgY29uc3QgZGVjb2RlZERhdGEgPSBhdG9iKGRhdGEuYXJjaGl2byk7XHJcbiAgICAgICAgY29uc3QgYnl0ZU51bWJlcnMgPSBuZXcgQXJyYXkoZGVjb2RlZERhdGEubGVuZ3RoKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlY29kZWREYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBieXRlTnVtYmVyc1tpXSA9IGRlY29kZWREYXRhLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYSB1biBvYmpldG8gQmxvYiBjb24gbG9zIGJ5dGVzIGRlY29kaWZpY2Fkb3MgeSBlbCB0aXBvIE1JTUUgZGVsIGFyY2hpdm9cclxuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J5dGVBcnJheV0sIHsgdHlwZTogZGF0YS5taW1lIH0pO1xyXG5cclxuICAgICAgICAvLyBDcmVhIHVuYSBVUkwgZGVsIG9iamV0byBCbG9iXHJcbiAgICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuXHJcbiAgICAgICAgLy8gQ3JlYSB1biBlbmxhY2UgZGUgZGVzY2FyZ2EgeSBoYXogY2xpYyBlbiDDqWwgcGFyYSBpbmljaWFyIGxhIGRlc2NhcmdhXHJcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgbGluay5kb3dubG9hZCA9IGRhdGEubm9tYnJlQXJjaGl2byArICcuJyArIGRhdGEuZXh0ZW5zaW9uO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAgICAgbGluay5jbGljaygpO1xyXG5cclxuICAgICAgICAvLyBMaW1waWEgbGEgVVJMIGNyZWFkYVxyXG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGVyciA9PiB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYWNpb25TZXJ2aWNlLnNob3dFcnJvcihKU09OLnN0cmluZ2lmeShlcnIuZXJyb3IubWVuc2FqZUV0aXF1ZXRhKSlcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGdlbmVyYXJUYWJsYSgpe1xyXG4gICAgdGhpcy5wYW5lbCA9ICdyZXN1bHRhZG8nXHJcbiAgICBsZXQgbGlzdGFFbnRyYWRhID0gW11cclxuICAgIHRoaXMuY29sdW1uYXMgPSBbXTtcclxuICAgIHRoaXMucGFyYW1ldHJvcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBsaXN0YUVudHJhZGEucHVzaChlbGVtZW50LnVuaW9uRFRPKVxyXG4gICAgfSlcclxuICAgIHRoaXMuZWplY3VjaW9uUmVwb3J0ZVNlcnZpY2UuZ2VuZXJhclRhYmxhKHtyZXBvcnRlOiB0aGlzLnJlcG9ydGUsIHBhcmFtZXRyb3M6IGxpc3RhRW50cmFkYX0pLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdmFyIGNvbHVtbmE6IFRhYmxlQ29sdW1uO1xyXG4gICAgICBkYXRhLmNvbHVtbmFzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgY29sdW1uYSA9IHtcclxuICAgICAgICAgIGZpZWxkOiBlbGVtZW50Lm5vbWJyZS50b0xvd2VyQ2FzZSgpLFxyXG4gICAgICAgICAgaGVhZGVyOiBlbGVtZW50Lm5vbWJyZSxcclxuICAgICAgICAgIHdpZHRoOiAzMDAsXHJcbiAgICAgICAgICBjYW5PcmRlcjogdHJ1ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuY29sdW1uYXMucHVzaChjb2x1bW5hKVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5saXN0YVJlZ2lzdHJvID0gZGF0YS5saXN0YVJlZ2lzdHJvO1xyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPHAtY29uZmlybVBvcHVwPjwvcC1jb25maXJtUG9wdXA+XHJcbjxwLWRpYWxvZyBpZD0ncG9wdXBSZXBvcnRlJyBoZWFkZXI9XCJ7eydyZXBvcnRlc2dlbmVyYWxlcycgfCB0cmFuc2xhdGV9fVwiIFsodmlzaWJsZSldPVwibW9zdHJhclwiIChvblNob3cpPVwibW9zdHJhclBvcHVwKClcIlxyXG4gICAgW2JyZWFrcG9pbnRzXT1cInsnOTYwcHgnOiAnNzV2dycsICc2NDBweCc6ICcxMDB2dyd9XCIgW3N0eWxlXT1cInt3aWR0aDogJzUwdncnfVwiIChvbkhpZGUpPVwib2N1bHRhcigpXCIgW21vZGFsXT1cInRydWVcIj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwicGFuZWwgPT0gJ2VudHJhZGEnXCI+XHJcbiAgICAgICAgPCEtLVNlZ3VuZG8gcGxhbm8tLT5cclxuICAgICAgICA8cC1hY2NvcmRpb24gW211bHRpcGxlXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPHAtYWNjb3JkaW9uVGFiIFtzZWxlY3RlZF09XCJ0cnVlXCIgW2hlYWRlcl09XCInc2VndW5kb3BsYW5vJyB8IHRyYW5zbGF0ZVwiICpuZ0lmPVwibGlzdGFTZWd1bmRvUGxhbm8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHAtdGFibGUgW3ZhbHVlXT1cImxpc3RhU2VndW5kb1BsYW5vXCIgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiIFtzY3JvbGxhYmxlXT1cInRydWVcIiBzZWxlY3Rpb25Nb2RlPVwic2luZ2xlXCJcclxuICAgICAgICAgICAgICAgICAgICBbcm93c109XCJwYWdpbmF0b3Iucm93c1wiIFt0b3RhbFJlY29yZHNdPVwicGFnaW5hdG9yLnRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3IudG90YWxSZWNvcmRzID4gcGFnaW5hdG9yLnJvd3NcIiAob25Sb3dTZWxlY3QpPVwidmVyU2VndW5kb1BsYW5vKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJmb25kb1RhYmxhUGluY2lwYWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57eydlc3RhZG8nIHwgdHJhbnNsYXRlIH19IDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3snZmVjaGFpbmljaWFsJyB8IHRyYW5zbGF0ZSB9fSA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbnRyYWRhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cImVudHJhZGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2VudHJhZGEubm9tYnJlRXN0YWRvfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ZW50cmFkYS5pbmljaWEgfCBkYXRlOiAnZGQvTU0veXl5eSBoOm1tIGEnfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L3AtdGFibGU+XHJcbiAgICAgICAgICAgIDwvcC1hY2NvcmRpb25UYWI+XHJcbiAgICAgICAgPC9wLWFjY29yZGlvbj5cclxuICAgICAgICA8cC1maWVsZHNldCBjbGFzcz1cIm10LTBcIiAgKm5nSWY9XCJtb3N0cmFyUGFyYW1ldHJvc1wiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWJvb2tcIiBzdHlsZT1cImNvbG9yOnZhcigtLWNvbG9yLTQwMClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3snZW50cmFkYScgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8cC10YWJsZSBbdmFsdWVdPVwicGFyYW1ldHJvc1wiID5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXBhcmFtZXRybz5cclxuICAgICAgICAgICAgICAgICAgICA8dHIgW3BTZWxlY3RhYmxlUm93XT1cInBhcmFtZXRyb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwicGFyYW1ldHJvLnVuaW9uRFRPLnNvbGljaXRhciA9PSAnUydcIj57eyBwYXJhbWV0cm8udW5pb25EVE8uZGVzY3JpcGNpb24gfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgICpuZ0lmPVwicGFyYW1ldHJvLnVuaW9uRFRPLnNvbGljaXRhciA9PSAnUydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ1QnIHx8IHBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnRScpICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiIC8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0IFsobmdNb2RlbCldPVwicGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwb0RhdG8gPT0gJ1UnICYmIHBhcmFtZXRyby51bmlvbkRUTy50aXBvID09ICdEJ1wiIC8+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1pbnB1dE51bWJlciBbKG5nTW9kZWwpXT1cInBhcmFtZXRyby51bmlvbkRUTy52YWxvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdOJyAmJiBwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnRCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyIFsobmdNb2RlbCldPVwicGFyYW1ldHJvLnVuaW9uRFRPLnZhbG9yXCIgbW9kZT1cImRlY2ltYWxcIiBbbWluRnJhY3Rpb25EaWdpdHNdPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFyYW1ldHJvLnVuaW9uRFRPLnRpcG9EYXRvID09ICdCJyAmJiBwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnRCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cInBhcmFtZXRyby5saXN0YVwiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImNhbWJpb1ZhbG9yTGlzdGEoJGV2ZW50LCBwYXJhbWV0cm8pXCIgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8ubGxhdmVMaXN0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkxhYmVsPVwibGFiZWxcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8udGlwbyA9PSAnTCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJwYXJhbWV0cm8udW5pb25EVE8udmFsb3JcIiBkYXRlRm9ybWF0PVwiZGQvbW0veXlcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhcmFtZXRyby51bmlvbkRUTy50aXBvRGF0byA9PSAnRicgJiYgcGFyYW1ldHJvLnVuaW9uRFRPLnRpcG8gPT0gJ0QnXCI+PC9wLWNhbGVuZGFyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJwYXJhbWV0cm8udW5pb25EVE8uc29saWNpdGFyID09ICdTJ1wiPnt7IHBhcmFtZXRyby51bmlvbkRUTy5kZXNjcmlwY2lvbiB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9wLXRhYmxlPlxyXG4gICAgICAgIDwvcC1maWVsZHNldD5cclxuICAgICAgICA8cC1maWVsZHNldCBjbGFzcz1cIm10LTBcIiAqbmdJZj1cImdlbmVyYWNpb25lcy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYm9va1wiIHN0eWxlPVwiY29sb3I6dmFyKC0tY29sb3ItNDAwKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eydnZW5lcmFyJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWZsdWlkIHAtZm9ybWdyaWQgZ3JpZCB0ZXh0LXhzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNiBsZzpjb2wtMyBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMFwiICAqbmdGb3I9XCJsZXQgdmFsb3Igb2YgZ2VuZXJhY2lvbmVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1yYWRpb2J1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b24gKG9uQ2xpY2spPVwiY2FtYmlvVGlwb1JlcG9ydGUoJGV2ZW50KVwiIFtpbnB1dElkXT1cInZhbG9yLnZhbHVlXCIgbmFtZT1cInRpcG9SZXBvcnRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsb3IudmFsdWVcIiBbKG5nTW9kZWwpXT1cInRpcG9SZXBvcnRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cInZhbG9yLnZhbHVlXCIgY2xhc3M9XCJtbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdmFsb3IubGFiZWwgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvcC1maWVsZHNldD5cclxuXHJcbiAgICAgICAgPHAtZmllbGRzZXQgY2xhc3M9XCJtdC0wXCIgKm5nSWY9XCInQScgIT0gdGlwb1JlcG9ydGUgJiYgbW9zdHJhclF1ZURlc2VhSGFjZXJcIiA+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnbHlwaGljb25zIGdseXBoaWNvbnMtYm9va1wiIHN0eWxlPVwiY29sb3I6dmFyKC0tY29sb3ItNDAwKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj7Cv1F1w6kgZGVzZWEgaGFjZXI/PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDxsYWJlbCAqbmdJZj1cInRpcG9SZXBvcnRlICYmICdGJyA9PSB0aXBvUmVwb3J0ZVwiPnt7J3NlbGVjY2lvbmV0aXBvYXJjaGl2b2Rlc2VhZ2VuZXJhcicgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGlwb1JlcG9ydGUgJiYgJ0YnID09IHRpcG9SZXBvcnRlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkIHRleHQteHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNiBsZzpjb2wtMyBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMFwiICAqbmdGb3I9XCJsZXQgdmFsb3Igb2YgbWFwYVRpcG9BcmNoaXZvc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b24gKG9uQ2xpY2spPVwiY2FtYmlvVGlwb0FyY2hpdm8oJGV2ZW50KVwiIFtpbnB1dElkXT1cInZhbG9yLmNvZGlnb1wiIG5hbWU9XCJ0aXBvQXJjaGl2b1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWxvci5jb2RpZ29cIiAgWyhuZ01vZGVsKV09XCJ0aXBvQXJjaGl2b1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwidmFsb3IuY29kaWdvXCIgY2xhc3M9XCJtbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbG9yLm5vbWJyZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibW9zdHJhckFyY2hpdm9zU29wb3J0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIkRldGFsbGVyZXBvcnRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZmx1aWQgcC1mb3JtZ3JpZCBncmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgbWQ6Y29sLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cImxpc3RhZG9BcmNoaXZvU29wb3J0ZVwiIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgb3B0aW9uTGFiZWw9XCJkZXNjcmlwY2lvblwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwibGxhdmVUYWJsYVwiIFsobmdNb2RlbCldPVwic29wb3J0ZUJhc2VcIiAob25DaGFuZ2UpPVwiY2FtYmlvU29wb3J0ZUJhc2UoJGV2ZW50KVwiPjwvcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+U29wb3J0ZSBCYXNlOjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGlwb1JlcG9ydGUgPT0gJ0YnICYmIHRpcG9BcmNoaXZvIHx8IHRpcG9SZXBvcnRlICE9ICdGJyBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWQgdGV4dC14c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC02IGxnOmNvbC0zIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0wXCIgICpuZ0Zvcj1cImxldCB2YWxvciBvZiBvcGVyYWNpb25lc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXJhZGlvYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtcmFkaW9CdXR0b24gW2lucHV0SWRdPVwidmFsb3IudmFsdWVcIiBuYW1lPVwib3BlcmFjaW9uXCIgW3ZhbHVlXT1cInZhbG9yLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJvcGVyYWNpb25cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cInZhbG9yLnZhbHVlXCIgY2xhc3M9XCJtbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHZhbG9yLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnRSdcIj5cclxuICAgICAgICAgICAgICAgIDxwLWZsb2F0TGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgWyhuZ01vZGVsKV09XCJjb3JyZW9cIiB0eXBlPVwidGV4dFwiIFtkaXNhYmxlZF09XCJibG9xdWVhckNvcnJlb1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7J2NvcnJlbycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9wLWZpZWxkc2V0PlxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGNsYXNzPVwibS0yIG10LTQgcC1idXR0b24gcC1idXR0b24tb3V0bGluZWQgYmFja2dyb3VuZC0xMDBcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ2YWxpZGFyQ29udHJvbEZ1bmNpb25hbGlkYWQoJ2VqZWNyZXBvOnNlbnRlbmNpYScpXCIgbGFiZWw9XCJWZXIgc2VudGVuY2lhXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1leWUtb3BlblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VudGVuY2lhKClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnRSdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWVudmVsb3BlXCJcclxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbnZpYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZW52aWFyU2VndW5kb1BsYW5vKClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnRCcgJiYgcmVwb3J0ZS5tb21lbnRvICE9ICdEJ1wiIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydnZW5lcmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImRlc2NhcmdhclJlcG9ydGUoKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09ICdEJyAmJiByZXBvcnRlLm1vbWVudG8gPT0gJ0QnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1jaGVja1wiXHJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2dlbmVyYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZGVzY2FyZ2FyUmVwb3J0ZVNpbkhpbG8oKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwidGlwb1JlcG9ydGUgPT0gJ0EnXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1jaGVja1wiXHJcbiAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2dlbmVyYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZ2VuZXJhclRhYmxhKClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPCEtLXB0ZSBwcm9jZXNvIGV4dGVybm8tLT5cclxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnTScgfHwgb3BlcmFjaW9uID09ICdNUCdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWVudmVsb3BlXCJcclxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19lbnZpYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZW52aWFyU2VndW5kb1BsYW5vKClcIj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtLTIgbXQtNCBwLWJ1dHRvbi1yYWlzZWRcIiAqbmdJZj1cIm9wZXJhY2lvbiA9PSAnUCdcIiBpY29uPVwiZ2x5cGhpY29ucyBnbHlwaGljb25zLWZvbGRlci1vcGVuXCJcclxuICAgICAgICAgICAgICAgIGxhYmVsPVwie3snbGlua19wdWJsaWNhcicgfCB0cmFuc2xhdGV9fVwiIChjbGljayk9XCJlbnZpYXJTZWd1bmRvUGxhbm8oKVwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm0tMiBtdC00IHAtYnV0dG9uLXJhaXNlZFwiICpuZ0lmPVwib3BlcmFjaW9uID09J1MnXCIgIGljb249XCJnbHlwaGljb25zIGdseXBoaWNvbnMtY2hlY2tcIlxyXG4gICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2dlbmVyYXInIHwgdHJhbnNsYXRlfX1cIiAoY2xpY2spPVwiZW52aWFyU2VndW5kb1BsYW5vKClcIj48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJwYW5lbCA9PSAncmVzdWx0YWRvJ1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJvcGVyYWNpb24gPT0gJ2hpc3RvcmljbydcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG10LTIgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwidGV4dC1iYXNlIG10LTIgbWwtMlwiPnt7J2RldGFsbGUnIHwgdHJhbnNsYXRlfX0ge3snc2VndW5kb3BsYW5vJyB8IHRyYW5zbGF0ZX19PC9oND5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIGljb249XCJwaSBwaS1jaGV2cm9uLWxlZnRcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgZm9udC1zZW1pYm9sZCBmbGV4LXNocmluay0wIG1sLTRcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVncmVzYXJTZWd1bmRvUGxhbm8oKVwiIGxhYmVsPVwie3snbGlua19yZWdyZXNhcicgfCB0cmFuc2xhdGV9fVwiID5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIElucHV0Z3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1mbHVpZCBwLWZvcm1ncmlkIGdyaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNCBsZzpjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhciB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiZWxlbWVudG9Cb3JyYXIuaW5pY2lhXCIgW2Rpc2FibGVkXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwidHJ1ZVwiIFtzaG93U2Vjb25kc109XCJ0cnVlXCIgZGF0ZUZvcm1hdD1cImRkL21tL3l5XCI+PC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eygnZmVjaGFpbmljaWFsJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC00IGxnOmNvbC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1mbG9hdExhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJlbGVtZW50b0JvcnJhci50ZXJtaW5hXCIgW2Rpc2FibGVkXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwidHJ1ZVwiIFtzaG93U2Vjb25kc109XCJ0cnVlXCIgZGF0ZUZvcm1hdD1cImRkL21tL3l5XCI+PC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eygnZmVjaGFmaW5hbCcpIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWZsb2F0TGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBtZDpjb2wtNCBsZzpjb2wtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZmxvYXRMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dCB0eXBlPVwidGV4dFwiIFtyZWFkb25seV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZWxlbWVudG9Cb3JyYXIubm9tYnJlRXN0YWRvXCIgW2Rpc2FibGVkXT1cInRydWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eygnZXN0YWRvJykgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZmxvYXRMYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgY29sLTEyIG1kOmNvbC0xMiBsZzpjb2wtMTJcIiAqbmdJZj1cImVsZW1lbnRvQm9ycmFyLmVzdGFkbyA9PSAnRSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eygnbWVuc2FqZScpIHwgdHJhbnNsYXRlfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwibWluLXctZnVsbCBwLWlucHV0dGV4dGFyZWEgcC1pbnB1dHRleHQgcC1jb21wb25lbnQgcC1lbGVtZW50IFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cz1cIjVcIiBjb2xzPVwiMzBcIiBwSW5wdXRUZXh0YXJlYSBbKG5nTW9kZWwpXT1cImVsZW1lbnRvQm9ycmFyLmFyY2hpdm9cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSBjbGFzcz1cIm1sLTIgcC1idXR0b24gcC1idXR0b24tcmFpc2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZWxlbWVudG9Cb3JyYXIuZXN0YWRvID09ICdUJ1wiIGljb249XCJwaSBwaS1kb3dubG9hZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cInt7J2xpbmtfZGVzY2FyZ2FyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImRlc2NhcmdhckFyY2hpdm8oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgY2xhc3M9XCJtbC0yIHAtYnV0dG9uLW91dGxpbmVkXCIgaWNvbj1cImdseXBoaWNvbnMgZ2x5cGhpY29ucy1iaW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9XCJ7eydsaW5rX2VsaW1pbmFyJyB8IHRyYW5zbGF0ZX19XCIgKGNsaWNrKT1cImVsaW1pbmFyU2VndW5kb1BsYW5vKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJ0aXBvUmVwb3J0ZSA9PSAnQSdcIiA+XHJcbiAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJsaXN0YVJlZ2lzdHJvXCIgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiIFtzY3JvbGxhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3Jvd3NdPVwiMTBcIiBbdG90YWxSZWNvcmRzXT1cImxpc3RhUmVnaXN0cm8ubGVuZ3RoXCIgW3BhZ2luYXRvcl09XCJsaXN0YVJlZ2lzdHJvLmxlbmd0aCA+IDEwXCIgPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz1cImZvbmRvVGFibGFQaW5jaXBhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggW3N0eWxlLndpZHRoLnB4XT1cImNvbC53aWR0aCB8fCAyMDBcIiAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbmFzXCI+e3sgY29sLmhlYWRlciB9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbnRyYWRhPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtzdHlsZS53aWR0aC5weF09XCJjb2wud2lkdGggfHwgMjAwXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5hc1wiPnt7IGVudHJhZGFbY29sLmZpZWxkXSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJwLTMgZm9udC1tZWRpdW0gZW1wdHltZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J21lbnNhamV0YWJsYXZhY2lhJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9wLXRhYmxlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG48L3AtZGlhbG9nPlxyXG48YXBwLXBvcHVwLXNlbnRlbmNpYSBbcmVwb3J0ZV09XCJyZXBvcnRlXCIgW3BhcmFtZXRyb3NdPVwicGFyYW1ldHJvc1wiIFttb3N0cmFyUG9wdXBdPVwibW9zdHJhclBvcHVwU2VudGVuY2lhXCJcclxuICAgIChyZWdyZXNhcik9XCJyZWdyZXNhclNlbnRlbmNpYSgkZXZlbnQpXCI+PC9hcHAtcG9wdXAtc2VudGVuY2lhPiJdfQ==