@po-ui/ng-sync 5.22.3 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/README.md +22 -22
  2. package/{esm2015/lib/index.js → esm2020/lib/index.mjs} +15 -15
  3. package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +6 -6
  4. package/{esm2015/lib/models/po-data-message.model.js → esm2020/lib/models/po-data-message.model.mjs} +57 -57
  5. package/esm2020/lib/models/po-data-transform.model.mjs +22 -0
  6. package/esm2020/lib/models/po-entity/po-entity.model.mjs +214 -0
  7. package/{esm2015/lib/models/po-event-sourcing-error-response.model.js → esm2020/lib/models/po-event-sourcing-error-response.model.mjs} +17 -17
  8. package/{esm2015/lib/models/po-network-status.model.js → esm2020/lib/models/po-network-status.model.mjs} +44 -44
  9. package/{esm2015/lib/models/po-network-type.enum.js → esm2020/lib/models/po-network-type.enum.mjs} +30 -30
  10. package/esm2020/lib/models/po-query-builder/po-query-builder.model.mjs +238 -0
  11. package/{esm2015/lib/models/po-request-type.enum.js → esm2020/lib/models/po-request-type.enum.mjs} +16 -16
  12. package/esm2020/lib/po-sync.module.mjs +45 -0
  13. package/{esm2015/lib/services/po-event-sourcing/enums/po-event-sourcing-operation.enum.js → esm2020/lib/services/po-event-sourcing/enums/po-event-sourcing-operation.enum.mjs} +17 -17
  14. package/{esm2015/lib/services/po-event-sourcing/index.js → esm2020/lib/services/po-event-sourcing/index.mjs} +4 -4
  15. package/esm2020/lib/services/po-event-sourcing/interfaces/po-event-sourcing-item.interface.mjs +2 -0
  16. package/esm2020/lib/services/po-event-sourcing/interfaces/po-event-sourcing-summary-item.interface.mjs +2 -0
  17. package/esm2020/lib/services/po-event-sourcing/po-event-sourcing.service.mjs +372 -0
  18. package/{esm2015/lib/services/po-http-client/interfaces/po-http-header-option.interface.js → esm2020/lib/services/po-http-client/interfaces/po-http-header-option.interface.mjs} +11 -11
  19. package/esm2020/lib/services/po-http-client/interfaces/po-http-request-data.interface.mjs +2 -0
  20. package/esm2020/lib/services/po-http-client/interfaces/po-response-api.interface.mjs +2 -0
  21. package/esm2020/lib/services/po-http-client/po-http-client.service.mjs +148 -0
  22. package/{esm2015/lib/services/po-http-client/po-http-request-type.enum.js → esm2020/lib/services/po-http-client/po-http-request-type.enum.mjs} +25 -25
  23. package/esm2020/lib/services/po-network/po-network.service.mjs +58 -0
  24. package/{esm2015/lib/services/po-schema/index.js → esm2020/lib/services/po-schema/index.mjs} +4 -4
  25. package/esm2020/lib/services/po-schema/po-schema-definition/po-schema-definition.service.mjs +77 -0
  26. package/{esm2015/lib/services/po-schema/po-schema-util/po-schema-util.model.js → esm2020/lib/services/po-schema/po-schema-util/po-schema-util.model.mjs} +124 -124
  27. package/esm2020/lib/services/po-schema/po-schema.service.mjs +174 -0
  28. package/esm2020/lib/services/po-sync/interfaces/po-sync-config.interface.mjs +2 -0
  29. package/esm2020/lib/services/po-sync/interfaces/po-sync-field-options.interface.mjs +2 -0
  30. package/esm2020/lib/services/po-sync/interfaces/po-sync-response.interface.mjs +2 -0
  31. package/esm2020/lib/services/po-sync/interfaces/po-sync-schema.interface.mjs +2 -0
  32. package/esm2020/lib/services/po-sync/po-sync.service.mjs +325 -0
  33. package/{esm2015/lib/utils/utils.js → esm2020/lib/utils/utils.mjs} +63 -63
  34. package/esm2020/po-ui-ng-sync.mjs +5 -0
  35. package/{esm2015/public-api.js → esm2020/public-api.mjs} +2 -2
  36. package/fesm2015/{po-ui-ng-sync.js → po-ui-ng-sync.mjs} +2074 -2058
  37. package/fesm2015/po-ui-ng-sync.mjs.map +1 -0
  38. package/fesm2020/po-ui-ng-sync.mjs +2018 -0
  39. package/fesm2020/po-ui-ng-sync.mjs.map +1 -0
  40. package/lib/index.d.ts +14 -14
  41. package/lib/models/index.d.ts +5 -5
  42. package/lib/models/po-data-message.model.d.ts +46 -46
  43. package/lib/models/po-data-transform.model.d.ts +52 -52
  44. package/lib/models/po-entity/po-entity.model.d.ts +122 -122
  45. package/lib/models/po-event-sourcing-error-response.model.d.ts +20 -20
  46. package/lib/models/po-network-status.model.d.ts +25 -25
  47. package/lib/models/po-network-type.enum.d.ts +28 -28
  48. package/lib/models/po-query-builder/po-query-builder.model.d.ts +126 -126
  49. package/lib/models/po-request-type.enum.d.ts +14 -14
  50. package/lib/po-sync.module.d.ts +12 -7
  51. package/lib/services/po-event-sourcing/enums/po-event-sourcing-operation.enum.d.ts +11 -11
  52. package/lib/services/po-event-sourcing/index.d.ts +3 -3
  53. package/lib/services/po-event-sourcing/interfaces/po-event-sourcing-item.interface.d.ts +26 -26
  54. package/lib/services/po-event-sourcing/interfaces/po-event-sourcing-summary-item.interface.d.ts +16 -16
  55. package/lib/services/po-event-sourcing/po-event-sourcing.service.d.ts +74 -71
  56. package/lib/services/po-http-client/interfaces/po-http-header-option.interface.d.ts +15 -15
  57. package/lib/services/po-http-client/interfaces/po-http-request-data.interface.d.ts +24 -24
  58. package/lib/services/po-http-client/interfaces/po-response-api.interface.d.ts +14 -14
  59. package/lib/services/po-http-client/po-http-client.service.d.ts +78 -75
  60. package/lib/services/po-http-client/po-http-request-type.enum.d.ts +23 -23
  61. package/lib/services/po-network/po-network.service.d.ts +36 -33
  62. package/lib/services/po-schema/index.d.ts +3 -3
  63. package/lib/services/po-schema/po-schema-definition/po-schema-definition.service.d.ts +51 -48
  64. package/lib/services/po-schema/po-schema-util/po-schema-util.model.d.ts +79 -79
  65. package/lib/services/po-schema/po-schema.service.d.ts +98 -95
  66. package/lib/services/po-sync/interfaces/po-sync-config.interface.d.ts +24 -24
  67. package/lib/services/po-sync/interfaces/po-sync-field-options.interface.d.ts +15 -15
  68. package/lib/services/po-sync/interfaces/po-sync-response.interface.d.ts +20 -20
  69. package/lib/services/po-sync/interfaces/po-sync-schema.interface.d.ts +37 -37
  70. package/lib/services/po-sync/po-sync.service.d.ts +162 -159
  71. package/lib/utils/utils.d.ts +36 -36
  72. package/package.json +30 -15
  73. package/po-ui-ng-sync-6.2.0.tgz +0 -0
  74. package/po-ui-ng-sync.d.ts +5 -8
  75. package/public-api.d.ts +1 -1
  76. package/schematics/README.md +169 -169
  77. package/schematics/collection.json +15 -15
  78. package/schematics/migrations.json +30 -25
  79. package/schematics/ng-add/index.d.ts +7 -7
  80. package/schematics/ng-add/index.js +33 -33
  81. package/schematics/ng-add/index.js.map +1 -1
  82. package/schematics/ng-add/index.spec.d.ts +1 -1
  83. package/schematics/ng-add/index.spec.js +62 -62
  84. package/schematics/ng-add/index.spec.js.map +1 -1
  85. package/schematics/ng-add/schema.json +7 -7
  86. package/schematics/ng-generate/schema/files/__path__/__name@dasherize__/__name@dasherize__.constants.ts.template +13 -13
  87. package/schematics/ng-generate/schema/index.d.ts +4 -4
  88. package/schematics/ng-generate/schema/index.js +12 -12
  89. package/schematics/ng-generate/schema/index.js.map +1 -1
  90. package/schematics/ng-generate/schema/index.spec.d.ts +1 -1
  91. package/schematics/ng-generate/schema/index.spec.js +44 -44
  92. package/schematics/ng-generate/schema/index.spec.js.map +1 -1
  93. package/schematics/ng-generate/schema/schema.d.ts +3 -3
  94. package/schematics/ng-generate/schema/schema.js +2 -2
  95. package/schematics/ng-generate/schema/schema.json +31 -31
  96. package/schematics/ng-update/v2/changes.d.ts +8 -8
  97. package/schematics/ng-update/v2/changes.js +20 -20
  98. package/schematics/ng-update/v2/index.d.ts +5 -5
  99. package/schematics/ng-update/v2/index.js +101 -101
  100. package/schematics/ng-update/v2/index.js.map +1 -1
  101. package/schematics/ng-update/v3/changes.d.ts +2 -2
  102. package/schematics/ng-update/v3/changes.js +14 -14
  103. package/schematics/ng-update/v3/index.d.ts +1 -1
  104. package/schematics/ng-update/v3/index.js +16 -16
  105. package/schematics/ng-update/v3/index.js.map +1 -1
  106. package/schematics/ng-update/v4/changes.d.ts +2 -2
  107. package/schematics/ng-update/v4/changes.js +14 -14
  108. package/schematics/ng-update/v4/index.d.ts +1 -1
  109. package/schematics/ng-update/v4/index.js +15 -15
  110. package/schematics/ng-update/v4/index.js.map +1 -1
  111. package/schematics/ng-update/v5/changes.d.ts +2 -2
  112. package/schematics/ng-update/v5/changes.js +13 -13
  113. package/schematics/ng-update/v5/index.d.ts +1 -1
  114. package/schematics/ng-update/v5/index.js +15 -15
  115. package/schematics/ng-update/v5/index.js.map +1 -1
  116. package/schematics/ng-update/v6/changes.d.ts +2 -0
  117. package/schematics/ng-update/v6/changes.js +14 -0
  118. package/schematics/ng-update/v6/changes.js.map +1 -0
  119. package/schematics/ng-update/v6/index.d.ts +1 -0
  120. package/schematics/ng-update/v6/index.js +16 -0
  121. package/schematics/ng-update/v6/index.js.map +1 -0
  122. package/bundles/po-ui-ng-sync.umd.js +0 -3002
  123. package/bundles/po-ui-ng-sync.umd.js.map +0 -1
  124. package/esm2015/lib/models/po-data-transform.model.js +0 -22
  125. package/esm2015/lib/models/po-entity/po-entity.model.js +0 -229
  126. package/esm2015/lib/models/po-query-builder/po-query-builder.model.js +0 -241
  127. package/esm2015/lib/po-sync.module.js +0 -31
  128. package/esm2015/lib/services/po-event-sourcing/interfaces/po-event-sourcing-item.interface.js +0 -2
  129. package/esm2015/lib/services/po-event-sourcing/interfaces/po-event-sourcing-summary-item.interface.js +0 -2
  130. package/esm2015/lib/services/po-event-sourcing/po-event-sourcing.service.js +0 -411
  131. package/esm2015/lib/services/po-http-client/interfaces/po-http-request-data.interface.js +0 -2
  132. package/esm2015/lib/services/po-http-client/interfaces/po-response-api.interface.js +0 -2
  133. package/esm2015/lib/services/po-http-client/po-http-client.service.js +0 -147
  134. package/esm2015/lib/services/po-network/po-network.service.js +0 -58
  135. package/esm2015/lib/services/po-schema/po-schema-definition/po-schema-definition.service.js +0 -80
  136. package/esm2015/lib/services/po-schema/po-schema.service.js +0 -198
  137. package/esm2015/lib/services/po-sync/interfaces/po-sync-config.interface.js +0 -2
  138. package/esm2015/lib/services/po-sync/interfaces/po-sync-field-options.interface.js +0 -2
  139. package/esm2015/lib/services/po-sync/interfaces/po-sync-response.interface.js +0 -2
  140. package/esm2015/lib/services/po-sync/interfaces/po-sync-schema.interface.js +0 -2
  141. package/esm2015/lib/services/po-sync/po-sync.service.js +0 -336
  142. package/esm2015/po-ui-ng-sync.js +0 -9
  143. package/fesm2015/po-ui-ng-sync.js.map +0 -1
  144. package/po-ui-ng-sync-5.22.3.tgz +0 -0
  145. package/po-ui-ng-sync.metadata.json +0 -1
