ng-pli-commons 1.0.121 → 1.0.124

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 (232) hide show
  1. package/fesm2022/ng-pli-commons.mjs +745 -749
  2. package/fesm2022/ng-pli-commons.mjs.map +1 -1
  3. package/lib/components/pdf-visualizer/pdf-visualizer.component.d.ts +0 -2
  4. package/lib/components/token/token.component.d.ts +0 -1
  5. package/lib/ng-pli-commons.module.d.ts +12 -13
  6. package/lib/services/guarantee-document.service.d.ts +0 -1
  7. package/lib/services/initial-record.service.d.ts +1 -6
  8. package/lib/services/maintenance.service.d.ts +4 -0
  9. package/package.json +3 -6
  10. package/esm2022/lib/components/backoffice.commons.component.mjs +0 -40
  11. package/esm2022/lib/components/common.lists.component.mjs +0 -176
  12. package/esm2022/lib/components/configuration-token/configuration-token-subject.service.mjs +0 -23
  13. package/esm2022/lib/components/configuration-token/configuration-token.component.mjs +0 -665
  14. package/esm2022/lib/components/configuration-token/guarantee-token/guarantee-token.component.mjs +0 -103
  15. package/esm2022/lib/components/configuration-token/snapshot-token/snapshot-token.component.mjs +0 -108
  16. package/esm2022/lib/components/configuration.commons.component.mjs +0 -40
  17. package/esm2022/lib/components/dashboard.commons.component.mjs +0 -84
  18. package/esm2022/lib/components/dynamic-filter/dynamic-filter.component.mjs +0 -131
  19. package/esm2022/lib/components/excel-to-json/excel-to-json.component.mjs +0 -54
  20. package/esm2022/lib/components/frontoffice.commons.component.mjs +0 -88
  21. package/esm2022/lib/components/pdf-analyzer/pdf-analyzer.component.mjs +0 -162
  22. package/esm2022/lib/components/pdf-config/pdf-config.component.mjs +0 -170
  23. package/esm2022/lib/components/pdf-generator/pdf-generator.component.mjs +0 -207
  24. package/esm2022/lib/components/pdf-merge-visualizer/pdf-merge-visualizer.component.mjs +0 -307
  25. package/esm2022/lib/components/pdf-visualizer/pdf-visualizer.component.mjs +0 -405
  26. package/esm2022/lib/components/progress-bar/progress-bar.component.mjs +0 -92
  27. package/esm2022/lib/components/segmentation-tokens/segmentation-tokens.component.mjs +0 -199
  28. package/esm2022/lib/components/select-ppp/select-ppp.component.mjs +0 -200
  29. package/esm2022/lib/components/show-hide-columns/show-hide-columns-table.component.mjs +0 -116
  30. package/esm2022/lib/components/token/token.component.mjs +0 -1047
  31. package/esm2022/lib/components/tokens-calculator/tokens-calculator.component.mjs +0 -128
  32. package/esm2022/lib/directives/currency-colfuturo-formatter.directive.mjs +0 -47
  33. package/esm2022/lib/directives/currency-decimal-colfuturo-formatter.directive.mjs +0 -34
  34. package/esm2022/lib/ng-pli-commons.module.mjs +0 -393
  35. package/esm2022/lib/ng-pli-commons.service.mjs +0 -14
  36. package/esm2022/lib/pipes/currency-colfuturo.pipe.mjs +0 -35
  37. package/esm2022/lib/pipes/currency-decimal-colfuturo.pipe.mjs +0 -36
  38. package/esm2022/lib/pipes/currency-print-colfuturo.pipe.mjs +0 -33
  39. package/esm2022/lib/pipes/thousands.pipe.mjs +0 -60
  40. package/esm2022/lib/services/application-fill-percentage.service.mjs +0 -30
  41. package/esm2022/lib/services/application-pdf-form.service.mjs +0 -27
  42. package/esm2022/lib/services/application-tag.service.mjs +0 -56
  43. package/esm2022/lib/services/application.service.mjs +0 -253
  44. package/esm2022/lib/services/assign-task.service.mjs +0 -30
  45. package/esm2022/lib/services/authentication.service.mjs +0 -133
  46. package/esm2022/lib/services/blocked-beneficiary.service.mjs +0 -42
  47. package/esm2022/lib/services/budget-application.service.mjs +0 -265
  48. package/esm2022/lib/services/budget-setup.service.mjs +0 -26
  49. package/esm2022/lib/services/budget-simulation.service.mjs +0 -65
  50. package/esm2022/lib/services/budget.service.mjs +0 -205
  51. package/esm2022/lib/services/closure-wallet.service.mjs +0 -39
  52. package/esm2022/lib/services/cnf-correspondence-document-manager.service.mjs +0 -39
  53. package/esm2022/lib/services/codebtors.service.mjs +0 -28
  54. package/esm2022/lib/services/committee-assistant.service.mjs +0 -55
  55. package/esm2022/lib/services/committee-money.service.mjs +0 -44
  56. package/esm2022/lib/services/committee-pdf.service.mjs +0 -27
  57. package/esm2022/lib/services/committee-snapshot.service.mjs +0 -60
  58. package/esm2022/lib/services/common-info.service.mjs +0 -51
  59. package/esm2022/lib/services/common.service.mjs +0 -285
  60. package/esm2022/lib/services/configuration-document.service.mjs +0 -297
  61. package/esm2022/lib/services/configuration-minisite.service.mjs +0 -26
  62. package/esm2022/lib/services/configuration.service.mjs +0 -53
  63. package/esm2022/lib/services/correspondence-document-category.service.mjs +0 -31
  64. package/esm2022/lib/services/correspondence-manager.service.mjs +0 -67
  65. package/esm2022/lib/services/credit-score.service.mjs +0 -48
  66. package/esm2022/lib/services/credit-study.service.mjs +0 -292
  67. package/esm2022/lib/services/cube.service.mjs +0 -27
  68. package/esm2022/lib/services/data-form-history.service.mjs +0 -25
  69. package/esm2022/lib/services/data-form.service.mjs +0 -176
  70. package/esm2022/lib/services/data-letter-segmentation.service.mjs +0 -64
  71. package/esm2022/lib/services/document-analysis-auto.service.mjs +0 -27
  72. package/esm2022/lib/services/document-history.service.mjs +0 -43
  73. package/esm2022/lib/services/document-management.service.mjs +0 -57
  74. package/esm2022/lib/services/document-process.service.mjs +0 -27
  75. package/esm2022/lib/services/document-validation-attempt.service.mjs +0 -32
  76. package/esm2022/lib/services/document.service.mjs +0 -144
  77. package/esm2022/lib/services/documentary.type.service.mjs +0 -69
  78. package/esm2022/lib/services/email.service.mjs +0 -30
  79. package/esm2022/lib/services/evaluation.service.mjs +0 -181
  80. package/esm2022/lib/services/export-excel.service.mjs +0 -32
  81. package/esm2022/lib/services/file.service.mjs +0 -153
  82. package/esm2022/lib/services/form.service.mjs +0 -112
  83. package/esm2022/lib/services/gic-client-disbursement-metadata.service.mjs +0 -31
  84. package/esm2022/lib/services/gic-client.service.mjs +0 -49
  85. package/esm2022/lib/services/gic-cnf-bankvision-transaction.service.mjs +0 -31
  86. package/esm2022/lib/services/gic-cnf-closing-date.service.mjs +0 -34
  87. package/esm2022/lib/services/gic-cnf-maintenance.service.mjs +0 -30
  88. package/esm2022/lib/services/gic-collection.service.mjs +0 -53
  89. package/esm2022/lib/services/gic-disbursement.service.mjs +0 -39
  90. package/esm2022/lib/services/gic-extract.service.mjs +0 -41
  91. package/esm2022/lib/services/gic-log.service.mjs +0 -41
  92. package/esm2022/lib/services/gic-payment-application.service.mjs +0 -35
  93. package/esm2022/lib/services/gic-payment-plan-cube.service.mjs +0 -27
  94. package/esm2022/lib/services/gic-payment-plan.service.mjs +0 -32
  95. package/esm2022/lib/services/gic-trm.service.mjs +0 -27
  96. package/esm2022/lib/services/global.show.task.service.mjs +0 -37
  97. package/esm2022/lib/services/guarantee-document.service.mjs +0 -56
  98. package/esm2022/lib/services/guarantee-enrollment.service.mjs +0 -37
  99. package/esm2022/lib/services/guarantee.service.mjs +0 -128
  100. package/esm2022/lib/services/guarantees-summary-service.mjs +0 -26
  101. package/esm2022/lib/services/hash.service.mjs +0 -36
  102. package/esm2022/lib/services/import-data.service.mjs +0 -27
  103. package/esm2022/lib/services/import-excel-gic.service.mjs +0 -53
  104. package/esm2022/lib/services/initial-configuration-gic-parameters.service.mjs +0 -51
  105. package/esm2022/lib/services/initial-record.service.mjs +0 -58
  106. package/esm2022/lib/services/integration-ado.service.mjs +0 -54
  107. package/esm2022/lib/services/interaction-application-user.service.mjs +0 -81
  108. package/esm2022/lib/services/interest-adjustment.service.mjs +0 -34
  109. package/esm2022/lib/services/keys-assignation.service.mjs +0 -127
  110. package/esm2022/lib/services/legalization.service.mjs +0 -150
  111. package/esm2022/lib/services/letter-campaing.service.mjs +0 -49
  112. package/esm2022/lib/services/letter-task-mapping.service.mjs +0 -40
  113. package/esm2022/lib/services/log.service.mjs +0 -41
  114. package/esm2022/lib/services/maintenance.service.mjs +0 -66
  115. package/esm2022/lib/services/master-category.service.mjs +0 -66
  116. package/esm2022/lib/services/master-program.service.mjs +0 -78
  117. package/esm2022/lib/services/master-university.service.mjs +0 -79
  118. package/esm2022/lib/services/migration-plis.service.mjs +0 -27
  119. package/esm2022/lib/services/migration-survey-queue.service.mjs +0 -24
  120. package/esm2022/lib/services/openkm-document.service.mjs +0 -27
  121. package/esm2022/lib/services/page.service.mjs +0 -38
  122. package/esm2022/lib/services/partner-system.service.mjs +0 -30
  123. package/esm2022/lib/services/partner.service.mjs +0 -34
  124. package/esm2022/lib/services/pdf-analyzer.service.mjs +0 -33
  125. package/esm2022/lib/services/people-master.service.mjs +0 -42
  126. package/esm2022/lib/services/permission.service.mjs +0 -29
  127. package/esm2022/lib/services/pli-cnf-acuity-fields.service.mjs +0 -34
  128. package/esm2022/lib/services/pli-cnf-app-card-filter.service.mjs +0 -40
  129. package/esm2022/lib/services/pli-cnf-appointment-type.service.mjs +0 -41
  130. package/esm2022/lib/services/pli-cnf-budget-program-type.service.mjs +0 -54
  131. package/esm2022/lib/services/pli-cnf-budget.service.mjs +0 -31
  132. package/esm2022/lib/services/pli-cnf-cloning.service.mjs +0 -27
  133. package/esm2022/lib/services/pli-cnf-committee-pdf-config-table-config.service.mjs +0 -47
  134. package/esm2022/lib/services/pli-cnf-committee-pdf-gen-status.service.mjs +0 -30
  135. package/esm2022/lib/services/pli-cnf-committee-valpro-columns.service.mjs +0 -42
  136. package/esm2022/lib/services/pli-cnf-committee-visualization-mode.service.mjs +0 -42
  137. package/esm2022/lib/services/pli-cnf-committee.service.mjs +0 -66
  138. package/esm2022/lib/services/pli-cnf-config-minisite.service.mjs +0 -90
  139. package/esm2022/lib/services/pli-cnf-configuration-credit-study.service.mjs +0 -41
  140. package/esm2022/lib/services/pli-cnf-document-management.service.mjs +0 -40
  141. package/esm2022/lib/services/pli-cnf-dynamic-keys-assign.service.mjs +0 -52
  142. package/esm2022/lib/services/pli-cnf-evaluation-task-mailing.service.mjs +0 -31
  143. package/esm2022/lib/services/pli-cnf-evaluation-task-template.service.mjs +0 -39
  144. package/esm2022/lib/services/pli-cnf-evaluation-task.service.mjs +0 -112
  145. package/esm2022/lib/services/pli-cnf-evaluation-template.service.mjs +0 -95
  146. package/esm2022/lib/services/pli-cnf-form-edit.service.mjs +0 -68
  147. package/esm2022/lib/services/pli-cnf-form-multiaplicacion.service.mjs +0 -46
  148. package/esm2022/lib/services/pli-cnf-guarantee-documents-template.service.mjs +0 -40
  149. package/esm2022/lib/services/pli-cnf-guarantee-token.service.mjs +0 -42
  150. package/esm2022/lib/services/pli-cnf-header.service.mjs +0 -39
  151. package/esm2022/lib/services/pli-cnf-indicator.service.mjs +0 -39
  152. package/esm2022/lib/services/pli-cnf-information-system.service.mjs +0 -24
  153. package/esm2022/lib/services/pli-cnf-interaction.service.mjs +0 -78
  154. package/esm2022/lib/services/pli-cnf-letter-template-type.service.mjs +0 -29
  155. package/esm2022/lib/services/pli-cnf-letter-template.service.mjs +0 -48
  156. package/esm2022/lib/services/pli-cnf-look-and-feel.service.mjs +0 -28
  157. package/esm2022/lib/services/pli-cnf-mail.service.mjs +0 -30
  158. package/esm2022/lib/services/pli-cnf-menu-form.service.mjs +0 -34
  159. package/esm2022/lib/services/pli-cnf-migration-plis-field-budget.service.mjs +0 -34
  160. package/esm2022/lib/services/pli-cnf-migration-plis-field.service.mjs +0 -47
  161. package/esm2022/lib/services/pli-cnf-migration-status-plis.service.mjs +0 -44
  162. package/esm2022/lib/services/pli-cnf-page-section-form.service.mjs +0 -66
  163. package/esm2022/lib/services/pli-cnf-page-sub-process.service.mjs +0 -25
  164. package/esm2022/lib/services/pli-cnf-pdfs.service.mjs +0 -31
  165. package/esm2022/lib/services/pli-cnf-profile-form.service.mjs +0 -40
  166. package/esm2022/lib/services/pli-cnf-profile-user.service.mjs +0 -49
  167. package/esm2022/lib/services/pli-cnf-project-summary.service.mjs +0 -39
  168. package/esm2022/lib/services/pli-cnf-scenario.service.mjs +0 -47
  169. package/esm2022/lib/services/pli-cnf-segmentation.service.mjs +0 -72
  170. package/esm2022/lib/services/pli-cnf-snapshot-token.service.mjs +0 -42
  171. package/esm2022/lib/services/pli-cnf-status-flow-interaction.service.mjs +0 -74
  172. package/esm2022/lib/services/pli-cnf-status-flow.service.mjs +0 -56
  173. package/esm2022/lib/services/pli-cnf-support-document-category.service.mjs +0 -47
  174. package/esm2022/lib/services/pli-cnf-support-document.service.mjs +0 -56
  175. package/esm2022/lib/services/pli-cnf-survey-document.service.mjs +0 -37
  176. package/esm2022/lib/services/pli-cnf-survey-pdf.service.mjs +0 -34
  177. package/esm2022/lib/services/pli-cnf-survey.service.mjs +0 -46
  178. package/esm2022/lib/services/pli-cnf-task-group.service.mjs +0 -33
  179. package/esm2022/lib/services/pli-cnf-text-category.service.mjs +0 -38
  180. package/esm2022/lib/services/pli-cnf-text-option.service.mjs +0 -39
  181. package/esm2022/lib/services/pli-cnf-text.service.mjs +0 -62
  182. package/esm2022/lib/services/pli-cnf-type-text.service.mjs +0 -45
  183. package/esm2022/lib/services/pli-cnf-university-article.service.mjs +0 -39
  184. package/esm2022/lib/services/pli-cnf-user-calendar.service.mjs +0 -36
  185. package/esm2022/lib/services/pli-cnf-user-workspace.service.mjs +0 -35
  186. package/esm2022/lib/services/pli-cnf-valpro-keys.service.mjs +0 -35
  187. package/esm2022/lib/services/pli-cnf-workspace-segmentation.service.mjs +0 -31
  188. package/esm2022/lib/services/pli-message-type.service.mjs +0 -40
  189. package/esm2022/lib/services/pli-multiple-value-filter.service.mjs +0 -39
  190. package/esm2022/lib/services/pli-promocion-username.service.mjs +0 -57
  191. package/esm2022/lib/services/pli-seg-action-user.service.mjs +0 -37
  192. package/esm2022/lib/services/pli-segmentation.service.mjs +0 -130
  193. package/esm2022/lib/services/pli-tag-assignment.service.mjs +0 -36
  194. package/esm2022/lib/services/pli-tag.service.mjs +0 -55
  195. package/esm2022/lib/services/pli-user.service.mjs +0 -51
  196. package/esm2022/lib/services/plis-beneficiario.service.mjs +0 -29
  197. package/esm2022/lib/services/plis-estatus-change.service.mjs +0 -30
  198. package/esm2022/lib/services/post-selection.service.mjs +0 -25
  199. package/esm2022/lib/services/ppp.service.mjs +0 -360
  200. package/esm2022/lib/services/profile.service.mjs +0 -60
  201. package/esm2022/lib/services/progress-bar.service.mjs +0 -40
  202. package/esm2022/lib/services/promotion-score.service.mjs +0 -44
  203. package/esm2022/lib/services/registry-identifier.service.mjs +0 -49
  204. package/esm2022/lib/services/return-refund.service.mjs +0 -53
  205. package/esm2022/lib/services/segmentation-tokens.service.mjs +0 -43
  206. package/esm2022/lib/services/segmentation-user-service.service.mjs +0 -94
  207. package/esm2022/lib/services/segmentation.service.mjs +0 -31
  208. package/esm2022/lib/services/send-application.service.mjs +0 -484
  209. package/esm2022/lib/services/sesion-form.service.mjs +0 -31
  210. package/esm2022/lib/services/sesion.service.mjs +0 -48
  211. package/esm2022/lib/services/spinner.service.mjs +0 -16
  212. package/esm2022/lib/services/sponsorship-letter.service.mjs +0 -68
  213. package/esm2022/lib/services/status.service.mjs +0 -104
  214. package/esm2022/lib/services/summary-budget.service.mjs +0 -24
  215. package/esm2022/lib/services/survey-metadata.service.mjs +0 -28
  216. package/esm2022/lib/services/survey-queue.service.mjs +0 -24
  217. package/esm2022/lib/services/survey.service.mjs +0 -52
  218. package/esm2022/lib/services/tag-management.service.mjs +0 -58
  219. package/esm2022/lib/services/tasa.cambio.service.mjs +0 -35
  220. package/esm2022/lib/services/token-transformation.service.mjs +0 -62
  221. package/esm2022/lib/services/token.service.mjs +0 -1439
  222. package/esm2022/lib/services/university.service.mjs +0 -50
  223. package/esm2022/lib/services/upload-documents.service.mjs +0 -60
  224. package/esm2022/lib/services/user.service.mjs +0 -28
  225. package/esm2022/lib/services/visualization-committee.service.mjs +0 -91
  226. package/esm2022/lib/utils/custom-validator.mjs +0 -95
  227. package/esm2022/lib/utils/form-util.mjs +0 -35
  228. package/esm2022/lib/utils/formio-util.mjs +0 -582
  229. package/esm2022/lib/utils/version-commons.mjs +0 -10
  230. package/esm2022/ng-pli-commons.mjs +0 -5
  231. package/esm2022/public-api.mjs +0 -226
  232. package/esm2022/version.mjs +0 -29
