@manticore-labs/nest 0.0.105 → 0.0.106

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 (18) hide show
  1. package/.idea/workspace.xml +128 -56
  2. package/build/main/lib/funciones-util/buscar-registro.js +580 -498
  3. package/build/main/lib/funciones-util/funciones-busqueda/generar-campos-con-condiciones.d.ts +1 -1
  4. package/build/main/lib/funciones-util/funciones-busqueda/generar-campos-con-condiciones.js +271 -226
  5. package/build/main/lib/funciones-util/funciones-busqueda/generar-joins.d.ts +2 -1
  6. package/build/main/lib/funciones-util/funciones-busqueda/generar-joins.js +22 -12
  7. package/build/main/lib/funciones-util/funciones-busqueda/obtener-objeto-where-y-relations.js +3 -3
  8. package/build/main/lib/funciones-util/funciones-busqueda/verificar-campo.d.ts +4 -0
  9. package/build/main/lib/funciones-util/funciones-busqueda/verificar-campo.js +363 -0
  10. package/build/module/lib/funciones-util/buscar-registro.js +583 -501
  11. package/build/module/lib/funciones-util/funciones-busqueda/generar-campos-con-condiciones.d.ts +1 -1
  12. package/build/module/lib/funciones-util/funciones-busqueda/generar-campos-con-condiciones.js +274 -226
  13. package/build/module/lib/funciones-util/funciones-busqueda/generar-joins.d.ts +2 -1
  14. package/build/module/lib/funciones-util/funciones-busqueda/generar-joins.js +25 -15
  15. package/build/module/lib/funciones-util/funciones-busqueda/obtener-objeto-where-y-relations.js +3 -3
  16. package/build/module/lib/funciones-util/funciones-busqueda/verificar-campo.d.ts +4 -0
  17. package/build/module/lib/funciones-util/funciones-busqueda/verificar-campo.js +360 -0
  18. package/package.json +1 -1