@@ -1,229 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { validateParameter } from '../../utils/utils';
3
- import { PoEventSourcingOperation } from '../../services/po-event-sourcing';
4
- import { PoQueryBuilder } from './../po-query-builder/po-query-builder.model';
5
- import { PoSchemaUtil } from '../../services/po-schema';
6
- /**
7
- * @description
8
- *
9
- * Uma instância `PoEntity` representa um *schema* e ela contém métodos que possibilitam manipular seus registros,
10
- * como por exemplo: buscar, criar e remover.
11
- *
12
- * Esta instância pode ser obtida a partir do retorno do método `PoSyncService.getModel('schema name')`.
13
- */
14
- export class PoEntity {
15
- constructor(eventSourcing, schema, poSchemaService) {
16
- this.eventSourcing = eventSourcing;
17
- this.schema = schema;
18
- this.poSchemaService = poSchemaService;
19
- }
20
- /**
21
- * Busca os registros do *schema*, podendo filtrar o resultado a partir do filtro passado e retornando apenas
22
- * os campos definidos.
23
- *
24
- * Para que esta busca seja concluída é necessário utilizar o método `PoQueryBuilder.exec()`.
25
- * Veja mais em: [PoQueryBuilder](/documentation/po-query-builder).
26
- *
27
- * @param {object} filter Objeto que contém os campos e valores a serem filtrados no *schema*.
28
- * @param {string} fields Campos que serão retornados nos registros. Este campos devem estar dentro de
29
- * uma *string* separados por espaço podendo usar o caractere `-` para excluir campos.
30
- * Por exemplo, a definição abaixo:
31
- *
32
- * ```
33
- * PoQueryBuilder.select('name age address');
34
- * ```
35
- * Irá retornar apenas os campos `name`, `age` e `address`. E para não mostrar um campo ou mais basta fazer:
36
- *
37
- * ```
38
- * PoQueryBuilder.select('-name -age');
39
- * ```
40
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um método do `PoQueryBuilder`.
41
- */
42
- find(filter, fields) {
43
- const query = new PoQueryBuilder(this.poSchemaService, this.schema);
44
- if (filter) {
45
- query.filter(filter);
46
- }
47
- if (fields) {
48
- query.select(fields);
49
- }
50
- return query;
51
- }
52
- /**
53
- * Busca um registro pelo seu *id*.
54
- *
55
- * Para que esta busca seja concluída é necessário utilizar o método `PoQueryBuilder.exec()`.
56
- * Veja mais em: [PoQueryBuilder](/documentation/po-query-builder).
57
- *
58
- * @param {any} id Identificador do registro.
59
- * @param {string} fields Campos que serão retornados nos registros. Este campos devem estar dentro de
60
- * uma *string* separados por espaço podendo usar o caractere `-` para excluir campos.
61
- * Por exemplo, a definição abaixo:
62
- *
63
- * ```
64
- * PoQueryBuilder.select('name age address');
65
- * ```
66
- * Irá retornar apenas os campos `name`, `age` e `address`. E para não mostrar um campo ou mais basta fazer:
67
- *
68
- * ```
69
- * PoQueryBuilder.select('-name -age');
70
- * ```
71
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um método do `PoQueryBuilder`.
72
- */
73
- findById(id, fields) {
74
- return this.findOne({ [this.schema.idField]: id }, fields);
75
- }
76
- /**
77
- * Semelhante ao método `PoEntity.find()`, porém retorna apenas o primeiro registro encontrado na busca.
78
- *
79
- * Para que esta busca seja concluída é necessário utilizar o método `PoQueryBuilder.exec()`.
80
- * Veja mais em: [PoQueryBuilder](/documentation/po-query-builder).
81
- *
82
- * @param {any} filter Objeto que contém os campos e valores a serem filtrados no *schema*.
83
- * @param {string} fields Campos que serão retornados nos registros. Este campos devem estar dentro de
84
- * uma *string* separados por espaço podendo usar o caractere `-` para excluir campos.
85
- * Por exemplo, a definição abaixo:
86
- *
87
- * ```
88
- * PoQueryBuilder.select('name age address');
89
- * ```
90
- * Irá retornar apenas os campos `name`, `age` e `address`. E para não mostrar um campo ou mais basta fazer:
91
- *
92
- * ```
93
- * PoQueryBuilder.select('-name -age');
94
- * ```
95
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um método do `PoQueryBuilder`.
96
- */
97
- findOne(filter, fields) {
98
- const query = this.find(filter, fields);
99
- query.limit(1);
100
- return query;
101
- }
102
- /**
103
- * Remove um registro.
104
- *
105
- * @param {object} record Registro que será removido.
106
- * @param {string} customRequestId Identificador customizado do comando.
107
- * @returns {Promise} Promessa que é concluída após o registro ser removido.
108
- */
109
- remove(record, customRequestId) {
110
- return __awaiter(this, void 0, void 0, function* () {
111
- validateParameter({ record });
112
- const remove = () => __awaiter(this, void 0, void 0, function* () {
113
- const idField = record[this.schema.idField] ? this.schema.idField : PoSchemaUtil.syncInternalIdFieldName;
114
- const serverRecord = PoSchemaUtil.separateSchemaFields(this.schema, record)['serverRecord'];
115
- yield this.poSchemaService.remove(this.schema.name, record[idField]);
116
- yield this.eventSourcing.remove(this.schema.name, serverRecord, customRequestId);
117
- });
118
- return this.poSchemaService.limitedCallWrap(remove);
119
- });
120
- }
121
- /**
122
- * Altera ou inclui um registro.
123
- *
124
- * > O registro será alterado se ele possuir um *id*, caso contrário um novo registro será criado.
125
- *
126
- * @param {object} record Registro que será persistido.
127
- * @param {string} customRequestId Identificador customizado do comando.
128
- * @returns {Promise} Promessa que é concluída após o registro ser alterado ou incluído.
129
- */
130
- save(record, customRequestId) {
131
- return __awaiter(this, void 0, void 0, function* () {
132
- validateParameter({ record });
133
- return this.poSchemaService.limitedCallWrap(this.selectSaveType.bind(this, record, true, customRequestId));
134
- });
135
- }
136
- /**
137
- * Salva uma lista de registros em lote.
138
- *
139
- * > Para cada registro da lista, será inserido um novo registro se o mesmo não tiver *id*, caso contrário
140
- * será contado como uma atualização de um registro existente.
141
- *
142
- * @param {Array<object>} records Lista de registros que serão persistidos.
143
- * @param {Array<string> | string} customRequestIds Identificador customizado do comando.
144
- *
145
- * Ao passar uma lista de identificadores, cada índice da lista de identificadores deverá
146
- * corresponder ao índice do registro na lista de registros.
147
- * @returns {Promise<any>} Promessa que é concluída após os registros serem alterados ou incluídos.
148
- */
149
- saveAll(records, customRequestIds) {
150
- return __awaiter(this, void 0, void 0, function* () {
151
- validateParameter({ records });
152
- const saveAll = () => __awaiter(this, void 0, void 0, function* () {
153
- const batchEvents = [];
154
- for (let index = 0; index < records.length; index++) {
155
- const record = records[index];
156
- const sendToEventSourcing = false;
157
- const isNonLocalRecordChanged = yield this.isNonLocalRecordChanged(record);
158
- const updatedRecord = yield this.selectSaveType(record, sendToEventSourcing);
159
- if (isNonLocalRecordChanged) {
160
- const customRequestId = customRequestIds instanceof Array ? customRequestIds[index] : customRequestIds;
161
- const eventOperation = this.createEventOperation(record, updatedRecord, customRequestId);
162
- batchEvents.push(eventOperation);
163
- }
164
- }
165
- yield this.eventSourcing.createBatchEvents(this.schema.name, batchEvents);
166
- });
167
- return this.poSchemaService.limitedCallWrap(saveAll);
168
- });
169
- }
170
- create(newRecord, sendToEventSourcing, customRequestId) {
171
- return __awaiter(this, void 0, void 0, function* () {
172
- const time = new Date().getTime();
173
- const syncProperties = {
174
- [PoSchemaUtil.syncInternalIdFieldName]: time,
175
- SyncInsertedDateTime: time,
176
- SyncUpdatedDateTime: null,
177
- SyncExclusionDateTime: null,
178
- SyncDeleted: false,
179
- SyncStatus: 0
180
- };
181
- const recordWithSyncProperties = Object.assign(Object.assign({}, newRecord), syncProperties);
182
- const recordedData = yield this.poSchemaService.create(this.schema, recordWithSyncProperties);
183
- if (sendToEventSourcing) {
184
- yield this.eventSourcing.create(this.schema.name, recordWithSyncProperties, customRequestId);
185
- }
186
- return recordedData;
187
- });
188
- }
189
- createEventOperation(record, updatedRecord, customRequestId) {
190
- const operation = PoSchemaUtil.getRecordId(record, this.schema)
191
- ? PoEventSourcingOperation.Update
192
- : PoEventSourcingOperation.Insert;
193
- const serverRecord = PoSchemaUtil.separateSchemaFields(this.schema, updatedRecord)['serverRecord'];
194
- return {
195
- record: serverRecord,
196
- customRequestId: customRequestId,
197
- operation: operation
198
- };
199
- }
200
- isNonLocalRecordChanged(updatedRecord) {
201
- return __awaiter(this, void 0, void 0, function* () {
202
- const nonLocalFieldNames = PoSchemaUtil.getNonLocalFieldNames(this.schema);
203
- const record = yield this.poSchemaService.get(this.schema.name, updatedRecord[this.schema.idField]);
204
- return !PoSchemaUtil.isModelsEqual(nonLocalFieldNames, record, updatedRecord);
205
- });
206
- }
207
- selectSaveType(record, sendToEventSourcing, customRequestId) {
208
- return __awaiter(this, void 0, void 0, function* () {
209
- const hasId = PoSchemaUtil.getRecordId(record, this.schema);
210
- return hasId
211
- ? yield this.update(record, sendToEventSourcing, customRequestId)
212
- : yield this.create(record, sendToEventSourcing, customRequestId);
213
- });
214
- }
215
- update(updatedRecord, sendToEventSourcing, customRequestId) {
216
- return __awaiter(this, void 0, void 0, function* () {
217
- updatedRecord.SyncUpdatedDateTime = new Date().getTime();
218
- updatedRecord.SyncStatus = 0;
219
- const isNonLocalRecordChanged = yield this.isNonLocalRecordChanged(updatedRecord);
220
- const recordedData = yield this.poSchemaService.update(this.schema, updatedRecord);
221
- if (isNonLocalRecordChanged && sendToEventSourcing) {
222
- const serverRecord = PoSchemaUtil.separateSchemaFields(this.schema, updatedRecord)['serverRecord'];
223
- yield this.eventSourcing.update(this.schema.name, serverRecord, customRequestId);
224
- }
225
- return recordedData;
226
- });
227
- }
228
- }
229
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZW50aXR5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3luYy9zcmMvbGliL21vZGVscy9wby1lbnRpdHkvcG8tZW50aXR5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUV0RCxPQUFPLEVBQ0wsd0JBQXdCLEVBR3pCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlFLE9BQU8sRUFBbUIsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHekU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBQ25CLFlBQ1UsYUFBcUMsRUFDckMsTUFBb0IsRUFDcEIsZUFBZ0M7UUFGaEMsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBQ3JDLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDcEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQ3ZDLENBQUM7SUFFSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJHO0lBQ0gsSUFBSSxDQUFDLE1BQWUsRUFBRSxNQUFlO1FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBFLElBQUksTUFBTSxFQUFFO1lBQ1YsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0QjtRQUVELElBQUksTUFBTSxFQUFFO1lBQ1YsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0QjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNILFFBQVEsQ0FBQyxFQUFPLEVBQUUsTUFBZTtRQUMvQixPQUFPLElBQUks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SUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDdEUsQ0FBQztLQUFBO0lBRWEsTUFBTSxDQUFDLGFBQWtCLEVBQUUsbUJBQTRCLEVBQUUsZUFBd0I7O1lBQzdGLGFBQWEsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pELGFBQWEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBRTdCLE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbEYsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBRW5GLElBQUksdUJBQXVCLElBQUksbUJBQW1CLEVBQUU7Z0JBQ2xELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNuRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQzthQUNsRjtZQUVELE9BQU8sWUFBWSxDQUFDO1FBQ3RCLENBQUM7S0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdmFsaWRhdGVQYXJhbWV0ZXIgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFBvRXZlbnRTb3VyY2luZ09wZXJhdGlvbixcclxuICBQb0V2ZW50U291cmNpbmdTZXJ2aWNlLFxyXG4gIFBvRXZlbnRTb3VyY2luZ1N1bW1hcnlJdGVtXHJcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tZXZlbnQtc291cmNpbmcnO1xyXG5pbXBvcnQgeyBQb1F1ZXJ5QnVpbGRlciB9IGZyb20gJy4vLi4vcG8tcXVlcnktYnVpbGRlci9wby1xdWVyeS1idWlsZGVyLm1vZGVsJztcclxuaW1wb3J0IHsgUG9TY2hlbWFTZXJ2aWNlLCBQb1NjaGVtYVV0aWwgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1zY2hlbWEnO1xyXG5pbXBvcnQgeyBQb1N5bmNTY2hlbWEgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wby1zeW5jL2ludGVyZmFjZXMvcG8tc3luYy1zY2hlbWEuaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBAZGVzY3JpcHRpb25cclxuICpcclxuICogVW1hIGluc3TDom5jaWEgYFBvRW50aXR5YCByZXByZXNlbnRhIHVtICpzY2hlbWEqIGUgZWxhIGNvbnTDqW0gbcOpdG9kb3MgcXVlIHBvc3NpYmlsaXRhbSBtYW5pcHVsYXIgc2V1cyByZWdpc3Ryb3MsXHJcbiAqIGNvbW8gcG9yIGV4ZW1wbG86IGJ1c2NhciwgY3JpYXIgZSByZW1vdmVyLlxyXG4gKlxyXG4gKiBFc3RhIGluc3TDom5jaWEgcG9kZSBzZXIgb2J0aWRhIGEgcGFydGlyIGRvIHJldG9ybm8gZG8gbcOpdG9kbyBgUG9TeW5jU2VydmljZS5nZXRNb2RlbCgnc2NoZW1hIG5hbWUnKWAuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUG9FbnRpdHkge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBldmVudFNvdXJjaW5nOiBQb0V2ZW50U291cmNpbmdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzY2hlbWE6IFBvU3luY1NjaGVtYSxcclxuICAgIHByaXZhdGUgcG9TY2hlbWFTZXJ2aWNlOiBQb1NjaGVtYVNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJ1c2NhIG9zIHJlZ2lzdHJvcyBkbyAqc2NoZW1hKiwgcG9kZW5kbyBmaWx0cmFyIG8gcmVzdWx0YWRvIGEgcGFydGlyIGRvIGZpbHRybyBwYXNzYWRvIGUgcmV0b3JuYW5kbyBhcGVuYXNcclxuICAgKiBvcyBjYW1wb3MgZGVmaW5pZG9zLlxyXG4gICAqXHJcbiAgICogUGFyYSBxdWUgZXN0YSBidXNjYSBzZWphIGNvbmNsdcOtZGEgw6kgbmVjZXNzw6FyaW8gdXRpbGl6YXIgbyBtw6l0b2RvIGBQb1F1ZXJ5QnVpbGRlci5leGVjKClgLlxyXG4gICAqIFZlamEgbWFpcyBlbTogW1BvUXVlcnlCdWlsZGVyXSgvZG9jdW1lbnRhdGlvbi9wby1xdWVyeS1idWlsZGVyKS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWx0ZXIgT2JqZXRvIHF1ZSBjb250w6ltIG9zIGNhbXBvcyBlIHZhbG9yZXMgYSBzZXJlbSBmaWx0cmFkb3Mgbm8gKnNjaGVtYSouXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkcyBDYW1wb3MgcXVlIHNlcsOjbyByZXRvcm5hZG9zIG5vcyByZWdpc3Ryb3MuIEVzdGUgY2FtcG9zIGRldmVtIGVzdGFyIGRlbnRybyBkZVxyXG4gICAqIHVtYSAqc3RyaW5nKiBzZXBhcmFkb3MgcG9yIGVzcGHDp28gcG9kZW5kbyB1c2FyIG8gY2FyYWN0ZXJlIGAtYCBwYXJhIGV4Y2x1aXIgY2FtcG9zLlxyXG4gICAqIFBvciBleGVtcGxvLCBhIGRlZmluacOnw6NvIGFiYWl4bzpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIFBvUXVlcnlCdWlsZGVyLnNlbGVjdCgnbmFtZSBhZ2UgYWRkcmVzcycpO1xyXG4gICAqIGBgYFxyXG4gICAqIElyw6EgcmV0b3JuYXIgYXBlbmFzIG9zIGNhbXBvcyBgbmFtZWAsIGBhZ2VgIGUgYGFkZHJlc3NgLiBFIHBhcmEgbsOjbyBtb3N0cmFyIHVtIGNhbXBvIG91IG1haXMgYmFzdGEgZmF6ZXI6XHJcbiAgICpcclxuICAgKiBgYGBcclxuICAgKiBQb1F1ZXJ5QnVpbGRlci5zZWxlY3QoJy1uYW1lIC1hZ2UnKTtcclxuICAgKiBgYGBcclxuICAgKiBAcmV0dXJucyB7UG9RdWVyeUJ1aWxkZXJ9IE9iamV0byBxdWUgcG9zc2liaWxpdGEgZW5jYWRlYXIgdW0gbcOpdG9kbyBkbyBgUG9RdWVyeUJ1aWxkZXJgLlxyXG4gICAqL1xyXG4gIGZpbmQoZmlsdGVyPzogb2JqZWN0LCBmaWVsZHM/OiBzdHJpbmcpOiBQb1F1ZXJ5QnVpbGRlciB7XHJcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBQb1F1ZXJ5QnVpbGRlcih0aGlzLnBvU2NoZW1hU2VydmljZSwgdGhpcy5zY2hlbWEpO1xyXG5cclxuICAgIGlmIChmaWx0ZXIpIHtcclxuICAgICAgcXVlcnkuZmlsdGVyKGZpbHRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpZWxkcykge1xyXG4gICAgICBxdWVyeS5zZWxlY3QoZmllbGRzKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcXVlcnk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCdXNjYSB1bSByZWdpc3RybyBwZWxvIHNldSAqaWQqLlxyXG4gICAqXHJcbiAgICogUGFyYSBxdWUgZXN0YSBidXNjYSBzZWphIGNvbmNsdcOtZGEgw6kgbmVjZXNzw6FyaW8gdXRpbGl6YXIgbyBtw6l0b2RvIGBQb1F1ZXJ5QnVpbGRlci5leGVjKClgLlxyXG4gICAqIFZlamEgbWFpcyBlbTogW1BvUXVlcnlCdWlsZGVyXSgvZG9jdW1lbnRhdGlvbi9wby1xdWVyeS1idWlsZGVyKS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7YW55fSBpZCBJZGVudGlmaWNhZG9yIGRvIHJlZ2lzdHJvLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZHMgQ2FtcG9zIHF1ZSBzZXLDo28gcmV0b3JuYWRvcyBub3MgcmVnaXN0cm9zLiBFc3RlIGNhbXBvcyBkZXZlbSBlc3RhciBkZW50cm8gZGVcclxuICAgKiB1bWEgKnN0cmluZyogc2VwYXJhZG9zIHBvciBlc3Bhw6dvIHBvZGVuZG8gdXNhciBvIGNhcmFjdGVyZSBgLWAgcGFyYSBleGNsdWlyIGNhbXBvcy5cclxuICAgKiBQb3IgZXhlbXBsbywgYSBkZWZpbmnDp8OjbyBhYmFpeG86XHJcbiAgICpcclxuICAgKiBgYGBcclxuICAgKiBQb1F1ZXJ5QnVpbGRlci5zZWxlY3QoJ25hbWUgYWdlIGFkZHJlc3MnKTtcclxuICAgKiBgYGBcclxuICAgKiBJcsOhIHJldG9ybmFyIGFwZW5hcyBvcyBjYW1wb3MgYG5hbWVgLCBgYWdlYCBlIGBhZGRyZXNzYC4gRSBwYXJhIG7Do28gbW9zdHJhciB1bSBjYW1wbyBvdSBtYWlzIGJhc3RhIGZhemVyOlxyXG4gICAqXHJcbiAgICogYGBgXHJcbiAgICogUG9RdWVyeUJ1aWxkZXIuc2VsZWN0KCctbmFtZSAtYWdlJyk7XHJcbiAgICogYGBgXHJcbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG3DqXRvZG8gZG8gYFBvUXVlcnlCdWlsZGVyYC5cclxuICAgKi9cclxuICBmaW5kQnlJZChpZDogYW55LCBmaWVsZHM/OiBzdHJpbmcpOiBQb1F1ZXJ5QnVpbGRlciB7XHJcbiAgICByZXR1cm4gdGhpcy5maW5kT25lKHsgW3RoaXMuc2NoZW1hLmlkRmllbGRdOiBpZCB9LCBmaWVsZHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VtZWxoYW50ZSBhbyBtw6l0b2RvIGBQb0VudGl0eS5maW5kKClgLCBwb3LDqW0gcmV0b3JuYSBhcGVuYXMgbyBwcmltZWlybyByZWdpc3RybyBlbmNvbnRyYWRvIG5hIGJ1c2NhLlxyXG4gICAqXHJcbiAgICogUGFyYSBxdWUgZXN0YSBidXNjYSBzZWphIGNvbmNsdcOtZGEgw6kgbmVjZXNzw6FyaW8gdXRpbGl6YXIgbyBtw6l0b2RvIGBQb1F1ZXJ5QnVpbGRlci5leGVjKClgLlxyXG4gICAqIFZlamEgbWFpcyBlbTogW1BvUXVlcnlCdWlsZGVyXSgvZG9jdW1lbnRhdGlvbi9wby1xdWVyeS1idWlsZGVyKS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7YW55fSBmaWx0ZXIgT2JqZXRvIHF1ZSBjb250w6ltIG9zIGNhbXBvcyBlIHZhbG9yZXMgYSBzZXJlbSBmaWx0cmFkb3Mgbm8gKnNjaGVtYSouXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkcyBDYW1wb3MgcXVlIHNlcsOjbyByZXRvcm5hZG9zIG5vcyByZWdpc3Ryb3MuIEVzdGUgY2FtcG9zIGRldmVtIGVzdGFyIGRlbnRybyBkZVxyXG4gICAqIHVtYSAqc3RyaW5nKiBzZXBhcmFkb3MgcG9yIGVzcGHDp28gcG9kZW5kbyB1c2FyIG8gY2FyYWN0ZXJlIGAtYCBwYXJhIGV4Y2x1aXIgY2FtcG9zLlxyXG4gICAqIFBvciBleGVtcGxvLCBhIGRlZmluacOnw6NvIGFiYWl4bzpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIFBvUXVlcnlCdWlsZGVyLnNlbGVjdCgnbmFtZSBhZ2UgYWRkcmVzcycpO1xyXG4gICAqIGBgYFxyXG4gICAqIElyw6EgcmV0b3JuYXIgYXBlbmFzIG9zIGNhbXBvcyBgbmFtZWAsIGBhZ2VgIGUgYGFkZHJlc3NgLiBFIHBhcmEgbsOjbyBtb3N0cmFyIHVtIGNhbXBvIG91IG1haXMgYmFzdGEgZmF6ZXI6XHJcbiAgICpcclxuICAgKiBgYGBcclxuICAgKiBQb1F1ZXJ5QnVpbGRlci5zZWxlY3QoJy1uYW1lIC1hZ2UnKTtcclxuICAgKiBgYGBcclxuICAgKiBAcmV0dXJucyB7UG9RdWVyeUJ1aWxkZXJ9IE9iamV0byBxdWUgcG9zc2liaWxpdGEgZW5jYWRlYXIgdW0gbcOpdG9kbyBkbyBgUG9RdWVyeUJ1aWxkZXJgLlxyXG4gICAqL1xyXG4gIGZpbmRPbmUoZmlsdGVyPzogYW55LCBmaWVsZHM/OiBzdHJpbmcpOiBQb1F1ZXJ5QnVpbGRlciB7XHJcbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuZmluZChmaWx0ZXIsIGZpZWxkcyk7XHJcbiAgICBxdWVyeS5saW1pdCgxKTtcclxuICAgIHJldHVybiBxdWVyeTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbW92ZSB1bSByZWdpc3Ryby5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWNvcmQgUmVnaXN0cm8gcXVlIHNlcsOhIHJlbW92aWRvLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjdXN0b21SZXF1ZXN0SWQgSWRlbnRpZmljYWRvciBjdXN0b21pemFkbyBkbyBjb21hbmRvLlxyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9tZXNzYSBxdWUgw6kgY29uY2x1w61kYSBhcMOzcyBvIHJlZ2lzdHJvIHNlciByZW1vdmlkby5cclxuICAgKi9cclxuICBhc3luYyByZW1vdmUocmVjb3JkOiBvYmplY3QsIGN1c3RvbVJlcXVlc3RJZD86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICB2YWxpZGF0ZVBhcmFtZXRlcih7IHJlY29yZCB9KTtcclxuXHJcbiAgICBjb25zdCByZW1vdmUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGlkRmllbGQgPSByZWNvcmRbdGhpcy5zY2hlbWEuaWRGaWVsZF0gPyB0aGlzLnNjaGVtYS5pZEZpZWxkIDogUG9TY2hlbWFVdGlsLnN5bmNJbnRlcm5hbElkRmllbGROYW1lO1xyXG4gICAgICBjb25zdCBzZXJ2ZXJSZWNvcmQgPSBQb1NjaGVtYVV0aWwuc2VwYXJhdGVTY2hlbWFGaWVsZHModGhpcy5zY2hlbWEsIHJlY29yZClbJ3NlcnZlclJlY29yZCddO1xyXG5cclxuICAgICAgYXdhaXQgdGhpcy5wb1NjaGVtYVNlcnZpY2UucmVtb3ZlKHRoaXMuc2NoZW1hLm5hbWUsIHJlY29yZFtpZEZpZWxkXSk7XHJcbiAgICAgIGF3YWl0IHRoaXMuZXZlbnRTb3VyY2luZy5yZW1vdmUodGhpcy5zY2hlbWEubmFtZSwgc2VydmVyUmVjb3JkLCBjdXN0b21SZXF1ZXN0SWQpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5wb1NjaGVtYVNlcnZpY2UubGltaXRlZENhbGxXcmFwKHJlbW92ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbHRlcmEgb3UgaW5jbHVpIHVtIHJlZ2lzdHJvLlxyXG4gICAqXHJcbiAgICogPiBPIHJlZ2lzdHJvIHNlcsOhIGFsdGVyYWRvIHNlIGVsZSBwb3NzdWlyIHVtICppZCosIGNhc28gY29udHLDoXJpbyB1bSBub3ZvIHJlZ2lzdHJvIHNlcsOhIGNyaWFkby5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWNvcmQgUmVnaXN0cm8gcXVlIHNlcsOhIHBlcnNpc3RpZG8uXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGN1c3RvbVJlcXVlc3RJZCBJZGVudGlmaWNhZG9yIGN1c3RvbWl6YWRvIGRvIGNvbWFuZG8uXHJcbiAgICogQHJldHVybnMge1Byb21pc2V9IFByb21lc3NhIHF1ZSDDqSBjb25jbHXDrWRhIGFww7NzIG8gcmVnaXN0cm8gc2VyIGFsdGVyYWRvIG91IGluY2x1w61kby5cclxuICAgKi9cclxuICBhc3luYyBzYXZlKHJlY29yZDogb2JqZWN0LCBjdXN0b21SZXF1ZXN0SWQ/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgdmFsaWRhdGVQYXJhbWV0ZXIoeyByZWNvcmQgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucG9TY2hlbWFTZXJ2aWNlLmxpbWl0ZWRDYWxsV3JhcCh0aGlzLnNlbGVjdFNhdmVUeXBlLmJpbmQodGhpcywgcmVjb3JkLCB0cnVlLCBjdXN0b21SZXF1ZXN0SWQpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhbHZhIHVtYSBsaXN0YSBkZSByZWdpc3Ryb3MgZW0gbG90ZS5cclxuICAgKlxyXG4gICAqID4gUGFyYSBjYWRhIHJlZ2lzdHJvIGRhIGxpc3RhLCBzZXLDoSBpbnNlcmlkbyB1bSBub3ZvIHJlZ2lzdHJvIHNlIG8gbWVzbW8gbsOjbyB0aXZlciAqaWQqLCBjYXNvIGNvbnRyw6FyaW9cclxuICAgKiBzZXLDoSBjb250YWRvIGNvbW8gdW1hIGF0dWFsaXphw6fDo28gZGUgdW0gcmVnaXN0cm8gZXhpc3RlbnRlLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtBcnJheTxvYmplY3Q+fSByZWNvcmRzIExpc3RhIGRlIHJlZ2lzdHJvcyBxdWUgc2Vyw6NvIHBlcnNpc3RpZG9zLlxyXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPiB8IHN0cmluZ30gY3VzdG9tUmVxdWVzdElkcyBJZGVudGlmaWNhZG9yIGN1c3RvbWl6YWRvIGRvIGNvbWFuZG8uXHJcbiAgICpcclxuICAgKiBBbyBwYXNzYXIgdW1hIGxpc3RhIGRlIGlkZW50aWZpY2Fkb3JlcywgY2FkYSDDrW5kaWNlIGRhIGxpc3RhIGRlIGlkZW50aWZpY2Fkb3JlcyBkZXZlcsOhXHJcbiAgICogY29ycmVzcG9uZGVyIGFvIMOtbmRpY2UgZG8gcmVnaXN0cm8gbmEgbGlzdGEgZGUgcmVnaXN0cm9zLlxyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59IFByb21lc3NhIHF1ZSDDqSBjb25jbHXDrWRhIGFww7NzIG9zIHJlZ2lzdHJvcyBzZXJlbSBhbHRlcmFkb3Mgb3UgaW5jbHXDrWRvcy5cclxuICAgKi9cclxuICBhc3luYyBzYXZlQWxsKHJlY29yZHM6IEFycmF5PG9iamVjdD4sIGN1c3RvbVJlcXVlc3RJZHM/OiBBcnJheTxzdHJpbmc+IHwgc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIHZhbGlkYXRlUGFyYW1ldGVyKHsgcmVjb3JkcyB9KTtcclxuXHJcbiAgICBjb25zdCBzYXZlQWxsID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgICBjb25zdCBiYXRjaEV2ZW50cyA9IFtdO1xyXG5cclxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJlY29yZHMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgY29uc3QgcmVjb3JkID0gcmVjb3Jkc1tpbmRleF07XHJcbiAgICAgICAgY29uc3Qgc2VuZFRvRXZlbnRTb3VyY2luZyA9IGZhbHNlO1xyXG5cclxuICAgICAgICBjb25zdCBpc05vbkxvY2FsUmVjb3JkQ2hhbmdlZCA9IGF3YWl0IHRoaXMuaXNOb25Mb2NhbFJlY29yZENoYW5nZWQocmVjb3JkKTtcclxuICAgICAgICBjb25zdCB1cGRhdGVkUmVjb3JkID0gYXdhaXQgdGhpcy5zZWxlY3RTYXZlVHlwZShyZWNvcmQsIHNlbmRUb0V2ZW50U291cmNpbmcpO1xyXG5cclxuICAgICAgICBpZiAoaXNOb25Mb2NhbFJlY29yZENoYW5nZWQpIHtcclxuICAgICAgICAgIGNvbnN0IGN1c3RvbVJlcXVlc3RJZCA9IGN1c3RvbVJlcXVlc3RJZHMgaW5zdGFuY2VvZiBBcnJheSA/IGN1c3RvbVJlcXVlc3RJZHNbaW5kZXhdIDogY3VzdG9tUmVxdWVzdElkcztcclxuICAgICAgICAgIGNvbnN0IGV2ZW50T3BlcmF0aW9uID0gdGhpcy5jcmVhdGVFdmVudE9wZXJhdGlvbihyZWNvcmQsIHVwZGF0ZWRSZWNvcmQsIGN1c3RvbVJlcXVlc3RJZCk7XHJcbiAgICAgICAgICBiYXRjaEV2ZW50cy5wdXNoKGV2ZW50T3BlcmF0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGF3YWl0IHRoaXMuZXZlbnRTb3VyY2luZy5jcmVhdGVCYXRjaEV2ZW50cyh0aGlzLnNjaGVtYS5uYW1lLCBiYXRjaEV2ZW50cyk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB0aGlzLnBvU2NoZW1hU2VydmljZS5saW1pdGVkQ2FsbFdyYXAoc2F2ZUFsbCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZShuZXdSZWNvcmQ6IGFueSwgc2VuZFRvRXZlbnRTb3VyY2luZzogYm9vbGVhbiwgY3VzdG9tUmVxdWVzdElkPzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuXHJcbiAgICBjb25zdCBzeW5jUHJvcGVydGllcyA9IHtcclxuICAgICAgW1BvU2NoZW1hVXRpbC5zeW5jSW50ZXJuYWxJZEZpZWxkTmFtZV06IHRpbWUsXHJcbiAgICAgIFN5bmNJbnNlcnRlZERhdGVUaW1lOiB0aW1lLFxyXG4gICAgICBTeW5jVXBkYXRlZERhdGVUaW1lOiBudWxsLFxyXG4gICAgICBTeW5jRXhjbHVzaW9uRGF0ZVRpbWU6IG51bGwsXHJcbiAgICAgIFN5bmNEZWxldGVkOiBmYWxzZSxcclxuICAgICAgU3luY1N0YXR1czogMFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlY29yZFdpdGhTeW5jUHJvcGVydGllcyA9IHsgLi4ubmV3UmVjb3JkLCAuLi5zeW5jUHJvcGVydGllcyB9O1xyXG5cclxuICAgIGNvbnN0IHJlY29yZGVkRGF0YSA9IGF3YWl0IHRoaXMucG9TY2hlbWFTZXJ2aWNlLmNyZWF0ZSh0aGlzLnNjaGVtYSwgcmVjb3JkV2l0aFN5bmNQcm9wZXJ0aWVzKTtcclxuXHJcbiAgICBpZiAoc2VuZFRvRXZlbnRTb3VyY2luZykge1xyXG4gICAgICBhd2FpdCB0aGlzLmV2ZW50U291cmNpbmcuY3JlYXRlKHRoaXMuc2NoZW1hLm5hbWUsIHJlY29yZFdpdGhTeW5jUHJvcGVydGllcywgY3VzdG9tUmVxdWVzdElkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVjb3JkZWREYXRhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVFdmVudE9wZXJhdGlvbihcclxuICAgIHJlY29yZDogb2JqZWN0LFxyXG4gICAgdXBkYXRlZFJlY29yZDogb2JqZWN0LFxyXG4gICAgY3VzdG9tUmVxdWVzdElkPzogc3RyaW5nXHJcbiAgKTogUG9FdmVudFNvdXJjaW5nU3VtbWFyeUl0ZW0ge1xyXG4gICAgY29uc3Qgb3BlcmF0aW9uID0gUG9TY2hlbWFVdGlsLmdldFJlY29yZElkKHJlY29yZCwgdGhpcy5zY2hlbWEpXHJcbiAgICAgID8gUG9FdmVudFNvdXJjaW5nT3BlcmF0aW9uLlVwZGF0ZVxyXG4gICAgICA6IFBvRXZlbnRTb3VyY2luZ09wZXJhdGlvbi5JbnNlcnQ7XHJcblxyXG4gICAgY29uc3Qgc2VydmVyUmVjb3JkID0gUG9TY2hlbWFVdGlsLnNlcGFyYXRlU2NoZW1hRmllbGRzKHRoaXMuc2NoZW1hLCB1cGRhdGVkUmVjb3JkKVsnc2VydmVyUmVjb3JkJ107XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcmVjb3JkOiBzZXJ2ZXJSZWNvcmQsXHJcbiAgICAgIGN1c3RvbVJlcXVlc3RJZDogY3VzdG9tUmVxdWVzdElkLFxyXG4gICAgICBvcGVyYXRpb246IG9wZXJhdGlvblxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgaXNOb25Mb2NhbFJlY29yZENoYW5nZWQodXBkYXRlZFJlY29yZDogb2JqZWN0KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBub25Mb2NhbEZpZWxkTmFtZXMgPSBQb1NjaGVtYVV0aWwuZ2V0Tm9uTG9jYWxGaWVsZE5hbWVzKHRoaXMuc2NoZW1hKTtcclxuICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IHRoaXMucG9TY2hlbWFTZXJ2aWNlLmdldCh0aGlzLnNjaGVtYS5uYW1lLCB1cGRhdGVkUmVjb3JkW3RoaXMuc2NoZW1hLmlkRmllbGRdKTtcclxuXHJcbiAgICByZXR1cm4gIVBvU2NoZW1hVXRpbC5pc01vZGVsc0VxdWFsKG5vbkxvY2FsRmllbGROYW1lcywgcmVjb3JkLCB1cGRhdGVkUmVjb3JkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgc2VsZWN0U2F2ZVR5cGUoXHJcbiAgICByZWNvcmQ6IG9iamVjdCxcclxuICAgIHNlbmRUb0V2ZW50U291cmNpbmc6IGJvb2xlYW4sXHJcbiAgICBjdXN0b21SZXF1ZXN0SWQ/OiBzdHJpbmdcclxuICApOiBQcm9taXNlPG9iamVjdD4ge1xyXG4gICAgY29uc3QgaGFzSWQgPSBQb1NjaGVtYVV0aWwuZ2V0UmVjb3JkSWQocmVjb3JkLCB0aGlzLnNjaGVtYSk7XHJcblxyXG4gICAgcmV0dXJuIGhhc0lkXHJcbiAgICAgID8gYXdhaXQgdGhpcy51cGRhdGUocmVjb3JkLCBzZW5kVG9FdmVudFNvdXJjaW5nLCBjdXN0b21SZXF1ZXN0SWQpXHJcbiAgICAgIDogYXdhaXQgdGhpcy5jcmVhdGUocmVjb3JkLCBzZW5kVG9FdmVudFNvdXJjaW5nLCBjdXN0b21SZXF1ZXN0SWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGUodXBkYXRlZFJlY29yZDogYW55LCBzZW5kVG9FdmVudFNvdXJjaW5nOiBib29sZWFuLCBjdXN0b21SZXF1ZXN0SWQ/OiBzdHJpbmcpOiBQcm9taXNlPG9iamVjdD4ge1xyXG4gICAgdXBkYXRlZFJlY29yZC5TeW5jVXBkYXRlZERhdGVUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICB1cGRhdGVkUmVjb3JkLlN5bmNTdGF0dXMgPSAwO1xyXG5cclxuICAgIGNvbnN0IGlzTm9uTG9jYWxSZWNvcmRDaGFuZ2VkID0gYXdhaXQgdGhpcy5pc05vbkxvY2FsUmVjb3JkQ2hhbmdlZCh1cGRhdGVkUmVjb3JkKTtcclxuICAgIGNvbnN0IHJlY29yZGVkRGF0YSA9IGF3YWl0IHRoaXMucG9TY2hlbWFTZXJ2aWNlLnVwZGF0ZSh0aGlzLnNjaGVtYSwgdXBkYXRlZFJlY29yZCk7XHJcblxyXG4gICAgaWYgKGlzTm9uTG9jYWxSZWNvcmRDaGFuZ2VkICYmIHNlbmRUb0V2ZW50U291cmNpbmcpIHtcclxuICAgICAgY29uc3Qgc2VydmVyUmVjb3JkID0gUG9TY2hlbWFVdGlsLnNlcGFyYXRlU2NoZW1hRmllbGRzKHRoaXMuc2NoZW1hLCB1cGRhdGVkUmVjb3JkKVsnc2VydmVyUmVjb3JkJ107XHJcbiAgICAgIGF3YWl0IHRoaXMuZXZlbnRTb3VyY2luZy51cGRhdGUodGhpcy5zY2hlbWEubmFtZSwgc2VydmVyUmVjb3JkLCBjdXN0b21SZXF1ZXN0SWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZWNvcmRlZERhdGE7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,241 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { validateParameter } from '../../utils/utils';
3
- /**
4
- * @description
5
- *
6
- * Classe utilitária para construir consultas sobre os registros de um *schema*.
7
- *
8
- * A utilização dos métodos desta classe é feita a partir do retorno do método `PoEntity.find()`. Por exemplo,
9
- * para utilizar o método `PoQueryBuilder.page()`, é necessário:
10
- *
11
- * ``` typescript
12
- * PoSyncService.getModel('schema name').find().page(2).exec();
13
- * ```
14
- *
15
- * O `PoQueryBuilder` foi projetado para que os seus métodos sejam
16
- * chamados em cascata e ao final desse encadeamento invocar o método
17
- * `PoQueryBuilder.exec()` para que a busca seja concluída. Por exemplo:
18
- *
19
- * ``` typescript
20
- * PoSyncService
21
- * .getModel('schema name')
22
- * .find()
23
- * .page(2)
24
- * .pageSize(5)
25
- * .sort()
26
- * .exec();
27
- * ```
28
- */
29
- export class PoQueryBuilder {
30
- constructor(poSchemaService, schema) {
31
- this.poSchemaService = poSchemaService;
32
- this.schema = schema;
33
- this._page = 1;
34
- this.filters = {};
35
- }
36
- /**
37
- * Ao final da chamada dos métodos do `PoQueryBuilder` utilizados, este método deve ser chamado para que a busca seja concluída.
38
- *
39
- * @return {Promise<PoResponseApi | object>} Registros do *schema* na qual foi aplicado a consulta.
40
- */
41
- exec() {
42
- return __awaiter(this, void 0, void 0, function* () {
43
- let storageData = yield this.poSchemaService.getAll(this.schema.name);
44
- if (storageData && storageData.length) {
45
- if (Object.keys(this.filters).length) {
46
- storageData = this.applyFilters(storageData);
47
- }
48
- if (this.fields) {
49
- storageData = this.applyFields(this.schema.fields, storageData);
50
- }
51
- if (this._sort) {
52
- storageData = this.order(storageData, this._sort);
53
- }
54
- if (this._limit) {
55
- return storageData[0];
56
- }
57
- else {
58
- return this.paginate(storageData);
59
- }
60
- }
61
- else {
62
- return {
63
- hasNext: false,
64
- items: []
65
- };
66
- }
67
- });
68
- }
69
- /**
70
- * Aplica filtros sobre os registros, baseados nos campos e valores definidos como filtro. Por exemplo:
71
- *
72
- * ```
73
- * PoQueryBuilder.filter({ name: 'Marie', age: 24 });
74
- * ```
75
- * Retorna todos os registros que contenham a propriedade `name` igual a Marie e `age` igual a 24.
76
- *
77
- * @param {object} filter Objeto que contém os campos e valores a serem filtrados no *schema*.
78
- *
79
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
80
- */
81
- filter(filter) {
82
- if (filter && typeof filter === 'object') {
83
- this.filters = Object.assign(Object.assign({}, this.filters), filter);
84
- }
85
- else {
86
- throw new Error('Filter must be an object');
87
- }
88
- return this;
89
- }
90
- /**
91
- * Limita o número de registros que serão retornados.
92
- *
93
- * @param {number} limit Número de registros retornados.
94
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
95
- */
96
- limit(limit) {
97
- this._limit = limit;
98
- return this;
99
- }
100
- /**
101
- * Especifica a página de registros que se deseja retornar.
102
- *
103
- * @param {number} page Número da página.
104
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
105
- */
106
- page(page) {
107
- validateParameter({ page });
108
- this._page = page;
109
- return this;
110
- }
111
- /**
112
- * Define quantos elementos serão retornados por página.
113
- *
114
- * @param {number} pageSize Número de registros por página.
115
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
116
- */
117
- pageSize(pageSize) {
118
- validateParameter({ pageSize });
119
- this._pageSize = pageSize;
120
- return this;
121
- }
122
- /**
123
- * Utilizado para definir quais campos do *schema* serão retornados na consulta.
124
- *
125
- * @param {string} fields Campos que serão retornados nos registros. Este campos devem estar dentro de
126
- * uma *string* separados por espaço podendo usar o caractere `-` para excluir campos.
127
- * Por exemplo, a definição abaixo:
128
- *
129
- * ```
130
- * PoQueryBuilder.select('name age address');
131
- * ```
132
- * Irá retornar apenas os campos `name`, `age` e `address`. Para não retornar um campo ou mais basta fazer:
133
- *
134
- * ```
135
- * PoQueryBuilder.select('-name -age');
136
- * ```
137
- *
138
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
139
- */
140
- select(fields) {
141
- validateParameter({ fields });
142
- this.fields = fields;
143
- return this;
144
- }
145
- /**
146
- * Ordena os registros por um campo.
147
- *
148
- * @param {string} field Campo a ser ordenado. Para ordenar de forma decrescente basta colocar o caractere `-`
149
- * na frente do campo. Por exemplo:
150
- * ```
151
- * PoQueryBuilder.sort('-name');
152
- * ```
153
- *
154
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
155
- */
156
- sort(field) {
157
- validateParameter({ field });
158
- this._sort = field;
159
- return this;
160
- }
161
- /**
162
- * Essa função serve como alias para o `PoQueryBuilder.filter()`. É utilizada somente para dar maior legibilidade ao código.
163
- *
164
- * @param {object} filter Objeto que contém os campos e valores a serem filtrados no *schema*.
165
- * @returns {PoQueryBuilder} Objeto que possibilita encadear um novo método do `PoQueryBuilder`.
166
- */
167
- where(filter) {
168
- return this.filter(filter);
169
- }
170
- applyFields(schemaFields, data) {
171
- const receivedFields = this.fields.split(' ');
172
- let restrictedFields = [];
173
- let selectedFields = [];
174
- [selectedFields, restrictedFields] = this.groupFields(receivedFields);
175
- if (!selectedFields.length && restrictedFields.length) {
176
- selectedFields = [...schemaFields];
177
- }
178
- if (restrictedFields.length) {
179
- selectedFields = this.removeRestrictedFields(restrictedFields, selectedFields);
180
- }
181
- selectedFields = this.removeDuplicate(selectedFields);
182
- return this.removeFieldsData(data, selectedFields);
183
- }
184
- applyFilters(data) {
185
- Object.keys(this.filters).forEach(filterKey => {
186
- data = data.filter(item => item[filterKey] === this.filters[filterKey]);
187
- });
188
- return data;
189
- }
190
- groupFields(receivedFields) {
191
- const restrictedFields = [];
192
- const selectedFields = [];
193
- receivedFields.forEach(fields => {
194
- if (fields.startsWith('-')) {
195
- restrictedFields.push(fields.substring(1));
196
- }
197
- else {
198
- selectedFields.push(fields);
199
- }
200
- });
201
- return [selectedFields, restrictedFields];
202
- }
203
- paginate(data) {
204
- const dataLength = data.length;
205
- const pageSize = this._pageSize || dataLength;
206
- const pages = Math.ceil(dataLength / pageSize);
207
- const begin = this._page * pageSize - pageSize;
208
- const end = begin + pageSize;
209
- return { hasNext: this._page < pages, items: data.slice(begin, end) };
210
- }
211
- order(data, sortingField) {
212
- const descendingOrder = sortingField.startsWith('-');
213
- sortingField = descendingOrder ? sortingField.substr(1) : sortingField;
214
- return data.sort((optionA, optionB) => {
215
- if (optionA[sortingField] > optionB[sortingField]) {
216
- return !descendingOrder ? 1 : -1;
217
- }
218
- if (optionA[sortingField] < optionB[sortingField]) {
219
- return !descendingOrder ? -1 : 1;
220
- }
221
- return 0;
222
- });
223
- }
224
- removeDuplicate(fields) {
225
- return fields.filter((item, position) => fields.indexOf(item) === position);
226
- }
227
- removeFieldsData(data, chosenFields) {
228
- data.forEach(item => {
229
- Object.keys(item).forEach(keyItem => {
230
- if (!chosenFields.includes(keyItem)) {
231
- delete item[keyItem];
232
- }
233
- });
234
- });
235
- return data;
236
- }
237
- removeRestrictedFields(restrictedFields, fields) {
238
- return fields.filter(field => !restrictedFields.includes(field));
239
- }
240
- }
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcXVlcnktYnVpbGRlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5bmMvc3JjL2xpYi9tb2RlbHMvcG8tcXVlcnktYnVpbGRlci9wby1xdWVyeS1idWlsZGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQU10RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBU3pCLFlBQW9CLGVBQWdDLEVBQVUsTUFBb0I7UUFBOUQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNoRixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0csSUFBSTs7WUFDUixJQUFJLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEUsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRTtnQkFDckMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUU7b0JBQ3BDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUM5QztnQkFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ2YsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7aUJBQ2pFO2dCQUNELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFDZCxXQUFXLEdB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LElBQUksQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFtQixFQUFFLFlBQTJCO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDdEI7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsZ0JBQTRCLEVBQUUsTUFBa0I7UUFDN0UsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2YWxpZGF0ZVBhcmFtZXRlciB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbmltcG9ydCB7IFBvUmVzcG9uc2VBcGkgfSBmcm9tICcuLy4uLy4uL3NlcnZpY2VzL3BvLWh0dHAtY2xpZW50L2ludGVyZmFjZXMvcG8tcmVzcG9uc2UtYXBpLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFBvU2NoZW1hU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvcG8tc2NoZW1hJztcclxuaW1wb3J0IHsgUG9TeW5jU2NoZW1hIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcG8tc3luYy9pbnRlcmZhY2VzL3BvLXN5bmMtc2NoZW1hLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIENsYXNzZSB1dGlsaXTDoXJpYSBwYXJhIGNvbnN0cnVpciBjb25zdWx0YXMgc29icmUgb3MgcmVnaXN0cm9zIGRlIHVtICpzY2hlbWEqLlxyXG4gKlxyXG4gKiBBIHV0aWxpemHDp8OjbyBkb3MgbcOpdG9kb3MgZGVzdGEgY2xhc3NlIMOpIGZlaXRhIGEgcGFydGlyIGRvIHJldG9ybm8gZG8gbcOpdG9kbyBgUG9FbnRpdHkuZmluZCgpYC4gUG9yIGV4ZW1wbG8sXHJcbiAqIHBhcmEgdXRpbGl6YXIgbyBtw6l0b2RvIGBQb1F1ZXJ5QnVpbGRlci5wYWdlKClgLCDDqSBuZWNlc3PDoXJpbzpcclxuICpcclxuICogYGBgIHR5cGVzY3JpcHRcclxuICogUG9TeW5jU2VydmljZS5nZXRNb2RlbCgnc2NoZW1hIG5hbWUnKS5maW5kKCkucGFnZSgyKS5leGVjKCk7XHJcbiAqIGBgYFxyXG4gKlxyXG4gKiBPIGBQb1F1ZXJ5QnVpbGRlcmAgZm9pIHByb2pldGFkbyBwYXJhIHF1ZSBvcyBzZXVzIG3DqXRvZG9zIHNlamFtXHJcbiAqIGNoYW1hZG9zIGVtIGNhc2NhdGEgZSBhbyBmaW5hbCBkZXNzZSBlbmNhZGVhbWVudG8gaW52b2NhciBvIG3DqXRvZG9cclxuICogYFBvUXVlcnlCdWlsZGVyLmV4ZWMoKWAgcGFyYSBxdWUgYSBidXNjYSBzZWphIGNvbmNsdcOtZGEuIFBvciBleGVtcGxvOlxyXG4gKlxyXG4gKiBgYGAgdHlwZXNjcmlwdFxyXG4gKiBQb1N5bmNTZXJ2aWNlXHJcbiAqICAgLmdldE1vZGVsKCdzY2hlbWEgbmFtZScpXHJcbiAqICAgLmZpbmQoKVxyXG4gKiAgIC5wYWdlKDIpXHJcbiAqICAgLnBhZ2VTaXplKDUpXHJcbiAqICAgLnNvcnQoKVxyXG4gKiAgIC5leGVjKCk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFBvUXVlcnlCdWlsZGVyIHtcclxuICBwcml2YXRlIGZpZWxkczogc3RyaW5nO1xyXG4gIHByaXZhdGUgZmlsdGVyczogYW55O1xyXG5cclxuICBwcml2YXRlIF9saW1pdDogbnVtYmVyO1xyXG4gIHByaXZhdGUgX3BhZ2U6IG51bWJlcjtcclxuICBwcml2YXRlIF9wYWdlU2l6ZTogbnVtYmVyO1xyXG4gIHByaXZhdGUgX3NvcnQ6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb1NjaGVtYVNlcnZpY2U6IFBvU2NoZW1hU2VydmljZSwgcHJpdmF0ZSBzY2hlbWE6IFBvU3luY1NjaGVtYSkge1xyXG4gICAgdGhpcy5fcGFnZSA9IDE7XHJcbiAgICB0aGlzLmZpbHRlcnMgPSB7fTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFvIGZpbmFsIGRhIGNoYW1hZGEgZG9zIG3DqXRvZG9zIGRvIGBQb1F1ZXJ5QnVpbGRlcmAgdXRpbGl6YWRvcywgZXN0ZSBtw6l0b2RvIGRldmUgc2VyIGNoYW1hZG8gcGFyYSBxdWUgYSBidXNjYSBzZWphIGNvbmNsdcOtZGEuXHJcbiAgICpcclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFBvUmVzcG9uc2VBcGkgfCBvYmplY3Q+fSBSZWdpc3Ryb3MgZG8gKnNjaGVtYSogbmEgcXVhbCBmb2kgYXBsaWNhZG8gYSBjb25zdWx0YS5cclxuICAgKi9cclxuICBhc3luYyBleGVjKCk6IFByb21pc2U8UG9SZXNwb25zZUFwaSB8IG9iamVjdD4ge1xyXG4gICAgbGV0IHN0b3JhZ2VEYXRhID0gYXdhaXQgdGhpcy5wb1NjaGVtYVNlcnZpY2UuZ2V0QWxsKHRoaXMuc2NoZW1hLm5hbWUpO1xyXG5cclxuICAgIGlmIChzdG9yYWdlRGF0YSAmJiBzdG9yYWdlRGF0YS5sZW5ndGgpIHtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZmlsdGVycykubGVuZ3RoKSB7XHJcbiAgICAgICAgc3RvcmFnZURhdGEgPSB0aGlzLmFwcGx5RmlsdGVycyhzdG9yYWdlRGF0YSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGRzKSB7XHJcbiAgICAgICAgc3RvcmFnZURhdGEgPSB0aGlzLmFwcGx5RmllbGRzKHRoaXMuc2NoZW1hLmZpZWxkcywgc3RvcmFnZURhdGEpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLl9zb3J0KSB7XHJcbiAgICAgICAgc3RvcmFnZURhdGEgPSB0aGlzLm9yZGVyKHN0b3JhZ2VEYXRhLCB0aGlzLl9zb3J0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuX2xpbWl0KSB7XHJcbiAgICAgICAgcmV0dXJuIHN0b3JhZ2VEYXRhWzBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlKHN0b3JhZ2VEYXRhKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBoYXNOZXh0OiBmYWxzZSxcclxuICAgICAgICBpdGVtczogW11cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFwbGljYSBmaWx0cm9zIHNvYnJlIG9zIHJlZ2lzdHJvcywgYmFzZWFkb3Mgbm9zIGNhbXBvcyBlIHZhbG9yZXMgZGVmaW5pZG9zIGNvbW8gZmlsdHJvLiBQb3IgZXhlbXBsbzpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIFBvUXVlcnlCdWlsZGVyLmZpbHRlcih7IG5hbWU6ICdNYXJpZScsIGFnZTogMjQgfSk7XHJcbiAgICogYGBgXHJcbiAgICogUmV0b3JuYSB0b2RvcyBvcyByZWdpc3Ryb3MgcXVlIGNvbnRlbmhhbSBhIHByb3ByaWVkYWRlIGBuYW1lYCBpZ3VhbCBhIE1hcmllIGUgYGFnZWAgaWd1YWwgYSAyNC5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWx0ZXIgT2JqZXRvIHF1ZSBjb250w6ltIG9zIGNhbXBvcyBlIHZhbG9yZXMgYSBzZXJlbSBmaWx0cmFkb3Mgbm8gKnNjaGVtYSouXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7UG9RdWVyeUJ1aWxkZXJ9IE9iamV0byBxdWUgcG9zc2liaWxpdGEgZW5jYWRlYXIgdW0gbm92byBtw6l0b2RvIGRvIGBQb1F1ZXJ5QnVpbGRlcmAuXHJcbiAgICovXHJcbiAgZmlsdGVyKGZpbHRlcj86IG9iamVjdCk6IFBvUXVlcnlCdWlsZGVyIHtcclxuICAgIGlmIChmaWx0ZXIgJiYgdHlwZW9mIGZpbHRlciA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzID0geyAuLi50aGlzLmZpbHRlcnMsIC4uLmZpbHRlciB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdGaWx0ZXIgbXVzdCBiZSBhbiBvYmplY3QnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpbWl0YSBvIG7Dum1lcm8gZGUgcmVnaXN0cm9zIHF1ZSBzZXLDo28gcmV0b3JuYWRvcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCBOw7ptZXJvIGRlIHJlZ2lzdHJvcyByZXRvcm5hZG9zLlxyXG4gICAqIEByZXR1cm5zIHtQb1F1ZXJ5QnVpbGRlcn0gT2JqZXRvIHF1ZSBwb3NzaWJpbGl0YSBlbmNhZGVhciB1bSBub3ZvIG3DqXRvZG8gZG8gYFBvUXVlcnlCdWlsZGVyYC5cclxuICAgKi9cclxuICBsaW1pdChsaW1pdDogbnVtYmVyKTogUG9RdWVyeUJ1aWxkZXIge1xyXG4gICAgdGhpcy5fbGltaXQgPSBsaW1pdDtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXNwZWNpZmljYSBhIHDDoWdpbmEgZGUgcmVnaXN0cm9zIHF1ZSBzZSBkZXNlamEgcmV0b3JuYXIuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZSBOw7ptZXJvIGRhIHDDoWdpbmEuXHJcbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG5vdm8gbcOpdG9kbyBkbyBgUG9RdWVyeUJ1aWxkZXJgLlxyXG4gICAqL1xyXG4gIHBhZ2UocGFnZTogbnVtYmVyKTogUG9RdWVyeUJ1aWxkZXIge1xyXG4gICAgdmFsaWRhdGVQYXJhbWV0ZXIoeyBwYWdlIH0pO1xyXG5cclxuICAgIHRoaXMuX3BhZ2UgPSBwYWdlO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWZpbmUgcXVhbnRvcyBlbGVtZW50b3Mgc2Vyw6NvIHJldG9ybmFkb3MgcG9yIHDDoWdpbmEuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZVNpemUgTsO6bWVybyBkZSByZWdpc3Ryb3MgcG9yIHDDoWdpbmEuXHJcbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG5vdm8gbcOpdG9kbyBkbyBgUG9RdWVyeUJ1aWxkZXJgLlxyXG4gICAqL1xyXG4gIHBhZ2VTaXplKHBhZ2VTaXplOiBudW1iZXIpOiBQb1F1ZXJ5QnVpbGRlciB7XHJcbiAgICB2YWxpZGF0ZVBhcmFtZXRlcih7IHBhZ2VTaXplIH0pO1xyXG5cclxuICAgIHRoaXMuX3BhZ2VTaXplID0gcGFnZVNpemU7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFV0aWxpemFkbyBwYXJhIGRlZmluaXIgcXVhaXMgY2FtcG9zIGRvICpzY2hlbWEqIHNlcsOjbyByZXRvcm5hZG9zIG5hIGNvbnN1bHRhLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpZWxkcyBDYW1wb3MgcXVlIHNlcsOjbyByZXRvcm5hZG9zIG5vcyByZWdpc3Ryb3MuIEVzdGUgY2FtcG9zIGRldmVtIGVzdGFyIGRlbnRybyBkZVxyXG4gICAqIHVtYSAqc3RyaW5nKiBzZXBhcmFkb3MgcG9yIGVzcGHDp28gcG9kZW5kbyB1c2FyIG8gY2FyYWN0ZXJlIGAtYCBwYXJhIGV4Y2x1aXIgY2FtcG9zLlxyXG4gICAqIFBvciBleGVtcGxvLCBhIGRlZmluacOnw6NvIGFiYWl4bzpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIFBvUXVlcnlCdWlsZGVyLnNlbGVjdCgnbmFtZSBhZ2UgYWRkcmVzcycpO1xyXG4gICAqIGBgYFxyXG4gICAqIElyw6EgcmV0b3JuYXIgYXBlbmFzIG9zIGNhbXBvcyBgbmFtZWAsIGBhZ2VgIGUgYGFkZHJlc3NgLiBQYXJhIG7Do28gcmV0b3JuYXIgdW0gY2FtcG8gb3UgbWFpcyBiYXN0YSBmYXplcjpcclxuICAgKlxyXG4gICAqIGBgYFxyXG4gICAqIFBvUXVlcnlCdWlsZGVyLnNlbGVjdCgnLW5hbWUgLWFnZScpO1xyXG4gICAqIGBgYFxyXG4gICAqXHJcbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG5vdm8gbcOpdG9kbyBkbyBgUG9RdWVyeUJ1aWxkZXJgLlxyXG4gICAqL1xyXG4gIHNlbGVjdChmaWVsZHM6IHN0cmluZyk6IFBvUXVlcnlCdWlsZGVyIHtcclxuICAgIHZhbGlkYXRlUGFyYW1ldGVyKHsgZmllbGRzIH0pO1xyXG5cclxuICAgIHRoaXMuZmllbGRzID0gZmllbGRzO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcmRlbmEgb3MgcmVnaXN0cm9zIHBvciB1bSBjYW1wby5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWVsZCBDYW1wbyBhIHNlciBvcmRlbmFkby4gUGFyYSBvcmRlbmFyIGRlIGZvcm1hIGRlY3Jlc2NlbnRlIGJhc3RhIGNvbG9jYXIgbyBjYXJhY3RlcmUgYC1gXHJcbiAgICogbmEgZnJlbnRlIGRvIGNhbXBvLiBQb3IgZXhlbXBsbzpcclxuICAgKiBgYGBcclxuICAgKiBQb1F1ZXJ5QnVpbGRlci5zb3J0KCctbmFtZScpO1xyXG4gICAqIGBgYFxyXG4gICAqXHJcbiAgICogQHJldHVybnMge1BvUXVlcnlCdWlsZGVyfSBPYmpldG8gcXVlIHBvc3NpYmlsaXRhIGVuY2FkZWFyIHVtIG5vdm8gbcOpdG9kbyBkbyBgUG9RdWVyeUJ1aWxkZXJgLlxyXG4gICAqL1xyXG4gIHNvcnQoZmllbGQ6IHN0cmluZyk6IFBvUXVlcnlCdWlsZGVyIHtcclxuICAgIHZhbGlkYXRlUGFyYW1ldGVyKHsgZmllbGQgfSk7XHJcblxyXG4gICAgdGhpcy5fc29ydCA9IGZpZWxkO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFc3NhIGZ1bsOnw6NvIHNlcnZlIGNvbW8gYWxpYXMgcGFyYSBvIGBQb1F1ZXJ5QnVpbGRlci5maWx0ZXIoKWAuIMOJIHV0aWxpemFkYSBzb21lbnRlIHBhcmEgZGFyIG1haW9yIGxlZ2liaWxpZGFkZSBhbyBjw7NkaWdvLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbHRlciBPYmpldG8gcXVlIGNvbnTDqW0gb3MgY2FtcG9zIGUgdmFsb3JlcyBhIHNlcmVtIGZpbHRyYWRvcyBubyAqc2NoZW1hKi5cclxuICAgKiBAcmV0dXJucyB7UG9RdWVyeUJ1aWxkZXJ9IE9iamV0byBxdWUgcG9zc2liaWxpdGEgZW5jYWRlYXIgdW0gbm92byBtw6l0b2RvIGRvIGBQb1F1ZXJ5QnVpbGRlcmAuXHJcbiAgICovXHJcbiAgd2hlcmUoZmlsdGVyOiBvYmplY3QpOiBQb1F1ZXJ5QnVpbGRlciB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXIoZmlsdGVyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWVsZHMoc2NoZW1hRmllbGRzOiBBcnJheTxhbnk+LCBkYXRhOiBBcnJheTxvYmplY3Q+KTogQXJyYXk8b2JqZWN0PiB7XHJcbiAgICBjb25zdCByZWNlaXZlZEZpZWxkcyA9IHRoaXMuZmllbGRzLnNwbGl0KCcgJyk7XHJcbiAgICBsZXQgcmVzdHJpY3RlZEZpZWxkcyA9IFtdO1xyXG4gICAgbGV0IHNlbGVjdGVkRmllbGRzID0gW107XHJcblxyXG4gICAgW3NlbGVjdGVkRmllbGRzLCByZXN0cmljdGVkRmllbGRzXSA9IHRoaXMuZ3JvdXBGaWVsZHMocmVjZWl2ZWRGaWVsZHMpO1xyXG5cclxuICAgIGlmICghc2VsZWN0ZWRGaWVsZHMubGVuZ3RoICYmIHJlc3RyaWN0ZWRGaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgIHNlbGVjdGVkRmllbGRzID0gWy4uLnNjaGVtYUZpZWxkc107XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlc3RyaWN0ZWRGaWVsZHMubGVuZ3RoKSB7XHJcbiAgICAgIHNlbGVjdGVkRmllbGRzID0gdGhpcy5yZW1vdmVSZXN0cmljdGVkRmllbGRzKHJlc3RyaWN0ZWRGaWVsZHMsIHNlbGVjdGVkRmllbGRzKTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RlZEZpZWxkcyA9IHRoaXMucmVtb3ZlRHVwbGljYXRlKHNlbGVjdGVkRmllbGRzKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5yZW1vdmVGaWVsZHNEYXRhKGRhdGEsIHNlbGVjdGVkRmllbGRzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXJzKGRhdGE6IEFycmF5PG9iamVjdD4pOiBBcnJheTxvYmplY3Q+IHtcclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZmlsdGVycykuZm9yRWFjaChmaWx0ZXJLZXkgPT4ge1xyXG4gICAgICBkYXRhID0gZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtW2ZpbHRlcktleV0gPT09IHRoaXMuZmlsdGVyc1tmaWx0ZXJLZXldKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBncm91cEZpZWxkcyhyZWNlaXZlZEZpZWxkczogQXJyYXk8c3RyaW5nPik6IEFycmF5PEFycmF5PHN0cmluZz4+IHtcclxuICAgIGNvbnN0IHJlc3RyaWN0ZWRGaWVsZHMgPSBbXTtcclxuICAgIGNvbnN0IHNlbGVjdGVkRmllbGRzID0gW107XHJcblxyXG4gICAgcmVjZWl2ZWRGaWVsZHMuZm9yRWFjaChmaWVsZHMgPT4ge1xyXG4gICAgICBpZiAoZmllbGRzLnN0YXJ0c1dpdGgoJy0nKSkge1xyXG4gICAgICAgIHJlc3RyaWN0ZWRGaWVsZHMucHVzaChmaWVsZHMuc3Vic3RyaW5nKDEpKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZEZpZWxkcy5wdXNoKGZpZWxkcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIFtzZWxlY3RlZEZpZWxkcywgcmVzdHJpY3RlZEZpZWxkc107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhZ2luYXRlKGRhdGE6IEFycmF5PGFueT4pOiB7IGhhc05leHQ6IGJvb2xlYW47IGl0ZW1zOiBBcnJheTxhbnk+IH0ge1xyXG4gICAgY29uc3QgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoO1xyXG4gICAgY29uc3QgcGFnZVNpemUgPSB0aGlzLl9wYWdlU2l6ZSB8fCBkYXRhTGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IHBhZ2VzID0gTWF0aC5jZWlsKGRhdGFMZW5ndGggLyBwYWdlU2l6ZSk7XHJcbiAgICBjb25zdCBiZWdpbiA9IHRoaXMuX3BhZ2UgKiBwYWdlU2l6ZSAtIHBhZ2VTaXplO1xyXG4gICAgY29uc3QgZW5kID0gYmVnaW4gKyBwYWdlU2l6ZTtcclxuXHJcbiAgICByZXR1cm4geyBoYXNOZXh0OiB0aGlzLl9wYWdlIDwgcGFnZXMsIGl0ZW1zOiBkYXRhLnNsaWNlKGJlZ2luLCBlbmQpIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9yZGVyKGRhdGE6IEFycmF5PGFueT4sIHNvcnRpbmdGaWVsZDogc3RyaW5nKTogQXJyYXk8YW55PiB7XHJcbiAgICBjb25zdCBkZXNjZW5kaW5nT3JkZXIgPSBzb3J0aW5nRmllbGQuc3RhcnRzV2l0aCgnLScpO1xyXG4gICAgc29ydGluZ0ZpZWxkID0gZGVzY2VuZGluZ09yZGVyID8gc29ydGluZ0ZpZWxkLnN1YnN0cigxKSA6IHNvcnRpbmdGaWVsZDtcclxuXHJcbiAgICByZXR1cm4gZGF0YS5zb3J0KChvcHRpb25BLCBvcHRpb25CKSA9PiB7XHJcbiAgICAgIGlmIChvcHRpb25BW3NvcnRpbmdGaWVsZF0gPiBvcHRpb25CW3NvcnRpbmdGaWVsZF0pIHtcclxuICAgICAgICByZXR1cm4gIWRlc2NlbmRpbmdPcmRlciA/IDEgOiAtMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG9wdGlvbkFbc29ydGluZ0ZpZWxkXSA8IG9wdGlvbkJbc29ydGluZ0ZpZWxkXSkge1xyXG4gICAgICAgIHJldHVybiAhZGVzY2VuZGluZ09yZGVyID8gLTEgOiAxO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVEdXBsaWNhdGUoZmllbGRzKTogQXJyYXk8YW55PiB7XHJcbiAgICByZXR1cm4gZmllbGRzLmZpbHRlcigoaXRlbSwgcG9zaXRpb24pID0+IGZpZWxkcy5pbmRleE9mKGl0ZW0pID09PSBwb3NpdGlvbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbW92ZUZpZWxkc0RhdGEoZGF0YTogQXJyYXk8b2JqZWN0PiwgY2hvc2VuRmllbGRzOiBBcnJheTxzdHJpbmc+KTogQXJyYXk8b2JqZWN0PiB7XHJcbiAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGl0ZW0pLmZvckVhY2goa2V5SXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKCFjaG9zZW5GaWVsZHMuaW5jbHVkZXMoa2V5SXRlbSkpIHtcclxuICAgICAgICAgIGRlbGV0ZSBpdGVtW2tleUl0ZW1dO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVSZXN0cmljdGVkRmllbGRzKHJlc3RyaWN0ZWRGaWVsZHM6IEFycmF5PGFueT4sIGZpZWxkczogQXJyYXk8YW55Pikge1xyXG4gICAgcmV0dXJuIGZpZWxkcy5maWx0ZXIoZmllbGQgPT4gIXJlc3RyaWN0ZWRGaWVsZHMuaW5jbHVkZXMoZmllbGQpKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,31 +0,0 @@
1
- import { HttpClientModule } from '@angular/common/http';
2
- import { NgModule } from '@angular/core';
3
- import { Network } from '@ionic-native/network/ngx';
4
- import { PoEventSourcingService } from './services/po-event-sourcing/po-event-sourcing.service';
5
- import { PoHttpClientService } from './services/po-http-client/po-http-client.service';
6
- import { PoNetworkService } from './services/po-network/po-network.service';
7
- import { PoSchemaDefinitionService } from './services/po-schema/po-schema-definition/po-schema-definition.service';
8
- import { PoSchemaService } from './services/po-schema/po-schema.service';
9
- import { PoSyncService } from './services/po-sync/po-sync.service';
10
- /**
11
- * @description
12
- *
13
- * Módulo do componente PoSync responsável pela sincronia de dados com backends
14
- */
15
- export class PoSyncModule {
16
- }
17
- PoSyncModule.decorators = [
18
- { type: NgModule, args: [{
19
- providers: [
20
- PoEventSourcingService,
21
- PoNetworkService,
22
- PoSchemaDefinitionService,
23
- PoSchemaService,
24
- PoSyncService,
25
- PoHttpClientService,
26
- Network
27
- ],
28
- imports: [HttpClientModule]
29
- },] }
30
- ];
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3luYy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zeW5jL3NyYy9saWIvcG8tc3luYy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDaEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDbkgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVuRTs7OztHQUlHO0FBYUgsTUFBTSxPQUFPLFlBQVk7OztZQVp4QixRQUFRLFNBQUM7Z0JBQ1IsU0FBUyxFQUFFO29CQUNULHNCQUFzQjtvQkFDdEIsZ0JBQWdCO29CQUNoQix5QkFBeUI7b0JBQ3pCLGVBQWU7b0JBQ2YsYUFBYTtvQkFDYixtQkFBbUI7b0JBQ25CLE9BQU87aUJBQ1I7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7YUFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gJ0Bpb25pYy1uYXRpdmUvbmV0d29yay9uZ3gnO1xyXG5cclxuaW1wb3J0IHsgUG9FdmVudFNvdXJjaW5nU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcG8tZXZlbnQtc291cmNpbmcvcG8tZXZlbnQtc291cmNpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IFBvSHR0cENsaWVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLWh0dHAtY2xpZW50L3BvLWh0dHAtY2xpZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb05ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1uZXR3b3JrL3BvLW5ldHdvcmsuc2VydmljZSc7XHJcbmltcG9ydCB7IFBvU2NoZW1hRGVmaW5pdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BvLXNjaGVtYS9wby1zY2hlbWEtZGVmaW5pdGlvbi9wby1zY2hlbWEtZGVmaW5pdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9TY2hlbWFTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1zY2hlbWEvcG8tc2NoZW1hLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQb1N5bmNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9wby1zeW5jL3BvLXN5bmMuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIE3Ds2R1bG8gZG8gY29tcG9uZW50ZSBQb1N5bmMgcmVzcG9uc8OhdmVsIHBlbGEgc2luY3JvbmlhIGRlIGRhZG9zIGNvbSBiYWNrZW5kc1xyXG4gKi9cclxuQE5nTW9kdWxlKHtcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFBvRXZlbnRTb3VyY2luZ1NlcnZpY2UsXHJcbiAgICBQb05ldHdvcmtTZXJ2aWNlLFxyXG4gICAgUG9TY2hlbWFEZWZpbml0aW9uU2VydmljZSxcclxuICAgIFBvU2NoZW1hU2VydmljZSxcclxuICAgIFBvU3luY1NlcnZpY2UsXHJcbiAgICBQb0h0dHBDbGllbnRTZXJ2aWNlLFxyXG4gICAgTmV0d29ya1xyXG4gIF0sXHJcbiAgaW1wb3J0czogW0h0dHBDbGllbnRNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb1N5bmNNb2R1bGUge31cclxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZXZlbnQtc291cmNpbmctaXRlbS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeW5jL3NyYy9saWIvc2VydmljZXMvcG8tZXZlbnQtc291cmNpbmcvaW50ZXJmYWNlcy9wby1ldmVudC1zb3VyY2luZy1pdGVtLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9FdmVudFNvdXJjaW5nT3BlcmF0aW9uIH0gZnJvbSAnLi8uLi9lbnVtcy9wby1ldmVudC1zb3VyY2luZy1vcGVyYXRpb24uZW51bSc7XHJcbmltcG9ydCB7IFBvSHR0cFJlcXVlc3REYXRhIH0gZnJvbSAnLi4vLi4vcG8taHR0cC1jbGllbnQvaW50ZXJmYWNlcy9wby1odHRwLXJlcXVlc3QtZGF0YS5pbnRlcmZhY2UnO1xyXG5cclxuLyoqXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKlxyXG4gKiBDbGFzc2UgcXVlIGlyw6EgbWFwZWFyIGFzIGluZm9ybWHDp8O1ZXMgZG9zIGBFdmVudFNvdXJjaW5nYCBnZXJhZG9zIHBlbGEgYXBsaWNhw6fDo28uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFBvRXZlbnRTb3VyY2luZ0l0ZW0ge1xyXG4gIC8qKiBWYWxvciBudW3DqXJpY28gY29ycmVzcG9uZGVudGUgYW8gaG9yw6FyaW8gZGEgZGF0YSBlbSBxdWUgbyByZWdpc3RybyBmb2kgY3JpYWRvIGRlIGFjb3JkbyBjb20gbyBob3LDoXJpbyB1bml2ZXJzYWwuICovXHJcbiAgZGF0ZVRpbWU6IG51bWJlcjtcclxuXHJcbiAgLyoqIElkZW50aWZpY2Fkb3IgZG8gcmVnaXN0cm8uICovXHJcbiAgaWQ6IG51bWJlcjtcclxuXHJcbiAgLyoqIElkZW50aWZpY2Fkb3IgY3VzdG9taXphZG8gZG8gcmVnaXN0cm8uICovXHJcbiAgY3VzdG9tUmVxdWVzdElkPzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBFc3BlY2lmaWNhIGEgb3BlcmHDp8OjbyBxdWUgZGV2ZXLDoSBzZXIgcmVhbGl6YWRhIG5hIEFQSS5cclxuICAgKi9cclxuICBvcGVyYXRpb246IFBvRXZlbnRTb3VyY2luZ09wZXJhdGlvbjtcclxuXHJcbiAgLyoqIE9iamV0byAqanNvbiogY29tIG9zIGRhZG9zIGRvIHJlZ2lzdHJvLlxyXG4gICAqXHJcbiAgICogPiBDYXNvIGEgb3BlcmHDp8OjbyBzZWphIGRvIHRpcG8gSFRUUCwgbyByZWdpc3RybyBkZXZlcsOhIHRlciBhIGFzc2luYXR1cmEgZGEgaW50ZXJmYWNlIGBQb0h0dHBPcGVyYXRpb25EYXRhYC5cclxuICAgKi9cclxuICByZWNvcmQ6IGFueSB8IFBvSHR0cFJlcXVlc3REYXRhO1xyXG5cclxuICAvKiogTm9tZSBkbyAqc2NoZW1hKiDDoCBxdWFsIHNlIHJlZmVyZSBvIGBFdmVudFNvdXJjaW5nYC4gKi9cclxuICBzY2hlbWE/OiBzdHJpbmc7XHJcbn1cclxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tZXZlbnQtc291cmNpbmctc3VtbWFyeS1pdGVtLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5bmMvc3JjL2xpYi9zZXJ2aWNlcy9wby1ldmVudC1zb3VyY2luZy9pbnRlcmZhY2VzL3BvLWV2ZW50LXNvdXJjaW5nLXN1bW1hcnktaXRlbS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBvRXZlbnRTb3VyY2luZ09wZXJhdGlvbiB9IGZyb20gJy4uL2VudW1zL3BvLWV2ZW50LXNvdXJjaW5nLW9wZXJhdGlvbi5lbnVtJztcclxuXHJcbi8qKlxyXG4gKiBAZG9jc1ByaXZhdGVcclxuICpcclxuICogQGRlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIERlZmluZSBhcyBpbmZvcm1hw6fDtWVzIGRlIHVtIGV2ZW50byBwYXJhIHVtIGRldGVybWluYWRvIHJlZ2lzdHJvLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQb0V2ZW50U291cmNpbmdTdW1tYXJ5SXRlbSB7XHJcbiAgLyoqIElkZW50aWZpY2Fkb3IgY3VzdG9taXphZG8gZG8gcmVnaXN0cm8uICovXHJcbiAgY3VzdG9tUmVxdWVzdElkOiBzdHJpbmc7XHJcblxyXG4gIC8qKiBFc3BlY2lmaWNhIGEgb3BlcmHDp8OjbyBxdWUgZGV2ZXLDoSBzZXIgcmVhbGl6YWRhIG5hIEFQSS4gKi9cclxuICBvcGVyYXRpb246IFBvRXZlbnRTb3VyY2luZ09wZXJhdGlvbjtcclxuXHJcbiAgLyoqIE9iamV0byAqanNvbiogY29tIG9zIGRhZG9zIGRvIHJlZ2lzdHJvLiAqL1xyXG4gIHJlY29yZDogb2JqZWN0O1xyXG59XHJcbiJdfQ==