@@ -1,131 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { ETypeColumn, SegFilter } from 'ng-pli-util';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../services/common.service";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "@angular/forms";
7
- import * as i4 from "primeng/dropdown";
8
- export class DynamicFilterComponent {
9
- constructor(cdRef, commonService) {
10
- this.cdRef = cdRef;
11
- this.commonService = commonService;
12
- this.searchFilter = new EventEmitter();
13
- }
14
- ngOnInit() { }
15
- /** It manages the change of the every @Input */
16
- ngOnChanges(changes) {
17
- const comboColumnWork = changes.comboColumnWork;
18
- if (comboColumnWork && comboColumnWork.currentValue) {
19
- this.comboColumnWork = comboColumnWork.currentValue;
20
- this.active = true;
21
- if (!this.lSegFilter || this.lSegFilter.length == 0) {
22
- this.addFilter();
23
- }
24
- }
25
- const lSegColumn = changes.lSegColumn;
26
- if (lSegColumn && lSegColumn.currentValue) {
27
- this.lSegColumn = lSegColumn.currentValue;
28
- this.loadMapColumn();
29
- }
30
- // console.log(this.comboColumnWork);
31
- }
32
- loadMapColumn() {
33
- this.mapSegColumnById = new Map();
34
- for (const segColumn of this.lSegColumn) {
35
- this.mapSegColumnById.set(segColumn.idColumn.toString(), segColumn);
36
- }
37
- }
38
- /** it fires when select column */
39
- onSelectColumn(filter) {
40
- if (filter.idColumn) {
41
- let column = this.getColumnById(filter.idColumn.toString());
42
- if (column) {
43
- filter.idColumn = column.idColumn;
44
- filter.type = column.type;
45
- filter.label = column.label;
46
- filter.key = column.key;
47
- }
48
- if (Number(filter.type) == this.getTypeNumber() ||
49
- Number(filter.type) == this.getTypeDate())
50
- filter.operator = '1';
51
- else
52
- filter.operator = '3';
53
- console.log('filter', filter);
54
- }
55
- }
56
- /** It returns the type text */
57
- getTypeText() {
58
- return ETypeColumn.TEXTO;
59
- }
60
- /** It returns the type number */
61
- getTypeNumber() {
62
- return ETypeColumn.NUMERICO;
63
- }
64
- /** It returns the type date */
65
- getTypeDate() {
66
- return ETypeColumn.FECHA;
67
- }
68
- /** it deletes filter */
69
- deleteFilter(i) {
70
- console.log('Eliminar ', i);
71
- if (this.lSegFilter)
72
- this.lSegFilter.splice(i, 1);
73
- if (!this.lSegFilter || !this.lSegFilter.length)
74
- this.addFilter();
75
- }
76
- /** it defines the conjunction */
77
- setConjunction(filter, conjunction) {
78
- filter.conjunction = conjunction;
79
- }
80
- /** it adds new filter */
81
- addFilter() {
82
- if (!this.lSegFilter) {
83
- this.lSegFilter = [];
84
- }
85
- let filter = new SegFilter();
86
- filter.conjunction = 'Y';
87
- this.lSegFilter.push(filter);
88
- }
89
- /** clean all filters */
90
- clean() {
91
- this.lSegFilter = [];
92
- this.addFilter();
93
- }
94
- /** clean all filters */
95
- deleteAll() {
96
- if (this.lSegFilter)
97
- for (const filter of this.lSegFilter)
98
- filter.value = undefined;
99
- }
100
- /** it searches */
101
- search() {
102
- this.searchFilter.emit(this.lSegFilter);
103
- }
104
- /** return type input */
105
- getTypeInput(type) {
106
- if (type == this.getTypeDate())
107
- return 'date';
108
- if (type == this.getTypeNumber())
109
- return 'text';
110
- return 'text';
111
- }
112
- /** it returns the column by id */
113
- getColumnById(id) {
114
- return this.mapSegColumnById.get(id);
115
- }
116
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DynamicFilterComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CommonService }], target: i0.ɵɵFactoryTarget.Component }); }
117
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DynamicFilterComponent, selector: "app-dynamic-filter", inputs: { lSegFilter: "lSegFilter", lSegColumn: "lSegColumn", comboColumnWork: "comboColumnWork" }, outputs: { searchFilter: "searchFilter" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flow-row-wrap\" style=\"margin:10px 0 0;justify-content: normal\" *ngIf=\"active\">\r\n\t<div class=\"segmentation-filter\" *ngFor=\"let filter of lSegFilter; let i = index\">\r\n\t\t<div *ngIf=\"filter.idColumn == undefined\">\r\n\t\t\t<div class=\"ml-sm\">\r\n\t\t\t\t<p-dropdown\r\n\t\t\t\t\t[autoWidth]=\"false\"\r\n\t\t\t\t\t[style]=\"{ width: '100%' }\"\r\n\t\t\t\t\tplaceholder=\"-- Seleccione opci\u00F3n\"\r\n\t\t\t\t\t[options]=\"comboColumnWork\"\r\n\t\t\t\t\t[group]=\"true\"\r\n\t\t\t\t\t[(ngModel)]=\"filter.idColumn\"\r\n\t\t\t\t\t(onChange)=\"onSelectColumn(filter)\"\r\n\t\t\t\t\t[filter]=\"true\"\r\n\t\t\t\t>\r\n\t\t\t\t</p-dropdown>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"flex align-items-center\" *ngIf=\"filter.idColumn != undefined\">\r\n\t\t\t<div class=\"ml-sm mr-sm\">\r\n\t\t\t\t<span class=\"input-group-btn conector\" *ngIf=\"i != 0\">\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\tclass=\"btn btn-info btn-sm br-5\"\r\n\t\t\t\t\t\t*ngIf=\"filter.conjunction == 'Y'\"\r\n\t\t\t\t\t\t(click)=\"setConjunction(filter, 'O')\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tY\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\tclass=\"btn btn-warning btn-sm br-5\"\r\n\t\t\t\t\t\t*ngIf=\"filter.conjunction == 'O'\"\r\n\t\t\t\t\t\t(click)=\"setConjunction(filter, 'Y')\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tO\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</span>\r\n\t\t\t\t<span class=\"ml-sm\" *ngIf=\"i == 0\">\r\n\t\t\t\t\t<span class=\"btn btn-sm br-5\" style=\"cursor:auto;\">&nbsp;</span>\r\n\t\t\t\t</span>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"mr-sm\">\r\n\t\t\t\t<select\r\n\t\t\t\t\tclass=\"form-control input-sm select-operation\"\r\n\t\t\t\t\tstyle=\"width: 125px;\"\r\n\t\t\t\t\t[(ngModel)]=\"filter.operator\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<option value=\"1\">Igual a</option>\r\n\t\t\t\t\t<option value=\"2\">Diferente a</option>\r\n\t\t\t\t\t<option value=\"3\" *ngIf=\"filter.type == getTypeText()\">Contiene</option>\r\n\t\t\t\t\t<option value=\"4\" *ngIf=\"filter.type == getTypeText()\">No contiene</option>\r\n\t\t\t\t\t<option\r\n\t\t\t\t\t\tvalue=\"5\"\r\n\t\t\t\t\t\t*ngIf=\"filter.type == getTypeNumber() || filter.type == getTypeDate()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tMayor a</option\r\n\t\t\t\t\t>\r\n\t\t\t\t\t<option\r\n\t\t\t\t\t\tvalue=\"6\"\r\n\t\t\t\t\t\t*ngIf=\"filter.type == getTypeNumber() || filter.type == getTypeDate()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tMayor o igual a</option\r\n\t\t\t\t\t>\r\n\t\t\t\t\t<option\r\n\t\t\t\t\t\tvalue=\"7\"\r\n\t\t\t\t\t\t*ngIf=\"filter.type == getTypeNumber() || filter.type == getTypeDate()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tMenor a</option\r\n\t\t\t\t\t>\r\n\t\t\t\t\t<option\r\n\t\t\t\t\t\tvalue=\"8\"\r\n\t\t\t\t\t\t*ngIf=\"filter.type == getTypeNumber() || filter.type == getTypeDate()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tMenor o igual a</option\r\n\t\t\t\t\t>\r\n\t\t\t\t\t<option value=\"9\">Es vac\u00EDo</option>\r\n\t\t\t\t</select>\r\n\t\t\t</div>\r\n\t\t\t<div>\r\n\t\t\t\t<input\r\n\t\t\t\t\t[type]=\"getTypeInput(filter.type)\"\r\n\t\t\t\t\t[disabled]=\"filter.operator == 9\"\r\n\t\t\t\t\tclass=\"form-control input-value input-sm\"\r\n\t\t\t\t\t[(ngModel)]=\"filter.value\"\r\n\t\t\t\t\t[placeholder]=\"filter.label\"\r\n\t\t\t\t\tstyle=\"width: 165px;\"\r\n\t\t\t\t\t(keyup.enter)=\"search()\"\r\n\t\t\t\t/>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex ml-sm button_filter\">\r\n\t\t\t\t<button\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tclass=\"btn btn-danger btn-sm btn-rounded\"\r\n\t\t\t\t\t(click)=\"deleteFilter(i)\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"fa fa-minus\"></span>\r\n\t\t\t\t</button>\r\n\t\t\t\t<button\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tclass=\"btn btn-success btn-sm btn-rounded ml-sm\"\r\n\t\t\t\t\t(click)=\"addFilter()\"\r\n\t\t\t\t\t*ngIf=\"i + 1 == lSegFilter.length\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"fa fa-plus\"></span>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n<div class=\"row\" style=\"margin:0 0 10px\" *ngIf=\"active\">\r\n\t<div class=\"col-sm-12 panel-button\">\r\n\t\t<div class=\"btn-toolbar\">\r\n\t\t\t<div class=\"btn-group\">\r\n\t\t\t\t<button type=\"button\" class=\"btn btn-primary btn-sm btn-consult\" (click)=\"search()\">\r\n\t\t\t\t\tConsultar\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"btn-group\">\r\n\t\t\t\t<button type=\"button\" class=\"btn btn-danger btn-sm btn-delete\" (click)=\"clean()\">\r\n\t\t\t\t\tBorrar filtros\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"btn-group\">\r\n\t\t\t\t<button\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tclass=\"btn btn-warning btn-sm btn-clear\"\r\n\t\t\t\t\t(click)=\"deleteAll()\"\r\n\t\t\t\t>\r\n\t\t\t\t\tlimpiar datos\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".button_filter .btn{line-height:12px;width:22px;height:22px}.button_filter .btn.btn-success{background-color:transparent;border:1px solid #4cae4c;color:#4cae4c}.button_filter .btn.btn-success:hover{background-color:#4cae4c;color:#fff}.button_filter .btn-danger{background-color:transparent;color:#d43f3a}.button_filter .btn-danger:hover{background-color:#d43f3a;color:#fff}.conector .btn{height:22px;line-height:12px}.btn{padding:5px}.btn-rounded{border-radius:50%!important}.btn-delete,.btn-save,.btn-definition,.btn-clear{background-color:transparent;color:#333;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.btn-delete:hover{background-color:#d43f3a;color:#fff}.btn-save:hover{background-color:#4cae4c;color:#fff}.btn-definition:hover{color:#fff;background-color:#ccc}.btn-clear:hover{background-color:#eea236;color:#fff}.br-5{border-radius:5px!important}.mr-sm{margin-right:5px}.ml-sm{margin-left:5px}.flex{display:flex!important}.flow-row-wrap{flex-flow:row wrap}.align-items-center{align-items:center}.dialog-max-size .ui-dialog{width:95%!important}.segmentation-group .form-control.select-operation{width:40%;font-size:11px;padding-left:3px;padding-right:3px}.segmentation-group .form-control.input-value{width:60%}.segmentation-filter{margin-bottom:10px}.panel-button{background-color:#f8f8f8;padding-top:10px;padding-bottom:10px;border-top:1px solid rgb(231,231,231);border-bottom:1px solid rgb(231,231,231);text-align:right}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.Dropdown, selector: "p-dropdown", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "autoShowPanelOnPrintableCharacterKeyDown", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }] }); }
118
- }
119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DynamicFilterComponent, decorators: [{
120
- type: Component,
121
- args: [{ selector: 'app-dynamic-filter', template: "<div class=\"flex flow-row-wrap\" style=\"margin:10px 0 0;justify-content: normal\" *ngIf=\"active\">\r\n\t<div class=\"segmentation-filter\" *ngFor=\"let filter of lSegFilter; let i = index\">\r\n\t\t<div *ngIf=\"filter.idColumn == undefined\">\r\n\t\t\t<div class=\"ml-sm\">\r\n\t\t\t\t<p-dropdown\r\n\t\t\t\t\t[autoWidth]=\"false\"\r\n\t\t\t\t\t[style]=\"{ width: '100%' }\"\r\n\t\t\t\t\tplaceholder=\"-- Seleccione opci\u00F3n\"\r\n\t\t\t\t\t[options]=\"comboColumnWork\"\r\n\t\t\t\t\t[group]=\"true\"\r\n\t\t\t\t\t[(ngModel)]=\"filter.idColumn\"\r\n\t\t\t\t\t(onChange)=\"onSelectColumn(filter)\"\r\n\t\t\t\t\t[filter]=\"true\"\r\n\t\t\t\t>\r\n\t\t\t\t</p-dropdown>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"flex align-items-center\" *ngIf=\"filter.idColumn != undefined\">\r\n\t\t\t<div class=\"ml-sm mr-sm\">\r\n\t\t\t\t<span class=\"input-group-btn conector\" *ngIf=\"i != 0\">\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\tclass=\"btn btn-info btn-sm br-5\"\r\n\t\t\t\t\t\t*ngIf=\"filter.conjunction == 'Y'\"\r\n\t\t\t\t\t\t(click)=\"setConjunction(filter, 'O')\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tY\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\tclass=\"btn btn-warning btn-sm br-5\"\r\n\t\t\t\t\t\t*ngIf=\"filter.conjunction == 'O'\"\r\n\t\t\t\t\t\t(click)=\"setConjunction(filter, 'Y')\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tO\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</span>\r\n\t\t\t\t<span class=\"ml-sm\" *ngIf=\"i == 0\">\r\n\t\t\t\t\t<span class=\"btn btn-sm br-5\" style=\"cursor:auto;\">&nbsp;</span>\r\n\t\t\t\t</span>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"mr-sm\">\r\n\t\t\t\t<select\r\n\t\t\t\t\tclass=\"form-control input-sm select-operation\"\r\n\t\t\t\t\tstyle=\"width: 125px;\"\r\n\t\t\t\t\t[(ngModel)]=\"filter.operator\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<option value=\"1\">Igual a</option>\r\n\t\t\t\t\t<option value=\"2\">Diferente a</option>\r\n\t\t\t\t\t<option value=\"3\" *ngIf=\"filter.type == getTypeText()\">Contiene</option>\r\n\t\t\t\t\t<option value=\"4\" *ngIf=\"filter.type == getTypeText()\">No contiene</option>\r\n\t\t\t\t\t<option\r\n\t\t\t\t\t\tvalue=\"5\"\r\n\t\t\t\t\t\t*ngIf=\"filter.type == getTypeNumber() || filter.type == getTypeDate()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tMayor a</option\r\n\t\t\t\t\t>\r\n\t\t\t\t\t<option\r\n\t\t\t\t\t\tvalue=\"6\"\r\n\t\t\t\t\t\t*ngIf=\"filter.type == getTypeNumber() || filter.type == getTypeDate()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tMayor o igual a</option\r\n\t\t\t\t\t>\r\n\t\t\t\t\t<option\r\n\t\t\t\t\t\tvalue=\"7\"\r\n\t\t\t\t\t\t*ngIf=\"filter.type == getTypeNumber() || filter.type == getTypeDate()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tMenor a</option\r\n\t\t\t\t\t>\r\n\t\t\t\t\t<option\r\n\t\t\t\t\t\tvalue=\"8\"\r\n\t\t\t\t\t\t*ngIf=\"filter.type == getTypeNumber() || filter.type == getTypeDate()\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tMenor o igual a</option\r\n\t\t\t\t\t>\r\n\t\t\t\t\t<option value=\"9\">Es vac\u00EDo</option>\r\n\t\t\t\t</select>\r\n\t\t\t</div>\r\n\t\t\t<div>\r\n\t\t\t\t<input\r\n\t\t\t\t\t[type]=\"getTypeInput(filter.type)\"\r\n\t\t\t\t\t[disabled]=\"filter.operator == 9\"\r\n\t\t\t\t\tclass=\"form-control input-value input-sm\"\r\n\t\t\t\t\t[(ngModel)]=\"filter.value\"\r\n\t\t\t\t\t[placeholder]=\"filter.label\"\r\n\t\t\t\t\tstyle=\"width: 165px;\"\r\n\t\t\t\t\t(keyup.enter)=\"search()\"\r\n\t\t\t\t/>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"flex ml-sm button_filter\">\r\n\t\t\t\t<button\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tclass=\"btn btn-danger btn-sm btn-rounded\"\r\n\t\t\t\t\t(click)=\"deleteFilter(i)\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"fa fa-minus\"></span>\r\n\t\t\t\t</button>\r\n\t\t\t\t<button\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tclass=\"btn btn-success btn-sm btn-rounded ml-sm\"\r\n\t\t\t\t\t(click)=\"addFilter()\"\r\n\t\t\t\t\t*ngIf=\"i + 1 == lSegFilter.length\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<span class=\"fa fa-plus\"></span>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n<div class=\"row\" style=\"margin:0 0 10px\" *ngIf=\"active\">\r\n\t<div class=\"col-sm-12 panel-button\">\r\n\t\t<div class=\"btn-toolbar\">\r\n\t\t\t<div class=\"btn-group\">\r\n\t\t\t\t<button type=\"button\" class=\"btn btn-primary btn-sm btn-consult\" (click)=\"search()\">\r\n\t\t\t\t\tConsultar\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"btn-group\">\r\n\t\t\t\t<button type=\"button\" class=\"btn btn-danger btn-sm btn-delete\" (click)=\"clean()\">\r\n\t\t\t\t\tBorrar filtros\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"btn-group\">\r\n\t\t\t\t<button\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tclass=\"btn btn-warning btn-sm btn-clear\"\r\n\t\t\t\t\t(click)=\"deleteAll()\"\r\n\t\t\t\t>\r\n\t\t\t\t\tlimpiar datos\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n", styles: [".button_filter .btn{line-height:12px;width:22px;height:22px}.button_filter .btn.btn-success{background-color:transparent;border:1px solid #4cae4c;color:#4cae4c}.button_filter .btn.btn-success:hover{background-color:#4cae4c;color:#fff}.button_filter .btn-danger{background-color:transparent;color:#d43f3a}.button_filter .btn-danger:hover{background-color:#d43f3a;color:#fff}.conector .btn{height:22px;line-height:12px}.btn{padding:5px}.btn-rounded{border-radius:50%!important}.btn-delete,.btn-save,.btn-definition,.btn-clear{background-color:transparent;color:#333;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.btn-delete:hover{background-color:#d43f3a;color:#fff}.btn-save:hover{background-color:#4cae4c;color:#fff}.btn-definition:hover{color:#fff;background-color:#ccc}.btn-clear:hover{background-color:#eea236;color:#fff}.br-5{border-radius:5px!important}.mr-sm{margin-right:5px}.ml-sm{margin-left:5px}.flex{display:flex!important}.flow-row-wrap{flex-flow:row wrap}.align-items-center{align-items:center}.dialog-max-size .ui-dialog{width:95%!important}.segmentation-group .form-control.select-operation{width:40%;font-size:11px;padding-left:3px;padding-right:3px}.segmentation-group .form-control.input-value{width:60%}.segmentation-filter{margin-bottom:10px}.panel-button{background-color:#f8f8f8;padding-top:10px;padding-bottom:10px;border-top:1px solid rgb(231,231,231);border-bottom:1px solid rgb(231,231,231);text-align:right}\n"] }]
122
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.CommonService }], propDecorators: { lSegFilter: [{
123
- type: Input
124
- }], lSegColumn: [{
125
- type: Input
126
- }], comboColumnWork: [{
127
- type: Input
128
- }], searchFilter: [{
129
- type: Output
130
- }] } });
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcGxpLWNvbW1vbnMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZmlsdGVyL2R5bmFtaWMtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLWZpbHRlci9keW5hbWljLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUdULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUlOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFhLE1BQU0sYUFBYSxDQUFDOzs7Ozs7QUFTaEUsTUFBTSxPQUFPLHNCQUFzQjtJQWdCbEMsWUFBc0IsS0FBd0IsRUFBWSxhQUE0QjtRQUFoRSxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUFZLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRjVFLGlCQUFZLEdBQThCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFa0IsQ0FBQztJQUUxRixRQUFRLEtBQUksQ0FBQztJQUViLGdEQUFnRDtJQUNoRCxXQUFXLENBQUMsT0FBc0I7UUFDakMsTUFBTSxlQUFlLEdBQWlCLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFDOUQsSUFBSSxlQUFlLElBQUksZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQztZQUNwRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FB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QU1JLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdENvbXBvbmVudCxcclxuXHRPbkluaXQsXHJcblx0Q2hhbmdlRGV0ZWN0b3JSZWYsXHJcblx0RXZlbnRFbWl0dGVyLFxyXG5cdElucHV0LFxyXG5cdE91dHB1dCxcclxuXHRPbkNoYW5nZXMsXHJcblx0U2ltcGxlQ2hhbmdlcyxcclxuXHRTaW1wbGVDaGFuZ2VcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRVR5cGVDb2x1bW4sIFNlZ0ZpbHRlciwgU2VnQ29sdW1uIH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xyXG5cclxuZGVjbGFyZSB2YXIgJDogYW55O1xyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2FwcC1keW5hbWljLWZpbHRlcicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2R5bmFtaWMtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9keW5hbWljLWZpbHRlci5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIER5bmFtaWNGaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcblx0LyoqICovXHJcblx0YWN0aXZlOiBib29sZWFuO1xyXG5cdC8qKiBMaXN0IG9mIGZpbHRlciAqL1xyXG5cdEBJbnB1dCgpIGxTZWdGaWx0ZXI6IFNlZ0ZpbHRlcltdO1xyXG5cdC8qKiBMaXN0IG9mIGNvbHVtbnMgKi9cclxuXHRASW5wdXQoKSBsU2VnQ29sdW1uOiBTZWdDb2x1bW5bXTtcclxuXHQvKiogTGlzdCBvZiBjb2x1bW5zICovXHJcblx0QElucHV0KCkgY29tYm9Db2x1bW5Xb3JrOiBhbnlbXTtcclxuXHJcblx0ZGlzcGxheURpYWxvZzogYm9vbGVhbjtcclxuXHJcblx0bWFwU2VnQ29sdW1uQnlJZDogTWFwPHN0cmluZywgU2VnQ29sdW1uPjtcclxuXHJcblx0QE91dHB1dCgpIHNlYXJjaEZpbHRlcjogRXZlbnRFbWl0dGVyPFNlZ0ZpbHRlcltdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJvdGVjdGVkIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJvdGVjdGVkIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UpIHt9XHJcblxyXG5cdG5nT25Jbml0KCkge31cclxuXHJcblx0LyoqIEl0IG1hbmFnZXMgdGhlIGNoYW5nZSBvZiB0aGUgZXZlcnkgQElucHV0ICovXHJcblx0bmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG5cdFx0Y29uc3QgY29tYm9Db2x1bW5Xb3JrOiBTaW1wbGVDaGFuZ2UgPSBjaGFuZ2VzLmNvbWJvQ29sdW1uV29yaztcclxuXHRcdGlmIChjb21ib0NvbHVtbldvcmsgJiYgY29tYm9Db2x1bW5Xb3JrLmN1cnJlbnRWYWx1ZSkge1xyXG5cdFx0XHR0aGlzLmNvbWJvQ29sdW1uV29yayA9IGNvbWJvQ29sdW1uV29yay5jdXJyZW50VmFsdWU7XHJcblx0XHRcdHRoaXMuYWN0aXZlID0gdHJ1ZTtcclxuXHRcdFx0aWYgKCF0aGlzLmxTZWdGaWx0ZXIgfHwgdGhpcy5sU2VnRmlsdGVyLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5hZGRGaWx0ZXIoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Y29uc3QgbFNlZ0NvbHVtbjogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5sU2VnQ29sdW1uO1xyXG5cdFx0aWYgKGxTZWdDb2x1bW4gJiYgbFNlZ0NvbHVtbi5jdXJyZW50VmFsdWUpIHtcclxuXHRcdFx0dGhpcy5sU2VnQ29sdW1uID0gbFNlZ0NvbHVtbi5jdXJyZW50VmFsdWU7XHJcblx0XHRcdHRoaXMubG9hZE1hcENvbHVtbigpO1xyXG5cdFx0fVxyXG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5jb21ib0NvbHVtbldvcmspO1xyXG5cdH1cclxuXHJcblx0bG9hZE1hcENvbHVtbigpIHtcclxuXHRcdHRoaXMubWFwU2VnQ29sdW1uQnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBTZWdDb2x1bW4+KCk7XHJcblx0XHRmb3IgKGNvbnN0IHNlZ0NvbHVtbiBvZiB0aGlzLmxTZWdDb2x1bW4pIHtcclxuXHRcdFx0dGhpcy5tYXBTZWdDb2x1bW5CeUlkLnNldChzZWdDb2x1bW4uaWRDb2x1bW4udG9TdHJpbmcoKSwgc2VnQ29sdW1uKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKiBpdCBmaXJlcyB3aGVuIHNlbGVjdCBjb2x1bW4gKi9cclxuXHRvblNlbGVjdENvbHVtbihmaWx0ZXI6IFNlZ0ZpbHRlcikge1xyXG5cdFx0aWYgKGZpbHRlci5pZENvbHVtbikge1xyXG5cdFx0XHRsZXQgY29sdW1uID0gdGhpcy5nZXRDb2x1bW5CeUlkKGZpbHRlci5pZENvbHVtbi50b1N0cmluZygpKTtcclxuXHRcdFx0aWYgKGNvbHVtbikge1xyXG5cdFx0XHRcdGZpbHRlci5pZENvbHVtbiA9IGNvbHVtbi5pZENvbHVtbjtcclxuXHRcdFx0XHRmaWx0ZXIudHlwZSA9IGNvbHVtbi50eXBlO1xyXG5cdFx0XHRcdGZpbHRlci5sYWJlbCA9IGNvbHVtbi5sYWJlbDtcclxuXHRcdFx0XHRmaWx0ZXIua2V5ID0gY29sdW1uLmtleTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKFxyXG5cdFx0XHRcdE51bWJlcihmaWx0ZXIudHlwZSkgPT0gdGhpcy5nZXRUeXBlTnVtYmVyKCkgfHxcclxuXHRcdFx0XHROdW1iZXIoZmlsdGVyLnR5cGUpID09IHRoaXMuZ2V0VHlwZURhdGUoKVxyXG5cdFx0XHQpXHJcblx0XHRcdFx0ZmlsdGVyLm9wZXJhdG9yID0gJzEnO1xyXG5cdFx0XHRlbHNlIGZpbHRlci5vcGVyYXRvciA9ICczJztcclxuXHRcdFx0Y29uc29sZS5sb2coJ2ZpbHRlcicsIGZpbHRlcik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiogSXQgcmV0dXJucyB0aGUgdHlwZSB0ZXh0ICovXHJcblx0Z2V0VHlwZVRleHQoKSB7XHJcblx0XHRyZXR1cm4gRVR5cGVDb2x1bW4uVEVYVE87XHJcblx0fVxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB0eXBlIG51bWJlciAqL1xyXG5cdGdldFR5cGVOdW1iZXIoKSB7XHJcblx0XHRyZXR1cm4gRVR5cGVDb2x1bW4uTlVNRVJJQ087XHJcblx0fVxyXG5cdC8qKiBJdCByZXR1cm5zIHRoZSB0eXBlIGRhdGUgKi9cclxuXHRnZXRUeXBlRGF0ZSgpIHtcclxuXHRcdHJldHVybiBFVHlwZUNvbHVtbi5GRUNIQTtcclxuXHR9XHJcblxyXG5cdC8qKiBpdCBkZWxldGVzIGZpbHRlciAqL1xyXG5cdGRlbGV0ZUZpbHRlcihpKSB7XHJcblx0XHRjb25zb2xlLmxvZygnRWxpbWluYXIgJywgaSk7XHJcblx0XHRpZiAodGhpcy5sU2VnRmlsdGVyKSB0aGlzLmxTZWdGaWx0ZXIuc3BsaWNlKGksIDEpO1xyXG5cdFx0aWYgKCF0aGlzLmxTZWdGaWx0ZXIgfHwgIXRoaXMubFNlZ0ZpbHRlci5sZW5ndGgpIHRoaXMuYWRkRmlsdGVyKCk7XHJcblx0fVxyXG5cdC8qKiBpdCBkZWZpbmVzIHRoZSBjb25qdW5jdGlvbiAqL1xyXG5cdHNldENvbmp1bmN0aW9uKGZpbHRlcjogU2VnRmlsdGVyLCBjb25qdW5jdGlvbikge1xyXG5cdFx0ZmlsdGVyLmNvbmp1bmN0aW9uID0gY29uanVuY3Rpb247XHJcblx0fVxyXG5cclxuXHQvKiogaXQgYWRkcyBuZXcgZmlsdGVyICovXHJcblx0YWRkRmlsdGVyKCkge1xyXG5cdFx0aWYgKCF0aGlzLmxTZWdGaWx0ZXIpIHtcclxuXHRcdFx0dGhpcy5sU2VnRmlsdGVyID0gW107XHJcblx0XHR9XHJcblx0XHRsZXQgZmlsdGVyID0gbmV3IFNlZ0ZpbHRlcigpO1xyXG5cdFx0ZmlsdGVyLmNvbmp1bmN0aW9uID0gJ1knO1xyXG5cdFx0dGhpcy5sU2VnRmlsdGVyLnB1c2goZmlsdGVyKTtcclxuXHR9XHJcblxyXG5cdC8qKiBjbGVhbiBhbGwgZmlsdGVycyAqL1xyXG5cdGNsZWFuKCkge1xyXG5cdFx0dGhpcy5sU2VnRmlsdGVyID0gW107XHJcblx0XHR0aGlzLmFkZEZpbHRlcigpO1xyXG5cdH1cclxuXHJcblx0LyoqIGNsZWFuIGFsbCBmaWx0ZXJzICovXHJcblx0ZGVsZXRlQWxsKCkge1xyXG5cdFx0aWYgKHRoaXMubFNlZ0ZpbHRlcikgZm9yIChjb25zdCBmaWx0ZXIgb2YgdGhpcy5sU2VnRmlsdGVyKSBmaWx0ZXIudmFsdWUgPSB1bmRlZmluZWQ7XHJcblx0fVxyXG5cclxuXHQvKiogaXQgc2VhcmNoZXMgICovXHJcblx0c2VhcmNoKCkge1xyXG5cdFx0dGhpcy5zZWFyY2hGaWx0ZXIuZW1pdCh0aGlzLmxTZWdGaWx0ZXIpO1xyXG5cdH1cclxuXHJcblx0LyoqIHJldHVybiB0eXBlIGlucHV0ICovXHJcblx0Z2V0VHlwZUlucHV0KHR5cGUpIHtcclxuXHRcdGlmICh0eXBlID09IHRoaXMuZ2V0VHlwZURhdGUoKSkgcmV0dXJuICdkYXRlJztcclxuXHRcdGlmICh0eXBlID09IHRoaXMuZ2V0VHlwZU51bWJlcigpKSByZXR1cm4gJ3RleHQnO1xyXG5cdFx0cmV0dXJuICd0ZXh0JztcclxuXHR9XHJcblxyXG5cdC8qKiBpdCByZXR1cm5zIHRoZSBjb2x1bW4gYnkgaWQgKi9cclxuXHRnZXRDb2x1bW5CeUlkKGlkOiBzdHJpbmcpOiBTZWdDb2x1bW4ge1xyXG5cdFx0cmV0dXJuIHRoaXMubWFwU2VnQ29sdW1uQnlJZC5nZXQoaWQpO1xyXG5cdH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBmbG93LXJvdy13cmFwXCIgc3R5bGU9XCJtYXJnaW46MTBweCAwIDA7anVzdGlmeS1jb250ZW50OiBub3JtYWxcIiAqbmdJZj1cImFjdGl2ZVwiPlxyXG5cdDxkaXYgY2xhc3M9XCJzZWdtZW50YXRpb24tZmlsdGVyXCIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBsU2VnRmlsdGVyOyBsZXQgaSA9IGluZGV4XCI+XHJcblx0XHQ8ZGl2ICpuZ0lmPVwiZmlsdGVyLmlkQ29sdW1uID09IHVuZGVmaW5lZFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWwtc21cIj5cclxuXHRcdFx0XHQ8cC1kcm9wZG93blxyXG5cdFx0XHRcdFx0W2F1dG9XaWR0aF09XCJmYWxzZVwiXHJcblx0XHRcdFx0XHRbc3R5bGVdPVwieyB3aWR0aDogJzEwMCUnIH1cIlxyXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCItLSBTZWxlY2Npb25lIG9wY2nDs25cIlxyXG5cdFx0XHRcdFx0W29wdGlvbnNdPVwiY29tYm9Db2x1bW5Xb3JrXCJcclxuXHRcdFx0XHRcdFtncm91cF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFsobmdNb2RlbCldPVwiZmlsdGVyLmlkQ29sdW1uXCJcclxuXHRcdFx0XHRcdChvbkNoYW5nZSk9XCJvblNlbGVjdENvbHVtbihmaWx0ZXIpXCJcclxuXHRcdFx0XHRcdFtmaWx0ZXJdPVwidHJ1ZVwiXHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdDwvcC1kcm9wZG93bj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiZmlsdGVyLmlkQ29sdW1uICE9IHVuZGVmaW5lZFwiPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwibWwtc20gbXItc21cIj5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0biBjb25lY3RvclwiICpuZ0lmPVwiaSAhPSAwXCI+XHJcblx0XHRcdFx0XHQ8YnV0dG9uXHJcblx0XHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxyXG5cdFx0XHRcdFx0XHRjbGFzcz1cImJ0biBidG4taW5mbyBidG4tc20gYnItNVwiXHJcblx0XHRcdFx0XHRcdCpuZ0lmPVwiZmlsdGVyLmNvbmp1bmN0aW9uID09ICdZJ1wiXHJcblx0XHRcdFx0XHRcdChjbGljayk9XCJzZXRDb25qdW5jdGlvbihmaWx0ZXIsICdPJylcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRZXHJcblx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXHJcblx0XHRcdFx0XHRcdGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nIGJ0bi1zbSBici01XCJcclxuXHRcdFx0XHRcdFx0Km5nSWY9XCJmaWx0ZXIuY29uanVuY3Rpb24gPT0gJ08nXCJcclxuXHRcdFx0XHRcdFx0KGNsaWNrKT1cInNldENvbmp1bmN0aW9uKGZpbHRlciwgJ1knKVwiXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdE9cclxuXHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdDwvc3Bhbj5cclxuXHRcdFx0XHQ8c3BhbiBjbGFzcz1cIm1sLXNtXCIgKm5nSWY9XCJpID09IDBcIj5cclxuXHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiYnRuIGJ0bi1zbSBici01XCIgc3R5bGU9XCJjdXJzb3I6YXV0bztcIj4mbmJzcDs8L3NwYW4+XHJcblx0XHRcdFx0PC9zcGFuPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIm1yLXNtXCI+XHJcblx0XHRcdFx0PHNlbGVjdFxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJmb3JtLWNvbnRyb2wgaW5wdXQtc20gc2VsZWN0LW9wZXJhdGlvblwiXHJcblx0XHRcdFx0XHRzdHlsZT1cIndpZHRoOiAxMjVweDtcIlxyXG5cdFx0XHRcdFx0WyhuZ01vZGVsKV09XCJmaWx0ZXIub3BlcmF0b3JcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCIxXCI+SWd1YWwgYTwvb3B0aW9uPlxyXG5cdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIjJcIj5EaWZlcmVudGUgYTwvb3B0aW9uPlxyXG5cdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIjNcIiAqbmdJZj1cImZpbHRlci50eXBlID09IGdldFR5cGVUZXh0KClcIj5Db250aWVuZTwvb3B0aW9uPlxyXG5cdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIjRcIiAqbmdJZj1cImZpbHRlci50eXBlID09IGdldFR5cGVUZXh0KClcIj5ObyBjb250aWVuZTwvb3B0aW9uPlxyXG5cdFx0XHRcdFx0PG9wdGlvblxyXG5cdFx0XHRcdFx0XHR2YWx1ZT1cIjVcIlxyXG5cdFx0XHRcdFx0XHQqbmdJZj1cImZpbHRlci50eXBlID09IGdldFR5cGVOdW1iZXIoKSB8fCBmaWx0ZXIudHlwZSA9PSBnZXRUeXBlRGF0ZSgpXCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0TWF5b3IgYTwvb3B0aW9uXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHQ8b3B0aW9uXHJcblx0XHRcdFx0XHRcdHZhbHVlPVwiNlwiXHJcblx0XHRcdFx0XHRcdCpuZ0lmPVwiZmlsdGVyLnR5cGUgPT0gZ2V0VHlwZU51bWJlcigpIHx8IGZpbHRlci50eXBlID09IGdldFR5cGVEYXRlKClcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRNYXlvciBvIGlndWFsIGE8L29wdGlvblxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0PG9wdGlvblxyXG5cdFx0XHRcdFx0XHR2YWx1ZT1cIjdcIlxyXG5cdFx0XHRcdFx0XHQqbmdJZj1cImZpbHRlci50eXBlID09IGdldFR5cGVOdW1iZXIoKSB8fCBmaWx0ZXIudHlwZSA9PSBnZXRUeXBlRGF0ZSgpXCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0TWVub3IgYTwvb3B0aW9uXHJcblx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHQ8b3B0aW9uXHJcblx0XHRcdFx0XHRcdHZhbHVlPVwiOFwiXHJcblx0XHRcdFx0XHRcdCpuZ0lmPVwiZmlsdGVyLnR5cGUgPT0gZ2V0VHlwZU51bWJlcigpIHx8IGZpbHRlci50eXBlID09IGdldFR5cGVEYXRlKClcIlxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRNZW5vciBvIGlndWFsIGE8L29wdGlvblxyXG5cdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIjlcIj5FcyB2YWPDrW88L29wdGlvbj5cclxuXHRcdFx0XHQ8L3NlbGVjdD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHRcdDxkaXY+XHJcblx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRbdHlwZV09XCJnZXRUeXBlSW5wdXQoZmlsdGVyLnR5cGUpXCJcclxuXHRcdFx0XHRcdFtkaXNhYmxlZF09XCJmaWx0ZXIub3BlcmF0b3IgPT0gOVwiXHJcblx0XHRcdFx0XHRjbGFzcz1cImZvcm0tY29udHJvbCBpbnB1dC12YWx1ZSBpbnB1dC1zbVwiXHJcblx0XHRcdFx0XHRbKG5nTW9kZWwpXT1cImZpbHRlci52YWx1ZVwiXHJcblx0XHRcdFx0XHRbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLmxhYmVsXCJcclxuXHRcdFx0XHRcdHN0eWxlPVwid2lkdGg6IDE2NXB4O1wiXHJcblx0XHRcdFx0XHQoa2V5dXAuZW50ZXIpPVwic2VhcmNoKClcIlxyXG5cdFx0XHRcdC8+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBtbC1zbSBidXR0b25fZmlsdGVyXCI+XHJcblx0XHRcdFx0PGJ1dHRvblxyXG5cdFx0XHRcdFx0dHlwZT1cImJ1dHRvblwiXHJcblx0XHRcdFx0XHRjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi1zbSBidG4tcm91bmRlZFwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwiZGVsZXRlRmlsdGVyKGkpXCJcclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLW1pbnVzXCI+PC9zcGFuPlxyXG5cdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXNtIGJ0bi1yb3VuZGVkIG1sLXNtXCJcclxuXHRcdFx0XHRcdChjbGljayk9XCJhZGRGaWx0ZXIoKVwiXHJcblx0XHRcdFx0XHQqbmdJZj1cImkgKyAxID09IGxTZWdGaWx0ZXIubGVuZ3RoXCJcclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZhIGZhLXBsdXNcIj48L3NwYW4+XHJcblx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0PC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW46MCAwIDEwcHhcIiAqbmdJZj1cImFjdGl2ZVwiPlxyXG5cdDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgcGFuZWwtYnV0dG9uXCI+XHJcblx0XHQ8ZGl2IGNsYXNzPVwiYnRuLXRvb2xiYXJcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBidG4tY29uc3VsdFwiIChjbGljayk9XCJzZWFyY2goKVwiPlxyXG5cdFx0XHRcdFx0Q29uc3VsdGFyXHJcblx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcblx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBidG4tc20gYnRuLWRlbGV0ZVwiIChjbGljayk9XCJjbGVhbigpXCI+XHJcblx0XHRcdFx0XHRCb3JyYXIgZmlsdHJvc1xyXG5cdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG5cdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJidG4gYnRuLXdhcm5pbmcgYnRuLXNtIGJ0bi1jbGVhclwiXHJcblx0XHRcdFx0XHQoY2xpY2spPVwiZGVsZXRlQWxsKClcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdGxpbXBpYXIgZGF0b3NcclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQ8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,54 +0,0 @@
1
- import { Component, EventEmitter, Output } from '@angular/core';
2
- import * as XLSX from 'xlsx';
3
- import * as i0 from "@angular/core";
4
- export class ExcelToJsonComponent {
5
- constructor() {
6
- this.disableButton = false;
7
- this.onLoadFile = new EventEmitter();
8
- }
9
- ngOnInit() { }
10
- onFileChange(event) {
11
- this.excelWorkbook = [];
12
- /* wire up file reader */
13
- const target = event.target;
14
- if (target.files.length !== 1) {
15
- throw new Error('Cannot use multiple files');
16
- }
17
- this.disableButton = true;
18
- const reader = new FileReader();
19
- reader.onload = (e) => {
20
- /* read workbook */
21
- const bstr = e.target.result;
22
- const wb = XLSX.read(bstr, { type: 'binary', cellDates: true });
23
- /* read sheets */
24
- for (let i = 0; i < wb.SheetNames.length; i++) {
25
- /* grab sheet */
26
- const wsname = wb.SheetNames[i];
27
- const ws = wb.Sheets[wsname];
28
- /* save data */
29
- const sheet = {
30
- sheet: {
31
- label: wsname,
32
- content: (XLSX.utils.sheet_to_json(ws, { raw: true, defval: '', header: 1 }))
33
- }
34
- };
35
- this.excelWorkbook.push(sheet);
36
- }
37
- /* emit data to suscribers*/
38
- this.onLoadFile.emit({
39
- data: this.excelWorkbook
40
- });
41
- this.disableButton = false;
42
- };
43
- reader.readAsBinaryString(target.files[0]);
44
- }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcelToJsonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ExcelToJsonComponent, selector: "pli-excel-to-json", outputs: { onLoadFile: "onLoadFile" }, ngImport: i0, template: "<input type=\"file\" [disabled]=\"disableButton\" (change)=\"onFileChange($event)\" multiple=\"false\" />\r\n", styles: [""] }); }
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ExcelToJsonComponent, decorators: [{
49
- type: Component,
50
- args: [{ selector: 'pli-excel-to-json', template: "<input type=\"file\" [disabled]=\"disableButton\" (change)=\"onFileChange($event)\" multiple=\"false\" />\r\n" }]
51
- }], ctorParameters: () => [], propDecorators: { onLoadFile: [{
52
- type: Output
53
- }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtdG8tanNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wbGktY29tbW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZXhjZWwtdG8tanNvbi9leGNlbC10by1qc29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9leGNlbC10by1qc29uL2V4Y2VsLXRvLWpzb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOztBQU83QixNQUFNLE9BQU8sb0JBQW9CO0lBTWhDO1FBSkEsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFWixlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFbkQsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQztJQUViLFlBQVksQ0FBQyxLQUFVO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXhCLHlCQUF5QjtRQUN6QixNQUFNLE1BQU0sR0FBK0IsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUV4RCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsTUFBTSxNQUFNLEdBQWUsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUU1QyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDMUIsbUJBQW1CO1lBQ25CLE1BQU0sSUFBSSxHQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3JDLE1BQU0sRUFBRSxHQUFrQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFL0UsaUJBQWlCO1lBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMvQyxnQkFBZ0I7Z0JBQ2hCLE1BQU0sTUFBTSxHQUFXLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLE1BQU0sRUFBRSxHQUFtQixFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUU3QyxlQUFlO2dCQUNmLE1BQU0sS0FBSyxHQUFHO29CQUNiLEtBQUssRUFBRTt3QkFDTixLQUFLLEVBQUUsTUFBTTt3QkFDYixPQUFPLEVBQU8sQ0FDYixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQ2xFO3FCQUNEO2lCQUNELENBQUM7Z0JBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsQ0FBQztZQUVELDRCQUE0QjtZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDcEIsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhO2FBQ3hCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzVCLENBQUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQzsrR0F4RFcsb0JBQW9CO21HQUFwQixvQkFBb0IsZ0dDUmpDLCtHQUNBOzs0RkRPYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0MsbUJBQW1CO3dEQVFuQixVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ3BsaS1leGNlbC10by1qc29uJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vZXhjZWwtdG8tanNvbi5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vZXhjZWwtdG8tanNvbi5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEV4Y2VsVG9Kc29uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHRleGNlbFdvcmtib29rOiBBcnJheTxhbnk+O1xyXG5cdGRpc2FibGVCdXR0b24gPSBmYWxzZTtcclxuXHJcblx0QE91dHB1dCgpIG9uTG9hZEZpbGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge31cclxuXHJcblx0bmdPbkluaXQoKSB7fVxyXG5cclxuXHRvbkZpbGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG5cdFx0dGhpcy5leGNlbFdvcmtib29rID0gW107XHJcblxyXG5cdFx0Lyogd2lyZSB1cCBmaWxlIHJlYWRlciAqL1xyXG5cdFx0Y29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSA8RGF0YVRyYW5zZmVyPmV2ZW50LnRhcmdldDtcclxuXHJcblx0XHRpZiAodGFyZ2V0LmZpbGVzLmxlbmd0aCAhPT0gMSkge1xyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgbXVsdGlwbGUgZmlsZXMnKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmRpc2FibGVCdXR0b24gPSB0cnVlO1xyXG5cdFx0Y29uc3QgcmVhZGVyOiBGaWxlUmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcblx0XHRyZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xyXG5cdFx0XHQvKiByZWFkIHdvcmtib29rICovXHJcblx0XHRcdGNvbnN0IGJzdHI6IHN0cmluZyA9IGUudGFyZ2V0LnJlc3VsdDtcclxuXHRcdFx0Y29uc3Qgd2I6IFhMU1guV29ya0Jvb2sgPSBYTFNYLnJlYWQoYnN0ciwgeyB0eXBlOiAnYmluYXJ5JywgY2VsbERhdGVzOiB0cnVlIH0pO1xyXG5cclxuXHRcdFx0LyogcmVhZCBzaGVldHMgKi9cclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0LyogZ3JhYiBzaGVldCAqL1xyXG5cdFx0XHRcdGNvbnN0IHdzbmFtZTogc3RyaW5nID0gd2IuU2hlZXROYW1lc1tpXTtcclxuXHRcdFx0XHRjb25zdCB3czogWExTWC5Xb3JrU2hlZXQgPSB3Yi5TaGVldHNbd3NuYW1lXTtcclxuXHJcblx0XHRcdFx0Lyogc2F2ZSBkYXRhICovXHJcblx0XHRcdFx0Y29uc3Qgc2hlZXQgPSB7XHJcblx0XHRcdFx0XHRzaGVldDoge1xyXG5cdFx0XHRcdFx0XHRsYWJlbDogd3NuYW1lLFxyXG5cdFx0XHRcdFx0XHRjb250ZW50OiA8YW55PihcclxuXHRcdFx0XHRcdFx0XHRYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24od3MsIHsgcmF3OiB0cnVlLCBkZWZ2YWw6ICcnLCBoZWFkZXI6IDEgfSlcclxuXHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH07XHJcblxyXG5cdFx0XHRcdHRoaXMuZXhjZWxXb3JrYm9vay5wdXNoKHNoZWV0KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogZW1pdCBkYXRhIHRvIHN1c2NyaWJlcnMqL1xyXG5cdFx0XHR0aGlzLm9uTG9hZEZpbGUuZW1pdCh7XHJcblx0XHRcdFx0ZGF0YTogdGhpcy5leGNlbFdvcmtib29rXHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0dGhpcy5kaXNhYmxlQnV0dG9uID0gZmFsc2U7XHJcblx0XHR9O1xyXG5cclxuXHRcdHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcodGFyZ2V0LmZpbGVzWzBdKTtcclxuXHR9XHJcbn1cclxuIiwiPGlucHV0IHR5cGU9XCJmaWxlXCIgW2Rpc2FibGVkXT1cImRpc2FibGVCdXR0b25cIiAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCIgbXVsdGlwbGU9XCJmYWxzZVwiIC8+XHJcbiJdfQ==
@@ -1,88 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { CommonListsComponent } from './common.lists.component';
3
- import { ApplicationBudgetTotal } from 'ng-pli-util';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../services/common.service";
6
- export class FrontofficeCommonsComponent extends CommonListsComponent {
7
- constructor(commonService, cdRef) {
8
- super(commonService, cdRef);
9
- this.commonService = commonService;
10
- this.cdRef = cdRef;
11
- this.toastDuration = 10000;
12
- }
13
- ngOnInit() {
14
- super.ngOnInit();
15
- }
16
- createApplicationBudgetTotalAmount(applicationId, budget, creditAccepted, totalAmount = undefined, totalOwnFunds = undefined, totalFinancing = undefined) {
17
- const budgetApp = this.createBudgetApplication(budget, creditAccepted, totalAmount, totalOwnFunds, totalFinancing);
18
- budget = budgetApp.budget;
19
- const applicationBudgetTotalAmount = {
20
- applicationBudgetTotal: budgetApp.applicationBudgetTotal,
21
- applicationId: applicationId,
22
- creditAccepted: creditAccepted
23
- };
24
- return {
25
- applicationBudgetTotalAmount: applicationBudgetTotalAmount,
26
- budget: budget
27
- };
28
- }
29
- createBudgetApplication(budget, creditAccepted, totalAmount = undefined, totalOwnFunds = undefined, totalFinancing = undefined) {
30
- // Choose if the total budget is from application or legalization process
31
- const isApplicationProcess = creditAccepted == undefined || creditAccepted == false;
32
- let appProcessBudgetTotal = isApplicationProcess
33
- ? budget.applicationProcess
34
- : budget.legalizationProcess;
35
- // Init the amount or add new values
36
- if (appProcessBudgetTotal == undefined || appProcessBudgetTotal == null) {
37
- totalAmount = totalAmount == undefined ? 0 : totalAmount;
38
- totalOwnFunds = totalOwnFunds == undefined ? 0 : totalOwnFunds;
39
- totalFinancing = totalFinancing == undefined ? 0 : totalFinancing;
40
- appProcessBudgetTotal = new ApplicationBudgetTotal();
41
- }
42
- else {
43
- totalAmount =
44
- totalAmount == undefined ? appProcessBudgetTotal.totalAmount : totalAmount;
45
- totalOwnFunds =
46
- totalOwnFunds == undefined ? appProcessBudgetTotal.totalOwnFunds : totalOwnFunds;
47
- totalFinancing =
48
- totalFinancing == undefined ? appProcessBudgetTotal.totalFinancing : totalFinancing;
49
- }
50
- appProcessBudgetTotal.totalAmount = totalAmount;
51
- appProcessBudgetTotal.totalOwnFunds = totalOwnFunds;
52
- appProcessBudgetTotal.totalFinancing = totalFinancing;
53
- if (isApplicationProcess) {
54
- budget.applicationProcess = appProcessBudgetTotal;
55
- }
56
- else {
57
- budget.legalizationProcess = appProcessBudgetTotal;
58
- }
59
- return {
60
- applicationBudgetTotal: appProcessBudgetTotal,
61
- budget: budget
62
- };
63
- }
64
- /**
65
- * Call the validataion service
66
- * @param cnfIniStateId Initial config status id, if not exist, get the config status id from the service
67
- * @returns True if actual date is before than end application date and the stateAppId is equals of the cnfIniStateId
68
- */
69
- async validateCloseApplicationProcess(cnfIniStateId) {
70
- let response = await this.commonService
71
- .validateCloseApplicationProcess(this.promCodigo, this.stateId, cnfIniStateId)
72
- .toPromise();
73
- this.dateClose = response.closeApplicationDate;
74
- return new Promise((resolve) => {
75
- resolve(response.userAllowSave);
76
- });
77
- }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FrontofficeCommonsComponent, deps: [{ token: i1.CommonService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FrontofficeCommonsComponent, selector: "app-frontoffice-commons", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
80
- }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FrontofficeCommonsComponent, decorators: [{
82
- type: Component,
83
- args: [{
84
- selector: 'app-frontoffice-commons',
85
- template: ''
86
- }]
87
- }], ctorParameters: () => [{ type: i1.CommonService }, { type: i0.ChangeDetectorRef }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbnRvZmZpY2UuY29tbW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wbGktY29tbW9ucy9zcmMvbGliL2NvbXBvbmVudHMvZnJvbnRvZmZpY2UuY29tbW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFxQixzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBTXhFLE1BQU0sT0FBZ0IsMkJBQTRCLFNBQVEsb0JBQW9CO0lBUTdFLFlBQXNCLGFBQTRCLEVBQVksS0FBd0I7UUFDckYsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQURQLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVksVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFQdEYsa0JBQWEsR0FBVyxLQUFLLENBQUM7SUFTOUIsQ0FBQztJQUVELFFBQVE7UUFDUCxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGtDQUFrQyxDQUNqQyxhQUFxQixFQUNyQixNQUF5QixFQUN6QixjQUF1QixFQUN2QixjQUFzQixTQUFTLEVBQy9CLGdCQUF3QixTQUFTLEVBQ2pDLGlCQUF5QixTQUFTO1FBRWxDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FDN0MsTUFBTSxFQUNOLGNBQWMsRUFDZCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGNBQWMsQ0FDZCxDQUFDO1FBQ0YsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDMUIsTUFBTSw0QkFBNEIsR0FBRztZQUNwQyxzQkFBc0IsRUFBRSxTQUFTLENBQUMsc0JBQXNCO1lBQ3hELGFBQWEsRUFBRSxhQUFhO1lBQzVCLGNB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dXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uSW5pdCwgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb21tb25MaXN0c0NvbXBvbmVudCB9IGZyb20gJy4vY29tbW9uLmxpc3RzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uQnVkZ2V0LCBBcHBsaWNhdGlvbkJ1ZGdldFRvdGFsIH0gZnJvbSAnbmctcGxpLXV0aWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcHAtZnJvbnRvZmZpY2UtY29tbW9ucycsXHJcblx0dGVtcGxhdGU6ICcnXHJcbn0pXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGcm9udG9mZmljZUNvbW1vbnNDb21wb25lbnQgZXh0ZW5kcyBDb21tb25MaXN0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblx0dG9hc3REdXJhdGlvbjogbnVtYmVyID0gMTAwMDA7XHJcblx0Ly8gVHJ1ZSBJZiBhY3R1YWwgZGF0ZSBpcyBiZWZvcmUgdGhhbiBlbmQgYXBwbGljYXRpb24gZGF0ZVxyXG5cdGRhdGVDbG9zZTogYm9vbGVhbjtcclxuXHRwcm9tQ29kaWdvOiBudW1iZXI7XHJcblx0c3RhdGVJZDogbnVtYmVyO1xyXG5cdHN0YXRlTmFtZTogc3RyaW5nO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSwgcHJvdGVjdGVkIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG5cdFx0c3VwZXIoY29tbW9uU2VydmljZSwgY2RSZWYpO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHRzdXBlci5uZ09uSW5pdCgpO1xyXG5cdH1cclxuXHJcblx0Y3JlYXRlQXBwbGljYXRpb25CdWRnZXRUb3RhbEFtb3VudChcclxuXHRcdGFwcGxpY2F0aW9uSWQ6IHN0cmluZyxcclxuXHRcdGJ1ZGdldDogQXBwbGljYXRpb25CdWRnZXQsXHJcblx0XHRjcmVkaXRBY2NlcHRlZDogYm9vbGVhbixcclxuXHRcdHRvdGFsQW1vdW50OiBudW1iZXIgPSB1bmRlZmluZWQsXHJcblx0XHR0b3RhbE93bkZ1bmRzOiBudW1iZXIgPSB1bmRlZmluZWQsXHJcblx0XHR0b3RhbEZpbmFuY2luZzogbnVtYmVyID0gdW5kZWZpbmVkXHJcblx0KTogYW55IHtcclxuXHRcdGNvbnN0IGJ1ZGdldEFwcCA9IHRoaXMuY3JlYXRlQnVkZ2V0QXBwbGljYXRpb24oXHJcblx0XHRcdGJ1ZGdldCxcclxuXHRcdFx0Y3JlZGl0QWNjZXB0ZWQsXHJcblx0XHRcdHRvdGFsQW1vdW50LFxyXG5cdFx0XHR0b3RhbE93bkZ1bmRzLFxyXG5cdFx0XHR0b3RhbEZpbmFuY2luZ1xyXG5cdFx0KTtcclxuXHRcdGJ1ZGdldCA9IGJ1ZGdldEFwcC5idWRnZXQ7XHJcblx0XHRjb25zdCBhcHBsaWNhdGlvbkJ1ZGdldFRvdGFsQW1vdW50ID0ge1xyXG5cdFx0XHRhcHBsaWNhdGlvbkJ1ZGdldFRvdGFsOiBidWRnZXRBcHAuYXBwbGljYXRpb25CdWRnZXRUb3RhbCxcclxuXHRcdFx0YXBwbGljYXRpb25JZDogYXBwbGljYXRpb25JZCxcclxuXHRcdFx0Y3JlZGl0QWNjZXB0ZWQ6IGNyZWRpdEFjY2VwdGVkXHJcblx0XHR9O1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0YXBwbGljYXRpb25CdWRnZXRUb3RhbEFtb3VudDogYXBwbGljYXRpb25CdWRnZXRUb3RhbEFtb3VudCxcclxuXHRcdFx0YnVkZ2V0OiBidWRnZXRcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRjcmVhdGVCdWRnZXRBcHBsaWNhdGlvbihcclxuXHRcdGJ1ZGdldDogQXBwbGljYXRpb25CdWRnZXQsXHJcblx0XHRjcmVkaXRBY2NlcHRlZDogYm9vbGVhbixcclxuXHRcdHRvdGFsQW1vdW50OiBudW1iZXIgPSB1bmRlZmluZWQsXHJcblx0XHR0b3RhbE93bkZ1bmRzOiBudW1iZXIgPSB1bmRlZmluZWQsXHJcblx0XHR0b3RhbEZpbmFuY2luZzogbnVtYmVyID0gdW5kZWZpbmVkXHJcblx0KTogYW55IHtcclxuXHRcdC8vIENob29zZSBpZiB0aGUgdG90YWwgYnVkZ2V0IGlzIGZyb20gYXBwbGljYXRpb24gb3IgbGVnYWxpemF0aW9uIHByb2Nlc3NcclxuXHRcdGNvbnN0IGlzQXBwbGljYXRpb25Qcm9jZXNzID0gY3JlZGl0QWNjZXB0ZWQgPT0gdW5kZWZpbmVkIHx8IGNyZWRpdEFjY2VwdGVkID09IGZhbHNlO1xyXG5cdFx0bGV0IGFwcFByb2Nlc3NCdWRnZXRUb3RhbCA9IGlzQXBwbGljYXRpb25Qcm9jZXNzXHJcblx0XHRcdD8gYnVkZ2V0LmFwcGxpY2F0aW9uUHJvY2Vzc1xyXG5cdFx0XHQ6IGJ1ZGdldC5sZWdhbGl6YXRpb25Qcm9jZXNzO1xyXG5cdFx0Ly8gSW5pdCB0aGUgYW1vdW50IG9yIGFkZCBuZXcgdmFsdWVzXHJcblx0XHRpZiAoYXBwUHJvY2Vzc0J1ZGdldFRvdGFsID09IHVuZGVmaW5lZCB8fCBhcHBQcm9jZXNzQnVkZ2V0VG90YWwgPT0gbnVsbCkge1xyXG5cdFx0XHR0b3RhbEFtb3VudCA9IHRvdGFsQW1vdW50ID09IHVuZGVmaW5lZCA/IDAgOiB0b3RhbEFtb3VudDtcclxuXHRcdFx0dG90YWxPd25GdW5kcyA9IHRvdGFsT3duRnVuZHMgPT0gdW5kZWZpbmVkID8gMCA6IHRvdGFsT3duRnVuZHM7XHJcblx0XHRcdHRvdGFsRmluYW5jaW5nID0gdG90YWxGaW5hbmNpbmcgPT0gdW5kZWZpbmVkID8gMCA6IHRvdGFsRmluYW5jaW5nO1xyXG5cdFx0XHRhcHBQcm9jZXNzQnVkZ2V0VG90YWwgPSBuZXcgQXBwbGljYXRpb25CdWRnZXRUb3RhbCgpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dG90YWxBbW91bnQgPVxyXG5cdFx0XHRcdHRvdGFsQW1vdW50ID09IHVuZGVmaW5lZCA/IGFwcFByb2Nlc3NCdWRnZXRUb3RhbC50b3RhbEFtb3VudCA6IHRvdGFsQW1vdW50O1xyXG5cdFx0XHR0b3RhbE93bkZ1bmRzID1cclxuXHRcdFx0XHR0b3RhbE93bkZ1bmRzID09IHVuZGVmaW5lZCA/IGFwcFByb2Nlc3NCdWRnZXRUb3RhbC50b3RhbE93bkZ1bmRzIDogdG90YWxPd25GdW5kcztcclxuXHRcdFx0dG90YWxGaW5hbmNpbmcgPVxyXG5cdFx0XHRcdHRvdGFsRmluYW5jaW5nID09IHVuZGVmaW5lZCA/IGFwcFByb2Nlc3NCdWRnZXRUb3RhbC50b3RhbEZpbmFuY2luZyA6IHRvdGFsRmluYW5jaW5nO1xyXG5cdFx0fVxyXG5cdFx0YXBwUHJvY2Vzc0J1ZGdldFRvdGFsLnRvdGFsQW1vdW50ID0gdG90YWxBbW91bnQ7XHJcblx0XHRhcHBQcm9jZXNzQnVkZ2V0VG90YWwudG90YWxPd25GdW5kcyA9IHRvdGFsT3duRnVuZHM7XHJcblx0XHRhcHBQcm9jZXNzQnVkZ2V0VG90YWwudG90YWxGaW5hbmNpbmcgPSB0b3RhbEZpbmFuY2luZztcclxuXHRcdGlmIChpc0FwcGxpY2F0aW9uUHJvY2Vzcykge1xyXG5cdFx0XHRidWRnZXQuYXBwbGljYXRpb25Qcm9jZXNzID0gYXBwUHJvY2Vzc0J1ZGdldFRvdGFsO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0YnVkZ2V0LmxlZ2FsaXphdGlvblByb2Nlc3MgPSBhcHBQcm9jZXNzQnVkZ2V0VG90YWw7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRhcHBsaWNhdGlvbkJ1ZGdldFRvdGFsOiBhcHBQcm9jZXNzQnVkZ2V0VG90YWwsXHJcblx0XHRcdGJ1ZGdldDogYnVkZ2V0XHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbCB0aGUgdmFsaWRhdGFpb24gc2VydmljZVxyXG5cdCAqIEBwYXJhbSBjbmZJbmlTdGF0ZUlkIEluaXRpYWwgY29uZmlnIHN0YXR1cyBpZCwgaWYgbm90IGV4aXN0LCBnZXQgdGhlIGNvbmZpZyBzdGF0dXMgaWQgZnJvbSB0aGUgc2VydmljZVxyXG5cdCAqIEByZXR1cm5zIFRydWUgaWYgYWN0dWFsIGRhdGUgaXMgYmVmb3JlIHRoYW4gZW5kIGFwcGxpY2F0aW9uIGRhdGUgYW5kIHRoZSBzdGF0ZUFwcElkIGlzIGVxdWFscyBvZiB0aGUgY25mSW5pU3RhdGVJZFxyXG5cdCAqL1xyXG5cdGFzeW5jIHZhbGlkYXRlQ2xvc2VBcHBsaWNhdGlvblByb2Nlc3MoY25mSW5pU3RhdGVJZD86IG51bWJlcik6IFByb21pc2U8YW55PiB7XHJcblx0XHRsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbW1vblNlcnZpY2VcclxuXHRcdFx0LnZhbGlkYXRlQ2xvc2VBcHBsaWNhdGlvblByb2Nlc3ModGhpcy5wcm9tQ29kaWdvLCB0aGlzLnN0YXRlSWQsIGNuZkluaVN0YXRlSWQpXHJcblx0XHRcdC50b1Byb21pc2UoKTtcclxuXHRcdHRoaXMuZGF0ZUNsb3NlID0gcmVzcG9uc2UuY2xvc2VBcHBsaWNhdGlvbkRhdGU7XHJcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuXHRcdFx0cmVzb2x2ZShyZXNwb25zZS51c2VyQWxsb3dTYXZlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -1,162 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- //import { PDFDocumentProxy } from 'ng2-pdf-viewer';
3
- // import {
4
- // GoogleVisionParameters,
5
- // GoogleVisionRequest,
6
- // GoogleVisionResponse,
7
- // GoogleVisionResponseData
8
- // } from 'ng-pli-util';
9
- import Cropper from 'cropperjs';
10
- import html2canvas from 'html2canvas';
11
- import "jquery";
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "../../services/pdf-analyzer.service";
14
- import * as i2 from "@angular/common";
15
- import * as i3 from "@angular/forms";
16
- export class PdfAnalyzerComponent {
17
- constructor(pdfAnalyzerService) {
18
- this.pdfAnalyzerService = pdfAnalyzerService;
19
- this.totalPages = 0;
20
- this.currentpage = 1;
21
- this.isCropImage = false;
22
- this.instructivo = true;
23
- this.render_text = true;
24
- this.show_all = false;
25
- this.original_size = true;
26
- this.fit_to_page = false;
27
- this.pdfSrc = "";
28
- this.textToCompare = "";
29
- this.labelToCompare = "";
30
- // @Input()
31
- // textToCompare: String = "";
32
- // @Input()
33
- // textToCompare: String = "";
34
- this.documentAnalyzed = new EventEmitter();
35
- }
36
- ngOnInit() {
37
- }
38
- // Zoom Out Image
39
- zoomOut() {
40
- this.cropper.zoom(0.1);
41
- }
42
- // Zoom In Image
43
- zoomIn() {
44
- this.cropper.zoom(-0.1);
45
- }
46
- // Range slider for zooming the image
47
- onRange(event) {
48
- this.cropper.zoomTo(event.target.value);
49
- }
50
- // perform the rotate functionality on image
51
- onRotate() {
52
- this.cropper.rotate(-90);
53
- }
54
- // show the previous page
55
- previous() {
56
- if (this.currentpage > 0) {
57
- if (this.currentpage == 1) {
58
- this.currentpage = this.totalPages;
59
- }
60
- else {
61
- this.currentpage--;
62
- }
63
- }
64
- }
65
- // show the next page
66
- next() {
67
- if (this.totalPages > this.currentpage) {
68
- this.currentpage++;
69
- }
70
- else {
71
- this.currentpage = 1;
72
- }
73
- }
74
- crop() {
75
- html2canvas(document.querySelector(".pdf-container")).then((canvas) => {
76
- let ctx = canvas.getContext('2d');
77
- ctx.scale(3, 3);
78
- let image = canvas.toDataURL("image/png").replace("image/png", "image/png");
79
- $("#cropper-img").attr('src', image);
80
- $('#cropper-img').addClass('ready');
81
- this.isCropImage = true;
82
- let cropImg = document.getElementById('cropper-img');
83
- this.cropper = new Cropper(cropImg, {
84
- zoomable: true,
85
- background: false,
86
- guides: false,
87
- highlight: false,
88
- movable: false,
89
- aspectRatio: 4 / 3,
90
- ready: (e) => {
91
- let cropper = this.cropper;
92
- },
93
- crop: (e) => {
94
- }
95
- });
96
- });
97
- }
98
- saveCapture() {
99
- if (this.isCropImage) {
100
- let canvas = this.cropper.getCroppedCanvas();
101
- this.getCanvasToImage(canvas);
102
- }
103
- else {
104
- html2canvas(document.querySelector(".pdf-container")).then((canvas) => {
105
- this.getCanvasToImage(canvas);
106
- });
107
- }
108
- }
109
- getCanvasToImage(canvas) {
110
- let ctx = canvas.getContext('2d');
111
- ctx.scale(3, 3);
112
- let image = canvas.toDataURL("image/png").replace("image/png", "image/png");
113
- this.capture = image;
114
- console.log(image);
115
- }
116
- reset() {
117
- this.isCropImage = false;
118
- this.capture = null;
119
- this.cropper.clear();
120
- this.cropper.destroy();
121
- }
122
- // afterLoadComplete(pdf: PDFDocumentProxy) {
123
- // this.totalPages = pdf.numPages;
124
- // }
125
- validateImage() {
126
- let base64 = this.capture.substring(22, this.capture.length);
127
- this.documentAnalyzed.emit(base64);
128
- // let parameters: any = {
129
- // requests: [
130
- // {
131
- // image: {
132
- // content: base64
133
- // },
134
- // features: [
135
- // {
136
- // type: "TEXT_DETECTION"
137
- // }
138
- // ]
139
- // }
140
- // ]
141
- // }
142
- // this.pdfAnalyzerService.getTextOfImage(parameters).subscribe((response: any) => {
143
- // let textDetected = response[0].fullTextAnnotation.text;
144
- // console.log(textDetected);
145
- // });
146
- }
147
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PdfAnalyzerComponent, deps: [{ token: i1.PdfAnalyzerService }], target: i0.ɵɵFactoryTarget.Component }); }
148
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PdfAnalyzerComponent, selector: "pli-pdf-analyzer", inputs: { pdfSrc: "pdfSrc", textToCompare: "textToCompare", labelToCompare: "labelToCompare" }, outputs: { documentAnalyzed: "documentAnalyzed" }, ngImport: i0, template: "<div>\r\n\r\n <div class=\"checkInstructivo\">\r\n <label>\r\n <input type=\"checkbox\" [(ngModel)]=\"instructivo\" />Instructivo\r\n </label>\r\n </div>\r\n <div *ngIf=\"!instructivo\" class=\"description\">\r\n Seleccionar la parte del documento donde se encuentra <strong>{{labelToCompare}}</strong>\r\n\r\n </div>\r\n <div *ngIf=\"instructivo\" class=\"description\">\r\n 1. Darle clic en el bot\u00F3n <span class=\"fa fa-crop\"></span>\r\n <br> 2. Seleccionar la parte del documento donde se encuentra <strong>{{labelToCompare}}</strong> con el mouse dando clic y arrastrando hasta completar la selecci\u00F3n o cambiando de tama\u00F1o el recuadro que aparece en pantalla\r\n <br> 3. Una vez seleccionado dar clic en el bot\u00F3n <span class=\"fa fa-camera\"></span> para previsualizarlo mejor\r\n <br> 4. En caso de haberse equivocado puede darle clic al bot\u00F3n rojo \"Reintentar\" o al bot\u00F3n <span class=\"fa fa-undo\"></span> para volver al paso 1\r\n <br> 5. Cuando ya este correcta la selecci\u00F3n darle clic al bot\u00F3n verde \"Guardar Captura\" para proceder con el proceso\r\n </div>\r\n <div class=\"pdf-visualizer-controls\">\r\n <a href=\"Javascript:;\" title=\"Anterior\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" (click)=\"previous()\">\r\n <span class=\"fa fa-angle-left\"></span>\r\n </a>\r\n <span class=\"btn btn-outline-secondary\">P\u00E1gina: {{currentpage}} / {{totalPages}}</span>\r\n <a href=\"Javascript:;\" title=\"Siguiente\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" (click)=\"next()\">\r\n <span class=\"fa fa-angle-right\"></span>\r\n </a>\r\n\r\n <a href=\"Javascript:;\" title=\"Acercar\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" *ngIf=\"isCropImage && !capture\" (click)=\"zoomOut()\">\r\n <span class=\"fa fa-search-plus\"></span>\r\n </a>\r\n\r\n\r\n <a href=\"Javascript:;\" title=\"Alejar\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" *ngIf=\"isCropImage && !capture\" (click)=\"zoomIn()\">\r\n <span class=\"fa fa-search-minus\"></span>\r\n </a>\r\n </div>\r\n <div class=\"pdf-visualizer-controls\">\r\n <a href=\"Javascript:;\" title=\"Capturar\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" *ngIf=\"!isCropImage\" (click)=\"crop()\">\r\n <span class=\"fa fa-crop fa-2x\"></span>\r\n </a>\r\n <a href=\"Javascript:;\" title=\"Guardar Captura\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" *ngIf=\"isCropImage && !capture\" (click)=\"saveCapture()\">\r\n <span class=\"fa fa-camera fa-2x\"></span>\r\n </a>\r\n <a href=\"Javascript:;\" title=\"Deshacer\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" *ngIf=\"isCropImage\" (click)=\"reset()\">\r\n <span class=\"fa fa-undo fa-2x\"></span>\r\n </a>\r\n </div>\r\n\r\n\r\n <div class=\"pdf-visualizer-dashboard\" *ngIf=\"!capture\">\r\n <div class=\"pdf-container pdf-visualizer-canvas top-margin\" [hidden]=\"isCropImage\">\r\n <!-- <pdf-viewer [(src)]=\"pdfSrc\" [(render-text)]=\"render_text\" [(page)]=\"currentpage\" [(show-all)]=\"show_all\" [(original-size)]=\"original_size\" [(fit-to-page)]=\"fit_to_page\" (after-load-complete)=\"afterLoadComplete($event)\" style=\"display: block;\">\r\n </pdf-viewer> -->\r\n </div>\r\n\r\n <div class=\"img-container\" [hidden]=\"!isCropImage\">\r\n <img #image src=\"\" id=\"cropper-img\" crossorigin>\r\n </div>\r\n </div>\r\n\r\n <div class=\"img-visualizer-dashboard\" *ngIf=\"capture\">\r\n <img [src]=\"capture\">\r\n </div>\r\n <div class=\"img-visualizer-dashboard\" *ngIf=\"capture\">\r\n <button class=\"btns btn-success btn-lg\" (click)=\"validateImage()\" lang=\"es\">Guardar Captura</button>\r\n\r\n <button class=\"btnr btn-success btn-lg\" (click)=\"reset()\" lang=\"es\">Reintentar</button>\r\n </div>\r\n</div>", styles: [".img-visualizer-dashboard,.pdf-visualizer-dashboard,.pdf-visualizer-controls{background-color:#f5f5f5;padding:15px}.pdf-visualizer-dashboard{border-bottom:1px solid #eee;border-top:1px solid #eee}.img-visualizer-dashboard{text-align:center;border-bottom:1px solid #eee;border-top:1px solid #eee}.pdf-visualizer-canvas{cursor:move}button.btns{background-color:green;color:#fff;position:relative;left:0;margin:15px}button.btns:hover{background-color:#006400}button.btnr{background-color:red;color:#fff;position:relative;left:0;margin:15px}button.btnr:hover{background-color:#8b0000}.description{padding:0 10px;font-size:14px;font-weight:300;font-family:Roboto,sans-serif;margin-bottom:1.5em}.checkInstructivo{float:right;text-align:right}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
149
- }
150
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PdfAnalyzerComponent, decorators: [{
151
- type: Component,
152
- args: [{ selector: 'pli-pdf-analyzer', template: "<div>\r\n\r\n <div class=\"checkInstructivo\">\r\n <label>\r\n <input type=\"checkbox\" [(ngModel)]=\"instructivo\" />Instructivo\r\n </label>\r\n </div>\r\n <div *ngIf=\"!instructivo\" class=\"description\">\r\n Seleccionar la parte del documento donde se encuentra <strong>{{labelToCompare}}</strong>\r\n\r\n </div>\r\n <div *ngIf=\"instructivo\" class=\"description\">\r\n 1. Darle clic en el bot\u00F3n <span class=\"fa fa-crop\"></span>\r\n <br> 2. Seleccionar la parte del documento donde se encuentra <strong>{{labelToCompare}}</strong> con el mouse dando clic y arrastrando hasta completar la selecci\u00F3n o cambiando de tama\u00F1o el recuadro que aparece en pantalla\r\n <br> 3. Una vez seleccionado dar clic en el bot\u00F3n <span class=\"fa fa-camera\"></span> para previsualizarlo mejor\r\n <br> 4. En caso de haberse equivocado puede darle clic al bot\u00F3n rojo \"Reintentar\" o al bot\u00F3n <span class=\"fa fa-undo\"></span> para volver al paso 1\r\n <br> 5. Cuando ya este correcta la selecci\u00F3n darle clic al bot\u00F3n verde \"Guardar Captura\" para proceder con el proceso\r\n </div>\r\n <div class=\"pdf-visualizer-controls\">\r\n <a href=\"Javascript:;\" title=\"Anterior\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" (click)=\"previous()\">\r\n <span class=\"fa fa-angle-left\"></span>\r\n </a>\r\n <span class=\"btn btn-outline-secondary\">P\u00E1gina: {{currentpage}} / {{totalPages}}</span>\r\n <a href=\"Javascript:;\" title=\"Siguiente\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" (click)=\"next()\">\r\n <span class=\"fa fa-angle-right\"></span>\r\n </a>\r\n\r\n <a href=\"Javascript:;\" title=\"Acercar\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" *ngIf=\"isCropImage && !capture\" (click)=\"zoomOut()\">\r\n <span class=\"fa fa-search-plus\"></span>\r\n </a>\r\n\r\n\r\n <a href=\"Javascript:;\" title=\"Alejar\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" *ngIf=\"isCropImage && !capture\" (click)=\"zoomIn()\">\r\n <span class=\"fa fa-search-minus\"></span>\r\n </a>\r\n </div>\r\n <div class=\"pdf-visualizer-controls\">\r\n <a href=\"Javascript:;\" title=\"Capturar\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" *ngIf=\"!isCropImage\" (click)=\"crop()\">\r\n <span class=\"fa fa-crop fa-2x\"></span>\r\n </a>\r\n <a href=\"Javascript:;\" title=\"Guardar Captura\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" *ngIf=\"isCropImage && !capture\" (click)=\"saveCapture()\">\r\n <span class=\"fa fa-camera fa-2x\"></span>\r\n </a>\r\n <a href=\"Javascript:;\" title=\"Deshacer\" data-toggle=\"tooltip\" data-placement=\"top\" class=\"btn btn-outline-secondary\" *ngIf=\"isCropImage\" (click)=\"reset()\">\r\n <span class=\"fa fa-undo fa-2x\"></span>\r\n </a>\r\n </div>\r\n\r\n\r\n <div class=\"pdf-visualizer-dashboard\" *ngIf=\"!capture\">\r\n <div class=\"pdf-container pdf-visualizer-canvas top-margin\" [hidden]=\"isCropImage\">\r\n <!-- <pdf-viewer [(src)]=\"pdfSrc\" [(render-text)]=\"render_text\" [(page)]=\"currentpage\" [(show-all)]=\"show_all\" [(original-size)]=\"original_size\" [(fit-to-page)]=\"fit_to_page\" (after-load-complete)=\"afterLoadComplete($event)\" style=\"display: block;\">\r\n </pdf-viewer> -->\r\n </div>\r\n\r\n <div class=\"img-container\" [hidden]=\"!isCropImage\">\r\n <img #image src=\"\" id=\"cropper-img\" crossorigin>\r\n </div>\r\n </div>\r\n\r\n <div class=\"img-visualizer-dashboard\" *ngIf=\"capture\">\r\n <img [src]=\"capture\">\r\n </div>\r\n <div class=\"img-visualizer-dashboard\" *ngIf=\"capture\">\r\n <button class=\"btns btn-success btn-lg\" (click)=\"validateImage()\" lang=\"es\">Guardar Captura</button>\r\n\r\n <button class=\"btnr btn-success btn-lg\" (click)=\"reset()\" lang=\"es\">Reintentar</button>\r\n </div>\r\n</div>", styles: [".img-visualizer-dashboard,.pdf-visualizer-dashboard,.pdf-visualizer-controls{background-color:#f5f5f5;padding:15px}.pdf-visualizer-dashboard{border-bottom:1px solid #eee;border-top:1px solid #eee}.img-visualizer-dashboard{text-align:center;border-bottom:1px solid #eee;border-top:1px solid #eee}.pdf-visualizer-canvas{cursor:move}button.btns{background-color:green;color:#fff;position:relative;left:0;margin:15px}button.btns:hover{background-color:#006400}button.btnr{background-color:red;color:#fff;position:relative;left:0;margin:15px}button.btnr:hover{background-color:#8b0000}.description{padding:0 10px;font-size:14px;font-weight:300;font-family:Roboto,sans-serif;margin-bottom:1.5em}.checkInstructivo{float:right;text-align:right}\n"] }]
153
- }], ctorParameters: () => [{ type: i1.PdfAnalyzerService }], propDecorators: { pdfSrc: [{
154
- type: Input
155
- }], textToCompare: [{
156
- type: Input
157
- }], labelToCompare: [{
158
- type: Input
159
- }], documentAnalyzed: [{
160
- type: Output
161
- }] } });
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLWFuYWx5emVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9wZGYtYW5hbHl6ZXIvcGRmLWFuYWx5emVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXBsaS1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9wZGYtYW5hbHl6ZXIvcGRmLWFuYWx5emVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQVUsS0FBSyxFQUN4QixNQUFNLEVBQ04sWUFBWSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLG9EQUFvRDtBQUNwRCxXQUFXO0FBQ1gsNEJBQTRCO0FBQzVCLHlCQUF5QjtBQUN6QiwwQkFBMEI7QUFDMUIsNkJBQTZCO0FBQzdCLHdCQUF3QjtBQUN4QixPQUFPLE9BQU8sTUFBTSxXQUFXLENBQUM7QUFDaEMsT0FBTyxXQUFXLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sUUFBUSxDQUFDOzs7OztBQVFoQixNQUFNLE9BQU8sb0JBQW9CO0lBa0MvQixZQUFvQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQS9CbkQsZUFBVSxHQUFXLENBQUMsQ0FBQztRQUN2QixnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUV4QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUc3QixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUVuQyxnQkFBVyxHQUFZLElBQUksQ0FBQztRQUM1QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRzdCLFdBQU0sR0FBUSxFQUFFLENBQUM7UUFHakIsa0JBQWEsR0FBVyxFQUFFLENBQUM7UUFHM0Is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QUFJLE1BQU0sR0FBWSxJQUFJLENBQUMsT0FBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFHLElBQUksQ0FBQyxPQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsMEJBQTBCO1FBQzFCLGdCQUFnQjtRQUNoQixRQUFRO1FBQ1IsaUJBQWlCO1FBQ2pCLDBCQUEwQjtRQUMxQixXQUFXO1FBQ1gsb0JBQW9CO1FBQ3BCLFlBQVk7UUFDWixtQ0FBbUM7UUFDbkMsWUFBWTtRQUNaLFVBQVU7UUFDVixRQUFRO1FBQ1IsTUFBTTtRQUNOLElBQUk7UUFFSixvRkFBb0Y7UUFDcEYsNERBQTREO1FBRTVELCtCQUErQjtRQUMvQixNQUFNO0lBRVIsQ0FBQzsrR0EvSlUsb0JBQW9CO21HQUFwQixvQkFBb0IsMk1DdEJqQyxpdklBb0VNOzs0RkQ5Q08sb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjt1RkFxQjVCLE1BQU07c0JBREwsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQVVOLGdCQUFnQjtzQkFEZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG4vL2ltcG9ydCB7IFBERkRvY3VtZW50UHJveHkgfSBmcm9tICduZzItcGRmLXZpZXdlcic7XHJcbi8vIGltcG9ydCB7XHJcbi8vICAgR29vZ2xlVmlzaW9uUGFyYW1ldGVycyxcclxuLy8gICBHb29nbGVWaXNpb25SZXF1ZXN0LFxyXG4vLyAgIEdvb2dsZVZpc2lvblJlc3BvbnNlLFxyXG4vLyAgIEdvb2dsZVZpc2lvblJlc3BvbnNlRGF0YVxyXG4vLyB9IGZyb20gJ25nLXBsaS11dGlsJztcclxuaW1wb3J0IENyb3BwZXIgZnJvbSAnY3JvcHBlcmpzJztcclxuaW1wb3J0IGh0bWwyY2FudmFzIGZyb20gJ2h0bWwyY2FudmFzJztcclxuaW1wb3J0IFwianF1ZXJ5XCI7XHJcbmltcG9ydCB7IFBkZkFuYWx5emVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BkZi1hbmFseXplci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGxpLXBkZi1hbmFseXplcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3BkZi1hbmFseXplci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vcGRmLWFuYWx5emVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFBkZkFuYWx5emVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblxyXG4gIHB1YmxpYyB0b3RhbFBhZ2VzOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBjdXJyZW50cGFnZTogbnVtYmVyID0gMTtcclxuICBwcml2YXRlIGNyb3BwZXIhOiBDcm9wcGVyO1xyXG4gIHB1YmxpYyBpc0Nyb3BJbWFnZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYXB0dXJlOiBhbnk7XHJcblxyXG4gIHB1YmxpYyBpbnN0cnVjdGl2bzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHJlbmRlcl90ZXh0OiBib29sZWFuID0gdHJ1ZTtcclxuICBzaG93X2FsbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9yaWdpbmFsX3NpemU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIGZpdF90b19wYWdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGRmU3JjOiBhbnkgPSBcIlwiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHRleHRUb0NvbXBhcmU6IFN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbGFiZWxUb0NvbXBhcmU6IFN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8vIEBJbnB1dCgpXHJcbiAgLy8gdGV4dFRvQ29tcGFyZTogU3RyaW5nID0gXCJcIjtcclxuXHJcbiAgLy8gQElucHV0KClcclxuICAvLyB0ZXh0VG9Db21wYXJlOiBTdHJpbmcgPSBcIlwiO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBkb2N1bWVudEFuYWx5emVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBkZkFuYWx5emVyU2VydmljZTogUGRmQW5hbHl6ZXJTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLyBab29tIE91dCBJbWFnZVxyXG4gIHB1YmxpYyB6b29tT3V0KCkge1xyXG4gICAgdGhpcy5jcm9wcGVyLnpvb20oMC4xKVxyXG4gIH1cclxuXHJcbiAgLy8gWm9vbSBJbiBJbWFnZVxyXG4gIHB1YmxpYyB6b29tSW4oKSB7XHJcbiAgICB0aGlzLmNyb3BwZXIuem9vbSgtMC4xKVxyXG4gIH1cclxuXHJcbiAgLy8gUmFuZ2Ugc2xpZGVyIGZvciB6b29taW5nIHRoZSBpbWFnZVxyXG4gIHB1YmxpYyBvblJhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuY3JvcHBlci56b29tVG8oZXZlbnQudGFyZ2V0LnZhbHVlKVxyXG4gIH1cclxuXHJcbiAgLy8gcGVyZm9ybSB0aGUgcm90YXRlIGZ1bmN0aW9uYWxpdHkgb24gaW1hZ2VcclxuICBwdWJsaWMgb25Sb3RhdGUoKSB7XHJcbiAgICB0aGlzLmNyb3BwZXIucm90YXRlKC05MClcclxuICB9XHJcblxyXG4gIC8vIHNob3cgdGhlIHByZXZpb3VzIHBhZ2VcclxuICBwdWJsaWMgcHJldmlvdXMoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50cGFnZSA+IDApIHtcclxuICAgICAgaWYgKHRoaXMuY3VycmVudHBhZ2UgPT0gMSkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudHBhZ2UgPSB0aGlzLnRvdGFsUGFnZXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50cGFnZS0tO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBzaG93IHRoZSBuZXh0IHBhZ2VcclxuICBwdWJsaWMgbmV4dCgpIHtcclxuICAgIGlmICh0aGlzLnRvdGFsUGFnZXMgPiB0aGlzLmN1cnJlbnRwYWdlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudHBhZ2UrKztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY3VycmVudHBhZ2UgPSAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyb3AoKSB7XHJcbiAgICBodG1sMmNhbnZhcyhkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnBkZi1jb250YWluZXJcIikgYXMgSFRNTEVsZW1lbnQpLnRoZW4oKGNhbnZhczogYW55KSA9PiB7XHJcbiAgICAgIGxldCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgY3R4LnNjYWxlKDMsIDMpO1xyXG4gICAgICBsZXQgaW1hZ2UgPSBjYW52YXMudG9EYXRhVVJMKFwiaW1hZ2UvcG5nXCIpLnJlcGxhY2UoXCJpbWFnZS9wbmdcIiwgXCJpbWFnZS9wbmdcIik7XHJcbiAgICAgICQoXCIjY3JvcHBlci1pbWdcIikuYXR0cignc3JjJywgaW1hZ2UpO1xyXG4gICAgICAkKCcjY3JvcHBlci1pbWcnKS5hZGRDbGFzcygncmVhZHknKTtcclxuICAgICAgdGhpcy5pc0Nyb3BJbWFnZSA9IHRydWVcclxuICAgICAgbGV0IGNyb3BJbWc6IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcm9wcGVyLWltZycpO1xyXG4gICAgICB0aGlzLmNyb3BwZXIgPSBuZXcgQ3JvcHBlcihjcm9wSW1nLCB7XHJcbiAgICAgICAgem9vbWFibGU6IHRydWUsXHJcbiAgICAgICAgYmFja2dyb3VuZDogZmFsc2UsXHJcbiAgICAgICAgZ3VpZGVzOiBmYWxzZSxcclxuICAgICAgICBoaWdobGlnaHQ6IGZhbHNlLFxyXG4gICAgICAgIG1vdmFibGU6IGZhbHNlLFxyXG4gICAgICAgIGFzcGVjdFJhdGlvOiA0IC8gMyxcclxuICAgICAgICByZWFkeTogKGUpID0+IHtcclxuICAgICAgICAgIGxldCBjcm9wcGVyID0gdGhpcy5jcm9wcGVyO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY3JvcDogKGUpID0+IHtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlQ2FwdHVyZSgpIHtcclxuICAgIGlmICh0aGlzLmlzQ3JvcEltYWdlKSB7XHJcbiAgICAgIGxldCBjYW52YXMgPSB0aGlzLmNyb3BwZXIuZ2V0Q3JvcHBlZENhbnZhcygpO1xyXG4gICAgICB0aGlzLmdldENhbnZhc1RvSW1hZ2UoY2FudmFzKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaHRtbDJjYW52YXMoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5wZGYtY29udGFpbmVyXCIpIGFzIEhUTUxFbGVtZW50KS50aGVuKChjYW52YXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZ2V0Q2FudmFzVG9JbWFnZShjYW52YXMpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENhbnZhc1RvSW1hZ2UoY2FudmFzOiBhbnkpIHtcclxuICAgIGxldCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGN0eC5zY2FsZSgzLCAzKTtcclxuICAgIGxldCBpbWFnZSA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIikucmVwbGFjZShcImltYWdlL3BuZ1wiLCBcImltYWdlL3BuZ1wiKTtcclxuICAgIHRoaXMuY2FwdHVyZSA9IGltYWdlO1xyXG4gICAgY29uc29sZS5sb2coaW1hZ2UpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlc2V0KCkge1xyXG4gICAgdGhpcy5pc0Nyb3BJbWFnZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jYXB0dXJlID0gbnVsbDtcclxuICAgIHRoaXMuY3JvcHBlci5jbGVhcigpO1xyXG4gICAgdGhpcy5jcm9wcGVyLmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIC8vIGFmdGVyTG9hZENvbXBsZXRlKHBkZjogUERGRG9jdW1lbnRQcm94eSkge1xyXG4gIC8vICAgdGhpcy50b3RhbFBhZ2VzID0gcGRmLm51bVBhZ2VzO1xyXG4gIC8vIH1cclxuXHJcbiAgcHVibGljIHZhbGlkYXRlSW1hZ2UoKSB7XHJcbiAgICBsZXQgYmFzZTY0OiBTdHJpbmcgPSAodGhpcy5jYXB0dXJlIGFzIFN0cmluZykuc3Vic3RyaW5nKDIyLCAodGhpcy5jYXB0dXJlIGFzIFN0cmluZykubGVuZ3RoKTtcclxuXHJcbiAgICB0aGlzLmRvY3VtZW50QW5hbHl6ZWQuZW1pdChiYXNlNjQpO1xyXG4gICAgLy8gbGV0IHBhcmFtZXRlcnM6IGFueSA9IHtcclxuICAgIC8vICAgcmVxdWVzdHM6IFtcclxuICAgIC8vICAgICB7XHJcbiAgICAvLyAgICAgICBpbWFnZToge1xyXG4gICAgLy8gICAgICAgICBjb250ZW50OiBiYXNlNjRcclxuICAgIC8vICAgICAgIH0sXHJcbiAgICAvLyAgICAgICBmZWF0dXJlczogW1xyXG4gICAgLy8gICAgICAgICB7XHJcbiAgICAvLyAgICAgICAgICAgdHlwZTogXCJURVhUX0RFVEVDVElPTlwiXHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIF1cclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgIF1cclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyB0aGlzLnBkZkFuYWx5emVyU2VydmljZS5nZXRUZXh0T2ZJbWFnZShwYXJhbWV0ZXJzKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgIC8vICAgbGV0IHRleHREZXRlY3RlZCA9IHJlc3BvbnNlWzBdLmZ1bGxUZXh0QW5ub3RhdGlvbi50ZXh0O1xyXG5cclxuICAgIC8vICAgY29uc29sZS5sb2codGV4dERldGVjdGVkKTtcclxuICAgIC8vIH0pO1xyXG5cclxuICB9XHJcblxyXG59XHJcblxyXG4iLCI8ZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjaGVja0luc3RydWN0aXZvXCI+XHJcbiAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJpbnN0cnVjdGl2b1wiIC8+SW5zdHJ1Y3Rpdm9cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWluc3RydWN0aXZvXCIgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxyXG4gICAgICAgIFNlbGVjY2lvbmFyIGxhIHBhcnRlIGRlbCBkb2N1bWVudG8gZG9uZGUgc2UgZW5jdWVudHJhIDxzdHJvbmc+e3tsYWJlbFRvQ29tcGFyZX19PC9zdHJvbmc+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaW5zdHJ1Y3Rpdm9cIiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgMS4gRGFybGUgY2xpYyBlbiBlbCBib3TDs24gPHNwYW4gY2xhc3M9XCJmYSBmYS1jcm9wXCI+PC9zcGFuPlxyXG4gICAgICAgIDxicj4gMi4gU2VsZWNjaW9uYXIgbGEgcGFydGUgZGVsIGRvY3VtZW50byBkb25kZSBzZSBlbmN1ZW50cmEgPHN0cm9uZz57e2xhYmVsVG9Db21wYXJlfX08L3N0cm9uZz4gY29uIGVsIG1vdXNlIGRhbmRvIGNsaWMgeSBhcnJhc3RyYW5kbyBoYXN0YSBjb21wbGV0YXIgbGEgc2VsZWNjacOzbiBvIGNhbWJpYW5kbyBkZSB0YW1hw7FvIGVsIHJlY3VhZHJvIHF1ZSBhcGFyZWNlIGVuIHBhbnRhbGxhXHJcbiAgICAgICAgPGJyPiAzLiBVbmEgdmV6IHNlbGVjY2lvbmFkbyBkYXIgY2xpYyBlbiBlbCBib3TDs24gPHNwYW4gY2xhc3M9XCJmYSBmYS1jYW1lcmFcIj48L3NwYW4+IHBhcmEgcHJldmlzdWFsaXphcmxvIG1lam9yXHJcbiAgICAgICAgPGJyPiA0LiBFbiBjYXNvIGRlIGhhYmVyc2UgZXF1aXZvY2FkbyBwdWVkZSBkYXJsZSBjbGljIGFsIGJvdMOzbiByb2pvIFwiUmVpbnRlbnRhclwiIG8gYWwgYm90w7NuIDxzcGFuIGNsYXNzPVwiZmEgZmEtdW5kb1wiPjwvc3Bhbj4gcGFyYSB2b2x2ZXIgYWwgcGFzbyAxXHJcbiAgICAgICAgPGJyPiA1LiBDdWFuZG8geWEgZXN0ZSBjb3JyZWN0YSBsYSBzZWxlY2Npw7NuIGRhcmxlIGNsaWMgYWwgYm90w7NuIHZlcmRlIFwiR3VhcmRhciBDYXB0dXJhXCIgcGFyYSBwcm9jZWRlciBjb24gZWwgcHJvY2Vzb1xyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGRmLXZpc3VhbGl6ZXItY29udHJvbHNcIj5cclxuICAgICAgICA8YSBocmVmPVwiSmF2YXNjcmlwdDo7XCIgdGl0bGU9XCJBbnRlcmlvclwiIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwidG9wXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgKGNsaWNrKT1cInByZXZpb3VzKClcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1hbmdsZS1sZWZ0XCI+PC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIj5Qw6FnaW5hOiB7e2N1cnJlbnRwYWdlfX0gLyB7e3RvdGFsUGFnZXN9fTwvc3Bhbj5cclxuICAgICAgICA8YSBocmVmPVwiSmF2YXNjcmlwdDo7XCIgdGl0bGU9XCJTaWd1aWVudGVcIiBkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIiBkYXRhLXBsYWNlbWVudD1cInRvcFwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIChjbGljayk9XCJuZXh0KClcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1hbmdsZS1yaWdodFwiPjwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgIDxhIGhyZWY9XCJKYXZhc2NyaXB0OjtcIiB0aXRsZT1cIkFjZXJjYXJcIiBkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIiBkYXRhLXBsYWNlbWVudD1cInRvcFwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiICpuZ0lmPVwiaXNDcm9wSW1hZ2UgJiYgIWNhcHR1cmVcIiAoY2xpY2spPVwiem9vbU91dCgpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtc2VhcmNoLXBsdXNcIj48L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG5cclxuXHJcbiAgICAgICAgPGEgaHJlZj1cIkphdmFzY3JpcHQ6O1wiIHRpdGxlPVwiQWxlamFyXCIgZGF0YS10b2dnbGU9XCJ0b29sdGlwXCIgZGF0YS1wbGFjZW1lbnQ9XCJ0b3BcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIiAqbmdJZj1cImlzQ3JvcEltYWdlICYmICFjYXB0dXJlXCIgKGNsaWNrKT1cInpvb21JbigpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtc2VhcmNoLW1pbnVzXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInBkZi12aXN1YWxpemVyLWNvbnRyb2xzXCI+XHJcbiAgICAgICAgPGEgaHJlZj1cIkphdmFzY3JpcHQ6O1wiIHRpdGxlPVwiQ2FwdHVyYXJcIiBkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIiBkYXRhLXBsYWNlbWVudD1cInRvcFwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiICpuZ0lmPVwiIWlzQ3JvcEltYWdlXCIgKGNsaWNrKT1cImNyb3AoKVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLWNyb3AgZmEtMnhcIj48L3NwYW4+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIDxhIGhyZWY9XCJKYXZhc2NyaXB0OjtcIiB0aXRsZT1cIkd1YXJkYXIgQ2FwdHVyYVwiIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwidG9wXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgKm5nSWY9XCJpc0Nyb3BJbWFnZSAmJiAhY2FwdHVyZVwiIChjbGljayk9XCJzYXZlQ2FwdHVyZSgpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtY2FtZXJhIGZhLTJ4XCI+PC9zcGFuPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8YSBocmVmPVwiSmF2YXNjcmlwdDo7XCIgdGl0bGU9XCJEZXNoYWNlclwiIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwidG9wXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgKm5nSWY9XCJpc0Nyb3BJbWFnZVwiIChjbGljayk9XCJyZXNldCgpXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtdW5kbyBmYS0yeFwiPjwvc3Bhbj5cclxuICAgICAgICA8L2E+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cInBkZi12aXN1YWxpemVyLWRhc2hib2FyZFwiICpuZ0lmPVwiIWNhcHR1cmVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGRmLWNvbnRhaW5lciBwZGYtdmlzdWFsaXplci1jYW52YXMgdG9wLW1hcmdpblwiIFtoaWRkZW5dPVwiaXNDcm9wSW1hZ2VcIj5cclxuICAgICAgICAgICAgPCEtLSA8cGRmLXZpZXdlciBbKHNyYyldPVwicGRmU3JjXCIgWyhyZW5kZXItdGV4dCldPVwicmVuZGVyX3RleHRcIiBbKHBhZ2UpXT1cImN1cnJlbnRwYWdlXCIgWyhzaG93LWFsbCldPVwic2hvd19hbGxcIiBbKG9yaWdpbmFsLXNpemUpXT1cIm9yaWdpbmFsX3NpemVcIiBbKGZpdC10by1wYWdlKV09XCJmaXRfdG9fcGFnZVwiIChhZnRlci1sb2FkLWNvbXBsZXRlKT1cImFmdGVyTG9hZENvbXBsZXRlKCRldmVudClcIiBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO1wiPlxyXG4gICAgICAgICAgICA8L3BkZi12aWV3ZXI+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWNvbnRhaW5lclwiIFtoaWRkZW5dPVwiIWlzQ3JvcEltYWdlXCI+XHJcbiAgICAgICAgICAgIDxpbWcgI2ltYWdlIHNyYz1cIlwiIGlkPVwiY3JvcHBlci1pbWdcIiBjcm9zc29yaWdpbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpbWctdmlzdWFsaXplci1kYXNoYm9hcmRcIiAqbmdJZj1cImNhcHR1cmVcIj5cclxuICAgICAgICA8aW1nIFtzcmNdPVwiY2FwdHVyZVwiPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW1nLXZpc3VhbGl6ZXItZGFzaGJvYXJkXCIgKm5nSWY9XCJjYXB0dXJlXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bnMgYnRuLXN1Y2Nlc3MgYnRuLWxnXCIgKGNsaWNrKT1cInZhbGlkYXRlSW1hZ2UoKVwiIGxhbmc9XCJlc1wiPkd1YXJkYXIgQ2FwdHVyYTwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuciBidG4tc3VjY2VzcyBidG4tbGdcIiAoY2xpY2spPVwicmVzZXQoKVwiIGxhbmc9XCJlc1wiPlJlaW50ZW50YXI8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=