@ampath-kenya/ngx-openmrs-formentry 2.12.25-beta.0 → 2.12.26-beta

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 (438) hide show
  1. package/.editorconfig +13 -0
  2. package/.prettierignore +40 -0
  3. package/.prettierrc +6 -0
  4. package/.travis.yml +17 -0
  5. package/README.md +36 -0
  6. package/angular.json +143 -0
  7. package/{bundles → dist/ngx-formentry/bundles}/ampath-kenya-ngx-openmrs-formentry.umd.js +4 -2
  8. package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.js.map +1 -0
  9. package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js +2 -0
  10. package/dist/ngx-formentry/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js.map +1 -0
  11. package/dist/ngx-formentry/esm2015/form-entry/form-renderer/form-renderer.component.js +655 -0
  12. package/dist/ngx-formentry/esm5/form-entry/form-renderer/form-renderer.component.js +217 -0
  13. package/dist/ngx-formentry/fesm2015/ampath-kenya-ngx-openmrs-formentry.js +11271 -0
  14. package/dist/ngx-formentry/fesm2015/ampath-kenya-ngx-openmrs-formentry.js.map +1 -0
  15. package/{fesm5 → dist/ngx-formentry/fesm5}/ampath-kenya-ngx-openmrs-formentry.js +5 -3
  16. package/dist/ngx-formentry/fesm5/ampath-kenya-ngx-openmrs-formentry.js.map +1 -0
  17. package/dist/ngx-formentry/package.json +35 -0
  18. package/package.json +74 -20
  19. package/scripts/build.sh +2 -0
  20. package/target/npmlist.json +1 -0
  21. package/tsconfig.json +20 -0
  22. package/tslint.json +96 -0
  23. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.js.map +0 -1
  24. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js +0 -2
  25. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js.map +0 -1
  26. package/esm2015/form-entry/form-renderer/form-renderer.component.js +0 -653
  27. package/esm5/form-entry/form-renderer/form-renderer.component.js +0 -215
  28. package/fesm2015/ampath-kenya-ngx-openmrs-formentry.js +0 -11269
  29. package/fesm2015/ampath-kenya-ngx-openmrs-formentry.js.map +0 -1
  30. package/fesm5/ampath-kenya-ngx-openmrs-formentry.js.map +0 -1
  31. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-control-type.d.ts +0 -0
  32. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-array.d.ts +0 -0
  33. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-control.d.ts +0 -0
  34. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/afe-form-group.d.ts +0 -0
  35. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/control-extensions.d.ts +0 -0
  36. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/index.d.ts +0 -0
  37. /package/{abstract-controls-extension → dist/ngx-formentry/abstract-controls-extension}/value-change.listener.d.ts +0 -0
  38. /package/{ampath-kenya-ngx-openmrs-formentry.d.ts → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.d.ts} +0 -0
  39. /package/{ampath-kenya-ngx-openmrs-formentry.metadata.json → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.metadata.json} +0 -0
  40. /package/{ampath-kenya-ngx-openmrs-formentry.metadata.json-e → dist/ngx-formentry/ampath-kenya-ngx-openmrs-formentry.metadata.json-e} +0 -0
  41. /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relation.d.ts +0 -0
  42. /package/{change-tracking → dist/ngx-formentry/change-tracking}/control-relations.d.ts +0 -0
  43. /package/{components → dist/ngx-formentry/components}/afe-ng-select.component.d.ts +0 -0
  44. /package/{components → dist/ngx-formentry/components}/appointments-overview/appointments-overview.component.d.ts +0 -0
  45. /package/{components → dist/ngx-formentry/components}/check-box/checkbox.component.d.ts +0 -0
  46. /package/{components → dist/ngx-formentry/components}/check-box/checkbox.module.d.ts +0 -0
  47. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-picker/date-picker.component.d.ts +0 -0
  48. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.component.d.ts +0 -0
  49. /package/{components → dist/ngx-formentry/components}/date-time-picker/date-time-picker.module.d.ts +0 -0
  50. /package/{components → dist/ngx-formentry/components}/date-time-picker/picker-modal/modal.component.d.ts +0 -0
  51. /package/{components → dist/ngx-formentry/components}/date-time-picker/pipes/moment.pipe.d.ts +0 -0
  52. /package/{components → dist/ngx-formentry/components}/date-time-picker/time-picker/time-picker.component.d.ts +0 -0
  53. /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.component.d.ts +0 -0
  54. /package/{components → dist/ngx-formentry/components}/file-upload/file-upload.module.d.ts +0 -0
  55. /package/{components → dist/ngx-formentry/components}/file-upload/secure.pipe.d.ts +0 -0
  56. /package/{components → dist/ngx-formentry/components}/ngx-date-time-picker/ngx-date-time-picker.component.d.ts +0 -0
  57. /package/{components → dist/ngx-formentry/components}/ngx-date-time-picker/ngx-date-time-picker.module.d.ts +0 -0
  58. /package/{components → dist/ngx-formentry/components}/ngx-time-picker/ngx-time-picker.component.d.ts +0 -0
  59. /package/{components → dist/ngx-formentry/components}/ngx-time-picker/ngx-time-picker.module.d.ts +0 -0
  60. /package/{components → dist/ngx-formentry/components}/remote-select/remote-select.component.d.ts +0 -0
  61. /package/{components → dist/ngx-formentry/components}/remote-select/remote-select.module.d.ts +0 -0
  62. /package/{components → dist/ngx-formentry/components}/select/diacritics.d.ts +0 -0
  63. /package/{components → dist/ngx-formentry/components}/select/option-list.d.ts +0 -0
  64. /package/{components → dist/ngx-formentry/components}/select/option.d.ts +0 -0
  65. /package/{components → dist/ngx-formentry/components}/select/select-dropdown.component.d.ts +0 -0
  66. /package/{components → dist/ngx-formentry/components}/select/select-dropdown.component.style.d.ts +0 -0
  67. /package/{components → dist/ngx-formentry/components}/select/select.component.d.ts +0 -0
  68. /package/{components → dist/ngx-formentry/components}/select/select.component.style.d.ts +0 -0
  69. /package/{components → dist/ngx-formentry/components}/select/select.module.d.ts +0 -0
  70. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/file-preview.component.d.ts +0 -0
  71. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/question-control.component.d.ts +0 -0
  72. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/display-controls/remote-answer.component.d.ts +0 -0
  73. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-container/encounter-container.component.d.ts +0 -0
  74. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-pdf-viewer.service.d.ts +0 -0
  75. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-view/encounter-viewer.component.d.ts +0 -0
  76. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-viewer.module.d.ts +0 -0
  77. /package/{encounter-viewer → dist/ngx-formentry/encounter-viewer}/encounter-viewer.service.d.ts +0 -0
  78. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-control-type.js +0 -0
  79. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-array.js +0 -0
  80. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-control.js +0 -0
  81. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/afe-form-group.js +0 -0
  82. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/control-extensions.js +0 -0
  83. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/index.js +0 -0
  84. /package/{esm2015 → dist/ngx-formentry/esm2015}/abstract-controls-extension/value-change.listener.js +0 -0
  85. /package/{esm2015 → dist/ngx-formentry/esm2015}/ampath-kenya-ngx-openmrs-formentry.js +0 -0
  86. /package/{esm2015 → dist/ngx-formentry/esm2015}/change-tracking/control-relation.js +0 -0
  87. /package/{esm2015 → dist/ngx-formentry/esm2015}/change-tracking/control-relations.js +0 -0
  88. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/afe-ng-select.component.js +0 -0
  89. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/appointments-overview/appointments-overview.component.js +0 -0
  90. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/check-box/checkbox.component.js +0 -0
  91. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/check-box/checkbox.module.js +0 -0
  92. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-picker/date-picker.component.js +0 -0
  93. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-time-picker.component.js +0 -0
  94. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/date-time-picker.module.js +0 -0
  95. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/picker-modal/modal.component.js +0 -0
  96. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/pipes/moment.pipe.js +0 -0
  97. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/date-time-picker/time-picker/time-picker.component.js +0 -0
  98. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/file-upload.component.js +0 -0
  99. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/file-upload.module.js +0 -0
  100. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/file-upload/secure.pipe.js +0 -0
  101. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-date-time-picker/ngx-date-time-picker.component.js +0 -0
  102. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-date-time-picker/ngx-date-time-picker.module.js +0 -0
  103. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-time-picker/ngx-time-picker.component.js +0 -0
  104. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/ngx-time-picker/ngx-time-picker.module.js +0 -0
  105. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/remote-select/remote-select.component.js +0 -0
  106. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/remote-select/remote-select.module.js +0 -0
  107. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/diacritics.js +0 -0
  108. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/option-list.js +0 -0
  109. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/option.js +0 -0
  110. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select-dropdown.component.js +0 -0
  111. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select-dropdown.component.style.js +0 -0
  112. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.component.js +0 -0
  113. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.component.style.js +0 -0
  114. /package/{esm2015 → dist/ngx-formentry/esm2015}/components/select/select.module.js +0 -0
  115. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/file-preview.component.js +0 -0
  116. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/question-control.component.js +0 -0
  117. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/display-controls/remote-answer.component.js +0 -0
  118. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-container/encounter-container.component.js +0 -0
  119. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-pdf-viewer.service.js +0 -0
  120. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-view/encounter-viewer.component.js +0 -0
  121. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-viewer.module.js +0 -0
  122. /package/{esm2015 → dist/ngx-formentry/esm2015}/encounter-viewer/encounter-viewer.service.js +0 -0
  123. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-alerts/alert-helpers.js +0 -0
  124. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-alerts/can-generate-alert.js +0 -0
  125. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-calculators/can-calculate.js +0 -0
  126. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/can-disable.js +0 -0
  127. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/can-hide.js +0 -0
  128. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/disabler-helper.js +0 -0
  129. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/control-hiders-disablers/hider-helpers.js +0 -0
  130. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/data-sources/data-sources.js +0 -0
  131. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/data-sources/dummy-data-source.js +0 -0
  132. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/directives/historical-value-directive.js +0 -0
  133. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/error-renderer/error-renderer.component.js +0 -0
  134. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/expression-runner/expression-runner.js +0 -0
  135. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-entry.module.js +0 -0
  136. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/control-relations.factory.js +0 -0
  137. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form-control.service.js +0 -0
  138. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form-node.js +0 -0
  139. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form.factory.js +0 -0
  140. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/form.js +0 -0
  141. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/hiders-disablers.factory.js +0 -0
  142. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/question.factory.js +0 -0
  143. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/show-messages.factory.js +0 -0
  144. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-factory/validation.factory.js +0 -0
  145. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/form-renderer/form-renderer.component.css.js +0 -0
  146. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/historical-expression-helper-service.js +0 -0
  147. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/historical-field-helper-service.js +0 -0
  148. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/helpers/js-expression-helper.js +0 -0
  149. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/checkbox.model.js +0 -0
  150. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/conditional-validation.model.js +0 -0
  151. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/date-question.js +0 -0
  152. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/date-validation.model.js +0 -0
  153. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/decimal-point-validation.model.js +0 -0
  154. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/file-upload-question.js +0 -0
  155. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/group-question.js +0 -0
  156. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/base-options.js +0 -0
  157. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/checkbox-options.js +0 -0
  158. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/data-source.js +0 -0
  159. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/date-question-options.js +0 -0
  160. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/file-upload-question-options.js +0 -0
  161. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/group-question-options.js +0 -0
  162. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/multi-select-options.js +0 -0
  163. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/nested-questions.js +0 -0
  164. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/repeating-question-options.js +0 -0
  165. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/select-option.js +0 -0
  166. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/select-question-options.js +0 -0
  167. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/test-order-question-options.js +0 -0
  168. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/text-area-question-options.js +0 -0
  169. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/text-question-options.js +0 -0
  170. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/time-question-options.js +0 -0
  171. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/interfaces/ui-select-question-options.js +0 -0
  172. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/js-expression-validation.model.js +0 -0
  173. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/max-validation.model.js +0 -0
  174. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/min-validation.model.js +0 -0
  175. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/models.js +0 -0
  176. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/multi-select-question.js +0 -0
  177. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/pair.model.js +0 -0
  178. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/question-base.js +0 -0
  179. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/rendering-type.js +0 -0
  180. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/repeating-question.js +0 -0
  181. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/select-option.js +0 -0
  182. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/select-question.js +0 -0
  183. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/test-order-question.js +0 -0
  184. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/text-area-input-question.js +0 -0
  185. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/text-input-question.js +0 -0
  186. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/time-question.js +0 -0
  187. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/ui-select-question.js +0 -0
  188. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/question-models/validation.model.js +0 -0
  189. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/debug-mode.service.js +0 -0
  190. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/form-errors.service.js +0 -0
  191. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/form-schema-compiler.service.js +0 -0
  192. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/services/historical-encounter-data.service.js +0 -0
  193. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/utils/messages.js +0 -0
  194. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/conditional-answered.validator.js +0 -0
  195. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/conditional-required.validator.js +0 -0
  196. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/date.validator.js +0 -0
  197. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/future-date-restriction.validator.js +0 -0
  198. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/js-expression.validator.js +0 -0
  199. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/max-date.validator.js +0 -0
  200. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/max.validator.js +0 -0
  201. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/min-date.validator.js +0 -0
  202. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/min.validator.js +0 -0
  203. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/required.validator.js +0 -0
  204. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/validators/validations.js +0 -0
  205. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/encounter.adapter.js +0 -0
  206. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/obs-adapter-helper.js +0 -0
  207. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/obs.adapter.js +0 -0
  208. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/order.adapter.js +0 -0
  209. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/person-attribute.adapter.js +0 -0
  210. /package/{esm2015 → dist/ngx-formentry/esm2015}/form-entry/value-adapters/value.adapter.js +0 -0
  211. /package/{esm2015 → dist/ngx-formentry/esm2015}/public_api.js +0 -0
  212. /package/{esm2015 → dist/ngx-formentry/esm2015}/shared.module.js +0 -0
  213. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-control-type.js +0 -0
  214. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-array.js +0 -0
  215. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-control.js +0 -0
  216. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/afe-form-group.js +0 -0
  217. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/control-extensions.js +0 -0
  218. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/index.js +0 -0
  219. /package/{esm5 → dist/ngx-formentry/esm5}/abstract-controls-extension/value-change.listener.js +0 -0
  220. /package/{esm5 → dist/ngx-formentry/esm5}/ampath-kenya-ngx-openmrs-formentry.js +0 -0
  221. /package/{esm5 → dist/ngx-formentry/esm5}/change-tracking/control-relation.js +0 -0
  222. /package/{esm5 → dist/ngx-formentry/esm5}/change-tracking/control-relations.js +0 -0
  223. /package/{esm5 → dist/ngx-formentry/esm5}/components/afe-ng-select.component.js +0 -0
  224. /package/{esm5 → dist/ngx-formentry/esm5}/components/appointments-overview/appointments-overview.component.js +0 -0
  225. /package/{esm5 → dist/ngx-formentry/esm5}/components/check-box/checkbox.component.js +0 -0
  226. /package/{esm5 → dist/ngx-formentry/esm5}/components/check-box/checkbox.module.js +0 -0
  227. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-picker/date-picker.component.js +0 -0
  228. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-time-picker.component.js +0 -0
  229. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/date-time-picker.module.js +0 -0
  230. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/picker-modal/modal.component.js +0 -0
  231. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/pipes/moment.pipe.js +0 -0
  232. /package/{esm5 → dist/ngx-formentry/esm5}/components/date-time-picker/time-picker/time-picker.component.js +0 -0
  233. /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/file-upload.component.js +0 -0
  234. /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/file-upload.module.js +0 -0
  235. /package/{esm5 → dist/ngx-formentry/esm5}/components/file-upload/secure.pipe.js +0 -0
  236. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-date-time-picker/ngx-date-time-picker.component.js +0 -0
  237. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-date-time-picker/ngx-date-time-picker.module.js +0 -0
  238. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-time-picker/ngx-time-picker.component.js +0 -0
  239. /package/{esm5 → dist/ngx-formentry/esm5}/components/ngx-time-picker/ngx-time-picker.module.js +0 -0
  240. /package/{esm5 → dist/ngx-formentry/esm5}/components/remote-select/remote-select.component.js +0 -0
  241. /package/{esm5 → dist/ngx-formentry/esm5}/components/remote-select/remote-select.module.js +0 -0
  242. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/diacritics.js +0 -0
  243. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/option-list.js +0 -0
  244. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/option.js +0 -0
  245. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select-dropdown.component.js +0 -0
  246. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select-dropdown.component.style.js +0 -0
  247. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.component.js +0 -0
  248. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.component.style.js +0 -0
  249. /package/{esm5 → dist/ngx-formentry/esm5}/components/select/select.module.js +0 -0
  250. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/file-preview.component.js +0 -0
  251. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/question-control.component.js +0 -0
  252. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/display-controls/remote-answer.component.js +0 -0
  253. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-container/encounter-container.component.js +0 -0
  254. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-pdf-viewer.service.js +0 -0
  255. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-view/encounter-viewer.component.js +0 -0
  256. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-viewer.module.js +0 -0
  257. /package/{esm5 → dist/ngx-formentry/esm5}/encounter-viewer/encounter-viewer.service.js +0 -0
  258. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-alerts/alert-helpers.js +0 -0
  259. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-alerts/can-generate-alert.js +0 -0
  260. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-calculators/can-calculate.js +0 -0
  261. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/can-disable.js +0 -0
  262. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/can-hide.js +0 -0
  263. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/disabler-helper.js +0 -0
  264. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/control-hiders-disablers/hider-helpers.js +0 -0
  265. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/data-sources/data-sources.js +0 -0
  266. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/data-sources/dummy-data-source.js +0 -0
  267. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/directives/historical-value-directive.js +0 -0
  268. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/error-renderer/error-renderer.component.js +0 -0
  269. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/expression-runner/expression-runner.js +0 -0
  270. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-entry.module.js +0 -0
  271. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/control-relations.factory.js +0 -0
  272. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form-control.service.js +0 -0
  273. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form-node.js +0 -0
  274. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form.factory.js +0 -0
  275. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/form.js +0 -0
  276. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/hiders-disablers.factory.js +0 -0
  277. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/question.factory.js +0 -0
  278. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/show-messages.factory.js +0 -0
  279. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-factory/validation.factory.js +0 -0
  280. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/form-renderer/form-renderer.component.css.js +0 -0
  281. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/historical-expression-helper-service.js +0 -0
  282. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/historical-field-helper-service.js +0 -0
  283. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/helpers/js-expression-helper.js +0 -0
  284. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/checkbox.model.js +0 -0
  285. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/conditional-validation.model.js +0 -0
  286. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/date-question.js +0 -0
  287. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/date-validation.model.js +0 -0
  288. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/decimal-point-validation.model.js +0 -0
  289. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/file-upload-question.js +0 -0
  290. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/group-question.js +0 -0
  291. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/base-options.js +0 -0
  292. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/checkbox-options.js +0 -0
  293. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/data-source.js +0 -0
  294. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/date-question-options.js +0 -0
  295. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/file-upload-question-options.js +0 -0
  296. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/group-question-options.js +0 -0
  297. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/multi-select-options.js +0 -0
  298. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/nested-questions.js +0 -0
  299. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/repeating-question-options.js +0 -0
  300. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/select-option.js +0 -0
  301. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/select-question-options.js +0 -0
  302. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/test-order-question-options.js +0 -0
  303. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/text-area-question-options.js +0 -0
  304. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/text-question-options.js +0 -0
  305. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/time-question-options.js +0 -0
  306. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/interfaces/ui-select-question-options.js +0 -0
  307. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/js-expression-validation.model.js +0 -0
  308. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/max-validation.model.js +0 -0
  309. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/min-validation.model.js +0 -0
  310. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/models.js +0 -0
  311. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/multi-select-question.js +0 -0
  312. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/pair.model.js +0 -0
  313. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/question-base.js +0 -0
  314. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/rendering-type.js +0 -0
  315. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/repeating-question.js +0 -0
  316. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/select-option.js +0 -0
  317. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/select-question.js +0 -0
  318. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/test-order-question.js +0 -0
  319. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/text-area-input-question.js +0 -0
  320. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/text-input-question.js +0 -0
  321. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/time-question.js +0 -0
  322. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/ui-select-question.js +0 -0
  323. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/question-models/validation.model.js +0 -0
  324. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/debug-mode.service.js +0 -0
  325. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/form-errors.service.js +0 -0
  326. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/form-schema-compiler.service.js +0 -0
  327. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/services/historical-encounter-data.service.js +0 -0
  328. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/utils/messages.js +0 -0
  329. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/conditional-answered.validator.js +0 -0
  330. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/conditional-required.validator.js +0 -0
  331. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/date.validator.js +0 -0
  332. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/future-date-restriction.validator.js +0 -0
  333. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/js-expression.validator.js +0 -0
  334. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/max-date.validator.js +0 -0
  335. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/max.validator.js +0 -0
  336. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/min-date.validator.js +0 -0
  337. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/min.validator.js +0 -0
  338. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/required.validator.js +0 -0
  339. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/validators/validations.js +0 -0
  340. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/encounter.adapter.js +0 -0
  341. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/obs-adapter-helper.js +0 -0
  342. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/obs.adapter.js +0 -0
  343. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/order.adapter.js +0 -0
  344. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/person-attribute.adapter.js +0 -0
  345. /package/{esm5 → dist/ngx-formentry/esm5}/form-entry/value-adapters/value.adapter.js +0 -0
  346. /package/{esm5 → dist/ngx-formentry/esm5}/public_api.js +0 -0
  347. /package/{esm5 → dist/ngx-formentry/esm5}/shared.module.js +0 -0
  348. /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/alert-helpers.d.ts +0 -0
  349. /package/{form-entry → dist/ngx-formentry/form-entry}/control-alerts/can-generate-alert.d.ts +0 -0
  350. /package/{form-entry → dist/ngx-formentry/form-entry}/control-calculators/can-calculate.d.ts +0 -0
  351. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-disable.d.ts +0 -0
  352. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/can-hide.d.ts +0 -0
  353. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/disabler-helper.d.ts +0 -0
  354. /package/{form-entry → dist/ngx-formentry/form-entry}/control-hiders-disablers/hider-helpers.d.ts +0 -0
  355. /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/data-sources.d.ts +0 -0
  356. /package/{form-entry → dist/ngx-formentry/form-entry}/data-sources/dummy-data-source.d.ts +0 -0
  357. /package/{form-entry → dist/ngx-formentry/form-entry}/directives/historical-value-directive.d.ts +0 -0
  358. /package/{form-entry → dist/ngx-formentry/form-entry}/error-renderer/error-renderer.component.d.ts +0 -0
  359. /package/{form-entry → dist/ngx-formentry/form-entry}/expression-runner/expression-runner.d.ts +0 -0
  360. /package/{form-entry → dist/ngx-formentry/form-entry}/form-entry.module.d.ts +0 -0
  361. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/control-relations.factory.d.ts +0 -0
  362. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-control.service.d.ts +0 -0
  363. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form-node.d.ts +0 -0
  364. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.d.ts +0 -0
  365. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/form.factory.d.ts +0 -0
  366. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/hiders-disablers.factory.d.ts +0 -0
  367. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/question.factory.d.ts +0 -0
  368. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/show-messages.factory.d.ts +0 -0
  369. /package/{form-entry → dist/ngx-formentry/form-entry}/form-factory/validation.factory.d.ts +0 -0
  370. /package/{form-entry → dist/ngx-formentry/form-entry}/form-renderer/form-renderer.component.css.d.ts +0 -0
  371. /package/{form-entry → dist/ngx-formentry/form-entry}/form-renderer/form-renderer.component.d.ts +0 -0
  372. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-expression-helper-service.d.ts +0 -0
  373. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/historical-field-helper-service.d.ts +0 -0
  374. /package/{form-entry → dist/ngx-formentry/form-entry}/helpers/js-expression-helper.d.ts +0 -0
  375. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/checkbox.model.d.ts +0 -0
  376. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/conditional-validation.model.d.ts +0 -0
  377. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-question.d.ts +0 -0
  378. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/date-validation.model.d.ts +0 -0
  379. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/decimal-point-validation.model.d.ts +0 -0
  380. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/file-upload-question.d.ts +0 -0
  381. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/group-question.d.ts +0 -0
  382. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/base-options.d.ts +0 -0
  383. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/checkbox-options.d.ts +0 -0
  384. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/data-source.d.ts +0 -0
  385. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/date-question-options.d.ts +0 -0
  386. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/file-upload-question-options.d.ts +0 -0
  387. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/group-question-options.d.ts +0 -0
  388. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/multi-select-options.d.ts +0 -0
  389. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/nested-questions.d.ts +0 -0
  390. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/repeating-question-options.d.ts +0 -0
  391. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-option.d.ts +0 -0
  392. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/select-question-options.d.ts +0 -0
  393. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/test-order-question-options.d.ts +0 -0
  394. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-area-question-options.d.ts +0 -0
  395. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/text-question-options.d.ts +0 -0
  396. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/time-question-options.d.ts +0 -0
  397. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/interfaces/ui-select-question-options.d.ts +0 -0
  398. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/js-expression-validation.model.d.ts +0 -0
  399. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/max-validation.model.d.ts +0 -0
  400. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/min-validation.model.d.ts +0 -0
  401. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/models.d.ts +0 -0
  402. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/multi-select-question.d.ts +0 -0
  403. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/pair.model.d.ts +0 -0
  404. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/question-base.d.ts +0 -0
  405. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/rendering-type.d.ts +0 -0
  406. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/repeating-question.d.ts +0 -0
  407. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-option.d.ts +0 -0
  408. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/select-question.d.ts +0 -0
  409. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/test-order-question.d.ts +0 -0
  410. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-area-input-question.d.ts +0 -0
  411. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/text-input-question.d.ts +0 -0
  412. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/time-question.d.ts +0 -0
  413. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/ui-select-question.d.ts +0 -0
  414. /package/{form-entry → dist/ngx-formentry/form-entry}/question-models/validation.model.d.ts +0 -0
  415. /package/{form-entry → dist/ngx-formentry/form-entry}/services/debug-mode.service.d.ts +0 -0
  416. /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-errors.service.d.ts +0 -0
  417. /package/{form-entry → dist/ngx-formentry/form-entry}/services/form-schema-compiler.service.d.ts +0 -0
  418. /package/{form-entry → dist/ngx-formentry/form-entry}/services/historical-encounter-data.service.d.ts +0 -0
  419. /package/{form-entry → dist/ngx-formentry/form-entry}/utils/messages.d.ts +0 -0
  420. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-answered.validator.d.ts +0 -0
  421. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/conditional-required.validator.d.ts +0 -0
  422. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/date.validator.d.ts +0 -0
  423. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/future-date-restriction.validator.d.ts +0 -0
  424. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/js-expression.validator.d.ts +0 -0
  425. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max-date.validator.d.ts +0 -0
  426. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/max.validator.d.ts +0 -0
  427. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min-date.validator.d.ts +0 -0
  428. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/min.validator.d.ts +0 -0
  429. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/required.validator.d.ts +0 -0
  430. /package/{form-entry → dist/ngx-formentry/form-entry}/validators/validations.d.ts +0 -0
  431. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/encounter.adapter.d.ts +0 -0
  432. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs-adapter-helper.d.ts +0 -0
  433. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/obs.adapter.d.ts +0 -0
  434. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/order.adapter.d.ts +0 -0
  435. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/person-attribute.adapter.d.ts +0 -0
  436. /package/{form-entry → dist/ngx-formentry/form-entry}/value-adapters/value.adapter.d.ts +0 -0
  437. /package/{public_api.d.ts → dist/ngx-formentry/public_api.d.ts} +0 -0
  438. /package/{shared.module.d.ts → dist/ngx-formentry/shared.module.d.ts} +0 -0
