dmencu 3.2.21 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/README.md +42 -42
  2. package/ayuda/asignacion.md +16 -0
  3. package/ayuda/circuito-encuesta.md +27 -0
  4. package/ayuda/control.md +13 -0
  5. package/ayuda/dm-cambiar-modo.md +16 -0
  6. package/ayuda/dm-relevamiento.md +20 -0
  7. package/ayuda/dm-sincronizar.md +18 -0
  8. package/ayuda/fin-de-campo.md +14 -0
  9. package/ayuda/metadatos.md +14 -0
  10. package/ayuda/procesar.md +13 -0
  11. package/ayuda/recepcion.md +20 -0
  12. package/ayuda/supervision.md +9 -0
  13. package/ayuda/usuarios.md +12 -0
  14. package/ayuda/varios.md +23 -0
  15. package/dist/client/client/client.js +101 -4
  16. package/dist/client/client/css/menu.styl +29 -0
  17. package/dist/client/unlogged/abrir-formulario.js +1 -1
  18. package/dist/client/unlogged/bypass-formulario.d.ts +6 -42
  19. package/dist/client/unlogged/bypass-formulario.js +84 -219
  20. package/dist/client/unlogged/calculos-encuesta.js +112 -38
  21. package/dist/client/unlogged/css/formulario-react.styl +9 -0
  22. package/dist/client/unlogged/helpers-casilleros.d.ts +1 -1
  23. package/dist/client/unlogged/helpers-casilleros.js +12 -18
  24. package/dist/client/unlogged/helpers-formulario.d.ts +16 -0
  25. package/dist/client/unlogged/helpers-formulario.js +88 -0
  26. package/dist/client/unlogged/redux-formulario.d.ts +1 -2
  27. package/dist/client/unlogged/redux-formulario.js +21 -31
  28. package/dist/client/unlogged/render-config.d.ts +5 -1
  29. package/dist/client/unlogged/render-config.js +14 -1
  30. package/dist/client/unlogged/render-formulario.d.ts +3 -6
  31. package/dist/client/unlogged/render-formulario.js +71 -69
  32. package/dist/client/unlogged/render-formulario.tsx +100 -57
  33. package/dist/client/unlogged/render-general.d.ts +2 -0
  34. package/dist/client/unlogged/render-general.js +2 -1
  35. package/dist/client/unlogged/render-general.tsx +2 -1
  36. package/dist/client/unlogged/render-init.d.ts +1 -0
  37. package/dist/client/unlogged/render-init.js +9 -2
  38. package/dist/client/unlogged/tipos.d.ts +93 -41
  39. package/dist/client/unlogged/tipos.js +1 -1
  40. package/dist/server/app-dmencu.d.ts +1435 -0
  41. package/dist/server/app-dmencu.js +1091 -0
  42. package/dist/server/ayuda.d.ts +19 -0
  43. package/dist/server/ayuda.js +224 -0
  44. package/dist/server/def-config.d.ts +1 -0
  45. package/dist/server/def-config.js +123 -0
  46. package/dist/server/procedures-dmencu.d.ts +43 -0
  47. package/dist/server/procedures-dmencu.js +2313 -0
  48. package/dist/server/server/app-dmencu.d.ts +49 -91
  49. package/dist/server/server/app-dmencu.js +151 -52
  50. package/dist/server/server/ayuda.d.ts +19 -0
  51. package/dist/server/server/ayuda.js +224 -0
  52. package/dist/server/server/procedures-dmencu.d.ts +34 -2
  53. package/dist/server/server/procedures-dmencu.js +93 -51
  54. package/dist/server/server/setters-rea-no-rea.d.ts +13 -0
  55. package/dist/server/server/setters-rea-no-rea.js +35 -0
  56. package/dist/server/server/table-areas.js +4 -4
  57. package/dist/server/server/table-areas_asignacion_general.js +2 -1
  58. package/dist/server/server/table-control_campo.js +4 -4
  59. package/dist/server/server/table-no_rea.js +4 -2
  60. package/dist/server/server/table-no_rea_sup.js +7 -3
  61. package/dist/server/server/table-personal.js +1 -1
  62. package/dist/server/server/table-tareas_tem.js +2 -2
  63. package/dist/server/server/table-tem.js +2 -2
  64. package/dist/server/server/types-dmencu.d.ts +53 -2
  65. package/dist/server/server/types-dmencu.js +2 -1
  66. package/dist/server/setters-rea-no-rea.d.ts +13 -0
  67. package/dist/server/setters-rea-no-rea.js +35 -0
  68. package/dist/server/table-acciones.d.ts +2 -0
  69. package/dist/server/table-acciones.js +45 -0
  70. package/dist/server/table-area_enc_proximas.d.ts +2 -0
  71. package/dist/server/table-area_enc_proximas.js +30 -0
  72. package/dist/server/table-areas.d.ts +4 -0
  73. package/dist/server/table-areas.js +112 -0
  74. package/dist/server/table-areas_asignacion_general.d.ts +2 -0
  75. package/dist/server/table-areas_asignacion_general.js +86 -0
  76. package/dist/server/table-barrios.d.ts +2 -0
  77. package/dist/server/table-barrios.js +35 -0
  78. package/dist/server/table-comunas.d.ts +2 -0
  79. package/dist/server/table-comunas.js +33 -0
  80. package/dist/server/table-control_campo.d.ts +12 -0
  81. package/dist/server/table-control_campo.js +119 -0
  82. package/dist/server/table-control_dias_carga.d.ts +2 -0
  83. package/dist/server/table-control_dias_carga.js +63 -0
  84. package/dist/server/table-control_resumen.d.ts +2 -0
  85. package/dist/server/table-control_resumen.js +19 -0
  86. package/dist/server/table-diccionario.d.ts +2 -0
  87. package/dist/server/table-diccionario.js +32 -0
  88. package/dist/server/table-dictra.d.ts +2 -0
  89. package/dist/server/table-dictra.js +46 -0
  90. package/dist/server/table-dicvar.d.ts +2 -0
  91. package/dist/server/table-dicvar.js +32 -0
  92. package/dist/server/table-encuestadores.d.ts +13 -0
  93. package/dist/server/table-encuestadores.js +75 -0
  94. package/dist/server/table-estados.d.ts +2 -0
  95. package/dist/server/table-estados.js +47 -0
  96. package/dist/server/table-estados_acciones.d.ts +2 -0
  97. package/dist/server/table-estados_acciones.js +40 -0
  98. package/dist/server/table-fracciones.d.ts +2 -0
  99. package/dist/server/table-fracciones.js +37 -0
  100. package/dist/server/table-grilla_hoja_ruta.d.ts +2 -0
  101. package/dist/server/table-grilla_hoja_ruta.js +93 -0
  102. package/dist/server/table-historial_tem.d.ts +2 -0
  103. package/dist/server/table-historial_tem.js +57 -0
  104. package/dist/server/table-hogares.d.ts +2 -0
  105. package/dist/server/table-hogares.js +156 -0
  106. package/dist/server/table-hogares_sup.d.ts +2 -0
  107. package/dist/server/table-hogares_sup.js +191 -0
  108. package/dist/server/table-inconsistencias_cumplen_condicion.d.ts +2 -0
  109. package/dist/server/table-inconsistencias_cumplen_condicion.js +33 -0
  110. package/dist/server/table-manzanas.d.ts +2 -0
  111. package/dist/server/table-manzanas.js +36 -0
  112. package/dist/server/table-mis_encuestadores.d.ts +2 -0
  113. package/dist/server/table-mis_encuestadores.js +77 -0
  114. package/dist/server/table-mis_tareas.d.ts +2 -0
  115. package/dist/server/table-mis_tareas.js +18 -0
  116. package/dist/server/table-mis_tareas_areas.d.ts +2 -0
  117. package/dist/server/table-mis_tareas_areas.js +20 -0
  118. package/dist/server/table-modos_dm.d.ts +2 -0
  119. package/dist/server/table-modos_dm.js +28 -0
  120. package/dist/server/table-no_rea.js +38 -0
  121. package/dist/server/table-no_rea_sup.js +36 -0
  122. package/dist/server/table-operaciones.d.ts +2 -0
  123. package/dist/server/table-operaciones.js +30 -0
  124. package/dist/server/table-parametros.d.ts +2 -0
  125. package/dist/server/table-parametros.js +40 -0
  126. package/dist/server/table-permisos.d.ts +2 -0
  127. package/dist/server/table-permisos.js +31 -0
  128. package/dist/server/table-personal.d.ts +5 -0
  129. package/dist/server/table-personal.js +62 -0
  130. package/dist/server/table-personal_rol.d.ts +2 -0
  131. package/dist/server/table-personal_rol.js +42 -0
  132. package/dist/server/table-personas.d.ts +2 -0
  133. package/dist/server/table-personas.js +448 -0
  134. package/dist/server/table-personas_sup.d.ts +2 -0
  135. package/dist/server/table-personas_sup.js +93 -0
  136. package/dist/server/table-radios.d.ts +2 -0
  137. package/dist/server/table-radios.js +37 -0
  138. package/dist/server/table-rea.d.ts +2 -0
  139. package/dist/server/table-rea.js +38 -0
  140. package/dist/server/table-rea_sup.d.ts +2 -0
  141. package/dist/server/table-rea_sup.js +38 -0
  142. package/dist/server/table-recepcionistas.d.ts +2 -0
  143. package/dist/server/table-recepcionistas.js +18 -0
  144. package/dist/server/table-recuperadores.d.ts +2 -0
  145. package/dist/server/table-recuperadores.js +18 -0
  146. package/dist/server/table-roles.d.ts +2 -0
  147. package/dist/server/table-roles.js +33 -0
  148. package/dist/server/table-roles_permisos.d.ts +2 -0
  149. package/dist/server/table-roles_permisos.js +36 -0
  150. package/dist/server/table-roles_subordinados.d.ts +2 -0
  151. package/dist/server/table-roles_subordinados.js +31 -0
  152. package/dist/server/table-semanas.d.ts +2 -0
  153. package/dist/server/table-semanas.js +42 -0
  154. package/dist/server/table-sincronizaciones.d.ts +2 -0
  155. package/dist/server/table-sincronizaciones.js +30 -0
  156. package/dist/server/table-supervisores.d.ts +2 -0
  157. package/dist/server/table-supervisores.js +18 -0
  158. package/dist/server/table-tareas.d.ts +2 -0
  159. package/dist/server/table-tareas.js +48 -0
  160. package/dist/server/table-tareas_areas.d.ts +7 -0
  161. package/dist/server/table-tareas_areas.js +112 -0
  162. package/dist/server/table-tareas_proximas.d.ts +2 -0
  163. package/dist/server/table-tareas_proximas.js +48 -0
  164. package/dist/server/table-tareas_tem.d.ts +14 -0
  165. package/dist/server/table-tareas_tem.js +206 -0
  166. package/dist/server/table-tareas_tem_analisis_campo.d.ts +2 -0
  167. package/dist/server/table-tareas_tem_analisis_campo.js +31 -0
  168. package/dist/server/table-tareas_tem_fin_campo.d.ts +3 -0
  169. package/dist/server/table-tareas_tem_fin_campo.js +56 -0
  170. package/dist/server/table-tareas_tem_ingreso.d.ts +2 -0
  171. package/dist/server/table-tareas_tem_ingreso.js +31 -0
  172. package/dist/server/table-tareas_tem_procesamiento.d.ts +2 -0
  173. package/dist/server/table-tareas_tem_procesamiento.js +34 -0
  174. package/dist/server/table-tareas_tem_recepcion.d.ts +6 -0
  175. package/dist/server/table-tareas_tem_recepcion.js +59 -0
  176. package/dist/server/table-tem.d.ts +3 -0
  177. package/dist/server/table-tem.js +247 -0
  178. package/dist/server/table-tem_asignacion.d.ts +2 -0
  179. package/dist/server/table-tem_asignacion.js +50 -0
  180. package/dist/server/table-tem_borradas.d.ts +2 -0
  181. package/dist/server/table-tem_borradas.js +35 -0
  182. package/dist/server/table-usuarios.d.ts +2 -0
  183. package/dist/server/table-usuarios.js +63 -0
  184. package/dist/server/table-visitas.d.ts +2 -0
  185. package/dist/server/table-visitas.js +91 -0
  186. package/dist/server/table-visitas_sup.d.ts +2 -0
  187. package/dist/server/table-visitas_sup.js +91 -0
  188. package/dist/server/table-viviendas.d.ts +2 -0
  189. package/dist/server/table-viviendas.js +299 -0
  190. package/dist/server/types-dmencu.d.ts +114 -0
  191. package/dist/server/types-dmencu.js +34 -0
  192. package/dist/server/unlogged/tipos.d.ts +93 -41
  193. package/dist/server/unlogged/tipos.js +1 -1
  194. package/dist/test/app-para-tests.d.ts +1117 -0
  195. package/dist/test/app-para-tests.js +95 -0
  196. package/dist/test/test-ayuda.d.ts +1 -0
  197. package/dist/test/test-ayuda.js +183 -0
  198. package/dist/test/test-caches-rea.d.ts +1 -0
  199. package/dist/test/test-caches-rea.js +243 -0
  200. package/dist/test/test-helpers-casilleros.d.ts +1 -0
  201. package/dist/test/test-helpers-casilleros.js +154 -0
  202. package/dist/test/test-helpers-formulario.d.ts +1 -0
  203. package/dist/test/test-helpers-formulario.js +95 -0
  204. package/dist/test/test-impacto-rea-no-rea-en-bd.d.ts +1 -0
  205. package/dist/test/test-impacto-rea-no-rea-en-bd.js +243 -0
  206. package/dist/test/test-menu-segun-rol.d.ts +1 -0
  207. package/dist/test/test-menu-segun-rol.js +170 -0
  208. package/dist/test/test-setters-rea-no-rea.d.ts +1 -0
  209. package/dist/test/test-setters-rea-no-rea.js +95 -0
  210. package/dist/test/test.d.ts +7 -0
  211. package/dist/test/test.js +9 -2
  212. package/dist/unlogged/helpers-casilleros.d.ts +1 -1
  213. package/dist/unlogged/helpers-casilleros.js +12 -18
  214. package/dist/unlogged/helpers-formulario.d.ts +16 -0
  215. package/dist/unlogged/helpers-formulario.js +88 -0
  216. package/dist/unlogged/tipos.d.ts +20 -2
  217. package/dist/unlogged/tipos.js +1 -1
  218. package/dist/unlogged/unlogged/abrir-formulario.js +1 -1
  219. package/dist/unlogged/unlogged/bypass-formulario.d.ts +6 -42
  220. package/dist/unlogged/unlogged/bypass-formulario.js +84 -219
  221. package/dist/unlogged/unlogged/css/formulario-react.styl +9 -0
  222. package/dist/unlogged/unlogged/helpers-casilleros.js +7 -14
  223. package/dist/unlogged/unlogged/helpers-formulario.d.ts +16 -0
  224. package/dist/unlogged/unlogged/helpers-formulario.js +88 -0
  225. package/dist/unlogged/unlogged/redux-formulario.d.ts +1 -2
  226. package/dist/unlogged/unlogged/redux-formulario.js +21 -31
  227. package/dist/unlogged/unlogged/render-config.d.ts +5 -1
  228. package/dist/unlogged/unlogged/render-config.js +14 -1
  229. package/dist/unlogged/unlogged/render-formulario.d.ts +3 -6
  230. package/dist/unlogged/unlogged/render-formulario.js +71 -69
  231. package/dist/unlogged/unlogged/render-formulario.tsx +100 -57
  232. package/dist/unlogged/unlogged/render-general.d.ts +2 -0
  233. package/dist/unlogged/unlogged/render-general.js +2 -1
  234. package/dist/unlogged/unlogged/render-general.tsx +2 -1
  235. package/dist/unlogged/unlogged/render-init.d.ts +1 -0
  236. package/dist/unlogged/unlogged/render-init.js +9 -2
  237. package/dist/unlogged/unlogged/tipos.d.ts +93 -41
  238. package/dist/unlogged/unlogged/tipos.js +1 -1
  239. package/dist/unlogged/unlogged/unlogged.js +15 -2
  240. package/install/accion_cumple_condicion.sql +1 -1
  241. package/install/generador_accion_cumple_condicion.sql +2 -2
  242. package/install/tarea_cumple_condicion.sql +1 -1
  243. package/install/xcalcular_resultado_trg.sql +1 -1
  244. package/package.json +24 -18
  245. package/dist/server/server/table-no_rea copy.js +0 -38
  246. package/dist/server/server/table-no_rea_sup copy.js +0 -36
  247. package/dist/unlogged/bypass-formulario.d.ts +0 -198
  248. package/dist/unlogged/bypass-formulario.js +0 -1226
  249. package/dist/unlogged/redux-formulario.d.ts +0 -440
  250. package/dist/unlogged/redux-formulario.js +0 -324
  251. package/dist/unlogged/render-config.d.ts +0 -52
  252. package/dist/unlogged/render-config.js +0 -161
  253. package/dist/unlogged/unlogged/bypass-formulario copy.d.ts +0 -198
  254. package/dist/unlogged/unlogged/bypass-formulario copy.js +0 -1226
  255. package/dist/unlogged/unlogged/helpers.d.ts +0 -14
  256. package/dist/unlogged/unlogged/helpers.js +0 -129
  257. /package/dist/server/{server/table-no_rea copy.d.ts → table-no_rea.d.ts} +0 -0
  258. /package/dist/server/{server/table-no_rea_sup copy.d.ts → table-no_rea_sup.d.ts} +0 -0
@@ -830,6 +830,15 @@ div#mini-console
830
830
  .btn.boton-pregunta-borrar
831
831
  margin-top 4px
832
832
 
833
+ // ayuda en línea del dispositivo (PantallaAyuda en render-formulario.tsx)
834
+ .ayuda-contenido
835
+ line-height 1.5
836
+ table
837
+ border-collapse collapse
838
+ th, td
839
+ border 1px solid #ccc
840
+ padding 2px 6px
841
+
833
842
  .div-loading-over
834
843
  position absolute
835
844
  left 0px
@@ -33,21 +33,14 @@
33
33
  },
34
34
  fecha_valida(x) {
35
35
  var formato_valido = /^([1-9]|0[1-9]|[12]\d|3[01])\/([1-9]|0[1-9]|1[012])\/20\d\d$/.test(x);
36
- var xDate;
37
- var conversionOk;
38
- conversionOk = true;
39
- if (formato_valido) {
40
- const [d, m, y] = x.split('/');
41
- try {
42
- xDate = new Date(`${y}/${m}/${d}`);
43
- }
44
- catch (err) {
45
- conversionOk = false;
46
- }
36
+ if (!formato_valido) {
37
+ return false;
47
38
  }
48
- ;
39
+ const [d, m, y] = x.split('/').map(Number);
40
+ // new Date no falla con fechas inexistentes (31/02 pasa a 03/03), hay que verificar que no se corra
41
+ var xDate = new Date(y, m - 1, d);
49
42
  //faltaria validar que no sea una fecha futura y que sea una fecha en el rango del operativo
50
- return formato_valido && conversionOk;
43
+ return xDate.getFullYear() == y && xDate.getMonth() == m - 1 && xDate.getDate() == d;
51
44
  },
52
45
  mesanio_valido(x) {
53
46
  var formato_valido = /^([1-9]|0[1-9]|1[012])\/(19|20)\d\d$/.test(x);
@@ -127,4 +120,4 @@
127
120
  }
128
121
  };
