dmencu 3.3.1 → 3.5.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 (83) hide show
  1. package/ayuda/asignacion.md +16 -0
  2. package/ayuda/circuito-encuesta.md +27 -0
  3. package/ayuda/control.md +13 -0
  4. package/ayuda/dm-cambiar-modo.md +16 -0
  5. package/ayuda/dm-relevamiento.md +20 -0
  6. package/ayuda/dm-sincronizar.md +18 -0
  7. package/ayuda/fin-de-campo.md +14 -0
  8. package/ayuda/metadatos.md +14 -0
  9. package/ayuda/muestra.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 +99 -2
  16. package/dist/client/client/css/menu.styl +29 -0
  17. package/dist/client/unlogged/css/formulario-react.styl +9 -0
  18. package/dist/client/unlogged/render-config.d.ts +5 -1
  19. package/dist/client/unlogged/render-config.js +14 -1
  20. package/dist/client/unlogged/render-formulario.d.ts +1 -0
  21. package/dist/client/unlogged/render-formulario.js +43 -2
  22. package/dist/client/unlogged/render-formulario.tsx +71 -0
  23. package/dist/client/unlogged/render-general.d.ts +2 -0
  24. package/dist/client/unlogged/render-general.js +2 -1
  25. package/dist/client/unlogged/render-general.tsx +1 -0
  26. package/dist/client/unlogged/render-init.d.ts +1 -0
  27. package/dist/client/unlogged/render-init.js +9 -2
  28. package/dist/client/unlogged/tipos.d.ts +19 -1
  29. package/dist/client/unlogged/tipos.js +1 -1
  30. package/dist/server/app-dmencu.d.ts +8 -1
  31. package/dist/server/app-dmencu.js +42 -2
  32. package/dist/server/ayuda.d.ts +19 -0
  33. package/dist/server/ayuda.js +224 -0
  34. package/dist/server/def-config.d.ts +1 -1
  35. package/dist/server/def-config.js +2 -1
  36. package/dist/server/procedures-dmencu.js +20 -2
  37. package/dist/server/server/app-dmencu.d.ts +8 -1
  38. package/dist/server/server/app-dmencu.js +42 -2
  39. package/dist/server/server/ayuda.d.ts +19 -0
  40. package/dist/server/server/ayuda.js +224 -0
  41. package/dist/server/server/def-config.d.ts +1 -1
  42. package/dist/server/server/def-config.js +2 -1
  43. package/dist/server/server/procedures-dmencu.js +18 -2
  44. package/dist/server/server/table-tem.d.ts +1 -0
  45. package/dist/server/server/table-tem.js +25 -21
  46. package/dist/server/server/table-tem_edicion.d.ts +2 -0
  47. package/dist/server/server/table-tem_edicion.js +62 -0
  48. package/dist/server/server/types-dmencu.d.ts +20 -1
  49. package/dist/server/server/types-dmencu.js +1 -1
  50. package/dist/server/table-tem.d.ts +1 -0
  51. package/dist/server/table-tem.js +25 -21
  52. package/dist/server/table-tem_edicion.d.ts +2 -0
  53. package/dist/server/table-tem_edicion.js +62 -0
  54. package/dist/server/types-dmencu.d.ts +20 -1
  55. package/dist/server/types-dmencu.js +1 -1
  56. package/dist/server/unlogged/tipos.d.ts +19 -1
  57. package/dist/server/unlogged/tipos.js +1 -1
  58. package/dist/test/app-para-tests.d.ts +11 -8
  59. package/dist/test/app-para-tests.js +8 -2
  60. package/dist/test/test-ayuda.d.ts +1 -0
  61. package/dist/test/test-ayuda.js +183 -0
  62. package/dist/test/test-tem-edicion.d.ts +1 -0
  63. package/dist/test/test-tem-edicion.js +103 -0
  64. package/dist/test/test.d.ts +2 -0
  65. package/dist/test/test.js +4 -2
  66. package/dist/unlogged/tipos.d.ts +19 -1
  67. package/dist/unlogged/tipos.js +1 -1
  68. package/dist/unlogged/unlogged/css/formulario-react.styl +9 -0
  69. package/dist/unlogged/unlogged/render-config.d.ts +5 -1
  70. package/dist/unlogged/unlogged/render-config.js +14 -1
  71. package/dist/unlogged/unlogged/render-formulario.d.ts +1 -0
  72. package/dist/unlogged/unlogged/render-formulario.js +43 -2
  73. package/dist/unlogged/unlogged/render-formulario.tsx +71 -0
  74. package/dist/unlogged/unlogged/render-general.d.ts +2 -0
  75. package/dist/unlogged/unlogged/render-general.js +2 -1
  76. package/dist/unlogged/unlogged/render-general.tsx +1 -0
  77. package/dist/unlogged/unlogged/render-init.d.ts +1 -0
  78. package/dist/unlogged/unlogged/render-init.js +9 -2
  79. package/dist/unlogged/unlogged/tipos.d.ts +19 -1
  80. package/dist/unlogged/unlogged/tipos.js +1 -1
  81. package/dist/unlogged/unlogged/unlogged.js +14 -1
  82. package/install/validar_manzana_casa_tem_trg.sql +25 -0
  83. package/package.json +5 -2
@@ -51,9 +51,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
51
51
  var estructura = yield myOwn.ajax.operativo_estructura_completa({ operativo: datos.operativo, idper_logueado_tablet });
52
52
  yield formRenderer.persistirEstructura(estructura);
53
53
  my.removeLocalVar(abrir_formulario_1.BACKUPS);
54
+ yield descargarAyuda();
54
55
  return datos;
55
56
  });
56
57
  }
58
+ // guarda la ayuda del usuario para verla sin conexión; si falla no se interrumpe la sincronización
59
+ function descargarAyuda() {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ try {
62
+ var ayuda = yield my.ajax.ayuda_traer({});
63
+ (0, render_config_1.getFormRenderer)().persistirAyuda(ayuda);
64
+ }
65
+ catch (err) {
66
+ console.log('no se pudo descargar la ayuda', err);
67
+ }
68
+ });
69
+ }
57
70
  window.addEventListener('load', function () {
58
71
  return __awaiter(this, void 0, void 0, function* () {
59
72
  var layout = document.getElementById('total-layout');
@@ -394,4 +407,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
394
407
  });
395
408
  }();
396
409
  });