@@ -1,215 +0,0 @@
1
- import { Component, Input, Inject } from '@angular/core';
2
- import 'hammerjs';
3
- import { DEFAULT_STYLES } from './form-renderer.component.css';
4
- import { DOCUMENT } from '@angular/common';
5
- import { DataSources } from '../data-sources/data-sources';
6
- import { NodeBase, GroupNode } from '../form-factory/form-node';
7
- import { AfeFormGroup } from '../../abstract-controls-extension/afe-form-group';
8
- import { ValidationFactory } from '../form-factory/validation.factory';
9
- import { FormErrorsService } from '../services/form-errors.service';
10
- // import { concat, of, Observable, Subject, BehaviorSubject } from 'rxjs';
11
- // import * as _ from 'lodash';
12
- // import { debounceTime, distinctUntilChanged, tap, switchMap, catchError, map } from 'rxjs/operators';
13
- // import { QuestionBase } from '../question-models';
14
- var FormRendererComponent = /** @class */ (function () {
15
- // items$: Observable<any[]>;
16
- // itemsLoading = false;
17
- // itemsInput$ = new Subject<string>();
18
- function FormRendererComponent(validationFactory, dataSources, formErrorsService, document) {
19
- this.validationFactory = validationFactory;
20
- this.dataSources = dataSources;
21
- this.formErrorsService = formErrorsService;
22
- this.document = document;
23
- this.childComponents = [];
24
- this.isCollapsed = false;
25
- this.activeTab = 0;
26
- }
27
- FormRendererComponent.prototype.ngOnInit = function () {
28
- var _this = this;
29
- this.setUpRemoteSelect();
30
- this.setUpFileUpload();
31
- this.setUpDatepickerHolidays();
32
- if (this.node && this.node.form) {
33
- var tab = this.node.form.valueProcessingInfo.lastFormTab;
34
- if (tab && tab !== this.activeTab) {
35
- this.activeTab = tab;
36
- }
37
- }
38
- if (this.node && this.node.question.renderingType === 'form') {
39
- this.formErrorsService.announceErrorField$.subscribe(function (error) {
40
- _this.scrollToControl(error);
41
- });
42
- }
43
- if (this.node && this.node.question.renderingType === 'section') {
44
- this.isCollapsed = !this.node.question.isExpanded;
45
- }
46
- if (this.parentComponent) {
47
- this.parentComponent.addChildComponent(this);
48
- }
49
- };
50
- FormRendererComponent.prototype.addChildComponent = function (child) {
51
- this.childComponents.push(child);
52
- };
53
- FormRendererComponent.prototype.setUpRemoteSelect = function () {
54
- if (this.node &&
55
- this.node.question.extras &&
56
- this.node.question.renderingType === 'remote-select') {
57
- // let selectQuestion = this.node.form.searchNodeByQuestionId(this.node.question.key)[0];
58
- this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
59
- /*
60
- let defaltValues = of([]);
61
- if (this.dataSource.resolveSelectedValue(selectQuestion.control.value)) {
62
- defaltValues = this.dataSource.resolveSelectedValue(selectQuestion.control.value).pipe(
63
- catchError(() => of([])), // empty list on error
64
- );
65
- }
66
- this.items$ = concat(
67
- defaltValues,
68
- this.itemsInput$.pipe(
69
- debounceTime(200),
70
- distinctUntilChanged(),
71
- tap(() => this.itemsLoading = true),
72
- switchMap(term => this.dataSource.searchOptions(term).pipe(
73
- catchError(() => of([])), // empty list on error
74
- tap(() => {
75
- this.itemsLoading = false
76
- })
77
- ))
78
- )
79
- );
80
- */
81
- if (this.dataSource && this.node.question.dataSourceOptions) {
82
- this.dataSource.dataSourceOptions = this.node.question.dataSourceOptions;
83
- }
84
- }
85
- };
86
- FormRendererComponent.prototype.setUpFileUpload = function () {
87
- if (this.node &&
88
- this.node.question.extras &&
89
- this.node.question.renderingType === 'file') {
90
- this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
91
- // console.log('Key', this.node.question);
92
- // console.log('Data source', this.dataSource);
93
- }
94
- };
95
- FormRendererComponent.prototype.setUpDatepickerHolidays = function () {
96
- this.dataSource = this.dataSources.dataSources[this.node.question.dataSource];
97
- };
98
- FormRendererComponent.prototype.checkSection = function (node) {
99
- if (node.question.renderingType === 'section') {
100
- var groupChildrenHidden_1 = false;
101
- var allSectionControlsHidden = Object.keys(node.children).every(function (k) {
102
- var innerNode = node.children[k];
103
- if (innerNode instanceof GroupNode) {
104
- groupChildrenHidden_1 = Object.keys(innerNode.children).every(function (i) { return innerNode.children[i].control.hidden; });
105
- }
106
- return node.children[k].control.hidden || groupChildrenHidden_1;
107
- });
108
- return !allSectionControlsHidden;
109
- }
110
- return true;
111
- };
112
- FormRendererComponent.prototype.clickTab = function (tabNumber) {
113
- this.activeTab = tabNumber;
114
- };
115
- FormRendererComponent.prototype.loadPreviousTab = function () {
116
- if (!this.isCurrentTabFirst()) {
117
- this.clickTab(this.activeTab - 1);
118
- document.body.scrollTop = 0;
119
- }
120
- };
121
- FormRendererComponent.prototype.isCurrentTabFirst = function () {
122
- return this.activeTab === 0;
123
- };
124
- FormRendererComponent.prototype.isCurrentTabLast = function () {
125
- return this.activeTab === this.node.question['questions'].length - 1;
126
- };
127
- FormRendererComponent.prototype.loadNextTab = function () {
128
- if (!this.isCurrentTabLast()) {
129
- this.clickTab(this.activeTab + 1);
130
- document.body.scrollTop = 0;
131
- }
132
- };
133
- FormRendererComponent.prototype.tabSelected = function ($event) {
134
- this.activeTab = $event;
135
- this.setPreviousTab();
136
- };
137
- FormRendererComponent.prototype.setPreviousTab = function () {
138
- if (this.node && this.node.form) {
139
- this.node.form.valueProcessingInfo['lastFormTab'] = this.activeTab;
140
- }
141
- };
142
- FormRendererComponent.prototype.hasErrors = function () {
143
- return this.node.control.touched && !this.node.control.valid;
144
- };
145
- FormRendererComponent.prototype.errors = function () {
146
- return this.getErrors(this.node);
147
- };
148
- FormRendererComponent.prototype.scrollToControl = function (error) {
149
- var _this = this;
150
- var tab = +error.split(',')[0];
151
- var elSelector = error.split(',')[1] + 'id';
152
- // the tab components
153
- var tabComponent = this.childComponents[tab];
154
- this.clickTab(tab);
155
- setTimeout(function () {
156
- // expand all sections
157
- tabComponent.childComponents.forEach(function (section) {
158
- section.isCollapsed = false;
159
- setTimeout(function () {
160
- var element = _this.document.getElementById(elSelector);
161
- if (element !== null && element.focus) {
162
- element.focus();
163
- element.scrollIntoView({ behavior: 'smooth', block: 'center' });
164
- }
165
- }, 100);
166
- });
167
- }, 200);
168
- };
169
- FormRendererComponent.prototype.onDateChanged = function (node) {
170
- // console.log('Node', node);
171
- this.node = node;
172
- };
173
- FormRendererComponent.prototype.upload = function (event) {
174
- // console.log('Event', event);
175
- // console.log('Data', this.dataSource);
176
- };
177
- FormRendererComponent.prototype.toggleInformation = function (infoId) {
178
- var e = document.getElementById(infoId);
179
- if (e.style.display === 'block') {
180
- e.style.display = 'none';
181
- }
182
- else {
183
- e.style.display = 'block';
184
- }
185
- console.log('InfoId', infoId);
186
- };
187
- FormRendererComponent.prototype.getErrors = function (node) {
188
- var errors = node.control.errors;
189
- if (errors) {
190
- return this.validationFactory.errors(errors, node.question);
191
- }
192
- return [];
193
- };
194
- FormRendererComponent.decorators = [
195
- { type: Component, args: [{
196
- selector: 'form-renderer',
197
- template: "<!--CONTAINERS-->\n<div *ngIf=\"node.question.renderingType === 'form'\">\n <div class=\"dropdown dropdown-tabs forms-dropdown\">\n <a class=\"btn dropdown-toggle\" data-toggle=\"dropdown\">\n <i class=\"fa fa-angle-double-down\"></i>\n </a>\n <ul\n class=\"dropdown-menu dropdown-menu-right forms-dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"dropdownMenu\"\n >\n <li\n *ngFor=\"let question of node.question.questions; let i = index\"\n (click)=\"clickTab(i)\"\n >\n {{ question.label }}\n </li>\n </ul>\n </div>\n <mat-tab-group\n (selectedIndexChange)=\"tabSelected($event)\"\n [selectedIndex]=\"activeTab\"\n >\n <mat-tab\n [label]=\"question.label\"\n *ngFor=\"let question of node.question.questions; let i = index\"\n >\n <div (swipeLeft)=\"loadNextTab()\" (swipeRight)=\"loadPreviousTab()\">\n <form-renderer\n [node]=\"node.children[question.key]\"\n [parentComponent]=\"this\"\n [parentGroup]=\"node.control\"\n ></form-renderer>\n </div>\n </mat-tab>\n </mat-tab-group>\n\n <div style=\"text-align: center\">\n <button\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"loadPreviousTab()\"\n [ngClass]=\"{ disabled: isCurrentTabFirst() }\"\n >\n &lt;&lt;\n </button>\n <button\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"loadNextTab()\"\n [ngClass]=\"{ disabled: isCurrentTabLast() }\"\n >\n &gt;&gt;\n </button>\n </div>\n</div>\n<div *ngIf=\"node.question.renderingType === 'page'\">\n <!--<h2>{{node.question.label}}</h2>-->\n <form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"parentGroup\"\n ></form-renderer>\n</div>\n<div *ngIf=\"node.question.renderingType === 'section' && checkSection(node)\">\n <div class=\"panel panel-primary\">\n <div class=\"panel-heading\">\n <button\n type=\"button\"\n class=\"btn btn-primary pull-right\"\n (click)=\"isCollapsed = !isCollapsed\"\n >\n {{ isCollapsed ? 'Show' : 'Hide' }}\n </button>\n {{ node.question.label }}\n </div>\n <div class=\"panel-body\" [collapse]=\"isCollapsed\">\n <form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"parentGroup\"\n ></form-renderer>\n </div>\n </div>\n</div>\n\n<!-- MESSAGES -->\n<div\n *ngIf=\"node.control && node.control.alert && node.control.alert !== ''\"\n class=\"alert alert-warning\"\n>\n <a class=\"close\" data-dismiss=\"alert\">&times;</a> {{ node.control.alert }}\n</div>\n\n<!--CONTROLS-->\n\n<div\n *ngIf=\"node.question.controlType === 0\"\n class=\"form-group\"\n [formGroup]=\"parentGroup\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <!--LEAF CONTROL-->\n <div class=\"question-area\">\n <a\n class=\"form-tooltip pull-right\"\n (click)=\"toggleInformation(node.question.extras.id)\"\n data-placement=\"right\"\n *ngIf=\"\n node.question &&\n node.question.extras.questionInfo &&\n node.question.extras.questionInfo !== '' &&\n node.question.extras.questionInfo !== ' '\n \"\n >\n <i class=\"glyphicon glyphicon-question-sign\" aria-hidden=\"true\"></i>\n </a>\n\n <label\n *ngIf=\"node.question.label\"\n [style.color]=\"hasErrors() ? 'red' : ''\"\n class=\"control-label\"\n [attr.for]=\"node.question.key\"\n >\n {{ node.question.required ? '*' : '' }} {{ node.question.label }}\n </label>\n <div [ngSwitch]=\"node.question.renderingType\">\n <select\n class=\"form-control\"\n *ngSwitchCase=\"'select'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n >\n <option *ngFor=\"let o of node.question.options\" [ngValue]=\"o.value\">\n {{ o.label }}\n </option>\n </select>\n\n <app-file-upload\n *ngSwitchCase=\"'file'\"\n [dataSource]=\"dataSource\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n (fileChanged)=\"upload($event)\"\n >\n </app-file-upload>\n <textarea\n [placeholder]=\"node.question.placeholder\"\n [rows]=\"node.question.rows\"\n class=\"form-control\"\n *ngSwitchCase=\"'textarea'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n >\n </textarea>\n <!--\n <ng-select *ngSwitchCase=\"'remote-select'\" [items]=\"items$ | async\" bindLabel=\"label\" bindValue=\"value\" placeholder=\"{{node.question.placeholder}}\"\n [hideSelected]=\"true\" [loading]=\"itemsLoading\" [typeahead]=\"itemsInput$\" [formControlName]=\"node.question.key\" [id]=\"node.question.key + 'id'\">\n </ng-select>\n -->\n <remote-select\n *ngSwitchCase=\"'remote-select'\"\n [placeholder]=\"node.question.placeholder\"\n tabindex=\"0\"\n [dataSource]=\"dataSource\"\n [componentID]=\"node.question.key + 'id'\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n ></remote-select>\n <!-- \n <date-time-picker *ngSwitchCase=\"'date'\" [showTime]=\"node.question.showTime\" tabindex=\"0\" [weeks]='node.question.extras.questionOptions.weeksList'\n (onDateChange)=\"onDateChanged(node)\" [showWeeks]=\"node.question.showWeeksAdder\" [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"></date-time-picker>\n -->\n\n <ngx-date-time-picker\n *ngSwitchCase=\"'date'\"\n [showTime]=\"node.question.showTime\"\n [id]=\"node.question.key + 'id'\"\n [formControlName]=\"node.question.key\"\n [weeks]=\"node.question.extras.questionOptions.weeksList\"\n (onDateChange)=\"onDateChanged(node)\"\n [showWeeks]=\"node.question.showWeeksAdder\"\n [showHolidays]=\"node.question.showHolidays\"\n [dataSource]=\"dataSource\"\n ></ngx-date-time-picker>\n <ngx-time-picker \n *ngSwitchCase=\"'time'\" \n id=\"node.question.key + 'id'\" \n [formControlName]=\"node.question.key\"\n ></ngx-time-picker>\n <ng-select\n *ngSwitchCase=\"'multi-select'\"\n [style.height]=\"'auto'\"\n [style.overflow-x]=\"'hidden'\"\n tabindex=\"0\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n [options]=\"node.question.options\"\n [multiple]=\"true\"\n >\n </ng-select>\n <ng-select\n *ngSwitchCase=\"'single-select'\"\n [style.height]=\"auto\"\n tabindex=\"0\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n [options]=\"node.question.options\"\n [multiple]=\"false\"\n >\n </ng-select>\n <input\n class=\"form-control\"\n *ngSwitchCase=\"'number'\"\n [formControlName]=\"node.question.key\"\n [attr.placeholder]=\"node.question.placeholder\"\n [type]=\"'number'\"\n [id]=\"node.question.key + 'id'\"\n [step]=\"'any'\"\n [min]=\"node.question.extras.questionOptions.min\"\n [max]=\"node.question.extras.questionOptions.max\"\n />\n <input\n class=\"form-control\"\n *ngSwitchCase=\"'decimal'\"\n [formControlName]=\"node.question.key\"\n [attr.placeholder]=\"node.question.placeholder\"\n [type]=\"'text'\"\n [id]=\"node.question.key + 'id'\"\n [min]=\"node.question.extras.questionOptions.min\"\n [max]=\"node.question.extras.questionOptions.max\"\n />\n <input\n class=\"form-control\"\n *ngSwitchDefault\n [formControlName]=\"node.question.key\"\n [attr.placeholder]=\"node.question.placeholder\"\n [type]=\"node.question.renderingType\"\n [id]=\"node.question.key + 'id'\"\n />\n\n <div *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let o of node.question.options\">\n <label class=\"form-control no-border\">\n <input\n type=\"radio\"\n [formControlName]=\"node.question.key\"\n [id]=\"node.question.key + 'id'\"\n [value]=\"o.value\"\n />\n {{ o.label }}\n </label>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'checkbox'\">\n <checkbox\n [id]=\"node.question.key + 'id'\"\n [formControlName]=\"node.question.key\"\n [options]=\"node.question.options\"\n [selected]=\"node.control.value\"\n ></checkbox>\n </div>\n\n <div\n *ngIf=\"\n node.question.enableHistoricalValue && node.question.historicalDisplay\n \"\n style=\"margin-top: 2px\"\n >\n <div class=\"container-fluid\">\n <div class=\"row\">\n <div class=\"col-xs-9\">\n <span class=\"text-warning\">Previous Value: </span>\n <strong>{{ node.question.historicalDisplay?.text }}</strong>\n <span *ngIf=\"node.question.showHistoricalValueDate\">\n <span> | </span>\n <strong class=\"text-primary\"\n >{{ node.question.historicalDisplay?._date }}\n </strong>\n <span\n class=\"text-primary\"\n *ngIf=\"\n node.question.historicalDisplay &&\n node.question.historicalDisplay._date\n \"\n >\n ({{ node.question.historicalDisplay._date | timeAgo }})</span\n >\n </span>\n </div>\n <button\n type=\"button\"\n [node]=\"node\"\n [name]=\"'historyValue'\"\n class=\"btn btn-primary btn-small col-xs-3\"\n >\n Use Value\n </button>\n </div>\n </div>\n </div>\n <appointments-overview [node]=\"node\"></appointments-overview>\n <div *ngIf=\"hasErrors()\">\n <p *ngFor=\"let e of errors()\">\n <span class=\"text-danger\">{{ e }}</span>\n </p>\n </div>\n </div>\n\n <div\n class=\"question-info col-md-12 col-lg-12 col-sm-12\"\n id=\"{{ node.question.extras.id }}\"\n *ngIf=\"\n node.question &&\n node.question.extras.questionInfo &&\n node.question.extras.questionInfo !== '' &&\n node.question.extras.questionInfo !== ' '\n \"\n >\n {{ node.question.extras.questionInfo }}\n </div>\n </div>\n</div>\n<div\n *ngIf=\"node.question.controlType === 1\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <!--ARRAY CONTROL-->\n <div [ngSwitch]=\"node.question.renderingType\">\n <div class=\"well\" style=\"padding: 2px\" *ngSwitchCase=\"'repeating'\">\n <h4 style=\"margin: 2px; font-weight: bold\">{{ node.question.label }}</h4>\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 2px;\n \"\n />\n <div [ngSwitch]=\"node.question.extras.type\">\n <div *ngSwitchCase=\"'testOrder'\">\n <div *ngFor=\"let child of node.children; let i = index\">\n <form-renderer\n *ngFor=\"let question of child.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"child.children[question.key]\"\n [parentGroup]=\"child.control\"\n ></form-renderer>\n <div>{{ child.orderNumber }}</div>\n <button\n type=\"button \"\n class=\"btn btn-sm btn-danger\"\n (click)=\"node.removeAt(i)\"\n >\n Remove\n </button>\n <br />\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 1px;\n \"\n />\n </div>\n </div>\n\n <div *ngSwitchCase=\"'obsGroup'\" style=\"margin-bottom: 20px\">\n <div *ngFor=\"let child of node.children; let i = index\">\n <form-renderer\n *ngFor=\"let question of child.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"child.children[question.key]\"\n [parentGroup]=\"child.control\"\n ></form-renderer>\n <button\n type=\"button \"\n class=\"btn btn-sm btn-danger\"\n (click)=\"node.removeAt(i)\"\n >\n Remove\n </button>\n <br />\n <hr\n style=\"\n margin-left: -2px;\n margin-right: -2px;\n margin-bottom: 4px;\n margin-top: 8px;\n border-width: 1px;\n \"\n />\n </div>\n </div>\n </div>\n <button\n type=\"button \"\n class=\"btn btn-primary\"\n (click)=\"node.createChildNode()\"\n >\n Add\n </button>\n </div>\n </div>\n</div>\n<div\n *ngIf=\"node.question.controlType === 2\"\n [hidden]=\"node.control.hidden\"\n [ngClass]=\"{ disabled: node.control.disabled }\"\n>\n <!--GROUP-->\n <div [ngSwitch]=\"node.question.renderingType\">\n <div *ngSwitchCase=\"'group'\">\n <form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"node.control\"\n ></form-renderer>\n </div>\n <div\n *ngSwitchCase=\"'field-set'\"\n style=\"border: 1px solid #eeeeee; padding: 2px; margin: 2px\"\n >\n <form-renderer\n *ngFor=\"let question of node.question.questions\"\n [parentComponent]=\"this\"\n [node]=\"node.children[question.key]\"\n [parentGroup]=\"node.control\"\n ></form-renderer>\n </div>\n </div>\n</div>\n",
198
- styles: ['../../style/app.css', DEFAULT_STYLES]
199
- },] },
200
- ];
201
- FormRendererComponent.ctorParameters = function () { return [
202
- { type: ValidationFactory },
203
- { type: DataSources },
204
- { type: FormErrorsService },
205
- { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
206
- ]; };
207
- FormRendererComponent.propDecorators = {
208
- parentComponent: [{ type: Input }],
209
- node: [{ type: Input }],
210
- parentGroup: [{ type: Input }]
211
- };
212
- return FormRendererComponent;
213
- }());
214
- export { FormRendererComponent };
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yZW5kZXJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW1wYXRoLWtlbnlhL25neC1vcGVubXJzLWZvcm1lbnRyeS8iLCJzb3VyY2VzIjpbImZvcm0tZW50cnkvZm9ybS1yZW5kZXJlci9mb3JtLXJlbmRlcmVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxVQUFVLENBQUM7QUFDbEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBWSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsMkVBQTJFO0FBQzNFLCtCQUErQjtBQUUvQix3R0FBd0c7QUFDeEcscURBQXFEO0FBRXJEO0lBNGNFLDZCQUE2QjtJQUM3Qix3QkFBd0I7SUFDeEIsdUNBQXVDO0lBRXZDLCtCQUNVLGlCQUFvQyxFQUNwQyxXQUF3QixFQUN4QixpQkFBb0MsRUFDbEIsUUFBYTtRQUgvQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBSztRQWpCbEMsb0JBQWUsR0FBNEIsRUFBRSxDQUFDO1FBTTlDLGdCQUFX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LE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ1osQ0FBQzs7Z0JBbnFCRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFFBQVEsRUFBRSwreGNBMGJYO29CQUNDLE1BQU0sRUFBRSxDQUFDLHFCQUFxQixFQUFFLGNBQWMsQ0FBQztpQkFDaEQ7OztnQkF4Y1EsaUJBQWlCO2dCQUhqQixXQUFXO2dCQUtYLGlCQUFpQjtnREE0ZHJCLE1BQU0sU0FBQyxRQUFROzs7a0NBcEJqQixLQUFLO3VCQUNMLEtBQUs7OEJBQ0wsS0FBSzs7SUFrT1IsNEJBQUM7Q0FBQSxBQXBxQkQsSUFvcUJDO1NBck9ZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgSW5qZWN0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgJ2hhbW1lcmpzJztcbmltcG9ydCB7IERFRkFVTFRfU1RZTEVTIH0gZnJvbSAnLi9mb3JtLXJlbmRlcmVyLmNvbXBvbmVudC5jc3MnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGF0YVNvdXJjZXMgfSBmcm9tICcuLi9kYXRhLXNvdXJjZXMvZGF0YS1zb3VyY2VzJztcbmltcG9ydCB7IE5vZGVCYXNlLCBMZWFmTm9kZSwgR3JvdXBOb2RlIH0gZnJvbSAnLi4vZm9ybS1mYWN0b3J5L2Zvcm0tbm9kZSc7XG5pbXBvcnQgeyBBZmVGb3JtR3JvdXAgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC1jb250cm9scy1leHRlbnNpb24vYWZlLWZvcm0tZ3JvdXAnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkZhY3RvcnkgfSBmcm9tICcuLi9mb3JtLWZhY3RvcnkvdmFsaWRhdGlvbi5mYWN0b3J5JztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICcuLi9xdWVzdGlvbi1tb2RlbHMvaW50ZXJmYWNlcy9kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBGb3JtRXJyb3JzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm0tZXJyb3JzLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVlc3Rpb25Hcm91cCB9IGZyb20gJy4uL3F1ZXN0aW9uLW1vZGVscy9ncm91cC1xdWVzdGlvbic7XG4vLyBpbXBvcnQgeyBjb25jYXQsIG9mLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbi8vIGltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJztcblxuLy8gaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFwLCBzd2l0Y2hNYXAsIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbi8vIGltcG9ydCB7IFF1ZXN0aW9uQmFzZSB9IGZyb20gJy4uL3F1ZXN0aW9uLW1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm0tcmVuZGVyZXInLFxuICB0ZW1wbGF0ZTogYDwhLS1DT05UQUlORVJTLS0+XG48ZGl2ICpuZ0lmPVwibm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlID09PSAnZm9ybSdcIj5cbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duIGRyb3Bkb3duLXRhYnMgZm9ybXMtZHJvcGRvd25cIj5cbiAgICA8YSBjbGFzcz1cImJ0biBkcm9wZG93bi10b2dnbGVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCI+XG4gICAgICA8aSBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvdWJsZS1kb3duXCI+PC9pPlxuICAgIDwvYT5cbiAgICA8dWxcbiAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0IGZvcm1zLWRyb3Bkb3duLW1lbnVcIlxuICAgICAgcm9sZT1cIm1lbnVcIlxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25NZW51XCJcbiAgICA+XG4gICAgICA8bGlcbiAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIG5vZGUucXVlc3Rpb24ucXVlc3Rpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgKGNsaWNrKT1cImNsaWNrVGFiKGkpXCJcbiAgICAgID5cbiAgICAgICAge3sgcXVlc3Rpb24ubGFiZWwgfX1cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG4gIDxtYXQtdGFiLWdyb3VwXG4gICAgKHNlbGVjdGVkSW5kZXhDaGFuZ2UpPVwidGFiU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgW3NlbGVjdGVkSW5kZXhdPVwiYWN0aXZlVGFiXCJcbiAgPlxuICAgIDxtYXQtdGFiXG4gICAgICBbbGFiZWxdPVwicXVlc3Rpb24ubGFiZWxcIlxuICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIG5vZGUucXVlc3Rpb24ucXVlc3Rpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICA+XG4gICAgICA8ZGl2IChzd2lwZUxlZnQpPVwibG9hZE5leHRUYWIoKVwiIChzd2lwZVJpZ2h0KT1cImxvYWRQcmV2aW91c1RhYigpXCI+XG4gICAgICAgIDxmb3JtLXJlbmRlcmVyXG4gICAgICAgICAgW25vZGVdPVwibm9kZS5jaGlsZHJlbltxdWVzdGlvbi5rZXldXCJcbiAgICAgICAgICBbcGFyZW50Q29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICAgIFtwYXJlbnRHcm91cF09XCJub2RlLmNvbnRyb2xcIlxuICAgICAgICA+PC9mb3JtLXJlbmRlcmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtdGFiPlxuICA8L21hdC10YWItZ3JvdXA+XG5cbiAgPGRpdiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgKGNsaWNrKT1cImxvYWRQcmV2aW91c1RhYigpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGlzQ3VycmVudFRhYkZpcnN0KCkgfVwiXG4gICAgPlxuICAgICAgJmx0OyZsdDtcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgIChjbGljayk9XCJsb2FkTmV4dFRhYigpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGlzQ3VycmVudFRhYkxhc3QoKSB9XCJcbiAgICA+XG4gICAgICAmZ3Q7Jmd0O1xuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cIm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ3BhZ2UnXCI+XG4gIDwhLS08aDI+e3tub2RlLnF1ZXN0aW9uLmxhYmVsfX08L2gyPi0tPlxuICA8Zm9ybS1yZW5kZXJlclxuICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBub2RlLnF1ZXN0aW9uLnF1ZXN0aW9uc1wiXG4gICAgW3BhcmVudENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICBbbm9kZV09XCJub2RlLmNoaWxkcmVuW3F1ZXN0aW9uLmtleV1cIlxuICAgIFtwYXJlbnRHcm91cF09XCJwYXJlbnRHcm91cFwiXG4gID48L2Zvcm0tcmVuZGVyZXI+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGUgPT09ICdzZWN0aW9uJyAmJiBjaGVja1NlY3Rpb24obm9kZSlcIj5cbiAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLXByaW1hcnlcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZ1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgcHVsbC1yaWdodFwiXG4gICAgICAgIChjbGljayk9XCJpc0NvbGxhcHNlZCA9ICFpc0NvbGxhcHNlZFwiXG4gICAgICA+XG4gICAgICAgIHt7IGlzQ29sbGFwc2VkID8gJ1Nob3cnIDogJ0hpZGUnIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIHt7IG5vZGUucXVlc3Rpb24ubGFiZWwgfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiIFtjb2xsYXBzZV09XCJpc0NvbGxhcHNlZFwiPlxuICAgICAgPGZvcm0tcmVuZGVyZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIG5vZGUucXVlc3Rpb24ucXVlc3Rpb25zXCJcbiAgICAgICAgW3BhcmVudENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgW25vZGVdPVwibm9kZS5jaGlsZHJlbltxdWVzdGlvbi5rZXldXCJcbiAgICAgICAgW3BhcmVudEdyb3VwXT1cInBhcmVudEdyb3VwXCJcbiAgICAgID48L2Zvcm0tcmVuZGVyZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gTUVTU0FHRVMgLS0+XG48ZGl2XG4gICpuZ0lmPVwibm9kZS5jb250cm9sICYmIG5vZGUuY29udHJvbC5hbGVydCAmJiBub2RlLmNvbnRyb2wuYWxlcnQgIT09ICcnXCJcbiAgY2xhc3M9XCJhbGVydCBhbGVydC13YXJuaW5nXCJcbj5cbiAgPGEgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cImFsZXJ0XCI+JnRpbWVzOzwvYT4ge3sgbm9kZS5jb250cm9sLmFsZXJ0IH19XG48L2Rpdj5cblxuPCEtLUNPTlRST0xTLS0+XG5cbjxkaXZcbiAgKm5nSWY9XCJub2RlLnF1ZXN0aW9uLmNvbnRyb2xUeXBlID09PSAwXCJcbiAgY2xhc3M9XCJmb3JtLWdyb3VwXCJcbiAgW2Zvcm1Hcm91cF09XCJwYXJlbnRHcm91cFwiXG4gIFtoaWRkZW5dPVwibm9kZS5jb250cm9sLmhpZGRlblwiXG4gIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IG5vZGUuY29udHJvbC5kaXNhYmxlZCB9XCJcbj5cbiAgPCEtLUxFQUYgQ09OVFJPTC0tPlxuICA8ZGl2IGNsYXNzPVwicXVlc3Rpb24tYXJlYVwiPlxuICAgIDxhXG4gICAgICBjbGFzcz1cImZvcm0tdG9vbHRpcCBwdWxsLXJpZ2h0XCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVJbmZvcm1hdGlvbihub2RlLnF1ZXN0aW9uLmV4dHJhcy5pZClcIlxuICAgICAgZGF0YS1wbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAqbmdJZj1cIlxuICAgICAgICBub2RlLnF1ZXN0aW9uICYmXG4gICAgICAgIG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uSW5mbyAmJlxuICAgICAgICBub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbkluZm8gIT09ICcnICYmXG4gICAgICAgIG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uSW5mbyAhPT0gJyAnXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1xdWVzdGlvbi1zaWduXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIDwvYT5cblxuICAgIDxsYWJlbFxuICAgICAgKm5nSWY9XCJub2RlLnF1ZXN0aW9uLmxhYmVsXCJcbiAgICAgIFtzdHlsZS5jb2xvcl09XCJoYXNFcnJvcnMoKSA/ICdyZWQnIDogJydcIlxuICAgICAgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcbiAgICAgIFthdHRyLmZvcl09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgPlxuICAgICAge3sgbm9kZS5xdWVzdGlvbi5yZXF1aXJlZCA/ICcqJyA6ICcnIH19IHt7IG5vZGUucXVlc3Rpb24ubGFiZWwgfX1cbiAgICA8L2xhYmVsPlxuICAgIDxkaXYgW25nU3dpdGNoXT1cIm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZVwiPlxuICAgICAgPHNlbGVjdFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInc2VsZWN0J1wiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgID5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbyBvZiBub2RlLnF1ZXN0aW9uLm9wdGlvbnNcIiBbbmdWYWx1ZV09XCJvLnZhbHVlXCI+XG4gICAgICAgICAge3sgby5sYWJlbCB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuXG4gICAgICA8YXBwLWZpbGUtdXBsb2FkXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInZmlsZSdcIlxuICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICAoZmlsZUNoYW5nZWQpPVwidXBsb2FkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgPC9hcHAtZmlsZS11cGxvYWQ+XG4gICAgICA8dGV4dGFyZWFcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm5vZGUucXVlc3Rpb24ucGxhY2Vob2xkZXJcIlxuICAgICAgICBbcm93c109XCJub2RlLnF1ZXN0aW9uLnJvd3NcIlxuICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCIndGV4dGFyZWEnXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgPlxuICAgICAgPC90ZXh0YXJlYT5cbiAgICAgIDwhLS1cbiAgICAgIDxuZy1zZWxlY3QgKm5nU3dpdGNoQ2FzZT1cIidyZW1vdGUtc2VsZWN0J1wiIFtpdGVtc109XCJpdGVtcyQgfCBhc3luY1wiIGJpbmRMYWJlbD1cImxhYmVsXCIgYmluZFZhbHVlPVwidmFsdWVcIiBwbGFjZWhvbGRlcj1cInt7bm9kZS5xdWVzdGlvbi5wbGFjZWhvbGRlcn19XCJcbiAgICAgICAgW2hpZGVTZWxlY3RlZF09XCJ0cnVlXCIgW2xvYWRpbmddPVwiaXRlbXNMb2FkaW5nXCIgIFt0eXBlYWhlYWRdPVwiaXRlbXNJbnB1dCRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCIgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiPlxuICAgICAgPC9uZy1zZWxlY3Q+XG4gICAgLS0+XG4gICAgICA8cmVtb3RlLXNlbGVjdFxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3JlbW90ZS1zZWxlY3QnXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIm5vZGUucXVlc3Rpb24ucGxhY2Vob2xkZXJcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcbiAgICAgICAgW2NvbXBvbmVudElEXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgID48L3JlbW90ZS1zZWxlY3Q+XG4gICAgICA8IS0tICBcbiAgICAgIDxkYXRlLXRpbWUtcGlja2VyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIiBbc2hvd1RpbWVdPVwibm9kZS5xdWVzdGlvbi5zaG93VGltZVwiIHRhYmluZGV4PVwiMFwiIFt3ZWVrc109J25vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy53ZWVrc0xpc3QnXG4gICAgICAgIChvbkRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlZChub2RlKVwiIFtzaG93V2Vla3NdPVwibm9kZS5xdWVzdGlvbi5zaG93V2Vla3NBZGRlclwiIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCI+PC9kYXRlLXRpbWUtcGlja2VyPlxuICAtLT5cblxuICAgICAgPG5neC1kYXRlLXRpbWUtcGlja2VyXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIlxuICAgICAgICBbc2hvd1RpbWVdPVwibm9kZS5xdWVzdGlvbi5zaG93VGltZVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW3dlZWtzXT1cIm5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy53ZWVrc0xpc3RcIlxuICAgICAgICAob25EYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZWQobm9kZSlcIlxuICAgICAgICBbc2hvd1dlZWtzXT1cIm5vZGUucXVlc3Rpb24uc2hvd1dlZWtzQWRkZXJcIlxuICAgICAgICBbc2hvd0hvbGlkYXlzXT1cIm5vZGUucXVlc3Rpb24uc2hvd0hvbGlkYXlzXCJcbiAgICAgICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXG4gICAgICA+PC9uZ3gtZGF0ZS10aW1lLXBpY2tlcj5cbiAgICAgIDxuZ3gtdGltZS1waWNrZXIgIFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiICBcbiAgICAgIGlkPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCIgIFxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICA+PC9uZ3gtdGltZS1waWNrZXI+XG4gICAgICA8bmctc2VsZWN0XG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc2VsZWN0J1wiXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiJ2F1dG8nXCJcbiAgICAgICAgW3N0eWxlLm92ZXJmbG93LXhdPVwiJ2hpZGRlbidcIlxuICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgIFtvcHRpb25zXT1cIm5vZGUucXVlc3Rpb24ub3B0aW9uc1wiXG4gICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgID5cbiAgICAgIDwvbmctc2VsZWN0PlxuICAgICAgPG5nLXNlbGVjdFxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ3NpbmdsZS1zZWxlY3QnXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJhdXRvXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICBbb3B0aW9uc109XCJub2RlLnF1ZXN0aW9uLm9wdGlvbnNcIlxuICAgICAgICBbbXVsdGlwbGVdPVwiZmFsc2VcIlxuICAgICAgPlxuICAgICAgPC9uZy1zZWxlY3Q+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIlxuICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIm5vZGUucXVlc3Rpb24ua2V5XCJcbiAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwibm9kZS5xdWVzdGlvbi5wbGFjZWhvbGRlclwiXG4gICAgICAgIFt0eXBlXT1cIidudW1iZXInXCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAgIFtzdGVwXT1cIidhbnknXCJcbiAgICAgICAgW21pbl09XCJub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMubWluXCJcbiAgICAgICAgW21heF09XCJub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMubWF4XCJcbiAgICAgIC8+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2RlY2ltYWwnXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJub2RlLnF1ZXN0aW9uLmtleVwiXG4gICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cIm5vZGUucXVlc3Rpb24ucGxhY2Vob2xkZXJcIlxuICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgICAgW21pbl09XCJub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMubWluXCJcbiAgICAgICAgW21heF09XCJub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMubWF4XCJcbiAgICAgIC8+XG4gICAgICA8aW5wdXRcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAqbmdTd2l0Y2hEZWZhdWx0XG4gICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJub2RlLnF1ZXN0aW9uLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW3R5cGVdPVwibm9kZS5xdWVzdGlvbi5yZW5kZXJpbmdUeXBlXCJcbiAgICAgICAgW2lkXT1cIm5vZGUucXVlc3Rpb24ua2V5ICsgJ2lkJ1wiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCIncmFkaW8nXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG8gb2Ygbm9kZS5xdWVzdGlvbi5vcHRpb25zXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sIG5vLWJvcmRlclwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICAgICAgICBbaWRdPVwibm9kZS5xdWVzdGlvbi5rZXkgKyAnaWQnXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cIm8udmFsdWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHt7IG8ubGFiZWwgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInY2hlY2tib3gnXCI+XG4gICAgICAgIDxjaGVja2JveFxuICAgICAgICAgIFtpZF09XCJub2RlLnF1ZXN0aW9uLmtleSArICdpZCdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwibm9kZS5xdWVzdGlvbi5rZXlcIlxuICAgICAgICAgIFtvcHRpb25zXT1cIm5vZGUucXVlc3Rpb24ub3B0aW9uc1wiXG4gICAgICAgICAgW3NlbGVjdGVkXT1cIm5vZGUuY29udHJvbC52YWx1ZVwiXG4gICAgICAgID48L2NoZWNrYm94PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBub2RlLnF1ZXN0aW9uLmVuYWJsZUhpc3RvcmljYWxWYWx1ZSAmJiBub2RlLnF1ZXN0aW9uLmhpc3RvcmljYWxEaXNwbGF5XG4gICAgICAgIFwiXG4gICAgICAgIHN0eWxlPVwibWFyZ2luLXRvcDogMnB4XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtd2FybmluZ1wiPlByZXZpb3VzIFZhbHVlOiA8L3NwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgbm9kZS5xdWVzdGlvbi5oaXN0b3JpY2FsRGlzcGxheT8udGV4dCB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm5vZGUucXVlc3Rpb24uc2hvd0hpc3RvcmljYWxWYWx1ZURhdGVcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj4gfCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInRleHQtcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICA+e3sgbm9kZS5xdWVzdGlvbi5oaXN0b3JpY2FsRGlzcGxheT8uX2RhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5xdWVzdGlvbi5oaXN0b3JpY2FsRGlzcGxheSAmJlxuICAgICAgICAgICAgICAgICAgICBub2RlLnF1ZXN0aW9uLmhpc3RvcmljYWxEaXNwbGF5Ll9kYXRlXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICh7eyBub2RlLnF1ZXN0aW9uLmhpc3RvcmljYWxEaXNwbGF5Ll9kYXRlIHwgdGltZUFnbyB9fSk8L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidoaXN0b3J5VmFsdWUnXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtYWxsIGNvbC14cy0zXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgVXNlIFZhbHVlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhcHBvaW50bWVudHMtb3ZlcnZpZXcgW25vZGVdPVwibm9kZVwiPjwvYXBwb2ludG1lbnRzLW92ZXJ2aWV3PlxuICAgICAgPGRpdiAqbmdJZj1cImhhc0Vycm9ycygpXCI+XG4gICAgICAgIDxwICpuZ0Zvcj1cImxldCBlIG9mIGVycm9ycygpXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPnt7IGUgfX08L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJxdWVzdGlvbi1pbmZvIGNvbC1tZC0xMiBjb2wtbGctMTIgY29sLXNtLTEyXCJcbiAgICAgIGlkPVwie3sgbm9kZS5xdWVzdGlvbi5leHRyYXMuaWQgfX1cIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgbm9kZS5xdWVzdGlvbiAmJlxuICAgICAgICBub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbkluZm8gJiZcbiAgICAgICAgbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25JbmZvICE9PSAnJyAmJlxuICAgICAgICBub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbkluZm8gIT09ICcgJ1xuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyBub2RlLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbkluZm8gfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXZcbiAgKm5nSWY9XCJub2RlLnF1ZXN0aW9uLmNvbnRyb2xUeXBlID09PSAxXCJcbiAgW2hpZGRlbl09XCJub2RlLmNvbnRyb2wuaGlkZGVuXCJcbiAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogbm9kZS5jb250cm9sLmRpc2FibGVkIH1cIlxuPlxuICA8IS0tQVJSQVkgQ09OVFJPTC0tPlxuICA8ZGl2IFtuZ1N3aXRjaF09XCJub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwid2VsbFwiIHN0eWxlPVwicGFkZGluZzogMnB4XCIgKm5nU3dpdGNoQ2FzZT1cIidyZXBlYXRpbmcnXCI+XG4gICAgICA8aDQgc3R5bGU9XCJtYXJnaW46IDJweDsgZm9udC13ZWlnaHQ6IGJvbGRcIj57eyBub2RlLnF1ZXN0aW9uLmxhYmVsIH19PC9oND5cbiAgICAgIDxoclxuICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogLTJweDtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgICAgIGJvcmRlci13aWR0aDogMnB4O1xuICAgICAgICBcIlxuICAgICAgLz5cbiAgICAgIDxkaXYgW25nU3dpdGNoXT1cIm5vZGUucXVlc3Rpb24uZXh0cmFzLnR5cGVcIj5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ3Rlc3RPcmRlcidcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICA8Zm9ybS1yZW5kZXJlclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2YgY2hpbGQucXVlc3Rpb24ucXVlc3Rpb25zXCJcbiAgICAgICAgICAgICAgW3BhcmVudENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgICAgICAgW25vZGVdPVwiY2hpbGQuY2hpbGRyZW5bcXVlc3Rpb24ua2V5XVwiXG4gICAgICAgICAgICAgIFtwYXJlbnRHcm91cF09XCJjaGlsZC5jb250cm9sXCJcbiAgICAgICAgICAgID48L2Zvcm0tcmVuZGVyZXI+XG4gICAgICAgICAgICA8ZGl2Pnt7IGNoaWxkLm9yZGVyTnVtYmVyIH19PC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b24gXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kYW5nZXJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwibm9kZS5yZW1vdmVBdChpKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJlbW92ZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIDxoclxuICAgICAgICAgICAgICBzdHlsZT1cIlxuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogLTJweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgICAgICAgICAgIGJvcmRlci13aWR0aDogMXB4O1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ29ic0dyb3VwJ1wiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjBweFwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW47IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgIDxmb3JtLXJlbmRlcmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBjaGlsZC5xdWVzdGlvbi5xdWVzdGlvbnNcIlxuICAgICAgICAgICAgICBbcGFyZW50Q29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICAgICAgICBbbm9kZV09XCJjaGlsZC5jaGlsZHJlbltxdWVzdGlvbi5rZXldXCJcbiAgICAgICAgICAgICAgW3BhcmVudEdyb3VwXT1cImNoaWxkLmNvbnRyb2xcIlxuICAgICAgICAgICAgPjwvZm9ybS1yZW5kZXJlcj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvbiBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLWRhbmdlclwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJub2RlLnJlbW92ZUF0KGkpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVtb3ZlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgPGhyXG4gICAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0ycHg7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMnB4O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uIFwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgKGNsaWNrKT1cIm5vZGUuY3JlYXRlQ2hpbGROb2RlKClcIlxuICAgICAgPlxuICAgICAgICBBZGRcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdlxuICAqbmdJZj1cIm5vZGUucXVlc3Rpb24uY29udHJvbFR5cGUgPT09IDJcIlxuICBbaGlkZGVuXT1cIm5vZGUuY29udHJvbC5oaWRkZW5cIlxuICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBub2RlLmNvbnRyb2wuZGlzYWJsZWQgfVwiXG4+XG4gIDwhLS1HUk9VUC0tPlxuICA8ZGl2IFtuZ1N3aXRjaF09XCJub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGVcIj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZ3JvdXAnXCI+XG4gICAgICA8Zm9ybS1yZW5kZXJlclxuICAgICAgICAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2Ygbm9kZS5xdWVzdGlvbi5xdWVzdGlvbnNcIlxuICAgICAgICBbcGFyZW50Q29tcG9uZW50XT1cInRoaXNcIlxuICAgICAgICBbbm9kZV09XCJub2RlLmNoaWxkcmVuW3F1ZXN0aW9uLmtleV1cIlxuICAgICAgICBbcGFyZW50R3JvdXBdPVwibm9kZS5jb250cm9sXCJcbiAgICAgID48L2Zvcm0tcmVuZGVyZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIidmaWVsZC1zZXQnXCJcbiAgICAgIHN0eWxlPVwiYm9yZGVyOiAxcHggc29saWQgI2VlZWVlZTsgcGFkZGluZzogMnB4OyBtYXJnaW46IDJweFwiXG4gICAgPlxuICAgICAgPGZvcm0tcmVuZGVyZXJcbiAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIG5vZGUucXVlc3Rpb24ucXVlc3Rpb25zXCJcbiAgICAgICAgW3BhcmVudENvbXBvbmVudF09XCJ0aGlzXCJcbiAgICAgICAgW25vZGVdPVwibm9kZS5jaGlsZHJlbltxdWVzdGlvbi5rZXldXCJcbiAgICAgICAgW3BhcmVudEdyb3VwXT1cIm5vZGUuY29udHJvbFwiXG4gICAgICA+PC9mb3JtLXJlbmRlcmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuYCxcbiAgc3R5bGVzOiBbJy4uLy4uL3N0eWxlL2FwcC5jc3MnLCBERUZBVUxUX1NUWUxFU11cbn0pXG5leHBvcnQgY2xhc3MgRm9ybVJlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHVibGljIHBhcmVudENvbXBvbmVudDogRm9ybVJlbmRlcmVyQ29tcG9uZW50O1xuICBASW5wdXQoKSBwdWJsaWMgbm9kZTogTm9kZUJhc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBwYXJlbnRHcm91cDogQWZlRm9ybUdyb3VwO1xuICBwdWJsaWMgY2hpbGRDb21wb25lbnRzOiBGb3JtUmVuZGVyZXJDb21wb25lbnRbXSA9IFtdO1xuICBwdWJsaWMgc2hvd1RpbWU6IGJvb2xlYW47XG4gIHB1YmxpYyBzaG93V2Vla3M6IGJvb2xlYW47XG4gIHB1YmxpYyBzaG93SG9saWRheXM6IGJvb2xlYW47XG4gIHB1YmxpYyBhY3RpdmVUYWI6IG51bWJlcjtcbiAgcHVibGljIGRhdGFTb3VyY2U6IERhdGFTb3VyY2U7XG4gIHB1YmxpYyBpc0NvbGxhcHNlZCA9IGZhbHNlO1xuICBwdWJsaWMgYXV0bzogYW55O1xuXG4gIC8vIGl0ZW1zJDogT2JzZXJ2YWJsZTxhbnlbXT47XG4gIC8vIGl0ZW1zTG9hZGluZyA9IGZhbHNlO1xuICAvLyBpdGVtc0lucHV0JCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZhbGlkYXRpb25GYWN0b3J5OiBWYWxpZGF0aW9uRmFjdG9yeSxcbiAgICBwcml2YXRlIGRhdGFTb3VyY2VzOiBEYXRhU291cmNlcyxcbiAgICBwcml2YXRlIGZvcm1FcnJvcnNTZXJ2aWNlOiBGb3JtRXJyb3JzU2VydmljZSxcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnlcbiAgKSB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSAwO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0VXBSZW1vdGVTZWxlY3QoKTtcbiAgICB0aGlzLnNldFVwRmlsZVVwbG9hZCgpO1xuICAgIHRoaXMuc2V0VXBEYXRlcGlja2VySG9saWRheXMoKTtcblxuICAgIGlmICh0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLmZvcm0pIHtcbiAgICAgIGNvbnN0IHRhYiA9IHRoaXMubm9kZS5mb3JtLnZhbHVlUHJvY2Vzc2luZ0luZm8ubGFzdEZvcm1UYWI7XG4gICAgICBpZiAodGFiICYmIHRhYiAhPT0gdGhpcy5hY3RpdmVUYWIpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGUgPT09ICdmb3JtJykge1xuICAgICAgdGhpcy5mb3JtRXJyb3JzU2VydmljZS5hbm5vdW5jZUVycm9yRmllbGQkLnN1YnNjcmliZSgoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0NvbnRyb2woZXJyb3IpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ3NlY3Rpb24nKSB7XG4gICAgICB0aGlzLmlzQ29sbGFwc2VkID0gISh0aGlzLm5vZGUucXVlc3Rpb24gYXMgUXVlc3Rpb25Hcm91cCkuaXNFeHBhbmRlZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wYXJlbnRDb21wb25lbnQpIHtcbiAgICAgIHRoaXMucGFyZW50Q29tcG9uZW50LmFkZENoaWxkQ29tcG9uZW50KHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRDaGlsZENvbXBvbmVudChjaGlsZDogRm9ybVJlbmRlcmVyQ29tcG9uZW50KSB7XG4gICAgdGhpcy5jaGlsZENvbXBvbmVudHMucHVzaChjaGlsZCk7XG4gIH1cblxuICBwdWJsaWMgc2V0VXBSZW1vdGVTZWxlY3QoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5ub2RlICYmXG4gICAgICB0aGlzLm5vZGUucXVlc3Rpb24uZXh0cmFzICYmXG4gICAgICB0aGlzLm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ3JlbW90ZS1zZWxlY3QnXG4gICAgKSB7XG4gICAgICAvLyBsZXQgc2VsZWN0UXVlc3Rpb24gPSB0aGlzLm5vZGUuZm9ybS5zZWFyY2hOb2RlQnlRdWVzdGlvbklkKHRoaXMubm9kZS5xdWVzdGlvbi5rZXkpWzBdO1xuICAgICAgdGhpcy5kYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlcy5kYXRhU291cmNlc1tcbiAgICAgICAgdGhpcy5ub2RlLnF1ZXN0aW9uLmRhdGFTb3VyY2VcbiAgICAgIF07XG4gICAgICAvKlxuICAgICAgbGV0IGRlZmFsdFZhbHVlcyA9IG9mKFtdKTtcbiAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2UucmVzb2x2ZVNlbGVjdGVkVmFsdWUoc2VsZWN0UXVlc3Rpb24uY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgZGVmYWx0VmFsdWVzID0gdGhpcy5kYXRhU291cmNlLnJlc29sdmVTZWxlY3RlZFZhbHVlKHNlbGVjdFF1ZXN0aW9uLmNvbnRyb2wudmFsdWUpLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpLCAvLyBlbXB0eSBsaXN0IG9uIGVycm9yXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLml0ZW1zJCA9IGNvbmNhdChcbiAgICAgICAgZGVmYWx0VmFsdWVzLFxuICAgICAgICB0aGlzLml0ZW1zSW5wdXQkLnBpcGUoXG4gICAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICB0YXAoKCkgPT4gdGhpcy5pdGVtc0xvYWRpbmcgPSB0cnVlKSxcbiAgICAgICAgICBzd2l0Y2hNYXAodGVybSA9PiB0aGlzLmRhdGFTb3VyY2Uuc2VhcmNoT3B0aW9ucyh0ZXJtKS5waXBlKFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpLCAvLyBlbXB0eSBsaXN0IG9uIGVycm9yXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLml0ZW1zTG9hZGluZyA9IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICkpXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICAqL1xuICAgICAgaWYgKHRoaXMuZGF0YVNvdXJjZSAmJiB0aGlzLm5vZGUucXVlc3Rpb24uZGF0YVNvdXJjZU9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGFTb3VyY2VPcHRpb25zID0gdGhpcy5ub2RlLnF1ZXN0aW9uLmRhdGFTb3VyY2VPcHRpb25zO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRVcEZpbGVVcGxvYWQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5ub2RlICYmXG4gICAgICB0aGlzLm5vZGUucXVlc3Rpb24uZXh0cmFzICYmXG4gICAgICB0aGlzLm5vZGUucXVlc3Rpb24ucmVuZGVyaW5nVHlwZSA9PT0gJ2ZpbGUnXG4gICAgKSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UgPSB0aGlzLmRhdGFTb3VyY2VzLmRhdGFTb3VyY2VzW1xuICAgICAgICB0aGlzLm5vZGUucXVlc3Rpb24uZGF0YVNvdXJjZVxuICAgICAgXTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdLZXknLCB0aGlzLm5vZGUucXVlc3Rpb24pO1xuICAgICAgLy8gY29uc29sZS5sb2coJ0RhdGEgc291cmNlJywgdGhpcy5kYXRhU291cmNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0VXBEYXRlcGlja2VySG9saWRheXMoKSB7XG4gICAgdGhpcy5kYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlcy5kYXRhU291cmNlc1tcbiAgICAgIHRoaXMubm9kZS5xdWVzdGlvbi5kYXRhU291cmNlXG4gICAgXTtcbiAgfVxuXG4gIGNoZWNrU2VjdGlvbihub2RlOiBOb2RlQmFzZSkge1xuICAgIGlmIChub2RlLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGUgPT09ICdzZWN0aW9uJykge1xuICAgICAgbGV0IGdyb3VwQ2hpbGRyZW5IaWRkZW4gPSBmYWxzZTtcbiAgICAgIGNvbnN0IGFsbFNlY3Rpb25Db250cm9sc0hpZGRlbiA9IE9iamVjdC5rZXlzKG5vZGUuY2hpbGRyZW4pLmV2ZXJ5KChrKSA9PiB7XG4gICAgICAgIGNvbnN0IGlubmVyTm9kZSA9IG5vZGUuY2hpbGRyZW5ba107XG4gICAgICAgIGlmIChpbm5lck5vZGUgaW5zdGFuY2VvZiBHcm91cE5vZGUpIHtcbiAgICAgICAgICBncm91cENoaWxkcmVuSGlkZGVuID0gT2JqZWN0LmtleXMoaW5uZXJOb2RlLmNoaWxkcmVuKS5ldmVyeShcbiAgICAgICAgICAgIChpKSA9PiBpbm5lck5vZGUuY2hpbGRyZW5baV0uY29udHJvbC5oaWRkZW5cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlLmNoaWxkcmVuW2tdLmNvbnRyb2wuaGlkZGVuIHx8IGdyb3VwQ2hpbGRyZW5IaWRkZW47XG4gICAgICB9KTtcbiAgICAgIHJldHVybiAhYWxsU2VjdGlvbkNvbnRyb2xzSGlkZGVuO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBjbGlja1RhYih0YWJOdW1iZXIpIHtcbiAgICB0aGlzLmFjdGl2ZVRhYiA9IHRhYk51bWJlcjtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJldmlvdXNUYWIoKSB7XG4gICAgaWYgKCF0aGlzLmlzQ3VycmVudFRhYkZpcnN0KCkpIHtcbiAgICAgIHRoaXMuY2xpY2tUYWIodGhpcy5hY3RpdmVUYWIgLSAxKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNDdXJyZW50VGFiRmlyc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlVGFiID09PSAwO1xuICB9XG5cbiAgcHVibGljIGlzQ3VycmVudFRhYkxhc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlVGFiID09PSB0aGlzLm5vZGUucXVlc3Rpb25bJ3F1ZXN0aW9ucyddLmxlbmd0aCAtIDE7XG4gIH1cblxuICBwdWJsaWMgbG9hZE5leHRUYWIoKSB7XG4gICAgaWYgKCF0aGlzLmlzQ3VycmVudFRhYkxhc3QoKSkge1xuICAgICAgdGhpcy5jbGlja1RhYih0aGlzLmFjdGl2ZVRhYiArIDEpO1xuICAgICAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPSAwO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgdGFiU2VsZWN0ZWQoJGV2ZW50KSB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSAkZXZlbnQ7XG4gICAgdGhpcy5zZXRQcmV2aW91c1RhYigpO1xuICB9XG4gIHB1YmxpYyBzZXRQcmV2aW91c1RhYigpIHtcbiAgICBpZiAodGhpcy5ub2RlICYmIHRoaXMubm9kZS5mb3JtKSB7XG4gICAgICB0aGlzLm5vZGUuZm9ybS52YWx1ZVByb2Nlc3NpbmdJbmZvWydsYXN0Rm9ybVRhYiddID0gdGhpcy5hY3RpdmVUYWI7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBoYXNFcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZS5jb250cm9sLnRvdWNoZWQgJiYgIXRoaXMubm9kZS5jb250cm9sLnZhbGlkO1xuICB9XG5cbiAgcHVibGljIGVycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRFcnJvcnModGhpcy5ub2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBzY3JvbGxUb0NvbnRyb2woZXJyb3I6IHN0cmluZykge1xuICAgIGNvbnN0IHRhYjogbnVtYmVyID0gK2Vycm9yLnNwbGl0KCcsJylbMF07XG4gICAgY29uc3QgZWxTZWxlY3RvciA9IGVycm9yLnNwbGl0KCcsJylbMV0gKyAnaWQnO1xuXG4gICAgLy8gdGhlIHRhYiBjb21wb25lbnRzXG4gICAgY29uc3QgdGFiQ29tcG9uZW50OiBGb3JtUmVuZGVyZXJDb21wb25lbnQgPSB0aGlzLmNoaWxkQ29tcG9uZW50c1t0YWJdO1xuXG4gICAgdGhpcy5jbGlja1RhYih0YWIpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBleHBhbmQgYWxsIHNlY3Rpb25zXG4gICAgICB0YWJDb21wb25lbnQuY2hpbGRDb21wb25lbnRzLmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgICAgc2VjdGlvbi5pc0NvbGxhcHNlZCA9IGZhbHNlO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnQ6IGFueSA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxTZWxlY3Rvcik7XG4gICAgICAgICAgaWYgKGVsZW1lbnQgIT09IG51bGwgJiYgZWxlbWVudC5mb2N1cykge1xuICAgICAgICAgICAgZWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKTtcbiAgICAgIH0pO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBwdWJsaWMgb25EYXRlQ2hhbmdlZChub2RlOiBMZWFmTm9kZSkge1xuICAgIC8vIGNvbnNvbGUubG9nKCdOb2RlJywgbm9kZSk7XG4gICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgfVxuXG4gIHB1YmxpYyB1cGxvYWQoZXZlbnQpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnRXZlbnQnLCBldmVudCk7XG4gICAgLy8gY29uc29sZS5sb2coJ0RhdGEnLCB0aGlzLmRhdGFTb3VyY2UpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUluZm9ybWF0aW9uKGluZm9JZCkge1xuICAgIGNvbnN0IGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbmZvSWQpO1xuXG4gICAgaWYgKGUuc3R5bGUuZGlzcGxheSA9PT0gJ2Jsb2NrJykge1xuICAgICAgZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBlLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdJbmZvSWQnLCBpbmZvSWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFcnJvcnMobm9kZTogTm9kZUJhc2UpIHtcbiAgICBjb25zdCBlcnJvcnM6IGFueSA9IG5vZGUuY29udHJvbC5lcnJvcnM7XG5cbiAgICBpZiAoZXJyb3JzKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uRmFjdG9yeS5lcnJvcnMoZXJyb3JzLCBub2RlLnF1ZXN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cbn1cbiJdfQ==