129
122
  });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1jYXNpbGxlcm9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VubG9nZ2VkL2hlbHBlcnMtY2FzaWxsZXJvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFDQSwrQ0FBb0M7SUFFdkIsUUFBQSxpQkFBaUIsR0FBRztRQUM3QixTQUFTLENBQUMsV0FBZ0I7WUFDdEIsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxDQUFDO1lBQ2IsQ0FBQztZQUNELE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLENBQUMsU0FBaUIsRUFBRSxXQUFtQixFQUFFLEVBQVU7WUFDdEQsSUFBSSxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyx3QkFBd0IsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUM3RSxDQUFDO1lBQ0QsT0FBTyxTQUFTLEdBQUcsV0FBVyxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLEVBQUU7WUFDRixNQUFNLENBQUMsQ0FBTTtnQkFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDeEIsQ0FBQztZQUNELEdBQUc7Z0JBQ0MsT0FBTyxtQkFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQy9CLENBQUM7WUFDRCxZQUFZLENBQUMsQ0FBUztnQkFDbEIsSUFBSSxjQUFjLEdBQUcsOERBQThELENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUMzRixJQUFJLEtBQVcsQ0FBQztnQkFDaEIsSUFBSSxZQUFxQixDQUFDO2dCQUMxQixZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUNwQixJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNqQixNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENB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Q0FBQyxJQUFJLElBQUksSUFBSSxZQUFZO29CQUNqRCxhQUFhLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxtQkFBbUI7aUJBQ2hELENBQUE7WUFDTCxDQUFDO1lBQ0QscUlBQXFJO1lBQ3JJLDJJQUEySTtZQUMzSSwrRkFBK0Y7WUFDL0YsR0FBRztZQUNIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFtQ0k7U0FDUDtLQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgZGF0ZSB9IGZyb20gXCJiZXN0LWdsb2JhbHNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBoZWxwZXJzQ2FzaWxsZXJvcyA9IHtcclxuICAgIG51bGwyemVybyhwb3NpYmxlTnVsbDogYW55KSB7XHJcbiAgICAgICAgaWYgKHBvc2libGVOdWxsID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwb3NpYmxlTnVsbDtcclxuICAgIH0sXHJcbiAgICBkaXYwZXJyKG51bWVyYWRvcjogbnVtYmVyLCBkZW5vbWluYWRvcjogbnVtYmVyLCBwazogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKGRlbm9taW5hZG9yID09IDApIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgZW4gXCIgKyBwayArIFwiIGRpdmlzaW9uIHBvciBjZXJvIGRlIFwiICsgbnVtZXJhZG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bWVyYWRvciAvIGRlbm9taW5hZG9yO1xyXG4gICAgfSxcclxuICAgIGZ1bnM6IHtcclxuICAgICAgICBibGFuY28oeDogYW55KSB7XHJcbiAgICAgICAgICAgIHJldHVybiB4ICE9PSAwICYmICF4XHJcbiAgICAgICAgfSxcclxuICAgICAgICBob3koKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRlLnRvZGF5KCkudG9EbXkoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmVjaGFfdmFsaWRhKHg6IHN0cmluZykge1xyXG4gICAgICAgICAgICB2YXIgZm9ybWF0b192YWxpZG8gPSAvXihbMS05XXwwWzEtOV18WzEyXVxcZHwzWzAxXSlcXC8oWzEtOV18MFsxLTldfDFbMDEyXSlcXC8yMFxcZFxcZCQvLnRlc3QoeClcclxuICAgICAgICAgICAgdmFyIHhEYXRlOiBEYXRlO1xyXG4gICAgICAgICAgICB2YXIgY29udmVyc2lvbk9rOiBib29sZWFuO1xyXG4gICAgICAgICAgICBjb252ZXJzaW9uT2sgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZiAoZm9ybWF0b192YWxpZG8pIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFtkLCBtLCB5XSA9IHguc3BsaXQoJy8nKTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeERhdGUgPSBuZXcgRGF0ZShgJHt5fS8ke219LyR7ZH1gKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb25PayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAvL2ZhbHRhcmlhIHZhbGlkYXIgcXVlIG5vIHNlYSB1bmEgZmVjaGEgZnV0dXJhIHkgcXVlIHNlYSB1bmEgZmVjaGEgZW4gZWwgcmFuZ28gZGVsIG9wZXJhdGl2b1xyXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0b192YWxpZG8gJiYgY29udmVyc2lvbk9rXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtZXNhbmlvX3ZhbGlkbyh4OiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgdmFyIGZvcm1hdG9fdmFsaWRvID0gL14oWzEtOV18MFsxLTldfDFbMDEyXSlcXC8oMTl8MjApXFxkXFxkJC8udGVzdCh4KVxyXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0b192YWxpZG9cclxuICAgICAgICB9LFxyXG4gICAgICAgIGluZm9ybWFkbyh4OiBhbnkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHggIT09IHVuZGVmaW5lZCAmJiB4ICE9PSBudWxsICYmICghKHggaW5zdGFuY2VvZiBBcnJheSkgfHwgeC5sZW5ndGggIT09IDApXHJcbiAgICAgICAgICAgICAgICAmJiAoISh4IGluc3RhbmNlb2YgT2JqZWN0KSB8fCBPYmplY3Qua2V5cyh4KS5sZW5ndGggIT09IDApXHJcbiAgICAgICAgfSxcclxuICAgICAgICBuc25jKHg6IGFueSkge1xyXG4gICAgICAgICAgICByZXR1cm4geCA9PSAtOVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGFyKHg6IG51bWJlcikge1xyXG4gICAgICAgICAgICByZXR1cm4geCAlIDIgPT0gMFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZWRhZF9tZXNfYW5uaW9fdmFsaWRvKGVkYWQ6IG51bWJlciwgbWVzQW5uaW86IHN0cmluZywgZmVjaGFSZWFsaXphY2lvbkRETU1ZWVlZOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgdmFyIG1lc2VzRGlmZXJlbmNpYSA9IChkMTogRGF0ZSwgZDI6IERhdGUpID0+IHtcclxuICAgICAgICAgICAgICAgIHZhciBtb250aHM7XHJcbiAgICAgICAgICAgICAgICBtb250aHMgPSAoZDIuZ2V0RnVsbFllYXIoKSAtIGQxLmdldEZ1bGxZZWFyKCkpICogMTI7XHJcbiAgICAgICAgICAgICAgICBtb250aHMgLT0gZDEuZ2V0TW9udGgoKTtcclxuICAgICAgICAgICAgICAgIG1vbnRocyArPSBkMi5nZXRNb250aCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1vbnRocyA8PSAwID8gMCA6IG1vbnRocztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgcGFydGVzUmVhbGl6YWNpb24gPSBmZWNoYVJlYWxpemFjaW9uRERNTVlZWVkuc3BsaXQoXCIvXCIpO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmUgbGFzIHBhcnRlcyBjb3JyZXNwb25kZW4gYSB1bmEgZmVjaGEgdsOhbGlkYVxyXG4gICAgICAgICAgICB2YXIgdG9kYXkgPSBkYXRlLnltZChOdW1iZXIocGFydGVzUmVhbGl6YWNpb25bMl0pLCBOdW1iZXIocGFydGVzUmVhbGl6YWNpb25bMV0pLCBOdW1iZXIocGFydGVzUmVhbGl6YWNpb25bMF0pKVxyXG4gICAgICAgICAgICB2YXIgcGFydGVzTWVzQW5uaW8gPSBtZXNBbm5pby5zcGxpdCgnLycpO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmUgbGFzIHBhcnRlcyBjb3JyZXNwb25kZW4gYSB1bmEgZmVjaGEgdsOhbGlkYVxyXG4gICAgICAgICAgICB2YXIgbmFjaW1pZW50byA9IGRhdGUueW1kKE51bWJlcihwYXJ0ZXNNZXNBbm5pb1sxXSksIE51bWJlcihwYXJ0ZXNNZXNBbm5pb1swXSksIDEpXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZSBSZWFsRGF0ZSBlcyBEYXRlIHkgc2UgcHVlZGUgcmVzdGFyXHJcbiAgICAgICAgICAgIHZhciBkaWZlcmVuY2lhTWVzZXMgPSBtZXNlc0RpZmVyZW5jaWEobmFjaW1pZW50bywgdG9kYXkpO1xyXG4gICAgICAgICAgICB2YXIgZWRhZERlY2ltYWxlcyA9IGRpZmVyZW5jaWFNZXNlcyAvIDEyOyAvL2VqIDM2LjVcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIE1hdGguZmxvb3IoZWRhZERlY2ltYWxlcykgPT0gZWRhZCB8fCAvL21pc21hIGVkYWRcclxuICAgICAgICAgICAgICAgIGVkYWREZWNpbWFsZXMgPT0gZWRhZCArIDEgLy9tZXMgZGUgdG9sZXJhbmNpYVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvL2NvcGlhcl9jYW1wb191YV9yYW1hKHJlc3B1ZXN0YXNPcmlnZW46UmVzcHVlc3Rhc1tdLCBwb3NpY2lvbjpudW1iZXIsIHZhcmlhYmxlT3JpZ2VuOiBJZFZhcmlhYmxlLCBjYW1pbm86c3RyaW5nLCBjb25kaWNpb246Ym9vbGVhbil7XHJcbiAgICAgICAgLy8gICAgcmV0dXJuIGNvbmRpY2lvbj8ocmVzcHVlc3Rhc09yaWdlbiAmJiByZXNwdWVzdGFzT3JpZ2VuW3Bvc2ljaW9uLTFdICYmIHJlc3B1ZXN0YXNPcmlnZW5bcG9zaWNpb24tMV1bYCR7Y2FtaW5vfWBdW3ZhcmlhYmxlT3JpZ2VuXSk6bnVsbFxyXG4gICAgICAgIC8vICAgIHJldHVybiBjb25kaWNpb24/ZXZhbChgcmVzcHVlc3Rhc09yaWdlblske3Bvc2ljaW9uLTF9XS5gK2NhbWlubysnLicrdmFyaWFibGVPcmlnZW4pOm51bGw7XHJcbiAgICAgICAgLy99XHJcbiAgICAgICAgLypcclxuICAgICAgICBkYm86e1xyXG4gICAgICAgICAgICBkYXRvRmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyLCBkYXRvOnN0cmluZyl7XHJcbiAgICAgICAgICAgICAgICB2YXIgeHBlcnNvbmFzPXBlcnNvbmFzO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuY3U9PWVuYyAmJiBob2c9PWhvZ2FyICYmIGluZm9ybWFkbyh4cGVyc29uYXMpICYmIHBlcjw9IHhwZXJzb25hcy5sZW5ndGggJiYgcGVyPj0xICYmICEheHBlcnNvbmFzW3Blci0xXVtkYXRvXT8geHBlcnNvbmFzW3Blci0xXVtkYXRvXTpudWxsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVkYWRmYW1pbGlhcihlbmN1OnN0cmluZyxob2c6bnVtYmVyLHBlcjpudW1iZXIpe1xyXG4gICAgICAgICAgICAgICAgdmFyIHhwZXJzb25hcz1wZXJzb25hcztcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRvRmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyLCdlZGFkJylcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXhpc3RlaW5kaXZpZHVhbChlbmN1OnN0cmluZyxob2c6bnVtYmVyLHBlcjpudW1iZXIpe1xyXG4gICAgICAgICAgICAgICAgdmFyIHhwZXJzb25hcz1wZXJzb25hcztcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbmN1PT1lbmMgJiYgaG9nPT1ob2dhciAmJiAhIXBlcnNvbmFzICYmIHBlcjw9IHBlcnNvbmFzLmxlbmd0aCAmJiBwZXI+PTEgJiYgISFwZXJzb25hc1twZXItMV1bJ2VudHJlYWluZCddXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGV4aXN0ZW1pZW1icm8oZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyKXtcclxuICAgICAgICAgICAgICAgIHZhciB4cGVyc29uYXM9cGVyc29uYXM7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5jdT09ZW5jICYmIGhvZz09aG9nYXIgJiYgISFwZXJzb25hcyAmJiBwZXI8PSBwZXJzb25hcy5sZW5ndGggJiYgcGVyPj0xXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG5yb2Nvbnl1Z2VzKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIpe1xyXG4gICAgICAgICAgICAgICAgdmFyIHhwZXJzb25hcz1wZXJzb25hc1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHhwZXJzb25hcy5maWx0ZXIoIHBlci0+cGVyLnA0PT0yKS5sZW5ndGhcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbnJvamVmZXMoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwZXJzb25hcy5maWx0ZXIoIHBlci0+cGVyLnA0PT0xKS5sZW5ndGhcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcGFyZW50ZXNjb2ZhbWlsaWFyKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIscGVyOm51bWJlcil7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0b0ZhbWlsaWFyKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIscGVyOm51bWJlciwncDQnKVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXhvZmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyKXtcclxuICAgICAgICAgICAgICAgIHZhciB4cGVyc29uYXM9cGVyc29uYXM7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5jdT09ZW5jICYmIGhvZz09aG9nYXIgJiYgISF4cGVyc29uYXMgJiYgcGVyPD0geHBlcnNvbmFzLmxlbmd0aCAmJiBwZXI+PTEgJiYgISF4cGVyc29uYXNbcGVyLTFdLnNleG8/IHhwZXJzb25hc1twZXItMV1bJ3NleG8nXTpudWxsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHNpdGNvbnlqZWZlKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIpe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdG9GYW1pbGlhcihlbmN1OnN0cmluZyxob2c6bnVtYmVyLDEsJ3A1JylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gKi9cclxuICAgIH1cclxufTsiXX0=
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1jYXNpbGxlcm9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VubG9nZ2VkL2hlbHBlcnMtY2FzaWxsZXJvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFDQSwrQ0FBb0M7SUFFdkIsUUFBQSxpQkFBaUIsR0FBRztRQUM3QixTQUFTLENBQUMsV0FBZ0I7WUFDdEIsSUFBSSxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxDQUFDO1lBQ2IsQ0FBQztZQUNELE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLENBQUMsU0FBaUIsRUFBRSxXQUFtQixFQUFFLEVBQVU7WUFDdEQsSUFBSSxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxHQUFHLEVBQUUsR0FBRyx3QkFBd0IsR0FBRyxTQUFTLENBQUMsQ0FBQztZQUM3RSxDQUFDO1lBQ0QsT0FBTyxTQUFTLEdBQUcsV0FBVyxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLEVBQUU7WUFDRixNQUFNLENBQUMsQ0FBTTtnQkFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDeEIsQ0FBQztZQUNELEdBQUc7Z0JBQ0MsT0FBTyxtQkFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQy9CLENBQUM7WUFDRCxZQUFZLENBQUMsQ0FBUztnQkFDbEIsSUFBSSxjQUFjLEdBQUcsOERBQThELENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUMzRixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ2xCLE9BQU8sS0FBSyxDQUFDO2dCQUNqQixDQUFDO2dCQUNELE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxD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SSxJQUFJLElBQUksWUFBWTtvQkFDakQsYUFBYSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsbUJBQW1CO2lCQUNoRCxDQUFBO1lBQ0wsQ0FBQztZQUNELHFJQUFxSTtZQUNySSwySUFBMkk7WUFDM0ksK0ZBQStGO1lBQy9GLEdBQUc7WUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBbUNJO1NBQ1A7S0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBkYXRlIH0gZnJvbSBcImJlc3QtZ2xvYmFsc1wiO1xuXG5leHBvcnQgY29uc3QgaGVscGVyc0Nhc2lsbGVyb3MgPSB7XG4gICAgbnVsbDJ6ZXJvKHBvc2libGVOdWxsOiBhbnkpIHtcbiAgICAgICAgaWYgKHBvc2libGVOdWxsID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwb3NpYmxlTnVsbDtcbiAgICB9LFxuICAgIGRpdjBlcnIobnVtZXJhZG9yOiBudW1iZXIsIGRlbm9taW5hZG9yOiBudW1iZXIsIHBrOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKGRlbm9taW5hZG9yID09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVycm9yIGVuIFwiICsgcGsgKyBcIiBkaXZpc2lvbiBwb3IgY2VybyBkZSBcIiArIG51bWVyYWRvcik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bWVyYWRvciAvIGRlbm9taW5hZG9yO1xuICAgIH0sXG4gICAgZnVuczoge1xuICAgICAgICBibGFuY28oeDogYW55KSB7XG4gICAgICAgICAgICByZXR1cm4geCAhPT0gMCAmJiAheFxuICAgICAgICB9LFxuICAgICAgICBob3koKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b2RheSgpLnRvRG15KClcbiAgICAgICAgfSxcbiAgICAgICAgZmVjaGFfdmFsaWRhKHg6IHN0cmluZykge1xuICAgICAgICAgICAgdmFyIGZvcm1hdG9fdmFsaWRvID0gL14oWzEtOV18MFsxLTldfFsxMl1cXGR8M1swMV0pXFwvKFsxLTldfDBbMS05XXwxWzAxMl0pXFwvMjBcXGRcXGQkLy50ZXN0KHgpXG4gICAgICAgICAgICBpZiAoIWZvcm1hdG9fdmFsaWRvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgW2QsIG0sIHldID0geC5zcGxpdCgnLycpLm1hcChOdW1iZXIpO1xuICAgICAgICAgICAgLy8gbmV3IERhdGUgbm8gZmFsbGEgY29uIGZlY2hhcyBpbmV4aXN0ZW50ZXMgKDMxLzAyIHBhc2EgYSAwMy8wMyksIGhheSBxdWUgdmVyaWZpY2FyIHF1ZSBubyBzZSBjb3JyYVxuICAgICAgICAgICAgdmFyIHhEYXRlID0gbmV3IERhdGUoeSwgbSAtIDEsIGQpO1xuICAgICAgICAgICAgLy9mYWx0YXJpYSB2YWxpZGFyIHF1ZSBubyBzZWEgdW5hIGZlY2hhIGZ1dHVyYSB5IHF1ZSBzZWEgdW5hIGZlY2hhIGVuIGVsIHJhbmdvIGRlbCBvcGVyYXRpdm9cbiAgICAgICAgICAgIHJldHVybiB4RGF0ZS5nZXRGdWxsWWVhcigpID09IHkgJiYgeERhdGUuZ2V0TW9udGgoKSA9PSBtIC0gMSAmJiB4RGF0ZS5nZXREYXRlKCkgPT0gZFxuICAgICAgICB9LFxuICAgICAgICBtZXNhbmlvX3ZhbGlkbyh4OiBzdHJpbmcpIHtcbiAgICAgICAgICAgIHZhciBmb3JtYXRvX3ZhbGlkbyA9IC9eKFsxLTldfDBbMS05XXwxWzAxMl0pXFwvKDE5fDIwKVxcZFxcZCQvLnRlc3QoeClcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRvX3ZhbGlkb1xuICAgICAgICB9LFxuICAgICAgICBpbmZvcm1hZG8oeDogYW55KSB7XG4gICAgICAgICAgICByZXR1cm4geCAhPT0gdW5kZWZpbmVkICYmIHggIT09IG51bGwgJiYgKCEoeCBpbnN0YW5jZW9mIEFycmF5KSB8fCB4Lmxlbmd0aCAhPT0gMClcbiAgICAgICAgICAgICAgICAmJiAoISh4IGluc3RhbmNlb2YgT2JqZWN0KSB8fCBPYmplY3Qua2V5cyh4KS5sZW5ndGggIT09IDApXG4gICAgICAgIH0sXG4gICAgICAgIG5zbmMoeDogYW55KSB7XG4gICAgICAgICAgICByZXR1cm4geCA9PSAtOVxuICAgICAgICB9LFxuICAgICAgICBwYXIoeDogbnVtYmVyKSB7XG4gICAgICAgICAgICByZXR1cm4geCAlIDIgPT0gMFxuICAgICAgICB9LFxuICAgICAgICBlZGFkX21lc19hbm5pb192YWxpZG8oZWRhZDogbnVtYmVyLCBtZXNBbm5pbzogc3RyaW5nLCBmZWNoYVJlYWxpemFjaW9uRERNTVlZWVk6IHN0cmluZykge1xuICAgICAgICAgICAgdmFyIG1lc2VzRGlmZXJlbmNpYSA9IChkMTogRGF0ZSwgZDI6IERhdGUpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgbW9udGhzO1xuICAgICAgICAgICAgICAgIG1vbnRocyA9IChkMi5nZXRGdWxsWWVhcigpIC0gZDEuZ2V0RnVsbFllYXIoKSkgKiAxMjtcbiAgICAgICAgICAgICAgICBtb250aHMgLT0gZDEuZ2V0TW9udGgoKTtcbiAgICAgICAgICAgICAgICBtb250aHMgKz0gZDIuZ2V0TW9udGgoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9udGhzIDw9IDAgPyAwIDogbW9udGhzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHBhcnRlc1JlYWxpemFjaW9uID0gZmVjaGFSZWFsaXphY2lvbkRETU1ZWVlZLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZSBsYXMgcGFydGVzIGNvcnJlc3BvbmRlbiBhIHVuYSBmZWNoYSB2w6FsaWRhXG4gICAgICAgICAgICB2YXIgdG9kYXkgPSBkYXRlLnltZChOdW1iZXIocGFydGVzUmVhbGl6YWNpb25bMl0pLCBOdW1iZXIocGFydGVzUmVhbGl6YWNpb25bMV0pLCBOdW1iZXIocGFydGVzUmVhbGl6YWNpb25bMF0pKVxuICAgICAgICAgICAgdmFyIHBhcnRlc01lc0FubmlvID0gbWVzQW5uaW8uc3BsaXQoJy8nKTtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZSBsYXMgcGFydGVzIGNvcnJlc3BvbmRlbiBhIHVuYSBmZWNoYSB2w6FsaWRhXG4gICAgICAgICAgICB2YXIgbmFjaW1pZW50byA9IGRhdGUueW1kKE51bWJlcihwYXJ0ZXNNZXNBbm5pb1sxXSksIE51bWJlcihwYXJ0ZXNNZXNBbm5pb1swXSksIDEpXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmUgUmVhbERhdGUgZXMgRGF0ZSB5IHNlIHB1ZWRlIHJlc3RhclxuICAgICAgICAgICAgdmFyIGRpZmVyZW5jaWFNZXNlcyA9IG1lc2VzRGlmZXJlbmNpYShuYWNpbWllbnRvLCB0b2RheSk7XG4gICAgICAgICAgICB2YXIgZWRhZERlY2ltYWxlcyA9IGRpZmVyZW5jaWFNZXNlcyAvIDEyOyAvL2VqIDM2LjVcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgTWF0aC5mbG9vcihlZGFkRGVjaW1hbGVzKSA9PSBlZGFkIHx8IC8vbWlzbWEgZWRhZFxuICAgICAgICAgICAgICAgIGVkYWREZWNpbWFsZXMgPT0gZWRhZCArIDEgLy9tZXMgZGUgdG9sZXJhbmNpYVxuICAgICAgICAgICAgKVxuICAgICAgICB9LFxuICAgICAgICAvL2NvcGlhcl9jYW1wb191YV9yYW1hKHJlc3B1ZXN0YXNPcmlnZW46UmVzcHVlc3Rhc1tdLCBwb3NpY2lvbjpudW1iZXIsIHZhcmlhYmxlT3JpZ2VuOiBJZFZhcmlhYmxlLCBjYW1pbm86c3RyaW5nLCBjb25kaWNpb246Ym9vbGVhbil7XG4gICAgICAgIC8vICAgIHJldHVybiBjb25kaWNpb24/KHJlc3B1ZXN0YXNPcmlnZW4gJiYgcmVzcHVlc3Rhc09yaWdlbltwb3NpY2lvbi0xXSAmJiByZXNwdWVzdGFzT3JpZ2VuW3Bvc2ljaW9uLTFdW2Ake2NhbWlub31gXVt2YXJpYWJsZU9yaWdlbl0pOm51bGxcbiAgICAgICAgLy8gICAgcmV0dXJuIGNvbmRpY2lvbj9ldmFsKGByZXNwdWVzdGFzT3JpZ2VuWyR7cG9zaWNpb24tMX1dLmArY2FtaW5vKycuJyt2YXJpYWJsZU9yaWdlbik6bnVsbDtcbiAgICAgICAgLy99XG4gICAgICAgIC8qXG4gICAgICAgIGRibzp7XG4gICAgICAgICAgICBkYXRvRmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyLCBkYXRvOnN0cmluZyl7XG4gICAgICAgICAgICAgICAgdmFyIHhwZXJzb25hcz1wZXJzb25hcztcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5jdT09ZW5jICYmIGhvZz09aG9nYXIgJiYgaW5mb3JtYWRvKHhwZXJzb25hcykgJiYgcGVyPD0geHBlcnNvbmFzLmxlbmd0aCAmJiBwZXI+PTEgJiYgISF4cGVyc29uYXNbcGVyLTFdW2RhdG9dPyB4cGVyc29uYXNbcGVyLTFdW2RhdG9dOm51bGxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlZGFkZmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyKXtcbiAgICAgICAgICAgICAgICB2YXIgeHBlcnNvbmFzPXBlcnNvbmFzO1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRvRmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyLCdlZGFkJylcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleGlzdGVpbmRpdmlkdWFsKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIscGVyOm51bWJlcil7XG4gICAgICAgICAgICAgICAgdmFyIHhwZXJzb25hcz1wZXJzb25hcztcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5jdT09ZW5jICYmIGhvZz09aG9nYXIgJiYgISFwZXJzb25hcyAmJiBwZXI8PSBwZXJzb25hcy5sZW5ndGggJiYgcGVyPj0xICYmICEhcGVyc29uYXNbcGVyLTFdWydlbnRyZWFpbmQnXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4aXN0ZW1pZW1icm8oZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyKXtcbiAgICAgICAgICAgICAgICB2YXIgeHBlcnNvbmFzPXBlcnNvbmFzO1xuICAgICAgICAgICAgICAgIHJldHVybiBlbmN1PT1lbmMgJiYgaG9nPT1ob2dhciAmJiAhIXBlcnNvbmFzICYmIHBlcjw9IHBlcnNvbmFzLmxlbmd0aCAmJiBwZXI+PTFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBucm9jb255dWdlcyhlbmN1OnN0cmluZyxob2c6bnVtYmVyKXtcbiAgICAgICAgICAgICAgICB2YXIgeHBlcnNvbmFzPXBlcnNvbmFzXG4gICAgICAgICAgICAgICAgcmV0dXJuIHhwZXJzb25hcy5maWx0ZXIoIHBlci0+cGVyLnA0PT0yKS5sZW5ndGhcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBucm9qZWZlcyhlbmN1OnN0cmluZyxob2c6bnVtYmVyLHBlcjpudW1iZXIpe1xuICAgICAgICAgICAgICAgIHJldHVybiBwZXJzb25hcy5maWx0ZXIoIHBlci0+cGVyLnA0PT0xKS5sZW5ndGhcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXJlbnRlc2NvZmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlcixwZXI6bnVtYmVyKXtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0b0ZhbWlsaWFyKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIscGVyOm51bWJlciwncDQnKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNleG9mYW1pbGlhcihlbmN1OnN0cmluZyxob2c6bnVtYmVyLHBlcjpudW1iZXIpe1xuICAgICAgICAgICAgICAgIHZhciB4cGVyc29uYXM9cGVyc29uYXM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuY3U9PWVuYyAmJiBob2c9PWhvZ2FyICYmICEheHBlcnNvbmFzICYmIHBlcjw9IHhwZXJzb25hcy5sZW5ndGggJiYgcGVyPj0xICYmICEheHBlcnNvbmFzW3Blci0xXS5zZXhvPyB4cGVyc29uYXNbcGVyLTFdWydzZXhvJ106bnVsbFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNpdGNvbnlqZWZlKGVuY3U6c3RyaW5nLGhvZzpudW1iZXIpe1xuICAgICAgICAgICAgICAgIHJldHVybiBkYXRvRmFtaWxpYXIoZW5jdTpzdHJpbmcsaG9nOm51bWJlciwxLCdwNScpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gKi9cbiAgICB9XG59OyJdfQ==
@@ -0,0 +1,16 @@
1
+ import type { IdComodin, IdFormulario, IdVariable } from "./tipos";
2
+ export declare const REGEX_SPLIT_COMODINES: RegExp;
3
+ export declare const IS_TEM_PATTERN: RegExp;
4
+ export declare const IS_VARIABLE_HASH_PATTERN: RegExp;
5
+ export declare const IS_COMODIN_REDUX_PATTERN: RegExp;
6
+ /** Extrae nombres de comodines estándar (@comodin@) */
7
+ export declare function extraerComodinesRedux(text: string): IdComodin[];
8
+ /** Extrae nombres de variables dinámicas (@#variable@) */
9
+ export declare function extraerVariablesInteres(text: string): string[];
10
+ export declare function getBFVarNames(salto: string | null): {
11
+ listo: IdVariable;
12
+ agregar: IdVariable;
13
+ idFormulario: IdFormulario;
14
+ };
15
+ export declare function replaceSpecialWords(text: string, nombre: string, apellido: string, resultado: string): string;
16
+ export declare function numberOrStringIncIfArray(numberOrString: number | string, object: object | any[]): (number | string);
@@ -0,0 +1,88 @@
1
+ // Funciones puras del formulario, sin dependencias de React, Redux ni del navegador
2
+ // (para poder testearlas en node)
3
+ (function (factory) {
4
+ if (typeof module === "object" && typeof module.exports === "object") {
5
+ var v = factory(require, exports);
6
+ if (v !== undefined) module.exports = v;
7
+ }
8
+ else if (typeof define === "function" && define.amd) {
9
+ define(["require", "exports"], factory);
10
+ }
11
+ })(function (require, exports) {
12
+ "use strict";
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.IS_COMODIN_REDUX_PATTERN = exports.IS_VARIABLE_HASH_PATTERN = exports.IS_TEM_PATTERN = exports.REGEX_SPLIT_COMODINES = void 0;
15
+ exports.extraerComodinesRedux = extraerComodinesRedux;
16
+ exports.extraerVariablesInteres = extraerVariablesInteres;
17
+ exports.getBFVarNames = getBFVarNames;
18
+ exports.replaceSpecialWords = replaceSpecialWords;
19
+ exports.numberOrStringIncIfArray = numberOrStringIncIfArray;
20
+ // RegEx principal para dividir el texto conservando los tokens delimitados por @...@
21
+ exports.REGEX_SPLIT_COMODINES = /(@(?:#?[\w-]+|\$[tT][eE][mM][^@]*)@)/g;
22
+ // Sub-RegExs para identificar el tipo de comodín
23
+ exports.IS_TEM_PATTERN = /^@\$(tem[^@]*)@$/i;
24
+ exports.IS_VARIABLE_HASH_PATTERN = /^@#([\w-]+)@$/;
25
+ exports.IS_COMODIN_REDUX_PATTERN = /^@([\w-]+)@$/;
26
+ /** Extrae nombres de comodines estándar (@comodin@) */
27
+ function extraerComodinesRedux(text) {
28
+ if (!text || !text.includes('@'))
29
+ return [];
30
+ const matches = text.match(/@([a-zA-Z0-9_-]+)@/g);
31
+ if (!matches)
32
+ return [];
33
+ const ids = [];
34
+ for (const m of matches) {
35
+ if (!m.startsWith('@#') && !m.startsWith('@$')) {
36
+ const id = m.slice(1, -1);
37
+ if (!ids.includes(id))
38
+ ids.push(id);
39
+ }
40
+ }
41
+ return ids;
42
+ }
43
+ /** Extrae nombres de variables dinámicas (@#variable@) */
44
+ function extraerVariablesInteres(text) {
45
+ if (!text)
46
+ return [];
47
+ const matches = text.match(/@#([\w-]+)@/g);
48
+ if (!matches)
49
+ return [];
50
+ const vars = [];
51
+ for (const m of matches) {
52
+ const varName = m.slice(2, -1); // Remueve '@#' y '@'
53
+ if (!vars.includes(varName))
54
+ vars.push(varName);
55
+ }
56
+ return vars;
57
+ }
58
+ function getBFVarNames(salto) {
59
+ const armoNomSalto = (salto === null || salto === void 0 ? void 0 : salto.substring(0, 2)) == 'F:' ? salto.slice(2) : salto;
60
+ return {
61
+ listo: '$B.F:' + armoNomSalto,
62
+ agregar: '$B.F:' + armoNomSalto + '_agregar',
63
+ idFormulario: 'F:' + armoNomSalto
64
+ };
65
+ }
66
+ function replaceSpecialWords(text, nombre, apellido, resultado) {
67
+ function capitalizeFirstLetter(text) {
68
+ return text.charAt(0).toUpperCase() + text.slice(1);
69
+ }
70
+ var simplificatedChars = {
71
+ "#nombre": capitalizeFirstLetter(nombre),
72
+ "#apellido": capitalizeFirstLetter(apellido),
73
+ "#resultado": resultado,
74
+ };
75
+ var re = new RegExp(Object.keys(simplificatedChars).join("|"), "gi");
76
+ return text.replace(re, function (matched) {
77
+ return simplificatedChars[matched.toLowerCase()];
78
+ });
79
+ }
80
+ function numberOrStringIncIfArray(numberOrString, object) {
81
+ // @ts-expect-error estoy usando isNaN para ver si es o no un número sumable
82
+ if (isNaN(numberOrString)) {
83
+ return numberOrString;
84
+ }
85
+ return Number(numberOrString) + (object instanceof Array ? 1 : 0);
86
+ }
87
+ });
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy1mb3JtdWxhcmlvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3VubG9nZ2VkL2hlbHBlcnMtZm9ybXVsYXJpby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvRkFBb0Y7QUFDcEYsa0NBQWtDOzs7Ozs7Ozs7Ozs7O0lBYWxDLHNEQWFDO0lBR0QsMERBV0M7SUFFRCxzQ0FPQztJQUVELGtEQWNDO0lBRUQsNERBTUM7SUFyRUQscUZBQXFGO0lBQ3hFLFFBQUEscUJBQXFCLEdBQUcsdUNBQXVDLENBQUM7SUFFN0UsaURBQWlEO0lBQ3BDLFFBQUEsY0FBYyxHQUFHLG1CQUFtQixDQUFDO0lBQ3JDLFFBQUEsd0JBQXdCLEdBQUcsZUFBZSxDQUFDO0lBQzNDLFFBQUEsd0JBQXdCLEdBQUcsY0FBYyxDQUFDO0lBRXZELHVEQUF1RDtJQUN2RCxTQUFnQixxQkFBcUIsQ0FBQyxJQUFZO1FBQzlDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzVDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRXhCLE1BQU0sR0FBRyxHQUFnQixFQUFFLENBQUM7UUFDNUIsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQWMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCwwREFBMEQ7SUFDMUQsU0FBZ0IsdUJBQXVCLENBQUMsSUFBWTtRQUNoRCxJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUV4QixNQUFNLElBQUksR0FBYSxFQUFFLENBQUM7UUFDMUIsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN0QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCO1lBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsU0FBZ0IsYUFBYSxDQUFDLEtBQW9CO1FBQzlDLE1BQU0sWUFBWSxHQUFHLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDN0UsT0FBTztZQUNILEtBQUssRUFBRSxPQUFPLEdBQUcsWUFBMEI7WUFDM0MsT0FBTyxFQUFFLE9BQU8sR0FBRyxZQUFZLEdBQUcsVUFBd0I7WUFDMUQsWUFBWSxFQUFFLElBQUksR0FBRyxZQUE0QjtTQUNwRCxDQUFDO0lBQ04sQ0FBQztJQUVELFNBQWdCLG1CQUFtQixDQUFDLElBQVksRUFBRSxNQUFjLEVBQUUsUUFBZ0IsRUFBRSxTQUFpQjtRQUNqRyxTQUFTLHFCQUFxQixDQUFDLElBQVk7WUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUNELElBQUksa0JBQWtCLEdBQTRCO1lBQzlDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxNQUFNLENBQUM7WUFDeEMsV0FBVyxFQUFFLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztZQUM1QyxZQUFZLEVBQUUsU0FBUztTQUMxQixDQUFDO1FBQ0YsSUFBSSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVyRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsT0FBTztZQUNyQyxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQWdCLHdCQUF3QixDQUFDLGNBQStCLEVBQUUsTUFBc0I7UUFDNUYsNEVBQTRFO1FBQzVFLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDeEIsT0FBTyxjQUFjLENBQUM7UUFDMUIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRnVuY2lvbmVzIHB1cmFzIGRlbCBmb3JtdWxhcmlvLCBzaW4gZGVwZW5kZW5jaWFzIGRlIFJlYWN0LCBSZWR1eCBuaSBkZWwgbmF2ZWdhZG9yXG4vLyAocGFyYSBwb2RlciB0ZXN0ZWFybGFzIGVuIG5vZGUpXG5cbmltcG9ydCB0eXBlIHsgSWRDb21vZGluLCBJZEZvcm11bGFyaW8sIElkVmFyaWFibGUgfSBmcm9tIFwiLi90aXBvc1wiO1xuXG4vLyBSZWdFeCBwcmluY2lwYWwgcGFyYSBkaXZpZGlyIGVsIHRleHRvIGNvbnNlcnZhbmRvIGxvcyB0b2tlbnMgZGVsaW1pdGFkb3MgcG9yIEAuLi5AXG5leHBvcnQgY29uc3QgUkVHRVhfU1BMSVRfQ09NT0RJTkVTID0gLyhAKD86Iz9bXFx3LV0rfFxcJFt0VF1bZUVdW21NXVteQF0qKUApL2c7XG5cbi8vIFN1Yi1SZWdFeHMgcGFyYSBpZGVudGlmaWNhciBlbCB0aXBvIGRlIGNvbW9kw61uXG5leHBvcnQgY29uc3QgSVNfVEVNX1BBVFRFUk4gPSAvXkBcXCQodGVtW15AXSopQCQvaTtcbmV4cG9ydCBjb25zdCBJU19WQVJJQUJMRV9IQVNIX1BBVFRFUk4gPSAvXkAjKFtcXHctXSspQCQvO1xuZXhwb3J0IGNvbnN0IElTX0NPTU9ESU5fUkVEVVhfUEFUVEVSTiA9IC9eQChbXFx3LV0rKUAkLztcblxuLyoqIEV4dHJhZSBub21icmVzIGRlIGNvbW9kaW5lcyBlc3TDoW5kYXIgKEBjb21vZGluQCkgKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWVyQ29tb2RpbmVzUmVkdXgodGV4dDogc3RyaW5nKTogSWRDb21vZGluW10ge1xuICAgIGlmICghdGV4dCB8fCAhdGV4dC5pbmNsdWRlcygnQCcpKSByZXR1cm4gW107XG4gICAgY29uc3QgbWF0Y2hlcyA9IHRleHQubWF0Y2goL0AoW2EtekEtWjAtOV8tXSspQC9nKTtcbiAgICBpZiAoIW1hdGNoZXMpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGlkczogSWRDb21vZGluW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IG0gb2YgbWF0Y2hlcykge1xuICAgICAgICBpZiAoIW0uc3RhcnRzV2l0aCgnQCMnKSAmJiAhbS5zdGFydHNXaXRoKCdAJCcpKSB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IG0uc2xpY2UoMSwgLTEpIGFzIElkQ29tb2RpbjtcbiAgICAgICAgICAgIGlmICghaWRzLmluY2x1ZGVzKGlkKSkgaWRzLnB1c2goaWQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHM7XG59XG5cbi8qKiBFeHRyYWUgbm9tYnJlcyBkZSB2YXJpYWJsZXMgZGluw6FtaWNhcyAoQCN2YXJpYWJsZUApICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFlclZhcmlhYmxlc0ludGVyZXModGV4dDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGlmICghdGV4dCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IG1hdGNoZXMgPSB0ZXh0Lm1hdGNoKC9AIyhbXFx3LV0rKUAvZyk7XG4gICAgaWYgKCFtYXRjaGVzKSByZXR1cm4gW107XG5cbiAgICBjb25zdCB2YXJzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgbSBvZiBtYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IHZhck5hbWUgPSBtLnNsaWNlKDIsIC0xKTsgLy8gUmVtdWV2ZSAnQCMnIHkgJ0AnXG4gICAgICAgIGlmICghdmFycy5pbmNsdWRlcyh2YXJOYW1lKSkgdmFycy5wdXNoKHZhck5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJGVmFyTmFtZXMoc2FsdG86IHN0cmluZyB8IG51bGwpIHtcbiAgICBjb25zdCBhcm1vTm9tU2FsdG8gPSBzYWx0bz8uc3Vic3RyaW5nKDAsIDIpID09ICdGOicgPyBzYWx0by5zbGljZSgyKSA6IHNhbHRvO1xuICAgIHJldHVybiB7XG4gICAgICAgIGxpc3RvOiAnJEIuRjonICsgYXJtb05vbVNhbHRvIGFzIElkVmFyaWFibGUsXG4gICAgICAgIGFncmVnYXI6ICckQi5GOicgKyBhcm1vTm9tU2FsdG8gKyAnX2FncmVnYXInIGFzIElkVmFyaWFibGUsXG4gICAgICAgIGlkRm9ybXVsYXJpbzogJ0Y6JyArIGFybW9Ob21TYWx0byBhcyBJZEZvcm11bGFyaW9cbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxXb3Jkcyh0ZXh0OiBzdHJpbmcsIG5vbWJyZTogc3RyaW5nLCBhcGVsbGlkbzogc3RyaW5nLCByZXN1bHRhZG86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGV4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHRleHQuc2xpY2UoMSk7XG4gICAgfVxuICAgIHZhciBzaW1wbGlmaWNhdGVkQ2hhcnM6IHsgW2s6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAgICAgICBcIiNub21icmVcIjogY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKG5vbWJyZSksXG4gICAgICAgIFwiI2FwZWxsaWRvXCI6IGNhcGl0YWxpemVGaXJzdExldHRlcihhcGVsbGlkbyksXG4gICAgICAgIFwiI3Jlc3VsdGFkb1wiOiByZXN1bHRhZG8sXG4gICAgfTtcbiAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKHNpbXBsaWZpY2F0ZWRDaGFycykuam9pbihcInxcIiksIFwiZ2lcIik7XG5cbiAgICByZXR1cm4gdGV4dC5yZXBsYWNlKHJlLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgICAgICByZXR1cm4gc2ltcGxpZmljYXRlZENoYXJzW21hdGNoZWQudG9Mb3dlckNhc2UoKV07XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJPclN0cmluZ0luY0lmQXJyYXkobnVtYmVyT3JTdHJpbmc6IG51bWJlciB8IHN0cmluZywgb2JqZWN0OiBvYmplY3QgfCBhbnlbXSk6IChudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGVzdG95IHVzYW5kbyBpc05hTiBwYXJhIHZlciBzaSBlcyBvIG5vIHVuIG7Dum1lcm8gc3VtYWJsZVxuICAgIGlmIChpc05hTihudW1iZXJPclN0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlck9yU3RyaW5nO1xuICAgIH1cbiAgICByZXR1cm4gTnVtYmVyKG51bWJlck9yU3RyaW5nKSArIChvYmplY3QgaW5zdGFuY2VvZiBBcnJheSA/IDEgOiAwKTtcbn1cbiJdfQ==
@@ -361,7 +361,7 @@ export declare const dispatchers: import("redux-typed-reducer").ReturnsTheSameTh
361
361
  }) => (state: CasoState) => CasoState;
362
362
  CAMBIAR_COMODINES: (payload: Record<IdComodin, string>) => (state: CasoState) => CasoState;
363
363
  }, "payload">;