@@ -1,20 +1,226 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const verificar_campo_1 = require("./verificar-campo");
3
4
  function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, nivel) {
4
- console.log('Recuerde que el operador Any no esta disponible');
5
- let noEncuentraOperador = true;
6
- if (noEncuentraOperador) {
7
- const expresionRegularNot = /Not\(".+"\)+/g;
8
- const contieneNot = campo.match(expresionRegularNot);
9
- if (contieneNot && noEncuentraOperador) {
10
- const sinNot = campo.replace('Not("', '').replace('")', '');
5
+ let esArreglo = false;
6
+ campo;
7
+ try {
8
+ esArreglo = Array.isArray(campo);
9
+ }
10
+ catch (e) {
11
+ }
12
+ if (esArreglo) {
13
+ let campoArray = campo;
14
+ let consulta = '';
15
+ let objeto = {};
16
+ campoArray
17
+ .forEach((campo, indice) => {
18
+ if (typeof campo === 'string') {
19
+ const respuestaVerificarCampo = verificar_campo_1.verificarCampo(nombreCampo, campo, propiedadPapa, nivel);
20
+ consulta = consulta + ((indice + 1) === campoArray.length ?
21
+ respuestaVerificarCampo.consulta :
22
+ respuestaVerificarCampo.consulta + ' OR ');
23
+ objeto = Object.assign({}, objeto, respuestaVerificarCampo.objeto);
24
+ }
25
+ else {
26
+ consulta = consulta + ((indice + 1) === campoArray.length ?
27
+ `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}` :
28
+ `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}` + ' OR ');
29
+ objeto[propiedadPapa + nivel + nombreCampo] = campo;
30
+ }
31
+ nivel = nivel + 1;
32
+ });
33
+ console.log({ consulta, objeto });
34
+ return { consulta, objeto };
35
+ }
36
+ else {
37
+ let noEncuentraOperador = true;
38
+ if (typeof campo === 'string') {
39
+ if (noEncuentraOperador) {
40
+ const expresionRegularNot = /Not\(".+"\)+/g;
41
+ const contieneNot = campo.match(expresionRegularNot);
42
+ if (contieneNot && noEncuentraOperador) {
43
+ const sinNot = campo.replace('Not("', '').replace('")', '');
44
+ if (noEncuentraOperador) {
45
+ const expresionRegularLike = /Like\(".+"\)+/g;
46
+ const contieneLike = sinNot.match(expresionRegularLike);
47
+ if (contieneLike) {
48
+ campo = sinNot.replace('Like("', '')
49
+ .replace('")', '');
50
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} LIKE :${propiedadPapa}${nivel}${nombreCampo} )`;
51
+ noEncuentraOperador = false;
52
+ const respuestaADevolver = {
53
+ consulta,
54
+ objeto: {}
55
+ };
56
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
57
+ return respuestaADevolver;
58
+ }
59
+ }
60
+ if (noEncuentraOperador) {
61
+ const expresionRegularLessThan = /LessThan\(".+"\)+/g;
62
+ const contieneLessThan = sinNot.match(expresionRegularLessThan);
63
+ if (contieneLessThan) {
64
+ campo = sinNot
65
+ .replace('LessThan("', '')
66
+ .replace('")', '');
67
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} < :${propiedadPapa}${nivel}${nombreCampo} )`;
68
+ noEncuentraOperador = false;
69
+ const respuestaADevolver = {
70
+ consulta,
71
+ objeto: {}
72
+ };
73
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
74
+ return respuestaADevolver;
75
+ }
76
+ }
77
+ if (noEncuentraOperador) {
78
+ const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
79
+ const contieneMoreThan = sinNot.match(expresionRegularMoreThan);
80
+ if (contieneMoreThan) {
81
+ campo = sinNot
82
+ .replace('MoreThan("', '')
83
+ .replace('")', '');
84
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} > :${propiedadPapa}${nivel}${nombreCampo})`;
85
+ noEncuentraOperador = false;
86
+ const respuestaADevolver = {
87
+ consulta,
88
+ objeto: {}
89
+ };
90
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
91
+ return respuestaADevolver;
92
+ }
93
+ }
94
+ if (noEncuentraOperador) {
95
+ const expresionRegularEqual = /Equal\(".+"\)+/g;
96
+ const contieneEqual = sinNot.match(expresionRegularEqual);
97
+ if (contieneEqual) {
98
+ campo = sinNot
99
+ .replace('Equal("', '')
100
+ .replace('")', '');
101
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo})`;
102
+ noEncuentraOperador = false;
103
+ const respuestaADevolver = {
104
+ consulta,
105
+ objeto: {}
106
+ };
107
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
108
+ return respuestaADevolver;
109
+ }
110
+ }
111
+ if (noEncuentraOperador) {
112
+ const expresionRegularBetween = /Between\(".+"\)+/g;
113
+ const contieneBetween = sinNot.match(expresionRegularBetween);
114
+ if (contieneBetween) {
115
+ const busqueda = [...sinNot
116
+ .replace('Between("', '')
117
+ .replace('")', '')
118
+ .replace(' ', '')
119
+ .split(',')
120
+ .map((n) => isNaN(n) ? n : +n)];
121
+ const esFecha = busqueda[0].length === 10 &&
122
+ busqueda[0].length === 10 &&
123
+ (typeof busqueda[0] === 'string') &&
124
+ (typeof busqueda[1] === 'string') &&
125
+ busqueda[0].match('-') &&
126
+ busqueda[1].match('-');
127
+ if (esFecha) {
128
+ const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
129
+ const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
130
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin )`;
131
+ noEncuentraOperador = false;
132
+ const respuestaADevolver = {
133
+ consulta,
134
+ objeto: {}
135
+ };
136
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = fechaInicio;
137
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = fechaFin;
138
+ return respuestaADevolver;
139
+ }
140
+ else {
141
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin )`;
142
+ noEncuentraOperador = false;
143
+ const respuestaADevolver = {
144
+ consulta,
145
+ objeto: {}
146
+ };
147
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = busqueda[0];
148
+ respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = busqueda[1];
149
+ return respuestaADevolver;
150
+ }
151
+ noEncuentraOperador = false;
152
+ }
153
+ }
154
+ if (noEncuentraOperador) {
155
+ const expresionRegularIn = /In\(.+\)+/g;
156
+ const contieneIn = sinNot.match(expresionRegularIn);
157
+ if (contieneIn) {
158
+ let arregloIn;
159
+ try {
160
+ arregloIn = JSON.parse(sinNot
161
+ .replace('In(', '')
162
+ .replace('])', ']'));
163
+ const objetoIn = {};
164
+ let IN = '';
165
+ arregloIn
166
+ .forEach((campoIn, indice) => {
167
+ IN = IN + ((indice + 1) === arregloIn.length ? `':mlab${propiedadPapa}${nivel}${indice}${campoIn}'` : `:mlab'${propiedadPapa}${nivel}${indice}${campoIn}',`);
168
+ objetoIn[`mlab${propiedadPapa}${nivel}${indice}${campoIn}`] = campoIn;
169
+ });
170
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} IN( ${IN} ) )`;
171
+ noEncuentraOperador = false;
172
+ const respuestaADevolver = {
173
+ consulta,
174
+ objeto: objetoIn
175
+ };
176
+ return respuestaADevolver;
177
+ }
178
+ catch (error) {
179
+ console.error({
180
+ error,
181
+ mensaje: 'No se pudo usar el In'
182
+ });
183
+ const consulta = ``;
184
+ noEncuentraOperador = false;
185
+ const respuestaADevolverDeINVacio = {
186
+ consulta,
187
+ objeto: {}
188
+ };
189
+ return respuestaADevolverDeINVacio;
190
+ }
191
+ }
192
+ }
193
+ if (noEncuentraOperador) {
194
+ const expresionRegularIsNull = /IsNull\(\)+/g;
195
+ const contieneIsNull = sinNot.match(expresionRegularIsNull);
196
+ if (contieneIsNull) {
197
+ const consulta = `Not( ${propiedadPapa}.${nombreCampo} IS NULL )`;
198
+ noEncuentraOperador = false;
199
+ const respuestaADevolver = {
200
+ consulta,
201
+ objeto: {}
202
+ };
203
+ return respuestaADevolver;
204
+ }
205
+ }
206
+ const consultaSinOperadoresNot = `${propiedadPapa}.${nombreCampo} <> :${propiedadPapa}${nivel}${nombreCampo} OR ${propiedadPapa}.${nombreCampo} IS NULL`;
207
+ noEncuentraOperador = false;
208
+ const respuestaADevolverSinOperadoresNot = {
209
+ consulta: consultaSinOperadoresNot,
210
+ objeto: {}
211
+ };
212
+ respuestaADevolverSinOperadoresNot.objeto[propiedadPapa + nivel + nombreCampo] = sinNot;
213
+ return respuestaADevolverSinOperadoresNot;
214
+ }
215
+ } // Fin de NOT
11
216
  if (noEncuentraOperador) {
12
217
  const expresionRegularLike = /Like\(".+"\)+/g;
13
- const contieneLike = sinNot.match(expresionRegularLike);
218
+ const contieneLike = campo.match(expresionRegularLike);
14
219
  if (contieneLike) {
15
- campo = sinNot.replace('Like("', '')
220
+ campo = campo
221
+ .replace('Like("', '')
16
222
  .replace('")', '');
17
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} LIKE :${propiedadPapa}${nivel}${nombreCampo} )`;
223
+ const consulta = `${propiedadPapa}.${nombreCampo} LIKE :${propiedadPapa}${nivel}${nombreCampo}`;
18
224
  noEncuentraOperador = false;
19
225
  const respuestaADevolver = {
20
226
  consulta,
@@ -26,12 +232,12 @@ function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, nivel) {
26
232
  }
27
233
  if (noEncuentraOperador) {
28
234
  const expresionRegularLessThan = /LessThan\(".+"\)+/g;
29
- const contieneLessThan = sinNot.match(expresionRegularLessThan);
235
+ const contieneLessThan = campo.match(expresionRegularLessThan);
30
236
  if (contieneLessThan) {
31
- campo = sinNot
237
+ campo = campo
32
238
  .replace('LessThan("', '')
33
239
  .replace('")', '');
34
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} < :${propiedadPapa}${nivel}${nombreCampo} )`;
240
+ const consulta = `${propiedadPapa}.${nombreCampo} < :${propiedadPapa}${nivel}${nombreCampo}`;
35
241
  noEncuentraOperador = false;
36
242
  const respuestaADevolver = {
37
243
  consulta,
@@ -43,12 +249,11 @@ function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, nivel) {
43
249
  }
44
250
  if (noEncuentraOperador) {
45
251
  const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
46
- const contieneMoreThan = sinNot.match(expresionRegularMoreThan);
252
+ const contieneMoreThan = campo.match(expresionRegularMoreThan);
47
253
  if (contieneMoreThan) {
48
- campo = sinNot
49
- .replace('MoreThan("', '')
254
+ campo = campo.replace('MoreThan("', '')
50
255
  .replace('")', '');
51
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} > :${propiedadPapa}${nivel}${nombreCampo})`;
256
+ const consulta = `${propiedadPapa}.${nombreCampo} > :${propiedadPapa}${nivel}${nombreCampo}`;
52
257
  noEncuentraOperador = false;
53
258
  const respuestaADevolver = {
54
259
  consulta,
@@ -60,12 +265,11 @@ function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, nivel) {
60
265
  }
61
266
  if (noEncuentraOperador) {
62
267
  const expresionRegularEqual = /Equal\(".+"\)+/g;
63
- const contieneEqual = sinNot.match(expresionRegularEqual);
268
+ const contieneEqual = campo.match(expresionRegularEqual);
64
269
  if (contieneEqual) {
65
- campo = sinNot
66
- .replace('Equal("', '')
67
- .replace('")', '');
68
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo})`;
270
+ campo = campo
271
+ .replace('Equal("', '').replace('")', '');
272
+ const consulta = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
69
273
  noEncuentraOperador = false;
70
274
  const respuestaADevolver = {
71
275
  consulta,
@@ -77,9 +281,9 @@ function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, nivel) {
77
281
  }
78
282
  if (noEncuentraOperador) {
79
283
  const expresionRegularBetween = /Between\(".+"\)+/g;
80
- const contieneBetween = sinNot.match(expresionRegularBetween);
284
+ const contieneBetween = campo.match(expresionRegularBetween);
81
285
  if (contieneBetween) {
82
- const busqueda = [...sinNot
286
+ const busqueda = [...campo
83
287
  .replace('Between("', '')
84
288
  .replace('")', '')
85
289
  .replace(' ', '')
@@ -94,7 +298,7 @@ function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, nivel) {
94
298
  if (esFecha) {
95
299
  const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
96
300
  const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
97
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin )`;
301
+ const consulta = `${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin `;
98
302
  noEncuentraOperador = false;
99
303
  const respuestaADevolver = {
100
304
  consulta,
@@ -105,7 +309,7 @@ function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, nivel) {
105
309
  return respuestaADevolver;
106
310
  }
107
311
  else {
108
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin )`;
312
+ const consulta = `${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin`;
109
313
  noEncuentraOperador = false;
110
314
  const respuestaADevolver = {
111
315
  consulta,
@@ -115,32 +319,42 @@ function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, nivel) {
115
319
  respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = busqueda[1];
116
320
  return respuestaADevolver;
117
321
  }
118
- noEncuentraOperador = false;
119
322
  }
120
323
  }
121
324
  if (noEncuentraOperador) {
122
325
  const expresionRegularIn = /In\(.+\)+/g;
123
- const contieneIn = sinNot.match(expresionRegularIn);
326
+ const contieneIn = campo.match(expresionRegularIn);
124
327
  if (contieneIn) {
125
328
  let arregloIn;
126
329
  try {
127
- arregloIn = JSON.parse(sinNot
330
+ arregloIn = JSON.parse(campo
128
331
  .replace('In(', '')
129
332
  .replace('])', ']'));
130
- const objetoIn = {};
131
- let IN = '';
132
- arregloIn
133
- .forEach((campoIn, indice) => {
134
- IN = IN + ((indice + 1) === arregloIn.length ? `':mlab${propiedadPapa}${nivel}${indice}${campoIn}'` : `:mlab'${propiedadPapa}${nivel}${indice}${campoIn}',`);
135
- objetoIn[`mlab${propiedadPapa}${nivel}${indice}${campoIn}`] = campoIn;
136
- });
137
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} IN( ${IN} ) )`;
138
- noEncuentraOperador = false;
139
- const respuestaADevolver = {
140
- consulta,
141
- objeto: objetoIn
142
- };
143
- return respuestaADevolver;
333
+ if (arregloIn.length > 0) {
334
+ const objetoIn = {};
335
+ let IN = '';
336
+ arregloIn
337
+ .forEach((campoIn, indice) => {
338
+ IN = IN + ((indice + 1) === arregloIn.length ? `:mlab${propiedadPapa}${nivel}${indice}${campoIn}` : `:mlab${propiedadPapa}${nivel}${indice}${campoIn},`);
339
+ objetoIn[`mlab${propiedadPapa}${nivel}${indice}${campoIn}`] = campoIn;
340
+ });
341
+ const consulta = `${propiedadPapa}.${nombreCampo} IN( ${IN} )`;
342
+ noEncuentraOperador = false;
343
+ const respuestaADevolver = {
344
+ consulta,
345
+ objeto: objetoIn
346
+ };
347
+ return respuestaADevolver;
348
+ }
349
+ else {
350
+ const consulta = ``;
351
+ noEncuentraOperador = false;
352
+ const respuestaADevolverDeINVacio = {
353
+ consulta,
354
+ objeto: {}
355
+ };
356
+ return respuestaADevolverDeINVacio;
357
+ }
144
358
  }
145
359
  catch (error) {
146
360
  console.error({
@@ -159,9 +373,9 @@ function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, nivel) {
159
373
  }
160
374
  if (noEncuentraOperador) {
161
375
  const expresionRegularIsNull = /IsNull\(\)+/g;
162
- const contieneIsNull = sinNot.match(expresionRegularIsNull);
376
+ const contieneIsNull = campo.match(expresionRegularIsNull);
163
377
  if (contieneIsNull) {
164
- const consulta = `Not( ${propiedadPapa}.${nombreCampo} IS NULL )`;
378
+ const consulta = `${propiedadPapa}.${nombreCampo} IS NULL`;
165
379
  noEncuentraOperador = false;
166
380
  const respuestaADevolver = {
167
381
  consulta,
@@ -170,195 +384,26 @@ function generarCampoConCondiciones(nombreCampo, campo, propiedadPapa, nivel) {
170
384
  return respuestaADevolver;
171
385
  }
172
386
  }
173
- const consultaSinOperadoresNot = `${propiedadPapa}.${nombreCampo} <> :${propiedadPapa}${nivel}${nombreCampo} OR ${propiedadPapa}.${nombreCampo} IS NULL`;
174
- noEncuentraOperador = false;
175
- const respuestaADevolverSinOperadoresNot = {
176
- consulta: consultaSinOperadoresNot,
177
- objeto: {}
178
- };
179
- respuestaADevolverSinOperadoresNot.objeto[propiedadPapa + nivel + nombreCampo] = sinNot;
180
- return respuestaADevolverSinOperadoresNot;
181
- }
182
- } // Fin de NOT
183
- if (noEncuentraOperador) {
184
- const expresionRegularLike = /Like\(".+"\)+/g;
185
- const contieneLike = campo.match(expresionRegularLike);
186
- if (contieneLike) {
187
- campo = campo
188
- .replace('Like("', '')
189
- .replace('")', '');
190
- const consulta = `${propiedadPapa}.${nombreCampo} LIKE :${propiedadPapa}${nivel}${nombreCampo}`;
191
- noEncuentraOperador = false;
192
- const respuestaADevolver = {
193
- consulta,
194
- objeto: {}
195
- };
196
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
197
- return respuestaADevolver;
198
- }
199
- }
200
- if (noEncuentraOperador) {
201
- const expresionRegularLessThan = /LessThan\(".+"\)+/g;
202
- const contieneLessThan = campo.match(expresionRegularLessThan);
203
- if (contieneLessThan) {
204
- campo = campo
205
- .replace('LessThan("', '')
206
- .replace('")', '');
207
- const consulta = `${propiedadPapa}.${nombreCampo} < :${propiedadPapa}${nivel}${nombreCampo}`;
387
+ const consultaSinOperadores = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
208
388
  noEncuentraOperador = false;
209
- const respuestaADevolver = {
210
- consulta,
389
+ const respuestaADevolverSinOperadores = {
390
+ consulta: consultaSinOperadores,
211
391
  objeto: {}
212
392
  };
213
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
214
- return respuestaADevolver;
215
- }
216
- }
217
- if (noEncuentraOperador) {
218
- const expresionRegularMoreThan = /MoreThan\(".+"\)+/g;
219
- const contieneMoreThan = campo.match(expresionRegularMoreThan);
220
- if (contieneMoreThan) {
221
- campo = campo.replace('MoreThan("', '')
222
- .replace('")', '');
223
- const consulta = `${propiedadPapa}.${nombreCampo} > :${propiedadPapa}${nivel}${nombreCampo}`;
224
- noEncuentraOperador = false;
225
- const respuestaADevolver = {
226
- consulta,
227
- objeto: {}
228
- };
229
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
230
- return respuestaADevolver;
231
- }
232
- }
233
- if (noEncuentraOperador) {
234
- const expresionRegularEqual = /Equal\(".+"\)+/g;
235
- const contieneEqual = campo.match(expresionRegularEqual);
236
- if (contieneEqual) {
237
- campo = campo
238
- .replace('Equal("', '').replace('")', '');
239
- const consulta = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
240
- noEncuentraOperador = false;
241
- const respuestaADevolver = {
242
- consulta,
243
- objeto: {}
244
- };
245
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo] = campo;
246
- return respuestaADevolver;
247
- }
248
- }
249
- if (noEncuentraOperador) {
250
- const expresionRegularBetween = /Between\(".+"\)+/g;
251
- const contieneBetween = campo.match(expresionRegularBetween);
252
- if (contieneBetween) {
253
- const busqueda = [...campo
254
- .replace('Between("', '')
255
- .replace('")', '')
256
- .replace(' ', '')
257
- .split(',')
258
- .map((n) => isNaN(n) ? n : +n)];
259
- const esFecha = busqueda[0].length === 10 &&
260
- busqueda[0].length === 10 &&
261
- (typeof busqueda[0] === 'string') &&
262
- (typeof busqueda[1] === 'string') &&
263
- busqueda[0].match('-') &&
264
- busqueda[1].match('-');
265
- if (esFecha) {
266
- const fechaInicio = new Date(busqueda[0].substring(0, 4), busqueda[0].substring(5, 7) - 1, busqueda[0].substring(8));
267
- const fechaFin = new Date(busqueda[1].substring(0, 4), busqueda[1].substring(5, 7) - 1, busqueda[1].substring(8));
268
- const consulta = `${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin `;
269
- noEncuentraOperador = false;
270
- const respuestaADevolver = {
271
- consulta,
272
- objeto: {}
273
- };
274
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = fechaInicio;
275
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = fechaFin;
276
- return respuestaADevolver;
277
- }
278
- else {
279
- const consulta = `${propiedadPapa}.${nombreCampo} BETWEEN :${propiedadPapa}${nivel}${nombreCampo}Inicio AND :${propiedadPapa}${nivel}${nombreCampo}Fin`;
280
- noEncuentraOperador = false;
281
- const respuestaADevolver = {
282
- consulta,
283
- objeto: {}
284
- };
285
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Inicio'] = busqueda[0];
286
- respuestaADevolver.objeto[propiedadPapa + nivel + nombreCampo + 'Fin'] = busqueda[1];
287
- return respuestaADevolver;
288
- }
393
+ respuestaADevolverSinOperadores.objeto[propiedadPapa + nivel + nombreCampo] = campo;
394
+ return respuestaADevolverSinOperadores;
289
395
  }
290
- }
291
- if (noEncuentraOperador) {
292
- const expresionRegularIn = /In\(.+\)+/g;
293
- const contieneIn = campo.match(expresionRegularIn);
294
- if (contieneIn) {
295
- let arregloIn;
296
- try {
297
- arregloIn = JSON.parse(campo
298
- .replace('In(', '')
299
- .replace('])', ']'));
300
- if (arregloIn.length > 0) {
301
- const objetoIn = {};
302
- let IN = '';
303
- arregloIn
304
- .forEach((campoIn, indice) => {
305
- IN = IN + ((indice + 1) === arregloIn.length ? `:mlab${propiedadPapa}${nivel}${indice}${campoIn}` : `:mlab${propiedadPapa}${nivel}${indice}${campoIn},`);
306
- objetoIn[`mlab${propiedadPapa}${nivel}${indice}${campoIn}`] = campoIn;
307
- });
308
- const consulta = `${propiedadPapa}.${nombreCampo} IN( ${IN} )`;
309
- noEncuentraOperador = false;
310
- const respuestaADevolver = {
311
- consulta,
312
- objeto: objetoIn
313
- };
314
- return respuestaADevolver;
315
- }
316
- else {
317
- const consulta = ``;
318
- noEncuentraOperador = false;
319
- const respuestaADevolverDeINVacio = {
320
- consulta,
321
- objeto: {}
322
- };
323
- return respuestaADevolverDeINVacio;
324
- }
325
- }
326
- catch (error) {
327
- console.error({
328
- error,
329
- mensaje: 'No se pudo usar el In'
330
- });
331
- const consulta = ``;
332
- noEncuentraOperador = false;
333
- const respuestaADevolverDeINVacio = {
334
- consulta,
335
- objeto: {}
336
- };
337
- return respuestaADevolverDeINVacio;
338
- }
339
- }
340
- }
341
- if (noEncuentraOperador) {
342
- const expresionRegularIsNull = /IsNull\(\)+/g;
343
- const contieneIsNull = campo.match(expresionRegularIsNull);
344
- if (contieneIsNull) {
345
- const consulta = `${propiedadPapa}.${nombreCampo} IS NULL`;
396
+ else {
397
+ const consultaSinOperadores = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
346
398
  noEncuentraOperador = false;
347
- const respuestaADevolver = {
348
- consulta,
399
+ const respuestaADevolverSinOperadores = {
400
+ consulta: consultaSinOperadores,
349
401
  objeto: {}
350
402
  };
351
- return respuestaADevolver;
403
+ respuestaADevolverSinOperadores.objeto[propiedadPapa + nivel + nombreCampo] = campo;
404
+ return respuestaADevolverSinOperadores;
352
405
  }
353
406
  }
354
- const consultaSinOperadores = `${propiedadPapa}.${nombreCampo} = :${propiedadPapa}${nivel}${nombreCampo}`;
355
- noEncuentraOperador = false;
356
- const respuestaADevolverSinOperadores = {
357
- consulta: consultaSinOperadores,
358
- objeto: {}
359
- };
360
- respuestaADevolverSinOperadores.objeto[propiedadPapa + nivel + nombreCampo] = campo;
361
- return respuestaADevolverSinOperadores;
362
407
  }
363
408
  exports.generarCampoConCondiciones = generarCampoConCondiciones;
364
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhci1jYW1wb3MtY29uLWNvbmRpY2lvbmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9mdW5jaW9uZXMtdXRpbC9mdW5jaW9uZXMtYnVzcXVlZGEvZ2VuZXJhci1jYW1wb3MtY29uLWNvbmRpY2lvbmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsb0NBQ0UsV0FBbUIsRUFDbkIsS0FBYSxFQUNiLGFBQXFCLEVBQ3JCLEtBQWE7SUFFYixPQUFPLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7SUFDL0QsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDL0IsSUFBSSxtQkFBbUIsRUFBRTtRQUN2QixNQUFNLG1CQUFtQixHQUFHLGVBQWUsQ0FBQztRQUM1QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDckQsSUFBSSxXQUFXLElBQUksbUJBQW1CLEVBQUU7WUFDdEMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RCxJQUFJLG1CQUFtQixFQUFFO2dCQUN2QixNQUFNLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDO2dCQUM5QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7Z0JBQ3hELElBQUksWUFBWSxFQUFFO29CQUNoQixLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDcEIsUUFBUSxFQUFFLEVBQUUsQ0FDYjt5QkFDRSxPQUFPLENBQ04sSUFBSSxFQUFFLEVBQUUsQ0FDVCxDQUFDO29CQUNKLE1BQU0sUUFBUSxHQUFHLFFBQVEsYUFBYSxJQUFJLFdBQVcsVUFBVSxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsSUFBSSxDQUFDO29CQUN2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
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhci1jYW1wb3MtY29uLWNvbmRpY2lvbmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9mdW5jaW9uZXMtdXRpbC9mdW5jaW9uZXMtYnVzcXVlZGEvZ2VuZXJhci1jYW1wb3MtY29uLWNvbmRpY2lvbmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdURBQW1EO0FBRW5ELG9DQUNFLFdBQW1CLEVBQ25CLEtBQXFCLEVBQ3JCLGFBQXFCLEVBQ3JCLEtBQWE7SUFFYixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDdEIsS0FBZSxDQUFDO0lBQ2hCLElBQUk7UUFDRixTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQztJQUFDLE9BQU8sQ0FBQyxFQUFFO0tBQ1g7SUFDRCxJQUFJLFNBQVMsRUFBRTtRQUNiLElBQUksVUFBVSxHQUFHLEtBQWMsQ0FBQztRQUNoQyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbEIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQVU7YUFDUCxPQUFPLENBQ04sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7Z0JBQzdCLE1BQU0sdUJBQXVCLEdBQUcsZ0NBQWMsQ0FDNUMsV0FBVyxFQUNYLEtBQUssRUFDTCxhQUFhLEVBQ2IsS0FBSyxDQUNOLENBQUM7Z0JBQ0YsUUFBUSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdkQsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ2xDLHVCQUF1QixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQzVDLENBQUM7Z0JBQ0YsTUFBTSxxQkFDRCxNQUFNLEVBQ04sdUJBQXVCLENBQUMsTUFBTSxDQUNsQyxDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsUUFBUSxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdkQsR0FBRyxhQUFhLElBQUksV0FBVyxPQUFPLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxFQUFFLENBQUMsQ0FBQztvQkFDN0UsR0FBRyxhQUFhLElBQUksV0FBVyxPQUFPLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxFQUFFLEdBQUcsTUFBTSxDQUN2RixDQUFDO2dCQUNGLE1BQU0sQ0FBQyxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQzthQUNyRDtZQUNELEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUMsQ0FDRixDQUFDO1FBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7S0FDN0I7U0FBTTtRQUNMLElBQUksbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLElBQUksbUJBQW1CLEVBQUU7Z0JBQ3ZCLE1BQU0sbUJBQW1CLEdBQUcsZUFBZSxDQUFDO2dCQUM1QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3JELElBQUksV0FBVyxJQUFJLG1CQUFtQixFQUFFO29CQUN0QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxJQUFJLG1CQUFtQixFQUFFO3dCQUN2QixNQUFNLG9CQUFvQixHQUFHLGdCQUFnQixDQUFDO3dCQUM5QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7d0JBQ3hELElBQUksWUFBWSxFQUFFOzRCQUNoQixLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDcEIsUUFBUSxFQUFFLEVBQUUsQ0FDYjtpQ0FDRSxPQUFPLENBQ04sSUFBSSxFQUFFLEVBQUUsQ0FDVCxDQUFDOzRCQUNKLE1BQU0sUUFBUSxHQUFHLFFBQVEsYUFBYSxJQUFJLFdBQVcsVUFBVSxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsSUFBSSxDQUFDOzRCQUN2RyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7NEJBQzVCLE1BQU0sa0JBQWtCLEdBQUc7Z0NBQ3pCLFFBQVE7Z0NBQ1IsTUFBTSxFQUFFLEVBQUU7NkJBQ1gsQ0FBQzs0QkFDRixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUM7NEJBQ3ZFLE9BQU8sa0JBQWtCLENBQUM7eUJBQzNCO3FCQUNGO29CQUNELElBQUksbUJBQW1CLEVBQUU7d0JBQ3ZCLE1BQU0sd0JBQXdCLEdBQUcsb0JBQW9CLENBQUM7d0JBQ3RELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO3dCQUNoRSxJQUFJLGdCQUFnQixFQUFFOzRCQUNwQixLQUFLLEdBQUcsTUFBTTtpQ0FDWCxPQUFPLENBQ04sWUFBWSxFQUFFLEVBQUUsQ0FDakI7aUNBQ0EsT0FBTyxDQUNOLElBQUksRUFBRSxFQUFFLENBQ1QsQ0FBQzs0QkFDSixNQUFNLFFBQVEsR0FBRyxRQUFRLGFBQWEsSUFBSSxXQUFXLE9BQU8sYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLElBQUksQ0FBQzs0QkFDcEcsbUJBQW1CLEdBQUcsS0FBSyxDQUFDOzRCQUM1QixNQUFNLGtCQUFrQixHQUFHO2dDQUN6QixRQUFRO2dDQUNSLE1BQU0sRUFBRSxFQUFFOzZCQUNYLENBQUM7NEJBQ0Ysa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDOzRCQUN2RSxPQUFPLGtCQUFrQixDQUFDO3lCQUMzQjtxQkFDRjtvQkFDRCxJQUFJLG1CQUFtQixFQUFFO3dCQUN2QixNQUFNLHdCQUF3QixHQUFHLG9CQUFvQixDQUFDO3dCQUN0RCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQzt3QkFDaEUsSUFBSSxnQkFBZ0IsRUFBRTs0QkFDcEIsS0FBSyxHQUFHLE1BQU07aUNBQ1gsT0FBTyxDQUNOLFlBQVksRUFBRSxFQUFFLENBQ2pCO2lDQUNBLE9BQU8sQ0FDTixJQUFJLEVBQUUsRUFBRSxDQUNULENBQUM7NEJBQ0osTUFBTSxRQUFRLEdBQUcsUUFBUSxhQUFhLElBQUksV0FBVyxPQUFPLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxHQUFHLENBQUM7NEJBQ25HLG1CQUFtQixHQUFHLEtBQUssQ0FBQzs0QkFDNUIsTUFBTSxrQkFBa0IsR0FBRztnQ0FDekIsUUFBUTtnQ0FDUixNQUFNLEVBQUUsRUFBRTs2QkFDWCxDQUFDOzRCQUNGLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQzs0QkFDdkUsT0FBTyxrQkFBa0IsQ0FBQzt5QkFDM0I7cUJBQ0Y7b0JBQ0QsSUFBSSxtQkFBbUIsRUFBRTt3QkFDdkIsTUFBTSxxQkFBcUIsR0FBRyxpQkFBaUIsQ0FBQzt3QkFDaEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO3dCQUMxRCxJQUFJLGFBQWEsRUFBRTs0QkFDakIsS0FBSyxHQUFHLE1BQU07aUNBQ1gsT0FBTyxDQUNOLFNBQVMsRUFBRSxFQUFFLENBQ2Q7aUNBQ0EsT0FBTyxDQUNOLElBQUksRUFBRSxFQUFFLENBQ1QsQ0FBQzs0QkFDSixNQUFNLFFBQVEsR0FBRyxRQUFRLGFBQWEsSUFBSSxXQUFXLE9BQU8sYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLEdBQUcsQ0FBQzs0QkFDbkcsbUJBQW1CLEdBQUcsS0FBSyxDQUFDOzRCQUM1QixNQUFNLGtCQUFrQixHQUFHO2dDQUN6QixRQUFRO2dDQUNSLE1BQU0sRUFBRSxFQUFFOzZCQUNYLENBQUM7NEJBQ0Ysa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDOzRCQUN2RSxPQUFPLGtCQUFrQixDQUFDO3lCQUMzQjtxQkFDRjtvQkFDRCxJQUFJLG1CQUFtQixFQUFFO3dCQUN2QixNQUFNLHVCQUF1QixHQUFHLG1CQUFtQixDQUFDO3dCQUNwRCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7d0JBQzlELElBQUksZUFBZSxFQUFFOzRCQUNuQixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsTUFBTTtxQ0FDeEIsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7cUNBQ3hCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO3FDQUNqQixPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztxQ0FDaEIsS0FBSyxDQUFDLEdBQUcsQ0FBQztxQ0FDVixHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ3ZDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssRUFBRTtnQ0FDdkMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxFQUFFO2dDQUN6QixDQUFDLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQztnQ0FDakMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUM7Z0NBQ2pDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2dDQUN0QixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUN6QixJQUFJLE9BQU8sRUFBRTtnQ0FDWCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUNySCxNQUFNLFFBQVEsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUNsSCxNQUFNLFFBQVEsR0FBRyxRQUFRLGFBQWEsSUFBSSxXQUFXLGFBQWEsYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLGVBQWUsYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLE9BQU8sQ0FBQztnQ0FDL0osbUJBQW1CLEdBQUcsS0FBSyxDQUFDO2dDQUM1QixNQUFNLGtCQUFrQixHQUFHO29DQUN6QixRQUFRO29DQUNSLE1BQU0sRUFBRSxFQUFFO2lDQUNYLENBQUM7Z0NBQ0Ysa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLFdBQVcsQ0FBQztnQ0FDeEYsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxHQUFHLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQztnQ0FDbEYsT0FBTyxrQkFBa0IsQ0FBQzs2QkFDM0I7aUNBQU07Z0NBQ0wsTUFBTSxRQUFRLEdBQUcsUUFBUSxhQUFhLElBQUksV0FBVyxhQUFhLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxlQUFlLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxPQUFPLENBQUM7Z0NBQy9KLG1CQUFtQixHQUFHLEtBQUssQ0FBQztnQ0FDNUIsTUFBTSxrQkFBa0IsR0FBRztvQ0FDekIsUUFBUTtvQ0FDUixNQUFNLEVBQUUsRUFBRTtpQ0FDWCxDQUFDO2dDQUNGLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQ3hGLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQ3JGLE9BQU8sa0JBQWtCLENBQUM7NkJBQzNCOzRCQUNELG1CQUFtQixHQUFHLEtBQUssQ0FBQzt5QkFDN0I7cUJBQ0Y7b0JBQ0QsSUFBSSxtQkFBbUIsRUFBRTt3QkFDdkIsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQUM7d0JBQ3hDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQzt3QkFDcEQsSUFBSSxVQUFVLEVBQUU7NEJBQ2QsSUFBSSxTQUFTLENBQUM7NEJBQ2QsSUFBSTtnQ0FDRixTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO3FDQUMxQixPQUFPLENBQ04sS0FBSyxFQUFFLEVBQUUsQ0FDVjtxQ0FDQSxPQUFPLENBQ04sSUFBSSxFQUFFLEdBQUcsQ0FDVixDQUNGLENBQUM7Z0NBQ0YsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO2dDQUNwQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0NBQ1osU0FBUztxQ0FDTixPQUFPLENBQ04sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7b0NBQ2xCLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLGFBQWEsR0FBRyxLQUFLLEdBQUcsTUFBTSxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLGFBQWEsR0FBRyxLQUFLLEdBQUcsTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7b0NBQzdKLFFBQVEsQ0FBQyxPQUFPLGFBQWEsR0FBRyxLQUFLLEdBQUcsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO2dDQUN4RSxDQUFDLENBQ0YsQ0FBQztnQ0FDSixNQUFNLFFBQVEsR0FBRyxRQUFRLGFBQWEsSUFBSSxXQUFXLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0NBQ3RFLG1CQUFtQixHQUFHLEtBQUssQ0FBQztnQ0FDNUIsTUFBTSxrQkFBa0IsR0FBRztvQ0FDekIsUUFBUTtvQ0FDUixNQUFNLEVBQUUsUUFBUTtpQ0FDakIsQ0FBQztnQ0FDRixPQUFPLGtCQUFrQixDQUFDOzZCQUMzQjs0QkFBQyxPQUFPLEtBQUssRUFBRTtnQ0FDZCxPQUFPLENBQUMsS0FBSyxDQUFDO29DQUNaLEtBQUs7b0NBQ0wsT0FBTyxFQUFFLHVCQUF1QjtpQ0FDakMsQ0FBQyxDQUFDO2dDQUNILE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztnQ0FDcEIsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO2dDQUM1QixNQUFNLDJCQUEyQixHQUFHO29DQUNsQyxRQUFRO29DQUNSLE1BQU0sRUFBRSxFQUFFO2lDQUNYLENBQUM7Z0NBQ0YsT0FBTywyQkFBMkIsQ0FBQzs2QkFDcEM7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsSUFBSSxtQkFBbUIsRUFBRTt3QkFDdkIsTUFBTSxzQkFBc0IsR0FBRyxjQUFjLENBQUM7d0JBQzlDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQzt3QkFDNUQsSUFBSSxjQUFjLEVBQUU7NEJBQ2xCLE1BQU0sUUFBUSxHQUFHLFFBQVEsYUFBYSxJQUFJLFdBQVcsWUFBWSxDQUFDOzRCQUNsRSxtQkFBbUIsR0FBRyxLQUFLLENBQUM7NEJBQzVCLE1BQU0sa0JBQWtCLEdBQUc7Z0NBQ3pCLFFBQVE7Z0NBQ1IsTUFBTSxFQUFFLEVBQUU7NkJBQ1gsQ0FBQzs0QkFDRixPQUFPLGtCQUFrQixDQUFDO3lCQUMzQjtxQkFDRjtvQkFDRCxNQUFNLHdCQUF3QixHQUFHLEdBQUcsYUFBYSxJQUFJLFdBQVcsUUFBUSxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsT0FBTyxhQUFhLElBQUksV0FBVyxVQUFVLENBQUM7b0JBQ3pKLG1CQUFtQixHQUFHLEtBQUssQ0FBQztvQkFDNUIsTUFBTSxrQ0FBa0MsR0FBRzt3QkFDekMsUUFBUSxFQUFFLHdCQUF3Qjt3QkFDbEMsTUFBTSxFQUFFLEVBQUU7cUJBQ1gsQ0FBQztvQkFDRixrQ0FBa0MsQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxNQUFNLENBQUM7b0JBQ3hGLE9BQU8sa0NBQWtDLENBQUM7aUJBQzNDO2FBQ0YsQ0FBQyxhQUFhO1lBQ2YsSUFBSSxtQkFBbUIsRUFBRTtnQkFDdkIsTUFBTSxvQkFBb0IsR0FBRyxnQkFBZ0IsQ0FBQztnQkFDOUMsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLFlBQVksRUFBRTtvQkFDaEIsS0FBSyxHQUFHLEtBQUs7eUJBQ1YsT0FBTyxDQUNOLFFBQVEsRUFBRSxFQUFFLENBQ2I7eUJBQ0EsT0FBTyxDQUNOLElBQUksRUFBRSxFQUFFLENBQ1QsQ0FBQztvQkFDSixNQUFNLFFBQVEsR0FBRyxHQUFHLGFBQWEsSUFBSSxXQUFXLFVBQVUsYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztvQkFDaEcsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO29CQUM1QixNQUFNLGtCQUFrQixHQUFHO3dCQUN6QixRQUFRO3dCQUNSLE1BQU0sRUFBRSxFQUFFO3FCQUNYLENBQUM7b0JBQ0Ysa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUN2RSxPQUFPLGtCQUFrQixDQUFDO2lCQUMzQjthQUNGO1lBQ0QsSUFBSSxtQkFBbUIsRUFBRTtnQkFDdkIsTUFBTSx3QkFBd0IsR0FBRyxvQkFBb0IsQ0FBQztnQkFDdEQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQy9ELElBQUksZ0JBQWdCLEVBQUU7b0JBQ3BCLEtBQUssR0FBRyxLQUFLO3lCQUNWLE9BQU8sQ0FDTixZQUFZLEVBQUUsRUFBRSxDQUNqQjt5QkFDQSxPQUFPLENBQ04sSUFBSSxFQUFFLEVBQUUsQ0FDVCxDQUFDO29CQUNKLE1BQU0sUUFBUSxHQUFHLEdBQUcsYUFBYSxJQUFJLFdBQVcsT0FBTyxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO29CQUM3RixtQkFBbUIsR0FBRyxLQUFLLENBQUM7b0JBQzVCLE1BQU0sa0JBQWtCLEdBQUc7d0JBQ3pCLFFBQVE7d0JBQ1IsTUFBTSxFQUFFLEVBQUU7cUJBQ1gsQ0FBQztvQkFDRixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUM7b0JBQ3ZFLE9BQU8sa0JBQWtCLENBQUM7aUJBQzNCO2FBQ0Y7WUFDRCxJQUFJLG1CQUFtQixFQUFFO2dCQUN2QixNQUFNLHdCQUF3QixHQUFHLG9CQUFvQixDQUFDO2dCQUN0RCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFDL0QsSUFBSSxnQkFBZ0IsRUFBRTtvQkFDcEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQ25CLFlBQVksRUFBRSxFQUFFLENBQ2pCO3lCQUNFLE9BQU8sQ0FDTixJQUFJLEVBQUUsRUFBRSxDQUNULENBQUM7b0JBQ0osTUFBTSxRQUFRLEdBQUcsR0FBRyxhQUFhLElBQUksV0FBVyxPQUFPLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxFQUFFLENBQUM7b0JBQzdGLG1CQUFtQixHQUFHLEtBQUssQ0FBQztvQkFDNUIsTUFBTSxrQkFBa0IsR0FBRzt3QkFDekIsUUFBUTt3QkFDUixNQUFNLEVBQUUsRUFBRTtxQkFDWCxDQUFDO29CQUNGLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDdkUsT0FBTyxrQkFBa0IsQ0FBQztpQkFDM0I7YUFDRjtZQUNELElBQUksbUJBQW1CLEVBQUU7Z0JBQ3ZCLE1BQU0scUJBQXFCLEdBQUcsaUJBQWlCLENBQUM7Z0JBQ2hELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDekQsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLEtBQUssR0FBRyxLQUFLO3lCQUNWLE9BQU8sQ0FDTixTQUFTLEVBQUUsRUFBRSxDQUNkLENBQUMsT0FBTyxDQUNQLElBQUksRUFBRSxFQUFFLENBQ1QsQ0FBQztvQkFDSixNQUFNLFFBQVEsR0FBRyxHQUFHLGFBQWEsSUFBSSxXQUFXLE9BQU8sYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztvQkFDN0YsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO29CQUM1QixNQUFNLGtCQUFrQixHQUFHO3dCQUN6QixRQUFRO3dCQUNSLE1BQU0sRUFBRSxFQUFFO3FCQUNYLENBQUM7b0JBQ0Ysa0JBQWtCLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUN2RSxPQUFPLGtCQUFrQixDQUFDO2lCQUMzQjthQUNGO1lBQ0QsSUFBSSxtQkFBbUIsRUFBRTtnQkFDdkIsTUFBTSx1QkFBdUIsR0FBRyxtQkFBbUIsQ0FBQztnQkFDcEQsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUM3RCxJQUFJLGVBQWUsRUFBRTtvQkFDbkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEtBQUs7NkJBQ3ZCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDOzZCQUN4QixPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQzs2QkFDakIsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7NkJBQ2hCLEtBQUssQ0FBQyxHQUFHLENBQUM7NkJBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUN2QyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUU7d0JBQ3ZDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssRUFBRTt3QkFDekIsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLENBQUM7d0JBQ2pDLENBQUMsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxDQUFDO3dCQUNqQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzt3QkFDdEIsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDekIsSUFBSSxPQUFPLEVBQUU7d0JBQ1gsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDckgsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDbEgsTUFBTSxRQUFRLEdBQUcsR0FBRyxhQUFhLElBQUksV0FBVyxhQUFhLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxlQUFlLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxNQUFNLENBQUM7d0JBQ3pKLG1CQUFtQixHQUFHLEtBQUssQ0FBQzt3QkFDNUIsTUFBTSxrQkFBa0IsR0FBRzs0QkFDekIsUUFBUTs0QkFDUixNQUFNLEVBQUUsRUFBRTt5QkFDWCxDQUFDO3dCQUNGLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxXQUFXLENBQUM7d0JBQ3hGLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUM7d0JBQ2xGLE9BQU8sa0JBQWtCLENBQUM7cUJBQzNCO3lCQUFNO3dCQUNMLE1BQU0sUUFBUSxHQUFHLEdBQUcsYUFBYSxJQUFJLFdBQVcsYUFBYSxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsZUFBZSxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsS0FBSyxDQUFDO3dCQUN4SixtQkFBbUIsR0FBRyxLQUFLLENBQUM7d0JBQzVCLE1BQU0sa0JBQWtCLEdBQUc7NEJBQ3pCLFFBQVE7NEJBQ1IsTUFBTSxFQUFFLEVBQUU7eUJBQ1gsQ0FBQzt3QkFDRixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUN4RixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLEdBQUcsS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNyRixPQUFPLGtCQUFrQixDQUFDO3FCQUMzQjtpQkFDRjthQUNGO1lBQ0QsSUFBSSxtQkFBbUIsRUFBRTtnQkFDdkIsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQUM7Z0JBQ3hDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxVQUFVLEVBQUU7b0JBQ2QsSUFBSSxTQUFTLENBQUM7b0JBQ2QsSUFBSTt3QkFDRixTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLOzZCQUN6QixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQzs2QkFDbEIsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUN2QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUN4QixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7NEJBQ3BCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQzs0QkFDWixTQUFTO2lDQUNOLE9BQU8sQ0FDTixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtnQ0FDbEIsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsYUFBYSxHQUFHLEtBQUssR0FBRyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsYUFBYSxHQUFHLEtBQUssR0FBRyxNQUFNLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQztnQ0FDekosUUFBUSxDQUFDLE9BQU8sYUFBYSxHQUFHLEtBQUssR0FBRyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7NEJBQ3hFLENBQUMsQ0FDRixDQUFDOzRCQUNKLE1BQU0sUUFBUSxHQUFHLEdBQUcsYUFBYSxJQUFJLFdBQVcsUUFBUSxFQUFFLElBQUksQ0FBQzs0QkFDL0QsbUJBQW1CLEdBQUcsS0FBSyxDQUFDOzRCQUM1QixNQUFNLGtCQUFrQixHQUFHO2dDQUN6QixRQUFRO2dDQUNSLE1BQU0sRUFBRSxRQUFROzZCQUNqQixDQUFDOzRCQUNGLE9BQU8sa0JBQWtCLENBQUM7eUJBQzNCOzZCQUFNOzRCQUNMLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQzs0QkFDcEIsbUJBQW1CLEdBQUcsS0FBSyxDQUFDOzRCQUM1QixNQUFNLDJCQUEyQixHQUFHO2dDQUNsQyxRQUFRO2dDQUNSLE1BQU0sRUFBRSxFQUFFOzZCQUNYLENBQUM7NEJBQ0YsT0FBTywyQkFBMkIsQ0FBQzt5QkFDcEM7cUJBQ0Y7b0JBQUMsT0FBTyxLQUFLLEVBQUU7d0JBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQzs0QkFDWixLQUFLOzRCQUNMLE9BQU8sRUFBRSx1QkFBdUI7eUJBQ2pDLENBQUMsQ0FBQzt3QkFDSCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7d0JBQ3BCLG1CQUFtQixHQUFHLEtBQUssQ0FBQzt3QkFDNUIsTUFBTSwyQkFBMkIsR0FBRzs0QkFDbEMsUUFBUTs0QkFDUixNQUFNLEVBQUUsRUFBRTt5QkFDWCxDQUFDO3dCQUNGLE9BQU8sMkJBQTJCLENBQUM7cUJBQ3BDO2lCQUNGO2FBQ0Y7WUFDRCxJQUFJLG1CQUFtQixFQUFFO2dCQUN2QixNQUFNLHNCQUFzQixHQUFHLGNBQWMsQ0FBQztnQkFDOUMsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLGNBQWMsRUFBRTtvQkFDbEIsTUFBTSxRQUFRLEdBQUcsR0FBRyxhQUFhLElBQUksV0FBVyxVQUFVLENBQUM7b0JBQzNELG1CQUFtQixHQUFHLEtBQUssQ0FBQztvQkFDNUIsTUFBTSxrQkFBa0IsR0FBRzt3QkFDekIsUUFBUTt3QkFDUixNQUFNLEVBQUUsRUFBRTtxQkFDWCxDQUFDO29CQUNGLE9BQU8sa0JBQWtCLENBQUM7aUJBQzNCO2FBQ0Y7WUFDRCxNQUFNLHFCQUFxQixHQUFHLEdBQUcsYUFBYSxJQUFJLFdBQVcsT0FBTyxhQUFhLEdBQUcsS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1lBQzFHLG1CQUFtQixHQUFHLEtBQUssQ0FBQztZQUM1QixNQUFNLCtCQUErQixHQUFHO2dCQUN0QyxRQUFRLEVBQUUscUJBQXFCO2dCQUMvQixNQUFNLEVBQUUsRUFBRTthQUNYLENBQUM7WUFDRiwrQkFBK0IsQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDcEYsT0FBTywrQkFBK0IsQ0FBQztTQUN4QzthQUFNO1lBQ0wsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLGFBQWEsSUFBSSxXQUFXLE9BQU8sYUFBYSxHQUFHLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztZQUMxRyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7WUFDNUIsTUFBTSwrQkFBK0IsR0FBRztnQkFDdEMsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsTUFBTSxFQUFFLEVBQUU7YUFDWCxDQUFDO1lBQ0YsK0JBQStCLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ3BGLE9BQU8sK0JBQStCLENBQUM7U0FDeEM7S0FFRjtBQUdILENBQUM7QUF2Y0QsZ0VBdWNDIn0=