397
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5sb2dnZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvdW5sb2dnZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsWUFBWSxDQUFDOzs7SUFDYiwyQ0FBaUM7SUFDakMsMkRBQWdFO0lBRWhFLDJDQUFzQztJQUN0QywyREFBNEQ7SUFDNUQsK0NBQStEO0lBQy9ELHlEQUE2QztJQUM3QyxtREFBa0Q7SUFFbEQsU0FBUyxVQUFVLENBQUMsRUFBVSxFQUFFLEtBQWtDO1FBQzlELElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBRyxRQUFRLElBQUUsSUFBSSxFQUFDLENBQUM7WUFDZixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLGlCQUFpQixDQUFDLEVBQVMsRUFBRSxPQUFlO1FBQ2pELFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBLEVBQUUsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBQyxPQUFPLENBQUEsQ0FBQyxDQUFBLE9BQU8sQ0FBQSxDQUFDLENBQUEsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUV2QixJQUFJLGlCQUFpQixHQUFHLEdBQUUsRUFBRTtRQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFDLFFBQVEsQ0FBQyxRQUFRLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwRixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDckIsQ0FBQyxDQUFBO0lBRUQsU0FBZSxnQkFBZ0IsQ0FBQyxZQUE0QyxFQUFFLFlBQXFCOztZQUMvRixNQUFNLFlBQVksR0FBRyxJQUFBLCtCQUFlLEdB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QixHQUFHLFNBQWUscUJBQXFCOztZQUNqRSxNQUFNLElBQUksT0FBTyxDQUFDLFVBQVMsT0FBTyxFQUFFLE9BQU87Z0JBQ3ZDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUMsT0FBTyxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLE1BQU0sR0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3BGLElBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFDLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLEVBQUUsR0FBQyxjQUFjLENBQUM7Z0JBQ3pCLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQUksQ0FBQyxHQUFHLENBQUMsRUFBQyxFQUFFLEVBQUMsY0FBYyxFQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsRUFBRSxFQUFDLFlBQVksRUFBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDekQsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxpQkFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUUsRUFBQyxXQUFXLEVBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkYsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7WUFDL0QsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUM7S0FBQSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcclxuaW1wb3J0IHtodG1sfSAgZnJvbSAnanMtdG8taHRtbCc7XHJcbmltcG9ydCB7IGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwgfSBmcm9tICcuL3JlbmRlci1mb3JtdWxhcmlvJztcclxuaW1wb3J0IHsgRGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMsIE1vZG9ETSB9IGZyb20gJy4vdGlwb3MnO1xyXG5pbXBvcnQgeyBleHBlY3RlZCB9IGZyb20gXCJjYXN0LWVycm9yXCI7XHJcbmltcG9ydCBTZXJ2aWNlV29ya2VyQWRtaW4gPSByZXF1aXJlKFwic2VydmljZS13b3JrZXItYWRtaW5cIik7XHJcbmltcG9ydCB7IGNyZWF0ZUxvY2FsU3RvcmFnZUZvcm1SZW5kZXJlciB9IGZyb20gXCIuL3JlbmRlci1pbml0XCI7XHJcbmltcG9ydCB7IEJBQ0tVUFMgfSBmcm9tICcuL2FicmlyLWZvcm11bGFyaW8nO1xyXG5pbXBvcnQgeyBnZXRGb3JtUmVuZGVyZXIgfSBmcm9tIFwiLi9yZW5kZXItY29uZmlnXCI7XHJcblxyXG5mdW5jdGlvbiBzaUV4aXN0ZUlkKGlkOiBzdHJpbmcsIGhhY2VyOiAoYXJnMDogSFRNTEVsZW1lbnQpID0+IHZvaWQpe1xyXG4gICAgdmFyIGVsZW1lbnRvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xyXG4gICAgaWYoZWxlbWVudG8hPW51bGwpe1xyXG4gICAgICAgIGhhY2VyKGVsZW1lbnRvKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gbW9zdHJhckVsZW1lbnRvSWQoaWQ6c3RyaW5nLCBtb3N0cmFyOmJvb2xlYW4pe1xyXG4gICAgc2lFeGlzdGVJZChpZCwgZT0+ZS5zdHlsZS5kaXNwbGF5PW1vc3RyYXI/J2Jsb2NrJzonbm9uZScpO1xyXG59XHJcbmNvbnN0IFVSTF9ETSA9ICdjYW1wbyc7XHJcblxyXG52YXIgcmVsb2FkV2l0aG91dEhhc2ggPSAoKT0+e1xyXG4gICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZX0vLi4vJHtVUkxfRE19YCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzaW5jcm9uaXphckRhdG9zKHBlcnNpc3RlbnRlczogRGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMgfCBudWxsLCBjYW1iaWFNb2RvRE06IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGZvcm1SZW5kZXJlciA9IGdldEZvcm1SZW5kZXJlcigpO1xyXG4gICAgbGV0IG1vZG9ETTogTW9kb0RNID0gZm9ybVJlbmRlcmVyLmdldE1vZG9ETSgpIHx8IGF3YWl0IG15LmFqYXgubW9kb19kbV9kZWZlY3RvX29idGVuZXIoe30pO1xyXG4gICAgZm9ybVJlbmRlcmVyLnNldE1vZG9ETShtb2RvRE0pO1xyXG4gICAgY29uc3QgaWRwZXJfbG9ndWVhZG9fdGFibGV0ID0gZm9ybVJlbmRlcmVyLmdldElkcGVyTG9ndWVhZG8oKTtcclxuICAgIHZhciBkYXRvcyA9IGF3YWl0IG15LmFqYXguZG1fc2luY3Jvbml6YXIoeyBwZXJzaXN0ZW50ZXMsIG1vZG9fZG06IG1vZG9ETSwgY2FtYmlhX21vZG9fZG06IGNhbWJpYU1vZG9ETSwgaWRwZXJfbG9ndWVhZG9fdGFibGV0IH0pO1xyXG4gICAgYXdhaXQgZm9ybVJlbmRlcmVyLnBlcnNpc3RpckRhdG9zKHsgLi4uZGF0b3MsIG1vZG9BbG1hY2VuYW1pZW50bzogJ2xvY2FsJyB9KTtcclxuICAgIHZhciBlc3RydWN0dXJhID0gYXdhaXQgbXlPd24uYWpheC5vcGVyYXRpdm9fZXN0cnVjdHVyYV9jb21wbGV0YSh7IG9wZXJhdGl2bzogZGF0b3Mub3BlcmF0aXZvLCBpZHBlcl9sb2d1ZWFkb190YWJsZXQgfSk7XHJcbiAgICBhd2FpdCBmb3JtUmVuZGVyZXIucGVyc2lzdGlyRXN0cnVjdHVyYShlc3RydWN0dXJhKTtcclxuICAgIG15LnJlbW92ZUxvY2FsVmFyKEJBQ0tVUFMpO1xyXG4gICAgcmV0dXJuIGRhdG9zO1xyXG59XHJcblxyXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICB2YXIgbGF5b3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvdGFsLWxheW91dCcpITtcclxuICAgIGlmKCFsYXlvdXQpe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdubyBlbmN1ZW50cm8gZWwgRElWLnRvdGFsLWxheW91dCcpXHJcbiAgICAgICAgYXdhaXQgbXlPd24ucmVhZHk7XHJcbiAgICAgICAgbGF5b3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvdGFsLWxheW91dCcpITtcclxuICAgIH1cclxuICAgIGF3YWl0IG15T3duLnJlYWR5O1xyXG4gICAgaWYobG9jYXRpb24ucGF0aG5hbWUuZW5kc1dpdGgoJy9zYWx2YXInKSl7XHJcbiAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICBmb3IgKGxldCB4IGluIGxvY2FsU3RvcmFnZSl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhsb2NhbFN0b3JhZ2VbeF0pO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgbXlPd24uYWpheC5kbV9yZXNjYXRhcih7bG9jYWxTdG9yYWdlSXRlbTpsb2NhbFN0b3JhZ2VbeF0sIGxvY2FsU3RvcmFnZUl0ZW1LZXk6eH0pXHJcbiAgICAgICAgICAgICAgICBsYXlvdXQuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwucChgaXRlbSBcIiR7eH1cIiBkZSBsb2NhbFN0b2dhZ2UgZ3VhcmRhZG8uYCkuY3JlYXRlKClcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsYXlvdXQuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgaHRtbC5wKGB0b2RvcyBsb3MgaXRlbXMgZnVlcm9uIHNhbHZhZG9zLmApLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgbGF5b3V0LmFwcGVuZChcclxuICAgICAgICAgICAgICAgIGh0bWwucChgc2UgcHJvZHVqbyB1biBlcnJvciBhbCBzYWx2YXIgbG9zIGRhdG9zIGRlbCBkbS5gKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeXtcclxuICAgICAgICAgICAgdmFyIHJlZ2lzdHJhdGlvbnMgPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5nZXRSZWdpc3RyYXRpb25zKCk7XHJcbiAgICAgICAgICAgIGZvcihsZXQgcmVnaXN0cmF0aW9uIG9mIHJlZ2lzdHJhdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHJlZ2lzdHJhdGlvbi51bnJlZ2lzdGVyKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsYXlvdXQuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgaHRtbC5wKGB0b2RvcyBsb3Mgc3cgZnVlcm9uIGRlc2luc3RhbGFkb3MuYCkuY3JlYXRlKClcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICBsYXlvdXQuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgaHRtbC5wKGBzZSBwcm9kdWpvIHVuIGVycm9yIGFsIGRlc2luc3RhbGFyIGxvcyBzdy5gKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgfWVsc2V7XHJcbiAgICAgICAgbGF5b3V0LmlubmVySFRNTCA9IGBcclxuICAgIDxzcGFuIGlkPVwibWluaS1jb25zb2xlXCI+PC9zcGFuPlxyXG4gICAgXHJcbiAgICA8IS0tIEJhbm5lciBkZSBOdWV2YSBWZXJzacOzbiAoUHJvdGFnb25pc21vIEFic29sdXRvIC0gQ2VudHJvIGRlIGxhIFBhbnRhbGxhKSAtLT5cclxuICAgIDxkaXYgaWQ9XCJudWV2YS12ZXJzaW9uLWluc3RhbGFkYVwiIHN0eWxlPVwiXHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkOyBcclxuICAgICAgICB0b3A6IDM1JTsgXHJcbiAgICAgICAgbGVmdDogNTAlOyBcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgXHJcbiAgICAgICAgei1pbmRleDogOTk5OTk7IFxyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJlN2QzMjsgLyogTVVJIFN1Y2Nlc3MgUHJpbmNpcGFsICovXHJcbiAgICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgICAgIHBhZGRpbmc6IDMycHggNDhweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgICAgYm94LXNoYWRvdzogMHB4IDExcHggMTVweCAtN3B4IHJnYmEoMCwwLDAsMC4yKSwgMHB4IDI0cHggMzhweCAzcHggcmdiYSgwLDAsMCwwLjE0KTtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgZ2FwOiAyNHB4O1xyXG4gICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgJ0hlbHZldGljYScsICdBcmlhbCcsIHNhbnMtc2VyaWY7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIG1pbi13aWR0aDogMzAwcHg7XHJcbiAgICAgICAgbWF4LXdpZHRoOiA5MCU7XHJcbiAgICAgICAgcGFkZGluZzogMjVweDtcclxuICAgIFwiPlxyXG4gICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDhweDtcIj5cclxuICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDIycHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGxldHRlci1zcGFjaW5nOiAwLjI1cHg7XCI+wqFpbnN0YWxhY2nDs24gY29ycmVjdGEhPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxidXR0b24gaWQ9XCJyZWZyZXNjYXJcIiBzdHlsZT1cIlxyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xyXG4gICAgICAgICAgICBjb2xvcjogIzJlN2QzMjtcclxuICAgICAgICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDI0cHg7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAzcHggNXB4IC0xcHggcmdiYSgwLDAsMCwwLjIpO1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMsIHRyYW5zZm9ybSAwLjFzO1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgICAgICBnYXA6IDhweDtcclxuICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNHB4O1xyXG4gICAgICAgICAgICBtYXJnaW46IDE1cHggYXV0bztcclxuICAgICAgICBcIj5cclxuICAgICAgICAgICAgQ29udGludWFyXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGlkPVwiaW5zdGFsYWRvXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5cclxuICAgICAgICA8ZGl2IGlkPVwibWFpbl9sYXlvdXRcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICA8IS0tIFBhbmVsIGRlIFByb2dyZXNvIE9jdXBhbmRvIE3DoXMgUGFudGFsbGEgKExpbXBpbyB5IENvcnBvcmF0aXZvKSAtLT5cclxuICAgIDxkaXYgaWQ9XCJpbnN0YWxhbmRvXCIgc3R5bGU9XCJcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIHRvcDogNDBweDtcclxuICAgICAgICBsZWZ0OiA0MHB4O1xyXG4gICAgICAgIHJpZ2h0OiA0MHB4O1xyXG4gICAgICAgIGJvdHRvbTogNDBweDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyAvKiBGb25kbyBibGFuY28gbGltcGlvIE1VSSAqL1xyXG4gICAgICAgIGNvbG9yOiAjMWUyOTNiO1xyXG4gICAgICAgIHBhZGRpbmc6IDMycHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDBweCA4cHggMjRweCByZ2JhKDAsMCwwLDAuMTIpO1xyXG4gICAgICAgIHotaW5kZXg6IDk5OTk4O1xyXG4gICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvJywgJ0hlbHZldGljYScsICdBcmlhbCcsIHNhbnMtc2VyaWY7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMmU4ZjA7XHJcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgICBtaW4taGVpZ2h0OiAwO1xyXG4gICAgXCI+XHJcbiAgICAgICAgPGRpdiBpZD1cInZvbHZlci1kZS1pbnN0YWxhY2lvblwiIHN0eWxlPVwiXHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMmU4ZjA7XHJcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxNnB4O1xyXG4gICAgICAgICAgICBmbGV4LXNocmluazogMDtcclxuICAgICAgICBcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTRweDtcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gU3Bpbm5lciBNaW5pbWFsaXN0YSBkZSBNVUkgKENpcmN1bGFyUHJvZ3Jlc3MpIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAyMHB4OyBcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIwcHg7IFxyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNlMmU4ZjA7IFxyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsgXHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogIzE5NzZkMjsgLyogTVVJIFByaW1hcnkgKi9cclxuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IHN3LXNwaW4gMC44cyBsaW5lYXIgaW5maW5pdGU7XHJcbiAgICAgICAgICAgICAgICBcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxzdHlsZT5Aa2V5ZnJhbWVzIHN3LXNwaW4geyB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfTwvc3R5bGU+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBpZD1cInZvbHZlci1kZS1pbnN0YWxhY2lvbi1wb3ItcXVlXCIgc3R5bGU9XCJjb2xvcjogIzE5NzZkMjsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiAxM3B4OyBsZXR0ZXItc3BhY2luZzogMC44cHg7XCI+REVTQ0FSR0FORE8gUkVDVVJTT1MgREUgTEEgQVBMSUNBQ0nDk048L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uIGlkPVwidm9sdmVyLWRlLWluc3RhbGFjaW9uLWNvbW9cIiBzdHlsZT1cIlxyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogIzY0NzQ4YjtcclxuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjYmQ1ZTE7XHJcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiA2cHggMTZweDtcclxuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xyXG4gICAgICAgICAgICBcIj5Wb2x2ZXI8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgICA8aDIgc3R5bGU9XCJjb2xvcjogIzFlMjkzYjsgZm9udC1zaXplOiAxOHB4OyBmb250LXdlaWdodDogNDAwOyBtYXJnaW46IDAgMCAxNnB4IDA7XCI+SGlzdG9yaWFsIGRlIGluc3RhbGFjacOzbjwvaDI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPCEtLSBDb25zb2xhIGV4cGFuZGlkYSB5IGxpbXBpYSBzaW4gZXN0w6l0aWNhIHRlcm1pbmFsIC0tPlxyXG4gICAgICAgIDxkaXYgaWQ9XCJhcmNoaXZvc1wiIHN0eWxlPVwiXHJcbiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTtcclxuICAgICAgICAgICAgZmxleC1zaHJpbms6IDE7XHJcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgICAgbWluLWhlaWdodDogMDtcclxuICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlO1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS42O1xyXG4gICAgICAgICAgICBjb2xvcjogIzQ3NTU2OTtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZmFmYzsgLyogR3JpcyBtdXkgdGVudWUsIG5hZGEgZ2FtZXIgKi9cclxuICAgICAgICAgICAgcGFkZGluZzogMTZweDtcclxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlOGYwO1xyXG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4XHJcbiAgICAgICAgXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuYDtcclxuICAgICAgICBpZihsb2NhdGlvbi5wYXRobmFtZS5lbmRzV2l0aChgLyR7VVJMX0RNfWApKXtcclxuICAgICAgICAgICAgY29uc3QgZm9ybVJlbmRlcmVyID0gY3JlYXRlTG9jYWxTdG9yYWdlRm9ybVJlbmRlcmVyKHsgb25TaW5jcm9uaXphcjogc2luY3Jvbml6YXJEYXRvcyB9KTtcclxuICAgICAgICAgICAgY29uc3Qgc3RhcnRBcHAgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBtb2RvRG1EZWZlY3RvOiBNb2RvRE0gPSBmb3JtUmVuZGVyZXIuZ2V0TW9kb0RNKCkgfHwgYXdhaXQgbXkuYWpheC5tb2RvX2RtX2RlZmVjdG9fb2J0ZW5lcih7fSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ybVJlbmRlcmVyLnNldE1vZG9ETShtb2RvRG1EZWZlY3RvKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdubyBzZSBwdWRvIHRyYWVyIGVsIG1vZG8gcG9yIGRlZmVjdG8nKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIHZlcnNpb24gPSBhd2FpdCBzd2EuZ2V0U1coJ3ZlcnNpb24nKTtcclxuICAgICAgICAgICAgICAgIGZvcm1SZW5kZXJlci5zZXRBcHBDYWNoZVZlcnNpb24odmVyc2lvbik7XHJcbiAgICAgICAgICAgICAgICBkZXNwbGVnYXJGb3JtdWxhcmlvQWN0dWFsKGZvcm1SZW5kZXJlciwge30pO1xyXG4gICAgICAgICAgICAgICAgbXkubWVudU5hbWUgPSBVUkxfRE07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHJlZnJlc2NhclN0YXR1cz1hc3luYyBmdW5jdGlvbihzaG93U2NyZWVuOiBzdHJpbmcsIG5ld1ZlcnNpb25BdmFpYWJsZTogc3RyaW5nLCBfaW5zdGFsbGluZzogYW55KXtcclxuICAgICAgICAgICAgICAgIHZhciBidXNjYW5kb0FjdHVhbGl6YWNpb24gPSBsb2NhdGlvbi5ocmVmLmVuZHNXaXRoKCcjaW5zdD0xJyk7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnVldmEtdmVyc2lvbi1pbnN0YWxhZGEnKSEuc3R5bGUuZGlzcGxheT1uZXdWZXJzaW9uQXZhaWFibGU9PSd5ZXMnPycnOidub25lJztcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2b2x2ZXItZGUtaW5zdGFsYWNpb24nKSEuc3R5bGUuZGlzcGxheT1uZXdWZXJzaW9uQXZhaWFibGU9PSd5ZXMnPydub25lJzonJztcclxuICAgICAgICAgICAgICAgIGlmKHNob3dTY3JlZW49PSdhcHAnICYmICFidXNjYW5kb0FjdHVhbGl6YWNpb24pe1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0YWxhZG8nKSEuc3R5bGUuZGlzcGxheT0nJztcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdGFsYW5kbycpIS5zdHlsZS5kaXNwbGF5PSdub25lJztcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0YWxhZG8nKSEuc3R5bGUuZGlzcGxheT0nbm9uZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc3RhbGFuZG8nKSEuc3R5bGUuZGlzcGxheT0nJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdmFyIHN3YSA9IG5ldyBTZXJ2aWNlV29ya2VyQWRtaW4oKTtcclxuICAgICAgICAgICAgc3dhLmluc3RhbGxPckFjdGl2YXRlKHtcclxuICAgICAgICAgICAgICAgIG9uRWFjaEZpbGU6IGFzeW5jICh1cmw6IHN0cmluZywgX2Vycm9yOiBFcnJvciB8IG51bGwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZmlsZTogJywgdXJsKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJjaGl2b3NDb250ZW5lZG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FyY2hpdm9zJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFyY2hpdm9zQ29udGVuZWRvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXZvc0NvbnRlbmVkb3IuYXBwZW5kKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB1cmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICd3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wNSk7IHBhZGRpbmc6IDJweCAwOydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGA+ICR7dXJsfWApLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF1dG9zY3JvbGwgcGFyYSB2ZXIgZWwgYXJjaGl2byBtw6FzIHJlY2llbnRlIGFsIGZvbmRvIGRlIGxhIGNvbnNvbGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl2b3NDb250ZW5lZG9yLnNjcm9sbFRvcCA9IGFyY2hpdm9zQ29udGVuZWRvci5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG9uSW5mb01lc3NhZ2U6IChtPzogc3RyaW5nKT0+Y29uc29sZS5sb2coJ21lc3NhZ2U6ICcsIG0pLFxyXG4gICAgICAgICAgICAgICAgb25FcnJvcjogYXN5bmMgKGVycjogRXJyb3IsIGNvbnRleHQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IGV4cGVjdGVkKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yOiAnICsgKGNvbnRleHQgPyBgIGVuICgke2NvbnRleHR9KWAgOiAnJyksIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhjb250ZXh0LCBlcnJvciwgJ2Vycm9yLWNvbnNvbGUnKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3IgYWwgZGVzY2FyZ2FyIGNhY2hlJywgZXJyb3IubWVzc2FnZSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuc3RhcnRzV2l0aCgnY2FjaGluZyAnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlVXJsID0gY29udGV4dC5yZXBsYWNlKCdjYWNoaW5nICcsICcnKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVJZCA9IGZpbGVVcmw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmlsZUlkKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FtYmlhbW9zIGVsIGVzdGlsbyBhIHVuIHJvam8gTVVJIChFcnJvciBwcmluY2lwYWwpIGVsZWdhbnRlIHkgbGUgYWdyZWdhbW9zIGVsIGluZGljYWRvciBkZSBmYWxsb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUVsZW1lbnQuc3R5bGUuY29sb3IgPSAnI2QzMmYyZic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRWxlbWVudC5zdHlsZS5mb250V2VpZ2h0ID0gJzcwMCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2ZmZWJlZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRWxlbWVudC5zdHlsZS5wYWRkaW5nTGVmdCA9ICc4cHgnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUVsZW1lbnQuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzJweCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRWxlbWVudC5pbm5lckhUTUwgPSBg4p2MIEVycm9yOiBObyBzZSBwdWRvIGRlc2NhcmdhciAke2ZpbGVVcmx9ICgke2Vycm9yLm1lc3NhZ2V9KWA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yemFtb3Mgc2Nyb2xsIHBhcmEgcXVlIGVsIGRlc2Fycm9sbGFkb3IgdmVhIGVsIGVycm9yIGFsIGZpbmFsIGRlIGxhIGNvbnNvbGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyY2hpdm9zQ29udGVuZWRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcmNoaXZvcycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyY2hpdm9zQ29udGVuZWRvcikgYXJjaGl2b3NDb250ZW5lZG9yLnNjcm9sbFRvcCA9IGFyY2hpdm9zQ29udGVuZWRvci5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZXh0ICE9ICdpbml0aWFsaXppbmcgc2VydmljZS13b3JrZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYWxpZGFtb3Mgc2lsZW5jaW9zYW1lbnRlIHNpIGVsIHByb2JsZW1hIGVzIGZhbHRhIGRlIHNlc2nDs24gKDQwMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtlZXBBbGl2ZSA9IGF3YWl0IGZldGNoKCdrZWVwLWFsaXZlLmpzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGtlZXBBbGl2ZS5zdGF0dXMhPSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdkZXNsb2d1ZWFkbycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKHBpbmdFcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGYWxsbyBkZSBjYWNow6kgcG9yIHNlc2nDs24gZXhwaXJhZGEuIERlc3BsZWdhbmRvIGJhbm5lciBmbG90YW50ZS4nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnN0YWxhbmRvRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0YWxhbmRvJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFsYW5kb0VsZW0pIGluc3RhbGFuZG9FbGVtLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtdWV2ZSBlbCBwYW5lbCBkZSBkZXNjYXJnYSBzaSBzYWx0w7MgZWwgZXJyb3IgZGUgc2VzacOzblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFuZWxBcmNoaXZvcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYW5lbC1hcmNoaXZvcy1mbG90YW50ZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhbmVsQXJjaGl2b3MpIHBhbmVsQXJjaGl2b3MucmVtb3ZlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVwZGF0ZUJhbm5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdub3RpZmljYXRpb24tdXBkYXRlLWJhbm5lcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1cGRhdGVCYW5uZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGF5b3V0ID0gYXdhaXQgYXdhaXRGb3JDYWNoZUxheW91dDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVCYW5uZXIgPSBodG1sLmRpdih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnbm90aWZpY2F0aW9uLXVwZGF0ZS1iYW5uZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogYFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAyMHB4OyAvKiBDYW1iaWFkbyBhcnJpYmEgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0OiAyMHB4OyAvKiBDYW1iaWFkbyBhIGxhIGRlcmVjaGEgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyYzNlNTA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE2cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwcHggNHB4IDEycHggcmdiYSgwLDAsMCwwLjMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYXA6IDEycHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDMyMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgei1pbmRleDogOTk5OTk7IC8qIEEgbGEgbWlzbWEgYWx0dXJhIHF1ZSBsb3MgbW9kYWxlcyBkZSBSZWFjdCAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkICMzNDk4ZGI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuYXBwZW5kQ2hpbGQodXBkYXRlQmFubmVyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVCYW5uZXIuaW5uZXJIVE1MID0gJyc7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQm90w7NuIGRlIGNpZXJyZSBjcnV6IChYKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm90b25DZXJyYXIgPSBodG1sLnNwYW4oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiAncG9zaXRpb246IGFic29sdXRlOyB0b3A6IDhweDsgcmlnaHQ6IDEycHg7IGN1cnNvcjogcG9pbnRlcjsgY29sb3I6ICNiZGMzYzc7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDE0cHg7J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgJ8OXJykuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RvbkNlcnJhci5vbmNsaWNrID0gKCkgPT4gdXBkYXRlQmFubmVyIS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uQ2VycmFyLm9ubW91c2VvdmVyID0gKCkgPT4geyBib3RvbkNlcnJhci5zdHlsZS5jb2xvciA9ICcjZmZmZmZmJzsgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uQ2VycmFyLm9ubW91c2VvdXQgPSAoKSA9PiB7IGJvdG9uQ2VycmFyLnN0eWxlLmNvbG9yID0gJyNiZGMzYzcnOyB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRvQ29udGVuaWRvID0gaHRtbC5kaXYoeyBzdHlsZTogJ2ZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDEuNDsgcGFkZGluZy1yaWdodDogMTJweDsnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0hheSB1bmEgbnVldmEgdmVyc2nDs24gZGlzcG9uaWJsZSwgcGVybyByZXF1aWVyZSBpbmljaWFyIHNlc2nDs24gbnVldmFtZW50ZS4nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLmNyZWF0ZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvdG9uTG9naW4gPSBodG1sLmJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6ICdiYWNrZ3JvdW5kLWNvbG9yOiAjMzQ5OGRiOyBjb2xvcjogd2hpdGU7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogOHB4IDEycHg7IGJvcmRlci1yYWRpdXM6IDRweDsgY3Vyc29yOiBwb2ludGVyOyBmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxM3B4OyBhbGlnbi1zZWxmOiBmbGV4LWVuZDsnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAnSW5pY2lhciBTZXNpw7NuJykuY3JlYXRlKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b25Mb2dpbi5vbm1vdXNlb3ZlciA9ICgpID0+IHsgYm90b25Mb2dpbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnIzI5ODBiOSc7IH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RvbkxvZ2luLm9ubW91c2VvdXQgPSAoKSA9PiB7IGJvdG9uTG9naW4uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyMzNDk4ZGInOyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b25Mb2dpbi5vbmNsaWNrID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bG9jYXRpb24ub3JpZ2luICsgbG9jYXRpb24ucGF0aG5hbWV9Ly4uL2xvZ2luYDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQmFubmVyLmFwcGVuZENoaWxkKGJvdG9uQ2VycmFyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUJhbm5lci5hcHBlbmRDaGlsZCh0ZXh0b0NvbnRlbmlkbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVCYW5uZXIuYXBwZW5kQ2hpbGQoYm90b25Mb2dpbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIENvcnRhbW9zIGFjw6EgcGFyYSBldml0YXIgbGEgYmFycmEgcm9qYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaSBlbCBwaW5nIGFuZHV2byBiaWVuIHBlcm8gbGxlZ8OzIGFjw6EsIGVzIHVuIGVycm9yIHJlYWwgZGUgcmVkL29mZmxpbmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxheW91dCA9IGF3YWl0IGF3YWl0Rm9yQ2FjaGVMYXlvdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYWNoZVN0YXR1c0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2FjaGUtc3RhdHVzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FjaGVTdGF0dXNFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVN0YXR1c0VsZW1lbnQgPSBodG1sLnAoeyBpZDogJ2NhY2hlLXN0YXR1cycgfSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQuaW5zZXJ0QmVmb3JlKGNhY2hlU3RhdHVzRWxlbWVudCwgbGF5b3V0LmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU3RhdHVzRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCd3YXJuaW5nJywgJ2FsbC1vaycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVN0YXR1c0VsZW1lbnQuY2xhc3NMaXN0LmFkZCgnZGFuZ2VyJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlU3RhdHVzRWxlbWVudC50ZXh0Q29udGVudCA9ICdlcnJvciBhbCBkZXNjYXJnYXIgbGEgYXBsaWNhY2nDs24uICcgKyBlcnJvci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvblJlYWR5VG9TdGFydDpzdGFydEFwcCxcclxuICAgICAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2U6cmVmcmVzY2FyU3RhdHVzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmcmVzY2FyJykhLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywoKT0+e1xyXG4gICAgICAgICAgICByZWxvYWRXaXRob3V0SGFzaCgpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZvbHZlci1kZS1pbnN0YWxhY2lvbi1jb21vJykhLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywoKT0+e1xyXG4gICAgICAgICAgICByZWxvYWRXaXRob3V0SGFzaCgpXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0pXHJcblxyXG5leHBvcnQgdmFyIGF3YWl0Rm9yQ2FjaGVMYXlvdXQgPSBhc3luYyBmdW5jdGlvbiBwcmVwYXJlTGF5b3V0Rm9yQ2FjaGUoKXtcclxuICAgIGF3YWl0IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIF9yZWplY3Qpe1xyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJyxyZXNvbHZlKTtcclxuICAgIH0pO1xyXG4gICAgdmFyIGxheW91dD0oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhY2hlLWxheW91dCcpfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XHJcbiAgICBpZighbGF5b3V0LmlkKXtcclxuICAgICAgICBsYXlvdXQuaWQ9J2NhY2hlLWxheW91dCc7XHJcbiAgICAgICAgbGF5b3V0LmFwcGVuZENoaWxkKGh0bWwuZGl2KHtpZDonYXBwLXZlcnNpb25zJ30pLmNyZWF0ZSgpKTtcclxuICAgICAgICBsYXlvdXQuYXBwZW5kQ2hpbGQoaHRtbC5kaXYoe2lkOidhcHAtc3RhdHVzJ30pLmNyZWF0ZSgpKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxheW91dC5hcHBlbmRDaGlsZChodG1sLmRpdih7aWQ6J2NhY2hlLWxvZyd9KS5jcmVhdGUoKSkpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGxheW91dCxkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGF5b3V0O1xyXG59KCk7Il19
410
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5sb2dnZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5sb2dnZWQvdW5sb2dnZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsWUFBWSxDQUFDOzs7SUFDYiwyQ0FBaUM7SUFDakMsMkRBQWdFO0lBRWhFLDJDQUFzQztJQUN0QywyREFBNEQ7SUFDNUQsK0NBQStEO0lBQy9ELHlEQUE2QztJQUM3QyxtREFBa0Q7SUFFbEQsU0FBUyxVQUFVLENBQUMsRUFBVSxFQUFFLEtBQWtDO1FBQzlELElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBRyxRQUFRLElBQUUsSUFBSSxFQUFDLENBQUM7WUFDZixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLGlCQUFpQixDQUFDLEVBQVMsRUFBRSxPQUFlO1FBQ2pELFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBLEVBQUUsQ0FBQSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBQyxPQUFPLENBQUEsQ0FBQyxDQUFBLE9BQU8sQ0FBQSxDQUFDLENBQUEsTUFBTSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUV2QixJQUFJLGlCQUFpQixHQUFHLEdBQUUsRUFBRTtRQUN4QixPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFDLFFBQVEsQ0FBQyxRQUFRLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNwRixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDckIsQ0FBQyxDQUFBO0lBRUQsU0FBZSxnQkFBZ0IsQ0FBQyxZQUE0QyxFQUFFLFlBQXFCOztZQUMvRixNQUFNLFlBQVksR0FBRyxJQUFBLCtCQUFlLEdBQUUsQ0FBQztZQUN2QyxJQUFJLE1BQU0sR0FBVyxZQUFZLENBQUMsU0FBUyxFQUFFLEtBQUksTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUM7WUFDM0YsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQixNQUFNLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzlELElBQUksS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztZQUNqSSxNQUFNLFlBQVksQ0FBQyxjQUFjLGlDQUFNLEtBQUssS0FBRSxrQkFBa0IsRUFBRSxPQUFPLElBQUcsQ0FBQztZQUM3RSxJQUFJLFVBQVUsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7WUFDdkgsTUFBTSxZQUFZLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkQsRUFBRSxDQUFDLGNBQWMsQ0FBQywwQkFBTyxDQUFDLENBQUM7WUFDM0IsTUFBTSxjQUFjLEVBQUUsQ0FBQztZQUN2QixPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO0tBQUE7SUFFRCxtR0FBbUc7SUFDbkcsU0FBZSxjQUFjOztZQUN6QixJQUFJLENBQUM7Z0JBQ0QsSUFBSSxLQUFLLEdBQXFCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzVELElBQUEsK0JBQWUsR0FBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QyxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3RELENBQUM7UUFDTCxDQUFDO0tBQUE7SUFFRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFOztZQUM1QixJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBRSxDQUFDO1lBQ3RELElBQUcsQ0FBQyxNQUFNLEVBQUMsQ0FBQztnQkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxDQUFDLENBQUE7Z0JBQy9DLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztnQkFDbEIsTUFBTSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFFLENBQUM7WUFDdEQsQ0FBQztZQUNELE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNsQixJQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFDLENBQUM7Z0JBQ3RDLElBQUcsQ0FBQztvQkFDQSxLQUFLLElBQUksQ0FBQyxJQUFJLFlBQVksRUFBQyxDQUFDO3dCQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM3QixNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUMsZ0JBQWdCLEVBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixFQUFDLENBQUMsRUFBQyxDQUFDLENBQUE7d0JBQ3ZGLE1BQU0sQ0FBQyxNQUFNLENBQ1QsaUJBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLDZCQUE2QixDQUFDLENBQUMsTUFBTSxFQUFFLENBQzNELENBQUE7b0JBQ0wsQ0FBQztvQkFDRCxNQUFNLENBQUMsTUFBTSxDQUNULGlCQUFJLENBQUMsQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQ3RELENBQUE7Z0JBQ0wsQ0FBQztnQkFBQSxPQUFNLEdBQUcsRUFBQyxDQUFDO29CQUNSLE1BQU0sQ0FBQyxNQUFNLENBQ1QsaUJBQUksQ0FBQyxDQUFDLENBQUMsaURBQWlELENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FDckUsQ0FBQTtnQkFDTCxDQUFDO2dCQUNELElBQUcsQ0FBQztvQkFDQSxJQUFJLGFBQWEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDckUsS0FBSSxJQUFJLFlBQVksSUFBSSxhQUFhLEVBQUUsQ0FBQzt3QkFDcEMsTUFBTSxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUE7b0JBQ25DLENBQUM7b0JBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FDVCxpQkFBSSxDQUFDLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUN4RCxDQUFBO2dCQUNMLENBQUM7Z0JBQUEsT0FBTSxHQUFHLEVBQUMsQ0FBQztvQkFDUixNQUFNLENBQUMsTUFBTSxDQUNULGlCQUFJLENBQUMsQ0FBQyxDQUFDLDRDQUE0QyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQ2hFLENBQUE7Z0JBQ0wsQ0FBQztZQUNMLENBQUM7aUJBQUksQ0FBQztnQkFDRixNQUFNLENBQUMsU0FBUyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvSTFCLENBQUM7Z0JBQ00sSUFBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLEVBQUMsQ0FBQztvQkFDekMsTUFBTSxZQUFZLEdBQUcsSUFBQSw0Q0FBOEIsRUFBQyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7b0JBQ3pGLE1BQU0sUUFBUSxHQUFHLEdBQVMsRUFBRTt3QkFDeEIsSUFBSSxDQUFDOzRCQUNELElBQUksYUFBYSxHQUFXLFlBQVksQ0FBQyxTQUFTLEVBQUUsS0FBSSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQzs0QkFDbEcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDMUMsQ0FBQzt3QkFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDOzRCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQTt3QkFDdkQsQ0FBQzt3QkFDRCxJQUFJLE9BQU8sR0FBRyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQ3pDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQzt3QkFDekMsSUFBQSw2Q0FBeUIsRUFBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQzVDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO29CQUN6QixDQUFDLENBQUEsQ0FBQTtvQkFDRCxJQUFJLGVBQWUsR0FBQyxVQUFlLFVBQWtCLEVBQUUsa0JBQTBCLEVBQUUsV0FBZ0I7OzRCQUMvRixJQUFJLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDOzRCQUM5RCxRQUFRLENBQUMsY0FBYyxDQUFDLHlCQUF5QixDQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBQyxrQkFBa0IsSUFBRSxLQUFLLENBQUEsQ0FBQyxDQUFBLEVBQUUsQ0FBQSxDQUFDLENBQUEsTUFBTSxDQUFDOzRCQUN0RyxRQUFRLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBQyxrQkFBa0IsSUFBRSxLQUFLLENBQUEsQ0FBQyxDQUFBLE1BQU0sQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFDOzRCQUNwRyxJQUFHLFVBQVUsSUFBRSxLQUFLLElBQUksQ0FBQyxxQkFBcUIsRUFBQyxDQUFDO2dDQUM1QyxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUMsRUFBRSxDQUFDO2dDQUN2RCxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUMsTUFBTSxDQUFDOzRCQUNoRSxDQUFDO2lDQUFJLENBQUM7Z0NBQ0YsUUFBUSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFDLE1BQU0sQ0FBQztnQ0FDM0QsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFDLEVBQUUsQ0FBQzs0QkFDNUQsQ0FBQzt3QkFDTCxDQUFDO3FCQUFBLENBQUM7b0JBQ0YsSUFBSSxHQUFHLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO29CQUNuQyxHQUFHLENBQUMsaUJBQWlCLENBQUM7d0JBQ2xCLFVBQVUsRUFBRSxDQUFPLEdBQVcsRUFBRSxNQUFvQixFQUFFLEVBQUU7NEJBQ3BELE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDOzRCQUUzQixNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7NEJBQy9ELElBQUksa0JBQWtCLEVBQUUsQ0FBQztnQ0FDckIsa0JBQWtCLENBQUMsTUFBTSxDQUNyQixpQkFBSSxDQUFDLEdBQUcsQ0FBQztvQ0FDTCxFQUFFLEVBQUUsR0FBRztvQ0FDUCxLQUFLLEVBQUUsa0lBQWtJO2lDQUM1SSxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FDMUIsQ0FBQztnQ0FDRixxRUFBcUU7Z0NBQ3JFLGtCQUFrQixDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7NEJBQ25FLENBQUM7d0JBQ0wsQ0FBQyxDQUFBO3dCQUNELGFBQWEsRUFBRSxDQUFDLENBQVUsRUFBQyxFQUFFLENBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO3dCQUN4RCxPQUFPLEVBQUUsQ0FBTyxHQUFVLEVBQUUsT0FBZSxFQUFFLEVBQUU7NEJBQzNDLElBQUksS0FBSyxHQUFHLElBQUEscUJBQVEsRUFBQyxHQUFHLENBQUMsQ0FBQzs0QkFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDOzRCQUNwRSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUM7NEJBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDOzRCQUV2RCxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0NBQzVDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dDQUN2RCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7Z0NBQ3ZCLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7Z0NBRXBELElBQUksV0FBVyxFQUFFLENBQUM7b0NBQ2Qsb0dBQW9HO29DQUNwRyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7b0NBQ3BDLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztvQ0FDckMsV0FBVyxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDO29DQUM5QyxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7b0NBQ3RDLFdBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztvQ0FDdkMsV0FBVyxDQUFDLFNBQVMsR0FBRyxpQ0FBaUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQztvQ0FFdEYsZ0ZBQWdGO29DQUNoRixNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7b0NBQy9ELElBQUksa0JBQWtCO3dDQUFFLGtCQUFrQixDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUM7Z0NBQzNGLENBQUM7NEJBQ0wsQ0FBQzs0QkFFRCxJQUFJLE9BQU8sSUFBSSw2QkFBNkIsRUFBRSxDQUFDO2dDQUMzQyxJQUFJLENBQUM7b0NBQ0Qsb0VBQW9FO29DQUNwRSxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29DQUNqRCxJQUFHLFNBQVMsQ0FBQyxNQUFNLElBQUcsR0FBRyxFQUFDLENBQUM7d0NBQ3ZCLE1BQU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO29DQUM5QixDQUFDO2dDQUNMLENBQUM7Z0NBQUMsT0FBTyxPQUFPLEVBQUUsQ0FBQztvQ0FDZixPQUFPLENBQUMsR0FBRyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7b0NBRWhGLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7b0NBQzdELElBQUksY0FBYzt3Q0FBRSxjQUFjLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7b0NBRTFELDJEQUEyRDtvQ0FDM0QsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO29DQUN6RSxJQUFJLGFBQWE7d0NBQUUsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO29DQUUxQyxJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLDRCQUE0QixDQUFDLENBQUM7b0NBQ3pFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzt3Q0FDaEIsSUFBSSxNQUFNLEdBQUcsTUFBTSwyQkFBbUIsQ0FBQzt3Q0FDdkMsWUFBWSxHQUFHLGlCQUFJLENBQUMsR0FBRyxDQUFDOzRDQUNwQixFQUFFLEVBQUUsNEJBQTRCOzRDQUNoQyxLQUFLLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7eUJBZ0JsQjt5Q0FDUSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7d0NBQ1osTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQ0FDckMsQ0FBQztvQ0FFRCxZQUFZLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztvQ0FFNUIsMkJBQTJCO29DQUMzQixNQUFNLFdBQVcsR0FBRyxpQkFBSSxDQUFDLElBQUksQ0FBQzt3Q0FDMUIsS0FBSyxFQUFFLGlIQUFpSDtxQ0FDM0gsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQ0FDakIsV0FBVyxDQUFDLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxZQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7b0NBQ25ELFdBQVcsQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29DQUN6RSxXQUFXLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQ0FFeEUsTUFBTSxjQUFjLEdBQUcsaUJBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUseURBQXlELEVBQUUsRUFDaEcsNEVBQTRFLENBQy9FLENBQUMsTUFBTSxFQUFFLENBQUM7b0NBRVgsTUFBTSxVQUFVLEdBQUcsaUJBQUksQ0FBQyxNQUFNLENBQUM7d0NBQzNCLEtBQUssRUFBRSwwS0FBMEs7cUNBQ3BMLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQ0FFOUIsVUFBVSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7b0NBQ2pGLFVBQVUsQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29DQUNoRixVQUFVLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRTt3Q0FDdEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxRQUFRLFdBQVcsQ0FBQztvQ0FDN0UsQ0FBQyxDQUFDO29DQUVGLFlBQVksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7b0NBQ3RDLFlBQVksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7b0NBQ3pDLFlBQVksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7b0NBQ3JDLE9BQU8sQ0FBQyx5Q0FBeUM7Z0NBQ3JELENBQUM7Z0NBRUQseUVBQXlFO2dDQUN6RSxJQUFJLE1BQU0sR0FBRyxNQUFNLDJCQUFtQixDQUFDO2dDQUN2QyxJQUFJLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7Z0NBQ2pFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29DQUN0QixrQkFBa0IsR0FBRyxpQkFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO29DQUM3RCxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQ0FDL0QsQ0FBQztnQ0FDRCxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQ0FDekQsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQ0FDM0Msa0JBQWtCLENBQUMsV0FBVyxHQUFHLG9DQUFvQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7NEJBQzFGLENBQUM7d0JBQ0wsQ0FBQyxDQUFBO3dCQUNELGNBQWMsRUFBQyxRQUFRO3dCQUN2QixhQUFhLEVBQUMsZUFBZTtxQkFDaEMsQ0FBQyxDQUFDO2dCQUNQLENBQUM7Z0JBQ0QsUUFBUSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUMsR0FBRSxFQUFFO29CQUMvRCxpQkFBaUIsRUFBRSxDQUFBO2dCQUN2QixDQUFDLENBQUMsQ0FBQztnQkFDSCxRQUFRLENBQUMsY0FBYyxDQUFDLDRCQUE0QixDQUFFLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFDLEdBQUUsRUFBRTtvQkFDaEYsaUJBQWlCLEVBQUUsQ0FBQTtnQkFDdkIsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQztLQUFBLENBQUMsQ0FBQTtJQUVTLFFBQUEsbUJBQW1CLEdBQUcsU0FBZSxxQkFBcUI7O1lBQ2pFLE1BQU0sSUFBSSxPQUFPLENBQUMsVUFBUyxPQUFPLEVBQUUsT0FBTztnQkFDdkMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBQyxPQUFPLENBQUMsQ0FBQztZQUM1QyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksTUFBTSxHQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEYsSUFBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUMsQ0FBQztnQkFDWCxNQUFNLENBQUMsRUFBRSxHQUFDLGNBQWMsQ0FBQztnQkFDekIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxpQkFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUUsRUFBQyxjQUFjLEVBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzNELE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQUksQ0FBQyxHQUFHLENBQUMsRUFBQyxFQUFFLEVBQUMsWUFBWSxFQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsRUFBRSxFQUFDLFdBQVcsRUFBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUMvRCxDQUFDO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQztLQUFBLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xyXG5pbXBvcnQge2h0bWx9ICBmcm9tICdqcy10by1odG1sJztcclxuaW1wb3J0IHsgZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbCB9IGZyb20gJy4vcmVuZGVyLWZvcm11bGFyaW8nO1xyXG5pbXBvcnQgeyBEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcywgTW9kb0RNLCBBeXVkYVBhcmFVc3VhcmlvIH0gZnJvbSAnLi90aXBvcyc7XHJcbmltcG9ydCB7IGV4cGVjdGVkIH0gZnJvbSBcImNhc3QtZXJyb3JcIjtcclxuaW1wb3J0IFNlcnZpY2VXb3JrZXJBZG1pbiA9IHJlcXVpcmUoXCJzZXJ2aWNlLXdvcmtlci1hZG1pblwiKTtcclxuaW1wb3J0IHsgY3JlYXRlTG9jYWxTdG9yYWdlRm9ybVJlbmRlcmVyIH0gZnJvbSBcIi4vcmVuZGVyLWluaXRcIjtcclxuaW1wb3J0IHsgQkFDS1VQUyB9IGZyb20gJy4vYWJyaXItZm9ybXVsYXJpbyc7XHJcbmltcG9ydCB7IGdldEZvcm1SZW5kZXJlciB9IGZyb20gXCIuL3JlbmRlci1jb25maWdcIjtcclxuXHJcbmZ1bmN0aW9uIHNpRXhpc3RlSWQoaWQ6IHN0cmluZywgaGFjZXI6IChhcmcwOiBIVE1MRWxlbWVudCkgPT4gdm9pZCl7XHJcbiAgICB2YXIgZWxlbWVudG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XHJcbiAgICBpZihlbGVtZW50byE9bnVsbCl7XHJcbiAgICAgICAgaGFjZXIoZWxlbWVudG8pO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBtb3N0cmFyRWxlbWVudG9JZChpZDpzdHJpbmcsIG1vc3RyYXI6Ym9vbGVhbil7XHJcbiAgICBzaUV4aXN0ZUlkKGlkLCBlPT5lLnN0eWxlLmRpc3BsYXk9bW9zdHJhcj8nYmxvY2snOidub25lJyk7XHJcbn1cclxuY29uc3QgVVJMX0RNID0gJ2NhbXBvJztcclxuXHJcbnZhciByZWxvYWRXaXRob3V0SGFzaCA9ICgpPT57XHJcbiAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAnJywgYCR7bG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lfS8uLi8ke1VSTF9ETX1gKTtcclxuICAgIGxvY2F0aW9uLnJlbG9hZCgpXHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIHNpbmNyb25pemFyRGF0b3MocGVyc2lzdGVudGVzOiBEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyB8IG51bGwsIGNhbWJpYU1vZG9ETTogYm9vbGVhbikge1xyXG4gICAgY29uc3QgZm9ybVJlbmRlcmVyID0gZ2V0Rm9ybVJlbmRlcmVyKCk7XHJcbiAgICBsZXQgbW9kb0RNOiBNb2RvRE0gPSBmb3JtUmVuZGVyZXIuZ2V0TW9kb0RNKCkgfHwgYXdhaXQgbXkuYWpheC5tb2RvX2RtX2RlZmVjdG9fb2J0ZW5lcih7fSk7XHJcbiAgICBmb3JtUmVuZGVyZXIuc2V0TW9kb0RNKG1vZG9ETSk7XHJcbiAgICBjb25zdCBpZHBlcl9sb2d1ZWFkb190YWJsZXQgPSBmb3JtUmVuZGVyZXIuZ2V0SWRwZXJMb2d1ZWFkbygpO1xyXG4gICAgdmFyIGRhdG9zID0gYXdhaXQgbXkuYWpheC5kbV9zaW5jcm9uaXphcih7IHBlcnNpc3RlbnRlcywgbW9kb19kbTogbW9kb0RNLCBjYW1iaWFfbW9kb19kbTogY2FtYmlhTW9kb0RNLCBpZHBlcl9sb2d1ZWFkb190YWJsZXQgfSk7XHJcbiAgICBhd2FpdCBmb3JtUmVuZGVyZXIucGVyc2lzdGlyRGF0b3MoeyAuLi5kYXRvcywgbW9kb0FsbWFjZW5hbWllbnRvOiAnbG9jYWwnIH0pO1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmEgPSBhd2FpdCBteU93bi5hamF4Lm9wZXJhdGl2b19lc3RydWN0dXJhX2NvbXBsZXRhKHsgb3BlcmF0aXZvOiBkYXRvcy5vcGVyYXRpdm8sIGlkcGVyX2xvZ3VlYWRvX3RhYmxldCB9KTtcclxuICAgIGF3YWl0IGZvcm1SZW5kZXJlci5wZXJzaXN0aXJFc3RydWN0dXJhKGVzdHJ1Y3R1cmEpO1xyXG4gICAgbXkucmVtb3ZlTG9jYWxWYXIoQkFDS1VQUyk7XHJcbiAgICBhd2FpdCBkZXNjYXJnYXJBeXVkYSgpO1xyXG4gICAgcmV0dXJuIGRhdG9zO1xyXG59XHJcblxyXG4vLyBndWFyZGEgbGEgYXl1ZGEgZGVsIHVzdWFyaW8gcGFyYSB2ZXJsYSBzaW4gY29uZXhpw7NuOyBzaSBmYWxsYSBubyBzZSBpbnRlcnJ1bXBlIGxhIHNpbmNyb25pemFjacOzblxyXG5hc3luYyBmdW5jdGlvbiBkZXNjYXJnYXJBeXVkYSgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgdmFyIGF5dWRhOiBBeXVkYVBhcmFVc3VhcmlvID0gYXdhaXQgbXkuYWpheC5heXVkYV90cmFlcih7fSk7XHJcbiAgICAgICAgZ2V0Rm9ybVJlbmRlcmVyKCkucGVyc2lzdGlyQXl1ZGEoYXl1ZGEpO1xyXG4gICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ25vIHNlIHB1ZG8gZGVzY2FyZ2FyIGxhIGF5dWRhJywgZXJyKTtcclxuICAgIH1cclxufVxyXG5cclxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBmdW5jdGlvbigpe1xyXG4gICAgdmFyIGxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3RhbC1sYXlvdXQnKSE7XHJcbiAgICBpZighbGF5b3V0KXtcclxuICAgICAgICBjb25zb2xlLmxvZygnbm8gZW5jdWVudHJvIGVsIERJVi50b3RhbC1sYXlvdXQnKVxyXG4gICAgICAgIGF3YWl0IG15T3duLnJlYWR5O1xyXG4gICAgICAgIGxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b3RhbC1sYXlvdXQnKSE7XHJcbiAgICB9XHJcbiAgICBhd2FpdCBteU93bi5yZWFkeTtcclxuICAgIGlmKGxvY2F0aW9uLnBhdGhuYW1lLmVuZHNXaXRoKCcvc2FsdmFyJykpe1xyXG4gICAgICAgIHRyeXtcclxuICAgICAgICAgICAgZm9yIChsZXQgeCBpbiBsb2NhbFN0b3JhZ2Upe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cobG9jYWxTdG9yYWdlW3hdKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IG15T3duLmFqYXguZG1fcmVzY2F0YXIoe2xvY2FsU3RvcmFnZUl0ZW06bG9jYWxTdG9yYWdlW3hdLCBsb2NhbFN0b3JhZ2VJdGVtS2V5Onh9KVxyXG4gICAgICAgICAgICAgICAgbGF5b3V0LmFwcGVuZChcclxuICAgICAgICAgICAgICAgICAgICBodG1sLnAoYGl0ZW0gXCIke3h9XCIgZGUgbG9jYWxTdG9nYWdlIGd1YXJkYWRvLmApLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGF5b3V0LmFwcGVuZChcclxuICAgICAgICAgICAgICAgIGh0bWwucChgdG9kb3MgbG9zIGl0ZW1zIGZ1ZXJvbiBzYWx2YWRvcy5gKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgIGxheW91dC5hcHBlbmQoXHJcbiAgICAgICAgICAgICAgICBodG1sLnAoYHNlIHByb2R1am8gdW4gZXJyb3IgYWwgc2FsdmFyIGxvcyBkYXRvcyBkZWwgZG0uYCkuY3JlYXRlKClcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgIHZhciByZWdpc3RyYXRpb25zID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9ucygpO1xyXG4gICAgICAgICAgICBmb3IobGV0IHJlZ2lzdHJhdGlvbiBvZiByZWdpc3RyYXRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCByZWdpc3RyYXRpb24udW5yZWdpc3RlcigpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGF5b3V0LmFwcGVuZChcclxuICAgICAgICAgICAgICAgIGh0bWwucChgdG9kb3MgbG9zIHN3IGZ1ZXJvbiBkZXNpbnN0YWxhZG9zLmApLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgbGF5b3V0LmFwcGVuZChcclxuICAgICAgICAgICAgICAgIGh0bWwucChgc2UgcHJvZHVqbyB1biBlcnJvciBhbCBkZXNpbnN0YWxhciBsb3Mgc3cuYCkuY3JlYXRlKClcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgIH1cclxuICAgIH1lbHNle1xyXG4gICAgICAgIGxheW91dC5pbm5lckhUTUwgPSBgXHJcbiAgICA8c3BhbiBpZD1cIm1pbmktY29uc29sZVwiPjwvc3Bhbj5cclxuICAgIFxyXG4gICAgPCEtLSBCYW5uZXIgZGUgTnVldmEgVmVyc2nDs24gKFByb3RhZ29uaXNtbyBBYnNvbHV0byAtIENlbnRybyBkZSBsYSBQYW50YWxsYSkgLS0+XHJcbiAgICA8ZGl2IGlkPVwibnVldmEtdmVyc2lvbi1pbnN0YWxhZGFcIiBzdHlsZT1cIlxyXG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDsgXHJcbiAgICAgICAgdG9wOiAzNSU7IFxyXG4gICAgICAgIGxlZnQ6IDUwJTsgXHJcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IFxyXG4gICAgICAgIHotaW5kZXg6IDk5OTk5OyBcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyZTdkMzI7IC8qIE1VSSBTdWNjZXNzIFByaW5jaXBhbCAqL1xyXG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcclxuICAgICAgICBwYWRkaW5nOiAzMnB4IDQ4cHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDBweCAxMXB4IDE1cHggLTdweCByZ2JhKDAsMCwwLDAuMiksIDBweCAyNHB4IDM4cHggM3B4IHJnYmEoMCwwLDAsMC4xNCk7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgIGdhcDogMjRweDtcclxuICAgICAgICBmb250LWZhbWlseTogJ1JvYm90bycsICdIZWx2ZXRpY2EnLCAnQXJpYWwnLCBzYW5zLXNlcmlmO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBtaW4td2lkdGg6IDMwMHB4O1xyXG4gICAgICAgIG1heC13aWR0aDogOTAlO1xyXG4gICAgICAgIHBhZGRpbmc6IDI1cHg7XHJcbiAgICBcIj5cclxuICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA4cHg7XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZm9udC1zaXplOiAyMnB4OyBmb250LXdlaWdodDogNTAwOyBsZXR0ZXItc3BhY2luZzogMC4yNXB4O1wiPsKhaW5zdGFsYWNpw7NuIGNvcnJlY3RhITwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIGlkPVwicmVmcmVzY2FyXCIgc3R5bGU9XCJcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAgICAgICAgICAgY29sb3I6ICMyZTdkMzI7XHJcbiAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgICAgICAgcGFkZGluZzogMTBweCAyNHB4O1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwcHggM3B4IDVweCAtMXB4IHJnYmEoMCwwLDAsMC4yKTtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzLCB0cmFuc2Zvcm0gMC4xcztcclxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgICAgZ2FwOiA4cHg7XHJcbiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjRweDtcclxuICAgICAgICAgICAgbWFyZ2luOiAxNXB4IGF1dG87XHJcbiAgICAgICAgXCI+XHJcbiAgICAgICAgICAgIENvbnRpbnVhclxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBpZD1cImluc3RhbGFkb1wiIHN0eWxlPVwiZGlzcGxheTpub25lXCI+XHJcbiAgICAgICAgPGRpdiBpZD1cIm1haW5fbGF5b3V0XCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPCEtLSBQYW5lbCBkZSBQcm9ncmVzbyBPY3VwYW5kbyBNw6FzIFBhbnRhbGxhIChMaW1waW8geSBDb3Jwb3JhdGl2bykgLS0+XHJcbiAgICA8ZGl2IGlkPVwiaW5zdGFsYW5kb1wiIHN0eWxlPVwiXHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICB0b3A6IDQwcHg7XHJcbiAgICAgICAgbGVmdDogNDBweDtcclxuICAgICAgICByaWdodDogNDBweDtcclxuICAgICAgICBib3R0b206IDQwcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgLyogRm9uZG8gYmxhbmNvIGxpbXBpbyBNVUkgKi9cclxuICAgICAgICBjb2xvcjogIzFlMjkzYjtcclxuICAgICAgICBwYWRkaW5nOiAzMnB4O1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcclxuICAgICAgICBib3gtc2hhZG93OiAwcHggOHB4IDI0cHggcmdiYSgwLDAsMCwwLjEyKTtcclxuICAgICAgICB6LWluZGV4OiA5OTk5ODtcclxuICAgICAgICBmb250LWZhbWlseTogJ1JvYm90bycsICdIZWx2ZXRpY2EnLCAnQXJpYWwnLCBzYW5zLXNlcmlmO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTJlOGYwO1xyXG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgICAgbWluLWhlaWdodDogMDtcclxuICAgIFwiPlxyXG4gICAgICAgIDxkaXYgaWQ9XCJ2b2x2ZXItZGUtaW5zdGFsYWNpb25cIiBzdHlsZT1cIlxyXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTJlOGYwO1xyXG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDtcclxuICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgICAgXCI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDE0cHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFNwaW5uZXIgTWluaW1hbGlzdGEgZGUgTVVJIChDaXJjdWxhclByb2dyZXNzKSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjBweDsgXHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyMHB4OyBcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjZTJlOGYwOyBcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7IFxyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICMxOTc2ZDI7IC8qIE1VSSBQcmltYXJ5ICovXHJcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBzdy1zcGluIDAuOHMgbGluZWFyIGluZmluaXRlO1xyXG4gICAgICAgICAgICAgICAgXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8c3R5bGU+QGtleWZyYW1lcyBzdy1zcGluIHsgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH08L3N0eWxlPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gaWQ9XCJ2b2x2ZXItZGUtaW5zdGFsYWNpb24tcG9yLXF1ZVwiIHN0eWxlPVwiY29sb3I6ICMxOTc2ZDI7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogMTNweDsgbGV0dGVyLXNwYWNpbmc6IDAuOHB4O1wiPkRFU0NBUkdBTkRPIFJFQ1VSU09TIERFIExBIEFQTElDQUNJw5NOPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBpZD1cInZvbHZlci1kZS1pbnN0YWxhY2lvbi1jb21vXCIgc3R5bGU9XCJcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICAgICAgY29sb3I6ICM2NDc0OGI7XHJcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2JkNWUxO1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDE2cHg7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4ycztcclxuICAgICAgICAgICAgXCI+Vm9sdmVyPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGgyIHN0eWxlPVwiY29sb3I6ICMxZTI5M2I7IGZvbnQtc2l6ZTogMThweDsgZm9udC13ZWlnaHQ6IDQwMDsgbWFyZ2luOiAwIDAgMTZweCAwO1wiPkhpc3RvcmlhbCBkZSBpbnN0YWxhY2nDs248L2gyPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDwhLS0gQ29uc29sYSBleHBhbmRpZGEgeSBsaW1waWEgc2luIGVzdMOpdGljYSB0ZXJtaW5hbCAtLT5cclxuICAgICAgICA8ZGl2IGlkPVwiYXJjaGl2b3NcIiBzdHlsZT1cIlxyXG4gICAgICAgICAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAxO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7XHJcbiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDtcclxuICAgICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcclxuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcclxuICAgICAgICAgICAgY29sb3I6ICM0NzU1Njk7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOGZhZmM7IC8qIEdyaXMgbXV5IHRlbnVlLCBuYWRhIGdhbWVyICovXHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDE2cHg7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2UyZThmMDtcclxuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweFxyXG4gICAgICAgIFwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbmA7XHJcbiAgICAgICAgaWYobG9jYXRpb24ucGF0aG5hbWUuZW5kc1dpdGgoYC8ke1VSTF9ETX1gKSl7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvcm1SZW5kZXJlciA9IGNyZWF0ZUxvY2FsU3RvcmFnZUZvcm1SZW5kZXJlcih7IG9uU2luY3Jvbml6YXI6IHNpbmNyb25pemFyRGF0b3MgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0QXBwID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgbW9kb0RtRGVmZWN0bzogTW9kb0RNID0gZm9ybVJlbmRlcmVyLmdldE1vZG9ETSgpIHx8IGF3YWl0IG15LmFqYXgubW9kb19kbV9kZWZlY3RvX29idGVuZXIoe30pO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1SZW5kZXJlci5zZXRNb2RvRE0obW9kb0RtRGVmZWN0byk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbm8gc2UgcHVkbyB0cmFlciBlbCBtb2RvIHBvciBkZWZlY3RvJylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciB2ZXJzaW9uID0gYXdhaXQgc3dhLmdldFNXKCd2ZXJzaW9uJyk7XHJcbiAgICAgICAgICAgICAgICBmb3JtUmVuZGVyZXIuc2V0QXBwQ2FjaGVWZXJzaW9uKHZlcnNpb24pO1xyXG4gICAgICAgICAgICAgICAgZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbChmb3JtUmVuZGVyZXIsIHt9KTtcclxuICAgICAgICAgICAgICAgIG15Lm1lbnVOYW1lID0gVVJMX0RNO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciByZWZyZXNjYXJTdGF0dXM9YXN5bmMgZnVuY3Rpb24oc2hvd1NjcmVlbjogc3RyaW5nLCBuZXdWZXJzaW9uQXZhaWFibGU6IHN0cmluZywgX2luc3RhbGxpbmc6IGFueSl7XHJcbiAgICAgICAgICAgICAgICB2YXIgYnVzY2FuZG9BY3R1YWxpemFjaW9uID0gbG9jYXRpb24uaHJlZi5lbmRzV2l0aCgnI2luc3Q9MScpO1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ251ZXZhLXZlcnNpb24taW5zdGFsYWRhJykhLnN0eWxlLmRpc3BsYXk9bmV3VmVyc2lvbkF2YWlhYmxlPT0neWVzJz8nJzonbm9uZSc7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndm9sdmVyLWRlLWluc3RhbGFjaW9uJykhLnN0eWxlLmRpc3BsYXk9bmV3VmVyc2lvbkF2YWlhYmxlPT0neWVzJz8nbm9uZSc6Jyc7XHJcbiAgICAgICAgICAgICAgICBpZihzaG93U2NyZWVuPT0nYXBwJyAmJiAhYnVzY2FuZG9BY3R1YWxpemFjaW9uKXtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdGFsYWRvJykhLnN0eWxlLmRpc3BsYXk9Jyc7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc3RhbGFuZG8nKSEuc3R5bGUuZGlzcGxheT0nbm9uZSc7XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdGFsYWRvJykhLnN0eWxlLmRpc3BsYXk9J25vbmUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0YWxhbmRvJykhLnN0eWxlLmRpc3BsYXk9Jyc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHZhciBzd2EgPSBuZXcgU2VydmljZVdvcmtlckFkbWluKCk7XHJcbiAgICAgICAgICAgIHN3YS5pbnN0YWxsT3JBY3RpdmF0ZSh7XHJcbiAgICAgICAgICAgICAgICBvbkVhY2hGaWxlOiBhc3luYyAodXJsOiBzdHJpbmcsIF9lcnJvcjogRXJyb3IgfCBudWxsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2ZpbGU6ICcsIHVybCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFyY2hpdm9zQ29udGVuZWRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcmNoaXZvcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmNoaXZvc0NvbnRlbmVkb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl2b3NDb250ZW5lZG9yLmFwcGVuZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogdXJsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnd2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDUpOyBwYWRkaW5nOiAycHggMDsnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBgPiAke3VybH1gKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBdXRvc2Nyb2xsIHBhcmEgdmVyIGVsIGFyY2hpdm8gbcOhcyByZWNpZW50ZSBhbCBmb25kbyBkZSBsYSBjb25zb2xhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdm9zQ29udGVuZWRvci5zY3JvbGxUb3AgPSBhcmNoaXZvc0NvbnRlbmVkb3Iuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBvbkluZm9NZXNzYWdlOiAobT86IHN0cmluZyk9PmNvbnNvbGUubG9nKCdtZXNzYWdlOiAnLCBtKSxcclxuICAgICAgICAgICAgICAgIG9uRXJyb3I6IGFzeW5jIChlcnI6IEVycm9yLCBjb250ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZXJyb3IgPSBleHBlY3RlZChlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvcjogJyArIChjb250ZXh0ID8gYCBlbiAoJHtjb250ZXh0fSlgIDogJycpLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coY29udGV4dCwgZXJyb3IsICdlcnJvci1jb25zb2xlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yIGFsIGRlc2NhcmdhciBjYWNoZScsIGVycm9yLm1lc3NhZ2UpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LnN0YXJ0c1dpdGgoJ2NhY2hpbmcgJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZVVybCA9IGNvbnRleHQucmVwbGFjZSgnY2FjaGluZyAnLCAnJykudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlSWQgPSBmaWxlVXJsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWxlRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpbGVJZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbWJpYW1vcyBlbCBlc3RpbG8gYSB1biByb2pvIE1VSSAoRXJyb3IgcHJpbmNpcGFsKSBlbGVnYW50ZSB5IGxlIGFncmVnYW1vcyBlbCBpbmRpY2Fkb3IgZGUgZmFsbG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFbGVtZW50LnN0eWxlLmNvbG9yID0gJyNkMzJmMmYnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUVsZW1lbnQuc3R5bGUuZm9udFdlaWdodCA9ICc3MDAnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNmZmViZWUnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUVsZW1lbnQuc3R5bGUucGFkZGluZ0xlZnQgPSAnOHB4JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFbGVtZW50LnN0eWxlLmJvcmRlclJhZGl1cyA9ICcycHgnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUVsZW1lbnQuaW5uZXJIVE1MID0gYOKdjCBFcnJvcjogTm8gc2UgcHVkbyBkZXNjYXJnYXIgJHtmaWxlVXJsfSAoJHtlcnJvci5tZXNzYWdlfSlgO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvcnphbW9zIHNjcm9sbCBwYXJhIHF1ZSBlbCBkZXNhcnJvbGxhZG9yIHZlYSBlbCBlcnJvciBhbCBmaW5hbCBkZSBsYSBjb25zb2xhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhcmNoaXZvc0NvbnRlbmVkb3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXJjaGl2b3MnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmNoaXZvc0NvbnRlbmVkb3IpIGFyY2hpdm9zQ29udGVuZWRvci5zY3JvbGxUb3AgPSBhcmNoaXZvc0NvbnRlbmVkb3Iuc2Nyb2xsSGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dCAhPSAnaW5pdGlhbGl6aW5nIHNlcnZpY2Utd29ya2VyJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmFsaWRhbW9zIHNpbGVuY2lvc2FtZW50ZSBzaSBlbCBwcm9ibGVtYSBlcyBmYWx0YSBkZSBzZXNpw7NuICg0MDEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZWVwQWxpdmUgPSBhd2FpdCBmZXRjaCgna2VlcC1hbGl2ZS5qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihrZWVwQWxpdmUuc3RhdHVzIT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignZGVzbG9ndWVhZG8nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChwaW5nRXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRmFsbG8gZGUgY2FjaMOpIHBvciBzZXNpw7NuIGV4cGlyYWRhLiBEZXNwbGVnYW5kbyBiYW5uZXIgZmxvdGFudGUuJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5zdGFsYW5kb0VsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5zdGFsYW5kbycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RhbGFuZG9FbGVtKSBpbnN0YWxhbmRvRWxlbS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbXVldmUgZWwgcGFuZWwgZGUgZGVzY2FyZ2Egc2kgc2FsdMOzIGVsIGVycm9yIGRlIHNlc2nDs25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVsQXJjaGl2b3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFuZWwtYXJjaGl2b3MtZmxvdGFudGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYW5lbEFyY2hpdm9zKSBwYW5lbEFyY2hpdm9zLnJlbW92ZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cGRhdGVCYW5uZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm90aWZpY2F0aW9uLXVwZGF0ZS1iYW5uZXInKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdXBkYXRlQmFubmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxheW91dCA9IGF3YWl0IGF3YWl0Rm9yQ2FjaGVMYXlvdXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQmFubmVyID0gaHRtbC5kaXYoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ25vdGlmaWNhdGlvbi11cGRhdGUtYmFubmVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU6IGBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogMjBweDsgLyogQ2FtYmlhZG8gYXJyaWJhICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodDogMjBweDsgLyogQ2FtYmlhZG8gYSBsYSBkZXJlY2hhICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmMzZTUwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAxNnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDRweCAxMnB4IHJnYmEoMCwwLDAsMC4zKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2FwOiAxMnB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAzMjBweDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDk5OTk5OyAvKiBBIGxhIG1pc21hIGFsdHVyYSBxdWUgbG9zIG1vZGFsZXMgZGUgUmVhY3QgKi9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjMzQ5OGRiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LmFwcGVuZENoaWxkKHVwZGF0ZUJhbm5lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQmFubmVyLmlubmVySFRNTCA9ICcnO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJvdMOzbiBkZSBjaWVycmUgY3J1eiAoWClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvdG9uQ2VycmFyID0gaHRtbC5zcGFuKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZTogJ3Bvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA4cHg7IHJpZ2h0OiAxMnB4OyBjdXJzb3I6IHBvaW50ZXI7IGNvbG9yOiAjYmRjM2M3OyBmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxNHB4OydcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sICfDlycpLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b25DZXJyYXIub25jbGljayA9ICgpID0+IHVwZGF0ZUJhbm5lciEucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RvbkNlcnJhci5vbm1vdXNlb3ZlciA9ICgpID0+IHsgYm90b25DZXJyYXIuc3R5bGUuY29sb3IgPSAnI2ZmZmZmZic7IH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RvbkNlcnJhci5vbm1vdXNlb3V0ID0gKCkgPT4geyBib3RvbkNlcnJhci5zdHlsZS5jb2xvciA9ICcjYmRjM2M3JzsgfTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXh0b0NvbnRlbmlkbyA9IGh0bWwuZGl2KHsgc3R5bGU6ICdmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjQ7IHBhZGRpbmctcmlnaHQ6IDEycHg7JyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdIYXkgdW5hIG51ZXZhIHZlcnNpw7NuIGRpc3BvbmlibGUsIHBlcm8gcmVxdWllcmUgaW5pY2lhciBzZXNpw7NuIG51ZXZhbWVudGUuJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5jcmVhdGUoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib3RvbkxvZ2luID0gaHRtbC5idXR0b24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiAnYmFja2dyb3VuZC1jb2xvcjogIzM0OThkYjsgY29sb3I6IHdoaXRlOyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDhweCAxMnB4OyBib3JkZXItcmFkaXVzOiA0cHg7IGN1cnNvcjogcG9pbnRlcjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTNweDsgYWxpZ24tc2VsZjogZmxleC1lbmQ7J1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgJ0luaWNpYXIgU2VzacOzbicpLmNyZWF0ZSgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uTG9naW4ub25tb3VzZW92ZXIgPSAoKSA9PiB7IGJvdG9uTG9naW4uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyMyOTgwYjknOyB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b25Mb2dpbi5vbm1vdXNlb3V0ID0gKCkgPT4geyBib3RvbkxvZ2luLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjMzQ5OGRiJzsgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uTG9naW4ub25jbGljayA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke2xvY2F0aW9uLm9yaWdpbiArIGxvY2F0aW9uLnBhdGhuYW1lfS8uLi9sb2dpbmA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUJhbm5lci5hcHBlbmRDaGlsZChib3RvbkNlcnJhcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVCYW5uZXIuYXBwZW5kQ2hpbGQodGV4dG9Db250ZW5pZG8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQmFubmVyLmFwcGVuZENoaWxkKGJvdG9uTG9naW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBDb3J0YW1vcyBhY8OhIHBhcmEgZXZpdGFyIGxhIGJhcnJhIHJvamFcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2kgZWwgcGluZyBhbmR1dm8gYmllbiBwZXJvIGxsZWfDsyBhY8OhLCBlcyB1biBlcnJvciByZWFsIGRlIHJlZC9vZmZsaW5lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsYXlvdXQgPSBhd2FpdCBhd2FpdEZvckNhY2hlTGF5b3V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2FjaGVTdGF0dXNFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhY2hlLXN0YXR1cycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNhY2hlU3RhdHVzRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTdGF0dXNFbGVtZW50ID0gaHRtbC5wKHsgaWQ6ICdjYWNoZS1zdGF0dXMnIH0pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0Lmluc2VydEJlZm9yZShjYWNoZVN0YXR1c0VsZW1lbnQsIGxheW91dC5maXJzdENoaWxkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVN0YXR1c0VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnd2FybmluZycsICdhbGwtb2snKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVTdGF0dXNFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2RhbmdlcicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVN0YXR1c0VsZW1lbnQudGV4dENvbnRlbnQgPSAnZXJyb3IgYWwgZGVzY2FyZ2FyIGxhIGFwbGljYWNpw7NuLiAnICsgZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgb25SZWFkeVRvU3RhcnQ6c3RhcnRBcHAsXHJcbiAgICAgICAgICAgICAgICBvblN0YXRlQ2hhbmdlOnJlZnJlc2NhclN0YXR1c1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZnJlc2NhcicpIS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKCk9PntcclxuICAgICAgICAgICAgcmVsb2FkV2l0aG91dEhhc2goKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2b2x2ZXItZGUtaW5zdGFsYWNpb24tY29tbycpIS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKCk9PntcclxuICAgICAgICAgICAgcmVsb2FkV2l0aG91dEhhc2goKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59KVxyXG5cclxuZXhwb3J0IHZhciBhd2FpdEZvckNhY2hlTGF5b3V0ID0gYXN5bmMgZnVuY3Rpb24gcHJlcGFyZUxheW91dEZvckNhY2hlKCl7XHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCBfcmVqZWN0KXtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcscmVzb2x2ZSk7XHJcbiAgICB9KTtcclxuICAgIHZhciBsYXlvdXQ9KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYWNoZS1sYXlvdXQnKXx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xyXG4gICAgaWYoIWxheW91dC5pZCl7XHJcbiAgICAgICAgbGF5b3V0LmlkPSdjYWNoZS1sYXlvdXQnO1xyXG4gICAgICAgIGxheW91dC5hcHBlbmRDaGlsZChodG1sLmRpdih7aWQ6J2FwcC12ZXJzaW9ucyd9KS5jcmVhdGUoKSk7XHJcbiAgICAgICAgbGF5b3V0LmFwcGVuZENoaWxkKGh0bWwuZGl2KHtpZDonYXBwLXN0YXR1cyd9KS5jcmVhdGUoKSk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsYXlvdXQuYXBwZW5kQ2hpbGQoaHRtbC5kaXYoe2lkOidjYWNoZS1sb2cnfSkuY3JlYXRlKCkpKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShsYXlvdXQsZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGxheW91dDtcclxufSgpOyJdfQ==
@@ -0,0 +1,25 @@
1
+ --set role dmencu_owner;
2
+ --set search_path=base;
3
+
4
+ set search_path = base;
5
+
6
+ -- nromanzana y casa sólo se pueden modificar en las encuestas de dominio 5
7
+ CREATE OR REPLACE FUNCTION validar_manzana_casa_tem_trg()
8
+ RETURNS trigger
9
+ LANGUAGE 'plpgsql'
10
+ AS $BODY$
11
+ begin
12
+ if old.dominio is distinct from 5 then
13
+ raise exception 'Error: la manzana y la casa de la encuesta % del operativo % sólo se pueden modificar si el dominio es 5', new.enc, new.operativo;
14
+ end if;
15
+ return new;
16
+ end;
17
+ $BODY$;
18
+
19
+ DROP TRIGGER IF EXISTS validar_manzana_casa_tem_trg ON tem;
20
+ CREATE TRIGGER validar_manzana_casa_tem_trg
21
+ BEFORE UPDATE OF nromanzana, casa
22
+ ON tem
23
+ FOR EACH ROW
24
+ WHEN (old.nromanzana is distinct from new.nromanzana or old.casa is distinct from new.casa)
25
+ EXECUTE PROCEDURE validar_manzana_casa_tem_trg();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dmencu",
3
3
  "description": "DM Encu - Encuestas en dispositivo móvil",
4
- "version": "3.3.1",
4
+ "version": "3.5.0",
5
5
  "author": "Codenautas <codenautas@googlegroups.com>",
6
6
  "license": "MIT",
7
7
  "repository": "codenautas/dmencu",
@@ -9,7 +9,8 @@
9
9
  "types": "dist/server/server/app-dmencu.d.ts",
10
10
  "files": [
11
11
  "dist",
12
- "install"
12
+ "install",
13
+ "ayuda"
13
14
  ],
14
15
  "dependencies": {
15
16
  "@mui/material": "^5.16.7",
@@ -17,7 +18,9 @@
17
18
  "backend-skins": "^0.1.34",
18
19
  "cast-error": "^0.1.3",
19
20
  "discrepances": "^0.2.14",
21
+ "js-yaml": "^5.4.3",
20
22
  "like-ar": "^0.3.9",
23
+ "markdown-it": "^15.0.2",
21
24
  "meta-enc": "^1.4.19",
22
25
  "procesamiento": "^2.0.11",
23
26
  "qrcode": "^1.5.3",