364
- export declare function replaceSpecialWords(text: string, nombre: string, apellido: string, resultado: string): string;
364
+ export { replaceSpecialWords } from "./helpers-formulario";
365
365
  export declare function gotoConsistir(operativo: IdOperativo, tarea: IdTarea, enc: IdEnc): void;
366
366
  export declare function adaptarEstructura(estructuraBackend: any): Estructura;
367
367
  export declare function crearStoreFormulario(opts: {
@@ -437,4 +437,3 @@ export declare function crearStoreFormulario(opts: {
437
437
  payload: Record<IdComodin, string>;
438
438
  })>>;
439
439
  export declare function getStoreFormulario(): Store<unknown, import("redux").Action<any>> | null;
440
- export {};
@@ -13,13 +13,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
13
13
  if (v !== undefined) module.exports = v;
14
14
  }
15
15
  else if (typeof define === "function" && define.amd) {
16
- define(["require", "exports", "redux", "./tipos", "redux-typed-reducer", "like-ar", "json4all", "./render-config"], factory);
16
+ define(["require", "exports", "redux", "./tipos", "redux-typed-reducer", "like-ar", "json4all", "./render-config", "./helpers-formulario"], factory);
17
17
  }
18
18
  })(function (require, exports) {
19
19
  "use strict";
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.dispatchers = exports.comodinesIniciales = void 0;
22
- exports.replaceSpecialWords = replaceSpecialWords;
21
+ exports.replaceSpecialWords = exports.dispatchers = exports.comodinesIniciales = void 0;
23
22
  exports.gotoConsistir = gotoConsistir;
24
23
  exports.adaptarEstructura = adaptarEstructura;
25
24
  exports.crearStoreFormulario = crearStoreFormulario;
@@ -124,27 +123,36 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
124
123
  casillerosData.childs.map(casillero => aplanarLaCurva(casillero)) });
125
124
  }
126
125
  // type AnyRef<T extends {}>=[T, keyof T];
126
+ // Variable de un botón de formulario: no es libre (así el rowValidator la ve) y cualquier valor cargado es válido.
127
+ // Antes se definía como {tipovar:'opciones', casilleros:[...]}, pero el rowValidator ignora esos campos
128
+ // (sólo mira tipo/opciones) y la validaba como texto; se deja explícito ese mismo comportamiento.
129
+ function variableBotonFormulario() {
130
+ return { tipo: 'texto' };
131
+ }
127
132
  function rellenarVariablesYOpciones(idFormulario, estructura, casillero, unidadAnalisis, subordinadaVar, subordinadaValor) {
128
- if (casillero.var_name != null || casillero.tipoc == 'FILTRO') {
133
+ var _a;
134
+ var varNameCasillero = casillero.var_name;
135
+ if (varNameCasillero != null || casillero.tipoc == 'FILTRO') {
129
136
  var var_name;
130
- if (casillero.tipoc == 'FILTRO') {
137
+ if (varNameCasillero == null) {
138
+ // es un FILTRO (los filtros no tienen var_name)
131
139
  // @ts-ignore pongo como nombre de variable el filtro;
132
140
  var_name = casillero.casillero;
133
141
  }
134
- else if (casillero.var_name.endsWith('!')) {
142
+ else if (varNameCasillero.endsWith('!')) {
135
143
  // @ts-ignore las variables espejo son las que terminan en !
136
144
  var_name = casillero.var_name_especial.replace(/!+$/, '');
137
145
  casillero.var_name = var_name;
138
146
  }
139
147
  else {
140
- var_name = casillero.var_name;
148
+ var_name = varNameCasillero;
141
149
  }
142
150
  let variableDef = {
143
151
  tipo: casillero.tipoc == 'FILTRO' ? 'filtro' : casillero.tipoc == 'OM' || casillero.tipovar == 'si_no' ? 'opciones' : casillero.tipovar,
144
152
  // @ts-ignore optativo podría no existir, quedará null.
145
153
  optativa: casillero.optativo,
146
154
  opciones: (casillero.tipoc == 'OM' || casillero.tipovar == 'opciones' || casillero.tipovar == 'si_no' ?
147
- likeAr.createIndex(casillero.casilleros, 'casillero') : {}),
155
+ likeAr.createIndex((_a = casillero.casilleros) !== null && _a !== void 0 ? _a : [], 'casillero') : {}),
148
156
  salto: casillero.salto,
149
157
  saltoNsNr: casillero.salto_ns_nc || null,
150
158
  funcionHabilitar: casillero.expresion_habilitar_js,
@@ -169,18 +177,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
169
177
  if (requiereAgregar) {
170
178
  var newVarNameAgregar = '$B.F:' + saltoNombre + '_agregar';
171
179
  casillero.var_names_BF.push(newVarNameAgregar);
172
- estructura.variables[newVarNameAgregar] = {
173
- tipovar: 'opciones',
174
- casilleros: [{ tipoc: 'O', casillero: 1, nombre: 'si' }], // se usa para que no sea libre y el rowValidator la vea
175
- };
180
+ estructura.variables[newVarNameAgregar] = variableBotonFormulario();
176
181
  casillero.primera_variable = newVarNameAgregar;
177
182
  }
178
183
  var newVarName = '$B.F:' + saltoNombre;
179
184
  casillero.var_names_BF.push(newVarName);
180
- estructura.variables[newVarName] = {
181
- tipovar: 'opciones',
182
- casilleros: [{ tipoc: 'O', casillero: 1, nombre: 'si' }], // se usa para que no sea libre y el rowValidator la vea
183
- };
185
+ estructura.variables[newVarName] = variableBotonFormulario();
184
186
  casillero.primera_variable = casillero.primera_variable || newVarName;
185
187
  }
186
188
  if (casillero.casilleros) {
@@ -215,20 +217,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
215
217
  var destinos = obtenerDestinosCasilleros(casillero);
216
218
  return rellenarDestinos(estructuraIncompleta, destinos);
217
219
  }
218
- function replaceSpecialWords(text, nombre, apellido, resultado) {
219
- function capitalizeFirstLetter(text) {
220
- return text.charAt(0).toUpperCase() + text.slice(1);
221
- }
222
- var simplificatedChars = {
223
- "#nombre": capitalizeFirstLetter(nombre),
224
- "#apellido": capitalizeFirstLetter(apellido),
225
- "#resultado": resultado,
226
- };
227
- var re = new RegExp(Object.keys(simplificatedChars).join("|"), "gi");
228
- return text.replace(re, function (matched) {
229
- return simplificatedChars[matched.toLowerCase()];
230
- });
231
- }
220
+ var helpers_formulario_1 = require("./helpers-formulario");
221
+ Object.defineProperty(exports, "replaceSpecialWords", { enumerable: true, get: function () { return helpers_formulario_1.replaceSpecialWords; } });
232
222
  function gotoConsistir(operativo, tarea, enc) {
233
223
  // TODO-2023-03: probar con esto:
234
224
  history.replaceState(null, '', `${location.origin + location.pathname}/../menu#w=consistir_encuesta&up=${JSON4all.toUrl({ operativo, tarea, enc })}&autoproced=true`);
@@ -321,4 +311,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
321
311
  return storeFormularioInstance;
322
312
  }
323
313
  });
324
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtZm9ybXVsYXJpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQThWQSxrREFjQztJQUVELHNDQUtDO0lBRUQsOENBb0JDO0lBTUQsb0RBaUVDO0lBRUQsZ0RBS0M7SUF2ZEQsaUNBQTJDO0lBQzNDLG1DQWVpQjtJQUNqQiw2REFBb0Y7SUFDcEYsa0NBQWtDO0lBRWxDLHFDQUFxQztJQUdyQyxtREFBa0Q7SUFFbEQsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRWYsU0FBUyxVQUFVLENBQUMsS0FBbUIsRUFBRSxTQUFrQjtRQUN2RCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLEtBQUssQ0FBQyxpQkFBaUIsaUNBQ2hCLFVBQVUsS0FDYixXQUFXLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFBLG9CQUFZLEVBQUMsS0FBSyxDQUFDLEVBQ3pELGVBQWUsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQ3hELENBQUM7SUFDUCxDQUFDO0lBRVksUUFBQSxrQkFBa0IsR0FBOEI7UUFDekQsU0FBUyxFQUFFLFdBQVc7UUFDdEIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsU0FB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dUIsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBQ0QsT0FBTyx1QkFBdUIsQ0FBQztJQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU3RvcmUsIFN0b3JlIH0gZnJvbSBcInJlZHV4XCI7XHJcbmltcG9ydCB7XHJcbiAgICBDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgQ2Fzb1N0YXRlLFxyXG4gICAgRXN0YWRvQ2FyZ2EsIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsXHJcbiAgICBGb3JtdWxhcmlvLCBGb3JQaywgRm9yUGtSYWl6LFxyXG4gICAgSWRDYXJnYSwgSWREZXN0aW5vLCBJZEZvcm11bGFyaW8sIElkVmFyaWFibGUsIElkT3BlcmF0aXZvLFxyXG4gICAgTW9kb0Rlc3BsaWVndWUsXHJcbiAgICBPcGNpb24sXHJcbiAgICB0b1BsYWluRm9yUGssXHJcbiAgICBJZEZpbixcclxuICAgIElkRW5jLFxyXG4gICAgSWRUYXJlYSxcclxuICAgIEVzdHJ1Y3R1cmEsXHJcbiAgICBNb2RvRE0sXHJcbiAgICBQYW50YWxsYU5hdmVnYWNpb24sXHJcbiAgICBJZENvbW9kaW4sXHJcbn0gZnJvbSBcIi4vdGlwb3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgY3JlYXRlRGlzcGF0Y2hlcnMsIEFjdGlvbnNGcm9tIH0gZnJvbSBcInJlZHV4LXR5cGVkLXJlZHVjZXJcIjtcclxuaW1wb3J0ICogYXMgbGlrZUFyIGZyb20gXCJsaWtlLWFyXCI7XHJcbmltcG9ydCAqIGFzIGJlc3RHbG9iYWxzIGZyb20gXCJiZXN0LWdsb2JhbHNcIjtcclxuaW1wb3J0ICogYXMgSlNPTjRhbGwgZnJvbSBcImpzb240YWxsXCI7XHJcblxyXG5pbXBvcnQgeyBPcGNpb24gYXMgUm93VmFsaWRhdG9yT3BjaW9uIH0gZnJvbSBcInJvdy12YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgZ2V0Rm9ybVJlbmRlcmVyIH0gZnJvbSBcIi4vcmVuZGVyLWNvbmZpZ1wiO1xyXG5cclxudmFyIG15ID0gbXlPd247XHJcblxyXG5mdW5jdGlvbiBmb3JQa1RvVXJsKGZvclBrOiBGb3JQayB8IG51bGwsIHBpbGFGb3JQazogRm9yUGtbXSkge1xyXG4gICAgdmFyIGFkZHJQYXJhbXMgPSBteU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNoIHx8IGxvY2F0aW9uLnNlYXJjaCB8fCAnJyk7XHJcbiAgICBteU93bi5yZXBsYWNlQWRkclBhcmFtcyh7XHJcbiAgICAgICAgLi4uYWRkclBhcmFtcyxcclxuICAgICAgICBzdGF0ZV9mb3JQazogZm9yUGsgPT0gbnVsbCA/ICdudWxsJyA6IHRvUGxhaW5Gb3JQayhmb3JQayksXHJcbiAgICAgICAgc3RhdGVfcGlsYUZvclBrOiBwaWxhRm9yUGsubWFwKHRvUGxhaW5Gb3JQaykuam9pbignfCcpXHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbW9kaW5lc0luaWNpYWxlczogUmVjb3JkPElkQ29tb2Rpbiwgc3RyaW5nPiA9IHtcclxuICAgICdTRU1fUkVGJzogJ0BTRU1fUkVGQCcsXHJcbiAgICAnRDMwX1JFRic6ICdARDMwX1JFRkAnLFxyXG4gICAgJ01FU19SRUYnOiAnQE1FU19SRUZAJyxcclxuICAgICdTRU1fTlVNJzogJ0BTRU1fTlVNQCcsXHJcbiAgICAncmVzcHMxJzogJ0ByZXNwczFAJyxcclxuICAgICdwYXJlbnRzMSc6ICdAcGFyZW50czFAJyxcclxuICAgICdyZXNwaTEnOiAnQHJlc3BpMUAnLFxyXG4gICAgJ3BhcmVudGkxJzogJ0BwYXJlbnRpMUAnLFxyXG4gICAgJ25qZWZlJzogJ0BuamVmZUAnLFxyXG4gICAgJ2ZyZWFsaXonOiAnQGZyZWFsaXpAJyxcclxuICAgICdjYW50X2hvZ2FyZXMnOiAnQGNhbnRfaG9nYXJlc0AnXHJcbn07XHJcblxyXG52YXIgcmVkdWNlcnMgPSB7XHJcbiAgICBNT0RPX0RFU1BMSUVHVUU6IChwYXlsb2FkOiB7IG1vZG9EZXNwbGllZ3VlOiBNb2RvRGVzcGxpZWd1ZSB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kb0Rlc3BsaWVndWU6IHBheWxvYWQubW9kb0Rlc3BsaWVndWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBDQU1CSUFSX01PRE9fRE06IChwYXlsb2FkOiB7IG1vZG9ETTogTW9kb0RNIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBtb2RvRE06IHBheWxvYWQubW9kb0RNXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ0FNQklBUl9GT1JNVUxBUklPOiAocGF5bG9hZDogeyBmb3JQazogRm9yUGssIGFwaWxhclZ1ZWx0YTogYm9vbGVhbiB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IHBheWxvYWQuZm9yUGs7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGsgPSBwYXlsb2FkLmFwaWxhclZ1ZWx0YSA/IChcclxuICAgICAgICAgICAgICAgIHN0YXRlLm9wY2lvbmVzLmZvclBrID09IG51bGwgPyBbXSA6IFsuLi5zdGF0ZS5vcGNpb25lcy5waWxhRm9yUGssIHN0YXRlLm9wY2lvbmVzLmZvclBrXVxyXG4gICAgICAgICAgICApIDogc3RhdGUub3BjaW9uZXMucGlsYUZvclBrO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpbGFGb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFZPTFZFUl9ERV9GT1JNVUxBUklPOiAoeyBtYWduaXR1ZFJldHJvY2VzbyB9OiB7IG1hZ25pdHVkUmV0cm9jZXNvOiBudW1iZXIgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGtbc3RhdGUub3BjaW9uZXMucGlsYUZvclBrLmxlbmd0aCAtIG1hZ25pdHVkUmV0cm9jZXNvXSB8fCBudWxsO1xyXG4gICAgICAgICAgICB2YXIgcGlsYUZvclBrID0gc3RhdGUub3BjaW9uZXMucGlsYUZvclBrLnNsaWNlKDAsIHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQay5sZW5ndGggLSBtYWduaXR1ZFJldHJvY2Vzbyk7XHJcbiAgICAgICAgICAgIGZvclBrVG9VcmwoZm9yUGssIHBpbGFGb3JQayk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgVk9MVkVSX0hEUjogKF9wYXlsb2FkOiB7fSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBudWxsO1xyXG4gICAgICAgICAgICB2YXIgcGlsYUZvclBrOiBGb3JQa1tdID0gW107XHJcbiAgICAgICAgICAgIGZvclBrVG9VcmwoZm9yUGssIHBpbGFGb3JQayk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgU0VUX09QQ0lPTjogKHBheWxvYWQ6IHsgb3BjaW9uOiBrZXlvZiBDYXNvU3RhdGVbJ29wY2lvbmVzJ10sIHZhbG9yOiBhbnkgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vc2kgY2FtYmlhIGRlIHBhbnRhbGxhIHBvciBhY8OhIHJlc2V0ZW8gZWwgYXZpc28gcG9yIGxhcyBkdWRhc1xyXG4gICAgICAgICAgICAgICAgICAgIGF2aXNvUGVyc2lzdGVudGU6IHBheWxvYWQub3BjaW9uID09ICdwYW50YWxsYUFjdHVhbCcgPyBudWxsIDogc3RhdGUub3BjaW9uZXMuYXZpc29QZXJzaXN0ZW50ZSxcclxuICAgICAgICAgICAgICAgICAgICBbcGF5bG9hZC5vcGNpb25dOiBwYXlsb2FkLnZhbG9yXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgUkVTRVRfT1BDSU9ORVM6IChfcGF5bG9hZDoge30pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBwYW50YWxsYUFjdHVhbDogJ2hkcicsXHJcbiAgICAgICAgICAgICAgICAgICAgYXZpc29QZXJzaXN0ZW50ZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQazogbnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFNFVF9QQU5UQUxMQV9BQ1RVQUw6IChwYXlsb2FkOiB7IHBhbnRhbGxhOiBQYW50YWxsYU5hdmVnYWNpb24sIGF2aXNvUGVyc2lzdGVudGU6IHsgdGlwbzogJ2luZm8nIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJywgbWVuc2FqZTogc3RyaW5nIH0gfCBudWxsIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBwYW50YWxsYUFjdHVhbDogcGF5bG9hZC5wYW50YWxsYSxcclxuICAgICAgICAgICAgICAgICAgICBhdmlzb1BlcnNpc3RlbnRlOiBwYXlsb2FkLmF2aXNvUGVyc2lzdGVudGUgfHwgbnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENPTkZJUk1BUl9CT1JSQVJfUkVTUFVFU1RBOiAocGF5bG9hZDogeyBmb3JQazogRm9yUGssIHZhcmlhYmxlOiBJZFZhcmlhYmxlIHwgbnVsbCB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGs6IHBheWxvYWQuZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTogcGF5bG9hZC52YXJpYWJsZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENBTUJJQVJfQ09NT0RJTjogKHBheWxvYWQ6IHsgaWRDb21vZGluOiBJZENvbW9kaW4sIHZhbG9yOiBhbnkgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBhY3R1YWwgPSBzdGF0ZS5vcGNpb25lcz8uY29tb2RpbmVzIHx8IGNvbW9kaW5lc0luaWNpYWxlcztcclxuICAgICAgICAgICAgaWYgKGFjdHVhbFtwYXlsb2FkLmlkQ29tb2Rpbl0gPT09IHBheWxvYWQudmFsb3IpIHJldHVybiBzdGF0ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBjb21vZGluZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWN0dWFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGF5bG9hZC5pZENvbW9kaW5dOiBwYXlsb2FkLnZhbG9yXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENBTUJJQVJfQ09NT0RJTkVTOiAocGF5bG9hZDogUmVjb3JkPElkQ29tb2Rpbiwgc3RyaW5nPikgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBDaGVxdWVvIGRlIGlndWFsZGFkIHN1cGVyZmljaWFsIHBhcmEgZXZpdGFyIGNsb25lcyBzaSBOQURBIGNhbWJpw7NcclxuICAgICAgICAgICAgY29uc3QgYWN0dWFsID0gc3RhdGUub3BjaW9uZXM/LmNvbW9kaW5lcyB8fCBjb21vZGluZXNJbmljaWFsZXM7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhbWJpbyA9ICFzdGF0ZS5vcGNpb25lcz8uY29tb2RpbmVzIHx8IE9iamVjdC5rZXlzKHBheWxvYWQpLnNvbWUoXHJcbiAgICAgICAgICAgICAgICAoa2V5KSA9PiBhY3R1YWxba2V5IGFzIElkQ29tb2Rpbl0gIT09IHBheWxvYWRba2V5IGFzIElkQ29tb2Rpbl1cclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghY2FtYmlvKSByZXR1cm4gc3RhdGU7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW9kaW5lczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jb21vZGluZXNJbmljaWFsZXMsIC8vIEJsYW5xdWVhL1Jlc2V0ZWEgZGVmYXVsdHMgc2kgZmFsdGFuIGNsYXZlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXlsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBY3Rpb25Gb3JtdWxhcmlvU3RhdGUgPSBBY3Rpb25zRnJvbTx0eXBlb2YgcmVkdWNlcnM+O1xyXG4vKiBGSU4gQUNDSU9ORVMgKi9cclxuXHJcbmV4cG9ydCBjb25zdCBkaXNwYXRjaGVycyA9IGNyZWF0ZURpc3BhdGNoZXJzKHJlZHVjZXJzKTtcclxuXHJcbmludGVyZmFjZSBJRGF0YVNlcGFyYWRhPFQgZXh0ZW5kcyB7IHRpcG9jOiBzdHJpbmcgfT4ge1xyXG4gICAgZGF0YTogVCxcclxuICAgIGNoaWxkczogSURhdGFTZXBhcmFkYTxUPltdXHJcbn1cclxuXHJcbnR5cGUgSURhdGFDb25DYXNpbGxlcm9zPFQ+ID0gVCAmIHtcclxuICAgIGNhc2lsbGVyb3M6IHJlYWRvbmx5IElEYXRhQ29uQ2FzaWxsZXJvczxUPltdXHJcbn1cclxuXHJcbmNvbnN0IGNhc2lsbGVyb1ZhY2lvID0ge1xyXG4gICAgc2FsdG86IG51bGwsIGRlc3BsaWVndWU6IG51bGwsIGFjbGFyYWNpb246IG51bGwsIHZlcl9pZDogbnVsbCwgY2FzaWxsZXJvczogW10sIGxlZXI6IG51bGwsXHJcbiAgICBkZXNwbGllZ3VlRW5jYWJlemFkbzogbnVsbCwgZGVzcGxpZWd1ZUNvbnRlbmlkbzogbnVsbCwgZGVzcGxpZWd1ZU9jdWx0YTogbnVsbCwgZGVzcGxpZWd1ZVRpcG9JbnB1dDogbnVsbFxyXG59XHJcblxyXG5jb25zdCBvcGNpb25lc1NpTm86IE9wY2lvbltdID0gW1xyXG4gICAgeyAuLi5jYXNpbGxlcm9WYWNpbywgY2FzaWxsZXJvOiAxLCB0aXBvYzogJ08nLCBub21icmU6ICdTw60nIH0sXHJcbiAgICB7IC4uLmNhc2lsbGVyb1ZhY2lvLCBjYXNpbGxlcm86IDIsIHRpcG9jOiAnTycsIG5vbWJyZTogJ05vJyB9LFxyXG5dXHJcblxyXG50eXBlIENhcmFjZXJpemFjaW9uRXN0YWRvUm93VmFsaWRhdG9yID0ge1xyXG4gICAgY29ycmVjdG86IGJvb2xlYW4sXHJcbiAgICBjb25WYWxvcjogYm9vbGVhbiB8IG51bGwsIC8vIG51bGwgPSB1bmtub3duXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFwbGFuYXJMYUN1cnZhPFQgZXh0ZW5kcyB7IHRpcG9jOiBzdHJpbmcsIGRlc3BsaWVndWU/OiBzdHJpbmcgfT4oY2FzaWxsZXJvc0RhdGE6IElEYXRhU2VwYXJhZGE8VD4pOiBJRGF0YUNvbkNhc2lsbGVyb3M8VCB8IE9wY2lvbj4ge1xyXG4gICAgdmFyIGRhdGEgPSBjYXNpbGxlcm9zRGF0YS5kYXRhXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmRhdGEsXHJcbiAgICAgICAgZGVzcGxpZWd1ZUNvbnRlbmlkbzogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnaG9yaXpvbnRhbCcpID8gJ2hvcml6b250YWwnIDogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygndmVydGljYWwnKSA/ICd2ZXJ0aWNhbCcgOiBudWxsLFxyXG4gICAgICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdsYXRlcmFsJykgPyAnbGF0ZXJhbCcgOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdzdXBlcmlvcicpID8gJ3N1cGVyaW9yJyA6IG51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZU9jdWx0YTogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnb2N1bHRhcicpID8/IG51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZVRpcG9JbnB1dDogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygndGVsZWZvbm8nKSA/ICd0ZWwnIDogbnVsbCxcclxuICAgICAgICBjYXNpbGxlcm9zOiAhY2FzaWxsZXJvc0RhdGEuY2hpbGRzLmxlbmd0aCAmJiBjYXNpbGxlcm9zRGF0YS5kYXRhLnRpcG9jID09ICdPTScgPyBvcGNpb25lc1NpTm8gOlxyXG4gICAgICAgICAgICBjYXNpbGxlcm9zRGF0YS5jaGlsZHMubWFwKGNhc2lsbGVybyA9PiBhcGxhbmFyTGFDdXJ2YShjYXNpbGxlcm8pKVxyXG4gICAgfVxyXG59XHJcblxyXG4vLyB0eXBlIEFueVJlZjxUIGV4dGVuZHMge30+PVtULCBrZXlvZiBUXTtcclxuXHJcbmZ1bmN0aW9uIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbzogSWRGb3JtdWxhcmlvLCBlc3RydWN0dXJhOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yLCBjYXNpbGxlcm86IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCB1bmlkYWRBbmFsaXNpcz86IHN0cmluZyB8IG51bGwsXHJcbiAgICBzdWJvcmRpbmFkYVZhcj86IElkVmFyaWFibGUsIHN1Ym9yZGluYWRhVmFsb3I/OiBhbnlcclxuKSB7XHJcbiAgICBpZiAoY2FzaWxsZXJvLnZhcl9uYW1lICE9IG51bGwgfHwgY2FzaWxsZXJvLnRpcG9jID09ICdGSUxUUk8nKSB7XHJcbiAgICAgICAgdmFyIHZhcl9uYW1lOiBJZFZhcmlhYmxlXHJcbiAgICAgICAgaWYgKGNhc2lsbGVyby50aXBvYyA9PSAnRklMVFJPJykge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHBvbmdvIGNvbW8gbm9tYnJlIGRlIHZhcmlhYmxlIGVsIGZpbHRybztcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8uY2FzaWxsZXJvO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY2FzaWxsZXJvLnZhcl9uYW1lLmVuZHNXaXRoKCchJykpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBsYXMgdmFyaWFibGVzIGVzcGVqbyBzb24gbGFzIHF1ZSB0ZXJtaW5hbiBlbiAhXHJcbiAgICAgICAgICAgIHZhcl9uYW1lID0gY2FzaWxsZXJvLnZhcl9uYW1lX2VzcGVjaWFsLnJlcGxhY2UoLyErJC8sICcnKTtcclxuICAgICAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lID0gdmFyX25hbWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8udmFyX25hbWVcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHZhcmlhYmxlRGVmID0ge1xyXG4gICAgICAgICAgICB0aXBvOiBjYXNpbGxlcm8udGlwb2MgPT0gJ0ZJTFRSTycgPyAnZmlsdHJvJyA6IGNhc2lsbGVyby50aXBvYyA9PSAnT00nIHx8IGNhc2lsbGVyby50aXBvdmFyID09ICdzaV9ubycgPyAnb3BjaW9uZXMnIDogY2FzaWxsZXJvLnRpcG92YXIsXHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgb3B0YXRpdm8gcG9kcsOtYSBubyBleGlzdGlyLCBxdWVkYXLDoSBudWxsLlxyXG4gICAgICAgICAgICBvcHRhdGl2YTogY2FzaWxsZXJvLm9wdGF0aXZvISxcclxuICAgICAgICAgICAgb3BjaW9uZXM6IChjYXNpbGxlcm8udGlwb2MgPT0gJ09NJyB8fCBjYXNpbGxlcm8udGlwb3ZhciA9PSAnb3BjaW9uZXMnIHx8IGNhc2lsbGVyby50aXBvdmFyID09ICdzaV9ubycgP1xyXG4gICAgICAgICAgICAgICAgbGlrZUFyLmNyZWF0ZUluZGV4KGNhc2lsbGVyby5jYXNpbGxlcm9zLCAnY2FzaWxsZXJvJykgOiB7fSkgYXMgdW5rbm93biBhcyB7IFtrZXk6IHN0cmluZ106IFJvd1ZhbGlkYXRvck9wY2lvbjxJZFZhcmlhYmxlPiB9LFxyXG4gICAgICAgICAgICBzYWx0bzogY2FzaWxsZXJvLnNhbHRvIGFzIElkVmFyaWFibGUsXHJcbiAgICAgICAgICAgIHNhbHRvTnNOcjogY2FzaWxsZXJvLnNhbHRvX25zX25jIGFzIElkVmFyaWFibGUgfHwgbnVsbCxcclxuICAgICAgICAgICAgZnVuY2lvbkhhYmlsaXRhcjogY2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJfanMsXHJcbiAgICAgICAgICAgIGZ1bmNpb25BdXRvSW5ncmVzYXI6IGNhc2lsbGVyby5leHByZXNpb25fYXV0b2luZ3Jlc2FyX2pzLFxyXG4gICAgICAgICAgICBjYWxjdWxhZGE6XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIC8vIFRPRE8uIEF2ZXJpZ3VhciBzaSBsYXMgcHJlZ3VudGFzIHkgZmlsdHJvcyBwdWVkZW4gdGVuZXIgdW5pZGFkIGRlIGFuw6FsaXNpc1xyXG4gICAgICAgICAgICAgICAgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpcyAmJiBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzICE9IHVuaWRhZEFuYWxpc2lzXHJcbiAgICAgICAgICAgICAgICB8fCBjYXNpbGxlcm8uY2FsY3VsYWRhLFxyXG4gICAgICAgICAgICBsaWJyZTogY2FzaWxsZXJvLmxpYnJlXHJcbiAgICAgICAgfSBhcyAodHlwZW9mIGVzdHJ1Y3R1cmEudmFyaWFibGVzKVtJZFZhcmlhYmxlXVxyXG4gICAgICAgIGlmIChzdWJvcmRpbmFkYVZhbG9yICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB2YXJpYWJsZURlZi5zdWJvcmRpbmFkYVZhciA9IHN1Ym9yZGluYWRhVmFyO1xyXG4gICAgICAgICAgICB2YXJpYWJsZURlZi5zdWJvcmRpbmFkYVZhbG9yID0gc3Vib3JkaW5hZGFWYWxvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXN0cnVjdHVyYS52YXJpYWJsZXNbdmFyX25hbWVdID0gdmFyaWFibGVEZWY7XHJcbiAgICB9IGVsc2UgaWYgKGNhc2lsbGVyby50aXBvYyA9PSAnQkYnKSB7XHJcbiAgICAgICAgLy8gdmFyIHZhcl9uYW1lID0gJyRCLkY6JytjYXNpbGxlcm8uc2FsdG8gYXMgSWRWYXJpYWJsZTsgICAgLy9vcmlnaW5hbFxyXG4gICAgICAgIHZhciBzYWx0b05vbWJyZSA9IGNhc2lsbGVyby5zYWx0byEuc3Vic3RyKDAsIDIpID09ICdGOicgPyBjYXNpbGxlcm8uc2FsdG8hLnNsaWNlKDIpIDogY2FzaWxsZXJvLnNhbHRvO1xyXG4gICAgICAgIGNvbnN0IHJlcXVpZXJlQWdyZWdhciA9IGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXMgJiYgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpcyAhPT0gdW5pZGFkQW5hbGlzaXNcclxuICAgICAgICBjYXNpbGxlcm8udmFyX25hbWVzX0JGID0gY2FzaWxsZXJvLnZhcl9uYW1lc19CRiB8fCBbXTtcclxuXHJcbiAgICAgICAgaWYgKHJlcXVpZXJlQWdyZWdhcikge1xyXG4gICAgICAgICAgICB2YXIgbmV3VmFyTmFtZUFncmVnYXIgPSAnJEIuRjonICsgc2FsdG9Ob21icmUgKyAnX2FncmVnYXInIGFzIElkVmFyaWFibGU7XHJcbiAgICAgICAgICAgIGNhc2lsbGVyby52YXJfbmFtZXNfQkYucHVzaChuZXdWYXJOYW1lQWdyZWdhcik7XHJcbiAgICAgICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW25ld1Zhck5hbWVBZ3JlZ2FyXSA9IHtcclxuICAgICAgICAgICAgICAgIHRpcG92YXI6ICdvcGNpb25lcycsXHJcbiAgICAgICAgICAgICAgICBjYXNpbGxlcm9zOiBbeyB0aXBvYzogJ08nLCBjYXNpbGxlcm86IDEsIG5vbWJyZTogJ3NpJyB9XSBhcyBPcGNpb25bXSwgLy8gc2UgdXNhIHBhcmEgcXVlIG5vIHNlYSBsaWJyZSB5IGVsIHJvd1ZhbGlkYXRvciBsYSB2ZWFcclxuICAgICAgICAgICAgfSBhcyBWYXJpYWJsZTtcclxuICAgICAgICAgICAgY2FzaWxsZXJvLnByaW1lcmFfdmFyaWFibGUgPSBuZXdWYXJOYW1lQWdyZWdhcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG5ld1Zhck5hbWUgPSAnJEIuRjonICsgc2FsdG9Ob21icmUgYXMgSWRWYXJpYWJsZTtcclxuICAgICAgICBjYXNpbGxlcm8udmFyX25hbWVzX0JGLnB1c2gobmV3VmFyTmFtZSlcclxuICAgICAgICBlc3RydWN0dXJhLnZhcmlhYmxlc1tuZXdWYXJOYW1lXSA9IHtcclxuICAgICAgICAgICAgdGlwb3ZhcjogJ29wY2lvbmVzJyxcclxuICAgICAgICAgICAgY2FzaWxsZXJvczogW3sgdGlwb2M6ICdPJywgY2FzaWxsZXJvOiAxLCBub21icmU6ICdzaScgfV0gYXMgT3BjaW9uW10sIC8vIHNlIHVzYSBwYXJhIHF1ZSBubyBzZWEgbGlicmUgeSBlbCByb3dWYWxpZGF0b3IgbGEgdmVhXHJcbiAgICAgICAgfSBhcyBWYXJpYWJsZTtcclxuICAgICAgICBjYXNpbGxlcm8ucHJpbWVyYV92YXJpYWJsZSA9IGNhc2lsbGVyby5wcmltZXJhX3ZhcmlhYmxlIHx8IG5ld1Zhck5hbWU7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKGNhc2lsbGVyby5jYXNpbGxlcm9zKSB7XHJcbiAgICAgICAgY2FzaWxsZXJvLmNhc2lsbGVyb3MuZm9yRWFjaCgoY2FzaWxsZXJvSGlqbzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MpID0+XHJcbiAgICAgICAgICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYSwgY2FzaWxsZXJvSGlqbywgdW5pZGFkQW5hbGlzaXMsIGNhc2lsbGVyby52YXJfbmFtZSA/IGNhc2lsbGVyby52YXJfbmFtZSA6IGNhc2lsbGVyby50aXBvYyA9PSAnTycgPyBzdWJvcmRpbmFkYVZhciA6IHVuZGVmaW5lZCwgY2FzaWxsZXJvLnRpcG9jID09ICdPJyA/IGNhc2lsbGVyby5jYXNpbGxlcm8gOiB1bmRlZmluZWQpXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG59XHJcblxyXG50eXBlIFJlZ2lzdHJvRGVzdGlub3MgPSB7IFtkZXN0aW5vIGluIElkRGVzdGlub106IElkVmFyaWFibGUgfCBudWxsIH07XHJcblxyXG5mdW5jdGlvbiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGRlc3Rpbm9zPzogUmVnaXN0cm9EZXN0aW5vcyk6IFJlZ2lzdHJvRGVzdGlub3Mge1xyXG4gICAgaWYgKGRlc3Rpbm9zID09IG51bGwpIHJldHVybiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybywge30gYXMgUmVnaXN0cm9EZXN0aW5vcyk7XHJcbiAgICBpZiAoY2FzaWxsZXJvLnRpcG9jID09ICdGSUxUUk8nKSB7XHJcbiAgICAgICAgZGVzdGlub3NbY2FzaWxsZXJvLmNhc2lsbGVyb10gPSBjYXNpbGxlcm8uY2FzaWxsZXJvIGFzIElkVmFyaWFibGU7XHJcbiAgICB9IGVsc2UgaWYgKGNhc2lsbGVyby50aXBvYyAhPSAnRicgJiYgY2FzaWxsZXJvLnRpcG9jICE9ICdPJyAmJiBjYXNpbGxlcm8udGlwb2MgIT0gJ09NJykge1xyXG4gICAgICAgIGRlc3Rpbm9zW2Nhc2lsbGVyby5jYXNpbGxlcm9dID0gY2FzaWxsZXJvLnByaW1lcmFfdmFyaWFibGUgfHwgbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKGNhc2lsbGVyby5jYXNpbGxlcm9zKSB7XHJcbiAgICAgICAgY2FzaWxsZXJvLmNhc2lsbGVyb3MuZm9yRWFjaChjID0+IG9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoYywgZGVzdGlub3MpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkZXN0aW5vcztcclxufVxyXG5cclxuZnVuY3Rpb24gcmVsbGVuYXJEZXN0aW5vcyhlc3RydWN0dXJhOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yLCBkZXN0aW5vczogUmVnaXN0cm9EZXN0aW5vcyk6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3Ige1xyXG4gICAgZnVuY3Rpb24gb2J0ZW5lckRlc3Rpbm8oaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vOiBJZFZhcmlhYmxlIHwgbnVsbCB8IHVuZGVmaW5lZCB8IElkRmluKTogSWRWYXJpYWJsZSB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiBpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8gPT0gJ2ZpbicgYXMgSWRWYXJpYWJsZSA/ICdmaW4nIGFzIElkVmFyaWFibGUgOiBpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8gIT0gbnVsbCAmJiBkZXN0aW5vc1tpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8gYXMgSWREZXN0aW5vXSB8fCBudWxsXHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmVzdHJ1Y3R1cmEsXHJcbiAgICAgICAgdmFyaWFibGVzOiBsaWtlQXIoZXN0cnVjdHVyYS52YXJpYWJsZXMpLm1hcCh2YXJpYWJsZURlZiA9PiAoe1xyXG4gICAgICAgICAgICAuLi52YXJpYWJsZURlZixcclxuICAgICAgICAgICAgc2FsdG86IG9idGVuZXJEZXN0aW5vKHZhcmlhYmxlRGVmLnNhbHRvKSxcclxuICAgICAgICAgICAgc2FsdG9Oc05yOiBvYnRlbmVyRGVzdGlubyh2YXJpYWJsZURlZi5zYWx0b05zTnIpLFxyXG4gICAgICAgICAgICBvcGNpb25lczogdmFyaWFibGVEZWYub3BjaW9uZXMgIT0gbnVsbCA/IGxpa2VBcih2YXJpYWJsZURlZi5vcGNpb25lcykubWFwKG9wY2lvbkRlZiA9PiAoeyBzYWx0bzogb2J0ZW5lckRlc3Rpbm8ob3BjaW9uRGVmLnNhbHRvKSB9KSkucGxhaW4oKSA6IHVuZGVmaW5lZFxyXG4gICAgICAgIH0pKS5wbGFpbigpXHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdlbmVyYXJFc3RydWN0dXJhUm93VmFsaWRhdG9yKGNhc2lsbGVybzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGlkRm9ybXVsYXJpbzogSWRGb3JtdWxhcmlvKTogRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciB7XHJcbiAgICB2YXIgZXN0cnVjdHVyYUluY29tcGxldGE6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IgPSB7IHZhcmlhYmxlczoge30sIG1hcmNhRmluOiAnZmluJyB9IGFzIHVua25vd24gYXMgRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjtcclxuICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYUluY29tcGxldGEsIGNhc2lsbGVybyxcclxuICAgICAgICAvLyBAdHMtaWdub3JlIHZlciBzaSBjdWFscXVpZXIgY29zYSBwdWVkZSB0ZW5lciB1bmlkYWRfYW5hbGlzaXNcclxuICAgICAgICBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzXHJcbiAgICApO1xyXG4gICAgdmFyIGRlc3Rpbm9zID0gb2J0ZW5lckRlc3Rpbm9zQ2FzaWxsZXJvcyhjYXNpbGxlcm8pO1xyXG4gICAgcmV0dXJuIHJlbGxlbmFyRGVzdGlub3MoZXN0cnVjdHVyYUluY29tcGxldGEsIGRlc3Rpbm9zKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VTcGVjaWFsV29yZHModGV4dDogc3RyaW5nLCBub21icmU6IHN0cmluZywgYXBlbGxpZG86IHN0cmluZywgcmVzdWx0YWRvOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0ZXh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGV4dC5zbGljZSgxKTtcclxuICAgIH1cclxuICAgIHZhciBzaW1wbGlmaWNhdGVkQ2hhcnM6IHsgW2s6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgICAgIFwiI25vbWJyZVwiOiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIobm9tYnJlKSxcclxuICAgICAgICBcIiNhcGVsbGlkb1wiOiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoYXBlbGxpZG8pLFxyXG4gICAgICAgIFwiI3Jlc3VsdGFkb1wiOiByZXN1bHRhZG8sXHJcbiAgICB9O1xyXG4gICAgdmFyIHJlID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhzaW1wbGlmaWNhdGVkQ2hhcnMpLmpvaW4oXCJ8XCIpLCBcImdpXCIpO1xyXG5cclxuICAgIHJldHVybiB0ZXh0LnJlcGxhY2UocmUsIGZ1bmN0aW9uIChtYXRjaGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHNpbXBsaWZpY2F0ZWRDaGFyc1ttYXRjaGVkLnRvTG93ZXJDYXNlKCldO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvQ29uc2lzdGlyKG9wZXJhdGl2bzogSWRPcGVyYXRpdm8sIHRhcmVhOiBJZFRhcmVhLCBlbmM6IElkRW5jKSB7XHJcbiAgICAvLyBUT0RPLTIwMjMtMDM6IHByb2JhciBjb24gZXN0bzpcclxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4gKyBsb2NhdGlvbi5wYXRobmFtZX0vLi4vbWVudSN3PWNvbnNpc3Rpcl9lbmN1ZXN0YSZ1cD0ke0pTT040YWxsLnRvVXJsKHsgb3BlcmF0aXZvLCB0YXJlYSwgZW5jIH0pfSZhdXRvcHJvY2VkPXRydWVgKTtcclxuICAgIC8vIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjdz1jb25zaXN0aXJfZW5jdWVzdGEmdXA9e1wib3BlcmF0aXZvXCI6XCIke29wZXJhdGl2b31cIixcInRhcmVhXCI6XCIke3RhcmVhfVwiLFwiZW5jdWVzdGFcIjoke2VuY3Vlc3RhfX0mYXV0b3Byb2NlZD10cnVlYCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkYXB0YXJFc3RydWN0dXJhKGVzdHJ1Y3R1cmFCYWNrZW5kOmFueSkge1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmE6IEVzdHJ1Y3R1cmEgPSBlc3RydWN0dXJhQmFja2VuZDtcclxuICAgIHZhciBjYXNpbGxlcm9zT3JpZ2luYWxlczoge30gPSBlc3RydWN0dXJhLmZvcm11bGFyaW9zO1xyXG4gICAgdmFyIG1haW5Gb3JtOiBJZEZvcm11bGFyaW8gfCB1bmRlZmluZWQ7XHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHZhciBjYXNpbGxlcm9zVG9kb3NGb3JtdWxhcmlvczogeyBbZiBpbiBJZEZvcm11bGFyaW9dOiB7IGNhc2lsbGVyb3M6IEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IgfSB9ID1cclxuICAgICAgICBsaWtlQXIoY2FzaWxsZXJvc09yaWdpbmFsZXMpLm1hcChcclxuICAgICAgICAgICAgKGNhc2lsbGVyb3NKZXJhcnF1aXphZG9zOiBhbnksIGlkRm9ybXVsYXJpbykgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNhc2lsbGVyb3NBcGxhbmFkb3M6IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zID0gYXBsYW5hckxhQ3VydmEoY2FzaWxsZXJvc0plcmFycXVpemFkb3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhc2lsbGVyb3NBcGxhbmFkb3MudGlwb2MgPT0gJ0YnICYmIGNhc2lsbGVyb3NBcGxhbmFkb3MuZm9ybXVsYXJpb19wcmluY2lwYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBtYWluRm9ybSA9IGlkRm9ybXVsYXJpbztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvczogY2FzaWxsZXJvc0FwbGFuYWRvcyxcclxuICAgICAgICAgICAgICAgICAgICBlc3RydWN0dXJhUm93VmFsaWRhdG9yOiBnZW5lcmFyRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcihjYXNpbGxlcm9zQXBsYW5hZG9zLCBpZEZvcm11bGFyaW8pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBsYWluKCk7XHJcbiAgICBlc3RydWN0dXJhLmZvcm11bGFyaW9zID0gY2FzaWxsZXJvc1RvZG9zRm9ybXVsYXJpb3NcclxuICAgIHJldHVybiBlc3RydWN0dXJhO1xyXG59XHJcblxyXG5sZXQgc3RvcmVGb3JtdWxhcmlvSW5zdGFuY2U6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVN0b3JlPiB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXJTdG9yZUZvcm11bGFyaW8ob3B0czogeyBvcGVyYXRpdm8/OiBJZE9wZXJhdGl2bywgZm9yUGtSYWl6PzogRm9yUGtSYWl6IH0pIHtcclxuICAgIHZhciBnZXRDYXNvU3RhdGUgPSBnZXRGb3JtUmVuZGVyZXIoKS5nZXRDYXNvU3RhdGUuYmluZChnZXRGb3JtUmVuZGVyZXIoKSk7XHJcbiAgICB2YXIgc2V0Q2Fzb1N0YXRlID0gZ2V0Rm9ybVJlbmRlcmVyKCkuc2V0Q2Fzb1N0YXRlLmJpbmQoZ2V0Rm9ybVJlbmRlcmVyKCkpO1xyXG5cclxuICAgIHZhciBsb2FkU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBsb2FkU3RhdGUoKTogUHJvbWlzZTxDYXNvU3RhdGU+IHtcclxuICAgICAgICB2YXIgY2Fzb1N0YXRlOiBDYXNvU3RhdGUgfCBudWxsID0gZ2V0Q2Fzb1N0YXRlKCk7XHJcbiAgICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHtcclxuICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgIGZvclBrOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgcGlsYUZvclBrOiBbXSxcclxuICAgICAgICAgICAgICAgIG1vZG9EZXNwbGllZ3VlOiAncmVsZXZhbWllbnRvJyxcclxuICAgICAgICAgICAgICAgIG1vZG9EaXJlY3RvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNvbkNhbXBvT3BjaW9uZXM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2FsdG9BdXRvbWF0aWNvOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTogbnVsbCxcclxuICAgICAgICAgICAgICAgIHBhbnRhbGxhQWN0dWFsOiAnaGRyJyxcclxuICAgICAgICAgICAgICAgIGF2aXNvUGVyc2lzdGVudGU6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBjb21vZGluZXM6IGNvbW9kaW5lc0luaWNpYWxlc1xyXG4gICAgICAgICAgICB9IGFzIENhc29TdGF0ZVtcIm9wY2lvbmVzXCJdLCAvLyBwb25lciBsb3MgdmFsb3JlcyBwb3IgZGVmZWN0byBtw6FzIGFiYWpvXHJcbiAgICAgICAgfSBhcyBDYXNvU3RhdGU7XHJcbiAgICAgICAgaWYgKGNhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5pbml0aWFsU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLmluaXRpYWxTdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICAuLi5jYXNvU3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tb2RpbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbW9kaW5lc0luaWNpYWxlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGNhc29TdGF0ZS5vcGNpb25lcz8uY29tb2RpbmVzIHx8IHt9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0cy5mb3JQa1JhaXopIHtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLmZvclBrID0gb3B0cy5mb3JQa1JhaXo7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5tb2RvRGlyZWN0byA9ICEhb3B0cy5mb3JQa1JhaXo7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGFkZHJQYXJhbXMgPSBteU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNoIHx8IGxvY2F0aW9uLnNlYXJjaCB8fCAnJyk7XHJcbiAgICAgICAgaWYgKGFkZHJQYXJhbXMuc3RhdGVfZm9yUGspIHtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLmZvclBrID0gSlNPTi5wYXJzZShhZGRyUGFyYW1zLnN0YXRlX2ZvclBrKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFkZHJQYXJhbXMuc3RhdGVfcGlsYUZvclBrKSB7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsgPSAoYWRkclBhcmFtcy5zdGF0ZV9waWxhRm9yUGsgYXMgc3RyaW5nKS5zcGxpdCgnfCcpLm1hcChqID0+IEpTT040YWxsLnBhcnNlKGopKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcclxuICAgIH1cclxuICAgIHZhciBzYXZlU3RhdGUgPSBmdW5jdGlvbiBzYXZlU3RhdGUoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgIHNldENhc29TdGF0ZShzdGF0ZSk7XHJcbiAgICB9XHJcbiAgICAvKiBERUZJTklDSU9OIENPTlRST0xBRE9SICovXHJcbiAgICB2YXIgaW5pdGlhbFN0YXRlOiBDYXNvU3RhdGUgPSBhd2FpdCBsb2FkU3RhdGUoKTtcclxuICAgIGNvbnN0IGhkclJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKHJlZHVjZXJzLCBpbml0aWFsU3RhdGUpO1xyXG4gICAgLyogRklOIERFRklOSUNJT04gQ09OVFJPTEFET1IgKi9cclxuICAgIC8qIENBUkdBIFkgR1VBUkRBRE8gREUgU1RBVEUgKi9cclxuICAgIC8qIENSRUFDSU9OIFNUT1JFICovXHJcbiAgICBjb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlKGhkclJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7XHJcbiAgICBzdG9yZUZvcm11bGFyaW9JbnN0YW5jZSA9IHN0b3JlO1xyXG4gICAgc2F2ZVN0YXRlKHN0b3JlLmdldFN0YXRlKCkpO1xyXG4gICAgc3RvcmUuc3Vic2NyaWJlKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBzYXZlU3RhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XHJcbiAgICB9KTtcclxuICAgIC8qIEZJTiBDUkVBQ0lPTiBTVE9SRSAqL1xyXG4gICAgLy9IRFIgQ09OIFNUT1JFIENSRUFET1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmVGb3JtdWxhcmlvKCkge1xyXG4gICAgaWYgKCFzdG9yZUZvcm11bGFyaW9JbnN0YW5jZSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcIkludGVudGFzdGUgYWNjZWRlciBhIGxhIHN0b3JlIGFudGVzIGRlIHF1ZSBmdWVyYSBjcmVhZGEuXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0b3JlRm9ybXVsYXJpb0luc3RhbmNlO1xyXG59Il19
314
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtZm9ybXVsYXJpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXdXQSxzQ0FLQztJQUVELDhDQW9CQztJQU1ELG9EQWlFQztJQUVELGdEQUtDO0lBamRELGlDQUEyQztJQUMzQyxtQ0FtQmlCO0lBQ2pCLDZEQUFvRjtJQUNwRixrQ0FBbUM7SUFFbkMscUNBQXFDO0lBR3JDLG1EQUFrRDtJQUVsRCxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFFZixTQUFTLFVBQVUsQ0FBQyxLQUFtQixFQUFFLFNBQWtCO1FBQ3ZELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakYsS0FBSyxDQUFDLGlCQUFpQixpQ0FDaEIsVUFBVSxLQUNiLFdBQVcsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUEsb0JBQVksRUFBQyxLQUFLLENBQUMsRUFDekQsZUFBZSxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFDeEQsQ0FBQztJQUNQLENBQUM7SUFFWSxRQUFBLGtCQUFrQixHQUE4QjtRQUN6RCxTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsV0FBVztRQUN0QixTQUFTLEVBQUUsV0FBVztRQUN0QixRQUFRLEVBQUUsVUFBVTtRQUNwQixVQUFVLEVBQUUsWUFBWTtRQUN4QixRQUFRLEVBQUUsVUFBVTtRQUNwQixVQUFVLEVBQUUsWUFBWTtRQUN4QixPQUFPLEVBQUUsU0FBUztRQUNsQixTQUFTLEVBQUUsV0FBVztRQUN0QixjQUFjLEVBQUUsZ0JBQWdCO0tBQ25DLENBQUM7SUFFRixJQUFJLFFBQVEsR0FBRztRQUNYLGVBQWUsRUFBRSxDQUFDLE9BQTJDLEVBQUUsRUFBRSxDQUM3RCxVQUFVLEtBQWdCO1lBQ3RCLHVDQUNPLEtBQUssS0FDUixRQUFRLGtDQUNELEtBQUssQ0FBQyxRQUFRLEtBQ2pCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxPQUU3QztRQUNMLENBQUM7UUFDTCxlQUFlLEVBQUUsQ0FBQyxPQUEyQixFQUFFLEVBQUUsQ0FDN0MsVUFBVSxLQUFnQjtZQUN0Qix1Q0FDTyxLQUFLLEtBQ1IsUUFBUSxrQ0FDRCxLQUFLLENBQUMsUUFBUSxLQUNqQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sT0FFN0I7UUFDTCxDQUFDO1FBQ0wsa0JBQWtCLEVBQUUsQ0FBQyxPQUFnRCxFQUFFLEVBQUUsQ0FDckUsVUFBVSxLQUFnQjtZQUN0QixJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQzFCLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQ25DLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FDMUYsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7WUFDN0IsVUFBVSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM3Qix1Q0FDTyxLQUFLLEtBQ1IsUUFBUSxrQ0FDRCxLQUFLLENBQUMsUUFBUSxLQUNqQixLQUFLO29CQUNMLFNBQVMsT0FFaEI7UUFDTCxDQUFDO1FBQ0wsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixFQUFpQyxFQUFFLEVBQUUsQ0FDM0UsVUFBVSxLQUFnQjtZQUN0QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUM7WUFDbEcsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztZQUN2RyxVQUFVLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzdCLHVDQUNPLEtBQUssS0FDUixRQUFRLGtDQUNELEtBQUssQ0FBQyxRQUFRLEtBQ2pCLEtBQUs7b0JBQ0wsU0FBUyxPQUVoQjtRQUNMLENBQUM7UUFDTCxVQUFVLEVBQUUsQ0FBQyxRQUFZLEVBQUUsRUFBRSxDQUN6QixVQUFVLEtBQWdCO1lBQ3RCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztZQUNqQixJQUFJLFNBQVMsR0FBWSxFQUFFLENBQUM7WUFDNUIsVUFBVSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM3Qix1Q0FDTyxLQUFLLEtBQ1IsUUFBUSxrQ0FDRCxLQUFLLENBQUMsUUFBUSxLQUNqQixLQUFLO29CQUNMLFNBQVMsT0FFaEI7UUFDTCxDQUFDO1FBQ0wsVUFBVSxFQUFFLENBQUMsT0FBNEQsRUFBRSxFQUFFLENBQ3pFLFVBQVUsS0FBZ0I7WUFDdEIsdUNBQ08sS0FBSyxLQUNSLFFBQVEsa0NBQ0QsS0FBSyxDQUFDLFFBQVE7b0JBQ2pCLDhEQUE4RDtvQkFDOUQsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUM3RixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxPQUV0QztRQUNMLENBQUM7UUFDTCxjQUFjLEVBQUUsQ0FBQyxRQUFZLEVBQUUsRUFBRSxDQUM3QixVQUFVLEtBQWdCO1lBQ3RCLHVDQUNPLEtBQUssS0FDUixRQUFRLGtDQUNELEtBQUssQ0FBQyxRQUFRLEtBQ2pCLGNBQWMsRUFBRSxLQUFLLEVBQ3JCLGdCQUFnQixFQUFFLElBQUksRUFDdEIsS0FBSyxFQUFFLElBQUksT0FFbEI7UUFDTCxDQUFDO1FBQ0wsbUJBQW1CLEVBQUUsQ0FBQyxPQUEySCxFQUFFLEVBQUUsQ0FDakosVUFBVSxLQUFnQjtZQUN0Qix1Q0FDTyxLQUFLLEtBQ1IsUUFBUSxrQ0FDRCxLQUFLLENBQUMsUUFBUSxLQUNqQixjQUFjLEVBQUUsT0FBTyxDQUFDLFFBQVEsRUFDaEMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixJQUFJLElBQUksT0FFekQ7UUFDTCxDQUFDO1FBQ0wsMEJBQTBCLEVBQUUsQ0FBQyxPQUFzRCxFQUFFLEVBQUUsQ0FDbkYsVUFBVSxLQUFnQjtZQUN0Qix1Q0FDTyxLQUFLLEtBQ1IsUUFBUSxrQ0FDRCxLQUFLLENBQUMsUUFBUSxLQUNqQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFDcEIsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLFFBQVEsT0FFNUM7UUFDTCxDQUFDO1FBQ0wsZUFBZSxFQUFFLENBQUMsT0FBNkMsRUFBRSxFQUFFLENBQy9ELFVBQVUsS0FBZ0I7O1lBQ3RCLE1BQU0sTUFBTSxHQUFHLENBQUEsTUFBQSxLQUFLLENBQUMsUUFBUSwwQ0FBRSxTQUFTLEtBQUksMEJBQWtCLENBQUM7WUFDL0QsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1lBQzlELHVDQUNPLEtBQUssS0FDUixRQUFRLGtDQUNELEtBQUssQ0FBQyxRQUFRLEtBQ2pCLFNBQVMsa0NBQ0YsTUFBTSxLQUNULENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxLQUFLLFVBRzdDO1FBQ0wsQ0FBQztRQUNMLGlCQUFpQixFQUFFLENBQUMsT0FBa0MsRUFBRSxFQUFFLENBQ3RELFVBQVUsS0FBZ0I7O1lBQ3RCLG9FQUFvRTtZQUNwRSxNQUFNLE1BQU0sR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLFFBQVEsMENBQUUsU0FBUyxLQUFJLDBCQUFrQixDQUFDO1lBQy9ELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQSxNQUFBLEtBQUssQ0FBQyxRQUFRLDBDQUFFLFNBQVMsQ0FBQSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUNsRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQWdCLENBQUMsS0FBSyxPQUFPLENBQUMsR0FBZ0IsQ0FBQyxDQUNsRSxDQUFDO1lBRUYsSUFBSSxDQUFDLE1BQU07Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFFMUIsdUNBQ08sS0FBSyxLQUNSLFFBQVEsa0NBQ0QsS0FBSyxDQUFDLFFBQVEsS0FDakIsU0FBUyxrQ0FDRiwwQkFBa0IsR0FDbEIsT0FBTyxRQUdyQjtRQUNMLENBQUM7S0FDUixDQUFBO0lBR0Qsa0JBQWtCO0lBRUwsUUFBQSxXQUFXLEdBQUcsSUFBQSx1Q0FBaUIsRUFBQyxRQUFRLENBQUMsQ0FBQztJQVd2RCxNQUFNLGNBQWMsR0FBRztRQUNuQixLQUFLLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUk7UUFDekYsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsSUFBSTtLQUMzRyxDQUFBO0lBRUQsTUFBTSxZQUFZLEdBQWE7d0NBQ3RCLGNBQWMsS0FBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUk7d0NBQ3RELGNBQWMsS0FBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUk7S0FDOUQsQ0FBQTtJQU9ELFNBQVMsY0FBYyxDQUEwRCxjQUFnQzs7UUFDN0csSUFBSSxJQUFJLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQTtRQUM5Qix1Q0FDTyxJQUFJLEtBQ1AsbUJBQW1CLEVBQUUsQ0FBQSxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDdkksb0JBQW9CLEVBQUUsQ0FBQSxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDbEksZ0JBQWdCLEVBQUUsTUFBQSxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsbUNBQUksSUFBSSxFQUM5RCxtQkFBbUIsRUFBRSxDQUFBLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDekUsVUFBVSxFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDM0YsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsSUFDeEU7SUFDTCxDQUFDO0lBRUQsMENBQTBDO0lBRTFDLG1IQUFtSDtJQUNuSCx3R0FBd0c7SUFDeEcsa0dBQWtHO0lBQ2xHLFNBQVMsdUJBQXVCO1FBQzVCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFNBQVMsMEJBQTBCLENBQUMsWUFBMEIsRUFBRSxVQUFrQyxFQUFFLFNBQWtDLEVBQUUsY0FBOEIsRUFDbEssY0FBMkIsRUFBRSxnQkFBc0I7O1FBRW5ELElBQUksZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUMxQyxJQUFJLGdCQUFnQixJQUFJLElBQUksSUFBSSxTQUFTLENBQUMsS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzFELElBQUksUUFBb0IsQ0FBQTtZQUN4QixJQUFJLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUMzQixnREFBZ0Q7Z0JBQ2hELHNEQUFzRDtnQkFDdEQsUUFBUSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7WUFDbkMsQ0FBQztpQkFBTSxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4Qyw0REFBNEQ7Z0JBQzVELFFBQVEsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDMUQsU0FBUyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDbEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQTtZQUMvQixDQUFDO1lBQ0QsSUFBSSxXQUFXLEdBQUc7Z0JBQ2QsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLFNBQVMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPO2dCQUN2SSx1REFBdUQ7Z0JBQ3ZELFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUztnQkFDN0IsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksU0FBUyxDQUFDLE9BQU8sSUFBSSxVQUFVLElBQUksU0FBUyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQztvQkFDbkcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFBLFNBQVMsQ0FBQyxVQUFVLG1DQUFJLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFpRTtnQkFDckksS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFtQjtnQkFDcEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxXQUF5QixJQUFJLElBQUk7Z0JBQ3RELGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxzQkFBc0I7Z0JBQ2xELG1CQUFtQixFQUFFLFNBQVMsQ0FBQyx5QkFBeUI7Z0JBQ3hELFNBQVM7Z0JBQ0wsMkZBQTJGO2dCQUMzRixTQUFTLENBQUMsZUFBZSxJQUFJLFNBQVMsQ0FBQyxlQUFlLElBQUksY0FBYzt1QkFDckUsU0FBUyxDQUFDLFNBQVM7Z0JBQzFCLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSzthQUNvQixDQUFBO1lBQzlDLElBQUksZ0JBQWdCLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2hDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO2dCQUM1QyxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7WUFDcEQsQ0FBQztZQUNELFVBQVUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQ2pELENBQUM7YUFBTSxJQUFJLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakMsc0VBQXNFO1lBQ3RFLElBQUksV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ3RHLE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxlQUFlLElBQUksU0FBUyxDQUFDLGVBQWUsS0FBSyxjQUFjLENBQUE7WUFDakcsU0FBUyxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUV0RCxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLGlCQUFpQixHQUFHLE9BQU8sR0FBRyxXQUFXLEdBQUcsVUFBd0IsQ0FBQztnQkFDekUsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDL0MsVUFBVSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLHVCQUF1QixFQUFFLENBQUM7Z0JBQ3BFLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQztZQUNuRCxDQUFDO1lBQ0QsSUFBSSxVQUFVLEdBQUcsT0FBTyxHQUFHLFdBQXlCLENBQUM7WUFDckQsU0FBUyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDdkMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyx1QkFBdUIsRUFBRSxDQUFDO1lBQzdELFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLElBQUksVUFBVSxDQUFDO1FBRTFFLENBQUM7UUFDRCxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QixTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQXNDLEVBQUUsRUFBRSxDQUNwRSwwQkFBMEIsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDL08sQ0FBQTtRQUNMLENBQUM7SUFDTCxDQUFDO0lBS0QsU0FBUyx5QkFBeUIsQ0FBQyxTQUFrQyxFQUFFLFFBQTJCO1FBQzlGLElBQUksUUFBUSxJQUFJLElBQUk7WUFBRSxPQUFPLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RSxJQUFJLFNBQVMsQ0FBQyxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7WUFDOUIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsU0FBdUIsQ0FBQztRQUN0RSxDQUFDO2FBQU0sSUFBSSxTQUFTLENBQUMsS0FBSyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3JGLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQTtRQUN0RSxDQUFDO1FBQ0QsSUFBSSxTQUFTLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELFNBQVMsZ0JBQWdCLENBQUMsVUFBa0MsRUFBRSxRQUEwQjtRQUNwRixTQUFTLGNBQWMsQ0FBQywyQkFBa0U7WUFDdEYsT0FBTywyQkFBMkIsSUFBSSxLQUFtQixDQUFDLENBQUMsQ0FBQyxLQUFtQixDQUFDLENBQUMsQ0FBQywyQkFBMkIsSUFBSSxJQUFJLElBQUksUUFBUSxDQUFDLDJCQUF3QyxDQUFDLElBQUksSUFBSSxDQUFBO1FBQ3ZMLENBQUM7UUFDRCx1Q0FDTyxVQUFVLEtBQ2IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsaUNBQ3BELFdBQVcsS0FDZCxLQUFLLEVBQUUsY0FBYyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFDeEMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQ2hELFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFDMUosQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUNkO0lBQ0wsQ0FBQztJQUVELFNBQVMsNkJBQTZCLENBQUMsU0FBa0MsRUFBRSxZQUEwQjtRQUNqRyxJQUFJLG9CQUFvQixHQUEyQixFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBdUMsQ0FBQztRQUMzSCwwQkFBMEIsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUztRQUNwRSwrREFBK0Q7UUFDL0QsU0FBUyxDQUFDLGVBQWUsQ0FDNUIsQ0FBQztRQUNGLElBQUksUUFBUSxHQUFHLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sZ0JBQWdCLENBQUMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDJEQUEyRDtJQUFsRCx5SEFBQSxtQkFBbUIsT0FBQTtJQUU1QixTQUFnQixhQUFhLENBQUMsU0FBc0IsRUFBRSxLQUFjLEVBQUUsR0FBVTtRQUM1RSxpQ0FBaUM7UUFDakMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsUUFBUSxvQ0FBb0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0SyxpTUFBaU07UUFDak0sUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxTQUFnQixpQkFBaUIsQ0FBQyxpQkFBcUI7UUFDbkQsSUFBSSxVQUFVLEdBQWUsaUJBQWlCLENBQUM7UUFDL0MsSUFBSSxvQkFBb0IsR0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDO1FBQ3RELElBQUksUUFBa0MsQ0FBQztRQUN2QyxZQUFZO1FBQ1osSUFBSSwwQkFBMEIsR0FDMUIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxDQUM1QixDQUFDLHVCQUE0QixFQUFFLFlBQVksRUFBRSxFQUFFO1lBQzNDLElBQUksbUJBQW1CLEdBQTRCLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzNGLElBQUksbUJBQW1CLENBQUMsS0FBSyxJQUFJLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUMvRSxRQUFRLEdBQUcsWUFBWSxDQUFDO1lBQzVCLENBQUM7WUFDRCxPQUFPO2dCQUNILFVBQVUsRUFBRSxtQkFBbUI7Z0JBQy9CLHNCQUFzQixFQUFFLDZCQUE2QixDQUFDLG1CQUFtQixFQUFFLFlBQVksQ0FBQzthQUMzRixDQUFBO1FBQ0wsQ0FBQyxDQUNKLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxVQUFVLENBQUMsV0FBVyxHQUFHLDBCQUEwQixDQUFBO1FBQ25ELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLHVCQUF1QixHQUEwQyxJQUFJLENBQUM7SUFJMUUsU0FBc0Isb0JBQW9CLENBQUMsSUFBd0Q7O1lBQy9GLElBQUksWUFBWSxHQUFHLElBQUEsK0JBQWUsR0FBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBQSwrQkFBZSxHQUFFLENBQUMsQ0FBQztZQUMxRSxJQUFJLFlBQVksR0FBRyxJQUFBLCtCQUFlLEdBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUEsK0JBQWUsR0FBRSxDQUFDLENBQUM7WUFFMUUsSUFBSSxTQUFTLEdBQUcsU0FBZSxTQUFTOzs7b0JBQ3BDLElBQUksU0FBUyxHQUFxQixZQUFZLEVBQUUsQ0FBQztvQkFDakQsSUFBSSxZQUFZLEdBQUc7d0JBQ2YsUUFBUSxFQUFFOzRCQUNOLEtBQUssRUFBRSxJQUFJOzRCQUNYLFNBQVMsRUFBRSxFQUFFOzRCQUNiLGNBQWMsRUFBRSxjQUFjOzRCQUM5QixXQUFXLEVBQUUsS0FBSzs0QkFDbEIsZ0JBQWdCLEVBQUUsS0FBSzs0QkFDdkIsZUFBZSxFQUFFLElBQUk7NEJBQ3JCLG1CQUFtQixFQUFFLElBQUk7NEJBQ3pCLGNBQWMsRUFBRSxLQUFLOzRCQUNyQixnQkFBZ0IsRUFBRSxJQUFJOzRCQUN0QixTQUFTLEVBQUUsMEJBQWtCO3lCQUNQLEVBQUUsMENBQTBDO3FCQUM1RCxDQUFDO29CQUNmLElBQUksU0FBUyxFQUFFLENBQUM7d0JBQ1osWUFBWSxtQ0FDTCxZQUFZLEtBQ2YsUUFBUSxnREFDRCxZQUFZLENBQUMsUUFBUSxHQUNyQixTQUFTLENBQUMsUUFBUSxLQUNyQixTQUFTLGtDQUNGLDBCQUFrQixHQUNsQixDQUFDLENBQUEsTUFBQSxTQUFTLENBQUMsUUFBUSwwQ0FBRSxTQUFTLEtBQUksRUFBRSxDQUFDLE9BR25ELENBQUE7b0JBQ0wsQ0FBQztvQkFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDakIsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQzt3QkFDN0MsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7d0JBQ3JELFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztvQkFDekMsQ0FBQztvQkFDRCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUNqRixJQUFJLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDekIsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3JFLENBQUM7b0JBQ0QsSUFBSSxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7d0JBQzdCLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFJLFVBQVUsQ0FBQyxlQUEwQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3BILENBQUM7b0JBQ0QsT0FBTyxZQUFZLENBQUM7Z0JBQ3hCLENBQUM7YUFBQSxDQUFBO1lBQ0QsSUFBSSxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQUMsS0FBZ0I7Z0JBQy9DLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUE7WUFDRCw0QkFBNEI7WUFDNUIsSUFBSSxZQUFZLEdBQWMsTUFBTSxTQUFTLEVBQUUsQ0FBQztZQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFBLG1DQUFhLEVBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3pELGdDQUFnQztZQUNoQywrQkFBK0I7WUFDL0Isb0JBQW9CO1lBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUEsbUJBQVcsRUFBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDcEQsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUM1QixLQUFLLENBQUMsU0FBUyxDQUFDO2dCQUNaLFNBQVMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNoQyxDQUFDLENBQUMsQ0FBQztZQUNILHdCQUF3QjtZQUN4QixzQkFBc0I7WUFDdEIsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztLQUFBO0lBRUQsU0FBZ0Isa0JBQWtCO1FBQzlCLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBQ0QsT0FBTyx1QkFBdUIsQ0FBQztJQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU3RvcmUsIFN0b3JlIH0gZnJvbSBcInJlZHV4XCI7XHJcbmltcG9ydCB7XHJcbiAgICBDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgQ2Fzb1N0YXRlLFxyXG4gICAgRXN0YWRvQ2FyZ2EsIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsXHJcbiAgICBGb3JtdWxhcmlvLCBGb3JQaywgRm9yUGtSYWl6LFxyXG4gICAgSWRDYXJnYSwgSWREZXN0aW5vLCBJZEZvcm11bGFyaW8sIElkVmFyaWFibGUsIElkT3BlcmF0aXZvLFxyXG4gICAgTW9kb0Rlc3BsaWVndWUsXHJcbiAgICBPcGNpb24sXHJcbiAgICB0b1BsYWluRm9yUGssXHJcbiAgICBJZEZpbixcclxuICAgIElkRW5jLFxyXG4gICAgSWRUYXJlYSxcclxuICAgIEVzdHJ1Y3R1cmEsXHJcbiAgICBNb2RvRE0sXHJcbiAgICBQYW50YWxsYU5hdmVnYWNpb24sXHJcbiAgICBJZENvbW9kaW4sXHJcbiAgICBJZENhc2lsbGVybyxcclxuICAgIElkQm90b25Gb3JtdWxhcmlvLFxyXG4gICAgSWRDb25zaXN0ZW5jaWEsXHJcbiAgICBJZFRleHRvLFxyXG59IGZyb20gXCIuL3RpcG9zXCI7XHJcbmltcG9ydCB7IGNyZWF0ZVJlZHVjZXIsIGNyZWF0ZURpc3BhdGNoZXJzLCBBY3Rpb25zRnJvbSB9IGZyb20gXCJyZWR1eC10eXBlZC1yZWR1Y2VyXCI7XHJcbmltcG9ydCBsaWtlQXIgPSByZXF1aXJlKFwibGlrZS1hclwiKTtcclxuaW1wb3J0ICogYXMgYmVzdEdsb2JhbHMgZnJvbSBcImJlc3QtZ2xvYmFsc1wiO1xyXG5pbXBvcnQgKiBhcyBKU09ONGFsbCBmcm9tIFwianNvbjRhbGxcIjtcclxuXHJcbmltcG9ydCB7IE9wY2lvbiBhcyBSb3dWYWxpZGF0b3JPcGNpb24gfSBmcm9tIFwicm93LXZhbGlkYXRvclwiO1xyXG5pbXBvcnQgeyBnZXRGb3JtUmVuZGVyZXIgfSBmcm9tIFwiLi9yZW5kZXItY29uZmlnXCI7XHJcblxyXG52YXIgbXkgPSBteU93bjtcclxuXHJcbmZ1bmN0aW9uIGZvclBrVG9VcmwoZm9yUGs6IEZvclBrIHwgbnVsbCwgcGlsYUZvclBrOiBGb3JQa1tdKSB7XHJcbiAgICB2YXIgYWRkclBhcmFtcyA9IG15T3duLlVyaVNlYXJjaFRvT2JqZWN0KGxvY2F0aW9uLmhhc2ggfHwgbG9jYXRpb24uc2VhcmNoIHx8ICcnKTtcclxuICAgIG15T3duLnJlcGxhY2VBZGRyUGFyYW1zKHtcclxuICAgICAgICAuLi5hZGRyUGFyYW1zLFxyXG4gICAgICAgIHN0YXRlX2ZvclBrOiBmb3JQayA9PSBudWxsID8gJ251bGwnIDogdG9QbGFpbkZvclBrKGZvclBrKSxcclxuICAgICAgICBzdGF0ZV9waWxhRm9yUGs6IHBpbGFGb3JQay5tYXAodG9QbGFpbkZvclBrKS5qb2luKCd8JylcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgY29tb2RpbmVzSW5pY2lhbGVzOiBSZWNvcmQ8SWRDb21vZGluLCBzdHJpbmc+ID0ge1xyXG4gICAgJ1NFTV9SRUYnOiAnQFNFTV9SRUZAJyxcclxuICAgICdEMzBfUkVGJzogJ0BEMzBfUkVGQCcsXHJcbiAgICAnTUVTX1JFRic6ICdATUVTX1JFRkAnLFxyXG4gICAgJ1NFTV9OVU0nOiAnQFNFTV9OVU1AJyxcclxuICAgICdyZXNwczEnOiAnQHJlc3BzMUAnLFxyXG4gICAgJ3BhcmVudHMxJzogJ0BwYXJlbnRzMUAnLFxyXG4gICAgJ3Jlc3BpMSc6ICdAcmVzcGkxQCcsXHJcbiAgICAncGFyZW50aTEnOiAnQHBhcmVudGkxQCcsXHJcbiAgICAnbmplZmUnOiAnQG5qZWZlQCcsXHJcbiAgICAnZnJlYWxpeic6ICdAZnJlYWxpekAnLFxyXG4gICAgJ2NhbnRfaG9nYXJlcyc6ICdAY2FudF9ob2dhcmVzQCdcclxufTtcclxuXHJcbnZhciByZWR1Y2VycyA9IHtcclxuICAgIE1PRE9fREVTUExJRUdVRTogKHBheWxvYWQ6IHsgbW9kb0Rlc3BsaWVndWU6IE1vZG9EZXNwbGllZ3VlIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBtb2RvRGVzcGxpZWd1ZTogcGF5bG9hZC5tb2RvRGVzcGxpZWd1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENBTUJJQVJfTU9ET19ETTogKHBheWxvYWQ6IHsgbW9kb0RNOiBNb2RvRE0gfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZG9ETTogcGF5bG9hZC5tb2RvRE1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBDQU1CSUFSX0ZPUk1VTEFSSU86IChwYXlsb2FkOiB7IGZvclBrOiBGb3JQaywgYXBpbGFyVnVlbHRhOiBib29sZWFuIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgdmFyIGZvclBrID0gcGF5bG9hZC5mb3JQaztcclxuICAgICAgICAgICAgdmFyIHBpbGFGb3JQayA9IHBheWxvYWQuYXBpbGFyVnVlbHRhID8gKFxyXG4gICAgICAgICAgICAgICAgc3RhdGUub3BjaW9uZXMuZm9yUGsgPT0gbnVsbCA/IFtdIDogWy4uLnN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaywgc3RhdGUub3BjaW9uZXMuZm9yUGtdXHJcbiAgICAgICAgICAgICkgOiBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGs7XHJcbiAgICAgICAgICAgIGZvclBrVG9VcmwoZm9yUGssIHBpbGFGb3JQayk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgVk9MVkVSX0RFX0ZPUk1VTEFSSU86ICh7IG1hZ25pdHVkUmV0cm9jZXNvIH06IHsgbWFnbml0dWRSZXRyb2Nlc286IG51bWJlciB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQa1tzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsubGVuZ3RoIC0gbWFnbml0dWRSZXRyb2Nlc29dIHx8IG51bGw7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGsgPSBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsuc2xpY2UoMCwgc3RhdGUub3BjaW9uZXMucGlsYUZvclBrLmxlbmd0aCAtIG1hZ25pdHVkUmV0cm9jZXNvKTtcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQayxcclxuICAgICAgICAgICAgICAgICAgICBwaWxhRm9yUGtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBWT0xWRVJfSERSOiAoX3BheWxvYWQ6IHt9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IG51bGw7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGs6IEZvclBrW10gPSBbXTtcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQayxcclxuICAgICAgICAgICAgICAgICAgICBwaWxhRm9yUGtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBTRVRfT1BDSU9OOiAocGF5bG9hZDogeyBvcGNpb246IGtleW9mIENhc29TdGF0ZVsnb3BjaW9uZXMnXSwgdmFsb3I6IGFueSB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgLy9zaSBjYW1iaWEgZGUgcGFudGFsbGEgcG9yIGFjw6EgcmVzZXRlbyBlbCBhdmlzbyBwb3IgbGFzIGR1ZGFzXHJcbiAgICAgICAgICAgICAgICAgICAgYXZpc29QZXJzaXN0ZW50ZTogcGF5bG9hZC5vcGNpb24gPT0gJ3BhbnRhbGxhQWN0dWFsJyA/IG51bGwgOiBzdGF0ZS5vcGNpb25lcy5hdmlzb1BlcnNpc3RlbnRlLFxyXG4gICAgICAgICAgICAgICAgICAgIFtwYXlsb2FkLm9wY2lvbl06IHBheWxvYWQudmFsb3JcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBSRVNFVF9PUENJT05FUzogKF9wYXlsb2FkOiB7fSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhbnRhbGxhQWN0dWFsOiAnaGRyJyxcclxuICAgICAgICAgICAgICAgICAgICBhdmlzb1BlcnNpc3RlbnRlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrOiBudWxsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgU0VUX1BBTlRBTExBX0FDVFVBTDogKHBheWxvYWQ6IHsgcGFudGFsbGE6IFBhbnRhbGxhTmF2ZWdhY2lvbiwgYXZpc29QZXJzaXN0ZW50ZTogeyB0aXBvOiAnaW5mbycgfCAnc3VjY2VzcycgfCAnZXJyb3InLCBtZW5zYWplOiBzdHJpbmcgfSB8IG51bGwgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhbnRhbGxhQWN0dWFsOiBwYXlsb2FkLnBhbnRhbGxhLFxyXG4gICAgICAgICAgICAgICAgICAgIGF2aXNvUGVyc2lzdGVudGU6IHBheWxvYWQuYXZpc29QZXJzaXN0ZW50ZSB8fCBudWxsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ09ORklSTUFSX0JPUlJBUl9SRVNQVUVTVEE6IChwYXlsb2FkOiB7IGZvclBrOiBGb3JQaywgdmFyaWFibGU6IElkVmFyaWFibGUgfCBudWxsIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQazogcGF5bG9hZC5mb3JQayxcclxuICAgICAgICAgICAgICAgICAgICBtb2RvQm9ycmFyUmVzcHVlc3RhOiBwYXlsb2FkLnZhcmlhYmxlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ0FNQklBUl9DT01PRElOOiAocGF5bG9hZDogeyBpZENvbW9kaW46IElkQ29tb2RpbiwgdmFsb3I6IGFueSB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdHVhbCA9IHN0YXRlLm9wY2lvbmVzPy5jb21vZGluZXMgfHwgY29tb2RpbmVzSW5pY2lhbGVzO1xyXG4gICAgICAgICAgICBpZiAoYWN0dWFsW3BheWxvYWQuaWRDb21vZGluXSA9PT0gcGF5bG9hZC52YWxvcikgcmV0dXJuIHN0YXRlO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW9kaW5lczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5hY3R1YWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXlsb2FkLmlkQ29tb2Rpbl06IHBheWxvYWQudmFsb3JcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ0FNQklBUl9DT01PRElORVM6IChwYXlsb2FkOiBSZWNvcmQ8SWRDb21vZGluLCBzdHJpbmc+KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIC8vIENoZXF1ZW8gZGUgaWd1YWxkYWQgc3VwZXJmaWNpYWwgcGFyYSBldml0YXIgY2xvbmVzIHNpIE5BREEgY2FtYmnDs1xyXG4gICAgICAgICAgICBjb25zdCBhY3R1YWwgPSBzdGF0ZS5vcGNpb25lcz8uY29tb2RpbmVzIHx8IGNvbW9kaW5lc0luaWNpYWxlcztcclxuICAgICAgICAgICAgY29uc3QgY2FtYmlvID0gIXN0YXRlLm9wY2lvbmVzPy5jb21vZGluZXMgfHwgT2JqZWN0LmtleXMocGF5bG9hZCkuc29tZShcclxuICAgICAgICAgICAgICAgIChrZXkpID0+IGFjdHVhbFtrZXkgYXMgSWRDb21vZGluXSAhPT0gcGF5bG9hZFtrZXkgYXMgSWRDb21vZGluXVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFjYW1iaW8pIHJldHVybiBzdGF0ZTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tb2RpbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbW9kaW5lc0luaWNpYWxlcywgLy8gQmxhbnF1ZWEvUmVzZXRlYSBkZWZhdWx0cyBzaSBmYWx0YW4gY2xhdmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBheWxvYWRcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFjdGlvbkZvcm11bGFyaW9TdGF0ZSA9IEFjdGlvbnNGcm9tPHR5cGVvZiByZWR1Y2Vycz47XHJcbi8qIEZJTiBBQ0NJT05FUyAqL1xyXG5cclxuZXhwb3J0IGNvbnN0IGRpc3BhdGNoZXJzID0gY3JlYXRlRGlzcGF0Y2hlcnMocmVkdWNlcnMpO1xyXG5cclxuaW50ZXJmYWNlIElEYXRhU2VwYXJhZGE8VCBleHRlbmRzIHsgdGlwb2M6IHN0cmluZyB9PiB7XHJcbiAgICBkYXRhOiBULFxyXG4gICAgY2hpbGRzOiBJRGF0YVNlcGFyYWRhPFQ+W11cclxufVxyXG5cclxudHlwZSBJRGF0YUNvbkNhc2lsbGVyb3M8VD4gPSBUICYge1xyXG4gICAgY2FzaWxsZXJvczogcmVhZG9ubHkgSURhdGFDb25DYXNpbGxlcm9zPFQ+W11cclxufVxyXG5cclxuY29uc3QgY2FzaWxsZXJvVmFjaW8gPSB7XHJcbiAgICBzYWx0bzogbnVsbCwgZGVzcGxpZWd1ZTogbnVsbCwgYWNsYXJhY2lvbjogbnVsbCwgdmVyX2lkOiBudWxsLCBjYXNpbGxlcm9zOiBbXSwgbGVlcjogbnVsbCxcclxuICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOiBudWxsLCBkZXNwbGllZ3VlQ29udGVuaWRvOiBudWxsLCBkZXNwbGllZ3VlT2N1bHRhOiBudWxsLCBkZXNwbGllZ3VlVGlwb0lucHV0OiBudWxsXHJcbn1cclxuXHJcbmNvbnN0IG9wY2lvbmVzU2lObzogT3BjaW9uW10gPSBbXHJcbiAgICB7IC4uLmNhc2lsbGVyb1ZhY2lvLCBjYXNpbGxlcm86IDEsIHRpcG9jOiAnTycsIG5vbWJyZTogJ1PDrScgfSxcclxuICAgIHsgLi4uY2FzaWxsZXJvVmFjaW8sIGNhc2lsbGVybzogMiwgdGlwb2M6ICdPJywgbm9tYnJlOiAnTm8nIH0sXHJcbl1cclxuXHJcbnR5cGUgQ2FyYWNlcml6YWNpb25Fc3RhZG9Sb3dWYWxpZGF0b3IgPSB7XHJcbiAgICBjb3JyZWN0bzogYm9vbGVhbixcclxuICAgIGNvblZhbG9yOiBib29sZWFuIHwgbnVsbCwgLy8gbnVsbCA9IHVua25vd25cclxufVxyXG5cclxuZnVuY3Rpb24gYXBsYW5hckxhQ3VydmE8VCBleHRlbmRzIHsgdGlwb2M6IHN0cmluZywgZGVzcGxpZWd1ZT86IHN0cmluZyB8IG51bGwgfT4oY2FzaWxsZXJvc0RhdGE6IElEYXRhU2VwYXJhZGE8VD4pOiBJRGF0YUNvbkNhc2lsbGVyb3M8VCB8IE9wY2lvbj4ge1xyXG4gICAgdmFyIGRhdGEgPSBjYXNpbGxlcm9zRGF0YS5kYXRhXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmRhdGEsXHJcbiAgICAgICAgZGVzcGxpZWd1ZUNvbnRlbmlkbzogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnaG9yaXpvbnRhbCcpID8gJ2hvcml6b250YWwnIDogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygndmVydGljYWwnKSA/ICd2ZXJ0aWNhbCcgOiBudWxsLFxyXG4gICAgICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdsYXRlcmFsJykgPyAnbGF0ZXJhbCcgOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdzdXBlcmlvcicpID8gJ3N1cGVyaW9yJyA6IG51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZU9jdWx0YTogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnb2N1bHRhcicpID8/IG51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZVRpcG9JbnB1dDogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygndGVsZWZvbm8nKSA/ICd0ZWwnIDogbnVsbCxcclxuICAgICAgICBjYXNpbGxlcm9zOiAhY2FzaWxsZXJvc0RhdGEuY2hpbGRzLmxlbmd0aCAmJiBjYXNpbGxlcm9zRGF0YS5kYXRhLnRpcG9jID09ICdPTScgPyBvcGNpb25lc1NpTm8gOlxyXG4gICAgICAgICAgICBjYXNpbGxlcm9zRGF0YS5jaGlsZHMubWFwKGNhc2lsbGVybyA9PiBhcGxhbmFyTGFDdXJ2YShjYXNpbGxlcm8pKVxyXG4gICAgfVxyXG59XHJcblxyXG4vLyB0eXBlIEFueVJlZjxUIGV4dGVuZHMge30+PVtULCBrZXlvZiBUXTtcclxuXHJcbi8vIFZhcmlhYmxlIGRlIHVuIGJvdMOzbiBkZSBmb3JtdWxhcmlvOiBubyBlcyBsaWJyZSAoYXPDrSBlbCByb3dWYWxpZGF0b3IgbGEgdmUpIHkgY3VhbHF1aWVyIHZhbG9yIGNhcmdhZG8gZXMgdsOhbGlkby5cclxuLy8gQW50ZXMgc2UgZGVmaW7DrWEgY29tbyB7dGlwb3Zhcjonb3BjaW9uZXMnLCBjYXNpbGxlcm9zOlsuLi5dfSwgcGVybyBlbCByb3dWYWxpZGF0b3IgaWdub3JhIGVzb3MgY2FtcG9zXHJcbi8vIChzw7NsbyBtaXJhIHRpcG8vb3BjaW9uZXMpIHkgbGEgdmFsaWRhYmEgY29tbyB0ZXh0bzsgc2UgZGVqYSBleHBsw61jaXRvIGVzZSBtaXNtbyBjb21wb3J0YW1pZW50by5cclxuZnVuY3Rpb24gdmFyaWFibGVCb3RvbkZvcm11bGFyaW8oKTogRXN0cnVjdHVyYVJvd1ZhbGlkYXRvclsndmFyaWFibGVzJ11bSWRWYXJpYWJsZV0ge1xyXG4gICAgcmV0dXJuIHsgdGlwbzogJ3RleHRvJyB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiByZWxsZW5hclZhcmlhYmxlc1lPcGNpb25lcyhpZEZvcm11bGFyaW86IElkRm9ybXVsYXJpbywgZXN0cnVjdHVyYTogRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgY2FzaWxsZXJvOiBDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgdW5pZGFkQW5hbGlzaXM/OiBzdHJpbmcgfCBudWxsLFxyXG4gICAgc3Vib3JkaW5hZGFWYXI/OiBJZFZhcmlhYmxlLCBzdWJvcmRpbmFkYVZhbG9yPzogYW55XHJcbikge1xyXG4gICAgdmFyIHZhck5hbWVDYXNpbGxlcm8gPSBjYXNpbGxlcm8udmFyX25hbWU7XHJcbiAgICBpZiAodmFyTmFtZUNhc2lsbGVybyAhPSBudWxsIHx8IGNhc2lsbGVyby50aXBvYyA9PSAnRklMVFJPJykge1xyXG4gICAgICAgIHZhciB2YXJfbmFtZTogSWRWYXJpYWJsZVxyXG4gICAgICAgIGlmICh2YXJOYW1lQ2FzaWxsZXJvID09IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gZXMgdW4gRklMVFJPIChsb3MgZmlsdHJvcyBubyB0aWVuZW4gdmFyX25hbWUpXHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgcG9uZ28gY29tbyBub21icmUgZGUgdmFyaWFibGUgZWwgZmlsdHJvO1xyXG4gICAgICAgICAgICB2YXJfbmFtZSA9IGNhc2lsbGVyby5jYXNpbGxlcm87XHJcbiAgICAgICAgfSBlbHNlIGlmICh2YXJOYW1lQ2FzaWxsZXJvLmVuZHNXaXRoKCchJykpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBsYXMgdmFyaWFibGVzIGVzcGVqbyBzb24gbGFzIHF1ZSB0ZXJtaW5hbiBlbiAhXHJcbiAgICAgICAgICAgIHZhcl9uYW1lID0gY2FzaWxsZXJvLnZhcl9uYW1lX2VzcGVjaWFsLnJlcGxhY2UoLyErJC8sICcnKTtcclxuICAgICAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lID0gdmFyX25hbWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFyX25hbWUgPSB2YXJOYW1lQ2FzaWxsZXJvXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB2YXJpYWJsZURlZiA9IHtcclxuICAgICAgICAgICAgdGlwbzogY2FzaWxsZXJvLnRpcG9jID09ICdGSUxUUk8nID8gJ2ZpbHRybycgOiBjYXNpbGxlcm8udGlwb2MgPT0gJ09NJyB8fCBjYXNpbGxlcm8udGlwb3ZhciA9PSAnc2lfbm8nID8gJ29wY2lvbmVzJyA6IGNhc2lsbGVyby50aXBvdmFyLFxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIG9wdGF0aXZvIHBvZHLDrWEgbm8gZXhpc3RpciwgcXVlZGFyw6EgbnVsbC5cclxuICAgICAgICAgICAgb3B0YXRpdmE6IGNhc2lsbGVyby5vcHRhdGl2byEsXHJcbiAgICAgICAgICAgIG9wY2lvbmVzOiAoY2FzaWxsZXJvLnRpcG9jID09ICdPTScgfHwgY2FzaWxsZXJvLnRpcG92YXIgPT0gJ29wY2lvbmVzJyB8fCBjYXNpbGxlcm8udGlwb3ZhciA9PSAnc2lfbm8nID9cclxuICAgICAgICAgICAgICAgIGxpa2VBci5jcmVhdGVJbmRleChjYXNpbGxlcm8uY2FzaWxsZXJvcyA/PyBbXSwgJ2Nhc2lsbGVybycpIDoge30pIGFzIHVua25vd24gYXMgeyBba2V5OiBzdHJpbmddOiBSb3dWYWxpZGF0b3JPcGNpb248SWRWYXJpYWJsZT4gfSxcclxuICAgICAgICAgICAgc2FsdG86IGNhc2lsbGVyby5zYWx0byBhcyBJZFZhcmlhYmxlLFxyXG4gICAgICAgICAgICBzYWx0b05zTnI6IGNhc2lsbGVyby5zYWx0b19uc19uYyBhcyBJZFZhcmlhYmxlIHx8IG51bGwsXHJcbiAgICAgICAgICAgIGZ1bmNpb25IYWJpbGl0YXI6IGNhc2lsbGVyby5leHByZXNpb25faGFiaWxpdGFyX2pzLFxyXG4gICAgICAgICAgICBmdW5jaW9uQXV0b0luZ3Jlc2FyOiBjYXNpbGxlcm8uZXhwcmVzaW9uX2F1dG9pbmdyZXNhcl9qcyxcclxuICAgICAgICAgICAgY2FsY3VsYWRhOlxyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSAvLyBUT0RPLiBBdmVyaWd1YXIgc2kgbGFzIHByZWd1bnRhcyB5IGZpbHRyb3MgcHVlZGVuIHRlbmVyIHVuaWRhZCBkZSBhbsOhbGlzaXNcclxuICAgICAgICAgICAgICAgIGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXMgJiYgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpcyAhPSB1bmlkYWRBbmFsaXNpc1xyXG4gICAgICAgICAgICAgICAgfHwgY2FzaWxsZXJvLmNhbGN1bGFkYSxcclxuICAgICAgICAgICAgbGlicmU6IGNhc2lsbGVyby5saWJyZVxyXG4gICAgICAgIH0gYXMgKHR5cGVvZiBlc3RydWN0dXJhLnZhcmlhYmxlcylbSWRWYXJpYWJsZV1cclxuICAgICAgICBpZiAoc3Vib3JkaW5hZGFWYWxvciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdmFyaWFibGVEZWYuc3Vib3JkaW5hZGFWYXIgPSBzdWJvcmRpbmFkYVZhcjtcclxuICAgICAgICAgICAgdmFyaWFibGVEZWYuc3Vib3JkaW5hZGFWYWxvciA9IHN1Ym9yZGluYWRhVmFsb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW3Zhcl9uYW1lXSA9IHZhcmlhYmxlRGVmO1xyXG4gICAgfSBlbHNlIGlmIChjYXNpbGxlcm8udGlwb2MgPT0gJ0JGJykge1xyXG4gICAgICAgIC8vIHZhciB2YXJfbmFtZSA9ICckQi5GOicrY2FzaWxsZXJvLnNhbHRvIGFzIElkVmFyaWFibGU7ICAgIC8vb3JpZ2luYWxcclxuICAgICAgICB2YXIgc2FsdG9Ob21icmUgPSBjYXNpbGxlcm8uc2FsdG8hLnN1YnN0cigwLCAyKSA9PSAnRjonID8gY2FzaWxsZXJvLnNhbHRvIS5zbGljZSgyKSA6IGNhc2lsbGVyby5zYWx0bztcclxuICAgICAgICBjb25zdCByZXF1aWVyZUFncmVnYXIgPSBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzICYmIGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXMgIT09IHVuaWRhZEFuYWxpc2lzXHJcbiAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lc19CRiA9IGNhc2lsbGVyby52YXJfbmFtZXNfQkYgfHwgW107XHJcblxyXG4gICAgICAgIGlmIChyZXF1aWVyZUFncmVnYXIpIHtcclxuICAgICAgICAgICAgdmFyIG5ld1Zhck5hbWVBZ3JlZ2FyID0gJyRCLkY6JyArIHNhbHRvTm9tYnJlICsgJ19hZ3JlZ2FyJyBhcyBJZFZhcmlhYmxlO1xyXG4gICAgICAgICAgICBjYXNpbGxlcm8udmFyX25hbWVzX0JGLnB1c2gobmV3VmFyTmFtZUFncmVnYXIpO1xyXG4gICAgICAgICAgICBlc3RydWN0dXJhLnZhcmlhYmxlc1tuZXdWYXJOYW1lQWdyZWdhcl0gPSB2YXJpYWJsZUJvdG9uRm9ybXVsYXJpbygpO1xyXG4gICAgICAgICAgICBjYXNpbGxlcm8ucHJpbWVyYV92YXJpYWJsZSA9IG5ld1Zhck5hbWVBZ3JlZ2FyO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgbmV3VmFyTmFtZSA9ICckQi5GOicgKyBzYWx0b05vbWJyZSBhcyBJZFZhcmlhYmxlO1xyXG4gICAgICAgIGNhc2lsbGVyby52YXJfbmFtZXNfQkYucHVzaChuZXdWYXJOYW1lKVxyXG4gICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW25ld1Zhck5hbWVdID0gdmFyaWFibGVCb3RvbkZvcm11bGFyaW8oKTtcclxuICAgICAgICBjYXNpbGxlcm8ucHJpbWVyYV92YXJpYWJsZSA9IGNhc2lsbGVyby5wcmltZXJhX3ZhcmlhYmxlIHx8IG5ld1Zhck5hbWU7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKGNhc2lsbGVyby5jYXNpbGxlcm9zKSB7XHJcbiAgICAgICAgY2FzaWxsZXJvLmNhc2lsbGVyb3MuZm9yRWFjaCgoY2FzaWxsZXJvSGlqbzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MpID0+XHJcbiAgICAgICAgICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYSwgY2FzaWxsZXJvSGlqbywgdW5pZGFkQW5hbGlzaXMsIGNhc2lsbGVyby52YXJfbmFtZSA/IGNhc2lsbGVyby52YXJfbmFtZSA6IGNhc2lsbGVyby50aXBvYyA9PSAnTycgPyBzdWJvcmRpbmFkYVZhciA6IHVuZGVmaW5lZCwgY2FzaWxsZXJvLnRpcG9jID09ICdPJyA/IGNhc2lsbGVyby5jYXNpbGxlcm8gOiB1bmRlZmluZWQpXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG59XHJcblxyXG4vLyBzZSByZWdpc3RyYSBlbCBkZXN0aW5vIGRlIHRvZG8gY2FzaWxsZXJvIHF1ZSBwdWVkYSBzZXIgYXB1bnRhZG8gcG9yIHVuIHNhbHRvXHJcbnR5cGUgUmVnaXN0cm9EZXN0aW5vcyA9IFBhcnRpYWw8UmVjb3JkPElkQ2FzaWxsZXJvIHwgSWREZXN0aW5vIHwgSWRCb3RvbkZvcm11bGFyaW8gfCBJZENvbnNpc3RlbmNpYSB8IElkVGV4dG8sIElkVmFyaWFibGUgfCBudWxsPj47XHJcblxyXG5mdW5jdGlvbiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGRlc3Rpbm9zPzogUmVnaXN0cm9EZXN0aW5vcyk6IFJlZ2lzdHJvRGVzdGlub3Mge1xyXG4gICAgaWYgKGRlc3Rpbm9zID09IG51bGwpIHJldHVybiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybywge30pO1xyXG4gICAgaWYgKGNhc2lsbGVyby50aXBvYyA9PSAnRklMVFJPJykge1xyXG4gICAgICAgIGRlc3Rpbm9zW2Nhc2lsbGVyby5jYXNpbGxlcm9dID0gY2FzaWxsZXJvLmNhc2lsbGVybyBhcyBJZFZhcmlhYmxlO1xyXG4gICAgfSBlbHNlIGlmIChjYXNpbGxlcm8udGlwb2MgIT0gJ0YnICYmIGNhc2lsbGVyby50aXBvYyAhPSAnTycgJiYgY2FzaWxsZXJvLnRpcG9jICE9ICdPTScpIHtcclxuICAgICAgICBkZXN0aW5vc1tjYXNpbGxlcm8uY2FzaWxsZXJvXSA9IGNhc2lsbGVyby5wcmltZXJhX3ZhcmlhYmxlIHx8IG51bGxcclxuICAgIH1cclxuICAgIGlmIChjYXNpbGxlcm8uY2FzaWxsZXJvcykge1xyXG4gICAgICAgIGNhc2lsbGVyby5jYXNpbGxlcm9zLmZvckVhY2goYyA9PiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGMsIGRlc3Rpbm9zKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGVzdGlub3M7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlbGxlbmFyRGVzdGlub3MoZXN0cnVjdHVyYTogRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciwgZGVzdGlub3M6IFJlZ2lzdHJvRGVzdGlub3MpOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yIHtcclxuICAgIGZ1bmN0aW9uIG9idGVuZXJEZXN0aW5vKGlkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubzogSWRWYXJpYWJsZSB8IG51bGwgfCB1bmRlZmluZWQgfCBJZEZpbik6IElkVmFyaWFibGUgfCBudWxsIHtcclxuICAgICAgICByZXR1cm4gaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vID09ICdmaW4nIGFzIElkVmFyaWFibGUgPyAnZmluJyBhcyBJZFZhcmlhYmxlIDogaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vICE9IG51bGwgJiYgZGVzdGlub3NbaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vIGFzIElkRGVzdGlub10gfHwgbnVsbFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5lc3RydWN0dXJhLFxyXG4gICAgICAgIHZhcmlhYmxlczogbGlrZUFyKGVzdHJ1Y3R1cmEudmFyaWFibGVzKS5tYXAodmFyaWFibGVEZWYgPT4gKHtcclxuICAgICAgICAgICAgLi4udmFyaWFibGVEZWYsXHJcbiAgICAgICAgICAgIHNhbHRvOiBvYnRlbmVyRGVzdGlubyh2YXJpYWJsZURlZi5zYWx0byksXHJcbiAgICAgICAgICAgIHNhbHRvTnNOcjogb2J0ZW5lckRlc3Rpbm8odmFyaWFibGVEZWYuc2FsdG9Oc05yKSxcclxuICAgICAgICAgICAgb3BjaW9uZXM6IHZhcmlhYmxlRGVmLm9wY2lvbmVzICE9IG51bGwgPyBsaWtlQXIodmFyaWFibGVEZWYub3BjaW9uZXMpLm1hcChvcGNpb25EZWYgPT4gKHsgc2FsdG86IG9idGVuZXJEZXN0aW5vKG9wY2lvbkRlZi5zYWx0bykgfSkpLnBsYWluKCkgOiB1bmRlZmluZWRcclxuICAgICAgICB9KSkucGxhaW4oKVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZW5lcmFyRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcihjYXNpbGxlcm86IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCBpZEZvcm11bGFyaW86IElkRm9ybXVsYXJpbyk6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3Ige1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmFJbmNvbXBsZXRhOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yID0geyB2YXJpYWJsZXM6IHt9LCBtYXJjYUZpbjogJ2ZpbicgfSBhcyB1bmtub3duIGFzIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I7XHJcbiAgICByZWxsZW5hclZhcmlhYmxlc1lPcGNpb25lcyhpZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmFJbmNvbXBsZXRhLCBjYXNpbGxlcm8sXHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZSB2ZXIgc2kgY3VhbHF1aWVyIGNvc2EgcHVlZGUgdGVuZXIgdW5pZGFkX2FuYWxpc2lzXHJcbiAgICAgICAgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpc1xyXG4gICAgKTtcclxuICAgIHZhciBkZXN0aW5vcyA9IG9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoY2FzaWxsZXJvKTtcclxuICAgIHJldHVybiByZWxsZW5hckRlc3Rpbm9zKGVzdHJ1Y3R1cmFJbmNvbXBsZXRhLCBkZXN0aW5vcyk7XHJcbn1cclxuXHJcbmV4cG9ydCB7IHJlcGxhY2VTcGVjaWFsV29yZHMgfSBmcm9tIFwiLi9oZWxwZXJzLWZvcm11bGFyaW9cIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvQ29uc2lzdGlyKG9wZXJhdGl2bzogSWRPcGVyYXRpdm8sIHRhcmVhOiBJZFRhcmVhLCBlbmM6IElkRW5jKSB7XHJcbiAgICAvLyBUT0RPLTIwMjMtMDM6IHByb2JhciBjb24gZXN0bzpcclxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4gKyBsb2NhdGlvbi5wYXRobmFtZX0vLi4vbWVudSN3PWNvbnNpc3Rpcl9lbmN1ZXN0YSZ1cD0ke0pTT040YWxsLnRvVXJsKHsgb3BlcmF0aXZvLCB0YXJlYSwgZW5jIH0pfSZhdXRvcHJvY2VkPXRydWVgKTtcclxuICAgIC8vIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjdz1jb25zaXN0aXJfZW5jdWVzdGEmdXA9e1wib3BlcmF0aXZvXCI6XCIke29wZXJhdGl2b31cIixcInRhcmVhXCI6XCIke3RhcmVhfVwiLFwiZW5jdWVzdGFcIjoke2VuY3Vlc3RhfX0mYXV0b3Byb2NlZD10cnVlYCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkYXB0YXJFc3RydWN0dXJhKGVzdHJ1Y3R1cmFCYWNrZW5kOmFueSkge1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmE6IEVzdHJ1Y3R1cmEgPSBlc3RydWN0dXJhQmFja2VuZDtcclxuICAgIHZhciBjYXNpbGxlcm9zT3JpZ2luYWxlczoge30gPSBlc3RydWN0dXJhLmZvcm11bGFyaW9zO1xyXG4gICAgdmFyIG1haW5Gb3JtOiBJZEZvcm11bGFyaW8gfCB1bmRlZmluZWQ7XHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHZhciBjYXNpbGxlcm9zVG9kb3NGb3JtdWxhcmlvczogeyBbZiBpbiBJZEZvcm11bGFyaW9dOiB7IGNhc2lsbGVyb3M6IEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IgfSB9ID1cclxuICAgICAgICBsaWtlQXIoY2FzaWxsZXJvc09yaWdpbmFsZXMpLm1hcChcclxuICAgICAgICAgICAgKGNhc2lsbGVyb3NKZXJhcnF1aXphZG9zOiBhbnksIGlkRm9ybXVsYXJpbykgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNhc2lsbGVyb3NBcGxhbmFkb3M6IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zID0gYXBsYW5hckxhQ3VydmEoY2FzaWxsZXJvc0plcmFycXVpemFkb3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhc2lsbGVyb3NBcGxhbmFkb3MudGlwb2MgPT0gJ0YnICYmIGNhc2lsbGVyb3NBcGxhbmFkb3MuZm9ybXVsYXJpb19wcmluY2lwYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBtYWluRm9ybSA9IGlkRm9ybXVsYXJpbztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvczogY2FzaWxsZXJvc0FwbGFuYWRvcyxcclxuICAgICAgICAgICAgICAgICAgICBlc3RydWN0dXJhUm93VmFsaWRhdG9yOiBnZW5lcmFyRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcihjYXNpbGxlcm9zQXBsYW5hZG9zLCBpZEZvcm11bGFyaW8pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBsYWluKCk7XHJcbiAgICBlc3RydWN0dXJhLmZvcm11bGFyaW9zID0gY2FzaWxsZXJvc1RvZG9zRm9ybXVsYXJpb3NcclxuICAgIHJldHVybiBlc3RydWN0dXJhO1xyXG59XHJcblxyXG5sZXQgc3RvcmVGb3JtdWxhcmlvSW5zdGFuY2U6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVN0b3JlPiB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXJTdG9yZUZvcm11bGFyaW8ob3B0czogeyBvcGVyYXRpdm8/OiBJZE9wZXJhdGl2bywgZm9yUGtSYWl6PzogRm9yUGtSYWl6IH0pIHtcclxuICAgIHZhciBnZXRDYXNvU3RhdGUgPSBnZXRGb3JtUmVuZGVyZXIoKS5nZXRDYXNvU3RhdGUuYmluZChnZXRGb3JtUmVuZGVyZXIoKSk7XHJcbiAgICB2YXIgc2V0Q2Fzb1N0YXRlID0gZ2V0Rm9ybVJlbmRlcmVyKCkuc2V0Q2Fzb1N0YXRlLmJpbmQoZ2V0Rm9ybVJlbmRlcmVyKCkpO1xyXG5cclxuICAgIHZhciBsb2FkU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBsb2FkU3RhdGUoKTogUHJvbWlzZTxDYXNvU3RhdGU+IHtcclxuICAgICAgICB2YXIgY2Fzb1N0YXRlOiBDYXNvU3RhdGUgfCBudWxsID0gZ2V0Q2Fzb1N0YXRlKCk7XHJcbiAgICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHtcclxuICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgIGZvclBrOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgcGlsYUZvclBrOiBbXSxcclxuICAgICAgICAgICAgICAgIG1vZG9EZXNwbGllZ3VlOiAncmVsZXZhbWllbnRvJyxcclxuICAgICAgICAgICAgICAgIG1vZG9EaXJlY3RvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNvbkNhbXBvT3BjaW9uZXM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2FsdG9BdXRvbWF0aWNvOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTogbnVsbCxcclxuICAgICAgICAgICAgICAgIHBhbnRhbGxhQWN0dWFsOiAnaGRyJyxcclxuICAgICAgICAgICAgICAgIGF2aXNvUGVyc2lzdGVudGU6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBjb21vZGluZXM6IGNvbW9kaW5lc0luaWNpYWxlc1xyXG4gICAgICAgICAgICB9IGFzIENhc29TdGF0ZVtcIm9wY2lvbmVzXCJdLCAvLyBwb25lciBsb3MgdmFsb3JlcyBwb3IgZGVmZWN0byBtw6FzIGFiYWpvXHJcbiAgICAgICAgfSBhcyBDYXNvU3RhdGU7XHJcbiAgICAgICAgaWYgKGNhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5pbml0aWFsU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLmluaXRpYWxTdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICAuLi5jYXNvU3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tb2RpbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbW9kaW5lc0luaWNpYWxlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGNhc29TdGF0ZS5vcGNpb25lcz8uY29tb2RpbmVzIHx8IHt9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0cy5mb3JQa1JhaXopIHtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLmZvclBrID0gb3B0cy5mb3JQa1JhaXo7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5tb2RvRGlyZWN0byA9ICEhb3B0cy5mb3JQa1JhaXo7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGFkZHJQYXJhbXMgPSBteU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNoIHx8IGxvY2F0aW9uLnNlYXJjaCB8fCAnJyk7XHJcbiAgICAgICAgaWYgKGFkZHJQYXJhbXMuc3RhdGVfZm9yUGspIHtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLmZvclBrID0gSlNPTi5wYXJzZShhZGRyUGFyYW1zLnN0YXRlX2ZvclBrKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFkZHJQYXJhbXMuc3RhdGVfcGlsYUZvclBrKSB7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsgPSAoYWRkclBhcmFtcy5zdGF0ZV9waWxhRm9yUGsgYXMgc3RyaW5nKS5zcGxpdCgnfCcpLm1hcChqID0+IEpTT040YWxsLnBhcnNlKGopKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcclxuICAgIH1cclxuICAgIHZhciBzYXZlU3RhdGUgPSBmdW5jdGlvbiBzYXZlU3RhdGUoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgIHNldENhc29TdGF0ZShzdGF0ZSk7XHJcbiAgICB9XHJcbiAgICAvKiBERUZJTklDSU9OIENPTlRST0xBRE9SICovXHJcbiAgICB2YXIgaW5pdGlhbFN0YXRlOiBDYXNvU3RhdGUgPSBhd2FpdCBsb2FkU3RhdGUoKTtcclxuICAgIGNvbnN0IGhkclJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKHJlZHVjZXJzLCBpbml0aWFsU3RhdGUpO1xyXG4gICAgLyogRklOIERFRklOSUNJT04gQ09OVFJPTEFET1IgKi9cclxuICAgIC8qIENBUkdBIFkgR1VBUkRBRE8gREUgU1RBVEUgKi9cclxuICAgIC8qIENSRUFDSU9OIFNUT1JFICovXHJcbiAgICBjb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlKGhkclJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7XHJcbiAgICBzdG9yZUZvcm11bGFyaW9JbnN0YW5jZSA9IHN0b3JlO1xyXG4gICAgc2F2ZVN0YXRlKHN0b3JlLmdldFN0YXRlKCkpO1xyXG4gICAgc3RvcmUuc3Vic2NyaWJlKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBzYXZlU3RhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XHJcbiAgICB9KTtcclxuICAgIC8qIEZJTiBDUkVBQ0lPTiBTVE9SRSAqL1xyXG4gICAgLy9IRFIgQ09OIFNUT1JFIENSRUFET1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmVGb3JtdWxhcmlvKCkge1xyXG4gICAgaWYgKCFzdG9yZUZvcm11bGFyaW9JbnN0YW5jZSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcIkludGVudGFzdGUgYWNjZWRlciBhIGxhIHN0b3JlIGFudGVzIGRlIHF1ZSBmdWVyYSBjcmVhZGEuXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0b3JlRm9ybXVsYXJpb0luc3RhbmNlO1xyXG59Il19
@@ -1,4 +1,4 @@
1
- import { CasoState, DatosByPassPersistibles, ModoDM, Estructura, ForPkRaiz } from './tipos';
1
+ import { CasoState, DatosByPassPersistibles, ModoDM, Estructura, ForPkRaiz, AyudaParaUsuario } from './tipos';
2
2
  export interface FormularioConfig {
3
3
  getCasoState(): CasoState;
4
4
  setCasoState(state: CasoState): void;
@@ -14,6 +14,8 @@ export interface FormularioConfig {
14
14
  persistirDatos(datos: DatosByPassPersistibles): Promise<void>;
15
15
  leerEstructura(): Promise<Estructura | null>;
16
16
  persistirEstructura(estructura: Estructura): Promise<void>;
17
+ leerAyuda(): AyudaParaUsuario | null;
18
+ persistirAyuda(ayuda: AyudaParaUsuario): void;
17
19
  onSincronizar(persistentes: DatosByPassPersistibles | null, cambiaModoDM: boolean): Promise<DatosByPassPersistibles>;
18
20
  onLogout(): Promise<void>;
19
21
  }
@@ -44,6 +46,8 @@ export declare class FormRenderer implements FormularioConfig {
44
46
  persistirDatos(datos: DatosByPassPersistibles): Promise<void>;
45
47
  leerEstructura(): Promise<Estructura | null>;
46
48
  persistirEstructura(estructura: Estructura): Promise<void>;
49
+ leerAyuda(): AyudaParaUsuario | null;
50
+ persistirAyuda(ayuda: AyudaParaUsuario): void;
47
51
  onSincronizar(persistentes: DatosByPassPersistibles | null, cambiaModoDM: boolean): Promise<DatosByPassPersistibles>;
48
52
  onLogout(): Promise<void>;
49
53
  }